diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..96fe4b1
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,70 @@
+<?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.
+ -->
+<classpath>
+	<classpathentry kind="src" path="src/axis/java"/>
+	<classpathentry kind="src" path="src/db/java"/>
+	<classpathentry kind="src" path="src/doc/java"/>
+	<classpathentry kind="src" path="src/install/java"/>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="src" path="src/main/webapp/WEB-INF/classes"/>
+	<classpathentry kind="src" path="src/screenshare/java"/>
+	<classpathentry kind="src" path="src/util/java"/>
+	<classpathentry kind="src" path="src/web/java"/>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.nondependency" value=""/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=Openmeetings+3.0.x&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=%24%7Bworkspace_loc%3AOpenmeetings+3.0.x%2Fivysettings.xml%7D&amp;loadSettingsOnDemand=false&amp;propertyFiles="/>
+	<classpathentry kind="lib" path="build/lib/java_16_tools.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/red5-io-1.0.5-RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/red5-server.jar" sourcepath="build/red5/server/src/main/java"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/red5-server-common-1.0.5-RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/slf4j-api-1.7.9.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-core-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-beans-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/mina-core-2.0.8.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/quartz-2.1.7.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/log4j-over-slf4j-1.7.9.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/commons-collections-3.2.1.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-web-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/commons-beanutils-1.9.2.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/commons-lang3-3.3.2.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/logback-core-1.1.2.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/logback-classic-1.1.2.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-expression-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-context-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-context-support-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/aopalliance-1.0.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/spring-aop-4.0.8.RELEASE.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/commons-pool-1.5.6.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/ehcache-core-2.6.9.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/plugins/tomcat-embed-core.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/bcprov-jdk15on-1.51.jar"/>
+	<classpathentry kind="lib" path="build/red5/server/dist/lib/cglib-nodep-2.2.2.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="owner.project.facets" value="java"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="build/classes/eclipse"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000..0b02fe0
--- /dev/null
+++ b/.project
@@ -0,0 +1,175 @@
+<?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.
+  
+-->
+<projectDescription>
+	<name>Openmeetings 3.0.x</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.zeroturnaround.eclipse.remoting.remotingBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.zeroturnaround.eclipse.rebelXmlBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+		<nature>org.apache.ivyde.eclipse.ivynature</nature>
+		<nature>org.zeroturnaround.eclipse.remoting.remotingNature</nature>
+		<nature>org.zeroturnaround.eclipse.jrebelNature</nature>
+	</natures>
+	<filteredResources>
+		<filter>
+			<id>1387965572383</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-name-matches-false-false-.svn</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572384</id>
+			<name></name>
+			<type>10</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-dist</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572388</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/classes/openmeetings</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572390</id>
+			<name></name>
+			<type>26</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/openlaszlo*</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572391</id>
+			<name></name>
+			<type>6</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-name-matches-false-false-.ant-targets-build.xml</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572392</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/server/target</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572392</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/client/target</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572393</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/api</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572393</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/server/dist/webapps</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572394</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/server/src/main/server</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1387965572395</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-build/red5/server/webapps</arguments>
+			</matcher>
+		</filter>
+	</filteredResources>
+</projectDescription>
diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope
new file mode 100644
index 0000000..f40dd98
--- /dev/null
+++ b/.settings/.jsdtscope
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..93a19d3
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,14 @@
+#   Licensed 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.
+eclipse.preferences.version=1
+encoding//src/main/webapp/WEB-INF/classes/rebel-remote.xml=UTF-8
+encoding//src/main/webapp/WEB-INF/classes/rebel.xml=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..980b98c
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..b78a010
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,54 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=false
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=false
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..bcc91bc
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.component
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId"/>
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..42bce44
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="jst.web"/>
+  <fixed facet="jst.java"/>
+  <installed facet="jst.web" version="2.5"/>
+  <installed facet="jst.java" version="1.7"/>
+</faceted-project>
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..26adfa2
--- /dev/null
+++ b/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,12 @@
+DELEGATES_PREFERENCE=delegateValidatorList
+USER_BUILD_PREFERENCE=enabledBuildValidatorList
+USER_MANUAL_PREFERENCE=enabledManualValidatorList
+USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.303.v201202090300
+eclipse.preferences.version=1
+override=true
+suspend=false
+vals/org.eclipse.wst.dtd.core.dtdDTDValidator/groups=0107include04111contentType134org.eclipse.wst.dtd.core.dtdsourceT07fileext03dtdF07fileext03entF07fileext03modF0107exclude0207fileext04.lzxF04file05buildF02
+vals/org.eclipse.wst.html.ui.HTMLValidator/groups=0107include06111contentType136org.eclipse.wst.html.core.htmlsourceT07fileext04htmlF07fileext05xhtmlF07fileext03htmF07fileext04htplF07fileext03wmlF0107exclude0104file05buildF02
+vals/org.eclipse.wst.xml.core.xml/groups=0107include05111contentType128org.eclipse.core.runtime.xmlT111contentType134org.eclipse.wst.xml.core.xmlsourceT111contentType134org.eclipse.wst.xml.core.xslsourceT111contentType134org.eclipse.jst.jsp.core.tldsourceT07fileext03xmlF0107exclude111113projectNature134org.eclipse.jst.j2ee.ejb.EJBNature113projectNature130org.eclipse.jst.j2ee.EARNature04file08.projectT0104file110.classpathT0104file110.settings/T0207fileext04.lzxF04file05buildF0204file114WebContent/srcF0204file116WebContent/swf10F0207fileext04.wmlF04file04testF02
+vals/org.eclipse.wst.xsd.core.xsd/groups=0107include0107fileext03xsdF0107exclude0107fileext04.lzxF
+vf.version=3
diff --git a/.settings/org.springframework.ide.eclipse.beans.core.prefs b/.settings/org.springframework.ide.eclipse.beans.core.prefs
new file mode 100644
index 0000000..3af8ce5
--- /dev/null
+++ b/.settings/org.springframework.ide.eclipse.beans.core.prefs
@@ -0,0 +1,3 @@
+#Sun Aug 28 18:17:40 CEST 2011
+eclipse.preferences.version=1
+org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
diff --git a/.settings/org.springframework.ide.eclipse.core.prefs b/.settings/org.springframework.ide.eclipse.core.prefs
new file mode 100644
index 0000000..68f57e2
--- /dev/null
+++ b/.settings/org.springframework.ide.eclipse.core.prefs
@@ -0,0 +1,63 @@
+#   Licensed 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.
+eclipse.preferences.version=1
+org.springframework.ide.eclipse.core.builders.enable.aopreferencemodelbuilder=true
+org.springframework.ide.eclipse.core.builders.enable.beanmetadatabuilder=true
+org.springframework.ide.eclipse.core.enable.project.preferences=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.core.springvalidator=false
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.data.core.datavalidator=true
+org.springframework.ide.eclipse.core.validator.enable.org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.autowire.autowire-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanAlias-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanClass-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanConstructorArgument-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinition-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanDefinitionHolder-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanFactory-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanInitDestroyMethod-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.beanReference-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.methodOverride-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.parsingProblems-org.springframework.ide.eclipse.beans.core.beansvalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.requiredProperty-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.beans.core.toolAnnotation-org.springframework.ide.eclipse.beans.core.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.AvoidDriverManagerDataSource-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.ImportElementsAtTopRulee-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.ParentBeanSpecifiesAbstractClassRule-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.RefElementRule-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.TooManyBeansInFileRule-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.UnnecessaryValueElementRule-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.com.springsource.sts.bestpractices.UseBeanInheritance-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.bestpractices.legacyxmlusage.jndiobjectfactory-org.springframework.ide.eclipse.bestpractices.beansvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.core.springClasspath-org.springframework.ide.eclipse.core.springvalidator=false
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.data.core.invalidDerivedQuery-org.springframework.ide.eclipse.data.core.datavalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.data.core.invalidParameterType-org.springframework.ide.eclipse.data.core.datavalidator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.action-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.actionstate-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attribute-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.attributemapper-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.beanaction-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationaction-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.evaluationresult-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.exceptionhandler-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.import-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.inputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.mapping-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.outputattribute-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.set-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.state-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.subflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.transition-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.variable-org.springframework.ide.eclipse.webflow.core.validator=true
+org.springframework.ide.eclipse.core.validator.rule.enable.org.springframework.ide.eclipse.webflow.core.validation.webflowstate-org.springframework.ide.eclipse.webflow.core.validator=true
diff --git a/.springBeans b/.springBeans
new file mode 100644
index 0000000..c54141b
--- /dev/null
+++ b/.springBeans
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[3.3.0.201307091516-RELEASE]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..9126cbd
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,1014 @@
+Apache OpenMeetings Change Log
+
+See http://issues.apache.org/jira/browse/OPENMEETINGS-* (where * is the number of the issue below)
+
+Release Notes - Openmeetings - Version 3.0.4
+================================================================================================================
+
+** Bug
+    * [OPENMEETINGS-878] - Sign Web-Start application with trusted root cert
+    * [OPENMEETINGS-1041] - It is impossible drag and drop recordings to public folder when recordings list is scrolled
+    * [OPENMEETINGS-1055] - Error is thrown and connection is closed when external user try to generate URL and send email invitation
+    * [OPENMEETINGS-1062] - Contact data of other users are shown not all.
+    * [OPENMEETINGS-1063] - When "Show contact data to contacts only" was selected, contact data are not showing for users from contacts.
+    * [OPENMEETINGS-1074] - Sharing of the screen gives remote access to the other user
+    * [OPENMEETINGS-1075] - system does not save the mark "do not ask me" when choosing a camera and video expansion
+    * [OPENMEETINGS-1079] - Synchronous backup does not work through the web interface with a large volume of data
+    * [OPENMEETINGS-1080] - Connection with the server is canceled after recordings
+    * [OPENMEETINGS-1083] - Impossible to add user to group, moderator to room
+    * [OPENMEETINGS-1084] - cannot remove auto created user by invite for conference room 
+    * [OPENMEETINGS-1087] - X-UA-Compatible should be set as first META tag
+    * [OPENMEETINGS-1088] - error installing with mssql
+    * [OPENMEETINGS-1089] - Spanish installation screens contains bad UTF-8 chars
+    * [OPENMEETINGS-1091] - the attendees can chaange the start and end dates of calendar appointment rooms !!!
+    * [OPENMEETINGS-1092] - users can use the calendar room to make conference after the end-date of the conference room!!!
+    * [OPENMEETINGS-1094] - Ldap authorisation is not working correctly if var ldap_search_scope=SUBTREE
+    * [OPENMEETINGS-1098] - Login via OAuth2 is broken due to redirectUri is wrong
+    * [OPENMEETINGS-1102] - Room web service is broken
+    * [OPENMEETINGS-1103] - Pressing 'play' on the video player while a video is already playing starts a new player
+    * [OPENMEETINGS-1105] - Dereferencing Aliases using LDAP and eDirectory.
+    * [OPENMEETINGS-1109] - Appointment with existing room is displayed as appointment with 'appointment special room'
+    * [OPENMEETINGS-1110] - Audio/video is being broadcasted to the room after room exit
+    * [OPENMEETINGS-1114] - LDAP config is not Unicode aware
+    * [OPENMEETINGS-1117] - RTL is not fully supported by OM
+    * [OPENMEETINGS-1121] - Blank field (invited user)
+    * [OPENMEETINGS-1123] - RedirectLoop while trying to install
+    * [OPENMEETINGS-1124] - Calendar interface bug
+    * [OPENMEETINGS-1126] - Timezone bug
+    * [OPENMEETINGS-1127] - Unexpected behaivor when user enter to the room if room type is udefined
+    * [OPENMEETINGS-1128] - users can not be deleted ("ghost users")
+    * [OPENMEETINGS-1131] - New events are not shown in the calendar
+    * [OPENMEETINGS-1134] - Removed folder shows in the "Move to folder..." dropdown box
+    * [OPENMEETINGS-1137] - Reducing load times of rooms via invitations api
+    * [OPENMEETINGS-1139] - When users are in different timezones, the meeting setup was not shown correctly on invitee's caleander
+    * [OPENMEETINGS-1143] - Recordings list order
+    * [OPENMEETINGS-1146] - RTMPS uses rtmpport
+    * [OPENMEETINGS-1149] - "AVI", "FLV" and "Re-convert" buttons are not visible on recordings panel when recordings list box is scrolled
+    * [OPENMEETINGS-1150] - NullPointerException is thrown when user try enter to the room via calendar
+    * [OPENMEETINGS-1151] - Recording Java Application is blocked by Security Settings
+    * [OPENMEETINGS-1153] - "Record started" remains in upper right corner after record was stoped (interviewroom)
+    * [OPENMEETINGS-1154] - Too big waiting time after pressing the "Stop recording" button
+    * [OPENMEETINGS-1156] - The "Allow recording" flag is not checked when screen sharing is started
+    * [OPENMEETINGS-1157] - Calendar web service is broken
+    * [OPENMEETINGS-1159] - Chat is not correctly aligned then language is RTL
+    * [OPENMEETINGS-1160] - Edit user settings is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1162] - Admin->users is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1163] - Admin->OAuth is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1164] - Admin->Servers is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1165] - Admin->Configurations is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1166] - Admin->Groups is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1167] - Admin->Labels is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1169] - Send Message dialog is not properly aligned when RTL language is selected
+    * [OPENMEETINGS-1170] - Profile page is not updated when user changes settings
+    * [OPENMEETINGS-1173] - The "Internal error" is thrown when uncheck the "Create/Modify appointment special room" flag
+    * [OPENMEETINGS-1174] - Unenrolled user not redirected to Rooms list
+    * [OPENMEETINGS-1175] - It is impossible to send private message from the room
+    * [OPENMEETINGS-1177] - Calendar is not properly aligned when RTL language is selected
+
+** Improvement
+    * [OPENMEETINGS-547] - Deferred recordings converting possibility.
+    * [OPENMEETINGS-623] - OpenMeetings怎么修改发送邮件的格式
+    * [OPENMEETINGS-1082] - Library versions should be updated
+    * [OPENMEETINGS-1099] - Build should be ready for web-start code-signing
+    * [OPENMEETINGS-1130] - Emails should be created using templates, not string concatenation
+    * [OPENMEETINGS-1135] - logback config should be updated to use log rotation and keep old logs
+    * [OPENMEETINGS-1136] - Improving portuguese-brazil installation translation
+
+** New Feature
+    * [OPENMEETINGS-1104] - Enable change first day in the Calendar
+
+** Wish
+    * [OPENMEETINGS-1065] - add ability to minimize screen-sharing video
+
+
+Release Notes - Openmeetings - Version 3.0.3
+================================================================================================================
+
+** Bug
+    * [OPENMEETINGS-270] - MemoryLeak / Dead-Lock in FlvRecorderConverter
+    * [OPENMEETINGS-292] - Inviting people during conference
+    * [OPENMEETINGS-409] - Interview Room (2)
+    * [OPENMEETINGS-452] - LDAP issue. Cannot relogin with user that already was logined before and then logged out
+    * [OPENMEETINGS-532] - Generated hash issue
+    * [OPENMEETINGS-616] - Openmeetings for Drupal got a 500 error
+    * [OPENMEETINGS-680] - The "," symbol is used for the multiple e-mail instead of standard ";" symbol
+    * [OPENMEETINGS-683] - Somtimes vido frame is not visible for other users in the room
+    * [OPENMEETINGS-686] - Recording faild when pause is used
+    * [OPENMEETINGS-697] - Authentification Ldap
+    * [OPENMEETINGS-809] - Global chat issues in rooms
+    * [OPENMEETINGS-888] - Room name is not translated correctly in the "My room" widget
+    * [OPENMEETINGS-915] - Regression in 3.0: Incorrect moderator list update in the room screen.
+    * [OPENMEETINGS-918] - Contacts should not be added to usergroup
+    * [OPENMEETINGS-931] - AD LDAP Authentication on empty install organization choice after first logon: empty list
+    * [OPENMEETINGS-953] - can not upload files while using Tomcat with SSL enabled
+    * [OPENMEETINGS-986] - Oauth2.0 Logon Not Working
+    * [OPENMEETINGS-998] - Audio and Video of recordings are not in sync after a few minutes
+    * [OPENMEETINGS-1007] - Users with externalUserId and externaluserType <> null can't login
+    * [OPENMEETINGS-1012] - Reverted timezone is set by default in invitation window
+    * [OPENMEETINGS-1013] - Profile pictures are not displayed to invited user
+    * [OPENMEETINGS-1015] - Browser time zone is not selected correctly in the invitation window until all java timezones are loaded
+    * [OPENMEETINGS-1019] - RemoteControl: problem with sql
+    * [OPENMEETINGS-1020] - create new user after adding user does not add to DB
+    * [OPENMEETINGS-1022] - cliAdmin is broken (NPE + exclude-files)
+    * [OPENMEETINGS-1023] - ChatMessages are not imported
+    * [OPENMEETINGS-1024] - Add user admin dropdown is broken when postgres is used
+    * [OPENMEETINGS-1026] - Moderator rights are not availble for admin user if enter to the room after simple user
+    * [OPENMEETINGS-1027] - Search button does not work for users
+    * [OPENMEETINGS-1029] - modifyRoomParameter SOAP/REST method is broken
+    * [OPENMEETINGS-1031] - The "New folder" dialogs moves to the bottom of the screen and becomes invisible
+    * [OPENMEETINGS-1032] - search variable in Language Editor produce java.lang.StackOverflowError
+    * [OPENMEETINGS-1034] - openmeetings start always fails with postgresql db on debian
+    * [OPENMEETINGS-1035] - "ant -Ddb=postgres" always fails
+    * [OPENMEETINGS-1037] - LDAP passwords are being printed to the log
+    * [OPENMEETINGS-1038] - PrivateRoom Widget is displayed when dashboard.show.myrooms key is disabled
+    * [OPENMEETINGS-1039] - Interview recording is broken if stop-on-close
+    * [OPENMEETINGS-1042] - .ppt file not open when i upload 
+    * [OPENMEETINGS-1048] - Appointement owner has no moderation rights
+    * [OPENMEETINGS-1050] - User list is missing room users
+    * [OPENMEETINGS-1052] - Room list not displayed after room exit
+    * [OPENMEETINGS-1059] - Language not loaded from user profile.
+    * [OPENMEETINGS-1060] - Strange view of warnings at User editing screen.
+    * [OPENMEETINGS-1061] - Font size list is not visible and availble in the global chat
+    * [OPENMEETINGS-1067] - "Move to folder.." item is not translated correctly on the "Contacts and messages" tab
+    * [OPENMEETINGS-1068] - Error is thrown and connection is closed when move event into Calendar view
+    * [OPENMEETINGS-1069] - Add/remove a user to the default moderator list not working properly
+    * [OPENMEETINGS-1070] - Strange view after auto logout from demo room
+    * [OPENMEETINGS-1076] - Export of localization to file not working.
+    * [OPENMEETINGS-1077] - Max participants in the room work incorrectly
+
+** Improvement
+    * [OPENMEETINGS-96] - Possibility to deny remote control for all when sharing screen
+    * [OPENMEETINGS-360] - Email invited meeting participants to display name not email address
+    * [OPENMEETINGS-942] - Searching for contacts
+    * [OPENMEETINGS-971] - Restrict attendees suggestions
+    * [OPENMEETINGS-984] - Recording auto-repairing should be added
+    * [OPENMEETINGS-1017] - ACLs should be added to the User
+    * [OPENMEETINGS-1021] - Red5 should be updated to the latest stable version
+    * [OPENMEETINGS-1028] - Red5 should be updated to the latest stable version
+    * [OPENMEETINGS-1033] - Improve ldap auth type adding SearchScope variable in config file
+    * [OPENMEETINGS-1036] - Improve User Form for include LDAP domain
+    * [OPENMEETINGS-1040] - Select2 should be used to display/set user groups
+    * [OPENMEETINGS-1049] - no default value for the "Quality of the screen sharing"/default FPS
+
+** New Feature
+    * [OPENMEETINGS-442] - om LDAP users controlled with a group
+    * [OPENMEETINGS-1011] - long time to load openmeetings activity in moodle
+
+** Task
+    * [OPENMEETINGS-964] - LDAP login should be refactored
+
+** Test
+    * [OPENMEETINGS-1025] - Problem with convert recording by ffmpeg
+
+** Wish
+    * [OPENMEETINGS-861] - SOAP user for creating & using om rooms via moodle can log into GUI of OM
+    * [OPENMEETINGS-1066] - re-order fields on screen-sharing applet
+
+
+Release Notes - Openmeetings - Version 3.0.2
+================================================================================================================
+
+** Bug
+    * [OPENMEETINGS-604] - Pop up message remain same after quitting the room created by Book conference room option in the email
+    * [OPENMEETINGS-916] - Selected recording is not highlighted and should not be moved to other folder
+    * [OPENMEETINGS-976] - Cannot restore an erased key in administration\configuration\key
+    * [OPENMEETINGS-978] - It is impossible to start OM in offline mode
+    * [OPENMEETINGS-983] - Verification URL is not generated correctly for self register users
+    * [OPENMEETINGS-985] - Send Invitation functionality is broken
+    * [OPENMEETINGS-990] - error while playing recording
+    * [OPENMEETINGS-993] - Deleted rooms are now excluded from backup
+    * [OPENMEETINGS-994] - AllowRecording option lock normal user interaction in conference Room.
+    * [OPENMEETINGS-996] - send invitation - generate URL
+    * [OPENMEETINGS-997] - error installing with mssql 
+    * [OPENMEETINGS-1002] - OM theming should be consistent
+    * [OPENMEETINGS-1004] - Internal error is thrown when you search a user on the Search Users Tab
+
+** Improvement
+    * [OPENMEETINGS-982] - ApplicationContext recreation should be avoided
+
+
+Release Notes - Openmeetings - Version 3.0.1
+================================================================================================================
+
+** Sub-task
+    * [OPENMEETINGS-937] - Screen sharing application should create recordings with size multiple by 16
+
+** Bug
+    * [OPENMEETINGS-913] - Booking is not working via private message
+    * [OPENMEETINGS-917] - Contacts should not be added as default moderator
+    * [OPENMEETINGS-920] - where are the controls to playback a recorded video?
+    * [OPENMEETINGS-934] - screenrecording without sound
+    * [OPENMEETINGS-935] - Names are mixed in contact request email
+    * [OPENMEETINGS-936] - First frame of the recording has size differs from all other frames
+    * [OPENMEETINGS-943] - OM3.0: login with LDAP user not working
+    * [OPENMEETINGS-949] - Add Whiteboard: untranslated string - hardcoded
+    * [OPENMEETINGS-951] - Command line installer fails if path contains spaces
+    * [OPENMEETINGS-952] - Build should be compatible with latest ant
+    * [OPENMEETINGS-956] - Recording frame is not scrolled
+    * [OPENMEETINGS-957] - Screensharing is broken
+    * [OPENMEETINGS-958] - Calendar event start and end date are not displayed correctly in the month vew for IST time zone
+    * [OPENMEETINGS-959] - "Choose Device" Dialog doesn't show (all) devices from flash-settings
+    * [OPENMEETINGS-960] - Long time without changing progressbar when enter OM
+    * [OPENMEETINGS-961] - Calendar event can be canceled by guest
+    * [OPENMEETINGS-965] - Dashboard is malfunctioning when the user language is set to french
+    * [OPENMEETINGS-966] - Invitation links are not working
+    * [OPENMEETINGS-967] - dashboard.show.myrooms and dashboard.show.rssfeed options are not working
+    * [OPENMEETINGS-972] - Default user database
+    * [OPENMEETINGS-975] - Reminder is not sent for calendar event
+    * [OPENMEETINGS-977] - Import of Appointments and UserContacts was broken
+
+** Improvement
+    * [OPENMEETINGS-938] - Recording length field should be filled by converters
+    * [OPENMEETINGS-939] - Not ready recordings should have special icon
+
+
+Release Notes - Openmeetings - Version 3.0.0
+================================================================================================================
+
+** Sub-task
+    * [OPENMEETINGS-746] - Replace OmTimeZone in User Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-747] - Replace OmTimeZone in Invitations Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-748] - Replace OmTimeZone in MeetingMembers Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-749] - Fix Installer with new timezone handling, default to server timezone in UI
+    * [OPENMEETINGS-750] - Fix Backup importer to be able to import old backups (2.x) to new database schema (3.x) (User, Invitations, MeetingMembers have no OmTimeZone anymore)
+    * [OPENMEETINGS-751] - Remove OmTimeZone Entity and import mechanism for timezones.xml and some cleanup
+    * [OPENMEETINGS-752] - Create Branch and Jenkins Job for Timezone refactoring
+    * [OPENMEETINGS-754] - Fix user admin UI to have timezone as string
+    * [OPENMEETINGS-755] - Fix invitation popup in Flash to not use the OmTimeZones for creating the Invitation
+    * [OPENMEETINGS-758] - Remove OpenLaszlo Admin UI and all related API calls (only if they are not needed somewhere else)
+    * [OPENMEETINGS-759] - Remove Flash UI user settings and related API calls 
+    * [OPENMEETINGS-762] - Callers of TimezoneUtil.getTimezoneByInternalJName should be checked to work as expected
+
+** Bug
+    * [OPENMEETINGS-69] - Conference Room - Chat RTL dosn't function 
+    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
+    * [OPENMEETINGS-274] - It is impossible to display "test setup recording" once hidden
+    * [OPENMEETINGS-321] - Recording under OSX throws exception in RecordingConverter
+    * [OPENMEETINGS-337] - interview room - audio does not work when "audio only" is selected
+    * [OPENMEETINGS-348] - zoom synchonization
+    * [OPENMEETINGS-377] - Double clicking in the calendar area create two “Event details” dialog windows not just one window
+    * [OPENMEETINGS-405] - microphoneRateNormal & microphoneRateBest - not change rate
+    * [OPENMEETINGS-410] - whiteboard first color
+    * [OPENMEETINGS-416] - "Hide actions menu" does not work via SOAP in "restricted" room
+    * [OPENMEETINGS-421] - Reminder to conference issue
+    * [OPENMEETINGS-426] - Html Errors/Problems
+    * [OPENMEETINGS-428] - Refactor User administration to Wicket
+    * [OPENMEETINGS-432] - video only room is coming with white board also
+    * [OPENMEETINGS-435] - Help Help Help openmeetings service is not work at the next day
+    * [OPENMEETINGS-437] - Link "...Edit your profile" form de user home page send the control to a user profile view, not to a edit profile view
+    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
+    * [OPENMEETINGS-444] - Create HTML/Wicket admin backup section
+    * [OPENMEETINGS-445] - Backup Export does not work at all
+    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
+    * [OPENMEETINGS-473] - Recorded video Display blank at demo.openmeetings.com
+    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
+    * [OPENMEETINGS-486] - Sometimes OM stops responding to clicks
+    * [OPENMEETINGS-494] - Recording gives frame rate of 2 fps
+    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
+    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
+    * [OPENMEETINGS-513] - Participant of poll can vote more than once in the "My conference room"
+    * [OPENMEETINGS-514] - Some extra links are displayed on the "Choose Usergroup" dialog
+    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
+    * [OPENMEETINGS-544] - some bug with SIP
+    * [OPENMEETINGS-560] - It’s possible to add several records with the same key value in configuration.
+    * [OPENMEETINGS-564] - Types of rooms are not localized
+    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
+    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
+    * [OPENMEETINGS-575] - Name of the restricted and interview rooms is not displayed when user enter to this room
+    * [OPENMEETINGS-579] - In any room not close the video and audio settings windows. Video is not broadcasting.
+    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
+    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed
+    * [OPENMEETINGS-584] - Main window is scrolled when select value from dropdown box
+    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
+    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
+    * [OPENMEETINGS-590] - Useless "SIP Settings" section in the user screen.
+    * [OPENMEETINGS-591] - Whiteboard presentacion from PPT page controll event randomly broken
+    * [OPENMEETINGS-596] - ffmpeg is not work in current version
+    * [OPENMEETINGS-600] - RSS Feed
+    * [OPENMEETINGS-601] - User Profile picture
+    * [OPENMEETINGS-603] - Conference Room Types List doesn't display textual content - Book Conference Room Option Selected while Sending an Email 
+    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
+    * [OPENMEETINGS-617] - Impossible to refresh video using button "(Re) Start audio/video or change device settings"
+    * [OPENMEETINGS-618] - Incorrect translation
+    * [OPENMEETINGS-619] -  Problems with a microphone 
+    * [OPENMEETINGS-620] - Self-Register, Forgot password and login by LDAP should be implemented
+    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
+    * [OPENMEETINGS-627] - Private rooms disappear after use
+    * [OPENMEETINGS-628] - Exception is thrown when search user on the Profile->Search users tab
+    * [OPENMEETINGS-629] - Event is not deleted from Calendar
+    * [OPENMEETINGS-630] - Event is not resized in calendar
+    * [OPENMEETINGS-632] - Some links are mistaked in html version of OM
+    * [OPENMEETINGS-633] - Event is not created if title is empty.
+    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
+    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
+    * [OPENMEETINGS-640] - Room is not resized in IE
+    * [OPENMEETINGS-642] - The "Import" and "Export" buttons are missed on the Administrator->Language editor tab
+    * [OPENMEETINGS-643] - User details is not updated in the HTML version
+    * [OPENMEETINGS-645] - Can't create installation wizard
+    * [OPENMEETINGS-647] - Drag&Drop Issue Openmeetings 1.8.8 r4555
+    * [OPENMEETINGS-650] - Can't create conference room
+    * [OPENMEETINGS-651] - User can not login
+    * [OPENMEETINGS-654] - Interview room is broken
+    * [OPENMEETINGS-655] - Calendar is not localized
+    * [OPENMEETINGS-657] - can not convert file
+    * [OPENMEETINGS-658] - Event creates in the Calendar with wrong start and end time
+    * [OPENMEETINGS-660] - Types of reminder are not localized
+    * [OPENMEETINGS-661] - Invitation is not implemented in the HTML Calendar
+    * [OPENMEETINGS-663] - OM Installer is not localized
+    * [OPENMEETINGS-664] - OM is not installed in IE 10 browser.
+    * [OPENMEETINGS-665] - File upload in the room is broken
+    * [OPENMEETINGS-666] - Main menu displays incorrectly in the IE browser.
+    * [OPENMEETINGS-667] - Recordings are not viewable on iPad
+    * [OPENMEETINGS-669] - Recording is broken
+    * [OPENMEETINGS-672] - in recordings page ,people cant logout
+    * [OPENMEETINGS-673] - Rooms form is not shown correctly in the HTML version
+    * [OPENMEETINGS-674] - Image is not uploaded on the "Profile" tab in the HTML version of OM
+    * [OPENMEETINGS-676] - User can not login
+    * [OPENMEETINGS-679] - Share/record screen
+    * [OPENMEETINGS-682] - Admin password length is not checked while installing
+    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame
+    * [OPENMEETINGS-688] - Library versions should be bumped
+    * [OPENMEETINGS-689] - Russian installation encoding is broken in Ubuntu.
+    * [OPENMEETINGS-691] - screen sharing / recording couldn't starting
+    * [OPENMEETINGS-693] - Tomcat 7 patch should be removed from OM build
+    * [OPENMEETINGS-695] - Rooms page is not completly in the HTML version
+    * [OPENMEETINGS-696] - Choose device dialog is not availble in the restricted room
+    * [OPENMEETINGS-702] - when uploading file in a room, after click start upload,  return a window with HTTP-ERROR: 500  
+    * [OPENMEETINGS-703] - Invitation is not implemented to the HTML Calendar
+    * [OPENMEETINGS-704] - Calendar UI - Unify button list (Cancel always on right side)
+    * [OPENMEETINGS-705] - Not possible to enter any conference room
+    * [OPENMEETINGS-707] - Calendar UI Creation Popup - clean up UI elements
+    * [OPENMEETINGS-708] - Calender UI Popup shows empty input values when Calendar UI is loaded second time
+    * [OPENMEETINGS-709] - Calendar UI Popup - no need for delete button if you create a new event
+    * [OPENMEETINGS-711] - Calendar UI add external attendee's
+    * [OPENMEETINGS-714] - Calendar does not send any invitations to the attendees
+    * [OPENMEETINGS-715] - Calendar does not send any update email if you change a calendar event to the attendees
+    * [OPENMEETINGS-716] - Calendar does not send any delete email if you delete a calendar event to the attendees
+    * [OPENMEETINGS-718] - Newly created users are unable to login
+    * [OPENMEETINGS-719] - Calendar UI delete button has no confirmation
+    * [OPENMEETINGS-720] - Calendar throws server error if any calendar event is saved (only tested with new events so far)
+    * [OPENMEETINGS-726] - Internal users do not show calendar events of events that you have been added to
+    * [OPENMEETINGS-729] - Empty / null values in email_username/password throws Exception when processing emails
+    * [OPENMEETINGS-730] - Cannot save empty value for configuration key in HTML5 UI (for instance username / pas for email configuration)
+    * [OPENMEETINGS-736] - Calendar UI - Month view does not resize to browser window by default
+    * [OPENMEETINGS-738] - Wrong successful registration message behavior
+    * [OPENMEETINGS-741] - Failed to change password
+    * [OPENMEETINGS-742] - Calendar UI - week and day view pretty useless when you can't select any day
+    * [OPENMEETINGS-743] - HTML Version Forgotten  your password email link does not work 
+    * [OPENMEETINGS-744] - Private message does not send in the HTML version
+    * [OPENMEETINGS-756] - Remove OpenLaszlo/Flash Calendar UI and Server side components API Calls/DTOs
+    * [OPENMEETINGS-757] - Several issues with external and internal meeting members
+    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
+    * [OPENMEETINGS-764] - Plugins should work with OM 3.0.0
+    * [OPENMEETINGS-765] - Wicket should be used for email generation
+    * [OPENMEETINGS-768] - User is not enter to the room when rtmp port is not set correctly
+    * [OPENMEETINGS-769] - Calendar UI - Event details with link to room
+    * [OPENMEETINGS-770] - when i click button  share/recording screen , i get do download [ public 7.jnlp], not working properly
+    * [OPENMEETINGS-771] - Dashboard is not shown correctly when user exit from the room.
+    * [OPENMEETINGS-773] - Deleted users are shown in the Usergroups
+    * [OPENMEETINGS-776] - Contacts should be visible for owner and admin only
+    * [OPENMEETINGS-777] - SOAP/REST API should be fixed to create appointments as HTML5 web client
+    * [OPENMEETINGS-780] - Upload pictures and other documents on the white board, has been in the transition state.
+    * [OPENMEETINGS-784] - SOAP API service "modifyRoomParameter" converts "paramValue" into String
+    * [OPENMEETINGS-785] - Messsage " You have successfully signed up. An email with a verification code will be sent to your mailbox." comes up even if it is not supposed to
+    * [OPENMEETINGS-786] - Loading symbol in Wicket and Flash should look the same
+    * [OPENMEETINGS-787] - top navigation gone
+    * [OPENMEETINGS-788] - As soon as you hit the "start conference" button the video freezes and just nothing happens
+    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
+    * [OPENMEETINGS-796] - Install Wizard displays wrong value for red5SipEnable
+    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
+    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
+    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
+    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
+    * [OPENMEETINGS-808] - Installation using Derby default database configuration seems to have performance issues
+    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
+    * [OPENMEETINGS-815] - Exception in sign up
+    * [OPENMEETINGS-818] - Room login via secureHash is broken
+    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
+    * [OPENMEETINGS-821] - Can't upload file
+    * [OPENMEETINGS-822] - Closed room was created by addRoom and addRoomWithModeration REST/SOAP methods
+    * [OPENMEETINGS-830] - Recording is broken without screen sharing
+    * [OPENMEETINGS-832] - SOAP doesn't work
+    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
+    * [OPENMEETINGS-836] - OM layout error  - item from vicket is hide the room chat elements
+    * [OPENMEETINGS-841] - Only the first user in a room is displayed and can be heard by others
+    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
+    * [OPENMEETINGS-844] - Invitations are broken after last refactoring
+    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working
+    * [OPENMEETINGS-849] - some remains after the purge of deleted recordings and a system cleanup via admin.sh
+    * [OPENMEETINGS-851] - There is no way to use uploaded files in an interview room
+    * [OPENMEETINGS-852] - Whiteboard Objects not clickable
+    * [OPENMEETINGS-855] - NPE using ./admin.sh -v -f --cleanup
+    * [OPENMEETINGS-856] - Invitation link is broken
+    * [OPENMEETINGS-859] - Audio and Video in recordings is no more in sync
+    * [OPENMEETINGS-860] - Invite window is opened with long delay
+    * [OPENMEETINGS-864] - Exception is thrown when update event in the calendar
+    * [OPENMEETINGS-865] - Upload buttons has artifacts
+    * [OPENMEETINGS-866] - NPE if frontend register is not allowed
+    * [OPENMEETINGS-868] - User creation via SOAP availability should be controlled by separate option
+    * [OPENMEETINGS-869] - Email subject is not displayed correctly for UTF-8 charset
+    * [OPENMEETINGS-870] - Plugins should work in version 3.0
+    * [OPENMEETINGS-871] - Internal error is thrown when search user on the Search users tab
+    * [OPENMEETINGS-872] - The "to" field is not filed in the "Write new message dialog"
+    * [OPENMEETINGS-873] - Ajax error is thrown when click on the "Show user profile" icon
+    * [OPENMEETINGS-875] - Widgets title are not translated when user change language
+    * [OPENMEETINGS-876] - The "Click here to enter room" link is attached to cancel email notification.
+    * [OPENMEETINGS-877] - New line "<br/>" tag does not applied for invitation message
+    * [OPENMEETINGS-880] - 3.0 regression: "Forgotten your password?" does not work on the login screen.
+    * [OPENMEETINGS-882] - OpenMeetings calendar allows create events with the end date/time earlier than the start date/time
+    * [OPENMEETINGS-883] - Strange behaviour during the external guest entering
+    * [OPENMEETINGS-884] - Regression in 3.0: Drop-down lists in the user registration screen work incorrectly in Google Chrome
+    * [OPENMEETINGS-885] - Record is not played under Chrome browser
+    * [OPENMEETINGS-886] - Impossible to save editable fields in My Profile.
+    * [OPENMEETINGS-890] - The "Login" field is not displayed on the connection panel.
+    * [OPENMEETINGS-891] - Wrong birthday date is displayed on the profile->edit settings panel
+    * [OPENMEETINGS-892] - "Add user" button is disabled when add new group
+    * [OPENMEETINGS-893] - Removed user is not added to usergroup again
+    * [OPENMEETINGS-898] - Time zone is not defined correctly on sign in page
+    * [OPENMEETINGS-899] - Calendar event start and end time are not displayed correctly
+    * [OPENMEETINGS-900] - Deleted contact is selected when user invite external guest to calendar invitation
+    * [OPENMEETINGS-901] - Password is not requested when password protected invitation send to external guest.
+    * [OPENMEETINGS-902] - Records are not created correctly
+    * [OPENMEETINGS-904] - Default landing zone
+    * [OPENMEETINGS-906] - Cannot create new group with users
+    * [OPENMEETINGS-907] - "password is required" message is displayed when "Password protected" checkbox is not  checked
+    * [OPENMEETINGS-908] - Calendar event start and end date are not displayed correctly in the month vew
+    * [OPENMEETINGS-909] - Event owners is not receive email notification
+    * [OPENMEETINGS-910] - Contacts are availble to search on the Search user page
+    * [OPENMEETINGS-912] - Email disappears when move emial to the new folder
+    * [OPENMEETINGS-914] - "Mark unread" action does not work on Contacts and message page
+    * [OPENMEETINGS-919] - Access logs will not be generated
+    * [OPENMEETINGS-922] - Add folder button does not add a folder.
+    * [OPENMEETINGS-923] - Drag and drop of files in the recordings section does not work
+    * [OPENMEETINGS-924] - deleting recordings?
+    * [OPENMEETINGS-925] - Recording details previously showed the room name not the id
+    * [OPENMEETINGS-927] - Memory leak in OM wicket application
+    * [OPENMEETINGS-930] - getInvitationHash method allow creation of invalid users (login too small)
+    * [OPENMEETINGS-932] - SIP dialer menu item is not availble in the OM 3.x
+
+** Improvement
+    * [OPENMEETINGS-167] - Main menu of OM
+    * [OPENMEETINGS-168] - Adding system date on dashboard
+    * [OPENMEETINGS-183] - Replacing "Timezone" column in "Users search" interface with a most important information = "statue" (connected /  absent).
+    * [OPENMEETINGS-273] - calendar time is not updating dynamically
+    * [OPENMEETINGS-280] - Update ATutor Module for OM
+    * [OPENMEETINGS-358] - Remove or hide the "Domian" selection from the "Login" dialog when there is only one "Domain"
+    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
+    * [OPENMEETINGS-375] - Allow an administrative option to control whether to display the "Mute microphone globally" dialog box or not
+    * [OPENMEETINGS-429] - [Wicket] Language admin should be implemented
+    * [OPENMEETINGS-484] - Poor quality of bitmapped pictures in pdf files on the whiteboard.
+    * [OPENMEETINGS-548] - Open meetings in a new window or tab
+    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
+    * [OPENMEETINGS-558] - GSOC: Need wysiwyg editor Wicket component
+    * [OPENMEETINGS-574] - wicket-jquery-ui should be used instead of adding jquery-ui manually to every page
+    * [OPENMEETINGS-578] - Latest Red5 server should be used in OM
+    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added
+    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added
+    * [OPENMEETINGS-594] - Add translated word in thai language
+    * [OPENMEETINGS-610] - push2talk button
+    * [OPENMEETINGS-612] - Dashboard need to be implemented
+    * [OPENMEETINGS-615] - User Profile panel need to be implemented
+    * [OPENMEETINGS-626] - Recordings panel need to be added
+    * [OPENMEETINGS-631] - Updated French translation
+    * [OPENMEETINGS-637] - Admin: Connections panel need to be implemented
+    * [OPENMEETINGS-638] - Room enter/exit should be implemented
+    * [OPENMEETINGS-639] - Installer should be implemented on Wicket
+    * [OPENMEETINGS-646] - Emotions should be added to the chat
+    * [OPENMEETINGS-685] - Japanese translation update for v2.1.1 / v3.1
+    * [OPENMEETINGS-692] - HTML admin should be improved to highlight record which changes 
+    * [OPENMEETINGS-701] - Wicket HTML templates should be stored unarchived
+    * [OPENMEETINGS-727] - no warning for too short login names
+    * [OPENMEETINGS-772] - Project tree structure should be updated
+    * [OPENMEETINGS-778] - Cannot install simplified Chinese
+    * [OPENMEETINGS-798] - MSSQL support should be added to OM
+    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP
+    * [OPENMEETINGS-854] - SOAP/REST call getFlvRecordingByExternalUserId should take into account both external id and type
+
+** New Feature
+    * [OPENMEETINGS-152] - Background image
+    * [OPENMEETINGS-491] - LDAP authentication filter
+    * [OPENMEETINGS-576] - Suggestion about the tunnelling implementation.
+    * [OPENMEETINGS-656] - Callback URL when client drop/log out from room
+    * [OPENMEETINGS-802] - Integration with Chamilo LMS
+    * [OPENMEETINGS-857] - sound/voice warning when disconnected
+
+** Task
+    * [OPENMEETINGS-81] - Unify Upload Components
+    * [OPENMEETINGS-721] - is it possible to add new user from soap method?
+    * [OPENMEETINGS-740] - Login via OAuth2
+    * [OPENMEETINGS-760] - Removing all OpenLaszlo /Flash UI that is no more maintained all all connected server side API calls.
+    * [OPENMEETINGS-767] - Redundant fields should be removed from MeetingMember object
+
+** Wish
+    * [OPENMEETINGS-38] - Default language
+    * [OPENMEETINGS-534] - How to set When the user is registered, need administrator audit to register?
+    * [OPENMEETINGS-607] - Refine the UI
+    * [OPENMEETINGS-622] - Removing the menu items and customizing dashboard
+
+
+Release Notes - Openmeetings - Version 2.2.0 Apache Release
+================================================================================================================
+
+** Bug
+    * [OPENMEETINGS-671] - Calendar is shown incompletely when book conference room
+    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
+    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
+    * [OPENMEETINGS-791] - Backup import is broken
+    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
+    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
+    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
+    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
+    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
+    * [OPENMEETINGS-811] - Recordings does not downloaded via Google Chrome browser
+    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
+    * [OPENMEETINGS-832] - SOAP doesn't work
+    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
+    * [OPENMEETINGS-837] - "Choose Device" Dialog stops working after a few Changes
+    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
+    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working
+
+** Improvement
+    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
+    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
+    * [OPENMEETINGS-798] - MSSQL support should be added to OM
+    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP
+
+** New Feature
+    * [OPENMEETINGS-491] - LDAP authentication filter
+
+** Task
+    * [OPENMEETINGS-790] - Red5 version in 2.x branch should be bumped
+
+
+Release Notes - Openmeetings - Version 2.1.1 Apache Release
+================================================================================================================
+
+** Bug
+    * [OPENMEETINGS-432] - video only room is coming with white board also
+    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
+    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
+    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
+    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
+    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
+    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
+    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
+    * [OPENMEETINGS-598] - dont build trunk on JDK 1.7 x64
+    * [OPENMEETINGS-608] - Office file are uploaded but not displayed
+    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
+    * [OPENMEETINGS-618] - Incorrect translation
+    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
+    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
+    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
+    * [OPENMEETINGS-654] - Interview room is broken
+    * [OPENMEETINGS-670] - The webinar is already closed, you wil be rediredcted to some interesting offerings in X sek
+    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame
+
+** Improvement
+    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added
+
+----------------------------------------------------------------------------------------------------------------
+----------------------------------------------------------------------------------------------------------------
+----------------------------------------------------------------------------------------------------------------
+
+
+
+Release Notes - Openmeetings - Version 2.1 Apache Release
+================================================================================================================
+
+** Sub-task
+    * [OPENMEETINGS-448] - Test and fix latest trunk to be able to import all old download zip's
+
+
+
+** Bug
+    * [OPENMEETINGS-34] - missing entries in XML language files
+    * [OPENMEETINGS-49] - Synchronisation between Calendar and Dashboard
+    * [OPENMEETINGS-92] - The documents are not deleted from the server after removing them from the system
+    * [OPENMEETINGS-94] - References to the code.google.com need to be updated
+    * [OPENMEETINGS-157] - Registration bug
+    * [OPENMEETINGS-166] - Meeting is created with incorrect start time in the calendar.
+    * [OPENMEETINGS-180] - bug sending invitation
+    * [OPENMEETINGS-196] - Calendar Ical / Simple Mail - double invitation mail
+    * [OPENMEETINGS-212] - Activities and actions: "Deny and remove message " button is not worked
+    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
+    * [OPENMEETINGS-251] - Minors layout problems when translating
+    * [OPENMEETINGS-267] - missing translation
+    * [OPENMEETINGS-291] - light does not indicate when the user is speaking
+    * [OPENMEETINGS-310] - Moodle plugin version
+    * [OPENMEETINGS-311] - Language problem after Openmeetings update (accessing from Moodle only)
+    * [OPENMEETINGS-312] - File was null or did not exist: TEST_SETUP_1338945244240.flv
+    * [OPENMEETINGS-314] - Webcam Title of user is username of default OM user
+    * [OPENMEETINGS-316] - ICS attachments for emails not working with Exchange 2003/2007 and Outlook 2003/2007
+    * [OPENMEETINGS-320] - Exception and layout for screensharing/recording client
+    * [OPENMEETINGS-322] - Several Exception in Log
+    * [OPENMEETINGS-327] - Add Restart Save Mail-Queue
+    * [OPENMEETINGS-328] - screen sharing is not closing automatically
+    * [OPENMEETINGS-331] - tooltip for cmd_applyforWhiteBoard room action is not set
+    * [OPENMEETINGS-343] - OM crashes if Inviteв guest with screen sharing rights tries to start screen sharing
+    * [OPENMEETINGS-346] - Screen Sharing does not end with end of meeting
+    * [OPENMEETINGS-362] - Download of profile images broken
+    * [OPENMEETINGS-363] - Some minor bugs in private chat
+    * [OPENMEETINGS-364] - User is not removed from user list when he leaves the room
+    * [OPENMEETINGS-366] - File upload does not show images as options when doing file upload
+    * [OPENMEETINGS-376] - “Notification type” text overflows the drop down data selection area and is partly covered
+    * [OPENMEETINGS-378] - Update Calendar email notification rules to send notification only when data relevant to the users has been changed
+    * [OPENMEETINGS-379] - The Calendar ics format email notification is incorrectly formed
+    * [OPENMEETINGS-380] - Calendar "Add attendee" option has a second option of itself to "Add external" but adding an external attendee does not close this dialog
+    * [OPENMEETINGS-381] - ivy jar in our repository
+    * [OPENMEETINGS-382] - LICENSE file mentions both CDDL and GPL
+    * [OPENMEETINGS-385] - contextmenu  contextmenuitem
+    * [OPENMEETINGS-389] - Create Drupal plugin for OpenMeetings
+    * [OPENMEETINGS-391] - Private and public folder does not appear
+    * [OPENMEETINGS-392] - privateChatTabBottom
+    * [OPENMEETINGS-393] - NumberFormatException while creating user or room
+    * [OPENMEETINGS-394] - save and load whiteboard does not work
+    * [OPENMEETINGS-396] - ICS attachments not recognised in Outlook 2003
+    * [OPENMEETINGS-402] - I cannot open Interview recorded
+    * [OPENMEETINGS-403] - Missing rooms
+    * [OPENMEETINGS-408] - Interview Room (1)
+    * [OPENMEETINGS-415] - NetStream NetStatus event does not work when attached to client object
+    * [OPENMEETINGS-418] - ScreenShare russian charset
+    * [OPENMEETINGS-420] - small problems in the current version
+    * [OPENMEETINGS-422] - Java error: TEST_SETUP_xxx.flv does not exist; javax error : ClientBroadCast Stream; published name=null
+    * [OPENMEETINGS-423] - Installation OM2.0
+    * [OPENMEETINGS-424] - Adjust Stream Volume
+    * [OPENMEETINGS-428] - Refactor User administration to Wicket
+    * [OPENMEETINGS-431] - OpenMeetings behind a proxy doesn't work for screen sharing
+    * [OPENMEETINGS-433] - Add Wicket enabled room administration
+    * [OPENMEETINGS-434] - Create admin area for groups, configurations, ldaps, servers
+    * [OPENMEETINGS-438] - Some bugs
+    * [OPENMEETINGS-440] - Problem in installation process
+    * [OPENMEETINGS-441] - Can't backup
+    * [OPENMEETINGS-445] - Backup Export does not work at all
+    * [OPENMEETINGS-449] - Cannot import backup file
+    * [OPENMEETINGS-450] - Wicket UI locked after accepting download of backup
+    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
+    * [OPENMEETINGS-453] - Recordings associated with wrong user after import if already a user was in the database
+    * [OPENMEETINGS-454] - Scrennsharing initiated by invited user ends up in exception report
+    * [OPENMEETINGS-455] - Create RTMPClient to do a load test
+    * [OPENMEETINGS-458] - Missing language string "pluginname"
+    * [OPENMEETINGS-459] - Remove RoomClient from database
+    * [OPENMEETINGS-466] - Screen Sharing window, Chinese Simplified (lang_id=11) text display "?????"
+    * [OPENMEETINGS-467] - No internal user can be selected when planning a meeting
+    * [OPENMEETINGS-469] - Deleted meeting data remains in SIP db tables
+    * [OPENMEETINGS-472] - red5sip rev68 will not run
+    * [OPENMEETINGS-474] - Links to rooms sent via email do not work
+    * [OPENMEETINGS-482] - Network check script hangs after the second "Port" button click 
+    * [OPENMEETINGS-489] - Start recording test hangs if no webcamera connected
+    * [OPENMEETINGS-490] - Wrong directory for test file in "Choose device" window
+    * [OPENMEETINGS-492] - Restoration of backup failed
+    * [OPENMEETINGS-493] - Uploading Libreoffice-format files only results in "Deleted"
+    * [OPENMEETINGS-496] - It's unable to send localized SMS message.
+    * [OPENMEETINGS-498] - Backup fails with Exception
+    * [OPENMEETINGS-502] - Some labels are hardcoded on the System backup tab 
+    * [OPENMEETINGS-504] - Some labels are not translated to russian language
+    * [OPENMEETINGS-505] - Values of the "Unerole User" and "Server Address" fields are mixed on the Administrator -> Connections tab.
+    * [OPENMEETINGS-506] - Localized (russian) file name is not uploaded on the Profile tab
+    * [OPENMEETINGS-509] - Comment is shown incorrectly in the Choose device dialog
+    * [OPENMEETINGS-512] - Files are not uploaded in the rooms
+    * [OPENMEETINGS-515] - Video recording artifacts at the begin of the file
+    * [OPENMEETINGS-516] - After graduation tasks
+    * [OPENMEETINGS-517] - sensSMS flag is not imported/exported by admin.
+    * [OPENMEETINGS-519] - Need to update Configuration page on Openmeetings site.
+    * [OPENMEETINGS-520] - Missing areas on the recorded video
+    * [OPENMEETINGS-521] - The "Show/Copy chat log" and "Delete server chat log" buttons are not available for the Ptivate Chat
+    * [OPENMEETINGS-523] - download manual ghostcript download link is dead
+    * [OPENMEETINGS-524] - Unenroled user is not thrown from the conference room 
+    * [OPENMEETINGS-525] - Font styles icon is enabled for Ptivate Chat if the "Allow font styles" is not enabled for conference room
+    * [OPENMEETINGS-526] - Not enough checking in the screensharing/recording
+    * [OPENMEETINGS-530] - Network testing tool on login page does not work when having OM configured for HTTPS and RTMPS
+    * [OPENMEETINGS-531] - Error Missing[XXXX]
+    * [OPENMEETINGS-536] - In upload dialog "Select file" does not work
+    * [OPENMEETINGS-540] - Uploading of .odt files
+    * [OPENMEETINGS-552] - Release blocking UI issues
+    * [OPENMEETINGS-561] - Video is not removed on Whiteboard closing
+    * [OPENMEETINGS-563] - "Black box" is displayed on test audio/video setup dialog
+    * [OPENMEETINGS-565] - Stackoverflow Exception when you goto your user profile and try to save it.
+    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
+    * [OPENMEETINGS-567] - If you hit the "start upload" button twice, while the conversion is running, Openmeetings will run into an error
+    * [OPENMEETINGS-568] - OpenMeetings requests access to Cam even if there is none
+    * [OPENMEETINGS-569] - Faulty highperf settings in bat script
+    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
+    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
+    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed
+
+
+
+
+** Improvement
+    * [OPENMEETINGS-93] - Create Openmeetings plug-in
+    * [OPENMEETINGS-119] - New users french manual
+    * [OPENMEETINGS-299] - Language import should be improved to take less time
+    * [OPENMEETINGS-339] - File location detection should be centralized
+    * [OPENMEETINGS-349] - OM should be scalable 
+    * [OPENMEETINGS-356] - Modify Rooms menu to have three options for each of the room types
+    * [OPENMEETINGS-357] - Users should first log into "Private rooms", have as a Admin selectable option for where users first log into
+    * [OPENMEETINGS-361] - It should be available to set logo in OM
+    * [OPENMEETINGS-384] - Mention that the file parameter is optional for the admin setup script
+    * [OPENMEETINGS-386] - Import/Export should be automatic based on Annotations
+    * [OPENMEETINGS-387] - It should be possible to create Appointment and use existent room
+    * [OPENMEETINGS-390] - Openmeetings Plugin for Bitrix need to be implemented
+    * [OPENMEETINGS-395] - Ability to add multiple external attendees should be added to the calendar
+    * [OPENMEETINGS-397] - Private chat with chat disabled
+    * [OPENMEETINGS-398] - Updated french translation for OM 2.1
+    * [OPENMEETINGS-399] - jitsi openmeetings plugin
+    * [OPENMEETINGS-400] - Improve volume slider
+    * [OPENMEETINGS-436] - Ability to moderate room chat should be added
+    * [OPENMEETINGS-470] - SIP meeting extensions
+    * [OPENMEETINGS-477] - Possibility to copy invitation link to the clipboard should be added
+    * [OPENMEETINGS-478] - It should be possible to enable auto videopod selection
+    * [OPENMEETINGS-480] - It would be better to remove confirmation dialog when user turns micro on/off.
+    * [OPENMEETINGS-497] - Confirmation diolog for the turning micro on/off is inconvenient.
+    * [OPENMEETINGS-501] - fresh build fails with class org/jdom/JDOMException not found in anakia build section
+    * [OPENMEETINGS-518] - Sms text sent as a meeting reminder is too long sometime.
+    * [OPENMEETINGS-527] - Confirm an exclusive audio
+    * [OPENMEETINGS-529] - AEC should be utilized in OM
+    * [OPENMEETINGS-535] - an update of the german language file
+    * [OPENMEETINGS-541] - Updated version of French language file
+    * [OPENMEETINGS-562] - To import ppt presentation delete page
+    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added
+
+** New Feature
+    * [OPENMEETINGS-111] - Command line admin need to be created
+    * [OPENMEETINGS-342] - Private Chat should be available in the room
+    * [OPENMEETINGS-350] - Hot key should be added to be able to "rearrange" video windows in the room
+    * [OPENMEETINGS-351] - Add a possibility to send sms as an appointment reminder
+    * [OPENMEETINGS-354] - Volume slider
+    * [OPENMEETINGS-383] - Plugin for Joomla should be added to Openmeetings
+
+
+
+
+
+
+** Task
+    * [OPENMEETINGS-41] - OM without private storage area
+    * [OPENMEETINGS-107] - Unify database schema
+    * [OPENMEETINGS-248] - Remove LGPL Icons from Symbol/Cliparts and Emoticons
+    * [OPENMEETINGS-306] - Initial network quality test
+    * [OPENMEETINGS-341] - Update to portugues brasil Language
+    * [OPENMEETINGS-414] - Delete SIP Applet from stack
+    * [OPENMEETINGS-417] - How to add/register SIP extension in OpenMeeting ?
+    * [OPENMEETINGS-446] - Create a Master backup File for last versions (including all generated data)
+    * [OPENMEETINGS-522] - add Redmine Plugin Link to HomePage
+    * [OPENMEETINGS-585] - Clustering documentation
+
+
+
+** Test
+    * [OPENMEETINGS-50] - content of whiteboards
+
+
+----------------------------------------------------------------------------------------------------------------
+----------------------------------------------------------------------------------------------------------------
+----------------------------------------------------------------------------------------------------------------
+
+
+Release Notes - OpenMeetings - Version 2.0-INCUBATING
+================================================================================================================
+Sub-task
+
+    [OPENMEETINGS-8] - Generate CalendarAPI for SOAP/REST WebServices
+    [OPENMEETINGS-9] - Design MockUp for new Calendar UI
+    [OPENMEETINGS-40] - Merge Audio/Video components to trunk
+    [OPENMEETINGS-44] - remove all old audio/video components
+    [OPENMEETINGS-47] - fix ScopeApplicationAdapter / sync and message broadcasting mechanism to not send messages to SWF10 client
+    [OPENMEETINGS-51] - fix url params (invitationHash / secureHash / language_id / roomScopeId / et cetera ) to be forwarded to inner SWF components
+    [OPENMEETINGS-52] - fix icon status in new video components
+    [OPENMEETINGS-53] - Add security mechanism to LocalConnection subscribers
+    [OPENMEETINGS-54] - fix recorder to use new audio/video components and fix recording itself to reference correct streams
+    [OPENMEETINGS-55] - fix testing application (5 second video recording on room enter) to use new a/v components
+    [OPENMEETINGS-61] - fix screensharing player to use the new audio/video components
+    [OPENMEETINGS-62] - Clean up 5-second recordings using a scheduler
+    [OPENMEETINGS-65] - fix whiteboard video player to use the new audio/video components
+    [OPENMEETINGS-71] - fix interview room type to use new audio/video components
+    [OPENMEETINGS-73] - fix mute functionality in new video components
+    [OPENMEETINGS-77] - changeDevice.lzx must be transformed to SWF10
+    [OPENMEETINGS-79] - SharedObject in SWF10 does not store settings
+    [OPENMEETINGS-80] - Some notification windows need to be moved to SWF10
+    [OPENMEETINGS-89] - Fix new option "hideWhiteboard" with layout of video pods
+    [OPENMEETINGS-97] - RTPMSClient for ScreenSharing should be created/tested
+    [OPENMEETINGS-98] - "Borrowed" code should be removed from ScreenSharing client
+    [OPENMEETINGS-105] - Add the license header to all SWF10 files
+    [OPENMEETINGS-170] - When you republish your stream while recording or suddenly leave the meeting, the recording has no audio
+
+Bug
+
+    [OPENMEETINGS-5] - Invitation default language
+    [OPENMEETINGS-15] - Usability problem with login at http://demo.openmeetings.de/openmeetings/
+    [OPENMEETINGS-18] - File upload no work
+    [OPENMEETINGS-26] - Whiteboard error "arrow tool" dragging from right to left in any angle.
+    [OPENMEETINGS-28] - LDAP wrong default mapping for firstname
+    [OPENMEETINGS-31] - Upload files will not convert to SWF.
+    [OPENMEETINGS-48] - Log are either not written or in the wrong logfile
+    [OPENMEETINGS-56] - LDAP authentication is not correct
+    [OPENMEETINGS-64] - whiteboard id
+    [OPENMEETINGS-87] - All DB related JUnit tests are failed
+    [OPENMEETINGS-91] - Fix field type's of comment/description fields to use datatype Text (instead of VARCHAR(255))
+    [OPENMEETINGS-114] - With trunk svn 1307221: LDAP authentication fails because user can't be imported into local DB
+    [OPENMEETINGS-116] - Menu bar shortcuts do not work
+    [OPENMEETINGS-118] - Activity UI: Fix duplicated calls, removal of items does not work
+    [OPENMEETINGS-122] - Fix JUnit tests
+    [OPENMEETINGS-123] - Wildcard on creating WebService docs doesn't work
+    [OPENMEETINGS-127] - Backup\Import Asterisk related tables
+    [OPENMEETINGS-133] - Sources produced by nightly build should be buildable with ant
+    [OPENMEETINGS-135] - Video window can't be maximized
+    [OPENMEETINGS-137] - Loading of stored whiteboards doesn't work (error in loading path)
+    [OPENMEETINGS-138] - Errors and quality of Recording with screensharing application
+    [OPENMEETINGS-139] - Unable to Add User into Usergroups
+    [OPENMEETINGS-140] - Login options/features been reduced in current update
+    [OPENMEETINGS-141] - onMetaData Event not thrown in AS3 Non-Debug version
+    [OPENMEETINGS-142] - 1-2-3-4 buttons on dashboard don't do anything
+    [OPENMEETINGS-144] - When using openLDAP authentication, the source code uses the hardcoded 'uid' attribute to map logins and user DNs instead of the field_user_principal parameter
+    [OPENMEETINGS-145] - Unmuting/exclusive audio doesn't work and icons show wrong status in video pod after entering a room
+    [OPENMEETINGS-149] - Error while installing on MySQL DB openmeetings-2.0.0.r1311115-08-04-2012_2307
+    [OPENMEETINGS-150] - Error restoring password
+    [OPENMEETINGS-156] - UI BUGS?
+    [OPENMEETINGS-158] - Degradation of the sound quality in recordings in the recent release
+    [OPENMEETINGS-161] - UI Bugs in private messages
+    [OPENMEETINGS-162] - Exception in Screensharing
+    [OPENMEETINGS-163] - Recording does no more work if you start to share audio/video AFTER starting the recording
+    [OPENMEETINGS-164] - java.lang.ArrayIndexOutOfBoundsException: 5 in Recording Conversion
+    [OPENMEETINGS-165] - Video freezes as soon as two people have audio/video turned on and you start to record the meeting => Convert FLV writers to act async
+    [OPENMEETINGS-171] - Screensharing notification not showing when already running
+    [OPENMEETINGS-172] - Home drive in recorder UI, minimize the home drive makes the list of files empty, drag and rop file from home drive to public drive
+    [OPENMEETINGS-174] - CLI import of backup does not work
+    [OPENMEETINGS-175] - CLI installer does not create install.xml
+    [OPENMEETINGS-176] - Import of Backup from version 1.9.x fails to import conference rooms
+    [OPENMEETINGS-177] - Meeting Room Invitation Link Not working
+    [OPENMEETINGS-178] - Invited user has access to adminstration panel
+    [OPENMEETINGS-179] - User Not Removed from chat participants window after logout..
+    [OPENMEETINGS-181] - Video Window, Conference room
+    [OPENMEETINGS-182] - OM need to be restarted after fresh installation to get menu list
+    [OPENMEETINGS-187] - Moderator and his room
+    [OPENMEETINGS-188] - Inserting room, horizontal bar does not appear
+    [OPENMEETINGS-190] - Problem with language when invoking OM from Moodle module
+    [OPENMEETINGS-191] - When I enable HTTPS and RTMPS the screen sharing resultant JNLP file has the wrong address = http://servername:443/.... instead of https://servername/..... if I edit the JNLP file by hand on the client level and change the address it works
+    [OPENMEETINGS-193] - Fix timezones that are missing
+    [OPENMEETINGS-195] - Send private message / Show user profile buttons
+    [OPENMEETINGS-196] - Calendar Ical / Simple Mail - double invitation mail
+    [OPENMEETINGS-197] - Calendar Ical / Simple Mail - room language
+    [OPENMEETINGS-198] - Password and dashboard calendar event list
+    [OPENMEETINGS-199] - Screensharing and recording does not work under OSX with Java 64Bit
+    [OPENMEETINGS-200] - Invitation link does not arrive
+    [OPENMEETINGS-203] - two languages are shown
+    [OPENMEETINGS-205] - ReplyTo Field leads to exception when sending emails to external users
+    [OPENMEETINGS-206] - wrong meeting times
+    [OPENMEETINGS-208] - Incorrectly filled "Last name" field on the User details form when created user with "Sign in" form
+    [OPENMEETINGS-209] - Encoding at install OpenMeetings
+    [OPENMEETINGS-210] - Calendar event
+    [OPENMEETINGS-211] - NullPointerException in FLVRecorderService.stopRecordingShow
+    [OPENMEETINGS-214] - When calendar event invitation is sent, invitation_text_from value displays with the name of the person for whom the invitation is being sent to but should be showing the sender's name
+    [OPENMEETINGS-215] - Created date is duplicated where restoring base from backup
+    [OPENMEETINGS-216] - UI problem
+    [OPENMEETINGS-219] - �Delete� button is not visible
+    [OPENMEETINGS-225] - If object on whiteboard of type "freedraw" ("paint") is dragged/moved, the object is gone when you re-enter the room
+    [OPENMEETINGS-229] - "Exit"button is not shown for inviting users from room
+    [OPENMEETINGS-230] - Error in the field name on the form "Add external"
+    [OPENMEETINGS-232] - Rooms are imported with invalid room types
+    [OPENMEETINGS-233] - Font styles in propertyPanel are getting disabled.
+    [OPENMEETINGS-234] - Video and Screen sharing not working with HTTPS and RTMPS - Java Application starts but doesnt connect - java trace logs shows "[WARN] [NioProcessor-2] org.red5.server.net.rtmps.RTMPSMinaIoHandler - Exception caught Keystore or password are null"
+    [OPENMEETINGS-237] - Calender reminder email invitation link fails due to link missing "&language=x" in URL
+    [OPENMEETINGS-238] - Calendar shows incorrect day of week for the actual date when timezone is GMT+10
+    [OPENMEETINGS-239] - Calendar Event details Comment/Description field text can overflow the boundary of the Description field of the Meeting Room's Event details dialog box
+    [OPENMEETINGS-241] - Cannot send emailed Invitations from a Meeting room
+    [OPENMEETINGS-242] - Moodle Plugin
+    [OPENMEETINGS-244] - Calendar doesn't show Day / Week / Month
+    [OPENMEETINGS-246] - Remote Cursor is no more visible
+    [OPENMEETINGS-249] - Using LDAP with latest build fails to login, - after login screen im prompted with "You account is assigned to multiple usergroups... " The drop down list is empty - I have checked the MYSQL DB table "oraganisations" and there are two entries there
+    [OPENMEETINGS-250] - Moderator loses Moderation
+    [OPENMEETINGS-252] - Fix ImportInitValues.java default.timezone not taken from install config and add (optional) mapping "ldap_user_attr_timezone" in the ldap config
+    [OPENMEETINGS-257] - Exception in CLI Installer when installing in a new database
+    [OPENMEETINGS-263] - Missing invitation from calendar
+    [OPENMEETINGS-264] - Spinners in ScreenSharing applet works improperly
+    [OPENMEETINGS-269] - Image Download Issue from the Whiteboard - Naming problem and Deletion.jpg file - Reported by George Kirkham
+    [OPENMEETINGS-270] - MemoryLeak / Dead-Lock in FlvRecorderConverter
+    [OPENMEETINGS-271] - Whiteboad Undo tool does not remove all objects from the Whiteboard
+    [OPENMEETINGS-272] - When entering a room, the "Choose devices" window is behind any attendee video windows.
+    [OPENMEETINGS-275] - "User Speaks" icon in Users list does not indicate when the person is speaking
+    [OPENMEETINGS-277] - Latest build fails to start using RTMPS
+    [OPENMEETINGS-278] - When I enter a room and choose a lower resolution the "Choose Devices" window shrinks but the text at the top doesn't wrap to re-size
+    [OPENMEETINGS-279] - Minimize Video button works improperly
+    [OPENMEETINGS-281] - Enhance Language Editor with search fields
+    [OPENMEETINGS-282] - Video window "Exclusive Audio" causes tool tips message boxes to be left on the screen
+    [OPENMEETINGS-283] - Choose devices - Start test recording - no longer plays back the recorded clip
+    [OPENMEETINGS-284] - Audio is not working
+    [OPENMEETINGS-286] - video/audio broadcast problem with language of japanese
+    [OPENMEETINGS-287] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
+    [OPENMEETINGS-288] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
+    [OPENMEETINGS-289] - Unable to connect from moodle. Builde 2.0.0.r1341675-22-05-2012_2319
+    [OPENMEETINGS-294] - Cannot install Openmeetings with mysql
+    [OPENMEETINGS-295] - OpenMeetings with rtmp over HTTP Tunneling does not work anymore with Red5 r4374
+    [OPENMEETINGS-296] - Language export works only in english
+    [OPENMEETINGS-297] - Users are imported with invalid country
+    [OPENMEETINGS-298] - Problems with shortcut-key 'Ctrl + Shift + m', Camera/Mic settings-screen pops-up when typing 'M' (Shift+m)
+    [OPENMEETINGS-300] - $APP_NAME placeholder is not correctly handled in some email templates
+    [OPENMEETINGS-302] - Delete massges in Trash
+    [OPENMEETINGS-304] - Can not delete mail in Trash
+    [OPENMEETINGS-307] - Language does not load at login
+    [OPENMEETINGS-312] - File was null or did not exist: TEST_SETUP_1338945244240.flv
+    [OPENMEETINGS-314] - Webcam Title of user is username of default OM user
+    [OPENMEETINGS-316] - ICS attachments for emails not working with Exchange 2003/2007 and Outlook 2003/2007
+    [OPENMEETINGS-317] - Multiple appointments generated when clicking save more than once
+    [OPENMEETINGS-319] - Recordings at demo.openmeetings.com are not downloadble
+    [OPENMEETINGS-320] - Exception and layout for screensharing/recording client
+    [OPENMEETINGS-323] - Update Red5 to latest version (r4380) in both server and client library to test RTMPT and file not found exceptions
+    [OPENMEETINGS-324] - Limit login
+
+Improvement
+
+    [OPENMEETINGS-2] - Modify ANT Build script to create correct Build Artefacts / Integrate into https://builds.apache.org/
+    [OPENMEETINGS-4] - Microphone rooms
+    [OPENMEETINGS-10] - openmeetings_1_9_1_r4707 Default Language Error
+    [OPENMEETINGS-45] - New Audio/Video Components
+    [OPENMEETINGS-46] - Updated German lang file
+    [OPENMEETINGS-59] - Japanese translation update
+    [OPENMEETINGS-63] - Update Sharing RTMPClient with latest Red5 version and test if it works now
+    [OPENMEETINGS-66] - Whiteboard Player should aspect ratio when importing a video to the whiteboard
+    [OPENMEETINGS-83] - multipart.jar should be replaced with implementation compatible with ASF licence
+    [OPENMEETINGS-86] - SVN directory structure need to be optimized
+    [OPENMEETINGS-101] - Linking OpenMeetings tutorials and manuals
+    [OPENMEETINGS-113] - Define a default Login-Domain (ie an Ldap domain) to be automatically selected in the frontend login window
+    [OPENMEETINGS-125] - Text does not fit in the button.
+    [OPENMEETINGS-146] - Add mechanism to debug LocalConnection better
+    [OPENMEETINGS-184] - When we make a mistake or we use the same ID in users add administration menu => all fields become empty !
+    [OPENMEETINGS-185] - There is no sense to have two users / moderator / administrator with the same email
+    [OPENMEETINGS-194] - Command line admin: added parameter "--drop", to drop database before install
+    [OPENMEETINGS-202] - Calendar event
+    [OPENMEETINGS-226] - It should be possible to configure OpenOffice location via OM config
+    [OPENMEETINGS-245] - configuration table is not backup/restored
+    [OPENMEETINGS-247] - Make document conversion quality an administrator changeable option
+    [OPENMEETINGS-253] - Made some changes to the german language deutsch.xml
+    [OPENMEETINGS-259] - English Language Text improvements
+    [OPENMEETINGS-268] - Improvements for english text for 506, "registering_mail_text_head", 507, "registering_mail_text_head2", 512, "register_mail_subject"
+    [OPENMEETINGS-276] - Need a way to select "Exclusive Audio" for attenees who have selected "Audo Only"
+    [OPENMEETINGS-285] - Update for Chinese Language text
+    [OPENMEETINGS-309] - Complete French translation
+    [OPENMEETINGS-313] - Errors with it's types and descriptions should be listed on the site
+
+New Feature
+
+    [OPENMEETINGS-129] - Load Icons dynamically at runtime and replace LGPL licensed icons
+    [OPENMEETINGS-130] - Add mechanism for advanced runtime theming
+    [OPENMEETINGS-134] - Themes: Add Color definitions to default-theme.xml file and enhance with more color definitions
+    [OPENMEETINGS-186] - ReplyTo email address should be set to user email address.
+    [OPENMEETINGS-266] - ScreenSharing need to be enhanced to enable screen publishing
+
+Task
+
+    [OPENMEETINGS-7] - Replace lzCalendar with non CPL implementation
+    [OPENMEETINGS-32] - Replace JOD Library with own implementation
+    [OPENMEETINGS-60] - OpenMeetings Plugin for Atlassian JIRA
+    [OPENMEETINGS-70] - There should be a scheduler the does a check for test-recordings older then 1 hour and delete them.
+    [OPENMEETINGS-74] - Integrate Apache Ivy for dependency management of Libraries
+    [OPENMEETINGS-75] - Remove roomtype audience
+    [OPENMEETINGS-76] - Remove Event Recording
+    [OPENMEETINGS-82] - Atlassian Confluence Integration Plugin
+    [OPENMEETINGS-85] - Fix and improve Chat Layout
+    [OPENMEETINGS-88] - Fix client side modules structure (delete "Plugins" directory)
+    [OPENMEETINGS-99] - Project restructuring (sources, beans, eclipse)
+    [OPENMEETINGS-100] - JabberService should be added to Axis2 services
+    [OPENMEETINGS-106] - JabberService is missing in the API Doclet task that generates the SOAP/REST API Documentation
+    [OPENMEETINGS-109] - Show Number of Unread private messages in the dashboard and upgrade layout
+    [OPENMEETINGS-110] - Refactor menubar layout and tabbuttons in dashboard/rooms/settings section + remove "navisub" table + Fix to use "NamedQuery" for main navigation to enable/disable entries in the mainnavi
+    [OPENMEETINGS-117] - Refactor Conference Coloring and Layout
+    [OPENMEETINGS-124] - Clean Up Splash Screen and unused resources in init
+    [OPENMEETINGS-128] - Remove "doc" folder with partly documentated japanese documention and fix icon resources that are not needed
+    [OPENMEETINGS-147] - The green dot that indicates somebody else is speaking produces too many events and is badly performing
+    [OPENMEETINGS-160] - Enable sending messages to external users from the private messages including invitations to conference rooms and events
+    [OPENMEETINGS-169] - Clean up WhiteBoardService to use proper sync methods
+    [OPENMEETINGS-173] - CLI needs a check on those params that are "must haves" for installation
+    [OPENMEETINGS-222] - Enable Keyboard actions to whiteboard (Arrow Down|Left|Right|Up [+Shift] and Delete) when object is selected
+    [OPENMEETINGS-223] - Hardly anybody knows that you can double click to re-edit the text
+    [OPENMEETINGS-231] - Update website with new screenshots
+    [OPENMEETINGS-236] - Where to put portuguese Brasil.xml.
+
+Test
+
+    [OPENMEETINGS-104] - Error in cyrillic filenames
+    [OPENMEETINGS-115] - Installation error
+    [OPENMEETINGS-120] - Blank screen on Backup
+    [OPENMEETINGS-121] - Share/record screen doesn't work
+    [OPENMEETINGS-136] - Duplicate message in Activity section
+    [OPENMEETINGS-148] - when I click to button of page, that haven't anything content
+    [OPENMEETINGS-155] - record not playing
+    [OPENMEETINGS-220] - main.lzx changes (background)
+    [OPENMEETINGS-221] - problem: recordings with 1 frame/sec
+    [OPENMEETINGS-240] - jod converter error
+    [OPENMEETINGS-303] - Can not Export new language
+
+Wish
+
+    [OPENMEETINGS-11] - Openmeeting use LDAP as default domain
+    [OPENMEETINGS-20] - Add hideWhiteboard attributes in Room Object and make it possible to configure / editable via Administration > Rooms
+    [OPENMEETINGS-21] - Add hideChat attributes in Room Object and make it possible to configure / editable via Administration > Rooms
+    [OPENMEETINGS-22] - Add hideActivitiesAndActions attributes in Room Object and make it possible to configure / editable via Administration > Rooms
+    [OPENMEETINGS-23] - Add hideFilesExplorer attributes in Room Object and make it possible to configure / editable via Administration > Rooms
+    [OPENMEETINGS-24] - Add hideScreenSharing attributes in Room Object and make it possible to configure / editable via Administration > Rooms
+    [OPENMEETINGS-25] - Add SOAP/REST Call
+    [OPENMEETINGS-78] - datatype of externalUserId
+    [OPENMEETINGS-254] - German System Backup garbled text
+    [OPENMEETINGS-255] - Possibility to disable Show Sip Dialer in Meeting Room
+    [OPENMEETINGS-258] - Combine device settings and audio/video test in single UI
+    [OPENMEETINGS-262] - Document conversion Windows / Linux different
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..69e2a38
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,1742 @@
+
+Apache OpenMeetings License:
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+   
+======================================================================================================================
+
+Following components are direct work from the Apache OpenMeetings project:
+
+======================================================================================================================
+
+admin.bat
+admin.sh
+network_test.sh
+webapps/openmeetings/conf/om_ldap.cfg
+webapps/openmeetings/css/admin.css
+webapps/openmeetings/css/admin-rtl.css
+webapps/openmeetings/css/calendar.css
+webapps/openmeetings/css/forms.css
+webapps/openmeetings/css/history.css
+webapps/openmeetings/css/jquery.ui.menubar.css
+webapps/openmeetings/css/jquery.ui.menubar-rtl.css
+webapps/openmeetings/css/theme.css
+webapps/openmeetings/css/theme-rtl.css
+
+webapps/openmeetings/docs/*
+webapps/openmeetings/js/openmeetings_functions.js
+webapps/openmeetings/languages/*
+webapps/openmeetings/public/favicon.ico
+webapps/openmeetings/public/config.*
+webapps/openmeetings/public/main.as3.swf11.swf
+webapps/openmeetings/public/main.swf8.swf
+webapps/openmeetings/public/maindebug.as3.swf11.swf
+webapps/openmeetings/public/maindebug.swf8.swf
+webapps/openmeetings/public/networktesting.swf10.swf
+webapps/openmeetings/public/networktestingdebug.swf10.swf 
+webapps/openmeetings/public/theme.*
+webapps/openmeetings/screensharing
+webapps/openmeetings/streams/*
+webapps/openmeetings/upload/*
+
+webapps/openmeetings/WEB-INF/red5-web.properties
+webapps/openmeetings/WEB-INF/red5-web.xml
+webapps/openmeetings/WEB-INF/spring-mvc-servlet.xml
+webapps/openmeetings/WEB-INF/velocity.properties
+webapps/openmeetings/WEB-INF/web.xml
+webapps/openmeetings/WEB-INF/classes/logback.xsd
+webapps/openmeetings/WEB-INF/classes/logback-config.xml
+webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/derby_persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+webapps/openmeetings/WEB-INF/classes/META-INF/postgres_persistence.xml
+webapps/openmeetings/WEB-INF/conf/axis2.xml
+webapps/openmeetings/WEB-INF/conf/axis2.xsd
+webapps/openmeetings/WEB-INF/services/openmeetings-*.aar
+webapps/openmeetings/WEB-INF/services/services.list
+webapps/openmeetings/WEB-INF/services/version.aar
+
+webapps/openmeetings/WEB-INF/lib/openmeetings-axis-*.jar
+webapps/openmeetings/WEB-INF/lib/openmeetings-cli-*.jar
+webapps/openmeetings/WEB-INF/lib/openmeetings-core-*.jar
+webapps/openmeetings/WEB-INF/lib/openmeetings-db-*.jar
+webapps/openmeetings/WEB-INF/lib/openmeetings-util-*.jar
+webapps/openmeetings/WEB-INF/lib/openmeetings-web-*.jar
+
+webapps/openmeetings/screensharing/icon.jpg
+webapps/openmeetings/screensharing/splashicon.jpg
+webapps/openmeetings/screensharing/openmeetings-screenshare-*.jar
+
+======================================================================================================================
+
+Further those components are either itself or derivate work from 
+projects licensed under the Apache License 2.0:
+
+======================================================================================================================
+
+red5-*.jar
+webapps/openmeetings/screensharing/red5-*.jar
+commons-cli-jar-1.2.jar
+red5.bat
+red5.sh
+red5-highperf.sh
+red5-highperf.bat
+red5-debug.sh
+red5-debug.bat
+red5-shutdown.sh
+red5-shutdown.bat
+conf/access.properties
+conf/build_standalone.properties
+conf/catalina.policy
+conf/context.xml
+conf/ehcache.xml
+conf/jee-container.xml
+conf/keystore.jmx
+conf/logback.xml
+conf/no-jee-container.xml
+conf/password.properties
+conf/quartz.properties
+conf/realm.properties
+conf/red5-common.xml
+conf/red5-core.xml
+conf/red5.globals
+conf/red5.policy
+conf/red5.properties
+conf/red5.xml
+conf/tomcat-users.xml
+conf/truststore.jmx
+conf/web.xml
+webapps/red5-default.xml
+webapps/root/biglogo.png
+webapps/root/crossdomain.xml
+webapps/root/favicon.ico
+webapps/root/favicon.png
+webapps/root/flvdemo.html
+webapps/root/gc.jsp
+webapps/root/index.html
+webapps/root/logo.png
+webapps/root/WEB-INF/red5-web.properties
+webapps/root/WEB-INF/red5-web.xml
+webapps/root/WEB-INF/web.xml
+
+
+webapps/openmeetings/WEB-INF/lib/apache-mime4j-core-jar-0.8-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/asterisk-java-jar-1.0.0.CI-20130102.214528-1134.jar
+webapps/openmeetings/WEB-INF/lib/axiom-api-bundle-1.2.15-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axiom-dom-bundle-1.2.15-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axiom-impl-bundle-1.2.15-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-jar-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-jaxws-jar-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-kernel-jar-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-metadata-jar-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-saaj-jar-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-transport-http-bundle-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/axis2-transport-local-bundle-1.7.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/batik-anim-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-awt-util-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-bridge-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-codec-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-css-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-dom-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-ext-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-extension-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-gui-util-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-gvt-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-parser-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-rasterizer-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-script-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-slideshow-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-squiggle-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-svg-dom-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-svggen-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-svgpp-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-swing-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-transcoder-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-ttf2svg-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-util-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-xml-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/commons-collections-jar-3.2.1.jar
+webapps/openmeetings/WEB-INF/lib/commons-dbcp-jar-1.4.jar
+webapps/openmeetings/WEB-INF/lib/commons-digester-jar-2.1.jar
+webapps/openmeetings/WEB-INF/lib/commons-exec-jar-1.1.jar
+webapps/openmeetings/WEB-INF/lib/commons-httpclient-jar-3.1.jar
+webapps/openmeetings/WEB-INF/lib/commons-lang-jar-2.6.jar
+webapps/openmeetings/WEB-INF/lib/commons-net-jar-3.3.jar
+webapps/openmeetings/WEB-INF/lib/commons-transaction-jar-1.2.jar
+webapps/openmeetings/WEB-INF/lib/derbyclient-jar-10.10.2.0.jar
+webapps/openmeetings/WEB-INF/lib/derby-jar-10.10.2.0.jar
+webapps/openmeetings/WEB-INF/lib/derbynet-jar-10.10.2.0.jar
+webapps/openmeetings/WEB-INF/lib/fop-jar-1.0.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-activation_1.1_spec-bundle-1.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-annotation_1.0_spec-jar-1.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-javamail_1.4_spec-bundle-1.7.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-jaxws_2.2_spec-bundle-1.0.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-jta_1.1_spec-jar-1.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-saaj_1.3_spec-jar-1.0.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-stax-api_1.0_spec-bundle-1.0.1.jar
+webapps/openmeetings/WEB-INF/lib/geronimo-ws-metadata_2.0_spec-jar-1.1.2.jar
+webapps/openmeetings/WEB-INF/lib/jsmpp-jar-2.1.0.jar
+webapps/openmeetings/WEB-INF/lib/neethi-bundle-3.0.3-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-bundle-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-jdbc-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-jest-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-kernel-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-lib-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-persistence-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-persistence-jdbc-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-slice-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/openjpa-xmlstore-jar-2.3.0.jar
+webapps/openmeetings/WEB-INF/lib/simple-xml-jar-2.7.jar
+webapps/openmeetings/WEB-INF/lib/smslib-jar-3.5.3.jar
+webapps/openmeetings/WEB-INF/lib/stax-api-jar-1.0-2.jar
+webapps/openmeetings/WEB-INF/lib/stax2-api-jar-3.1.1.jar
+webapps/openmeetings/WEB-INF/lib/velocity-jar-1.7.jar
+webapps/openmeetings/WEB-INF/lib/velocity-tools-jar-2.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-auth-roles-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-core-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-dashboard-core-jar-0.12.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-datetime-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-devutils-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-extensions-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-ioc-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-jquery-ui-calendar-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-jquery-ui-core-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-jquery-ui-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-jquery-ui-plugins-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-native-websocket-core-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-native-websocket-tomcat-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-request-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicketstuff-html5-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicketstuff-select2-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicketstuff-urlfragment-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/wicket-util-jar-6.19.0.jar
+webapps/openmeetings/WEB-INF/lib/woden-core-bundle-1.0-SNAPSHOT.jar
+webapps/openmeetings/WEB-INF/lib/woodstox-core-asl-jar-4.1.4.jar
+webapps/openmeetings/WEB-INF/lib/ws-commons-util-jar-1.0.2.jar
+webapps/openmeetings/WEB-INF/lib/wsdl4j-jar-1.6.2.jar
+webapps/openmeetings/WEB-INF/lib/xalan-jar-2.7.0.jar
+webapps/openmeetings/WEB-INF/lib/xml-apis-ext-jar-1.3.04.jar
+webapps/openmeetings/WEB-INF/lib/xml-resolver-jar-1.2.jar
+webapps/openmeetings/WEB-INF/lib/xmlgraphics-commons-jar-1.4.jar
+webapps/openmeetings/WEB-INF/lib/xmlrpc-client-jar-3.1.3.jar
+webapps/openmeetings/WEB-INF/lib/xmlrpc-common-jar-3.1.3.jar
+webapps/openmeetings/WEB-INF/lib/XmlSchema-bundle-1.4.8-SNAPSHOT.jar
+
+webapps/openmeetings/screensharing/commons-beanutils-1.9.2.jar
+webapps/openmeetings/screensharing/commons-codec-1.9.jar
+webapps/openmeetings/screensharing/commons-collections-3.2.1.jar
+webapps/openmeetings/screensharing/commons-lang3-3.3.2.jar
+webapps/openmeetings/screensharing/ehcache-core-2.6.9.jar
+webapps/openmeetings/screensharing/httpclient-4.3.5.jar
+webapps/openmeetings/screensharing/httpcore-4.3.2.jar
+webapps/openmeetings/screensharing/mina-core-2.0.8.jar
+webapps/openmeetings/screensharing/quartz-2.1.7.jar
+webapps/openmeetings/screensharing/red5-client-jar-1.0.5-RELEASE.jar
+webapps/openmeetings/screensharing/red5-io-1.0.5-RELEASE.jar
+webapps/openmeetings/screensharing/red5-server-common-1.0.5-RELEASE.jar
+webapps/openmeetings/screensharing/spring-beans-4.0.8.RELEASE.jar
+webapps/openmeetings/screensharing/spring-context-4.0.8.RELEASE.jar
+webapps/openmeetings/screensharing/spring-core-4.0.8.RELEASE.jar
+
+lib/cglib-nodep-2.2.2.jar
+lib/commons-beanutils-1.9.2.jar
+lib/commons-codec-1.9.jar
+lib/commons-collections-3.2.1.jar
+lib/commons-daemon-1.0.15.jar
+lib/commons-fileupload-jar-1.3.jar
+lib/commons-io-jar-2.4.jar
+lib/commons-lang3-3.3.2.jar
+lib/commons-pool-1.5.6.jar
+lib/ehcache-core-2.6.9.jar
+lib/geronimo-jpa_2.0_spec-bundle-1.1.jar
+lib/httpclient-4.3.5.jar
+lib/httpcore-4.3.2.jar
+lib/mina-core-2.0.8.jar
+lib/mina-integration-beans-2.0.8.jar
+lib/mina-integration-jmx-2.0.8.jar
+lib/mina-integration-ognl-2.0.8.jar
+lib/quartz-2.1.7.jar
+lib/red5-*.jar
+lib/spring-aop-4.0.8.RELEASE.jar
+lib/spring-aspects-jar-4.0.8.RELEASE.jar
+lib/spring-beans-4.0.8.RELEASE.jar
+lib/spring-context-4.0.8.RELEASE.jar
+lib/spring-context-support-4.0.8.RELEASE.jar
+lib/spring-context-support-jar-4.0.8.RELEASE.jar
+lib/spring-core-4.0.8.RELEASE.jar
+lib/spring-expression-4.0.8.RELEASE.jar
+lib/spring-jdbc-jar-4.0.8.RELEASE.jar
+lib/spring-orm-jar-4.0.8.RELEASE.jar
+lib/spring-tx-jar-4.0.8.RELEASE.jar
+lib/spring-web-4.0.8.RELEASE.jar
+lib/spring-webmvc-jar-4.0.8.RELEASE.jar
+lib/xercesImpl-2.9.1.jar
+
+plugins/tomcat-embed-core.jar
+plugins/tomcat-embed-jasper.jar
+plugins/tomcatplugin-1.7.jar
+
+======================================================================================================================
+
+   
+APACHE OPENMEETINGS SUBCOMPONENTS:
+
+Apache OpenMeetings includes a number of subcomponents with separate copyright notices
+and license terms. Your use of these subcomponents is subject to the terms and
+conditions of the following licenses.   
+   
+======================================================================================================================
+
+For GlassFish components
+
+activation-jar-1.1.jar
+jsr311-api-jar-1.1.1.jar
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+   
+======================================================================================================================
+
+For SLF4J:
+
+webapps/openmeetings/screensharing/jcl-over-slf4j-1.7.9.jar
+webapps/openmeetings/screensharing/slf4j-api-1.7.9.jar
+lib/jcl-over-slf4j-1.7.9.jar
+lib/jul-to-slf4j-1.7.9.jar
+lib/log4j-over-slf4j-1.7.9.jar
+lib/slf4j-api-1.7.9.jar
+
+Copyright (c) 2004-2008 QOS.ch
+ All rights reserved.
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ 
+ ======================================================================================================================
+ 
+ For backport-util-concurrent-jar-3.1.jar
+ 
+ This software is released to the public domain, in the spirit of the original code written by Doug Lea. 
+ The code can be used for any purpose, modified, and redistributed without acknowledgment. 
+ No warranty is provided, either express or implied. 
+  
+ ======================================================================================================================
+ 
+plugins/websocket-1.1.jar
+jaxb-api-jar-2.2.6.jar
+jaxb-impl-jar-2.2.6.jar
+jaxb-xjc-jar-2.2.6.jar
+jaxws-tools-jar-2.2.6.jar
+
+ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1
+
+1. Definitions.
+
+     1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+     1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+     1.4. "Executable" means the Covered Software in any form other than Source Code.
+
+     1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License.
+
+     1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+     1.7. "License" means this document.
+
+     1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means the Source Code and Executable form of any of the following:
+
+     A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+     B. Any new file that contains any part of the Original Software or previous Modification; or
+
+     C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+     1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.
+
+     1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+     1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+     1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+     2.1. The Initial Developer Grant.
+
+     Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+     (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+
+     (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+
+     (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+
+     (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
+
+     2.2. Contributor Grant.
+
+     Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+     (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+     (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+
+     (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+
+     (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Availability of Source Code.
+
+     Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+     3.2. Modifications.
+
+     The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+     3.3. Required Notices.
+
+     You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+     3.4. Application of Additional Terms.
+
+     You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+     3.5. Distribution of Executable Versions.
+
+     You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+     3.6. Larger Works.
+
+     You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+     4.1. New Versions.
+
+     Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+     4.2. Effect of New Versions.
+
+     You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+
+     4.3. Modified Versions.
+
+     When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+     COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+     6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+     6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+     6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+     6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+     The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+----------
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+
+
+
+
+The GNU General Public License (GPL) Version 2, June 1991
+
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+   a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+   b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+   c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+   a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+   b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+   c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+   One line to give the program's name and a brief idea of what it does.
+
+   Copyright (C)
+
+   This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+   Gnomovision version 69, Copyright (C) year name of author
+   Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+
+   Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+   signature of Ty Coon, 1 April 1989
+   Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
+
+Certain source files distributed by Oracle are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words "Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code."
+
+Linking this library statically or dynamically with other modules is making a combined work based on this library.  Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
+
+As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.  An independent module is a module which is not derived from or based on this library.  If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.  If you do not wish to do so, delete this exception statement from your version.
+ 
+======================================================================================================================
+
+For 
+webapps/openmeetings/WEB-INF/lib/jaxen-jar-1.1.4.jar
+
+ $Id: LICENSE.txt,v 1.5 2006/02/05 21:49:04 elharo Exp $
+
+ Copyright 2003-2006 The Werken Company. All Rights Reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+  * Neither the name of the Jaxen Project nor the names of its
+    contributors may be used to endorse or promote products derived 
+    from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================================================================
+
+For mail-jar-1.4.7.jar
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+   1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications.
+
+   1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+   1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+   1.4. Executable. means the Covered Software in any form other than Source Code.
+
+   1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License.
+
+   1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+   1.7. License. means this document.
+
+   1.8. Licensable. means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+   1.9. Modifications. means the Source Code and Executable form of any of the following:
+
+        A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+        B. Any new file that contains any part of the Original Software or previous Modification; or
+
+        C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+   1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License.
+
+   1.11. Patent Claims. means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+   1.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+   1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, .You. includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, .control. means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+      2.1. The Initial Developer Grant.
+
+      Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+         (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+
+         (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+
+        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+
+        (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
+
+    2.2. Contributor Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+        (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+
+        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+
+        (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+      3.1. Availability of Source Code.
+      Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+      3.2. Modifications.
+      The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+      3.3. Required Notices.
+      You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+      3.4. Application of Additional Terms.
+      You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+      3.5. Distribution of Executable Versions.
+      You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+      3.6. Larger Works.
+      You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+      4.1. New Versions.
+      Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+      4.2. Effect of New Versions.
+      You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+
+      4.3. Modified Versions.
+      When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+   COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+      6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+      6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+      6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+   UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+   The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and .commercial computer software documentation. as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+   This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys. fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+   As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+   NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+
+   The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+   
+======================================================================================================================
+
+For wsdl4j-jar-1.6.2.jar
+
+Common Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+    b) in the case of each subsequent Contributor:
+
+    i) changes to the Program, and
+
+    ii) additions to the Program;
+
+    where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. 
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+    a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+    b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. 
+
+    c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+    d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+    i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; 
+
+    ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; 
+
+    iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+    iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. 
+
+When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and 
+
+    b) a copy of this Agreement must be included with each copy of the Program. 
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+ 
+======================================================================================================================
+
+For lib/jython-standalone-2.5.3.jar
+
+The Jython License
+A. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING JYTHON
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Jython") in source or binary form and its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Jython alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2007 Python Software Foundation; All Rights Reserved" are retained in Jython alone or in any derivative version prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on or incorporates Jython or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Jython.
+
+4. PSF is making Jython available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF JYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF JYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING JYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Jython, Licensee agrees to be bound by the terms and conditions of this License Agreement.
+Jython 2.0, 2.1 License
+
+Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Jython Developers All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+        Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+        Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+        Neither the name of the Jython Developers nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================================================================
+
+ For Bouncy Castle:
+ 
+ lib/bcprov-jdk15on-1.51.jar
+ webapps/openmeetings/screensharing/bcprov-jdk15on-1.51.jar
+
+ Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
+ persons to whom the Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+ Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ 
+======================================================================================================================
+
+For XPP3: xpp3-jar-1.1.4c.jar
+
+Indiana University Extreme! Lab Software License
+
+Version 1.1.1
+
+Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any,
+   must include the following acknowledgment:
+
+  "This product includes software developed by the Indiana University
+  Extreme! Lab (http://www.extreme.indiana.edu/)."
+
+Alternately, this acknowledgment may appear in the software itself,
+if and wherever such third-party acknowledgments normally appear.
+
+4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab"
+must not be used to endorse or promote products derived from this
+software without prior written permission. For written permission,
+please contact http://www.extreme.indiana.edu/.
+
+5. Products derived from this software may not use "Indiana Univeristy"
+name nor may "Indiana Univeristy" appear in their name, without prior
+written permission of the Indiana University.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================================================================
+
+For XStream Components: xstream-jar-1.4.2.jar
+
+Copyright (c) 2003-2006, Joe Walnes
+Copyright (c) 2006-2007, XStream Committers
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of
+conditions and the following disclaimer. Redistributions in binary form must reproduce
+the above copyright notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the distribution.
+
+Neither the name of XStream nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+ 
+======================================================================================================================
+
+For Red5 Components:
+
+ RED5 Open Source Flash Server - http://code.google.com/p/red5/
+ 
+Copyright 2006-2012 by respective authors (see below). All rights reserved.
+
+Licensed 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.
+ 
+The Red5 Project (red5@osflash.org)
+Luke Hubbard (luke@codegent.com)
+Dominick Accattato (daccattato@gmail.com)
+Chris Allen (mrchrisallen@gmail.com)
+Joachim Bauch (jojo@struktur.de)
+Mick Herres (mickherres@hotmail.com)
+John Grden (johng@acmewebworks.com)
+Grant Davies (grant@bluetube.com)
+Steven Elliott (steven.s.elliott@gmail.com)
+Jokul Tian (tianxuefeng@gmail.com)
+Steven Gong (steven.gong@gmail.com)
+Paul Gregoire (mondain@gmail.com)
+Michael Klishin (michael.s.klishin@gmail.com)
+Thijs Triemstra (info@collab.nl)
+Dan Rossi (electroteque@gmail.com)
+Anton Lebedevich (mabrek@gmail.com)
+Art Clarke (aclarke@xuggle.com)
+
+
+======================================================================================================================
+
+For JDOM
+ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions, and the disclaimer that follows
+    these conditions in the documentation and/or other materials
+    provided with the distribution.
+
+ 3. The name "JDOM" must not be used to endorse or promote products
+    derived from this software without prior written permission.  For
+    written permission, please contact <request_AT_jdom_DOT_org>.
+
+ 4. Products derived from this software may not be called "JDOM", nor
+    may "JDOM" appear in their name, without prior written permission
+    from the JDOM Project Management <request_AT_jdom_DOT_org>.
+
+ In addition, we request (but do not require) that you include in the
+ end-user documentation provided with the redistribution and/or in the
+ software itself an acknowledgement equivalent to the following:
+     "This product includes software developed by the
+      JDOM Project (http://www.jdom.org/)."
+ Alternatively, the acknowledgment may be graphical using the logos
+ available at http://www.jdom.org/images/logos.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED.  IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many
+ individuals on behalf of the JDOM Project and was originally
+ created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
+ Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
+ on the JDOM Project, please see <http://www.jdom.org/>.
+ 
+======================================================================================================================
+The following components are BSD Licensed 
+======================================================================================================================
+
+For: dom4j-jar-1.6.1.jar
+
+    Containing Project URL: http://sourceforge.net/projects/dom4j/
+    
+Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions of source code must retain copyright
+   statements and notices.  Redistributions must also contain a
+   copy of this document.
+ 
+2. Redistributions in binary form must reproduce the
+   above copyright notice, this list of conditions and the
+   following disclaimer in the documentation and/or other
+   materials provided with the distribution.
+ 
+3. The name "DOM4J" must not be used to endorse or promote
+   products derived from this Software without prior written
+   permission of MetaStuff, Ltd.  For written permission,
+   please contact dom4j-info@metastuff.com.
+ 
+4. Products derived from this Software may not be called "DOM4J"
+   nor may "DOM4J" appear in their names without prior written
+   permission of MetaStuff, Ltd. DOM4J is a registered
+   trademark of MetaStuff, Ltd.
+ 
+5. Due credit should be given to the DOM4J Project - 
+   http://www.dom4j.org
+ 
+THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+postgresql-jar-9.4-1200-jdbc41.jar
+	Containing Project URL: http://jdbc.postgresql.org
+	
+	The PostgreSQL JDBC driver is distributed under the BSD license, same as the server. The simplest explanation of the licensing terms is that you can do whatever you want with the product and source code as long as you don't claim you wrote it or sue us. You should give it a read though, it's only half a page.
+
+Copyright (c) 1997-2010, PostgreSQL Global Development Group
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+3. Neither the name of the PostgreSQL Global Development Group nor the names
+   of its contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================================================================
+
+SERP License
+
+File: serp-jar-1.14.1.jar
+
+Copyright (c) 2002-2007, A. Abram White
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of 'serp' nor the names of its contributors may
+  be used to endorse or promote products derived from this software without 
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================================================================
+ iCal4j - License
+ 
+webapps/openmeetings/WEB-INF/lib/ical4j-jar-1.0.5.jar
+ 
+======================================================================================================================
+
+Copyright (c) 2012, Ben Fortuna
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+	o Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+	o Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+	o Neither the name of Ben Fortuna nor the names of any other contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+======================================================================================================================
+
+
+For the components:
+
+webapps/openmeetings/screensharing/logback-access-1.1.2.jar
+webapps/openmeetings/screensharing/logback-classic-1.1.2.jar
+webapps/openmeetings/screensharing/logback-core-1.1.2.jar
+lib/logback-access-1.1.2.jar
+lib/logback-classic-1.1.2.jar
+lib/logback-core-1.1.2.jar
+lib/jruby-1.6.8.jar
+plugins/ecj-4.4.jar
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
+
+======================================================================================================================
+
+For components:
+
+coin-slider-styles.css
+colorbox.css
+jquery.ui.menubar.js
+jquery.ui.menubar.css
+
+coin-slider.min.js	
+jquery.colorbox.js
+jquery-1.11.0.min.js	
+jquery-ui-1.10.4.custom.min.js
+jquery-ui-1.10.4.custom.css
+
+border.png
+controls.png
+loading.gif
+loading_background.png
+overlay.png
+animated-overlay.gif
+ui-bg_flat_0_000088_40x100.png
+ui-bg_flat_0_e6b900_40x100.png
+ui-bg_flat_100_eeeeee_40x100.png
+ui-bg_flat_20_000088_40x100.png
+ui-bg_flat_22_1484e6_40x100.png
+ui-bg_flat_25_c5ddfc_40x100.png
+ui-bg_flat_26_2293f7_40x100.png
+ui-bg_highlight-soft_100_f9f9f9_1x100.png
+ui-icons_0a82eb_256x240.png
+ui-icons_0b54d5_256x240.png
+ui-icons_5fa5e3_256x240.png
+ui-icons_ffffff_256x240.png
+
+JQuery: http://jquery.com/
+JQuery UI: http://code.google.com/p/jquery-ui/
+Colorbox Plugin: http://www.jacklmoore.com/colorbox
+Coinslider Plugin: https://code.google.com/p/coin-slider/
+
+https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt
+
+Copyright (c) 2012 jQuery Foundation and other contributors,
+http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..5f2e271
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,11 @@
+Apache OpenMeetings
+Copyright 2011-2014 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This product includes icons from FamFamFam Icon Set Silk.
+http://www.famfamfam.com/lab/icons/silk/
+
+This product includes icons from Yusuke Kamiyamane.
+http://p.yusukekamiyamane.com/
diff --git a/README b/README
new file mode 100644
index 0000000..03c8325
--- /dev/null
+++ b/README
@@ -0,0 +1,201 @@
+Apache OpenMeetings - README
+Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
+--------------------------------------------------------------------------------
+
+About
+=====
+Apache Openmeetings provides video conferencing, instant messaging, white board,
+collaborative document editing and other groupware tools using API functions of 
+the Red5 Streaming Server for Remoting and Streaming. 
+
+Release Notes 3.0.4
+=============
+see CHANGELOG file for detailed log
+
+Service release 4 for 3.0.0 contains following improvements and bug fixes:
+
+Screen-Sharing:
+* web application is now signed with trusted certificate (no warnings)
+* RTMPT/RTMPS works as expected
+* audio/video synchronization is improved
+
+Recordings:
+* It is now possible to rename the recording
+* Recordings stability is improved
+
+RTL:
+* Dashboard, Calendar, Settings and Admin are more RTL friendly
+
+Calendar:
+* Time zone support is greatly improved
+
+
+Release Notes 3.0.3
+=============
+see CHANGELOG file for detailed log
+
+Service release 3 for 3.0.0, no new features were added, please NOTE Java7 is required on both client and server from now on.
+
+
+Release Notes 3.0.2
+=============
+see CHANGELOG file for detailed log
+
+Service release 2 for 3.0.0, no new features were added
+
+
+Release Notes 3.0.1
+=============
+see CHANGELOG file for detailed log
+
+Service release 1 for 3.0.0, no new features were added
+
+
+Release Notes 3.0
+=============
+see CHANGELOG file for detailed log
+
+Refactoring main interface (admin, dashboard, etc.) to use HTML5 instead of Flash. 
+All the screens but the room are on HTML5. The room is still on Flash.
+
+The release also includes some bug fixes, timezone refactoring and a lot of 
+localization improvements.
+
+_Known Issues And Limitations_
+* RTMPS seems to be very unstable (will try to fix it in 3.1)
+* Recent version of Adobe Flash still causes crash (please downgrade to 11.5 version)
+https://bugzilla.mozilla.org/show_bug.cgi?id=885188
+* Multi-tabbing (no other flash application should be running in
+different browsers or tabs)
+* Chat clean up and log copying is not implemented
+* Moving recordings between folders does not work
+
+Please not that this is a first HTML5 release, so some minor UI issues are possible
+
+
+Release Notes 2.2.0
+=============
+see CHANGELOG file for detailed log
+
+Bug fix release for 2.1.1
+This release includes lots of UI and command line fixes, as well as some improvements:
+MSSQL DB support, Faster screen sharing, improved SOAP/REST call and LDAP support.
+
+_Known Issues_
+RTMPS seems to be very unstable (will try to fix it in 3.0)
+
+
+Release Notes 2.1.1
+=============
+see CHANGELOG file for detailed log
+
+Bug fix release for 2.1.0.
+This release includes some improvements in user interface, fixes for the 
+interview and video only rooms, and localization issues. 
+Configurable hot key for Mute/Unmute have been added.
+
+_Known Issues_
+Video/audio SIP integration is not a part of this Apache release.
+Check free red5sip product for this integration.
+
+Release passed reliability testing (great job, Vasily Degtyarev!)
+For 1 hour long conferences the following does not work with this release:
+* Recordigs (expected to work in 3.0)
+https://issues.apache.org/jira/browse/OPENMEETINGS-669
+* Recent version with Adobe Flash (please downgrade to 11.5 version)
+https://bugzilla.mozilla.org/show_bug.cgi?id=885188
+* Multi-tabbing (no other flash application should be running in
+different browsers or tabs)
+
+Release Notes 2.1
+=============
+see CHANGELOG file for detailed log
+
+_Integration with Asterisk_
+SIP/VOIP integration with Asterisk was refactored. 
+Confbridge application is now used instead of Meetme for the conferences.
+Sound quality and SIP transport stability was significantly improved.
+Basic support for video is added (is unstable and in beta version stage now).
+See also: http://openmeetings.apache.org/red5sip-integration_2.1.html
+
+_Improving the sound and video quality_
+All the audio/video related components now use SWF11 for broadcasting and 
+receiving audio and video signals. 
+Echo cancellation can be enabled in the config. 
+H264 video codec is now used instead of H263 to enable SIP video support.
+
+_Private and moderated chat_
+Ability to send private chat messages in the room is added as well as the chat 
+moderation funmctionality.
+
+_SMS sending module_
+Possibility to send SMS message as a meeting reminder is added.
+See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/SMS+Sending+Module
+
+_Network testing tool/script_
+Network testing tool is implemented and its link is added to the login page.
+See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/Connection+testing+tool
+
+_Improvements in the mail sending process_
+Now e-mails are re-send again in case of unsuccessfull result at the first 
+attempt or OpenMeetings re-start before the sending. 
+SMTP setting updates now takes effect just after they saving whereas previously 
+they started to work after the OpenMeetings re-start only.
+
+_Calendar_
+Messages about the meeting updates are sent only when substantial changes were made. 
+Multiple external attendees can be added as one operation, it's now possible to 
+specify user name for external guests (user will appear with this name in the user 
+list in the room). 
+
+_Room Interface_
+Possibility to get invitation link without sending an e-mail was added. 
+Confirmation dialog for exclusive audio no longer appears.
+Hot key is added to be able to "rearrange" video windows in the room. 
+Volume slider on the video pod toolbar was added.
+
+_Recordings and screen sharing improvements_
+Some improvements for the screen sharing and recordings quality and stability 
+were made.
+
+_Cluster capabilities_
+In the beta stage: OpenMeetings  can be configured in the cluster environment and 
+is ready for the testing, but development has not been fnished yet. 
+See also: http://openmeetings.apache.org/Clustering.html,
+https://cwiki.apache.org/confluence/display/OPENMEETINGS/Cluster+Master-Slave+overview
+
+_Admin/Calendar HTML5 UI_
+Additional HTML5 Wicket based UI (fully customizable with CSS) is added for 
+static screens as a proof of the concept.
+
+Getting Started
+===============
+Please visit the project website for the latest information:
+    http://openmeetings.apache.org/
+    
+Documentation for Installation and Upgrade:
+    http://openmeetings.apache.org/installation.html
+    http://openmeetings.apache.org/Upgrade.html
+
+Along with the developer mailing list archive:
+    http://openmeetings.apache.org/mail-lists.html
+    
+    
+System Requirements
+===================
+You need a platform that supports Sun Java SE 6.
+
+
+Building and running
+====================
+To build from source code:
+
+  - Requirements:
+    Sources compilation require Sun Java SE 6.
+    The project is built with Apache ANT 1.8.6 or later.
+  
+  - To build the OpenMeetings project run ant in the root directory:
+     ant
+    
+For a detailed documentation on how to build from source and options see:
+    http://openmeetings.apache.org/BuildInstructions.html
diff --git a/WebContent/crossdomain.xml b/WebContent/crossdomain.xml
new file mode 100644
index 0000000..f844f20
--- /dev/null
+++ b/WebContent/crossdomain.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+  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.
+  
+-->
+<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="crossdomain.xsd">
+	<site-control permitted-cross-domain-policies="all"/>
+	<allow-access-from domain="localhost" to-ports="20-65535"/>
+	<allow-access-from domain="*.local" to-ports="20-65535"/>
+</cross-domain-policy>
diff --git a/WebContent/crossdomain.xsd b/WebContent/crossdomain.xsd
new file mode 100644
index 0000000..7d7351d
--- /dev/null
+++ b/WebContent/crossdomain.xsd
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="cross-domain-policy">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="site-control"/>
+        <xs:element maxOccurs="unbounded" ref="allow-access-from"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="site-control">
+    <xs:complexType>
+      <xs:attribute name="permitted-cross-domain-policies" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="allow-access-from">
+    <xs:complexType>
+      <xs:attribute name="domain" use="required"/>
+      <xs:attribute name="to-ports" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/WebContent/jrebel/red5-debug.bat b/WebContent/jrebel/red5-debug.bat
new file mode 100644
index 0000000..9087e9e
--- /dev/null
+++ b/WebContent/jrebel/red5-debug.bat
@@ -0,0 +1,19 @@
+REM #############################################
+REM Licensed under the Apache License, Version 2.0 (the "License");
+REM you may not use this file except in compliance with the License.
+REM You may obtain a copy of the License at
+REM
+REM     http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+REM #############################################
+@echo off
+
+if NOT DEFINED RED5_HOME set RED5_HOME=%~dp0
+
+set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -javaagent:@jrebel.home@\jrebel.jar -Drebel.remoting_plugin=true -Dproject.root=@project.home@
+%RED5_HOME%\red5.bat
diff --git a/WebContent/jrebel/red5-debug.sh b/WebContent/jrebel/red5-debug.sh
new file mode 100644
index 0000000..b4065b4
--- /dev/null
+++ b/WebContent/jrebel/red5-debug.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# #############################################
+# Licensed 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.
+# #############################################
+
+if [ -z "$RED5_HOME" ]; then export RED5_HOME=.; fi
+
+# Debug options
+export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n $JAVA_OPTS -javaagent:@jrebel.home@/jrebel.jar -Drebel.remoting_plugin=true -Dproject.root=@project.home@"
+
+# Start Red5
+exec $RED5_HOME/red5.sh
diff --git a/WebContent/lzx.xsd b/WebContent/lzx.xsd
new file mode 100644
index 0000000..3146f4f
--- /dev/null
+++ b/WebContent/lzx.xsd
@@ -0,0 +1,14742 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
+  targetNamespace="http://localhost/openlaszlo/lzx" 
+  xmlns:lzx="http://localhost/openlaszlo/lzx">
+  <xs:simpleType name="booleanLiteral">
+    <xs:restriction base="xs:boolean"/>
+  </xs:simpleType>
+  <xs:simpleType name="colorLiteral">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="numberLiteral">
+    <xs:restriction base="xs:double"/>
+  </xs:simpleType>
+  <xs:simpleType name="sizeLiteral">
+    <xs:restriction base="xs:double">
+      <xs:minInclusive value="0"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="inheritableBooleanLiteral">
+    <xs:union memberTypes="lzx:booleanLiteral">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="inherit"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+  <xs:simpleType name="constraint">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="$(style|path|immediately|once|always)?\{.*\}"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="boolean">
+    <xs:union memberTypes="lzx:booleanLiteral lzx:constraint">
+    <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="null"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+  <xs:simpleType name="booleanOrNull">
+    <xs:union memberTypes="lzx:boolean">
+      <xs:simpleType>
+        <xs:restriction base="xs:token">
+          <xs:enumeration value="null"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+  <xs:simpleType name="color">
+    <xs:union memberTypes="lzx:colorLiteral lzx:constraint"/>
+  </xs:simpleType>
+  <xs:simpleType name="expression">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="reference">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="number">
+    <xs:union memberTypes="lzx:numberLiteral lzx:constraint xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="token">
+    <xs:union memberTypes="xs:token"/>
+  </xs:simpleType>
+  <xs:simpleType name="size">
+    <xs:union memberTypes="lzx:sizeLiteral lzx:constraint"/>
+  </xs:simpleType>
+  <xs:simpleType name="numberExpression">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="sizeExpression">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="css">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+  <xs:simpleType name="opacity">
+    <xs:union memberTypes="lzx:constraint">
+      <xs:simpleType>
+        <xs:restriction base="xs:double">
+          <xs:minInclusive value="0.0"/>
+          <xs:maxInclusive value="1.0"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+  <xs:simpleType name="percentage">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="(\d+(.\d?)|.\d+)%"/>
+    </xs:restriction>
+  </xs:simpleType>
+<xs:element name="passthrough" type="lzx:passthrough" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Provides a way to import SWF10 declarations. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="passthrough" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="when" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Provides a way to import SWF10 declarations. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="styledtext" type="lzx:styledtext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A text subclass which allows use of text styles
+        @START_CODE
+            &lt;styledtext text="hello" style="mytextstyle" /&gt;
+        @END_CODE
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="styledtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="style" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ should be an object of type "textstyle" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menubutton" type="lzx:menubutton" >
+</xs:element>
+  <xs:complexType name="menubutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzeditcombobox" type="lzx:lzeditcombobox" >
+</xs:element>
+  <xs:complexType name="lzeditcombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:lzcombobox">
+      <xs:attribute name="y_offset" type="xs:string" default="2" >
+</xs:attribute>
+      <xs:attribute name="x_offset" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="width_offset" type="xs:string" default="-9" >
+</xs:attribute>
+      <xs:attribute name="height_offset" type="xs:string" default="-3" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vsliderthumb" type="lzx:vsliderthumb" >
+</xs:element>
+  <xs:complexType name="vsliderthumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="showvalue" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="drag_min" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="drag_max" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="closebox" type="lzx:closebox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the closebox class has its own resource </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="closebox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myday" type="lzx:myday" >
+</xs:element>
+  <xs:complexType name="myday" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepickerday">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="radiogroup" type="lzx:radiogroup" >
+</xs:element>
+  <xs:complexType name="radiogroup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselist">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="Test" type="lzx:Test" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+  Test is the abstract interface class for all LZUnit tests.
+
+  It accumulates the results of the test and defines the various
+  assert methods that can be used to implement each test.
+
+  &lt;xref linkend="lz.TestCase"/&gt; and &lt;xref linkend="lz.TestResult"/&gt; extend this class to provide
+  functionality.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="Test" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:DebugObject">
+      <xs:attribute name="formatter" type="xs:string" default="new lz.text()" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseradiogroup" type="lzx:baseradiogroup" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class baseradiogroup: a class representing the selected radiobutton,
+          that can have many radiobuttons associated with it </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseradiogroup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="event" type="lzx:event" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The sender in Laszlo's point-to-point event system.
+Events underly most of the functionality in OpenLaszlo applications. Unlike events in similar systems, OpenLaszlo's events are point-to-point, meaning that there is no general broadcast mechanism for events, and events do not trickle up or down the instance hierarchy. Instead, objects called &lt;handler&gt;s use LzDelegate.register() to register to receive events.
+
+An event is implicitly declared for every attribute of a class or instance and sent when that attribute is changed. So, for instance, if a class has an attribute foo, you can receive events when foo changes by registering for the onfoo event.
+
+Events are sent with a single argument, which usually conveys information about the property that changed. The default behavior of the LzEventable.setAttribute() method is to set the named property and send the event called "on" + property. This is general mechanism that updates constraints in a OpenLaszlo programs. For instance, when a view changes its x position, it sends the event onx with the new value for its x property.
+
+Example:
+&lt;handler name="onavalue" reference="eventSender" args="v"&gt;
+  this.setAttribute('x' , v);
+&lt;/handler&gt; 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="event" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="name" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the event </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="inittimer" type="lzx:inittimer" >
+</xs:element>
+  <xs:complexType name="inittimer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabscontent" type="lzx:tabscontent" >
+</xs:element>
+  <xs:complexType name="tabscontent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabscontent">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseformitem" type="lzx:baseformitem" >
+</xs:element>
+  <xs:complexType name="baseformitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevaluecomponent">
+      <xs:attribute name="submitname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name used when submitting the data of the form item.
+              If no submitname is given before oninit, the 'name' attribute is used.
+              Unlike the name attribute, submitname may be changed at runtime. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="submit" type="lzx:boolean" default="${enabled}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If submit is true, then the value of this element will be submitted
+              with the form.  By default, submit is true when enabled.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rollbackvalue" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Rollback value for the baseformitem. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onvalue" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent whenever checkbox value changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onchanged" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when baseformitem is changed. Only sent once when true
+              or once when false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ignoreform" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the component will not inform its parent form
+             that it has changed. Useful in conjunction with submit=false </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="changed" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Boolean to determine whether the baseformitem was changed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="emailvalidator" type="lzx:emailvalidator" >
+</xs:element>
+  <xs:complexType name="emailvalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevalidator">
+      <xs:attribute name="toomanyatmarkErrorstring" type="xs:string" default="Too many @ characters in your email address." >
+</xs:attribute>
+      <xs:attribute name="missingperiodErrorstring" type="xs:string" default="The domain in your email address is missing a period." >
+</xs:attribute>
+      <xs:attribute name="missingatmarkErrorstring" type="xs:string" default="Missing the @ character in your email address." >
+</xs:attribute>
+      <xs:attribute name="incorrectlydomainErrorstring" type="xs:string" default="The domain in your email address is incorrectly formatted." >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datapoints" type="lzx:datapoints" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords private
+          datapoints for the chart </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datapoints" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="valuepoints" type="lzx:valuepoints" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+       Represents a value point in the chart
+       @access public
+       </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valuepoints" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tip" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the tooltip value will be display when the mouse over the line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the label will be display next to the line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datay" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y point will be draw </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datax" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the x point will be draw </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="stylishbutton" type="lzx:stylishbutton" >
+</xs:element>
+  <xs:complexType name="stylishbutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="tint" type="lzx:color" default="0xD9DCF5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Control the look of the button. These attributes can and should
+              be controlled with css. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="texty" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ y position of text, for fine tuning </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showrightedge" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="showrightborder" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ whether to show highlight on left side of button </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showleftedge" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="showleftborder" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ whether to show shadow on right side of button </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rightresource" type="xs:string" default="stylishbutton_right_rsc" >
+</xs:attribute>
+      <xs:attribute name="middleresource" type="xs:string" default="stylishbutton_middle_rsc" >
+</xs:attribute>
+      <xs:attribute name="leftresource" type="xs:string" default="stylishbutton_left_rsc" >
+</xs:attribute>
+      <xs:attribute name="icony" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ y position of icon, for fine tuning.
+            if not specified, center the icon vertically. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon resource name prefix </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontcolor" type="lzx:color" default="0x373B56" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fisheye" type="lzx:fisheye" >
+</xs:element>
+  <xs:complexType name="fisheye" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="start_size" type="xs:string" default="24" >
+</xs:attribute>
+      <xs:attribute name="halo_size" type="xs:string" default="20" >
+</xs:attribute>
+      <xs:attribute name="expanded_size" type="xs:string" default="100" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_scrubstate" type="lzx:_scrubstate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+   enclosing view must have the following attributes:
+   stream  the stream to control, assume it is paused
+   min     min 'x' value
+   max     max 'x' value
+
+   @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_scrubstate" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="x" type="xs:string" default="this.__scrubstate_getnewpos(                 this.immediateparent.getMouse( 'x' ) + this.__scrubstate_xdoffset)" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="microphone" type="lzx:microphone" >
+</xs:element>
+  <xs:complexType name="microphone" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:mediadevice">
+      <xs:attribute name="stream" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Mediastream to associate with the microphone, for audio recording. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="silencetimeout" type="lzx:number" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Silence timeout in ms, the amount of silent time signifying that 
+              silence has actually begun.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="silencelevel" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Silence level, 0-100, the amount of sound required to activate 
+              the microphone.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rate" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Rate in khz the microphone is using to capture sound, either 5, 8, 11, 22, or 44.
+              @keywords final  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="level" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Audio level, 0-100, the amount of sound detected by this microphone.
+              Reset to 0 when there is no audio (no activity or not allowed).
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="gain" type="lzx:number" default="50" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The amount the microphone boosts the signal.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="framesperpacket" type="lzx:number" default="6" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number of Speex speech frames transmitted in a packet.
+              @keywords final  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="encodequality" type="lzx:number" default="6" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The quality of encoded speech quality when using the Speex codec.
+              Possible values are from 0 to 10.
+              @keywords final  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="echosuppression" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the microphone will attempt to use echo suppression.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="codec" type="xs:string" default="NellyMoser" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The codec to use, either 'NellyMoser' or 'Speex'.
+              @keywords final  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="image" type="lzx:image" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ image represents an image that can be loaded at runtime, either by specifying a URL directly or by binding to data</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="image" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="src" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The URL to load the image from.  May be set directly on this attribute or indirectly by specifying a datapath for this tag. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="prefix" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an optional prefix URL to load from. If specified, the url will be appended to this prefix.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onsrc" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="lastloaded" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The last URL loaded by this image tag.  Used to prevent the same URL from loading twice.  
+              @keywords readonly</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="forcereload" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the same URL will be reloaded.  If false, the same URL will not load multiple times.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tooltipManager" type="lzx:tooltipManager" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Tooltip Manager
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="tooltipManager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tooltip_obj" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onMouseOverDelegateArray" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onMouseOutDelegateArray" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="messages" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Tooltip Manager
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="messageMap" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="delay" type="lzx:number" default="1000" >
+</xs:attribute>
+      <xs:attribute name="component_identifier" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="databar" type="lzx:databar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+    Render a bar or column of data in the chart</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="databar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="totalsets" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Total number of bar sets. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tooltip" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, will display additional information about data
+            in a popup when the cursor is placed over a bar.
+            (Tooltip to be developed in a future version.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="siblingbars" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number of sibling bars. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawaxis" type="xs:string" default="x" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The chart's direction.  (Set here as well for easier reference.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataresource" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The image to be loaded over the bar, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bvalue" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Numerical value of bar. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barspace" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The space between bars. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barset" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This bar's group's set number. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barnumber" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This bar's number in its series. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="animationinit" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Animation style for when bars appear. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basevalidator" type="lzx:basevalidator" >
+</xs:element>
+  <xs:complexType name="basevalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="trim" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="requiredErrorstring" type="xs:string" default="this field is required." >
+</xs:attribute>
+      <xs:attribute name="required" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isformvalidator" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="iserror" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="innercompornent" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="errorstring" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="autocompletecombobox" type="lzx:autocompletecombobox" >
+</xs:element>
+  <xs:complexType name="autocompletecombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="defaulttext" type="xs:string" default="Type Here" >
+</xs:attribute>
+      <xs:attribute name="contentpath" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="actuallyTyped" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labeledinputtext" type="lzx:labeledinputtext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        A horizontal container for a right-aligned label and text field.
+        usage:
+            @START_CODE
+                &lt;labeledinputtext label="Title" datapath="details/@title" fieldwidth="50"/&gt;
+            @END_CODE
+
+        datapath should be set to resolve to a text value
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="labeledinputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textcolor" type="xs:string" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of text </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiline" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ set to true for multiline </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxlength" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Maximum length for the editable text field. Default is null
+              (no limit) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelwidth" type="lzx:number" default="68" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ column for right-aligned label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelsize" type="xs:string" default="${detailslabel_style.fontsize}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ label font size </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelfont" type="xs:string" default="${detailslabel_style.font}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ label font </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelcolor" type="lzx:number" default="${detailslabel_style.textcolor}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the right-aligned label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontname" type="xs:string" default="Verdana, Arial, sans" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ font face </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fieldwidth" type="lzx:number" default="128" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ width of editable text field </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fieldheight" type="lzx:number" default="18" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ set this to larger if multiline is true </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dragstate" type="lzx:dragstate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ this state provides standard 'drag' functionality to its immediateparent when applied </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="dragstate" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="drag_min_y" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the minimum value for the y attribute. Default : null, no minimum </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drag_min_x" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the minimum value for the x attribute. Default : null, no minimum </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drag_max_y" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the maximum value for the y attribute. Default : null, no maximum </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drag_max_x" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the maximum value for the x attribute. Default : null, no maximum </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drag_axis" type="xs:string" default="both" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 'x', 'y' or 'both' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetab" type="lzx:basetab" >
+</xs:element>
+  <xs:complexType name="basetab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+      <xs:attribute name="tabpane" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The tabpane associated with this tab.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_internalinputtext" type="lzx:_internalinputtext" >
+</xs:element>
+  <xs:complexType name="_internalinputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:inputtext">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videolibraryicon" type="lzx:videolibraryicon" >
+</xs:element>
+  <xs:complexType name="videolibraryicon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="over" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="maxHeight" type="xs:string" default="48" >
+</xs:attribute>
+      <xs:attribute name="icon" type="xs:string" default="video_no_icon_rsc" >
+</xs:attribute>
+      <xs:attribute name="aspectRatio" type="xs:string" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="TextTestCase" type="lzx:TextTestCase" >
+</xs:element>
+  <xs:complexType name="TextTestCase" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:TestCase">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="regionstyle" type="lzx:regionstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for a region
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="regionstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="image" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ image path </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="gradient" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 'none', 'linear', 'radial' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="color" type="lzx:color" default="0xFF0000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ RGB color on the axis line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="view" type="lzx:view" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The &lt;view&gt; is the most basic viewable element in an OpenLaszlo application. Anything that is displayed on the canvas is a view or extends the view class. A view is a rectangle, which can be visible or invisible, and which can contain other views or display "resources" such as images, .swf files, or other supported media. One view controls one displayable resource. The view system is strictly hierarchical; that is, each view has a single parent but can have multiple children.  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="view" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="yscale" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Specifies this vertical scale for this and all child views. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="yoffset" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Specifies a translation point for drawing of this view. If the yoffset is set, then rotation and y position will be calculated by first adding the yoffset.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="y" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The vertical offset of this view's upper left corner from the upper left corner of its container  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xscale" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Specifies this horizontal scale for this and all child views. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xoffset" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Specifies a translation point for drawing of this view. If the xoffset is set, then rotation and x position will be calculated by first adding the xoffset.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="x" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The horizontal offset of this view's upper left corner from the upper left corner of its container.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="with" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="width" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The width of the view. Can be set to either a number, or null, to indicate that the view should be sized to hold its content. If the view is set to stretch its resource, the resource will be resized to the new value. When read, reflects the actual size of the view.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="visible" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A value of true means that this view is shown. A value of false means that this view is hidden. Note that an otherwise clickable view that is not visible will have no click region and will not be clickable.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="visibility" type="xs:string" default="collapse" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A value of "visible" means that this view is shown. A value of "hidden" means that this view is hidden. Setting this attribute to "collapse" means that the runtime will hide this view when: its opacity is zero, it has a datapath that does not match a node, or it is loading its media. In this case, the the value of the 'visible' attribute of the view will reflect the view's current visible state. 
+	One of: hidden|visible|collapse </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="valign" type="xs:string" default="top" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Sets the vertical alignment for the view to the given value. The alignment is based on the height of this view as compared to the height of the view's immediateparent. 
+	One of: 	"top" | "middle" | "bottom" | constraint </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="usegetbounds" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	True if this view requires a call to getBounds() for accurate width and height measurement. This may be necessary when an offset or rotation are applied.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="unstretchedwidth" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If stretches is not set to none, the width that this view would be if it weren't stretched. This attribute can be used to scale a view by a percentage of its original size, or to determine the aspect ratio for a view.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="unstretchedheight" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If stretches is not set to none, the height that this view would be if it weren't stretched. This attribute can be used to scale a view by a percentage of its original size, or to determine the aspect ratio for a view.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="totalframes" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The total number of frames for this view's resource. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tintcolor" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Sets the color offset, based on a hexadecimal color string, e.g. '#ff00ff'. See setColorTransform() for details. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="subviews" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	An array of the subviews that are children of this view. This is initialized to an empty array for views that have no subviews.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stretches" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Setting stretches causes a view to change its coordinate space so that everything it contains (resources and other views) fit exactly into the view's width and/or height. The default for this property is "none". This is used to resize a view's contents by setting its width and/or height. 
+	One of: 	"width" | "height" | "both" | "none" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="source" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The URL from which to load the resource for this view. If this attribute is set, the media for the view is loaded at runtime.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showhandcursor" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Show or hide the hand cursor for this view, if clickable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowdistance" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The distance for the drop shadow, in pixels </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowcolor" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The color for the drop shadow </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowblurradius" type="lzx:number" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The blur radius for the drop shadow, in pixels. A negative value will cause the shadow to be inset. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowangle" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The angle for the drop shadow, in degrees </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rotation" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The rotation value for the view (in degrees). Value may be less than zero or greater than 360.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resourcewidth" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The width of the resource that this view attached </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resourceheight" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The height of the resource that this view attached </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resource" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+A resource that is presented in the background of this view. The value can be either the name of a resource defined with the resource tag, a URL, or a pathname. If the value is a URL, the resource is requested when the view is displayed. If it's a pathname, the file named by the pathname is compiled into the application, and attached to this view.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ratio" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This element is only available in the splash SWF specific </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxyurl" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The url of the proxy server, if the app is running in proxied mode. proxyurl can be null, a URL string, or a function.
+
+    If the value is a string, treat it as a URL to the proxy server.
+    If the value is a function, it should return the URL of the proxy server.
+
+The default proxy policy references the proxyurl of the canvas.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="playing" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, this view is currently playing. Setting to true causes the view to play, false causes playback to stop. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pixellock" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	The view system supports sub-pixel positioning to enable smooth animation. This may be turned off to make the view snap to a pixel boundary by setting pixellock to true.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="opacity" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The opacity of the view's contents. 1.0 is opaque; 0.0 is totally transparent (invisible).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ony" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+event for changes to view's y property </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onx" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+event for changes to view's x property </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onwidth" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+event for changes to view's width property </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onvisible" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the view changes visibility (true/false) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ontouch" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The ontouch event is sent when a touch device receives a multitouch event. The value sent with the event is an array of objects with with two properties: clientX and clientY. Currently supported only in iOS on DHTML. Note that Android Webkit doesn't send multitouch events - see http://www.quirksmode.org/mobile/tableTouch.html </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ontimeout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the request to load media for the view times out </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onstop" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when a view's resource that is capable of playing is stopped. This is only called if stop is called directly; when a resource hits its last frame, the lz.view event onlastframe is called. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onshadowdistance" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when shadowdistance changes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onshadowcolor" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when shadowcolor changes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onshadowblurradius" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when shadowblurradius changes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onshadowangle" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when shadowangle changes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onremovesubview" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Event called when this view removes a subview </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onplaying" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when a view begins playing its resource </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onplay" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when a view begins playing its resource </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onopacity" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when a view changes its opacity </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmouseupoutside" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmouseup event is sent when the pointing device button is released outside the element it went down on. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmouseup" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmouseup event is sent when the pointing device button is released over an element. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousetrackup" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the mouse button is released over a view that is registered to an active track group. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousetrackover" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the mouse is over a view that is registered to an active track group. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousetrackout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the mouse leaves the visible area of a view that previously sent an 'ontrackover' event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmouseover" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmouseover event is sent when the pointing device is moved onto an element. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmouseout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmouseout event is sent when the pointing device is moved so that is is no longer over an element. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousedragout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmousedragout event is sent when the pointing device is moved off the element while the button is down. down. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousedragin" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmousedragin event is sent when the pointing device button has moved off the element and back on again while the button is down. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousedown" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The onmousedown event is sent when the pointing device button is pressed over an element. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onloadratio" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sends a percentage (0-1) reflecting the amount of a media file that's been downloaded. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onload" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Send when the view finishes loading media. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onlastframe" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent when the view sets its frame (resource number) to the last frame. This can be used to find out when a streaming media clip is done playing. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onkeyup" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The onkeyup event is sent when this view has the focus and a key is released. This event is sent with the keycode for the key that went up. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onkeydown" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The onkeydown event is sent when this view has the focus and a key is pressed down. Multiple key down events are sent for a key that is held down. If you want the script executed only once, use onkeyup. This event is sent with the keycode for the key that is down.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onheight" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event for changes to view's height property</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ongesture" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The ongesture event is sent when a touch device receives a gesture event. The value sent with the event is an object with two properties: scale and rotation. Currently supported only in iOS on DHTML. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onframesloadratio" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sends a percentage (0-1) reflecting the number of frames downloaded.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onframe" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent onidle while view is playing its resource</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onfocus" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The onfocus event is sent when an element receives focus either by the pointing device or by tabbing navigation.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onerror" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent when there is an error loading the view's resource. The argument sent with the event is an error string.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ondblclick" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The ondblclick event is sent when the pointing device button is double clicked over an element.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncornerradius" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent when cornerradius changes</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncontext" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent when the drawing context is ready to use, which can take some time in IE DHTML.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclip" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The onclip event is sent when the clip attribute of a view is changed</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclickable" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event for changes to view's clickable property</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclick" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   The onclick event is sent when the pointing device button is clicked over an element.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onblur" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The onblur event is sent when an element loses focus either by the pointing device or by tabbing navigation.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onbackgroundrepeat" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event for changes to view's backgroundrepeat property </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onaddsubview" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Event called when this view adds a subview </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mask" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Reference to closest masked view in the hierarchy at or above this one  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="loadratio" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	For views whose resource is loaded at runtime, ratio of the loaded bytes to the total bytes. This is a number between zero and 1.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="layout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A CSS declaration of property: value pairs of layout attributes, which are used to create a layout that is attached to this view. If there is a class property, it names the class of the layout to be created, otherwise &lt;simplelayout&gt; is used. To remove the previously set layout, use {'class': 'none'} Examples: layout="axis: x", layout="class: constantlayout", layout="axis: y", layout="axis: x; spacing: 5".  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="height" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The height of the view. Can be set to either a number, or null, to indicate that the view should be sized to hold its content. If the view is set to stretch its resource, the resource will be resized to the new value. When read, reflects the actual size of the view.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hassetwidth" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, then this view has an assigned or constrained width, and the view will not be sized to its contents.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hassetheight" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, then this view has an assigned or constrained height, and the view will not be sized to its contents.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hasdirectionallayout" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+If true, sprite will use TLF text framework class that supports bidirectional text layout. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="framesloadratio" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	For views whose resource is loaded at runtime, the ratio of the loaded frames to the total frames. This is a number between zero and 1.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="frame" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If this view has a multi-frame resource, this allows setting which resource frame is displayed. Defaults to the first frame (1). See also the resource attribute. Setting this attribute will change the frame that is being displayed by the resource associated with this view. The first frame of the resource is frame 1. Setting a view's 'donttrackplay' option to true will allow the view's resource to play without updating the value of the view's frame property. This can save CPU usage in cases where the application doesn't need to know what frame the resource is showing while it is playing.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontstyle" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The style to use to render text fields that appear inside of this view. One of "plain", "bold" , "italic" or "bolditalic".  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontsize" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Pixel size to use to render text which appears inside this view. The default is 8.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="font" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The font to use for any &lt;text&gt; or &lt;inputtext&gt; elements that appear inside this view. Like all the font properties (fontstyle and fontsize too) these properties cascade down the view hierarchy until a new value is specified.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focustrap" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, this view "traps" the focus, for example in a window or dialog. See focus manager (lz.Focus) for more details.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focusable" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, this view will receive focus events. See focus manager (lz.Focus) for more details.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fgcolor" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The foreground color of any &lt;text&gt; or &lt;inputtext&gt; elements that appear inside this view. To apply a color transform, see tintcolor. May be set to any valid CSS color specification. When read, will be read as the equivalent numeric value. To retrieve a CSS color specification, use this.presentAttribute('fgcolor', 'color'). Default is 0 (black).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cursor" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The cursor to display when the mouse is over this view. Any resource ID can be used as a cursor, or '' for the default cursor. This attribute can be set for any view with clickable=true.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cornerradius" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The corner radius for the background, e.g. '4' or a list of up to 8 numbers '4 0 0 4 / 2 0 0 2'. Per http://www.w3.org/TR/css3-background/#the-border-radius the 8 values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If you use the '/' notation, the values before the slash are the horizontal radii, and the values after the slash are the vertical radii.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="contextmenu" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The context menu installed on this view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="context" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Contains a reference to the raw drawing context. The oncontext event is sent when the context is ready to use, which can take some time in IE DHTML.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="colortransform" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	color transforms everything contained in the view (except the background) by the transformation dictionary given in o. The dictionary has the following possible keys: o.redMultiplier: multiplier for red component (0 to 1) defaults to 1 o.redOffset: offset for red component (-255 to 255) defaults to 0 o.greenMultiplier: multiplier for green component (0 to 1) defaults to 1 o.greenOffset: offset for green component (-255 to 255) defaults to 0 o.blueMultiplier: multiplier for blue component (0 to 1) defaults to 1 o.blueOffset: offset for blue component (-255 to 255) defaults to 0 o.alphaMultiplier: multiplier for alpha component (0 to 1) defaults to 1 o.alphaOffset: offset for alpha component (-255 to 255) defaults to 0  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="clip" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Clip the view's contents to its size. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="clickregion" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Setting to a vector-based resource changes the clickable hotspot for the mouse. Check capabilities.clickregion before using to avoid debugger warnings.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="clickable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, this view intercepts click events; otherwise they are passed to its container. This defaults to true if the view defines a mouse event handler or a cursor. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="center" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This element is only available in the splash SWF specific </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="capabilities" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+An object containing properties corresponding to the current runtime's capabilities. For example, capabilities.rotation is true in swf and recent versions of Safari and Firefox.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cachebitmap" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A value of true means that this view's bitmap will be cached, if available. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgcolor" type="lzx:color" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The background color of the view. Setting bgcolor to null will make the view transparent. May be set to any valid CSS color specification. When read, will be read as the equivalent numeric value. To retrieve a CSS color specification, use this.presentAttribute('bgcolor', 'color'). Default is null (transparent).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundrepeat" type="xs:string" default="norepeat" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Setting backgroundrepeat causes a view to repeat its resource to fit the view's width and/or height. Can be 'repeat', 'repeat-x', 'repeat-y' or 'norepeat' per the CSS1 background-repeat style. 
+	One of: 	"repeat" | "repeat-x" | "repeat-y" | "norepeat" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="align" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sets the alignment for the view to the given value. The alignment is based on the size of this view as compared to the size of the view's immediate parent. 
+	One of: 	"left" | "center" | "right" | constraint </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aatabindex" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Set accessibility tab order </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aasilent" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Set accessibility silencing/unsilencing </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aaname" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Set accessibility description </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aadescription" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="aaactive" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Activate/inactivate children for accessibility </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="soap" type="lzx:soap" >
+</xs:element>
+  <xs:complexType name="soap" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rpc">
+      <xs:attribute name="wsdl" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Required attribute that specifies WSDL to read for the SOAP
+              object. The value for wsdl should be an href. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="service" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The SOAP service to fetch. If not specified, the first service
+              encountered in the WSDL is used. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="responseheaders" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set, the SOAP response header returned by the last
+              call. The value for this must be a dataset. Default is null. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="requestheaders" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The SOAP header to pass with each request. This can be either a
+              string or a dataset. Default is null. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proto" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The prototypes that can be used to create objects. 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="port" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The SOAP port to use. If not specified, the first SOAP port
+              encountered in the WSDL is used. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseform" type="lzx:baseform" >
+</xs:element>
+  <xs:complexType name="baseform" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="onchanged" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when baseformitem is changed. Only sent once when true
+              or once when false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="formdata" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Holds a reference to each datacomponent contained within the
+              form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="changed" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Boolean to determine whether the baseformitem was changed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rangeslider" type="lzx:rangeslider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="rangeslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:custombaseslider">
+      <xs:attribute name="minx" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="minvalue" type="xs:string" default="this.minlimit + this.leftknob.x * this.valueratio" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxx" type="xs:string" default="${parent.rightknob.x}" >
+</xs:attribute>
+      <xs:attribute name="maxvalue" type="xs:string" default="this.minlimit + this.rightknob.x * this.valueratio" >
+</xs:attribute>
+      <xs:attribute name="isMouseDown" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mediadevice" type="lzx:mediadevice" >
+</xs:element>
+  <xs:complexType name="mediadevice" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="devicename" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of the device. 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="deviceindex" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Zero-based index of the device, or null for user's default device. 
+              Default is null, which selects the default device. 
+              When the default device is initialized, deviceindex is updated to
+              its actual index. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ set to true for verbose debugging messages </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="capturing" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Boolean flag that controls if the media device
+              is currently capturing input. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="allowed" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Tracks whether the user has allowed device access. 
+              True after user has accepted security dialog,
+              false if the user denies access with security dialog.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="active" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Flag that tracks if there's device activity (audio sound, video motion). 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="legenditem" type="lzx:legenditem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+    individual legend item </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="legenditem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textsize" type="lzx:number" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The font size of the label text for this item in the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the label text for this item in the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="linevisible" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="itemvalue" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The value for this item in the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemlabel" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text label for this item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="identifier" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+    individual legend item </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconshape" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The shape of the icon drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color for the icon. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hlcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The highlight color to be used when this item has been
+            moused over. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="face" type="lzx:face" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Defines a font face or style within the font family that the outer element defines.
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="face" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="style" type="xs:string" default="bold|italic|bold italic|italic bold|plain" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Corresponds to the fontstyle attribute of a view.
+    One of: 	bold | italic | bold italic | italic bold | plain  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The path of a file that contains the source for this object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="vslidertrack" type="lzx:vslidertrack" >
+</xs:element>
+  <xs:complexType name="vslidertrack" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simplelayout" type="lzx:simplelayout" >
+</xs:element>
+  <xs:complexType name="simplelayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each view in the layout </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to inset the first view controlled by the layout</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates. One of 'x' or 'y'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="newvscrollbar" type="lzx:newvscrollbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The vertical scrollbar manipulates the y position of a target view that is
+      clipped by its parent, creating a scrolling effect when the user
+      clicks up/down arrows, clicks on the scroll track or drags the thumb. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="newvscrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basescrollbar">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="silverstyle" type="lzx:silverstyle" >
+</xs:element>
+  <xs:complexType name="silverstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewspool" type="lzx:viewspool" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+     Represents a pool of view </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="viewspool" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="viewclass" type="xs:string" default="$once{null}" >
+</xs:attribute>
+      <xs:attribute name="used" type="xs:string" default="$once{[]}" >
+</xs:attribute>
+      <xs:attribute name="unused" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+     Represents a pool of view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="parentview" type="xs:string" default="$once{null}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="param" type="lzx:param" >
+</xs:element>
+  <xs:complexType name="param" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="value" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Value to use for parameter. A &lt;code&gt;getValue()&lt;/code&gt; method can be declared
+              inside param to use its return as the parameter value. If both
+              &lt;code&gt;value&lt;/code&gt; attribute and &lt;code&gt;getValue()&lt;/code&gt; method are declared, param will use
+              &lt;code&gt;getValue()&lt;/code&gt;. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datepickerday" type="lzx:datepickerday" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is the implementation of the datepickerday for 
+          the datepicker </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datepickerday" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepickerday">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="columnchartplotarea" type="lzx:columnchartplotarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords private
+     plotarea of column chart </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="columnchartplotarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:virtualdrawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="multiplefileupload" type="lzx:multiplefileupload" >
+</xs:element>
+  <xs:complexType name="multiplefileupload" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="numfields" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ numbers of fileuploadlist   </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="erroroccured" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Error occured</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="newhscrollbar" type="lzx:newhscrollbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A scrollbar manipulates the x or y position of a target view that is
+      clipped by its parent, creating a scrolling effect when the user clicks
+      up/down arrows, clicks on the scroll track or drags the thumb. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="newhscrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basescrollbar">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="numbervalidator" type="lzx:numbervalidator" >
+</xs:element>
+  <xs:complexType name="numbervalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevalidator">
+      <xs:attribute name="toosmallErrorstring" type="xs:string" default="This number is too small." >
+</xs:attribute>
+      <xs:attribute name="toobigErrorstring" type="xs:string" default="This number is too large." >
+</xs:attribute>
+      <xs:attribute name="notnumberErrorstring" type="xs:string" default="This field contains invalid characters." >
+</xs:attribute>
+      <xs:attribute name="notintErrorstring" type="xs:string" default="Enter integer value." >
+</xs:attribute>
+      <xs:attribute name="minvalue" type="lzx:number" default="null" >
+</xs:attribute>
+      <xs:attribute name="maxvalue" type="lzx:number" default="null" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="real" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabelement" type="lzx:basetabelement" >
+</xs:element>
+  <xs:complexType name="basetabelement" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+      <xs:attribute name="onopenstop" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent at the end of the open animation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onopenstart" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent at the start of the open animation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclosestop" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent at the end of the close animation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclosestart" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sent at the start of the close animation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minheight" type="lzx:number" default="22" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height the tab will close to. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemclassname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ When creating tabelements via additem, this is the class that gets
+              created. The default value is the class of the first tabelement or
+              its descendant. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hideonclose" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Content is automatically hidden when tabelement is closed. To
+              override, set this attribute to false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="headerheight" type="lzx:number" default="$once{minheight}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height of the header. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="contentvisible" type="xs:string" default="$once{! hideonclose}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is set to true when a basetabelement begins to open and is
+              set to false when it finishes its close. Default is the inverse of
+              hideonclose. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetree" type="lzx:basetree" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An abstract base class to build tree controls. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basetree" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="yindent" type="lzx:number" default="20" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Spacing to indent trees on the y-axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xindent" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Spacing to indent trees on the x-axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="toggleselected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only in root. Flag to toggle selected nodes.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showroot" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only in root tree. If false, the root item is invisible
+              and its children are displayed.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Check to see if this tree is selected. Default is false, except
+              for the root of a tree, which its selected attribute is set to
+              true. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="recurse" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only with data replication. If true, it will
+              recursively follow the datapath's children.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="open" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Check to see if this tree is open. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselected" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event gets triggered whenever this tree is selected. The
+              value of the selection (true or false) is sent with this
+              event.
+              Note the args of this has changed from the previous release. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event gets triggered whenever this tree is selected. This
+              tree is sent with the event. The tree root also receives this
+              event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onopen" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event gets triggered whenever this tree is open. The open
+              value of this tree is also sent. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onfocused" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event gets triggered whenever this tree is focused. The value
+              of the focus (true or false) is sent with this event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiselect" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only in root. Whether to multiselect items.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isleaf" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, this basetree is a leaf node. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focusselect" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only in root. Flag to select a tree on focus.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focusoverlay" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Meaningful only in root. If focusselect is false and focusoverlay
+              is true, then focus has a visual bracket overlay over the focused
+              tree. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focused" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, this tree is focused.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="closesiblings" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Flag to close other siblings when this tree is open. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="closechildren" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Close all immediate children when this tree is closed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoscroll" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Auto scroll if tree is clipped. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="debug" type="lzx:debug" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     @lzxname debug
+     @keywords private_constructor
+     @access public
+     @topic LZX
+     @subtopic Debugging
+     @devnote NOTE [2008-11-25 ptw] Dummy class to hold documentation for debug tag
+     @devnote TODO [2008-11-26 ptw] Make this the real class!
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="debug" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datacolumn" type="lzx:datacolumn" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ datacolumn contain a list of values of a series. List of values typically are data for x series,
+        y series, tooltip series and datalabel series.
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datacolumn" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="values" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ array of data representing the series values </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labeldatapath" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the name of the label in the datapath for the series </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datatype" type="xs:string" default="string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ type of data: string or number </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datadone" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ true when data had been loaded at least once </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="columndatapath" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the name of the column in the datapath for the series </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="hsplitpane" type="lzx:hsplitpane" >
+</xs:element>
+  <xs:complexType name="hsplitpane" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sizer_width" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="rhs_placed" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="lhs_width_start" type="xs:string" default="180" >
+</xs:attribute>
+      <xs:attribute name="lhs_placed" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="lhs_min_width" type="xs:string" default="10" >
+</xs:attribute>
+      <xs:attribute name="lhs_max_width" type="xs:string" default="${this.width-20}" >
+</xs:attribute>
+      <xs:attribute name="bordersize" type="xs:string" default="1" >
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="lzx:color" default="0x000000" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mediastream" type="lzx:mediastream" >
+</xs:element>
+  <xs:complexType name="mediastream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="url" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The url of the mediastream, maybe be relative URL, 
+          for example: http://localhost/myvideo.flv, or simply myvideo.flv
+          when type="rtmp" the url is always relative to the rtmpconnection.
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="http" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Protocol "rtmp" or "http".
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="totaltime" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Total length (in seconds) of mediastream currently playing.
+          @type Number
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="time" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Current time of mediastream currently playing or recording (in seconds)
+          @type Number
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="streamname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The rtmp streamname (without .flv suffix).
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rtmp" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The rtmp connection to use (defaults to the first one created).
+          @type lz.rtmpconnection
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="recording" type="xs:string" default="${this.mode == 'recording'}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if recording right now.
+          @type Boolean 
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="progress" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Progress of mediastream currently downloading.
+          (from 0 for none to 1 for all).
+          @type Number
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="playing" type="xs:string" default="${(this.mode == 'playing') &amp;&amp; (!this.paused)}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if playing right now.
+          @type Boolean   
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="paused" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True to pause playback. Named this way to pun with paused for animators.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onstop" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when playing or recording stops.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onstart" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when playing or recording starts.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmetadata" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when metadata is received, whose parameter is a 
+    dictionary of metadata.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oninsufficientbandwidth" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when insufficient bandwidth.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncuepoint" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when a cue point occurs,
+          whose parameter is a dictionary of metadata.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mutevideo" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True iff video is muted.
+          @type Boolean 
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="muteaudio" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True iff audio is muted.
+          @type Boolean 
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mode" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Mode: "" if doing nothing, "playing" if playing,
+          "broadcasting" if can be received, "recording" if recording.
+          Recording also implies can be received, i.e., broadcasting. 
+          Pausing does not affect the mode, unlike stopping.
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mic" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A reference to the microphone. This must be set if broadcasting.
+          This is set automatically if the stream is a child of a videoview.
+          @type lz.microphone
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fps" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The current frames per second for playing video.
+          @type Number
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ When true, print extra info to the debugger.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cam" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A reference to the camera. This must be set if broadcasting.
+          This is set automatically if the stream is a child of a videoview.
+          @type lz.camera
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="buffertime" type="lzx:number" default="0.1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Amount of time (in seconds) to buffer before starting to display the 
+          stream.  For a publishing stream, bufferTime specifies how long the 
+          outgoing buffer can grow before the application starts dropping 
+          frames.
+          @type Number
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadcasting" type="xs:string" default="${(this.mode == 'broadcasting') || (this.mode == 'recording')}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if broadcasting right now.
+          @type Boolean 
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autorewind" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, video will automatically rewind to the beginning
+          (and remain in a paused state) when playback ends.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplayStart" type="xs:string" default="'either'" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Autoplay start argument passed to mediastream.play().
+          See the mediastream.play documentation for its values. 
+          @type String
+          @accesss public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplayReset" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Autoplay reset argument passed to mediastream.play(). 
+          See the mediastream.play documentation for its values. 
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplayPause" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Autoplay pause argument passed to mediastream.play().
+          See the mediastream.play documentation for its values. 
+          @type Boolean
+          @access public
+     </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplayLength" type="xs:string" default="'end'" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Autoplay length argument passed to mediastream.play(). 
+          See the mediastream.play documentation for its values. 
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplay" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, video will start playing as soon as url is set.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_plainfloatshadow" type="lzx:_plainfloatshadow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The shadows width and height are set to the width and height of the view
+          it is trying to apply a shadow to.
+          @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_plainfloatshadow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="shadowsize" type="xs:string" default="1.5" >
+</xs:attribute>
+      <xs:attribute name="offsety" type="xs:string" default="10" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="scrollbar" type="lzx:scrollbar" >
+</xs:element>
+  <xs:complexType name="scrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basescrollbar">
+      <xs:attribute name="disabledbgcolor" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If this is defined, it will be used as the scrollbar's background
+          color when it is disabled. If not provided, the scrollbar will use
+          the bgcolor of its closest parent that has a bgcolor defined.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="setter" type="lzx:setter" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A tag to declare or override attribute setter methods. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="setter" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="name" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A tag to declare or override attribute setter methods. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="args" type="xs:string" >
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="basedatepicker" type="lzx:basedatepicker" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Abstract class for the datepicker.  The basedatepicker class
+          shows the days of the week in a typical month based layout.  Extend
+          this class to create a full featured UI of a datepicker, or just use
+          the datepicker component.
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basedatepicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="yinset" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number if pixels from this.y to show the datepicker days 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xinset" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number if pixels from this.x to show the datepicker days 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="weekclass" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The weekclass to use for this basedatepicker 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showingyear" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The year that is currently showing in the datepicker.
+              @keywords public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showingmonth" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The month that is currently showing in the datepicker.
+              @keywords public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showingdate" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A Date object which represents the month to be shown. 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selecteddatepickerday" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The datepickerday which has been selected. 
+              @keywords public  
+           </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selecteddate" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The Date that is currently selected.
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="latestdate" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The latest date that is selectable. 
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hasfocus" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="earliestdate" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The earliest date that is selectable. 
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dayclass" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The dayclass to use for this basedatepicker 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorbox" type="lzx:colorbox" >
+</xs:element>
+  <xs:complexType name="colorbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="color" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartbgstyle" type="lzx:chartbgstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for chart background
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartbgstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myslider" type="lzx:myslider" >
+</xs:element>
+  <xs:complexType name="myslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:slider">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartlegend" type="lzx:chartlegend" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A legend for charts and graphs. It is imperative
+        that this is declared at the very end of a chart.
+        (Of beta quality.) Due to a couple bugs in drawview,
+        performance is spotty in DHTML. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartlegend" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="titletextsize" type="lzx:number" default="12" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of the legend title's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titleposition" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The position of the title: left, right, center. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titlecolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the legend title's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textsize" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of the text in legend items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textcolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the text in legend items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizetodata" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to resize the legend to the data.  If not, this will
+            use the specified width and height for the legend, and fit
+            legend items into this size to the best of its ability.  If so,
+            this will use a rough guess at legend item dimensions, and
+            resize the legend.  Accepted values: "tall", "wide", "$once{null}".
+            "tall" will make a taller legend, "wide" will make a wider legend,
+            "$once{null}" will not resize. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="posit" type="xs:string" default="right" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The position of the legend: left, right, top, bottom, manualleft,
+            manualright, manualtop, manualbottom.
+            If left or right, the legend will behave as though
+            resizetodata="tall" is in effect.  If top or bottom,
+            the legend will behave as though resizetodata="wide" is
+            in effect.  If manual, additional values must be set to
+            place and size legend, and the legend will fit the
+            legenditems within the legend to the best of its ability. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pieradius" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Radius of the pie.  This helps determine placement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piepieces" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Pie pieces associated with this legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piececolors" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Respective piece colors. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltitle" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The legend title, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendy" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If posit is 'manual', this sets the y coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If posit is 'manual', this sets the x coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendwidth" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If posit is 'manual', this sets the width of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The values to use in the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendheight" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If posit is 'manual', this sets the height of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemnums" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number of items in the legend. (a.k.a. Number of pie pieces.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hlcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The highlight color of individual legend items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="charttype" type="xs:string" default="$once{typeof linechart != 'undefined' ?                 (parent instanceof lz.linechart ? 'line' : null) : null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The type of chart associated with this legend.
+            Currently, only needs to be specified if this
+            is used on a piechart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="centery" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Center x coordinate of the pie.  This helps determine
+            placement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="centerx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Center x coordinate of the pie.  This helps determine
+            placement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the border around the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the border around the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background color of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabpane" type="lzx:basetabpane" >
+</xs:element>
+  <xs:complexType name="basetabpane" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="tabclass" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The tabclass to use to instantiate its associated tab. This
+              overrides the basetabs tabclass. Leave undefined here so that
+              basetabs can have it.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tab" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The tab associated with this basetabpane.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If a basetabpane is selected, then it will be shown.
+              Its associated tab will be also be selected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="lzx:number" default="${parent.inset_top}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Top inset for basetabpane in tabs content. Default is basetabs's
+              inset_top. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="lzx:number" default="${parent.inset_right}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Right inset for basetabpane in tabs content. Default is basetabs's
+              inset_right. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="lzx:number" default="${parent.inset_left}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Left inset for basetabpane in tabs content. Default is basetabs's
+              inset_left. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="lzx:number" default="${parent.inset_bottom}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Bottom inset for basetabpane in tabs content. Default is basetabs's
+              inset_bottom. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_dbg_lzvdrag" type="lzx:_dbg_lzvdrag" >
+</xs:element>
+  <xs:complexType name="_dbg_lzvdrag" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="ydoffset" type="xs:string" default="this.getMouse( 'y' )" >
+</xs:attribute>
+      <xs:attribute name="y" type="xs:string" default="${this.immediateparent.getMouse( 'y' ) - this.ydoffset}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="b" type="lzx:b" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="b" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="scrolledittext" type="lzx:scrolledittext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Implements visual baseedittext with scrollbar. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="scrolledittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseedittext">
+      <xs:attribute name="vscrollbarclassname" type="xs:string" default="vscrollbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of class to instantiate for vertical scroll bar.
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pos" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxtextheight" type="xs:string" default="${this.lineheight * this.maxscroll}" >
+</xs:attribute>
+      <xs:attribute name="maxheight" type="xs:string" default="${this.height + this.maxtextheight}" >
+</xs:attribute>
+      <xs:attribute name="border" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Implements visual baseedittext with scrollbar. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="a" type="lzx:a" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="a" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="target" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The value of this attribute determines where the link target will be displayed. The interpretation is the same as in HTML, where the "current frame" is the frame containing the LZX application. The value must be a name beginning with an alphabetic character, or one of the following:
+
+_blank
+    The user agent should load the designated document in a new, unnamed window. 
+_parent
+    The user agent should load the document into the full, original window (thus canceling all other frames). This value is equivalent to _self if the current frame has no parent. 
+_self
+    The user agent should load the document in the same frame as the element that refers to this target. 
+_top
+    The user agent should load the document into the immediate FRAMESET parent of the current frame. This value is equivalent to _self if the current frame has no parent. 
+
+	 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="href" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	The link target </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="linechart" type="lzx:linechart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A chart class that renders as lines.
+      Inherits from the chart class.
+      (Warning: Of beta quality.)
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="linechart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basechart">
+      <xs:attribute name="onminimum" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whenever minimum, maximum, altminimum and altmaximum are changed, the
+            chart needs to be redrawn entirely.  (Normally, tick and data labels aren't
+            redrawn, because it would be far too huge a resource drag to continually
+            break down and rebuild them whenever a person zoomed in.  Instead, they're
+            constrained to scale to the appropriate distances from each other.)  When
+            the mins and maxes are changed, however, the scaling gets thrown off for
+            existing objects.  These handlers ensures that when these values are changed,
+            the labels are broken down and redrawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmaximum" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onaltminimum" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onaltmaximum" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="drawready" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Line drawview.  This draws all the lines of the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sessionrpc" type="lzx:sessionrpc" >
+</xs:element>
+  <xs:complexType name="sessionrpc" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rpc">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="styleparser" type="lzx:styleparser" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+This class complete the chart style class in case the developer has not defined the chart styles </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="styleparser" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="style" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The user's defined style. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isleaf" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Test if the current style's node has no more children </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="haschildren" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Test if the current style's node has children </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultstyle" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The dafault defined style. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tickstyle" type="lzx:tickstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ tickstyle is used by the axis style to render major and minor ticks on a chart.
+     NOTE: tickstyle extends linestyle
+     @access public
+     </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="tickstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:linestyle">
+      <xs:attribute name="position" type="xs:string" default="inside" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ inside | outside | centered | none  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="length" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ length of tick in pixels perpendicualr to the axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="constantboundslayout" type="lzx:constantboundslayout" >
+</xs:element>
+  <xs:complexType name="constantboundslayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="value" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The constant value that is applied to the attribute
+              ( defined in 'axis' as 'x' or 'y' ) of each subview in the layout. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates either 'x' or 'y'.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="printer" type="lzx:printer" >
+</xs:element>
+  <xs:complexType name="printer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="i" type="lzx:i" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="i" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="valuepointstyle" type="lzx:valuepointstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ valuepointstyle is used to set style to the 
+     NOTE: valuelinestyle extends basestyle
+     @access public
+     </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valuepointstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="u" type="lzx:u" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="u" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="hscrollbar" type="lzx:hscrollbar" >
+</xs:element>
+  <xs:complexType name="hscrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basescrollbar">
+      <xs:attribute name="disabledbgcolor" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If this is defined, it will be used as the scrollbar's background
+          color when it is disabled. If not provided, the scrollbar will use
+          the bgcolor of its closest parent that has a bgcolor defined.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="legend" type="lzx:legend" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     simple legend class
+     @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="legend" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="verticalgap" type="lzx:number" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="topmargin" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="styleBorder" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the style will be applied tho the border legend box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rightmargin" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="position" type="xs:string" default="right" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates where the legend box will be positioned, default: right </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseup" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse up event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseover" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse over event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse out event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmousedown" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse down event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseclick" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse click event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendborder" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if legend box will have a border, default: true </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFontsize" type="lzx:size" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font size wiil be used in the legend item text, default: 10px </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFontcolor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font color wiil be used in the legend item text, default: black </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFont" type="xs:string" default="serif" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font will be used in the legend item text </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="leftmargin" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillColor" type="lzx:color" default="0xFFFFFF" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the fill color from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="direction" type="xs:string" default="vertical" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates how the legend items will be displayed, default: vertical </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="chartClassName" type="xs:string" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="chart" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Takes the relationship with the chart </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bottommargin" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderWidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the line width from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the color line from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="p" type="lzx:p" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="p" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="library" type="lzx:library" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The &lt;library&gt; tag defines the root element of a library file. An application can use the &lt;include&gt; tag to include the code in a library file.
+
+See the Guide for a complete discussion. Also see the &lt;include&gt; tag. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="library" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="validate" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If false, disables validation against the schema during compilation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxied" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The &lt;library&gt; tag defines the root element of a library file. An application can use the &lt;include&gt; tag to include the code in a library file.
+
+See the Guide for a complete discussion. Also see the &lt;include&gt; tag. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="javarpc" type="lzx:javarpc" >
+</xs:element>
+  <xs:complexType name="javarpc" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rpc">
+      <xs:attribute name="scope" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of 'session', 'webapp', or 'none' to set the scope of the
+              remote object. This attribute must be set before creating or
+              loading the object. If scope is 'session' or 'webapp', name or
+              attributename must be set. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="remoteclassname" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The remote class name associated with the remote object. This must
+              be set if creating the remote object. If loading the object, the
+              classname will be set during onload. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="objectreturntype" type="xs:string" default="pojo" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Used to determine what server-side object member values are
+              returned to the client. One of 'pojo' (returns public member
+              values) or 'javabean' (returns members that have associated
+              getters). Default is 'pojo' (plain old java object). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="loadoption" type="xs:string" default="loadcreate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of 'loadcreate', 'loadonly', or 'create'. 'Loadcreate' tries
+              to load javarpc object if it exists in the server, else it creates
+              it before loading. 'Loadonly' will only load object if it exists,
+              else an error is returned. 'Create' will always create the object
+              in the server. Default is 'loadcreate'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="createargs" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Used if loadoption='loadcreate' or loadoption='create'. Arguments
+              to construct remote object with. The value passed in must be an
+              array, e.g., [1, 'mystring', 1.45]. Default is null. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attributename" type="xs:string" default="$once{this.name}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Attribute name of server remote object. Name or attributename must
+              be set when scope is 'session' and 'webapp'. Default is the name
+              of this object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chart" type="lzx:chart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        chart is the base class representing a chart. In general,
+        this class is not instantiated directly. A chart contains 
+            at least one dataseries element 
+            at least one axis element 
+        The chart needs to look at its dataseries children and pass 
+        the relevant dataseries to each axis. Relevent dataseries 
+        for the chart must have columns for each of the axes 
+        that the chart cares about.  
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="zoomEnabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable zoom</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="verticalGap" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The vertical blank space between components. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="valueregionsenabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable value region </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="valuepointsenabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable value points </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="valuelinesenabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable value lines </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="topMargin" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The blank space bordering the top of the chart area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rightMargin" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The blank space bordering the right side of the chart area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotarea" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="leftMargin" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The blank space bordering the left side of the chart area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="initdone" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ subview have  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="horizontalGap" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The horizontal blank space between components. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultstyle" type="xs:string" default="${defaultchartstyle}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The default style to be applied to the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultRightMargin" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The default blank space bordering the right side of the chart area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datatipEnabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable tooltip for data </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datatipColumn" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ data column name of the tooltip </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datalabelEnabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable data label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datalabelColumn" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ data column name of the data label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="databorderEnabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="dataPointsEnabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable data point(data marker) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bottomMargin" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The blank space bordering the bottom of the chart area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resizestate" type="lzx:resizestate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ resizes its immediateparent in response to mouse events, when applied </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="resizestate" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="width" type="xs:string" default="${this.immediateparent.getMouse( 'x' )- this.__resize_xroffset}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="height" type="xs:string" default="${this.immediateparent.getMouse( 'y' )- this.__resize_yroffset}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzcombobox" type="lzx:lzcombobox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Subclass of basedatacombobox with laszlo mail look. See basedatacombobox for
+          details. Usage:
+          &lt;code&gt;
+          &lt;dataset name="dsHours"&gt;
+              &lt;item value="1"&gt;1&lt;/item&gt;
+              &lt;item value="2"&gt;2&lt;/item&gt;
+              &lt;item value="3"&gt;3&lt;/item&gt;
+              &lt;item value="4"&gt;4&lt;/item&gt;
+              &lt;item value="5"&gt;5&lt;/item&gt;
+              &lt;item value="6"&gt;6&lt;/item&gt;
+              &lt;item value="7"&gt;7&lt;/item&gt;
+              &lt;item value="8"&gt;8&lt;/item&gt;
+              &lt;item value="9"&gt;9&lt;/item&gt;
+              &lt;item value="10"&gt;10&lt;/item&gt;
+              &lt;item value="11"&gt;11&lt;/item&gt;
+              &lt;item value="12"&gt;12&lt;/item&gt;
+          &lt;/dataset&gt;
+
+          &lt;lzcombobox width="50" shownitems="3" itemdatapath="dsHours:/item"&gt;
+              &lt;handler name="onselect" args="dptr"&gt;
+                  Debug.write('value:', this.value);
+                  Debug.write('datapointer:', dptr);
+              &lt;/handler&gt;
+          &lt;/lzcombobox&gt;
+          &lt;/code&gt;
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="lzcombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatacombobox">
+      <xs:attribute name="tooltip" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ tooltip text, if any </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="texty" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="textx" type="xs:string" default="8" >
+</xs:attribute>
+      <xs:attribute name="frnum" type="xs:string" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="splash" type="lzx:splash" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Controls the presentation while the application is loading.  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="splash" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="y" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="x" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="resource" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ratio" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="persistent" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Controls the presentation while the application is loading.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="center" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ticks" type="lzx:ticks" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="ticks" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="numticks" type="xs:string" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="opttree" type="lzx:opttree" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A keyboard navigable (with arrow keys) tree control that supports 
+         selection and dynamic data loading. This tree must be backed by an
+         XML DOM datastructure and presented within a clipping region. 
+         
+         The datapath for an opttree must resolve to a single LzDataElement
+         which is the undisplayed root of the tree. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="opttree" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="openattrpath" type="xs:string" default="@__OPTTREE_META_open" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (Protected) An xpath that selects the openattr attribute from
+              a node. This should match openattr but prepend the '@' symbol.
+              This cannot be when=always or when=once because it is used as
+              a reference in a $path expression in baseopttreenode </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="openattr" type="xs:string" default="__OPTTREE_META_open" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (Protected) The attribute name to use in the data to mark a
+              a node as open.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nodepath" type="xs:string" default="*" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The xpath expression to use to retrieve nodes out of the 
+              datapath. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nodelist" type="xs:string" default="nodecollection" >
+</xs:attribute>
+      <xs:attribute name="nodecollection" type="xs:string" default="${ opttreecontroller.nodelist }" >
+</xs:attribute>
+      <xs:attribute name="nodeclass" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the class to use to represent nodes in the tree.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="movedel" type="xs:string" default="$once{ new lz.Delegate( this, '_updatePos' ) }" >
+</xs:attribute>
+      <xs:attribute name="highlighted" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The keyboard nav highlighted baseopttreenode or null. This
+              attribute is read-only. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dragged" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dragee" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="depthattrpath" type="xs:string" default="@__OPTTREE_META_depth" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (Protected) An xpath that selects the depthattr attribute from
+              a node. This should match depthattr but prepend the '@' symbol.
+              This cannot be when=always or when=once because it is used as
+              a reference in a $path expression n baseopttreenode </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="depthattr" type="xs:string" default="__OPTTREE_META_depth" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (Protected) The attribute name to use in the data to mark a
+              a node's depth in the tree hierarchy </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzedittext" type="lzx:lzedittext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Implements the laszlo look of baseedittext. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="lzedittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseedittext">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="piepiece" type="lzx:piepiece" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+   Represents a single pie slice in the chart </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="piepiece" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="yRadius" type="lzx:number" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The y radius of the slice. default = null </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tooltip" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+   Represents a single pie slice in the chart </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="radius" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The length of the radius in pixels </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piecevalue" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The numeric value of the piece. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pieceradius" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The radius of the whole pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pieceopacity" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity of the piece.  Determined by attributes on dataseries. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piececolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the piece.  Determined by attributes on dataseries. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onexploded" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The events that handle explosion of pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The data label of this pie slice </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="exploded" type="lzx:boolean" default="${parent.wedgeover == this}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether this piece is moused over or not. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="explode" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to actually move the piece outward when the mouse is over it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="centery" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The y coordinate of the center of the pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="centerx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x coordinate of the center of the pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the border of the piece.  Determined by attributes
+            on dataseries. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the border of the piece.  Determined by attributes
+            on dataseries. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="arcvalue" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The segment of the circle that defines the current pie slice </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="angle" type="lzx:number" default="25" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datevalidator" type="lzx:datevalidator" >
+</xs:element>
+  <xs:complexType name="datevalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevalidator">
+      <xs:attribute name="invalidyearErrorstring" type="xs:string" default="Please enter a year between 0 and 9999." >
+</xs:attribute>
+      <xs:attribute name="invalidmonthErrorstring" type="xs:string" default="Please enter a month between 1 and 12." >
+</xs:attribute>
+      <xs:attribute name="invalidformatErrorstring" type="xs:string" default="Please input the date in a valid format." >
+</xs:attribute>
+      <xs:attribute name="invaliddateErrorstring" type="xs:string" default="Please enter a valid date." >
+</xs:attribute>
+      <xs:attribute name="format" type="xs:string" default="mm/dd/yyyy" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="br" type="lzx:br" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="br" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="basescrolltrack" type="lzx:basescrolltrack" >
+</xs:element>
+  <xs:complexType name="basescrolltrack" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebuttonrepeater">
+      <xs:attribute name="direction" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The direction in which the scroll should move. Set to -1 for back,
+             1 for forward. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vbox" type="lzx:vbox" >
+</xs:element>
+  <xs:complexType name="vbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="inset" type="xs:string" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="remotecall" type="lzx:remotecall" >
+</xs:element>
+  <xs:complexType name="remotecall" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="remotecontext" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set, this is the remote object context in which funcname is run
+              from. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onerror" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered when an error occurs. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inforeturnvalue" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, a remote response returns an object. The object of a
+             successful response will contain the return value (data), an object
+             containing specific information about the request (info), and the
+             associated unique sequence request number (seqnum), e.g., { data:
+             ..., info: ..., seqnu: ...}. A failure response returns an object
+             that contains the error message (message), the error type (error),
+             an object containing specific information about the request (info),
+             and the associated unique sequence request number (seqnum), e.g., {
+             message: ..., error: ..., info: ..., seqnum: ...}. If false, an
+             error just returns the error message and a successful response
+             returns a value. Default is false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="funcname" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of remote function this remotecall refers. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataobject" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If an LzDataset or an LzDataElement is set, return values will
+              be mapped into the dataobject. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basescrollarrow" type="lzx:basescrollarrow" >
+</xs:element>
+  <xs:complexType name="basescrollarrow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebuttonrepeater">
+      <xs:attribute name="direction" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The direction in which the scroll should move. Use -1 to go
+                  back. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="zoomarea" type="lzx:zoomarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ chart zoom area </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="zoomarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basezoomarea">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleslider" type="lzx:simpleslider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="simpleslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:custombaseslider">
+      <xs:attribute name="value" type="xs:string" default="this.minlimit + this.knob.x * this.valueratio" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minx" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxx" type="xs:string" default="$once{parent.width}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="hbox" type="lzx:hbox" >
+</xs:element>
+  <xs:complexType name="hbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="inset" type="xs:string" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="timetext" type="lzx:timetext" >
+</xs:element>
+  <xs:complexType name="timetext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="plotstyle" type="lzx:plotstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for plot area
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="plotstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="linesize" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ size of border of the plot area </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="linecolor" type="lzx:color" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of the border for the plot area </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillcolor" type="lzx:color" default="0xFFFFFF" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ bgcolor for the plot area </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="wholepie" type="lzx:wholepie" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is the class that assembles and contains all the elements
+        of an individual pie.  Nearly all of the attributes are set when the
+        object is instantiated by piechart.  There should be one of these
+        for each dataseries.  (Of beta quality.) </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="wholepie" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="wedgeover" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Wedge the mouse is currently over </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showlegendminimized" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to show the legend when the chart is minimized, when
+            there are multiple charts. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="radiusvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of the radius alterations for pie
+            pieces, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piecevalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of the values of individual pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="opacvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of piece opacity values. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltitle" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of the legend, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lhlcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Highlight color of an individual legend element, when
+            moused over. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendy" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the y coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the x coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendwidth" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the width of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of the values to use in the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendtitleposition" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The position of the title: left, right, center. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendheight" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the height of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legend" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to include a legend, and if so, where to place it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lborderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Border width of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lborder" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Border color for the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lbgcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Background color of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of the label values for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labeltsize" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of label text sizes for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labeltcolor" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of label text colors for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelcolors" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of label colors for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelbwidth" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of label border widths for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelborders" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of label borders for pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="explode" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether or not to explode the pie pieces onmouseover. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="expanded" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If there are multiple charts, this indicates whether this chart
+            is currently expanded. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbgborder" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw the background border around the circle
+            behind the pie pieces, and if so, what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbg" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw the background circle behind the pie pieces,
+            and if so, what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="colorvalues" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of the colors of individual pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidths" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of border widths of individual pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolors" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array of border colors of individual pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgborderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the background border around the circle
+            behind the pie pieces. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="statictext" type="lzx:statictext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A simple text class that provide default font attributes for
+          Laszlo components. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="statictext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="purplestyle" type="lzx:purplestyle" >
+</xs:element>
+  <xs:complexType name="purplestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="custombaseslider" type="lzx:custombaseslider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="custombaseslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="valueratio" type="xs:string" default="(this.maxlimit  - this.minlimit) / this.width" >
+</xs:attribute>
+      <xs:attribute name="startlabel" type="xs:string" default="this.minlimit" >
+</xs:attribute>
+      <xs:attribute name="minordivision" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="minlimit" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxlimit" type="xs:string" default="100" >
+</xs:attribute>
+      <xs:attribute name="majordivision" type="xs:string" default="2" >
+</xs:attribute>
+      <xs:attribute name="endlabel" type="xs:string" default="this.maxlimit" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basebutton" type="lzx:basebutton" >
+</xs:element>
+  <xs:complexType name="basebutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="respondtomouseout" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If this button does not respond to onmouseout or onmousedragout
+              events, set this flag to false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resourceviewcount" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The first 'n' subviews that will respond to mouseevents by
+              changing the frame number of their resource. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="reference" type="xs:string" default="this" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Where to send mouse events (the view that will be "clickable").
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="overResourceNumber" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the mouse over state. 
+              Use 0 if the resource has at least 2 frames, but there is no over
+              state.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onresourceviewcount" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is sent when the resourceviewcount changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="normalResourceNumber" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the mouse up state, and initial state of the
+              button.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxframes" type="lzx:number" default="$once{this.totalframes}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum number of frames to use, defaults to the number of
+              frames for the resource associated with this view. This is useful
+              for a subclass that has no resource for this view.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="downResourceNumber" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the mouse down state.
+              Use 0 if the resources has at least 3 frames, but there is no down
+              state.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="disabledResourceNumber" type="lzx:number" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the disabled state.
+              Use 0 if the resource has at least 4 frames, but there
+              is no disabled state.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="PopupPolygon" type="lzx:PopupPolygon" >
+</xs:element>
+  <xs:complexType name="PopupPolygon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:polygonhotspot">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="parentView" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="text" type="lzx:text" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The basic text display element. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="text" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="yscroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The y scroll offset of the content in pixels (a negative number specifying how many pixels the content should be scrolled vertically). Default 0. NOTE: A constraint or handler on onyscroll will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xscroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The x scroll offset of the content in pixels (a negative number specifying how many pixels the content should be scrolled horizontally). Default 0. NOTE: A constraint or handler on onxscroll will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="thickness" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The thickness for this text, between -200 and 200, Flash only</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textindent" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  textindent accepts any number which is interpreted as a px value</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textdecoration" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  text-decoration for this text, either 'none' or 'underline'.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textalign" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  textalign accepts one of [left, right, center, justify]</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The text to display in this text field. If set to a value that is not a string, the value will first be converted to a string as if by String(value). To display nothing, set the value to the empty string "". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sharpness" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The sharpness for this text, between -400 and 400, Flash only</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  If true, the text is selectable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollwidth" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The total width of the content in pixels. this.setAttribute('width', this.scrollwidth) is equivalent to this.setAttribute('width', null) (for the current content: the former will not follow content changes as the latter does). If this.scrollwidth &gt; this.width, this.setAttribute('yscroll', this.width - this.scrollwidth) will cause the end of content to be visible at the edge of the view. (The rightmost content will appear at the right edge of the view for left-to-right scripts.) NOTE: A constraint or handler on onscrollwidth will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollheight" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The total height of the content in pixels. this.setAttribute('height', this.scrollheight) is equivalent to this.setAttribute('height', null) (for the current content: the former will not follow content changes as the latter does). If this.scrollheight &gt; this.height, this.setAttribute('yscroll', this.height - this.scrollheight) will scroll the content so that the bottom of the content appears in the bottom of the view. NOTE: A constraint or handler on onscrollheight will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollevents" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  Use setAttribute('scrollevents', true) to cause scroll events to be sent. NOTE: A constraint or handler on onyscroll, onscroll, onxscroll, onhscroll, onscrollheight, onmaxscroll, onscrollwidth or onmaxhscroll will automatically enable scrollevents. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The vertical scroll position (in lines, 1-based). Default 1.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resize" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  If true, the width of the text field will be recomputed each time text is changed, so that the text view is exactly as wide as the width of the widest line. Defaults to true. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pattern" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  regexp describing set of characters allowed in this field Restrict the characters that can be entered to a pattern specified by a regular expression. Currently only the expression [ ]* enclosing a set of characters or character ranges, preceded by an optional "^", is supported. examples: [0-9]* , [a-zA-Z0-9]*, [^0-9]* </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onyscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onxscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ontextlink" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onselectable" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onscrollwidth" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onscrollheight" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onscrollevents" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onpattern" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onmaxscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onmaxlength" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onmaxhscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onlineheight" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onhscroll" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ondirection" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="multiline" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  If true, the lines of text are wrapped to fit within the text width. (The name multiline is a misnomer. Unwrapped text can be multiple lines if it contains a &lt;br /&gt; or &lt;p&gt; element, or a line break within a &lt;pre&gt; element. This attribute defaults to true if width and height are explicitly specified. If you set multiline=true, you probably want to explicitly a width for the text also; if multiline=true and you do not specify a width, the system will pick an arbitrary width (100 pixels at the moment). When multiline=true, the text is automatially re-wrapped whenever the content is modified by calls to setText, or whenever the width of the text view is modified. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxscroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The maximum vertical scroll position (in lines, 1-based). this.setAttribute('scroll', this.maxscroll) will cause the last line of the content to be visible at the bottom of the view (hence this is the line number of the line that will appear at the top of the view when scrolled all the way to the bottom). NOTE: A constraint or handler on onmaxscroll will automatically enable updating the attribute.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  Maximum number of characters allowed in this field </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxhscroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The maximum horizontal scroll position in pixels. this.setAttribute('hscroll', this.maxhscroll) will cause the end of content to be visible at the edge of the view. (The rightmost content will appear at the right edge of the view for left-to-right scripts, hence this is the pixel position of the leftmost pixel that will appear in the view when scrolled all the way to the right.) NOTE: A constraint or handler on onmaxhscroll will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lineheight" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height of a line of text in the current style </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="letterspacing" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  letterspacing accepts any number which is interpreted as a px value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hscroll" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The horizontal scroll position in pixels. Default 0. NOTE: A constraint or handler on onhscroll will automatically enable updating the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="gridFit" type="xs:string" default="none|pixel|subpixel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  Grid fit for this text, Flash only One of:  "none" | "pixel" | "subpixel" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="direction" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  Text direction, either "ltr" (default) or "rtl", Flash only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cdata" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  An alias for the text attribute, but with the type cdata, allowing it to be bound to a value that should not be interpreted as markup (when data binding, CSS style binding, or ??? or ???). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="antiAliasType" type="xs:string" default="normal|subpixel|advanced" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Antialias type for this text, Flash only One of:  "normal" | "subpixel" | "advanced" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="submit" type="lzx:submit" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Associates a form with a dataset. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="submit" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="status" type="xs:string" default="ok" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Read-only status of data request. Possible values are 'ok',
+              'requesting', and 'error'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="error" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Error from most recent response or empty string; cleared to empty
+              string each time a request on the dataset is made. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataset" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The dataset that specifies the request url, which will also hold
+              the result of the query. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabscontent" type="lzx:basetabscontent" >
+</xs:element>
+  <xs:complexType name="basetabscontent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartactionhelper" type="lzx:chartactionhelper" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+        class that help with the zoom animation and undo ability
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartactionhelper" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="chart" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+        class that help with the zoom animation and undo ability
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="animateProgress" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="actionlist" type="xs:string" default="[]" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="TestResult" type="lzx:TestResult" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+  A TestResult accumulates the results of a test run: the total number
+  of tests run, the number of failures, and the number of errors.  A
+  TestResult is automatically created by a TestSuite and included as
+  its first child view so the results of the test suite will be
+  displayed.
+
+  See the documentation for &lt;xref linkend="lz.TestSuite"/&gt;
+  for an example of this tag.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="TestResult" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:DebugObject">
+      <xs:attribute name="messages" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzcombobox_item" type="lzx:lzcombobox_item" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class used as the default item class in lzcombobox. See lzcombobox's
+          itemclassname attribute. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="lzcombobox_item" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatacombobox_item">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basesliderthumb" type="lzx:basesliderthumb" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Basesliderthumb expects to be within a baseslidertrack (or its
+          subclass). In other words, its "classroot" should be a slidertrack. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basesliderthumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="showvalue" type="xs:string" default="${this.parent.parent.showvalue}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Toggles the floating value text when dragging thumb. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="canvas" type="lzx:canvas" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+The canvas is the container for all views within an application.
+
+The lz.canvas class represents the viewable area of the application. There is one instance of lz.canvas, named canvas. The canvas contains all views within an application.
+
+The &lt;canvas&gt; tag is the document root of an LZX application file. It contains class, resource, and font definitions, library includes, and view and other instances.
+
+See the Guide for a complete discussion of the &lt;canvas&gt; tag. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="canvas" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="string" >
+</xs:attribute>
+      <xs:attribute name="scriptlimits" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   A CSS declaration of property: value pairs used to advise the underlying runtime of desired recursion and timeout limits. Not all runtimes respect this advice. The default value is runtime dependent, but typically recursion is at least 100 and timeout at least 10 (seconds). Example: scriptlimits="recursion: 256, timeout: 15"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="screenorientation" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   Used to tell what the screen orientation is, 'portrait' or 'landscape' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="runtime" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   A String describing the target runtime. "dhtml" | "swf8" | "swf9" | "swf10" are currently supported. Others are in development.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxied" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, requests for data and media are proxied through LPS server. if false, requests are made directly to target URLs. if inherit, inherit from lzproxied query arg. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="percentcreated" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   A number from 0-1 that represents the percentage of the app that has been instantiated.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="medialoadtimeout" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   If present, specifies the default timeout in milliseconds for media load requests </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mediaerrortimeout" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   If present, specifies the default timeout in milliseconds for media errors. An error occurs when no bytes have been received. This is used in Flash to detect media loads that have failed due to the security policy. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lpsversion" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ version number of the LPS that generated this application (for .lzo files, this is the version number of the server that generated the optimized file, not the one that served it). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lpsrelease" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   release of the LPS that generated this application (for .lzo files, this is the release of the server that generated the optimized file, not the one that served it). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lpsbuilddate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   A String specifying the date and time of the LPS build. "2007-03-05T15:33:42-0800" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lpsbuild" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   A String specifying the LPS build revision and the build directory: e.g. "4075 /Users/maxcarlson/openlaszlo/legals" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="httpdataprovider" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   
+httpdataprovider is bound to the system default HTTP DataProvider.
+This will be an instance of LzHTTPDataProvider, which implements HTTP request transport. The default value of the canvas.defaultdataprovider is initially set to point to this same object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fullscreen" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   Used to switch into fullscreen display mode or back to normal display. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="framerate" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The framerate that should be used for this application </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultdataprovider" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+defaultdataprovider is bound to the system default DataProvider.
+By default, this will be an instance of LzHTTPDataProvider, which will also be pointed to by the canvas.httpdataprovider. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="boolean" >
+</xs:attribute>
+      <xs:attribute name="datasets" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   Dictionary of all named datasets. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataloadtimeout" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+   If present, specifies the default timeout in milliseconds for data load requests </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="appbuilddate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  A String specifying the date and time of the application build. "2008-09-12T14:15:12Z" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="allowfullscreen" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether fullscreen display state is supported for the SWFx runtimes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="label" type="lzx:label" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      An abstract class that applies all features label.
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="label" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="style" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the style will be applied
+            @keyword private</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rvaly" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The original y value for this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rvalx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The original x value for this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltextsize" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text size of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltext" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltcolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the text of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lbwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the border of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lborder" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the border of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fadein" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to initially fade this label in. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enableCache" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rte" type="lzx:rte" >
+</xs:element>
+  <xs:complexType name="rte" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:html">
+      <xs:attribute name="wrapperfile" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Location of the html wrapper file used by the editor.
+          An empty string (default) loads the system wrapper file.
+          If a custom wrapper file is used, the path is relative to where
+          the application runs from.
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="toolbar_order" type="xs:string" default="undo,redo,|,cut,copy,paste,|,bold,italic,underline,strikethrough,|,insertOrderedList,insertUnorderedList,indent,outdent,|,justifyLeft,justifyRight,justifyCenter,justifyFull,|,foreColor,hiliteColor,|,createLink,unlink,insertImage,|,print,smiley,||,fontName,fontSize" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ dijit.Editor toolbar order. The list of items to show in the editor
+          toolbar. The default is to show all toolbar features.
+          A '|' inserts a separator between blocks of toolbars. 
+          A '||' will force a linebreak in the toolbar.
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The initial value of the text to edit. The text is updated while
+          the rte is running.
+          @type html
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ontext" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The ontext event is generated whenever the rte text content changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oneditorready" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The oneditor event is generated whenever the rte editor is completely loaded. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="on_text" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="on_rte_loaded" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="on_editorready" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="extra_plugins" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Comma-separated list of additional dijit.Editor plugins to load.
+          An empty string (default) will load only the plugins used by default.
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="editorready" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the rte editor is ready to receive commands
+          @type Boolean
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dojo_theme" type="xs:string" default="tundra" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ dojo theme to use. Default value is 'tundra'
+          Other values in dojo 1.5 are soria, nihilo, claro
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dojo_root" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ root url where Dojo library is loaded. An empty string (default)
+          will load the library from Google. This path must end with a '/'.
+          For example, if you have a local version located at /trunk, 
+          you would specify something like '/trunk/dojo-release-1.5.0/'.
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dojo_locale" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ dojo locale to use. Default value is '' which will use the
+          locale from the browser.
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dojo_js" type="xs:string" default="dojo/dojo.js" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Dojo library to load (relative to dojo_root). This value is
+          ignored if dojo_root is empty. Default value is 'dojo/dojo.js'.
+          If you want to load an uncompressed version of dojo, specify
+          'dojo/dojo.js.uncompressed.js'
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dojo_css" type="xs:string" default="dijit/themes/" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Dojo stylesheet root (relative to dojo_root). This value is
+          ignored if dojo_root is empty. Default value is 'dijit/themes/'
+          @initarg String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="script" type="lzx:script" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Client executed script </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="script" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Client executed script </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="datapointer" type="lzx:datapointer" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The binder between data and nodes.
+Datapaths are used to merge data hierarchies with the hierarchy of an OpenLaszlo application. This is done using the the XPath syntax supported by lz.datapointer. When a node is given a datapath attribute, a datapath with the given value as its XPath is created. If the datapath retrieves a node (i.e. it doesn't terminate in an attribute getter or a () operator) then the node is mapped to that data context and all child nodes will implicitly share the datacontext, but no further action is taken. If the datapath retrieves data, rather than just a node, a few extra things happen. First, the node's data property is set and the node's ondata event is sent. Second, the node's applyData method is called with the data as the argument. In cases where a datapath matches more than one data node, the view with the matching datapath is replicated once for each data node that matches, and a lz.ReplicationManager takes over the view's spot in its parent.
+
+When a node is replicated, an LzReplicationManager takes it's place, and an onclones will be sent when the node's clones are updated.
+
+A node can only have one datapath, and datapaths always have the name datapath. Additional options available on datapath such as pooling and replication are specified by writing the &lt;datapath&gt; tag as a separate node. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datapointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="xpath" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="rerunxpath" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	This determines the behavior of the datapointer in response to notification that the dataset the datapointer is mapped to has changed. If rerunxpath is true, the datapointer will always rerun its remembered XPath (set with the xpath property). If it is false, the datapointer will only verify that the node it is pointing to is still in the dataset. If it isn't, the datapointer will rerun its remembered xpath (if it has one) or will print a debug message if any further attempt is made to use its current node as the basis for a relative XPath query.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="p" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The LzDataNodeMixin that the datapointer is pointing to. Calling setAttribute on p calls LzDatapointer.setPointer.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="context" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The reference to a clonemanager from a clone. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="contextmenu" type="lzx:contextmenu" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+A contextual menu </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="contextmenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="delegate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+		Sets the delegate which will be called when a menu item is selected. An onselect event is also sent.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basefocusview" type="lzx:basefocusview" >
+</xs:element>
+  <xs:complexType name="basefocusview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="target" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a reference to the view that is currently focused </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="duration" type="xs:string" default="400" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the duration of the animation from one focused view to the next </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="active" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ true during keyboard navigation, when this view is visible 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="node" type="lzx:node" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The base class for all Laszlo classes.
+JavaScript: lz.node
+The lz.node class provides the basic interface for OpenLaszlo objects: parent/child hierarchy, setters, interaction with the instantiator, and reference resolution. New nodes (and subclasses thereof) can be created by new-ing the class, like this: var mynode= new LzNode( parent , args ); where parent is the parent for the new node, and args is an Object whose name/value pairs are attributes to be set on the new node.  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="node" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="transition" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Allows node attributes to be automatically animated when set. A string of transitions, according to the css3 transition spec http://dev.w3.org/csswg/css3-transitions/#the-transition-shorthand-property- e.g. 'x 2s'. Note that transition-delay is not currently supported. [transition-property || transition-duration || transition-timing-function || transition-delay [, [transition-property || transition-duration || transition-timing-function || transition-delay]]*  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="subnodes" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	An array of all of the LzNodes which consider this LzNode their parent. This list is similar to the subviews list, but it contains all the children of this node, not just the view children.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="styleclass" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	
+A space-separated list of CSS classes that can be used in a stylesheet to select this node.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="placement" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Instructions to this element's container about where it should go within its container's internal hierarchy. See the LzNode.determinePlacement method. Defaults to the container itself.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="parent" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Reference to the node that was passed as this node's ancestor in the constructor. If this node was created by declaring it in a tag, the parent will be its lexical parent. Its lexical parent is the tag that encloses it. Allow a null parent so that nodes can be garbage collected when they are no longer needed. See also, immediateparent.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="options" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A CSS declaration of property: value pairs that modify the interaction of this node with controllers such as replicators and layouts. For example, setting options="ignorelayout: true" on a view will cause the view to not be controlled by any layout.
+[Note] 	Note
+The options that affect particular controllers and replicators are documented with each controller and replicator.
+[Note] 	Note
+options should not be accessed directly. You must use getOption and setOption to get or set the value of an option.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oninit" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+This event is sent after the node's init method has been called. Simple actions that need to occur after the node's children have been initialized can be assigned to this event. For more complex initialization, see the init method. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ondata" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+The ondata script is executed when the data selected by a view's datapath changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onconstruct" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+This is the first event a node sends, right at the end of the instantiation process, but before any subnodes have been created or references resolved </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nodeLevel" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The depth of this node in the overall node hierarchy </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="name" type="lzx:token" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The name for this subnode. If given, then this node's parent and immediate parent will store a pointer to this node as the given name value.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="initstage" type="xs:string" default="normal" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The execution of a node's init method and sending of the oninit event is under the control of its initstage attribute, as follows:
+
+immediate
+    The init method is called immediately as the last stage of instantiation. 
+early
+    The init method is called immediately after the view and its children have been instantiated. 
+normal
+    The init method is called when the parent is initialized. 
+late
+    The init method is called during idle time. To check whether init has been called, check the inited property. Force calling init using the completeInstantiation method. 
+defer
+    The init method will not be called unless explicitly requested by the completeInstantiation method. 
+
+	 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inited" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="immediateparent" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Reference to this nodes's parent in the node hierarchy. This will be different from "parent" when a class uses placement or defaultplacement to assign a subnode a specific place. For example, always use immediateparent to get a mouse position in your views coordinate system.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ignoreplacement" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Overrides placement attribute (and defaultplacement in lexical parent). See the LzNode.determinePlacement method. Defaults to false.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="id" type="lzx:token" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A unique identifier for this element. Can be used as a global variable name in JavaScript code.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultplacement" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	An attribute used in container classes. If set to a non-null value, this forces this node to run its determinePlacement method for any node whose parent is this node. If the subnode has its own placement attribute, determinePlacement will be called with that value, otherwise it will be called with this value. Note that a class's defaultplacement attribute only applies to children in subclasses or in instances, not to the children of the class itself. This means that if a class and its subclass both define a defaultplacement attribute, the attribute will be set to one value before the subclass children are created and to a different one after they are created. See the determinePlacement method.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datapath" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A shorthand version of &lt;datapath&gt;, specifies the data source for this node and its children. You write a string to datapath; reading datapath will yield a lz.datapath. If the value begins with an identifier followed by a colon, the identifier names a dataset, and the portion of the string after the colon is an XPath description of a portion of the data. Otherwise the entire attribute value is an XPath description of the data, relative to the data source of this node's parent element. Examples: "mydata:", "mydata:/a/b", "/a/b".  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="data" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The data context for the node </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cloneManager" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If this node is replicated due to data replication, the LzReplicationManager which controls this node.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="classroot" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A reference to the node that is an instance of the &lt;class&gt; where this node is defined. Members of state subclasses do not define classroot. This is convenient to use when you want to access an attribute of the class in a method or event handler that is nested deep in the node hierarchy. For example, to set the bgcolor of the class object, instead of parent.parent.parent.setAttribute(bgcolor, 0xFFFFFF) you can simply use classroot.setAttribute(bgcolor, 0xFFFFFF).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="frame" type="lzx:frame" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+A frame of a multi-frame resource.
+
+The &lt;frame&gt; tag is used to define a single frame of a multi-frame &lt;resource&gt;. A multi-frame resource contains several images which can be toggled among by script commands.
+
+Multiple frame tags can be declared consecutively to produce a single resource constructed of an unlimited number of frames. Such composed resources are often used to conveniently implement mouse rollovers, button states, or other UI elements where alternate views of a resource are required. Once a multi-frame resource has been defined and presented within a &lt;view&gt;, the developer can designate which frame is actively visible through the use of the view's setResourceNumber method.
+
+Multi-frame resources can be used in conjunction with components such as &lt;basebutton&gt;, which pre-define complex button behavior using frames designated by the user. 
+
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="frame" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The path of a file that contains the source for this object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="name" type="lzx:token" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The name of a variable that will be set to this object when the application is started. If this element is directly within a &lt;canvas&gt; or &lt;library&gt; element, the global variable and the canvas property with this name will be set to this object. If this element is within another object, that object's property with this name will be set to this object.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="webapprpc" type="lzx:webapprpc" >
+</xs:element>
+  <xs:complexType name="webapprpc" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rpc">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseslider" type="lzx:baseslider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The base class for implementing sliders representing a range of
+              values. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevaluecomponent">
+      <xs:attribute name="trackheight" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height of the track. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="track" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The base class for implementing sliders representing a range of
+              values. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="thumbwidth" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the thumb. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="thumbheight" type="lzx:number" default="18" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height of the thumb. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showvalue" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Turns on / off the floating value text when the user
+              drags. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showrange" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Turns on / off the bounding range text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showfill" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Turns on / off the slider's filled area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="precision" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ significant digits of precision </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onminvalue" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onmaxvalue" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="minvalue" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxvalue" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="keystep" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ How far to move value when key navigating. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordersize" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border width. This can be set with a style. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartzoomer" type="lzx:chartzoomer" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allows users to zoom in on specific areas of the chart.
+        Click or drag right-to-left to zoom back out.  (Of beta quality.)
+        Due to a bug with drawview, this doesn't currently work in DHTML. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartzoomer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="zoomcolor" type="lzx:color" default="${parent.zoomcolor}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color tint of the zoomer. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="stableborderlayout" type="lzx:stableborderlayout" >
+</xs:element>
+  <xs:complexType name="stableborderlayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="axis" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates. One of 'x' or 'y'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="windowpanel" type="lzx:windowpanel" >
+</xs:element>
+  <xs:complexType name="windowpanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basewindow">
+      <xs:attribute name="titlearea_inset_top" type="xs:string" default="6" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for the window title area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="title" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the title of a window : this string appears at the top
+              of the window. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="xs:string" default="22" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for the window content area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="xs:string" default="11" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for the window content area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="xs:string" default="6" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for the window content area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="xs:string" default="20" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for the window content area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="closeable" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the window will have a close control. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="iconradioitem" type="lzx:iconradioitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the iconradioitem class is a radio button with only an icon
+        @START_CODE
+        &lt;iconradioitem iconname="target" /&gt;
+        @END_CODE
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="iconradioitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+      <xs:attribute name="rightrsc" type="xs:string" default="iconradiobutton_small_right_rsc" >
+</xs:attribute>
+      <xs:attribute name="middlersc" type="xs:string" default="iconradiobutton_small_middle_rsc" >
+</xs:attribute>
+      <xs:attribute name="leftrsc" type="xs:string" default="iconradiobutton_small_left_rsc" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ background resources </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon filename </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icon_y" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon y position. calculated if not specified explicitly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icon_x" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon x position. calculated if not specified explicitly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawview" type="lzx:drawview" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+
+    @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
+               Use is subject to license terms.
+
+    @access public
+    @affects lzdrawview
+    @topic LFC
+    @subtopic Views
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="drawview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="strokeStyle" type="xs:string" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Represents the colour to use for the lines around shapes.  Specified as a hexadecimal number (0xffffff) or a CSS string ('#ff00ff' or '#f0f').
+        @type String
+        @lzxtype string
+        @lzxdefault "#000000"
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="miterLimit" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Gives the default miterLimit value for lines.
+          @type Number
+          @lzxtype number
+          @lzxdefault 10
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="measuresize" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the size of the drawview will be set dynamically based on its contents, where possible. (swf-only)
+      @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lineWidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Gives the default width of lines, in coordinate space units.
+          Negative values are ignored.  0 draws hairlines in swf - lines that
+          are always 1 pixel wide even when scaled.
+          @type Number
+          @lzxtype number
+          @lzxdefault 1
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lineJoin" type="xs:string" default="miter" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Gives the default lineJoin value for lines. Round for consistency between swf and dhtml.
+          @type String
+          @lzxtype "round" | "bevel" | "miter"
+          @lzxdefault "miter"
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lineCap" type="xs:string" default="butt" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Gives the default lineCap value for lines. Round for consistency between swf and dhtml.
+          @type String
+          @lzxtype "butt" | "round" | "square"
+          @lzxdefault "butt"
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="globalAlpha" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Gives an alpha value that is applied to shapes and images
+          before they are composited onto the canvas. The valid range of
+          values is from 0.0 (fully transparent) to 1.0 (no additional
+          transparency). If the attribute is set to values outside this range,
+          it is ignored. When the context is created, the globalAlpha
+          attribute initially has the value 1.0.
+          @type Number
+          @lzxtype number
+          @lzxdefault 1.0
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillStyle" type="xs:string" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Represents the colour or style to use for the fill inside the shapes. Can be either a hexadecimal number (0xffffff), a CSS string ('#ff00ff' or '#f0f'), or a CanvasGradient/LzCanvasGradient.
+        @type String
+        @lzxtype string
+        @lzxdefault "#000000"
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aliaslines" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, lines will be offset by lineWidth / 2 to appear aliased (dhtml-only)
+      @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="slider" type="lzx:slider" >
+</xs:element>
+  <xs:complexType name="slider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseslider">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resizestatemin" type="lzx:resizestatemin" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Resizes its immediateparent with a minimum size in response to mouse events, when applied. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="resizestatemin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:resizestate">
+      <xs:attribute name="resize_min_width" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum width to resize to </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resize_min_height" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum height to resize to </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="propedit" type="lzx:propedit" >
+</xs:element>
+  <xs:complexType name="propedit" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:toggletext">
+      <xs:attribute name="prop" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isnumber" type="xs:string" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="icontogglebutton" type="lzx:icontogglebutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the icontogglebutton class is a icon button with two states, no text. the resource passed in should
+          have two frames, one for each state.
+        @START_CODE
+        &lt;icontogglebutton iconresource="resourcename"/&gt;
+        @END_CODE
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="icontogglebutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="statenum" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ button state (either 0 or 1)  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icony" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ fine-tune the vertical position of icon </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconresource" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon resource name </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menuseparator" type="lzx:menuseparator" >
+</xs:element>
+  <xs:complexType name="menuseparator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="xinset" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the number of pixels to inset the menuseparartor from the sides of the menu </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabsbar" type="lzx:basetabsbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This class is a container for basetab items. It must be a child of
+          basetabs. The default layout for its subviews is "class: simplelayout;
+          axis: x; spacing: 0". You can pass the name of this class in the
+          'barclass' attribute of tabpane, basetabpane, basetabs, and
+          tabs. Basetabs uses this class as its default 'barclass'. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basetabsbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselist">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewlistmanager" type="lzx:viewlistmanager" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private  
+        Manage a hash table of viewslist 
+     </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="viewlistmanager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="pools" type="xs:string" default="${new Object()}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private  
+        Manage a hash table of viewslist 
+     </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="swatchview" type="lzx:swatchview" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ swatchview is a simple view that is filled with a single color.
+    Either 'fgcolor' and 'bgcolor' may be used to set the color of the view.
+    By default it fills the space of the parent with white </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="swatchview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="color" type="xs:string" default="0xffffff" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ this is the color that was set (by setting 'bgcolor' or 'fgcolor' ),
+        bgcolor may be different if setColorTransform has been called
+        @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dataselectionmanager" type="lzx:dataselectionmanager" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+   
+    @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
+               Use is subject to license terms.
+   
+    @affects lzdataselectionmanager
+    @access public
+    @topic LFC
+    @subtopic Helpers
+    @devnote TODO: [20080930 anba] (LPP-6080) uncomment typing in method signatures
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="dataselectionmanager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:selectionmanager">
+      <xs:attribute name="manager" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="horizontalaxis" type="lzx:horizontalaxis" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     Represents the X-axis on the rectangular chart extends from Axis class
+     @access public
+     </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="horizontalaxis" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:axis">
+      <xs:attribute name="labelLenght" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datacolumn" type="xs:string" default="x" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="constantlayout" type="lzx:constantlayout" >
+</xs:element>
+  <xs:complexType name="constantlayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="value" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The constant value that is applied to the attribute
+          ( defined in 'axis' as 'x' or 'y' ) of each subview in the layout. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates either 'x' or 'y'.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="streamprogress" type="lzx:streamprogress" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An instance of this class will set its width relative to the
+      progress of the given stream and its maxwidth attribute. It is
+      green by default; however, to make it appear with a resource, you may
+      set the bgcolor to null and provde a resource (and don't forget to set
+      stretches attribute).
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="streamprogress" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="totaltime" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ read-only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="time" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ read-only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stream" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ stream for which to show the progress </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="progress" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a value between 0 and 1 indicating how much of the stream has played
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxwidth" type="lzx:number" default="${parent.width}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ max width that this will grow to (defaults to parent's width </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="multistatebutton" type="lzx:multistatebutton" >
+</xs:element>
+  <xs:complexType name="multistatebutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="statenum" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the current state </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="statelength" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the number of frames in a state </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxstate" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the largest number allowed for the value of statenum </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabsbar" type="lzx:tabsbar" >
+</xs:element>
+  <xs:complexType name="tabsbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabsbar">
+      <xs:attribute name="spacing" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Spacing between tab items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videovolumebutton" type="lzx:videovolumebutton" >
+</xs:element>
+  <xs:complexType name="videovolumebutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="volumeInternal" type="xs:string" default="1.0" >
+</xs:attribute>
+      <xs:attribute name="volume" type="xs:string" default="${this.mute ? 0.0 : this.volumeInternal}" >
+</xs:attribute>
+      <xs:attribute name="trackingDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="tracking" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="over" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="mute" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="adjusting" type="xs:string" default="${             this.button.over ||              this.button.tracking ||              this.adjuster.over  ||              this.adjuster.tracking}" >
+</xs:attribute>
+      <xs:attribute name="adjusterHeight" type="xs:string" default="100" >
+</xs:attribute>
+      <xs:attribute name="adjusterBorder" type="xs:string" default="2" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basescrollthumb" type="lzx:basescrollthumb" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Basescrollthumb expects to be within a basescrollbar (or a subclass).
+          In other words, its "classroot" must be a scrollbar. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basescrollthumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="doffset" type="xs:string" default="this.getMouse( 'y' )" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabslider" type="lzx:tabslider" >
+</xs:element>
+  <xs:complexType name="tabslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabslider">
+      <xs:attribute name="bordersize" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="lzx:color" default="${this.style != null ? this.style.bordercolor : null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border color. Default is constrained to the 
+              &lt;tagname&gt;style&lt;/tagname&gt;'s &lt;attribute&gt;bordercolor&lt;/attribute&gt; 
+              value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="style" type="lzx:style" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ contains style attributes which are applied to components to modify their look </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="style" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="textselectedcolor" type="lzx:color" default="black" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used as the text color with 'selectedcolor' to color the
+        selected item </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="texthilitecolor" type="lzx:color" default="iceblue1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used as the text color with 'hilitecolor' to highlight an item,
+        such as when mouse is over a menu item </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textfieldcolor" type="lzx:color" default="white" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ background color for text areas </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textdisabledcolor" type="lzx:color" default="gray60" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used as the text color when a component is disabled </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textcolor" type="lzx:color" default="gray10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color for text </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectedcolor" type="lzx:color" default="iceblue3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used when an item is selected, such as in a list </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="menuitembgcolor" type="lzx:color" default="textfieldcolor" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ background color for menu items, defaults to the 'textfieldcolor' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isstyle" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ this is a style object
+          @access private
+          @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isdefault" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if true, this style is the default style for components  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hilitecolor" type="lzx:color" default="iceblue4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used when the background color changes to highlight an item,
+        such as when mouse is over a menu item </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="disabledcolor" type="lzx:color" default="gray30" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used when an item is disabled </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="canvascolor" type="lzx:color" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ canvas color, default: null (will use whatever is specified
+        as the canvas bgcolor, default: white) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordersize" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the line width used in those components that have a visual border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="lzx:color" default="gray40" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used to color the frame of a component for those that have a visual
+        border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgcolor" type="lzx:color" default="white" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used for colorizing the backgrounds of content areas, such
+          as the background in tabslider's content, and window's content </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="basecolor" type="lzx:color" default="offwhite" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used for colorizing a component, components will typically use
+        varying shades of this color </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basescrollbar" type="lzx:basescrollbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Contains non-visual aspects of a scrollbar. Subclasses are expected to
+          define this.thumb and this.scrolltrack to reference the views that
+          perform those functions. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basescrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="usemousewheel" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, this scrollbar listens for mousewheel events </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stepsize" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The amount that the scrolltarget is moved when the user clicks on
+              the scrolltrack or when the step method is called. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrolltarget" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view that is controlled by the scrollbar.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollmax" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum distance to scroll, default: the height or width
+              of the scrolltarget. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollattr" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The attribute of the scrolltarget that is modified by the scrollbar,
+              default: value of axis attribute.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollable" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if the scrolltarget is bigger than the containing view
+              therefore the scrollbar is active. The scrollbar appears disabled
+              when scrollable is false. You can make the scrollbar invisible
+              when there is nothing to scroll by setting visible="${scrollable}"
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pagesize" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum distance to scroll, default: the height or width
+              of the scrollbar.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onscrollmax" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mousewheelevent_on" type="xs:string" default="onfocus" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The event that activates the mousewhen when sent from the focusview </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mousewheelevent_off" type="xs:string" default="onblur" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The event that deactivates the mousewhen when sent from the focusview </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mousewheelactive" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the mousewheel is active for the focusview.
+              @keywords read-only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focusview" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view to which the scrollbar should listen for focus 
+            events. If not set, it will be set to the scrolltarget
+            or the immediateparent of the scrollbar,
+            whichever is focusable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Axis may be "x" or "y", controls the orientation and default
+              scrollattr
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="validatingForm" type="lzx:validatingForm" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Validators
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="validatingForm" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:form">
+      <xs:attribute name="validators" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Validators
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="errorcount" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="PopupCircle" type="lzx:PopupCircle" >
+</xs:element>
+  <xs:complexType name="PopupCircle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:circlehotspot">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="parentView" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baselistitem" type="lzx:baselistitem" >
+</xs:element>
+  <xs:complexType name="baselistitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevaluecomponent">
+      <xs:attribute name="selected" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether this item is selected. Our containing list will adopt the value
+              of this component when it is selected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselected" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when this item is selected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when the user makes a selection. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="piechartplotarea" type="lzx:piechartplotarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+         A pie chart plot area where the pie slices are rendered
+         @access public
+         </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="piechartplotarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="style" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Defines the pie slice's style </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="formlayout" type="lzx:formlayout" >
+</xs:element>
+  <xs:complexType name="formlayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each view in the layout </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxwidth" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="inset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to inset the first view controlled by the layout</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="counter" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates. One of 'x' or 'y'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="align" type="xs:string" default="left" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mred" type="lzx:mred" >
+</xs:element>
+  <xs:complexType name="mred" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="urls" type="xs:string" default="[ 'http://www.openlaszlo.org/images/edsurf.gif',                      'http://www.openlaszlo.org/images/ednpals2.gif',                      'http://www.openlaszlo.org/images/edchess1.jpg',                      'http://www.openlaszlo.org/images/edandalaninbarn.jpg'                    ]" >
+</xs:attribute>
+      <xs:attribute name="urlnum" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="timedel" type="xs:string" default="${new LzDelegate ( this , 'advance' )}" >
+</xs:attribute>
+      <xs:attribute name="running" type="xs:string" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="bluestyle" type="lzx:bluestyle" >
+</xs:element>
+  <xs:complexType name="bluestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="axis" type="lzx:axis" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A abstract class that represents one of the axes of a rectangular chart. In general, axis isn't instantiated directly     
+    @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="axis" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="type" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the axis type can be 'linear' or 'categorical' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titleY" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the placement in Y position of the Axis title </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titleX" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the placement in X position of the Axis title </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titleLocation" type="xs:string" default="default" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the placement of the Axis title possible values: 'low','high','default'</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="titleGap" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="title" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Axis title label</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tickmarkLabelMaxDecimals" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ticklabelcolumn" type="xs:string" default="$once{''}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Data Column that is used to override the values of Tic Marks labels   </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tickMarksLabelsEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable the rendering of tic Marks labels </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tickMarkPositions" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Exposes distances where tickmarks are drawn 
+        @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scale" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ratioPixel" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="offset" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minorTickEnabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable minor Tics Marks </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimumRender" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimum" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Numerical value that indicates the Minimum value in the axis can be positive or negative value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maximumRender" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maximum" type="xs:string" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Numerical value that indicates the Maximum value in the axis can be positive or negative value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="majorTickEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable Major Tics Marks </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="majorInterval" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allows to customize the interval of the Major Tics Marks</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelrotation" type="xs:string" default="horizontal" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the axis title rotation can be 'horizontal' or 'vertical' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelTextArray" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Exposes distances where tickmarks are drawn 
+        @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelReposEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Attribute that controls if the labels are vertically repositioned to avoid overlaping </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelArray" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="interval" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the interval of values between the tic marks of the axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fixedRange" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Fix the range of the axis to the maximum &amp;amp; minimum   </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataSeries" type="xs:string" default="[]" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="columnName" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the column name associated to the axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="categoricalArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axisEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable or disable the axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="adjustmin" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colormenuitem" type="lzx:colormenuitem" >
+</xs:element>
+  <xs:complexType name="colormenuitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="mycolor" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sliderknob" type="lzx:sliderknob" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="sliderknob" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="minx" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxy" type="xs:string" default="100" >
+</xs:attribute>
+      <xs:attribute name="isMouseDown" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="custombutton" type="lzx:custombutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The custombutton class can include text and/or an icon, with our app-specific background graphic
+        &lt;example&gt;
+          &amp;lt;canvas&amp;gt;
+            &amp;lt;include href="incubator/custombutton.lzx"/&amp;gt;
+            &amp;lt;custombutton iconname="target" text="Hit Me"/&amp;gt;
+          &amp;lt;/canvas&amp;gt;
+        &lt;/example&gt;
+
+        the icon should be a resource with a name ending in "_icon_rsc";
+        the iconname should be that resource name, without the "_icon_rsc"
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="custombutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="texty" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ use to fine-tune text y position </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rightrsc" type="xs:string" default="custombutton_small_right_rsc" >
+</xs:attribute>
+      <xs:attribute name="middlersc" type="xs:string" default="custombutton_small_middle_rsc" >
+</xs:attribute>
+      <xs:attribute name="leftrsc" type="xs:string" default="custombutton_small_left_rsc" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ background resources </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icony" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ fine-tune the vertical position of icon </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconstretches" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ controls whether the icon stretches (none|both) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconspace" type="xs:string" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ fine-tune the horizontal spacing of icon to text </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ icon resource name prefix </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="expandedWidth" type="xs:string" default="$once{this.width}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ max width of button </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="collapsedWidth" type="xs:string" default="30" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ min width of button </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="barchartplotarea" type="lzx:barchartplotarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords private
+     plotarea of barchart </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="barchartplotarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:virtualdrawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="xdragstate" type="lzx:xdragstate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="xdragstate" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="xdoffset" type="xs:string" default="this.getMouse( 'x' )" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="x" type="xs:string" default="${limit(minx, maxx,                     this.immediateparent.getMouse( 'x' ) - this.xdoffset)}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basecombobox" type="lzx:basecombobox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A dropdown list of selectable items. Can either be editable or
+          not. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basecombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="text_y" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the x position of the text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_width" type="lzx:number" default="${this.width - 19}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the width the text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The spacing size ( in pixels ) between items in the pop-up list.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shownitems" type="xs:string" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the height of the combobox to show 'n' items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The initial selected item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered whenever the user makes a selection. It
+              may be used as a script in the combobox tag or as an event method.
+              </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ondefaultselection" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is sent when the default selection is set.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="min_width" type="lzx:number" default="50" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum width this component is allowed to be.
+              @keywords defaultsetter </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemclassname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The class that is used to create an item in the list. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isopen" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates whether or not the popup list is showing.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="editable" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Make the text field of this combobox editable. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaulttext" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text that appears in the text field when no item is selected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultselection" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number of the item that is initially selected. This overrides
+              the value defined in the defaulttext attribute </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataoption" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of "lazy", "resize", "pooling", "none". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datacontrolsvisibility" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="bordersize" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border size ( in pixels ) of the popup list.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoscrollbar" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether a scrollbar should automatically show up when there are more
+              items than shownitems. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attachoffset" type="lzx:number" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The vertical offset of the floatinglist attached to this
+              combobox. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="audio" type="lzx:audio" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Imports an audio file.
+[Warning]This tag is obsolete. Its functionality has been replaced by the &lt;resource&gt; tag. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="audio" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Imports an audio file.
+[Warning]This tag is obsolete. Its functionality has been replaced by the &lt;resource&gt; tag. 
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="basefloatinglist" type="lzx:basefloatinglist" >
+</xs:element>
+  <xs:complexType name="basefloatinglist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:list">
+      <xs:attribute name="attachtarget" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view to which this floatinglist will attach. By default, this
+              will be the lexical parent.  The style of the attachtarget will be
+              inherited. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attachoffset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The distance from the attachtarget. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attach" type="xs:string" default="bottom" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Where this floatinglist should attach to its owner. Possible
+              values: bottom, top, left, right.  In the event of a canvas
+              out-of-bounds, the floating list will attach in a visible
+              location. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basecomponent" type="lzx:basecomponent" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an abstract class which all components subclass </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basecomponent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the label or title of the component: instead of using this 
+              attribute text may instead be placed withing the tag, for
+              example: &amp;lt;button&amp;gt;OK&amp;lt;/button&amp;gt; </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="styleable" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ whether style should be applied to this component </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="style" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  if null, the style is set to the inherited style from the parent
+               component, if no parent component the style will be the canvas
+               'defaultstyle' attribute </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onstyle" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onisdefault" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event: when isdefault changes
+              @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onfocusable" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="on_enabled" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isdefault" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set to true, this component will be the default (and will
+              therefore receive the enter key) if it is nearest to the focussed
+              view, and if that focussed view does not have doesenter set to
+              true. "Nearness" is defined to mean the closest common parent
+              with the focussed view that is not excluded from the mode, and
+              which is visible onscreen.
+              </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hasdefault" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ set to true when this component will receive enter key events </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enabled" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ when false the component should appear as its disabled state and
+              not respond to user events. The component is
+              automatically set to clickable when enabled, and not clickable
+              when disabled.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="doesenter" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if set to true, the component manager will call this component
+              with doEnterDown and doEnterUp when the enter key goes up or down
+              if it is focussed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="camera" type="lzx:camera" >
+</xs:element>
+  <xs:complexType name="camera" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:mediadevice">
+      <xs:attribute name="width" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width (resolution) that will be captured by the camera. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="show" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, show camera on immediateparent videoview.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="picturequality" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Camera picture quality: a value between 0 and 1, where 1
+              represents the highest quality (no compression). When
+              0 is passed, this indicates to use highest quality that
+              fits into the available bandwidth </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="height" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height (resolution) that will be captured by the camera. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fps" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number of frames per second that will be captured 
+              by the camera. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="favorsize" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Often several capture modes are available per camera device.
+              These modes will allow capturing at a specific size (width/height)
+              and framerate.  If you specify both fps and width and height for
+              this camera, this attribute will control which capturing mode
+              for the camera device will be used. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bandwidth" type="xs:string" default="16384" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Camera bandwidth (in bytes per second). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="toggletext" type="lzx:toggletext" >
+</xs:element>
+  <xs:complexType name="toggletext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="editing" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tickmarklabel" type="lzx:tickmarklabel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private Represents the tickmark text which appears on a computerized note </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="tickmarklabel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:label">
+      <xs:attribute name="styleSet" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Attribute to handle style set optimization
+        @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="photo" type="lzx:photo" >
+</xs:element>
+  <xs:complexType name="photo" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datamarker" type="lzx:datamarker" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      datamarker for the chart
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datamarker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorpicker" type="lzx:colorpicker" >
+</xs:element>
+  <xs:complexType name="colorpicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:window">
+      <xs:attribute name="selectedColor" type="lzx:number" default="0x000000" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseslidertrack" type="lzx:baseslidertrack" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Baseslidertrack expects to be within a baseslider (or its
+          subclass). In other words, its "classroot" should be a slider. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseslidertrack" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorpot" type="lzx:colorpot" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Components
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="colorpot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="mycolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Components
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="listener" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="pre" type="lzx:pre" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="pre" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+  </xs:complexType>
+<xs:element name="wrappinglayout" type="lzx:wrappinglayout" >
+</xs:element>
+  <xs:complexType name="wrappinglayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="yspacing" type="xs:string" default="${this.spacing}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between the views controlled by the layout in
+          the y axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="yinset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to offset the first view controlled by the layout in y
+          axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xspacing" type="xs:string" default="${this.spacing}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between the views controlled by the layout in
+          the x axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xinset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to offset the first view controlled by the layout in x
+          axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="spacing" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between the views controlled by the layout in
+          both axes. By default, both xspacing and yspacing are set to this
+          value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="duration" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If given, a number of miliseconds to use to animate the views in to
+          place.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="x" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The primary axis for wrapping. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="checkbox" type="lzx:checkbox" >
+</xs:element>
+  <xs:complexType name="checkbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="text_y" type="lzx:number" default="${this.cb.height/2 - this._title.height/2+1}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the text label. default: centered </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resizeview_x" type="lzx:resizeview_x" >
+</xs:element>
+  <xs:complexType name="resizeview_x" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="right" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="middle" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="left" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="html" type="lzx:html" >
+</xs:element>
+  <xs:complexType name="html" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="target" type="xs:string" default="$once{this.parent}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the view to listen to for x/y/width/height change events.  Defaults to this.parent.
+          @type LzView
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the URL the html tag should load
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shownativecontextmenu" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, show native context menus in the iframe.  Otherwise, show OpenLaszlo context menus.  Note that this only works in DHTML because it's not possible to programatically display a context menu in Flash.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollbars" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the html tag will have scrollbars.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rpcmethods" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Contains a list of method names available to call with callRPC().
+          @type Array
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ready" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the html tag is ready to receive commands
+          @type Boolean
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ontarget" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onsrc" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onready" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="mouseevents" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, attempt to listen for mouse events on the iframe.  Cross-domain security restrictions apply, so if the content loaded in the iframe is from a different domain, mouse events won't be sent.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimumwidth" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum width of the iframe: embedded swfs won't load with a size less than 1
+          @type Number
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimumheight" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum height of the iframe: embedded swfs won't load with a size less than 1
+          @type Number
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="loading" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the html tag is currently loading
+          @type Boolean
+          @access public
+          @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iframeid" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="html" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The HTML that the iframe starts out containing.
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="history" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the html tag will set browser history.
+          @type Boolean
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="framename" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the name/target of the html iframe.
+          @type String
+          @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="frametimer" type="lzx:frametimer" >
+</xs:element>
+  <xs:complexType name="frametimer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="fps" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="delta" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resizeview_y" type="lzx:resizeview_y" >
+</xs:element>
+  <xs:complexType name="resizeview_y" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="top" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="middle" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="bottom" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baselist" type="lzx:baselist" >
+</xs:element>
+  <xs:complexType name="baselist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="toggleselected" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ When true, the first click on a list item selects it and the
+              second click deselects it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered whenever the user makes a selection it may
+              used as a script in the tag or as an event method. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemclassname" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered whenever the itemclassname attribute 
+              changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiselect" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If multiselect is true, multiple items may be selected. When the
+              shift key is down, a range of items is selected. When the control
+              key is down, any item may be added to the selection. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemclassname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the class for new items that will be created with
+              addItem(). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultselection" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The index of the default selected item, if none is provided via
+              the selected="true" attribute on an item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataoption" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of "lazy", "resize", "pooling", "none". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="selectionmanager" type="lzx:selectionmanager" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+   
+    @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
+               Use is subject to license terms.
+   
+    @affects lzselectionmanager
+    @access public
+    @topic LFC
+    @subtopic Helpers
+    @lzxname selectionmanager
+    @devnote TODO: [20080930 anba] (LPP-6080) uncomment typing in method signatures
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="selectionmanager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="toggle" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        @type Boolean
+        @lzxtype boolean
+      </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectedHash" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        @access private
+        @type Object
+      </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        @access private
+        @type Array
+      </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sel" type="xs:string" default="setSelected" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the method to call on an object when an object's
+        selectedness changes. The method is called with a single Boolean
+        argument. The default value for this field is &lt;code&gt;setSelected&lt;/code&gt;.
+        (This feature is not available for &lt;tagname&gt;dataselectionmanager&lt;/tagname&gt;.)
+        @type String
+        @lzxtype string
+      </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lastRangeStart" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        @type *
+        @access private
+      </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datalabel" type="lzx:datalabel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      Represents the data text which appears on a computerized note
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datalabel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:label">
+      <xs:attribute name="labelOut" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="handler" type="lzx:handler" >
+</xs:element>
+  <xs:complexType name="handler" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="reference" type="xs:string" default="this" >
+</xs:attribute>
+      <xs:attribute name="name" type="xs:string" use="required" >
+</xs:attribute>
+      <xs:attribute name="method" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="args" type="xs:string" default="" >
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="tooltip" type="lzx:tooltip" >
+</xs:element>
+  <xs:complexType name="tooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="yoffset" type="xs:string" default="25" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        The vertical offset of tooltip from the mouse position.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tipvalign" type="xs:string" default="default" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Whether the tooltip shows up above or below the mouse
+        position. Default will position heuristically to keep
+        the tooltip visible on the canvas.
+
+        @lzxtype above | below | default
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tipalign" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Whether the tooltip is horizontally aligned by it's left edge
+        (default) or right edge relative to the mouse position.
+
+        @lzxtype right | left
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        The text that will be displayed by the tooltip.  If the text
+        is &lt;code&gt;null&lt;/code&gt; or empty, no tooltip will be displayed.
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewslist" type="lzx:viewslist" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pool of ordered view  
+         - @keyword private
+        </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="viewslist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="vlist" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pool of ordered view  
+         - @keyword private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="viewclass" type="xs:string" default="$once{null}" >
+</xs:attribute>
+      <xs:attribute name="parentview" type="xs:string" default="${parent}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="combobox" type="lzx:combobox" >
+</xs:element>
+  <xs:complexType name="combobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecombobox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datepickerlistitem" type="lzx:datepickerlistitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datepickerlistitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rtmpconnection" type="lzx:rtmpconnection" >
+</xs:element>
+  <xs:complexType name="rtmpconnection" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="status" type="xs:string" default="disconnected" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ String to indicate connection status.
+            @type string
+            @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stage" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number to indicate what stage of connection we're in:
+            0: disconnected, 1: connecting, 2: connected.
+            @type Number
+            @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="src" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Application url, for example
+            "rtmp:/appname" or "rtmp://myserver.com/myapp/".
+            @type String
+            @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onconnect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when connection established. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="objectencoding" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The AMF object encoding to use for this connection, either 0 or 3.
+            @type Number
+            @keywords final  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Turn on for verbose debugger output.
+            @type Boolean
+            @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="connectiontimeout" type="lzx:number" default="3000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number of milliseconds to wait for connection at src before 
+                using altsrc URL </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="connections" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A shared hash of connections
+            @type Object
+            @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="connectionparams" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Connection parameters that will be sent to the server when NetConnection.connect() is called
+            @type Expression
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoconnect" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Connect automatically during init. If false, you need to explicitly
+            call connect().
+            @type Boolean
+            @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="altsrc" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Alternate application url, used if the connection for src 
+                fails for example : "rtmp:/appname" or 
+                "rtmp://myserver.com/myapp/". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resizelayout" type="lzx:resizelayout" >
+</xs:element>
+  <xs:complexType name="resizelayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each view in the layout </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates either 'x' or 'y'.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basedatacombobox_item" type="lzx:basedatacombobox_item" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class used to create an item in a basedatacombobox's list.
+          @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basedatacombobox_item" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="greenstyle" type="lzx:greenstyle" >
+</xs:element>
+  <xs:complexType name="greenstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tab" type="lzx:tab" >
+</xs:element>
+  <xs:complexType name="tab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetab">
+      <xs:attribute name="padding" type="xs:string" default="20" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Text padding. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basechart" type="lzx:basechart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The base class for non-pie charts.  Contains most of the
+        shared attributes and elements.  (Of beta quality.) </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basechart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="zoomcolor" type="lzx:color" default="#DDDDDD" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the zoom selector. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="zoomable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether bars are zoomable or not. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="zerowidth" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of the line drawn at zero. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vtickwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of drawn vertical tick marks. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vticklength" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Length of drawn vertical tick marks. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vticklabelsize" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Text size of vertical tick labels. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vticklabel" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of vertical tick labels.  If not specified, no
+            labels are drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vtick" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw vertical tick marks, and if so,
+            what color.  If no color is specified, ticks are not drawn.
+            These are the tick marks that are drawn vertically, along the
+            bottom axis.  Note: In barchart, setting drawaxis to y changes
+            overall chart orientation, with the "bottom" on the left. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vgridwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Vertical grid line thickness. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vgridspacing" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Vertical grid line spacing.  (Units, not pixels.  In
+            barchart, the space between one bar and the next is
+            considered one unit.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vgridlines" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the vertical grid lines.  Note: In barchart,
+            vertical axis is considered the axis that runs parallel to the
+            orientation of the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vgridbands" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Vertical grid bands. Note: In barchart, vertical axis is
+            considered the axis that runs parallel to the orientation of
+            the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vbopacity" type="lzx:number" default=".5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Vertical grid band opacity.  Note: In barchart, vertical
+            axis is considered the axis that runs parallel to the
+            orientation of the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vaxiswidth" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of drawn vertical axis. Note: In barchart, vertical
+            axis is considered the axis that runs parallel to the
+            bars in the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="vaxis" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw a line along the vertical axis, and if so,
+            what color.  (If no color is specified, axis is not drawn.)
+            Note: In barchart, vertical axis is considered the axis
+            that runs parallel to the bars in the chart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ploty" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Plot area's y position, relative to chart as a whole. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Plot area's x position, relative to chart as a whole. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotwidth" type="lzx:number" default="${this.width - 1}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of plotting area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotheight" type="lzx:number" default="${this.height - 1}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Height of plotting area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="paneslider" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The position of the view in which the data is drawn in
+            relation to its parent clipping frame.  Allows data to be
+            dragged or slid around. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimum" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Grid's minimum displayed value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maximum" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Grid's maximum displayed value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="htickwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of drawn horizontal tick marks. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hticklength" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Length of drawn horizontal tick marks. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hticklabelsize" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Text size of horizontal tick labels. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hticklabel" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of horizontal tick labels.  If not specified, no
+            labels are drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="htick" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw horizontal tick marks, and if so,
+            what color.  If no color is specified, ticks are not
+            drawn.  These are the tick marks that are drawn horizontally,
+            along the side axis.  Note: In barchart, setting drawaxis to y
+            changes overall chart orientation, with the "bottom" on the
+            left. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hgridwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Horizontal grid line thickness. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hgridspacing" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Horizontal grid line spacing.  (Units, not pixels.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hgridlines" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the horizontal grid lines. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hgridbands" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Horizontal grid bands. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hbopacity" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Horizontal grid band opacity. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="haxiswidth" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of drawn horizontal axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="haxis" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw the horizontal axis, and what color.
+            (If no color is specified, axis is not drawn.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawzero" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw a line at zero, and what color.  If
+            no color is specified, line is not drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawaxis" type="xs:string" default="x" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The direction in which the data will be drawn.
+            Accepts values x and y.  (x - vertical bars drawn
+            from left to right.  y - horizontal bars drawn
+            top to bottom.)  Only applicable to barchart, but
+            necessary for certain shared elements. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="draggable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether bars are able to be dragged or not. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of the plot area's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether there's a border around the plot area, and if so,
+            what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgresource" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If desired, a resource can be used in the background.
+            If specified, this view will appear behind the chart,
+            with everything drawn on top of it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="belowzeroopacity" type="lzx:number" default=".2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Opacity for area below zero.  Defaults to a low number
+            for a hazy, translucent effect. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="belowzero" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to fill the area below zero, and what color.
+            (Will not be drawn if no color specified.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="baselabels" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to label the individual bar ticks, and if so,
+            what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barticks" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to have ticks for individual bars, and if so,
+            what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="altslider" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The slider for the alternate direction to paneslider. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="altminimum" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Grid's maximum for width.  (If lines are drawn
+            vertically, this controls horizontal visible area.  If lines are drawn
+            horizontally, this controls vertical visible area.  Changing these
+            will allow the user to zoom in and out on a particular area, and
+            will scale data accordingly.)  Note: Not settable in barchart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="altmaximum" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Grid's minimum for width.  (If lines are drawn
+            vertically, this controls horizontal visible area.  If lines are drawn
+            horizontally, this controls vertical visible area.  Changing these
+            will allow the user to zoom in and out on a particular area, and
+            will scale data accordingly.)  Note: Not settable in barchart. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="adjusttodata" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to adjust the graph to data. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="memorymonitor_model" type="lzx:memorymonitor_model" >
+</xs:element>
+  <xs:complexType name="memorymonitor_model" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="scale" type="lzx:number" default="1 / 1024" >
+</xs:attribute>
+      <xs:attribute name="max" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="current" type="lzx:number" default="-1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roundrectbutton" type="lzx:roundrectbutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+A class for making nice-looking, styleable buttons with gradients, without any art assets.
+
+See test/test-roundrectbutton.lzx for several examples of how to use this component. 
+
+The component attributes are only used for initialization. They are not live constraints.
+Currently the best way to change them at runtime is to apply a &amp;lt;style&amp;gt;. 
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="roundrectbutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="upStopColor" type="lzx:color" default="0x999999" >
+</xs:attribute>
+      <xs:attribute name="upStartColor" type="lzx:color" default="0xcccccc" >
+</xs:attribute>
+      <xs:attribute name="overStopColor" type="lzx:color" default="0x777777" >
+</xs:attribute>
+      <xs:attribute name="overStartColor" type="lzx:color" default="0x999999" >
+</xs:attribute>
+      <xs:attribute name="downStopColor" type="lzx:color" default="0xCCCCCC" >
+</xs:attribute>
+      <xs:attribute name="downStartColor" type="lzx:color" default="0xFFFFFF" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+A class for making nice-looking, styleable buttons with gradients, without any art assets.
+
+See test/test-roundrectbutton.lzx for several examples of how to use this component. 
+
+The component attributes are only used for initialization. They are not live constraints.
+Currently the best way to change them at runtime is to apply a &amp;lt;style&amp;gt;. 
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowY" type="xs:string" default="2" >
+</xs:attribute>
+      <xs:attribute name="boxShadowX" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="boxShadowColor" type="xs:string" default="0xb3b3b3" >
+</xs:attribute>
+      <xs:attribute name="borderWidth" type="xs:string" default="1" >
+</xs:attribute>
+      <xs:attribute name="borderRadius" type="xs:string" default="15" >
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="0x999999" >
+</xs:attribute>
+      <xs:attribute name="backgroundStopColor" type="lzx:color" default="$once{parent.upStopColor}" >
+</xs:attribute>
+      <xs:attribute name="backgroundStartColor" type="lzx:color" default="$once{parent.upStartColor}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="LzTextFormat" type="lzx:LzTextFormat" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    LzTextFormat is deprecated.  Use 'textformat' instead.
+    @keyword deprecated
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="LzTextFormat" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textformat">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myweek" type="lzx:myweek" >
+</xs:element>
+  <xs:complexType name="myweek" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepickerweek">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rpc" type="lzx:rpc" >
+</xs:element>
+  <xs:complexType name="rpc" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="secureport" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The port to use for the secure socket between the client and the
+              LPS. If secure is false, this value is ignored.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="secure" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Make connection secure between client and the LPS secure
+             (HTTPS). Default is false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxyinfo" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="proxy" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The remote proxy object. Proxy is set after the rpc object
+              loads. Proxy contains client-side function stubs to remote
+              methods. Each method takes an array of arguments and a delegate
+              like:
+
+                myrpc.proxy.remoteFunc( [ p1, p2, ..., pN ], delegate );
+
+              Remote methods with no arguments are passed in an empty array
+              like:
+
+                myrpc.proxy.otherRemoteFunc( [], delegate );
+
+              The delegate is used to handle the return value since RPC calls
+              are asynchronous.
+
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onunload" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered when the remote object is unloaded.
+              @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onload" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered when the remote object is loaded.
+              @access public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onerror" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is triggered when an error or timeout occurs associated
+              with getting this object or calling one of its remote methods. 
+              @access public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoload" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Load remote object during init. If false, create remote object by
+              calling load(). Default is true. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datacombobox" type="lzx:datacombobox" >
+</xs:element>
+  <xs:complexType name="datacombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatacombobox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basezoomarea" type="lzx:basezoomarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An abstract class that provide basic zooming ability. 
+        Allow subclasses to modify the look and feel
+        and action to be taken
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basezoomarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="starty" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="startx" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectionDel" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selecting" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ user is selecting or not </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotarea" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="endy" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="endx" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable zoom area </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="duration" type="lzx:number" default="500" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ zoom animation duration </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="chart" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the chart instance </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_componentmanager" type="lzx:_componentmanager" >
+</xs:element>
+  <xs:complexType name="_componentmanager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tree" type="lzx:tree" >
+</xs:element>
+  <xs:complexType name="tree" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetree">
+      <xs:attribute name="onactivate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Double-clicking on the icon or text triggers this event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icon" type="xs:string" default="lztree_folder_rsc" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the item icon:
+              frame 1 (closed), frame 2 (opened), frame 3 (leaf) 
+              Default is lztree_folder_rsc defined in lz/tree.lzx.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="expander" type="xs:string" default="lztree_arrow_rsc" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The resource for the expanding icon:
+              frame 1 (closed), frame 2 (opened), frame 3 (leaf).
+              Default is lztree_arrow_rsc defined in lz/tree.lzx.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartdata" type="lzx:chartdata" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A container class for dataseries instances.  Helps organize and
+        locate the data. All dataseries tags in a chart must be children
+        of this class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartdata" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="button" type="lzx:button" >
+</xs:element>
+  <xs:complexType name="button" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="text_y" type="lzx:number" default="${this.height/2 - this._title.height/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the button text. default: centered </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="lzx:number" default="${this.width/2 - this._title.width/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the x position of the button text. default: centered </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_padding_y" type="lzx:number" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the amount of space to add vertically  when sizing button to its
+        text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_padding_x" type="lzx:number" default="11" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the amount of space to add horizontally when sizing button to its
+        text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="slidertrack" type="lzx:slidertrack" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the inner track on which the sliderthumb rides </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="slidertrack" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseslidertrack">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listselector" type="lzx:listselector" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a helper class that wraps the selectionmanager in some
+        higher level APIs, used by baselist </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="listselector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:selectionmanager">
+      <xs:attribute name="multiselect" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If multiselect is true, multiple selection is enabled.
+        When the shift key is down, a range of items is selected.
+        When the control key is down, any item may be added to the
+        selection.
+             Default: false </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="piechart" type="lzx:piechart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+          A pie chart represents a chart that is displayed in the 2D
+          polar plane. This class inherits immediately from chart class
+          and can be instantiated directly. (Warning: Of beta quality.)
+          @access public
+          </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="piechart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selectedpie" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Which pie is selected, if there are multiple pies. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ploty" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Plot area y coordinate, relative to chart as a whole. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Plot area x coordinate, relative to chart as a whole. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotwidth" type="lzx:number" default="${this.width - 1}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of plotting area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotheight" type="lzx:number" default="${this.height - 1}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Height of plotting area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="plotbgcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Background color of the plot area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piespacing" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The space between the pies, if there are multiple pies. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of the plot area's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Border around the plot area, if anything. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgresource" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If desired, a resource can be used in the background.
+            If specified, this view will appear behind the chart,
+            with everything drawn on top of it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menuarrow" type="lzx:menuarrow" >
+</xs:element>
+  <xs:complexType name="menuarrow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="import" type="lzx:import" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The &lt;import&gt; tag is used to import, at run time, source code contained in another (library) file. See the Guide for a complete discussion. Also see the &lt;library&gt; tag. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="import" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="stage" type="xs:string" default="late|defer" >
+</xs:attribute>
+      <xs:attribute name="proxied" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="href" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  A reference to a target file whose content is treated as a loadable module </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="textlistitem" type="lzx:textlistitem" >
+</xs:element>
+  <xs:complexType name="textlistitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:listitem">
+      <xs:attribute name="text_y" type="xs:string" default="${this.height/2 - this._title.height/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the text label. default: centered </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="xs:string" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x position of the displayed text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rtmpstatus" type="lzx:rtmpstatus" >
+</xs:element>
+  <xs:complexType name="rtmpstatus" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="rtmpc" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ rtmpconnection to monitor </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="valueline" type="lzx:valueline" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+       Represents a line in the chart
+       @access public
+       </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valueline" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="tipEnable" type="lzx:boolean" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable tooltip for data </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tip" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the tooltip value will be display when the mouse over the line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the label will be display next to the line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the axis value could be "x" or "y" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelstyle" type="lzx:labelstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style object used for anything that contains a label within the chart.
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="labelstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="linesize" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ size of border of label background  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="linecolor" type="lzx:color" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of bounding box border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the number of pixels the font is inset from the border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontcolor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of the font </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fontangle" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ angle of rotation of the font </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillcolor" type="lzx:color" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of bounding box fill </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basevaluecomponent" type="lzx:basevaluecomponent" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an abstract class for components that represent a value for data </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basevaluecomponent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="value" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the value that this item represents. When selected,
+        the parent selection group's value will be set to this value.
+        Most subclasses require you to call getValue() to get the
+        value of the attribute.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="expression" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The type of value of the item. Default is 'expression',
+             which will attempt to heuristicate the type from the
+             value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetooltip" type="lzx:basetooltip" >
+</xs:element>
+  <xs:complexType name="basetooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="Default Value" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="form" type="lzx:form" >
+</xs:element>
+  <xs:complexType name="form" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseform">
+      <xs:attribute name="spacing" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Vertical space between content and button area. If forms height is
+              specified, the button area will be flush against the form's bottom
+              right corner (adjusted by any layout that the form has). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for content appearing within form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for content appearing within form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for content appearing within form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for content appearing within form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basestyle" type="lzx:basestyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ base style for all chart styles
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="valueregionstyle" type="lzx:valueregionstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ valueregionstyle is used for drawing the appearance of a value region
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valueregionstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartstyle" type="lzx:chartstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for chart, contain nested level of style extend from basestyle
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chartstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="version" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="onversion" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="datastyleindex" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="radiobutton" type="lzx:radiobutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Implements a "radio" button, allows a one-of-many selection when
+          several of these are in a radiogroup. Radiobutton expects its parent
+          to be radiogroup. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="radiobutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+      <xs:attribute name="text_y" type="lzx:number" default="${this.rb.height/2 - this._title.height/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the text label. default: centered </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="alert" type="lzx:alert" >
+</xs:element>
+  <xs:complexType name="alert" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:modaldialog">
+      <xs:attribute name="text_y" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The y position of the button text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x position of the button text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="result" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ After the alert is closed, this is set to true if button1 ("OK")
+              is pressed or false if button2 is pressed. You can check for the
+              result value using the onresult event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onresult" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This event is sent when a button is pressed. Use this to check the
+              result value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxtextwidth" type="xs:string" default="${Math.round(parent.width/3) - inset_left - inset_right                     - content_inset_left - content_inset_right}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The max length of a line of text before it wraps. Default: 1/3 of
+              the parent's width - width of window dressing and margin. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="button2" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If a string is set for this attribute, a second button will be
+              shown to the left of the first with this text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="button1" type="xs:string" default="OK" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Alert shows only this button, if button2 isn't set.
+              You may specify a different string to change the text of the
+              button. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basegridcolumn" type="lzx:basegridcolumn" >
+</xs:element>
+  <xs:complexType name="basegridcolumn" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="sortpath" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An xpath expression to use to determine the sort key for this
+              column. By default, this is the column's datapath's xpath. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minwidth" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum width for this column. This is relevant if the column
+              can be resized. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hasSort" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set by &lt;code&gt;doSort()&lt;/code&gt; method. If true, then this is the current
+              sort column.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="descendComparator" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An optional method. If defined, this method will be used when 
+              the column is sorted when ascendsort is set to false. This method
+              should have the comparator signature. It should accept to string
+              argument and return 1, 0 , or -1, indicating that the two
+              arguments are in order, equivalent, or out of order,
+              respectively. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datatype" type="xs:string" default="string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Either "number" or "string". If "string", then dictionary sort
+              is used. If "number", then types are coerced to a number before
+              sorting. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="colwidth" type="xs:string" default="${this.width}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The current width of the column. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ascendsort" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the next sort will be ascending, otherwise it will
+              be descending.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ascendComparator" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An optional method. If defined, this method will be used when 
+              the column is sorted when ascendsort is set to true. This method
+              should have the comparator signature. It should accept to string
+              argument and return 1, 0 , or -1, indicating that the two
+              arguments are in order, equivalent, or out of order,
+              respectively. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="strokestyle" type="lzx:strokestyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+Implementes the Stroke rendering lines </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="strokestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="strokeWidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ -    Numerical value that indicate the thickness of the Stroke line in pixels. Default value ="1"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="strokeType" type="xs:string" default="solid" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ String value that indicates the type of the Stroke, possible values : "solid", "dashed" or "dotted". Default value "solid"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="strokeColor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the Stroke in  hexadecimal value, default value "0x000000"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="spaceLength" type="lzx:number" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number of pixels of spacing between each small line that compose the stylish line. Default value ="5"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dottedLength" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Number of pixel of each small line that compose the stylish line. Default value ="10"</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menu" type="lzx:menu" >
+</xs:element>
+  <xs:complexType name="menu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="opened" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a boolean indicating whether or not the menu is in opened </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attach" type="xs:string" default="bottom" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a string to indicate how the floating part of the menu attaches to 
+              the menubutton or menuitem. Possible values are: 'top', 'bottom', 'left', and 'right' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartbacking" type="lzx:chartbacking" >
+</xs:element>
+  <xs:complexType name="chartbacking" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basechartbacking">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vslider" type="lzx:vslider" >
+</xs:element>
+  <xs:complexType name="vslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="switchaxis" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ switchaxis true means minimum-value is 
+                t op maximum is bottom false turns around </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showvalue" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ showvalue should the slider show the numbers of min/max </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showrange" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Showrange should the slidertrack be with color while 'sliding' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minvalue" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum Value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxvalue" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Maximum Value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="initvalue" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basedatacombobox" type="lzx:basedatacombobox" >
+</xs:element>
+  <xs:complexType name="basedatacombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="valuedatapath" type="xs:string" default="@value" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Datapath to value for items in list. See caveat.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="textdatapath" type="xs:string" default="text()" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Datapath to text to display for items in list. 
+              See caveat.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="statictext" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set, this will always be displayed instead of selected item
+              text. Behaves like a menu button. Also see defaulttext. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shownitems" type="xs:string" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the height to the number of items to show in combobox
+              popup list. Must be greater than 0. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectfirst" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ When true, the 1st item is selected oninit. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Datapointer to selected item. 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselected" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when an item is selected. Sends selected item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when an item is selected. Sends selected item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onisopen" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Called when combobox opens or closes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncombofocus" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The equivalent for onfocus for combobox. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncomboblur" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The equivalent for onblur for combobox. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="menuclassname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="listwidth" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of popup list, defaults to width of combobox view. During
+              setup, the width of the floating list view might not yet be set,
+              so this returns the expected width. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="listattach" type="xs:string" default="bottom" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Where the floatinglist should attach to its owner. Possible
+              values: bottom, top, left, right.  In the event of a canvas
+              out-of-bounds, the floating list will attach in a visible
+              location. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemdatapath" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Datapath to items in list. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="itemclassname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the class for items in the floating list. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isopen" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates whether or not the popup list is showing.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ismenu" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the combobox will behave like a menu. "value" is
+              ignored, and items will not remain selected. Selecting an
+              item generates an onselect event </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaulttext" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Default text to display before a selection is made. No default
+              item is selected if defaulttext is set. Defaulttext is replaced
+              with selected item's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="columnchart" type="lzx:columnchart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+       A chart class that renders vertical bars.
+       Inherits from the chart class.  (Warning: Of beta quality.)
+       @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="columnchart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rectangularchart">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="row" type="lzx:row" >
+</xs:element>
+  <xs:complexType name="row" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="label" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="include" type="lzx:include" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The &lt;include&gt; tag is used to include source code contained in another file. See the Guide for a complete discussion. Also see the &lt;library&gt; tag. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="include" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="type" type="xs:string" default="text|xml" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  If this attribute has the value text , the content of the target file is included as text. Otherwise, it is read as XML.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="href" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  A reference to a target file whose content is included in the application that contains this include element. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="menutrackgroup" type="lzx:menutrackgroup" >
+</xs:element>
+  <xs:complexType name="menutrackgroup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetrackgroup">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roundrect" type="lzx:roundrect" >
+</xs:element>
+  <xs:complexType name="roundrect" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="oninsettop" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetright" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetleft" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetbottom" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninset" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="insettop" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetright" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetleft" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetbottom" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="inset" type="lzx:size" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The margin between the outside view and the content view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowY" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x offset of the box shadow.  The box shadow is not drawn by default.
+            Specify a boxShadowColor in order to draw it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowX" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x offset of the box shadow.  The box shadow is not drawn by default.
+            Specify a boxShadowColor in order to draw it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowOpacity" type="xs:string" default="0.5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The box shadow opacity. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The box shadow color.  If this is specified, a box shadow is drawn.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderWidth" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the border.  If this is zero, no frame is drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderRadius" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The rounding radius of the border corners.  Because the default
+            join type is a round join, even a radius of zero will product some
+            rounding. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border opacity </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="black" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border color </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStopOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background stop opacity.  This defaults to one (opaque) unless the
+            stop color is not specified and the start color is, in which case it
+            defaults to zero (fully transparent). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStopColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background stop color.  This is the color that is drawn at the
+            bottom or right of the view, depending on the value of
+            backgroundGradientOrientation.  See the documentation for
+            backgroundStartColor for additional documentation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStartOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background start opacity.  This defaults to one (opaque) unless the
+            start color is not specified and the stop color is, in which case it
+            defaults to zero (fully transparent). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStartColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background start color.  This is the color that is drawn at
+            the top or left of the view, depending on the value of
+            backgroundGradientOrientation.  If this and the backround stop color
+            are specified, a gradient background is drawn in the direction specified
+            by backgroundGradientOrientation.  If only one of the background start
+            and stop color are specified, a gradient of the same color that fades to
+            transparent at the unspecified end is drawn.  If a box shadow is drawn,
+            the background defaults to white.  Specify a start and stop opacity to
+            suppress this behavior. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundGradientOrientation" type="xs:string" default="vertical" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background gradient orientation.  One of 'vertical' (the default)
+            and 'horizontal'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="versioninfo" type="lzx:versioninfo" >
+</xs:element>
+  <xs:complexType name="versioninfo" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_newinternalinputtext" type="lzx:_newinternalinputtext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A private inputtext class used by baseedittext that basically passes
+          its events (onfocus, onblur, onkeyup, onkeydown, ontext) up. Instances
+          of _internalinputtext should only exist in a baseedittext class. Note
+          that _internalinputtext assumes that its parent is a baseedittext.
+
+          Baseedittext controls _internalinputtexts y position and multiline
+          setting. Subclasses and instances should not override these
+          attributes.
+
+          @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_newinternalinputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:inputtext">
+      <xs:attribute name="ignorecallup" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True means that doSetValue called internal inputtext and inputtext
+              should not call doSetValue back. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="pointstyle" type="lzx:pointstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for point and datamarker
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="pointstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="strokeStyle" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the stroke </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shape" type="xs:string" default="square" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 'circle','square','triangle', [name of resource] </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="lineWidth" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of the stroke line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="image" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ image path </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="gradient" type="xs:string" default="none" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 'none', 'linear', 'radial' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="color" type="lzx:color" default="black" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ RGB color </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="checkdragstate" type="lzx:checkdragstate" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  This should be declared as a child of the thing for which you want to
+        enable dragging.  You will need to define a view (an instance of a
+        subclass of &lt;xref linkend="lz.basedragimage"/&gt;)
+        to define the visual look of the thing while its being dragged.
+        &lt;example executable="false"&gt;
+        &amp;lt;class name="dragger" &amp;gt;
+            ...
+            &amp;lt;handler name="onmousedown"&amp;gt;
+                checkdrag.setAttribute('applied', true);
+            &amp;lt;/handler&gt;
+            &amp;lt;handler name="onmouseup"&amp;gt;
+                canvas.dragimage.stopdrag(this);
+                checkdrag.setAttribute('applied', false);
+            &amp;lt;/handler&amp;gt;
+
+            &amp;lt;checkdragstate name="checkdrag" draggername="dragimage"/&amp;gt;
+        &amp;lt;/class&amp;gt;
+        &lt;/example&gt;
+
+        The object that you want to accept a drop action, needs to register with
+        lz.Track using the same group as is declared in the dragimage.
+
+        &lt;example executable="false"&gt;
+        &amp;lt;class name="droptarget"&amp;gt;
+            ...
+            &amp;lt;method name="init"&amp;gt;
+                super.init();
+                lz.Track.register(this, 'target');
+            &amp;lt;/method&amp;gt;
+
+            &amp;lt;handler name="onmousetrackover"&amp;gt;
+               setAttribute('bgcolor', 0xffff00); // hilite
+            &amp;lt;/handler&amp;gt;
+            &amp;lt;handler name="onmousetrackout"&amp;gt;
+               setAttribute('bgcolor', null); // normal
+            &amp;lt;/handler&amp;gt;
+            &amp;lt;handler name="onmousetrackup"&amp;gt;
+               setAttribute('bgcolor', null); // normal
+               canvas.dragimage.dropcomplete(this);
+               Debug.write('dropped: '+dragimage.source.text);
+            &amp;lt;/handler&amp;gt;
+        &amp;lt;/class&gt;
+        &lt;/example&gt;
+        
+        @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="checkdragstate" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="draggername" type="xs:string" default="dragimage" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an instance subclass of basedragimage that defines the
+         visual representation of the item while it is being dragged
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ticklabel" type="lzx:ticklabel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Labels along the tick axes. Either incremental, or, in a barchart,
+        determined by specified data. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="ticklabel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="ltextsize" type="lzx:number" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the text for this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltext" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text of this label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltcolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of this label's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelangle" type="lzx:number" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ XX To be implemented: The rotation of this particular label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="radioitem" type="lzx:radioitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  A selectable list item which works like a Radio Button
+            though uses an icon instead of radio button graphics.
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="radioitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basegridrow" type="lzx:basegridrow" >
+</xs:element>
+  <xs:complexType name="basegridrow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="styleRegularColor" type="lzx:color" default="black" >
+</xs:attribute>
+      <xs:attribute name="selectedColor" type="lzx:color" default="black" >
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="regularColor" type="lzx:color" default="black" >
+</xs:attribute>
+      <xs:attribute name="ownerGrid" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onselected" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="lineColor" type="lzx:color" default="black" >
+</xs:attribute>
+      <xs:attribute name="highlighted" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="highlightColor" type="lzx:color" default="black" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basedatepickerday" type="lzx:basedatepickerday" >
+</xs:element>
+  <xs:complexType name="basedatepickerday" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if this day is currently selected 
+              @keywords public
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if this day is selectable.  The day is selectable if 
+              it is within the range of possible selected dates 
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="disabled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if this day should be enabled or disabled.  The day 
+              would be disbled if it should not show its daynum.
+              @keywords public 
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="daynum" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The day of the month to be displayed 
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewspoolmanager" type="lzx:viewspoolmanager" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+    Manage a hash table of viewspool 
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="viewspoolmanager" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="pools" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private 
+    Manage a hash table of viewspool 
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datapath" type="lzx:datapath" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+A cursor in a dataset.
+A datapointer is an object that represents a pointer to a node in a lz.dataset. The datapointer can be repositioned using either cursor movements calls such as LzDatapointer.selectNext(), or by running an XPath request via LzDatapointer.setXPath().
+
+Datapointers support a subset of the XPath specification, which uses a notation similar to the UNIX file-system to refer to nodes within a dataset. Once a datapointer is bound to a node in a dataset it will keep pointing to that node until it is moved. If the dataset is edited, the behavior of the datapointer will be controlled by its rerunxpath attribute. If this attribute is true, it will continue pointing to its current node as long as it is valid. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datapath" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:datapointer">
+      <xs:attribute name="spacing" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The spacing (in pixels) between replicated views.
+[Note] 	Note
+This attribute is only available if replication is set to either "lazy" or "resize".  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sortpath" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+An XPath to use to obtain the sort key for sorting if replication occurs. To change this attribute, use .setAttribute('sortpath', ...),  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sortorder" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The order to use to sort the dataset if replication occurs. One of "ascending" or "descending" to use built in dictionary sort, or a function which compares two strings and returns 1 if the strings are in order, 0 if they are the same, and -1 if they are out of order. To change this attribute, use setAttribute('sortorder', ...).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="replication" type="xs:string" default="normal" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Determines whether to use normal or lazy replication, if the datapath matches more than one node. See the section on Replication in the Guide for information about the use of this attribute.
+[Note] 	Note
+The choice of replication style implies a choice of replication manager. Each replication manager may have additional attributes which are specified as attributes of the datapath. For example, lz.LazyReplicationManager takes axis and spacing attributes. See the documentaion for the corresponding replication manager for detailed information on these additional attributes.
+
+One of: 	'normal' | 'lazy' | 'resize'  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pooling" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+		This attribute applies to datapaths which match multiple nodes and force replication. If pooling is true, views that are data-bound to this datapath are recycled if the dataset changes. Otherwise, views are deleted when the data nodes they are bound to disappear, and created when new data nodes match the datapath. See the section on Pooling in the Guide for information about the use of this attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The direction in which the replicated elements will be layed out.
+		Note
+This attribute is only available if replication is set to either "lazy" or "resize".  
+	One of: "x" | "y"  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="icontab" type="lzx:icontab" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A tab item for use in sidebar.lzx - switches between listpanel views </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="icontab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+      <xs:attribute name="label_y" type="xs:string" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y offset for the label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_x" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the icon and text are contained in one view, and inset_x sets the x for its position </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="iconname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ optional icon for tab </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="icon_y" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y postion of the icon </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="linestyle" type="lzx:linestyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for point or border
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="linestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="type" type="xs:string" default="solid" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 'solid', 'dotted' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="size" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ pixel size for the stroke of the line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="color" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ RGB color on the axis line </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sliderthumb" type="lzx:sliderthumb" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the visual thumb the user drags to select a value </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="sliderthumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basesliderthumb">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datepicker" type="lzx:datepicker" >
+</xs:element>
+  <xs:complexType name="datepicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepicker">
+      <xs:attribute name="startAsIcon" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true to initially show the datepicker as an
+              icon, otherwise set to false.
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oldvalue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="allowdrag" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="linechartplotarea" type="lzx:linechartplotarea" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords private
+     plotarea of linechart </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="linechartplotarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:virtualdrawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="TestSuite" type="lzx:TestSuite" >
+</xs:element>
+  <xs:complexType name="TestSuite" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:Test">
+      <xs:attribute name="onteststart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ontestfinish" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ontestfail" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onsuitestart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onsuitefinish" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="controlPanel" type="xs:string" default="${canvas.lzunitControlPanel}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_datepicker_dirButton" type="lzx:_datepicker_dirButton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_datepicker_dirButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorslider" type="lzx:colorslider" >
+</xs:element>
+  <xs:complexType name="colorslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="inputtext" type="lzx:inputtext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+The basic input-text element.
+JavaScript: lz.inputtext
+
+This tag creates an area of the canvas that the user can use to edit text. It is equivalent to the HTML &lt;input type="text"&gt;, &lt;input type="password"&gt;, and textarea tags.
+
+See the documentation for the &lt;text&gt; tag for a description of the width and height attributes, and of scrolling. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="inputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="password" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, the inputtext contents will be obscured </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onenabled" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sent whenever the text field is enabled. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enabled" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, the inputtext will be editable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lazyreplicator" type="lzx:lazyreplicator" >
+</xs:element>
+  <xs:complexType name="lazyreplicator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:replicator">
+      <xs:attribute name="clonesoffset" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="clonedel" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoscreen" type="lzx:videoscreen" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ used by videoplayer component
+          @access private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoscreen" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="volume" type="xs:string" default="1.0" >
+</xs:attribute>
+      <xs:attribute name="videoWidth" type="xs:string" default="${             Math.min(this.innerWidth,                      this.innerHeight * this.aspectRatio)}" >
+</xs:attribute>
+      <xs:attribute name="videoHeight" type="xs:string" default="${             Math.min(this.innerHeight,                      this.innerWidth / this.aspectRatio)}" >
+</xs:attribute>
+      <xs:attribute name="url" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="http" >
+</xs:attribute>
+      <xs:attribute name="starttime" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="innerWidth" type="xs:string" default="${             this.width - (this.borderLeft + this.borderRight)}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the actual width of the videoview 
+            @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="innerHeight" type="xs:string" default="${             this.height - (this.borderTop + this.borderBottom)}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the actual height of the videoview 
+            @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ true for verbose debug logging </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="capturing" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="borderTop" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="borderRight" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="borderLeft" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="borderBottom" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="autoplay" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="aspectRatio" type="xs:string" default="$once{             4 / 3}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzradiobutton" type="lzx:lzradiobutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Subclass of radiobutton with customizable look.  apps should either
+        include lzradio_resources.lzx (to get default look) or define
+        a "lzradio_rsrc" resource with the same format. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="lzradiobutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseradiobutton">
+      <xs:attribute name="text_y" type="lzx:number" default="$once{this._rb.height/2 - this._title.height/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The y position of the text label. Default: centered. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="lzx:number" default="$once{this._rb.width + 2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x position of the text label. Default: 2 pixels past
+              radiobutton resource. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="XMLHttpRequest" type="lzx:XMLHttpRequest" >
+</xs:element>
+  <xs:complexType name="XMLHttpRequest" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="timeout" type="xs:string" default="60000" >
+</xs:attribute>
+      <xs:attribute name="statusText" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ String message accompanying the status code </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="status" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Numeric code returned by server, such as 404 for "Not Found" or 200 for "OK" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="responseXML" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ DOM-compatible document object of data returned from server process </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="responseText" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ String version of data returned from server process </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="readyState" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  Object status integer: 0 Uninitialised The initial value. 1 Open The open() method has been successfully called. 
+              2 Sent The send() method has been successfully called, but no data has yet been received. 3 Receiving Data is being received, 
+              but the data transfer is not yet complete. 4 Loaded The data transfer has been completed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxied" type="xs:string" default="$once{canvas.proxied}" >
+</xs:attribute>
+      <xs:attribute name="parsexml" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="onreadystatechange" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="headers" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="valuelinestyle" type="lzx:valuelinestyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ valuelinestyle is used to set style to the 
+     NOTE: valuelinestyle extends basestyle
+     @access public
+     </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valuelinestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fileupload" type="lzx:fileupload" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    @topic Incubator
+    @subtopic Components
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="fileupload" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadenable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Enable upload. True to enable uploading, false to disable uploading. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="msg" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ message of feedback to user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxsize" type="xs:string" default="10000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Max file size in bytes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fileref" type="xs:string" default="$once{new flash.net.FileReference()}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ file reference, for internal use 
+            @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="command" type="lzx:command" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+   
+    @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
+               Use is subject to license terms.
+   
+    @affects lzcommand
+    @access public
+    @topic LFC
+    @subtopic Views
+    @devnote A command is an object that sends an event in response to keyboard input.
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="command" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    If the command is active, this event is sent
+    when the keys array are pressed simultaneously.
+    @lzxtype event
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="keys" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ array of keys (strings) that, when pressed together,
+    cause the onselect event of the command to be sent. For example:
+    setAttribute('key', ['a', 'shift'])
+    @type [String]
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="key" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+  WTF?  See LPP-4982, LPP-7814
+  Necessary to add "key" to the schema
+  @access private
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="active" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    true if the command is currently active.
+    The default is &lt;i&gt;true&lt;/i&gt;.
+    @type Boolean
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="DisplayKeys" type="xs:string" default="{control:'Ctrl', shift:'Shift', alt:'Alt'}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+ * Mapping from key names to display strings used by keysToString
+ * @type Dictionary
+ * @keywords read-only
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colormenu" type="lzx:colormenu" >
+</xs:element>
+  <xs:complexType name="colormenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetrackgroup">
+      <xs:attribute name="owner" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datastyle" type="lzx:datastyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ dataseriesstyle is used for drawing the appearance of a dataseries
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datastyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="hotspot" type="lzx:hotspot" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+This class is a contract interface for hotspots that can be used
+by the imagemap class. A generic hotspot does three things:
+1. Tells us if it contains a point
+2. Performs some action on entry
+3. Performs some action on leaving
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="hotspot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="circlehotspot" type="lzx:circlehotspot" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+A general hotspot for points inside a circle.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="circlehotspot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:hotspot">
+      <xs:attribute name="y" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The Y coordinate of the center </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="x" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The X coordinate of the center </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="radius" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The radius of the circle </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basedatepickerweek" type="lzx:basedatepickerweek" >
+</xs:element>
+  <xs:complexType name="basedatepickerweek" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="dayclass" type="xs:string" default="$once{classroot.dayclass}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of the day class instance to use.  
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videolibrarypopup" type="lzx:videolibrarypopup" >
+</xs:element>
+  <xs:complexType name="videolibrarypopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="yourY" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="yourX" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="yourWidth" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="yourHeight" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="url" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="title" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="popupWidth" type="xs:string" default="300" >
+</xs:attribute>
+      <xs:attribute name="popupHeight" type="xs:string" default="${this.f.height + 2}" >
+</xs:attribute>
+      <xs:attribute name="pinYourYPos" type="xs:string" default="0.0" >
+</xs:attribute>
+      <xs:attribute name="pinYourXPos" type="xs:string" default="0.5" >
+</xs:attribute>
+      <xs:attribute name="pinY" type="xs:string" default="${             this.yourY +             (this.pinYourYPos * this.yourHeight) -             (this.pinMyYPos * this.height)}" >
+</xs:attribute>
+      <xs:attribute name="pinX" type="xs:string" default="${             this.yourX +             (this.pinYourXPos * this.yourWidth) -             (this.pinMyXPos * this.width)}" >
+</xs:attribute>
+      <xs:attribute name="pinMyYPos" type="xs:string" default="1.0" >
+</xs:attribute>
+      <xs:attribute name="pinMyXPos" type="xs:string" default="0.5" >
+</xs:attribute>
+      <xs:attribute name="description" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="atts" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabpane" type="lzx:tabpane" >
+</xs:element>
+  <xs:complexType name="tabpane" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabpane">
+      <xs:attribute name="tabwidth" type="lzx:number" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of the tab associated with this tabpane. If not set, the tab
+              will resize itself to fit. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabpanecontent" type="lzx:basetabpanecontent" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is the content of a basetabpane.
+          @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basetabpanecontent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="borderinput" type="lzx:borderinput" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Components
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="borderinput" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="labelwidth" type="lzx:number" default="80" >
+</xs:attribute>
+      <xs:attribute name="labelstyle" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ should be an object of type "textstyle" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="changed" type="xs:string" default="${this.txt.changed}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      @topic Incubator
+      @subtopic Components
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="stepper" type="lzx:stepper" >
+</xs:element>
+  <xs:complexType name="stepper" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="step" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="numberAlign" type="xs:string" default="left" >
+</xs:attribute>
+      <xs:attribute name="minimum" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="maximum" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="initialNumber" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rectangularchart" type="lzx:rectangularchart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+       class that provides all common features for the rectangular charts like line, bar and column
+       @access public
+       </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="rectangularchart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:chart">
+      <xs:attribute name="verticalGridLines" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Determines if the vertical grid lines are going to be used </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onRenderStop" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onRenderStart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="miny" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum virtual value to be rendered in the 'y' axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The minimum virtual value to be rendered in the 'x' axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxy" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum virtual value to be rendered in the 'y' axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxx" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum virtual value to be rendered in the 'x' axis </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="horizontalGridLines" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="horizontalGridBands" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Determines if the horizontal grid lines are going to be used </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="gridlinecolor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="defaultminy" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="defaultminx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="defaultmaxy" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="defaultmaxx" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="dataSeriesLeaf" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="modaldialog" type="lzx:modaldialog" >
+</xs:element>
+  <xs:complexType name="modaldialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:windowpanel">
+      <xs:attribute name="content_inset_top" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for the dialog contents from the edge of the window
+              inner frame. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="content_inset_right" type="xs:string" default="14" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for the dialog contents from the edge of the
+              window inner frame </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="content_inset_left" type="xs:string" default="14" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for the dialog contents from the edge of the
+              window inner frame. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="content_inset_bottom" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for the dialog contents from the edge of the
+              window inner frame. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menufloatinglist" type="lzx:menufloatinglist" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="menufloatinglist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:floatinglist">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ZoomView" type="lzx:ZoomView" >
+</xs:element>
+  <xs:complexType name="ZoomView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="opened" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="closed" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basecheckbox" type="lzx:basecheckbox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A checkbox component representing a boolean. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basecheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="gridcolumn" type="lzx:gridcolumn" >
+</xs:element>
+  <xs:complexType name="gridcolumn" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basegridcolumn">
+      <xs:attribute name="sortable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the column header is clickable and will initiate a 
+              sort </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showheader" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set to false, then no header will be shown for this column.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizemargin" type="lzx:number" default="3" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the resizer between columns.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set to false, the column cannot be resized. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="item" type="lzx:item" >
+</xs:element>
+  <xs:complexType name="item" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="showcomponenthelpers" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="root" type="xs:string" default="this" >
+</xs:attribute>
+      <xs:attribute name="reference" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="opendefaultplacement" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="open" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="isview" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="method" type="lzx:method" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Attaches a function or event handler to an object or class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="method" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="name" type="xs:string" use="required" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The name of a variable that will be set to this object when the application is started. If this element is directly within a canvas or library element, the global variable and the canvas property with this name will be set to this object. If this element is within another object, that object's property with this name will be set to this object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="args" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The parameter names of this method. The value of this attribute is a comma-separated list of JavaScript identifiers. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="allocation" type="xs:string" default="instance|class" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of:
+class
+    The attribute will be an attribute of the class; to refer to it, you say lz.classname.attributename . 
+instance
+    Each instance will have an attribute with the specified properties ( name , type , value , etc.). 
+
+You can set allocation to class to get static attributes. Static properties are attached to the class itself, for example lz.classname . </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="baseopttreenode" type="lzx:baseopttreenode" >
+</xs:element>
+  <xs:complexType name="baseopttreenode" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="startdragdelay" type="xs:string" default="800" >
+</xs:attribute>
+      <xs:attribute name="startdragdel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="open" type="xs:string" default="${ dopen }" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A boolean value representing whether or not this node
+              is open. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="indent" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The amount, in pixels, to indent each element of the tree.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="highlight" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, this element is selected </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dragging" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="depth" type="xs:string" default="${ ddepth }" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A 0-based depth number that indicates the depth of this
+              element in the tree. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datalistselector" type="lzx:datalistselector" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a helper class that wraps the dataselectionmanager in some
+        higher level APIs, used by baselist </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datalistselector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:dataselectionmanager">
+      <xs:attribute name="multiselect" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If multiselect is true, multiple selection is enabled.
+        When the shift key is down, a range of items is selected.
+        When the control key is down, any item may be added to the
+        selection.
+             Default: false </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="gradientview" type="lzx:gradientview" >
+</xs:element>
+  <xs:complexType name="gradientview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="stretchWidth" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="stretchHeight" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="gradientType" type="xs:string" default="linear" >
+</xs:attribute>
+      <xs:attribute name="gradientOrientation" type="xs:string" default="vertical" >
+</xs:attribute>
+      <xs:attribute name="colorTo" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="colorFrom" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="borderSizeTop" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="borderSizeRight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="borderSizeLeft" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="borderSizeBottom" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="borderSize" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="borderColorTop" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="borderColorRight" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="borderColorLeft" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="borderColorBottom" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="0x000000" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dragger" type="lzx:dragger" >
+</xs:element>
+  <xs:complexType name="dragger" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabs" type="lzx:tabs" >
+</xs:element>
+  <xs:complexType name="tabs" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabs">
+      <xs:attribute name="tabspacing" type="lzx:number" default="-15" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Spacing between the tabs. Defaults to -15 so tabs overlap. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tabalign" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Align the set of tabs within the dimensions of the "tabs"
+             container ("left", "center", "right"). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpledefaultlist" type="lzx:simpledefaultlist" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A list class that handles a default value. 
+          Input and output for the list is defined to be in this format:
+          &lt;code&gt;
+          &lt;list name="fubar"&gt;
+            &lt;item text="foo" value="bar" default="true"/&gt;
+            &lt;item text="goo" value="mar"/&gt;
+          &lt;/list&gt;
+          &lt;/code&gt;
+         
+          Currently only works with dataoption="lazy" or "pooling"
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="simpledefaultlist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:list">
+      <xs:attribute name="defaultitem" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ LzDataElement of the default node 
+              null means the list has no default </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoselectdefault" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true if the default item should be selected whenever
+            data is received </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vscrollbar" type="lzx:vscrollbar" >
+</xs:element>
+  <xs:complexType name="vscrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basescrollbar">
+      <xs:attribute name="disabledbgcolor" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If this is defined, it will be used as the scrollbar's background
+          color when it is disabled. If not provided, the scrollbar will use
+          the bgcolor of its closest parent that has a bgcolor defined.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="polygonhotspot" type="lzx:polygonhotspot" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+A general hotspot for an N-sided polygon.
+This will create a polygon whose sides are described
+by moving in order to the points added by calling addPoint,
+returning back to the first point added to close the polygon.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="polygonhotspot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:hotspot">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="debugger_shadow_right" type="lzx:debugger_shadow_right" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+    Drop shadow for the right side of the debugger window 
+
+    @keywords private
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="debugger_shadow_right" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorspot" type="lzx:colorspot" >
+</xs:element>
+  <xs:complexType name="colorspot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:colormenuitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datepickerweek" type="lzx:datepickerweek" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is the implementation of the datepickerweek for 
+          the datepicker </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datepickerweek" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepickerweek">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseradiobutton" type="lzx:baseradiobutton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class baseradiobutton: represents a single radio button. If groupname
+           is defined, it will reference an baseradiogroup that's named
+           groupname. If both groupname and group are not defined, this
+           radiobutton will attempt to use a baseradiogroup ancestor in its view
+           hierarchy. If it can't find one, it will use a default baseradiogroup
+           with groupname 'lzdefaultgroup'. If this radiobutton is inside a
+           form, an implicit baseradiogroup is created as a child the form.
+
+           The first radiobutton is special for implicitly created
+           baseradiogroups. A baseradiogroup will inherit the groupdatapath,
+           used as the baseradiogroup's datapath, and submit attributes from the
+           first radiobutton, which are used during its instantiation. Those
+           same attributes are ignored for subsequent radiobuttons belonging in
+           the same group. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseradiobutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="value" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Value of this radiobutton. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="submitname" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The submit name for a baseradiogroup. This must be set by the first
+              radiobutton in a baseradiogroup to take effect. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="submit" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether a baseradiogroup will send its data when a form is
+              submitted. This must be set by the first radiobutton in a
+              baseradiogroup to take effect. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if radio's group value is the same as group's. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselected" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when selected attribute selected or unselected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="groupname" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of baseradiogroup. If not defined, it will use group reference as
+              its group. If both groupname and group are not defined, this
+              radiobutton will attempt to use a baseradiogroup ancestor in its view
+              hierarchy. If it can't find one, it will use a default baseradiogroup
+              with groupname 'lzdefaultgroup'. If this radiobutton is inside a
+              form, an implicit baseradiogroup is created as a child of the
+              form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="groupdatapath" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The value datapath for a baseradiogroup. This must be set by the first
+              radiobutton in a baseradiogroup to take effect. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="group" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Reference to baseradiogroup. If groupname is defined, it will
+              reference an baseradiogroup that's named groupname. If both groupname
+              and group are not defined, this radiobutton will attempt to use a
+              baseradiogroup ancestor in its view hierarchy. If it can't find one,
+              it will use a default baseradiogroup with groupname
+              'lzdefaultgroup'. If this radiobutton is inside a form, an
+              implicit baseradiogroup is created as a child of the form. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_floatshadow" type="lzx:_floatshadow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The shadows width and height are set to the width and height of the view
+          it is trying to apply a shadow to.
+          @keywords private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_floatshadow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="shadowsize" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="oncornerresourcenumber" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onbottomvisible" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="offsety" type="xs:string" default="10" >
+</xs:attribute>
+      <xs:attribute name="cornerresourcenumber" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="bottomvisible" type="xs:string" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="edittext" type="lzx:edittext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This component provides the look and feel for user editable text, data
+          binding, and focus events. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="edittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="text_y" type="lzx:number" default="${multiline ? 2 : Math.round(((this.height - this.field.getTextHeight())/2))} " >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the y position of the text. default: centered, unless it is mutltiline </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizable" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true if you plan to change the width or height of the
+              component at run-time.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pattern" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A regular expression describing set of characters allowed in
+              this field. Restrict the characters that can be entered to a
+              pattern specified by a regular expression. Currently only the
+              expression [ ]* enclosing a set of characters or character
+              ranges, preceded by an optional "^", is supported. 
+              examples: [0-9]* , [a-zA-Z0-9]*, [^0-9]* </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="password" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true for a password field. Text will appear as ****.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiline" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true for multiple lines.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum number of chars that can be entered. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="debugger_shadow_bottom" type="lzx:debugger_shadow_bottom" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+    Drop shadow for the bottom of the debugger window
+
+    @keywords private
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="debugger_shadow_bottom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="img" type="lzx:img" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="img" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="width" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="vspace" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="src" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="hspace" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="height" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="align" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="basebuttonrepeater" type="lzx:basebuttonrepeater" >
+</xs:element>
+  <xs:complexType name="basebuttonrepeater" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basebutton">
+      <xs:attribute name="onmousestilldown" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleboundslayout" type="lzx:simpleboundslayout" >
+</xs:element>
+  <xs:complexType name="simpleboundslayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each view in the layout. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates, 'x' or 'y'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="newcheckbox" type="lzx:newcheckbox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The basecheckbox implementation representing a boolean, i.e., checked
+          if true, else false. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="newcheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecheckbox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menubar" type="lzx:menubar" >
+</xs:element>
+  <xs:complexType name="menubar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imagemap" type="lzx:imagemap" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+A class which will activate hotspots as the mouse passes over them in a parent view, or deactivate
+them as they leave. This class operates by havign a number of objects subclassed from hotspot added.
+Each of these is then queried as the mouse passes about the view to alter its activation state.
+This class will operate either exclusively, only one active hotspot at a time, or may allow
+multiple active hotspots at once if exclusive is true (it is false by default). The class
+also provides suspend and resume methods to pause the classes handling of the hotspots and
+resume respectively. Note that the priority of choosing an active spot is random. That is
+in exclusive mode (or switching from non-exclusive to exclusive mode) if two spot a and b
+both contain x and y, no guarantee is made as to which of a and b will be chosen to be
+the active exclusive view. Additionally this will only activate and deactivate hotspots
+within the parent view. Even if a hotspot added to this map defines an active region outside
+the parent view it will not be honored. Therefore it is strongly recommended that no hotspots
+define an area outside of the view in which the are active. In order for this class
+to work the view in which it is defined must be clickable.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="imagemap" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="exclusive" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="reverselayout" type="lzx:reverselayout" >
+</xs:element>
+  <xs:complexType name="reverselayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each view in the layout </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to inset the last view controlled by the layout</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="end" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ When true (the default), then the layout will push the subviews 
+              to the right (or bottom) of the containing view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which this layout operates. One of 'x' or 'y'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="textstyle" type="lzx:textstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Simple class that adds font attributes to style class
+        &lt;example executable="false"&gt;
+        &amp;lt;textstyle font="futura" fontsize="12" fontstyle="bold" /&amp;gt;
+        &lt;/example&gt;
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="textstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+      <xs:attribute name="fontstyle" type="xs:string" default="plain" >
+</xs:attribute>
+      <xs:attribute name="fontsize" type="xs:string" default="11" >
+</xs:attribute>
+      <xs:attribute name="font" type="xs:string" default="arial" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Simple class that adds font attributes to style class
+        &lt;example executable="false"&gt;
+        &amp;lt;textstyle font="futura" fontsize="12" fontstyle="bold" /&amp;gt;
+        &lt;/example&gt;
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetrackgroup" type="lzx:basetrackgroup" >
+</xs:element>
+  <xs:complexType name="basetrackgroup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="trackingrate" type="xs:string" default="150" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The periodic rate in milliseconds to track the mouse</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tracking" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if this trackgroup is currently tracking or not.
+              It can bet set to turn tracking on or off, or use the methods
+              activatetrackgroup and deactivatetrackgroup </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="deactivateevents" type="xs:string" default="['onmouseup']" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an array of events which will deactivate tracking. 
+           To override, you must declare as once. For example:
+           &lt;programlisting&gt;&amp;lt;attribute name="deactivateevents" value="['onmouseover']" when="once"/&amp;gt;&lt;/programlisting&gt;
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boundsref" type="xs:string" default="${this}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view that will be used to define the bounding rect for tracking
+              the mouse </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="activateevents" type="xs:string" default="['onmousedown']" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ an array of events which will activate tracking. 
+           To override, you must declare as once. For example:
+           &lt;programlisting&gt;&amp;lt;attribute name="activateevents" value="['onmouseover']" when="once"/&amp;gt;&lt;/programlisting&gt;
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="shadowbox" type="lzx:shadowbox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A basic container view with an inner dropshadow effect.
+        &lt;example executable="false"&gt;
+            &amp;lt;shadowbox width="200" height="200"&amp;gt;
+                &amp;lt;view bgcolor="red" width="200" height="200"/&amp;gt;
+            &amp;lt;/shadowbox&amp;gt;
+        &lt;/example&gt;
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="shadowbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="shadowleft" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ display shadow along left side </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="edgecolor_tl" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ bgcolor of one pixel wide border on right and bottom sides only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="edgecolor" type="xs:string" default="0xD9D9D9" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ bgcolor of one pixel wide border on right and bottom sides only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="textformat" type="lzx:textformat" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    An object to specify the format of a text object.  Used only in 
+    Javascript by richinputtext.setTextFormat.
+    @shortdesc Formats rich text
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="textformat" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="url" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="underline" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="target" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="size" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="rightmargin" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="leftmargin" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="leading" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="italic" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="indent" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="font" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    An object to specify the format of a text object.  Used only in 
+    Javascript by richinputtext.setTextFormat.
+    @shortdesc Formats rich text
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="color" type="lzx:color" >
+</xs:attribute>
+      <xs:attribute name="bold" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="align" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="boxview" type="lzx:boxview" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+                implements the CSS box model in a view that allows for margins, padding, and a border.
+                Allows for an italized title.
+                By default functions the same as a view, but has a 1 pixel black border.
+                v1.0 - Original
+                v1.1 - Bugfix added " - parent.parent.vTitle.height" to vPadding height on !_contentheight state
+                @author Brad Erickson
+         </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="boxview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Italized title of the view, appears in upper left </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="paddingsize" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of the padding </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="marginsize" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of the margin </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="contentbgcolor" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Background color of the element, default is transparent</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordersize" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of the border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="xs:string" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the border, default is black </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="virtualdrawview" type="lzx:virtualdrawview" >
+</xs:element>
+  <xs:complexType name="virtualdrawview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="miny" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxy" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxx" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="markers" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tabelement" type="lzx:tabelement" >
+</xs:element>
+  <xs:complexType name="tabelement" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabelement">
+      <xs:attribute name="text_y" type="xs:string" default="${this.top.header.height/2 - this.top.header.txt.height/2}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The y position of the text field in the header area. Default is centered. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text_x" type="xs:string" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x position of the text field in the header area. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowvisible" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Boolean to set the shadow of this tabelement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shadowheight" type="xs:string" default="4" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The height of the shadow. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="xs:string" default="${parent.inset_top}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for content appearing within a tabelement. Default
+              is the containing tabslider's inset_top value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="xs:string" default="${parent.inset_right}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for content appearing within a tabelement. Default
+              is the containing tabslider's inset_right value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="xs:string" default="${parent.inset_left}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for content appearing within a tabelement. Default
+              is the containing tabslider's inset_left value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="xs:string" default="${parent.inset_bottom}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for content appearing within a tabelement. Default
+              is the containing tabslider's inset_bottom value. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="headerpadding" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Insets the header art on the x-axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorrow" type="lzx:colorrow" >
+</xs:element>
+  <xs:complexType name="colorrow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="axisstyle" type="lzx:axisstyle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ style for axis
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="axisstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+      <xs:attribute name="direction" type="xs:string" default="y | x" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ direction of the axis: x or y </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoplayer" type="lzx:videoplayer" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ provides standard UI controls for video playback
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoplayer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="url" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ url of the stream to play
+              see mediastream for details </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="http" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ type of stream: 'http' or 'rtmp', 
+              see mediastream for details </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stream" type="xs:string" default="${vscreen.ms}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ a reference to the stream to enable direct control,
+              such as vp.steam.play or vp.stream.seek(20) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="starttime" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Show the frame from this time (in seconds) whenever the url 
+            is set for video playback.
+            Use -1 to show no frame (which will leave the image as it
+            was when switching videos) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sliderTop" type="xs:string" default="${             this.height - (this.borderBottom + this.sliderHeight)}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ internal: derived from public attributes 
+              @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sliderHeightVal" type="xs:string" default="16" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ see note above 
+          @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sliderHeight" type="xs:string" default="${             this.showslider ? this.sliderHeightVal : 0}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the controls stretch to this height, but I don't see a test
+              for this and I can't imagine it looks good so I'm marking
+              this private
+          @access private
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sliderGap" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the vertical space between the video image and the controls </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showslider" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ why would you want this? no test case, marking private 
+              @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showscreen" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ why would you want this? no test case, marking private 
+              @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showVolumeControl" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if true, display a volume control </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showTimeDisplay" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if true, display the current and total time </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="screenWidth" type="xs:string" default="${             this.width - (this.borderLeft + this.borderRight)}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ internal: derived from public attributes 
+              @access private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="progressColor" type="xs:string" default="0x00ff00" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of the progress bar </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ true for verbose debug logging </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderTop" type="xs:string" default="${this.border}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the top border on the video image.  Default: this.border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderRight" type="xs:string" default="${this.border}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the right border on the video image.  Default: this.border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderLeft" type="xs:string" default="${this.border}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the left border on the video image.  Default: this.border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderBottom" type="xs:string" default="${this.border}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the bottom border on the video image.  Default: this.border </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the border around the video image.  Default: 5 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplay" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ when true, playback will start automatically
+              without user action </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="aspectRatio" type="xs:string" default="$once{4/3}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if non-zero, then this will be used to maintain the
+              aspect ratio based on the width of the videoscreen.
+              Default: 4/3
+        </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datastylelist" type="lzx:datastylelist" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ list of datastyle
+      @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datastylelist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basestyle">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basegrid" type="lzx:basegrid" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An abstract container for data rows, relying on lazy replication
+          to make it possible to display large datasets.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basegrid" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="spacing" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Spacing between the rows. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sizetoheader" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A boolean. If true, the grid will keep its width set to the size
+              of the header. This is automatically set to true for grids that
+              do not have a set width.  This is initially set to 0, which means
+              that it is not true, but if it is explicitly set to false, the
+              automatic behavior will be disabled for grids with no set
+              width.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showvlines" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, lines will be drawn (in component's style's bordercolor)
+              horizontally at each at each row division. This attribute cannot
+              be set after instantiation.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shownitems" type="xs:string" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets the height of the grid to show a maximum of 'n' items. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showhlines" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, lines will be drawn (in component's style's bordercolor)
+              vertically at each at each column division. This attribute can be
+              set after instantiation.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectable" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If false, the rows are not clickable and the grid does not support selection. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rowheight" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Optional height for the rows contained by the grid. If no
+              value is given for this attribute, it will be set to the
+              calculated height of rows. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Event sent when the grid selection changes.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiselect" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, the list will allow for multiple selection, and the 
+              getSelection method will always return a list. If false, only
+              single selection is allowed.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hilite" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view which is currently hilited.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="contentdatapath" type="xs:string" default="*" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The datapath to use for the contents of the grid. By
+              default, this is set to "*", meaning all of the nodes underneath
+              the datacontext of the grid. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="columns" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An array holding the basegridcolumns used by this grid </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgcolor1" type="lzx:color" default="$immediately{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If given, sets the bgcolor for odd numbered rows. If not given,
+              the bgcolor for these rows is taken from the style's bgcolor.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgcolor0" type="lzx:color" default="$immediately{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If given, sets the bgcolor for even numbered rows. If not given,
+              the bgcolor for these rows is taken from the style's bgcolor.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="verticalaxis" type="lzx:verticalaxis" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Represents the Y axis on the rectangular chart, extends from Axis class
+     @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="verticalaxis" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:axis">
+      <xs:attribute name="datacolumn" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="DebugObject" type="lzx:DebugObject" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+  DebugObject is a base class for all the other classes in LZUnit that
+  supports the debugging of LZUnit itself.
+
+  @keywords public
+
+  @param Boolean debugWrite: Whether or not to emit debugging statements.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="DebugObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="debugWrite" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ whether or not to emit debugging statements </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoslider" type="lzx:videoslider" >
+</xs:element>
+  <xs:complexType name="videoslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="waspaused" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="volume" type="xs:string" default="${this.controls.volumebutton.volume}" >
+</xs:attribute>
+      <xs:attribute name="value" type="xs:string" default="${this.tracking ? this.trackvalue : this.sourcevalue}" >
+</xs:attribute>
+      <xs:attribute name="trackvalue" type="xs:string" default="0.0" >
+</xs:attribute>
+      <xs:attribute name="tracktime" type="xs:string" default="${this.trackvalue * this.totaltime}" >
+</xs:attribute>
+      <xs:attribute name="trackingDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="tracking" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="totaltime" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="timedisplay" type="xs:string" default="${this.tracking ? this.tracktime : this.time}" >
+</xs:attribute>
+      <xs:attribute name="time" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="sourcevalue" type="xs:string" default="${this.time / (this.totaltime || 1.0)}" >
+</xs:attribute>
+      <xs:attribute name="showVolumeControl" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="showTimeDisplay" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="ms" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="color" type="xs:string" default="0x00ff00" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="barchart" type="lzx:barchart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A chart class that renders horizontal bars.
+      Inherits from the chart class.  (Warning: Of beta quality.)
+      @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="barchart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basechart">
+      <xs:attribute name="staggerticks" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to alternate lengths of tick lines. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ondrawaxis" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Refreshes drawn chart when direction changes. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barspace" type="lzx:number" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The space between bars. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="anicomplete" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Dataclip is a view at a fixed size (plotwidth and plotheight, with location
+            set by plotx and ploty) that contains an internal view with all the points,
+            lines and labels.  As the internal view datapane is scalable and able to be
+            dragged around once scaled, it needs to be clipped. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="font" type="lzx:font" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Tag for including fonts.
+The &lt;font&gt; tag is used to import fonts into an LZX application. Each font in an LZX application has a source file (in TrueType format), a name, and a style (plain, bold, italic, or bold italic).
+
+A font element within a &lt;canvas&gt; or &lt;library&gt; defines a font, which can be referenced by the font attribute of a view, or by the face attribute of the &lt;font&gt; tag within HTML markup. A font element can define a single font face or style, by using the src attribute to refer to a TrueType font that is included in the application. 
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="font" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="src" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="size" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="name" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Tag for including fonts.
+The &lt;font&gt; tag is used to import fonts into an LZX application. Each font in an LZX application has a source file (in TrueType format), a name, and a style (plain, bold, italic, or bold italic).
+
+A font element within a &lt;canvas&gt; or &lt;library&gt; defines a font, which can be referenced by the font attribute of a view, or by the face attribute of the &lt;font&gt; tag within HTML markup. A font element can define a single font face or style, by using the src attribute to refer to a TrueType font that is included in the application. 
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="face" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="color" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ HTML specific </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="gridtext" type="lzx:gridtext" >
+</xs:element>
+  <xs:complexType name="gridtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:gridcolumn">
+      <xs:attribute name="textalign" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Type of content's alignment.
+              Possible values are: left, center, right </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether one is able to select the text.  (Only applies
+            if the grid isn't editable, because when it's editable,
+            the text is automatically selectable.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="editing" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="editbox" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="editable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If set to false, the field will not be editable. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fileuploadlist" type="lzx:fileuploadlist" >
+</xs:element>
+  <xs:complexType name="fileuploadlist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ select file or not</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Events</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="oncomplete" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="maxsize" type="xs:string" default="15000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Max file size  unit: bytes </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="erroroccured" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Error occured </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="class" type="lzx:class" >
+</xs:element>
+  <xs:complexType name="class" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isRoot" type="lzx:boolean" >
+</xs:attribute>
+      <xs:attribute name="implements" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="extends" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listitem" type="lzx:listitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A simple listitem that is usually declared inside of a list. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="listitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselistitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="focusoverlay" type="lzx:focusoverlay" >
+</xs:element>
+  <xs:complexType name="focusoverlay" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basefocusview">
+      <xs:attribute name="offset" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the offset is used by the brackets to 'offset' themselves from the
+              bounding rect of the focusoverlay. The bounce effect is achieved
+              by animating this parameter </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="contextmenuitem" type="lzx:contextmenuitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+A menu item within a context menu </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="contextmenuitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="visible" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Sets the visibility of the menu item. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="separatorbefore" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Draw a horizontal separator line before this item in the menu. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enabled" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Sets the enabled status of the menu item. If false, the menu item is grayed out and will not respond to clicks  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="delegate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Sets the delegate which will be called when the menu item is selected. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="caption" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+		Sets the text which is displayed for the menu item</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menuitem" type="lzx:menuitem" >
+</xs:element>
+  <xs:complexType name="menuitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+      <xs:attribute name="command" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the command object assigned to be executed when this menuitem is selected </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basedragimage" type="lzx:basedragimage" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the visual representation of an object being dragged.
+        See &lt;xref linkend="lz.checkdragstate"/&gt; for usage details 
+        @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basedragimage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="dropgroup" type="xs:string" default="droptarget" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the group that drop targets will register with </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabslider" type="lzx:basetabslider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This class is a non-visual container that animates and coordinates the
+          sliding of basetabelements. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basetabslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselist">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The spacing of the tabs. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="slideduration" type="xs:string" default="300" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The duration of the tabs openning and closing. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mintabheight" type="xs:string" default="22" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The default height of every tab when closed. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="xs:string" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for content appearing within a tabelement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="xs:string" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for content appearing within a tabelement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="xs:string" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for content appearing within a tabelement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="xs:string" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for content appearing within a tabelement. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ZoomPolygon" type="lzx:ZoomPolygon" >
+</xs:element>
+  <xs:complexType name="ZoomPolygon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:polygonhotspot">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="parentView" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="map" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whitestyle" type="lzx:whitestyle" >
+</xs:element>
+  <xs:complexType name="whitestyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="bigcheckbox" type="lzx:bigcheckbox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The basecheckbox implementation representing a boolean, i.e., checked
+          if true, else false. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="bigcheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecheckbox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="backcircle" type="lzx:backcircle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background circle of the pie.  Has properties set by attributes on the
+        respective dataseries. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="backcircle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="pieradius" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The radius of the pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbgborder" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border color of the circle. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbg" type="lzx:color" default="0xCCCCCC" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background color of the circle. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ctry" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The center y coordinate of the pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ctrx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The center x coordinate of the pie. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgborderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the circle's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="window" type="lzx:window" >
+</xs:element>
+  <xs:complexType name="window" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:windowpanel">
+      <xs:attribute name="resizable" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, a resize control will appear in the lower-right corner,
+              allowing the user to resize the window. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseedittext" type="lzx:baseedittext" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This component provides the look and feel for user editable text, data
+          binding, and focus events. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseedittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="pattern" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ An expression to restrict the set of characters that are allowed
+              to be entered. For example, [0-9]*, [012]*, [a-zA-Z]*,
+              [0-9A-Z]*. You can restrict the number of characters using
+              maxlength. Default is any character. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="password" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true for a password field. Text will appear as ****. 
+              This attribute cannot be changed at runtime.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onpattern" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multiline" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Set to true for multiple lines. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The maximum number of chars that can be entered. Default is
+              unlimited. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="TestCase" type="lzx:TestCase" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+  TestCase implements an individual test case.
+
+  See the documentation for &lt;xref linkend="lz.TestSuite"/&gt;
+  for an example of this tag.
+
+  @param testName: the name of the test
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="TestCase" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:Test">
+      <xs:attribute name="testnames" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="datepickercombobox" type="lzx:datepickercombobox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datepickercombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecombobox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="marker" type="lzx:marker" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+         data marker class </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="marker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="droptarget" type="lzx:droptarget" >
+</xs:element>
+  <xs:complexType name="droptarget" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="replicator" type="lzx:replicator" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is a declared replicator for visual elements. Unlike
+        OpenLaszlo''s data-replication feature, a replicator can take an
+        arbitrary node set that may be passed in as an array.
+        Non-replicating elements may be used inside a replicator; only
+        the last child inside the replicator is replicated.
+
+        The data attribute of the replicated (cloned) view is set by the
+        setData method with data from the nodes array when the clone is
+        bound. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="replicator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="xpath" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Compute nodes from this xpath query against the specified dataset </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A pixel amount to use between each replicated view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="replicatedsize" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size (width or height) in the replication axis of the view
+            being replicated.  Assumes all subviews have same replicated size. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pool" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, then instances of the replicated instance are reused
+            when possible </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onnodes" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="nodes" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The list of nodes over which this replictor acts </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mask" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view that will clip the replicated nodes.  Defaults to the immediateparent of the container </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataset" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Compute nodes from this dataset </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="container" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The view that will contain the replicated nodes.  Defaults to the immediateparent of the replicator. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="clones" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The list of elements controlled by this repliator </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" default="y" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The axis in which to replicate</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_dbg_lzhdrag" type="lzx:_dbg_lzhdrag" >
+</xs:element>
+  <xs:complexType name="_dbg_lzhdrag" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:state">
+      <xs:attribute name="xdoffset" type="xs:string" default="this.getMouse( 'x' )" >
+</xs:attribute>
+      <xs:attribute name="x" type="xs:string" default="${this.immediateparent.getMouse( 'x' ) - this.xdoffset}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="legendtitle" type="lzx:legendtitle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title for the legend.  This is its own small class because it
+        makes constraints easier for adjustments. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="legendtitle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="ttsize" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title text's font size. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tposit" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title text's alignment.  (left, right, center) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title text's color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ltitle" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title text for the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="defaultlistitem" type="lzx:defaultlistitem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Text list item that displays a default </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="defaultlistitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+      <xs:attribute name="default_y" type="xs:string" default="$once{this.height/2 - this.defaultlabel._default.height/2}" >
+</xs:attribute>
+      <xs:attribute name="default_x" type="xs:string" default="40" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ x position of default label </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="SyncTester" type="lzx:SyncTester" >
+</xs:element>
+  <xs:complexType name="SyncTester" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:TestCase">
+      <xs:attribute name="tested_object" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     Refers to object to be tested; this is dependent on specific test run
+     @keywords required
+     </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="del" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="current_method" type="xs:string" default="${cur_meth.xpathQuery('@name')}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     Helps keep track of currently executed method
+     @keywords readonly
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dataseries" type="lzx:dataseries" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+          
+        A dataseries in a container for dataseries and datacolumn.
+        dataseries can be nested.
+        @access public
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="dataseries" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="ydatapath" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The data to be linked to the y axis. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="xdatapath" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The data to be linked to the x axis.  (Also used for piechart data.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tooltip" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (To be developed:) Whether a tooltip is available onmouseover. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showlegendminimized" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to show the legend when the chart is minimized, when
+            there are multiple charts. (It is strongly recommended this
+            be set to false for multiple pies.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="radiusadjust" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether certain pieces should have radii different from the
+            overall pie, and if so, how much shorter or longer, percentage-wise.
+            (e.g. A value of 10 would mean 10% greater a radius.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointsvisible" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw points, and if so, which color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointshape" type="xs:string" default="square" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ What shape to make the point. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointopacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity of the points. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointdiameter" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the points. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointborderwidth" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border around the points. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="pointborder" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw borders around points, and if so, which color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="piebgcolor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether the area behind the pie is colored, and if so,
+            what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="linethickness" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The thickness of the line from the last point to the current point.
+            If using data for this attribute, this will determine the thickness
+            of the line from the last point to the current point. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="linesvisible" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw a line between points, and if so, which color.
+            If using data for this attribute, this will determine whether
+            to draw a line from the last point to the current point. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendy" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the y coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendx" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the x coordinate of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendwidth" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the width of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendtitleposition" type="xs:string" default="left" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The position of the title: left, right, center. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendtitle" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The title of the legend.  If not null, appears at the top of
+            the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendhl" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The onmouseover highlight for legend elements. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendheight" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If legend is 'manual', this sets the height of the legend. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legenddatapath" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The location of the data to be used in the legend.  If unspecified,
+            the numerical values of the piechart will be used. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendborderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the legend border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendborder" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of the legend border, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendbg" type="lzx:color" default="#CCCCCC" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Background color of the legend, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legend" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether or not there's a legend associated with this data.
+            Values: top, bottom, left, right,
+            manualtop, manualbottom, manualleft, manualright. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labeltextsize" type="xs:string" default="10" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Size of a label's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labeltextcolor" type="lzx:color" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of a label's text. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelcolor" type="lzx:color" default="#EEEEEE" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the label. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelborderwidth" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Width of a label's border.  (Set 0 for none.)</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelborder" type="xs:string" default="#000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of a label's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ label of the dataseries </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillbelow" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to fill beneath the line, and if so, which color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fbopacity" type="xs:string" default=".2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity of the filled area below the line. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="explode" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether the pieces should move away from the center on mouseover. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="enabled" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable the dataseries </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbgborder" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw an outline around the background circle's
+            circumference, and if so, what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="drawbg" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw the background circle, and if so, what color. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataseriesleafs" type="xs:string" default="$once{[]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+            cache a leaf nodes of the dataseries </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataresource" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Bar resource, if any. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataopacity" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Opacity of the bar, line or pie piece. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataenabled" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Is this series of data enabled? </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datacolumnsmap" type="xs:string" default="$once{new Object()}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+            cache the a hashtable of datacolumn </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="datacolor" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Color of the line, bar or pie piece. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderwidth" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of each piece's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordercolor" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color of each piece's border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgborderwidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Thickness of the background circle's circumference outline. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="baselabels" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether to draw labels at the bases of bars, and
+            what data to use.  No labels are drawn if not specified. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="baselabelangle" type="lzx:number" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Angle of baselabels.  (Determines rotation of tick labels
+            at the bases of bars.  Not compatible with DHTML.) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="animationinit" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether a bar has animation.  Currently only works
+            for bars, but may eventually be worked into other
+            chart types. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="inspector" type="lzx:inspector" >
+</xs:element>
+  <xs:complexType name="inspector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:window">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basewindow" type="lzx:basewindow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The basewindow class defines methods, attributes that are used by window
+      subclasses.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basewindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="ydoffset" type="xs:string" default="this.getMouse( 'y' )" >
+</xs:attribute>
+      <xs:attribute name="xdoffset" type="xs:string" default="this.getMouse( 'x' )" >
+</xs:attribute>
+      <xs:attribute name="state" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The state of the window: 1=selected (frontmost) window,
+              2=not-selected window, 3=dragging, 4=disabled, 5=resizing.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="starty" type="xs:string" default="$once{this.y}" >
+</xs:attribute>
+      <xs:attribute name="startx" type="xs:string" default="$once{this.x}" >
+</xs:attribute>
+      <xs:attribute name="minwidth" type="xs:string" default="60" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum width for the window.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minheight" type="xs:string" default="50" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum height for the window.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="haswindowfocus" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if the window is frontmost. Set this
+              attribute to bring the window to the fore of its sibling
+              windows, and bring window focus.
+              @keywords defaultsetter </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="allowdrag" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Attribute handles whether window can be dragged or not </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videothumbnail" type="lzx:videothumbnail" >
+</xs:element>
+  <xs:complexType name="videothumbnail" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="url" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="http" >
+</xs:attribute>
+      <xs:attribute name="thumbnailtime" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="border" type="xs:string" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleinputtext" type="lzx:simpleinputtext" >
+</xs:element>
+  <xs:complexType name="simpleinputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text opacity. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text for input. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="focusborderOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity for the border on focus. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="blurborderOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity for the border on blur. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bgOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The opacity for the input background. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ulink" type="lzx:ulink" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A class for URL links.
+    
+    This differs from the use of the XHTML &amp;lt;a&amp;gt; attribute, e.g in '&amp;lt;text&amp;gt;&amp;lt;a href="http://openlaszlo.org"&amp;gt;OpenLaszlo.org&amp;lt;/a&amp;gt;lt;/text&amp;gt;', in these ways:
+    - There is a hover effect.  (This defaults to underline.)
+    - There is a hover color.  (This defaults to blue.)
+    - The link content and target can be databound. 
+    
+    &lt;example executable="false"&gt;
+      &amp;lt;ulink href="http://openlaszlo.org"&amp;gt;OpenLaszlo.org&amp;lt;/ulink&amp;gt;
+    &lt;/example&gt;
+    
+    See ulink-test.lzx for additional examples. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="ulink" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The text of the link. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="target" type="xs:string" default="_new" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Where the target opens.  See lz.Browser.loadURL for
+    a list of values. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="href" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The URL target. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hoverTags" type="xs:string" default="u" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A list of tags that are applied to the link when
+    it is hovered.  This is either a list of tag names, e.g. "u"
+    or "u b", or the HTML itself, e.g. "&amp;lt;u&amp;gt;". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="hoverColor" type="lzx:color" default="blue" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color when the link is hovered. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="color" type="lzx:color" default="blue" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The color when the link is &lt;em&gt;not&lt;/em&gt; being hovered. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="state" type="lzx:state" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  A description of an instance hierarchy that can be applied and removed at runtime.
+JavaScript: lz.state 
+
+A state is an object that holds its children and attributes for creation or application at a later time when the state's apply method is called. In addition to representing visual state by adding and removing children from a view, states are often used to control constraints which are applied and removed at different times during the run of an application.
+
+For the most part, the declarative style used in OpenLaszlo applications represents an initial state for the application. All modification to application state can be made using the script API's, but it is often convenient to declaratively describe a bit of application state which may be selectively applied or removed at runtime. The &lt;state&gt; tag is provided for this purpose.
+
+Everything within a &lt;state&gt; tag acts as if it were written inside the parent when the state is applied. States can contain attributes, methods, and other nodes.
+
+When a state is removed, any children or constraints created when the state was applied are then removed, but attributes that were set by the application of the state are not restored. 
+
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="state" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="pooling" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        If true, the state will merely hide any views it has created when it is removed (not applied), instead of destroying them. 
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="applied" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+        Whether or not the state is applied. setAttribute('applied', true) will apply the state. setAttribute('applied', false) will remove the state.
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="attribute" type="lzx:attribute" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Sets an attribute of the object that contains it. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="attribute" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="value" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+  The initial value of the attribute. The type of this value is specified by the value of the type attribute; if that attribute is not present, it's the type of this attribute in this element's tag. The attribute is given this value when the element is created. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="string" >
+</xs:attribute>
+      <xs:attribute name="style" type="xs:string" default="string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The CSS property name that can be used to set the value of this attribute under the control of a &lt;stylesheet&gt; (See Chapter 19. Cascading Style Sheets ). style can be any valid CSS property name, and need not be the same as the attribute name; for example you could use the standard CSS property name background-color as the style of the bgcolor attribute. When an attribute has a style property, the value property acts as the default value for the attribute: in the absence of any applicable CSS rule specifying the corresponding property, the attribute will be given the default value. In the case of dynamic CSS, the attribute will revert to the default value if CSS was applied and is removed. (See Dynamic CSS .) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="setter" type="xs:string" default="string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Delegate the event to a method on changes through setAttribute('...',$value) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="required" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ True if this is a required attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="name" type="lzx:token" use="required" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the attribute. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="allocation" type="xs:string" default="instance|class" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ One of:
+class
+    The attribute will be an attribute of the class; to refer to it, you say lz.classname.attributename . 
+instance
+    Each instance will have an attribute with the specified properties ( name , type , value , etc.). 
+
+You can set allocation to class to get static attributes. Static properties are attached to the class itself, for example lz.classname . </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="streamscrubber" type="lzx:streamscrubber" >
+</xs:element>
+  <xs:complexType name="streamscrubber" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="totaltime" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ read only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="time" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ read only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stream" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the stream to control </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrubbing" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ true when user has the mouse down and is scrubbing the stream </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="progress" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ read only </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="min" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ min 'x' value, defaults to zero (typically the left side of parent) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="max" type="lzx:number" default="$once{parent.width-this.width}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ max 'x' value, defaults to the right side of the parent </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="stringvalidator" type="lzx:stringvalidator" >
+</xs:element>
+  <xs:complexType name="stringvalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevalidator">
+      <xs:attribute name="minLength" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="minErrorstring" type="xs:string" default="this string is shorter than the minimum allowed length." >
+</xs:attribute>
+      <xs:attribute name="maxLength" type="lzx:number" default="255" >
+</xs:attribute>
+      <xs:attribute name="maxErrorstring" type="xs:string" default="this string is longer than the maximum allowed length." >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="LzDebugWindow" type="lzx:LzDebugWindow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+    The Laszlo debugger window. An instance will be automatically
+    instantiated when the application is compiled in debug mode
+    (requested by either using the
+    &lt;code&gt;canvas&lt;/code&gt; &lt;code&gt;debug&lt;/code&gt; attribute or by loading the
+    application using the &lt;code&gt;?debug=true&lt;/code&gt; option).  
+
+    @keywords private_constructor
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="LzDebugWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="smallInputAreaHeight" type="xs:string" default="29" >
+</xs:attribute>
+      <xs:attribute name="savedYPos" type="xs:string" default="10" >
+</xs:attribute>
+      <xs:attribute name="savedXPos" type="xs:string" default="10" >
+</xs:attribute>
+      <xs:attribute name="savedWidth" type="xs:string" default="340" >
+</xs:attribute>
+      <xs:attribute name="savedInputAreaHeight" type="xs:string" default="53" >
+</xs:attribute>
+      <xs:attribute name="savedHeight" type="xs:string" default="125" >
+</xs:attribute>
+      <xs:attribute name="resizable" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="persist" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="minimized" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="lineheight" type="xs:string" default="13" >
+</xs:attribute>
+      <xs:attribute name="lastpart" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="lastobj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="keep_width_on_canvas" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="keep_height_on_canvas" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="isLoaded" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="evalloader" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="default_width" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="default_height" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="debuggerBorderWidth" type="xs:string" default="5" >
+</xs:attribute>
+      <xs:attribute name="consoleRemote" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="commandhistory_ptr" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="commandhistory" type="xs:string" default="[]" >
+</xs:attribute>
+      <xs:attribute name="closeable" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="clientBridge" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="autoscroll" type="xs:string" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="layout" type="lzx:layout" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    layout.lzx
+   
+    @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
+               Use is subject to license terms.
+   
+    @topic LFC
+    @subtopic Controllers
+    @affects lzlayout
+    @access public
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="layout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="vip" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @access private
+ * Just used to effect a type cast of immediateparent to LzView 
+ * TODO [max 2010-07] add LzView type back when possible
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="updateDelegate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A delegate used to update the layout.
+      @type LzDelegate
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="subviews" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     Array of the views this layout controls. Used by subclasses of
+     &lt;code&gt;layout&lt;/code&gt; to implement their arrangement algorithm by
+     adjusting the appropriate attribute of each view.
+    
+     @type [LzView]
+     @access public
+   </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="locked" type="xs:string" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     Set to true if layout is locked from updates.
+    
+     @devnote locked is set to 2 in the prototype of the layout. This
+     is a special signal that the layout is locked temporarily until
+     it resolves its references
+    
+     @type Boolean
+   </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="valueregion" type="lzx:valueregion" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Represents a region of values in the chart
+        @access public
+        </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="valueregion" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="tipEnabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable the value region's tooltip </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="tip" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Tip label that appear when the mouse is over the value region</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="regionEnabled" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ enable the rendering of the value region in the chart </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ label of the value region, it is shown next to the region </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="data2" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Maximum value for the Value region</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="data1" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum value for the Value region</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="axis" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the associated axis to the Region can be"x" or "y" </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="grid" type="lzx:grid" >
+</xs:element>
+  <xs:complexType name="grid" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basegrid">
+      <xs:attribute name="showvscroll" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If false, the grid will never show a vertical scrollbar,
+            even if the rows are wider than the grid.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showhscroll" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If false, the grid will never show a horizontal scrollbar,
+              even if the rows are wider than the grid.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="goldstyle" type="lzx:goldstyle" >
+</xs:element>
+  <xs:complexType name="goldstyle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:style">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="treeselector" type="lzx:treeselector" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Selection manager used by tree. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="treeselector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:selectionmanager">
+      <xs:attribute name="multiselect" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If multiselect is true, multiple selection is enabled.  When the
+              shift key is down, a range of items is selected.  When the control
+              key is down, any item may be added to the selection. Default is
+              false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_dbg_lztextscroller" type="lzx:_dbg_lztextscroller" >
+</xs:element>
+  <xs:complexType name="_dbg_lztextscroller" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="visiblelines" type="xs:string" default="4" >
+</xs:attribute>
+      <xs:attribute name="thumbheight" type="xs:string" default="24" >
+</xs:attribute>
+      <xs:attribute name="textlines" type="xs:string" default="[]" >
+</xs:attribute>
+      <xs:attribute name="lineptr" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="autoscroll" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="arrowbuttonheight" type="xs:string" default="12" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basetabs" type="lzx:basetabs" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The base tabs object. This is the outermost containing component
+          within which there are a basetabsbar and the basetabscontent. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basetabs" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="tabclass" type="xs:string" default="basetab" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class to instantiate tab items for basetabsbar. Can be
+              overridden by basetabpane.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_top" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The top inset for content appearing within a basetabpane. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_right" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The right inset for content appearing within a basetabpane. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_left" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The left inset for content appearing within a basetabpane. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="inset_bottom" type="lzx:number" default="8" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The bottom inset for content appearing within a basetabpane. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="contentclass" type="xs:string" default="basetabscontent" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class to instantiate to contain basetabpanes.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="content" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is a reference to basetab's content area. This is where all
+              basetabpanes in tabs are placed.
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordersize" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the border surrounding a basetabpane. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="barclass" type="xs:string" default="basetabsbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Class to instantiate to contain tab items.
+              @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bar" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is a reference to its basetabsbar. 
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resource" type="lzx:resource" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+A tag that defines a media object that can be associated with a view. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="resource" mixed="true">
+  <xs:group ref="lzx:topLevelElements" />
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The path of a file that contains the source for this object. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="offsety" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The y offset of a bitmap resource used for a custom cursor. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="offsetx" type="lzx:number" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The x offset of a bitmap resource used for a custom cursor. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="name" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The name of a variable that will be set to this object when the application is started. If this element is directly within a canvas or library element, the global variable and the canvas property with this name will be set to this object. If this element is within another object, that object's property with this name will be set to this object.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:complexType>
+<xs:element name="datatip" type="lzx:datatip" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     tooltip is a tool tip to be use be the chart elements such as the plot area
+     @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="datatip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:label">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="list" type="lzx:list" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A list containing listitems and providing selection capabilities. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="list" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baselist">
+      <xs:attribute name="tracking" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Toggles the mousedown tracking. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number of pixels that items should be spaced from one another. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="shownitems" type="xs:string" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The number of items that are displayed. This value will ignored if
+              this view attempts to draw past the canvas boundary. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollbarclassname" type="xs:string" default="vscrollbar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The name of the class to instantiate as our scrollbar.
+              @keywords public </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scrollable" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousetrackoutright" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event not used - declared to remove debugger warnings </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onmousetrackoutleft" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event not used - declared to remove debugger warnings </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minheight" type="lzx:number" default="24" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ minumum height of the list </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bordersize" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size in pixels for this list. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border_top" type="xs:string" default="${this.bordersize}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the top border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border_right" type="xs:string" default="${this.bordersize}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the right border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border_left" type="xs:string" default="${this.bordersize}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the left border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="border_bottom" type="xs:string" default="${this.bordersize}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The size of the bottom border. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoscrollbar" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, a scrollbar will show up automatically when there are
+              more items than shownitems. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoview" type="lzx:videoview" >
+</xs:element>
+  <xs:complexType name="videoview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="url" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The url of the video, may be a relative URL, 
+            for example: "http://localhost/myvideo.flv", 
+            or simply "myvideo.flv".
+
+            When type="rtmp", the url is always relative the rtmpconnection.
+            (Use only when you are not explicitly declaring the mediastream.)
+    </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="type" type="xs:string" default="http" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Protocol "rtmp" or "http". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="stream" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The mediastream object.  A mediastream will be automatically generated if one is not specified at init time. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="starttime" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Show the frame from this time (in seconds) whenever the url 
+          is set for video playback.
+          Use -1 to show no frame (which will leave the image as it
+          was when switching videos) </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="playvolume" type="xs:string" default="1.0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The volume for video playback, a float from 0 to 1. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mic" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The microphone object. 
+            @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="debug" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, Debug.write extra stuff (this may go away). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cam" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The camera object. 
+            @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="buffertime" type="xs:string" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, video will start playing as soon as url is set. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoplay" type="xs:string" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true, video will start playing as soon as url is set. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="timevalidator" type="lzx:timevalidator" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ timevalidator class </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="timevalidator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basevalidator">
+      <xs:attribute name="separator" type="xs:string" default=":" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Separator must be the same as specified in "format" attribute
+              it's needed to prevent input with different separator </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="invalidformatErrorstring" type="xs:string" default="Please input the time in a valid format" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The five attributes above are five different message errors </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="invalidSeparatorErrorstring" type="xs:string" default="Please enter a valid separator" >
+</xs:attribute>
+      <xs:attribute name="invalidSecondsErrorstring" type="xs:string" default="Please enter seconds between 0 and 59" >
+</xs:attribute>
+      <xs:attribute name="invalidMinutesErrorstring" type="xs:string" default="Please enter minutes between 0 and 59" >
+</xs:attribute>
+      <xs:attribute name="invalidHourErrorstring" type="xs:string" default="Please enter hour between 0 and 23" >
+</xs:attribute>
+      <xs:attribute name="incongruentSeparatorErrorstring" type="xs:string" default="Warning! Two different separators are defined in format and separator attribute" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Warning message when the two attribute "format" and "separator" have different separator's char </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="format" type="xs:string" default="hh:mi:ss" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The time format attribute. Default: hh:mi:ss
+              hh = hour
+              mi = minutes
+              ss = seconds 
+              The separator must be the same ss specified in "separator" attribute </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="floatinglist" type="lzx:floatinglist" >
+</xs:element>
+  <xs:complexType name="floatinglist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basefloatinglist">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_dbg_horiz_scrollbar" type="lzx:_dbg_horiz_scrollbar" >
+</xs:element>
+  <xs:complexType name="_dbg_horiz_scrollbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="thumbwidth" type="xs:string" default="24" >
+</xs:attribute>
+      <xs:attribute name="autoscroll" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="arrowbuttonwidth" type="xs:string" default="12" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="xmlrpc" type="lzx:xmlrpc" >
+</xs:element>
+  <xs:complexType name="xmlrpc" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:rpc">
+      <xs:attribute name="service" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ (Required) XML-RPC service URL. The URL must be http. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="treenode" type="lzx:treenode" >
+</xs:element>
+  <xs:complexType name="treenode" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseopttreenode">
+      <xs:attribute name="mousein" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fisheye_item" type="lzx:fisheye_item" >
+</xs:element>
+  <xs:complexType name="fisheye_item" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tooltip" type="xs:string" default="${this.text}" >
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="start_size" type="xs:string" default="${parent.start_size}" >
+</xs:attribute>
+      <xs:attribute name="old_y" type="xs:string" default="$once{canvas.getMouse('y')}" >
+</xs:attribute>
+      <xs:attribute name="old_x" type="xs:string" default="$once{canvas.getMouse('x')}" >
+</xs:attribute>
+      <xs:attribute name="myTooltipManager" type="xs:string" default="$once{parent.tooltipmanager}" >
+</xs:attribute>
+      <xs:attribute name="icon" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="halo_size" type="xs:string" default="${parent.halo_size}" >
+</xs:attribute>
+      <xs:attribute name="expanded_size" type="xs:string" default="${parent.expanded_size}" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videotogglebutton" type="lzx:videotogglebutton" >
+</xs:element>
+  <xs:complexType name="videotogglebutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tracking" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="over" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="icon" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="frameTable" type="xs:string" default="$once{             [1, 2, 1, 2, 3, 3, 3, 3]}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This look-up table maps a state value to a frame index. 
+              Currently 2^3=8 states: 
+              over (2^0=1), tracking (2^1=2) and engaged (2^2=4). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="engaged" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dataset" type="lzx:dataset" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+An in-memory xml-style data hierarchy. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="dataset" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="type" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When set to "http" or "soap", the dataset interprets it's src attribute as a URL to be loaded at runtime. If the "src" attribute is set to a URL (e.g., starts with "http:") then the type attribute implicitly becomes "http".  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="trimwhitespace" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When true, the server will trim whitespace in the XML data (defaults to false).  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="timeout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The numer of milliseconds to wait before the request times out, and an ontimeout event is sent. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="src" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The source for requests made by this dataset. The value can be a pathname or an absolute or relative URL. If the value is a URL (starts with "http:"), the dataset will be configured to load its data at runtime. Otherwise, the data is included inline into the application at compile time.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sel" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Selection state of this node, used by dataselectionmanager </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="secureport" type="lzx:number" default="443" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	TCP port number to use for secure (HTTPS) requests </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="request" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, the datset will make a request upon initialization </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rawdata" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Holds raw data response string from data source </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="querytype" type="xs:string" default="GET" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+HTTP request method. Value must be one of "GET" or "POST". </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="querystring" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	A string to be appended to the request that the dataset makes.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxyurl" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The URL of the proxy server, for proxied requests </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="proxied" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+Sets whether or not the dataset makes its request directly to the target server or via the server proxy. Inherits value from canvas.proxied flag.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="postbody" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Used to send a string as the entire body of a POST request. For a POST request, setting postbody to a non-null string value will send that string as the complete body of the POST request. In this case any other query parameters that have been set via setQueryParam dataset will be ignored. The behavior of a GET request with a non-null postbody is not defined. Note, the swf8 runtime is forced to XML-quote the postbody, due to limitations in the Flash 8 player API. This restriction is not present in later swf runtimes, or in the DHTML runtime.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="parentNode" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	The parent of this node </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="params" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	An lz.Param object which holds query key-value pairs. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ownerDocument" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	The owner document for this node. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nsprefix" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When true, the server will preserve namespace prefixes on data node names and attribute names  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nodeType" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	The type of this node one of lz.DataElement.DOCUMENT_NODE, lz.DataElement.ELEMENT_NODE or lz.DataElement.TEXT_NODE </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="nodeName" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	The name of this node. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="multirequest" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	Create a new data request object for each request. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="getresponseheaders" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When true, the proxy server (if making a proxied request) will encode and send the HTTP response headers along with the data (defaults to false). Due to a lack of a native API to get this information, SOLO SWF applications will always return an empty set. When making a proxied request, getresponseheaders must be true in order for the response headers to be retrieved via the getResponseHeader or getAllResponseHeaders methods.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataprovider" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	Holds a pointer to the DataProvider which handles data load requests for this dataset. Default value is canvas.defaultdataprovider  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="credentialled" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+When true, the withCredentials property on the XHR object will be set to true, allowing credentialled cross-origin resource sharing (CORS) requests. If withCredentials is not set for a CORS request using credentials, the browser will not set any cookies sent by the server. See http://www.w3.org/TR/cors/#access-control-allow-credentials-respons and http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-withcredentials-attribute for more information.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="clientcacheable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 	When true, data responses can be cached by the client (browser). When false, a unique valued argument will be added to the request string in the format '__lzbc__=1204685840777' to defeat the browser's cache.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="childNodes" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	An array of children of this node </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="cacheable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When true, the server will attempt to cache response (defaults to false). There are security concerns when this field is true. When this field is true, you will usually want the getresponseheaders field to be false. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autorequest" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	If true, changes to src or querystring attributes cause doRequest() to be called automatically. If false, doRequest() must be called manually when src or querystring attributes change.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attributes" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The dictionary of attributes for this node. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="acceptencodings" type="lzx:boolean" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+	When true, the server will accept encoded responses for this request. Encoded responses require more work for the LPS (encoding the response) and client (decoding the response) in trade for lower network bandwidth usage.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="minibutton" type="lzx:minibutton" >
+</xs:element>
+  <xs:complexType name="minibutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:stylishbutton">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="plainfloatinglist" type="lzx:plainfloatinglist" >
+</xs:element>
+  <xs:complexType name="plainfloatinglist" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basefloatinglist">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basechartbacking" type="lzx:basechartbacking" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The base chart background class for rectangular charts.
+        (That is, not used in piechart.)  (Of beta quality.) </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="basechartbacking" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="drawready" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The drawview responsible for drawing horizontal ticks. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lwzendatepicker" type="lzx:lwzendatepicker" >
+</xs:element>
+  <xs:complexType name="lwzendatepicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basedatepicker">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:group name="topLevelElements">
+<xs:sequence>
+<xs:choice minOccurs="0" maxOccurs="unbounded">
+<xs:any />
+</xs:choice>
+</xs:sequence>
+</xs:group>
+</xs:schema>
diff --git a/WebContent/project.xsd b/WebContent/project.xsd
new file mode 100644
index 0000000..cb4bc03
--- /dev/null
+++ b/WebContent/project.xsd
@@ -0,0 +1,8472 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
+  targetNamespace="http://localhost/openlaszlo/project" 
+  xmlns:lzx="http://localhost/openlaszlo/lzx" 
+  xmlns:project="http://localhost/openlaszlo/project">
+<xs:import namespace="http://localhost/openlaszlo/lzx" schemaLocation="lzx.xsd"/><xs:element name="resultPollWin" type="project:resultPollWin" >
+</xs:element>
+  <xs:complexType name="resultPollWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="roomPoll" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="resultpollvotes" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="displayedPoll" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="archPolls" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerListPagingContent" type="project:innerListPagingContent" >
+</xs:element>
+  <xs:complexType name="innerListPagingContent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDateSelector" type="project:baseDateSelector" >
+</xs:element>
+  <xs:complexType name="baseDateSelector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelectorComponent">
+      <xs:attribute name="year" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selecteddate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onyearSel" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onmonthSel" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ondoubleselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="monthnames" type="xs:string" default="['Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']" >
+</xs:attribute>
+      <xs:attribute name="firstdayinweek" type="lzx:number" default="$once{ canvas.firstdayinweek }" >
+</xs:attribute>
+      <xs:attribute name="dayNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dayLabelNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="editRecordStream" type="project:editRecordStream" >
+</xs:element>
+  <xs:complexType name="editRecordStream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="remoteMessage" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="myvideocontainer" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isSyncUpdate" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isInterview" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="doDefaultAnimation" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="currentClient" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="chosenSetting" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="chosenMic" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="chosenCam" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="horizontalMenuIconBarPointer" type="project:horizontalMenuIconBarPointer" >
+</xs:element>
+  <xs:complexType name="horizontalMenuIconBarPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="errorPopup" type="project:errorPopup" >
+</xs:element>
+  <xs:complexType name="errorPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="makeModal" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="error" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imageForScreenViewer" type="project:imageForScreenViewer" >
+</xs:element>
+  <xs:complexType name="imageForScreenViewer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:image">
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="alterModus" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="terminareaForWeekView" type="project:terminareaForWeekView" >
+</xs:element>
+  <xs:complexType name="terminareaForWeekView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="terminObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="description" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="countX" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="calenderObjRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="previousNextButton" type="project:previousNextButton" >
+</xs:element>
+  <xs:complexType name="previousNextButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="organisation_id" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorDay" type="project:dateSelectorDay" >
+</xs:element>
+  <xs:complexType name="dateSelectorDay" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelectorComponent">
+      <xs:attribute name="daydate" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="confmenucommand" type="project:confmenucommand" >
+</xs:element>
+  <xs:complexType name="confmenucommand" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:command">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseMenuSeperator" type="project:baseMenuSeperator" >
+</xs:element>
+  <xs:complexType name="baseMenuSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewModerationMiniIcons" type="project:interviewModerationMiniIcons" >
+</xs:element>
+  <xs:complexType name="interviewModerationMiniIcons" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="changeWidthLetterSlider" type="project:changeWidthLetterSlider" >
+</xs:element>
+  <xs:complexType name="changeWidthLetterSlider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertySelector">
+      <xs:attribute name="tempValue" type="lzx:number" default="$once{ parent.initialNumber }" >
+</xs:attribute>
+      <xs:attribute name="step" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="onplus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onminus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="numberAlign" type="xs:string" default="right" >
+</xs:attribute>
+      <xs:attribute name="minimum" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="maximum" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="initialNumberInit" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="initialNumber" type="lzx:number" default="12" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawChooseModirPlain" type="project:drawChooseModirPlain" >
+</xs:element>
+  <xs:complexType name="drawChooseModirPlain" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseChooseIcon">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSelectablemodi" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="toolTipCustomPic" type="project:toolTipCustomPic" >
+</xs:element>
+  <xs:complexType name="toolTipCustomPic" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleLabelButtonTooltip" type="project:simpleLabelButtonTooltip" >
+</xs:element>
+  <xs:complexType name="simpleLabelButtonTooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="tooltipId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsLeftPanel" type="project:mainToolsLeftPanel" >
+</xs:element>
+  <xs:complexType name="mainToolsLeftPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseLeftPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="moderationMiniIconsEventUserList" type="project:moderationMiniIconsEventUserList" >
+</xs:element>
+  <xs:complexType name="moderationMiniIconsEventUserList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="showAvIcons" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isActive" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventUserListTable" type="project:eventUserListTable" >
+</xs:element>
+  <xs:complexType name="eventUserListTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="userStatus" type="project:userStatus" >
+</xs:element>
+  <xs:complexType name="userStatus" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="statusText" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="statusColor" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tableListItem" type="project:tableListItem" >
+</xs:element>
+  <xs:complexType name="tableListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isdatarecord" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isaltered" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="changeholder" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basePagingListItem" type="project:basePagingListItem" >
+</xs:element>
+  <xs:complexType name="basePagingListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentListItem">
+      <xs:attribute name="itemId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="customEdittext" type="project:customEdittext" >
+</xs:element>
+  <xs:complexType name="customEdittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:edittext">
+      <xs:attribute name="regexpType" type="xs:string" default="none" >
+</xs:attribute>
+      <xs:attribute name="regexpLabelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="preText" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onafterCheck" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="isvalidInput" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="termindetails" type="project:termindetails" >
+</xs:element>
+  <xs:complexType name="termindetails" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="terminObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="roomtype" type="xs:string" default="1" >
+</xs:attribute>
+      <xs:attribute name="contact" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseUrl" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="arrayMeetingMember" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="appointmentId" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="changeWidthSlider" type="project:changeWidthSlider" >
+</xs:element>
+  <xs:complexType name="changeWidthSlider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertySelector">
+      <xs:attribute name="tempValue" type="lzx:number" default="$once{ parent.initialNumber }" >
+</xs:attribute>
+      <xs:attribute name="step" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="onplus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onminus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="numberAlign" type="xs:string" default="right" >
+</xs:attribute>
+      <xs:attribute name="minimum" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="maximum" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="429" >
+</xs:attribute>
+      <xs:attribute name="initialNumberInit" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="initialNumber" type="lzx:number" default="3" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceBrowser" type="project:conferenceBrowser" >
+</xs:element>
+  <xs:complexType name="conferenceBrowser" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="objMessage" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="initedByUser" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="initURL" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ignoreNextEvent" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="callBackJSDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="browserhistoryPre" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="browserhistoryPost" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomRemote" type="project:activityListRestrictedRoomRemote" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomRemote" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="searchContact" type="project:searchContact" >
+</xs:element>
+  <xs:complexType name="searchContact" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="vorname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="userId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="nachname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="email" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="testingApplication" type="project:testingApplication" >
+</xs:element>
+  <xs:complexType name="testingApplication" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="timerIsRunning" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="recordingsCounter" type="lzx:number" default="5" >
+</xs:attribute>
+      <xs:attribute name="lastRecorded" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isRunning" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="counterDelegate" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roomListInviteUserItem" type="project:roomListInviteUserItem" >
+</xs:element>
+  <xs:complexType name="roomListInviteUserItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="starttime" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomType" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomClassName" type="xs:string" default="conferenceView" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="maxUsers" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="ispublic" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isaudience" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentusers" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="checkForMaxUsers" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fileExplorer" type="project:fileExplorer" >
+</xs:element>
+  <xs:complexType name="fileExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="parentFolderId" type="lzx:number" default="-2" >
+</xs:attribute>
+      <xs:attribute name="onClose" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isTrashCan" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="currentTrackGroupName" type="xs:string" default="fileExplorer" >
+</xs:attribute>
+      <xs:attribute name="currentDragItem" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="editWhiteboardDefault" type="project:editWhiteboardDefault" >
+</xs:element>
+  <xs:complexType name="editWhiteboardDefault" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ibutton" type="project:ibutton" >
+</xs:element>
+  <xs:complexType name="ibutton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="overRsrcNumber" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="normalRsrcNumber" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="mouseisdown" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downRsrcNumber" type="lzx:number" default="3" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseConferenceRoom" type="project:baseConferenceRoom" >
+</xs:element>
+  <xs:complexType name="baseConferenceRoom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+	  </xs:attribute>
+      <xs:attribute name="meetingTimer" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventUserListInner" type="project:eventUserListInner" >
+</xs:element>
+  <xs:complexType name="eventUserListInner" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseRoomInnerList">
+      <xs:attribute name="sortType" type="xs:string" default="alphabetical" >
+</xs:attribute>
+      <xs:attribute name="selectedItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnoverlistheaderitemResize" type="project:turnoverlistheaderitemResize" >
+</xs:element>
+  <xs:complexType name="turnoverlistheaderitemResize" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basicturnoverlistheaderitem">
+      <xs:attribute name="subviewsid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="minwidth" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="minheight" type="lzx:number" default="10" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="monthView" type="project:monthView" >
+</xs:element>
+  <xs:complexType name="monthView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="year" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="weekdaynames" type="xs:string" default="['So.','Mo.','Di.','Mi.','Do.','Fr.','Sa.']" >
+</xs:attribute>
+      <xs:attribute name="showingdate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selecteddate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="monthnames" type="xs:string" default="['Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']" >
+</xs:attribute>
+      <xs:attribute name="firstdayinweek" type="lzx:number" default="$once{ canvas.firstdayinweek }" >
+</xs:attribute>
+      <xs:attribute name="dayNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dayLabelNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="monitorListItemView" type="project:monitorListItemView" >
+</xs:element>
+  <xs:complexType name="monitorListItemView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceMenubar" type="project:conferenceMenubar" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Menu for public/private conference and audience room. This class shows 
+		exit, moderator, file, setteings and poll menu. Those menu items are connected 
+		to each command that has been declared in base/mainMethods.lzx. May 24 2008 
+		commented by onokeiji@gmail.com </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="conferenceMenubar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:menubar">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoBoard" type="project:videoBoard" >
+</xs:element>
+  <xs:complexType name="videoBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:conferenceBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sponsorsPopUp" type="project:sponsorsPopUp" >
+</xs:element>
+  <xs:complexType name="sponsorsPopUp" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatTab" type="project:chatTab" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+Chat tabpane class. It contains chatOutput-class and catTabBottom-class.
+This is used in the conference.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chatTab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleBaseTabpane">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="editUserProfile" type="project:editUserProfile" >
+</xs:element>
+  <xs:complexType name="editUserProfile" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentSaveView">
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="userObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverListHeaderItem" type="project:turnOverListHeaderItem" >
+</xs:element>
+  <xs:complexType name="turnOverListHeaderItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleLabelButton">
+      <xs:attribute name="subviewsid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basePropertySelector" type="project:basePropertySelector" >
+</xs:element>
+  <xs:complexType name="basePropertySelector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isEnabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="enabledView" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="boxPosition" type="xs:string" default="down" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ position of the SliderWin or ColorPicker </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="answerPoll" type="project:answerPoll" >
+</xs:element>
+  <xs:complexType name="answerPoll" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="roomScopeName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomPollId" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomPollAnswerList" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="pollvalue" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="pollTypesId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="pollTypeId" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="pollQuestion" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="pollDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="createdBy" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentsLoaderIcon" type="project:documentsLoaderIcon" >
+</xs:element>
+  <xs:complexType name="documentsLoaderIcon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="resourceN" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="labeltext" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="remoteWhiteboard" type="project:remoteWhiteboard" >
+</xs:element>
+  <xs:complexType name="remoteWhiteboard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawSave">
+      <xs:attribute name="uniqueObjectSyncName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="loadingObjectListId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="loadingObjectList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="loadObjectDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isStarting" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawPaintTools" type="project:drawPaintTools" >
+</xs:element>
+  <xs:complexType name="drawPaintTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sharedObject" type="project:sharedObject" >
+</xs:element>
+  <xs:complexType name="sharedObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="so" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onStatus" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="monitorList" type="project:monitorList" >
+</xs:element>
+  <xs:complexType name="monitorList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="doubleclickEvent" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationFilePDF" type="project:listPresentationFilePDF" >
+</xs:element>
+  <xs:complexType name="listPresentationFilePDF" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseListPresentationItem">
+      <xs:attribute name="swfName" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="pdfname" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseVideoStreamDevice" type="project:baseVideoStreamDevice" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	extends the baseVideoStream with functions to catch Device Events
+	this Class uses Events from the Base Class baseVideoStream
+	onmicro and oncamera, which are thrown, once a device was set
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseVideoStreamDevice" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseVideoStream">
+      <xs:attribute name="sendMicroStatus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="sendCameraStatus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="objMessage" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+	Message to send to Clients
+	 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="micactive" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Shows if there is Activity on the Microphone </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="level" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Audio level, 0-100, the amount of sound detected by this microphone.
+          Reset to 0 when there is no audio (no activity or not allowed).
+          @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isgreater" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+		indicates if the message should be send, you can change the notification 
+		level by changing the loudnessAcitviation in the public/config.xml
+	 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="doSendNotification" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="camactive" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Shows if there is Activity on the Camera </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="closableViewLetter" type="project:closableViewLetter" >
+</xs:element>
+  <xs:complexType name="closableViewLetter" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="userListItem" type="project:userListItem" >
+</xs:element>
+  <xs:complexType name="userListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="login" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dragItemFileExplorer" type="project:dragItemFileExplorer" >
+</xs:element>
+  <xs:complexType name="dragItemFileExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="overItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="newParentFileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="moveToHome" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="dragItemResource" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="alreadySent" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelTooltip" type="project:labelTooltip" >
+</xs:element>
+  <xs:complexType name="labelTooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="setContent" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="multiline" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="ismenubuttonlabel" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="inittwice" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initByDataPathparent" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="holder" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="browserButton" type="project:browserButton" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ TODO:
+		inprement of history feature
+		add resize feature to labelExplorerBox component
+	</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="browserButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="enabled" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ TODO:
+		inprement of history feature
+		add resize feature to labelExplorerBox component
+	</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sharingSession" type="project:sharingSession" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    View for recorded contents list.
+    When you select 'Recordings' on the top menu, this class shows the list.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="sharingSession" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sharingSessionObject" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+    View for recorded contents list.
+    When you select 'Recordings' on the top menu, this class shows the list.
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sharerPublicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="registerToViewers" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="httpSessionStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentCursorObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="closeByRemote" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="devmediadevice" type="project:devmediadevice" >
+</xs:element>
+  <xs:complexType name="devmediadevice" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="itemKkk" type="project:itemKkk" >
+</xs:element>
+  <xs:complexType name="itemKkk" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="netparam" type="project:netparam" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Net parameter.
+        Element to use inside netremotecall.
+        @todo Document netparam class.
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="netparam" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="value" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The value of the netparam. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_recorderClickMask" type="project:_recorderClickMask" >
+</xs:element>
+  <xs:complexType name="_recorderClickMask" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawDoAndUndo" type="project:drawDoAndUndo" >
+</xs:element>
+  <xs:complexType name="drawDoAndUndo" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseChooseIcon">
+      <xs:attribute name="doredo" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatTabItemEmoticons" type="project:chatTabItemEmoticons" >
+</xs:element>
+  <xs:complexType name="chatTabItemEmoticons" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="usertime" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="usercolor" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="picture_uri" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="messageObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="message" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="leading" type="lzx:number" default="5" >
+</xs:attribute>
+      <xs:attribute name="isDirectLink" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basePropertyPanel" type="project:basePropertyPanel" >
+</xs:element>
+  <xs:complexType name="basePropertyPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="basePanel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of this window </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIconSmybolExtraIcons" type="project:miniIconSmybolExtraIcons" >
+</xs:element>
+  <xs:complexType name="miniIconSmybolExtraIcons" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerlistViewParticipentsTable" type="project:innerlistViewParticipentsTable" >
+</xs:element>
+  <xs:complexType name="innerlistViewParticipentsTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lineOnlyColorChoose" type="project:lineOnlyColorChoose" >
+</xs:element>
+  <xs:complexType name="lineOnlyColorChoose" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertySelector">
+      <xs:attribute name="selectedColorTransformedString" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="selectedColor" type="lzx:number" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="colorPickRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="colorIsEnabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="screenSharingDialog" type="project:screenSharingDialog" >
+</xs:element>
+  <xs:complexType name="screenSharingDialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="tObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="lastMouseY" type="lzx:number" default="-1" >
+</xs:attribute>
+      <xs:attribute name="lastMouseX" type="lzx:number" default="-1" >
+</xs:attribute>
+      <xs:attribute name="isWindows" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMouseOverActive" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMac" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isLinux" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="idleDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="doSendEvents" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="currentCursorObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="checkboxIsinited" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="filesPanel" type="project:filesPanel" >
+</xs:element>
+  <xs:complexType name="filesPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="invitationQuickLoader" type="project:invitationQuickLoader" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="invitationQuickLoader" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="userlang" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatOutputRoomsList" type="project:chatOutputRoomsList" >
+</xs:element>
+  <xs:complexType name="chatOutputRoomsList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="wmlFileExplorerItem" type="project:wmlFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="wmlFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+      <xs:attribute name="isWmlFile" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simplebaseItemActivityList" type="project:simplebaseItemActivityList" >
+</xs:element>
+  <xs:complexType name="simplebaseItemActivityList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tStamp" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="rcl" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="message" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawClipArt" type="project:baseDrawClipArt" >
+</xs:element>
+  <xs:complexType name="baseDrawClipArt" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawArrow">
+      <xs:attribute name="minClipArty" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="minClipArtx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxClipArty" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxClipArtx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="deltaClipArty" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="deltaClipArtx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="currentClipArtRessourceName" type="xs:string" default="icons.png" >
+</xs:attribute>
+      <xs:attribute name="clipArtEndy" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="clipArtEndx" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewConferenceMenubar" type="project:interviewConferenceMenubar" >
+</xs:element>
+  <xs:complexType name="interviewConferenceMenubar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:menubar">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listFolderDrag" type="project:listFolderDrag" >
+</xs:element>
+  <xs:complexType name="listFolderDrag" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isPpt" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="foldername" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="singletonErrorPopup" type="project:singletonErrorPopup" >
+</xs:element>
+  <xs:complexType name="singletonErrorPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:errorPopup">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="iframeView" type="project:iframeView" >
+</xs:element>
+  <xs:complexType name="iframeView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isrc" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="iname" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="iid" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="iFrameJsStack" type="xs:string" default="javascript:" >
+</xs:attribute>
+      <xs:attribute name="createIFrame_callbackMax" type="lzx:number" default="1000" >
+</xs:attribute>
+      <xs:attribute name="createIFrame_callbackCounter" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="createIFrameDone_attr" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="callbackTimerDelay" type="lzx:number" default="100" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelerrorPopup" type="project:labelerrorPopup" >
+</xs:element>
+  <xs:complexType name="labelerrorPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:errorPopup">
+      <xs:attribute name="errorlabelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawViewInner" type="project:drawViewInner" >
+</xs:element>
+  <xs:complexType name="drawViewInner" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorDayHeader" type="project:dateSelectorDayHeader" >
+</xs:element>
+  <xs:complexType name="dateSelectorDayHeader" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelectorComponent">
+      <xs:attribute name="daynumber" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelPanel" type="project:labelPanel" >
+</xs:element>
+  <xs:complexType name="labelPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="weekbkgnd" type="project:weekbkgnd" >
+</xs:element>
+  <xs:complexType name="weekbkgnd" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerlistView" type="project:innerlistView" >
+</xs:element>
+  <xs:complexType name="innerlistView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="applyForModeration" type="project:applyForModeration" >
+</xs:element>
+  <xs:complexType name="applyForModeration" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="applymessage" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="guiPresenter" type="project:guiPresenter" >
+</xs:element>
+  <xs:complexType name="guiPresenter" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="defaulttitle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The Title of this Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizeable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be resizeable  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onresized" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ this Event will be triggered after resizing </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclose" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the Event will be thrown if you close the Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onactivate" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the Event will be thrown if you do click on it and drag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimized" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="minimizable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="maximizable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="maxi_y" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxi_x" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxi_width" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxi_height" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="isresizeing" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="ismaximized" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be resizeable  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="initialHeight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="hasshadow" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="dockingbarrier" type="lzx:number" default="15" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="docking" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Can this Box be docked to others and 
+			the width/height of parent compoent barrier </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="customMinimizeMethod" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="parentResultPollBalk" type="project:parentResultPollBalk" >
+</xs:element>
+  <xs:complexType name="parentResultPollBalk" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textA" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="newX" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="newPercent" type="xs:string" default="0%" >
+</xs:attribute>
+      <xs:attribute name="answer" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomScreen" type="project:activityListRestrictedRoomScreen" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomScreen" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="questionCheckbox" type="project:questionCheckbox" >
+</xs:element>
+  <xs:complexType name="questionCheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="valBool" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendar" type="project:calendar" >
+</xs:element>
+  <xs:complexType name="calendar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="terminareaObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="terminObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="terminObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="selecteddate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="detailsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentSelection" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="contact" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="appointmentId" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basePanel" type="project:basePanel" >
+</xs:element>
+  <xs:complexType name="basePanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseBoundingBorderView">
+      <xs:attribute name="title" type="xs:string" default="basePanel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of this window </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rootFileExplorerItem" type="project:rootFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="rootFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basepanel" type="project:basepanel" >
+</xs:element>
+  <xs:complexType name="basepanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleTurnOverList" type="project:simpleTurnOverList" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common simpleTurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="simpleTurnOverList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="ondblclickedItem" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="mainBgColor" type="xs:string" default="0xEEF0EB" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorMonth" type="project:dateSelectorMonth" >
+</xs:element>
+  <xs:complexType name="dateSelectorMonth" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelectorComponent">
+      <xs:attribute name="month" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="firstweekNumber" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="currentMonthName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorPot" type="project:colorPot" >
+</xs:element>
+  <xs:complexType name="colorPot" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="mycolorString" type="xs:string" default="0x000000" >
+</xs:attribute>
+      <xs:attribute name="mycolor" type="lzx:color" default="0x000000" >
+</xs:attribute>
+      <xs:attribute name="listener" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="participentListItem" type="project:participentListItem" >
+</xs:element>
+  <xs:complexType name="participentListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="formatedDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="canRemote" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnoverlistheaderitem" type="project:turnoverlistheaderitem" >
+</xs:element>
+  <xs:complexType name="turnoverlistheaderitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basicturnoverlistheaderitem">
+      <xs:attribute name="subviewsid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chooseDrawAreaObjectWindow" type="project:chooseDrawAreaObjectWindow" >
+</xs:element>
+  <xs:complexType name="chooseDrawAreaObjectWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:explorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="listV" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedUserList" type="project:restrictedUserList" >
+</xs:element>
+  <xs:complexType name="restrictedUserList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="organisation_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ colors for each user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadCastViewRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ holds a references to the videoview which is broadcasting </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="applyDefaultModeration" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="allowUserQuestions" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="monitorSubListItem" type="project:monitorSubListItem" >
+</xs:element>
+  <xs:complexType name="monitorSubListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textitem" type="xs:string" default="def" >
+</xs:attribute>
+      <xs:attribute name="lableid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="itemid" type="xs:string" default="def" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverListHeaderItemSimple" type="project:turnOverListHeaderItemSimple" >
+</xs:element>
+  <xs:complexType name="turnOverListHeaderItemSimple" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleLabelButton">
+      <xs:attribute name="pathOrder" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="asc" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelBlueButton" type="project:labelBlueButton" >
+</xs:element>
+  <xs:complexType name="labelBlueButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:blueButton">
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnoverlistheaderitemResizeWizzardRefresh" type="project:turnoverlistheaderitemResizeWizzardRefresh" >
+</xs:element>
+  <xs:complexType name="turnoverlistheaderitemResizeWizzardRefresh" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basicturnoverlistheaderitem">
+      <xs:attribute name="subviewsid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="minwidth" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="minheight" type="lzx:number" default="10" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="openmeetingsTabButtonBackground" type="project:openmeetingsTabButtonBackground" >
+</xs:element>
+  <xs:complexType name="openmeetingsTabButtonBackground" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:roundRectGradient">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sharingScreenImage" type="project:sharingScreenImage" >
+</xs:element>
+  <xs:complexType name="sharingScreenImage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:image">
+      <xs:attribute name="imageCompleted" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="subMenuIconToolsToUpload" type="project:subMenuIconToolsToUpload" >
+</xs:element>
+  <xs:complexType name="subMenuIconToolsToUpload" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="refToolbar" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="currentSelected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="currentContainer" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelExplorerBox" type="project:labelExplorerBox" >
+</xs:element>
+  <xs:complexType name="labelExplorerBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:explorerBox">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentsTabBar" type="project:documentsTabBar" >
+</xs:element>
+  <xs:complexType name="documentsTabBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="currentItem" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="paintMenu" type="project:paintMenu" >
+</xs:element>
+  <xs:complexType name="paintMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseToolbarMenu">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseErrorDialog" type="project:baseErrorDialog" >
+</xs:element>
+  <xs:complexType name="baseErrorDialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="errortext" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="errorid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="addInfo" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseListPresentationItemExplorer" type="project:baseListPresentationItemExplorer" >
+</xs:element>
+  <xs:complexType name="baseListPresentationItemExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmoduleimgfolder" type="xs:string" default="$once{ canvas.uploadmoduleimgfolder }" >
+</xs:attribute>
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isoriginal" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewListInner" type="project:interviewListInner" >
+</xs:element>
+  <xs:complexType name="interviewListInner" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseRoomInnerList">
+      <xs:attribute name="sortType" type="xs:string" default="alphabetical" >
+</xs:attribute>
+      <xs:attribute name="selectedItem" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseToolbarMenu" type="project:baseToolbarMenu" >
+</xs:element>
+  <xs:complexType name="baseToolbarMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selectedButton" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoBoardAudience" type="project:videoBoardAudience" >
+</xs:element>
+  <xs:complexType name="videoBoardAudience" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:conferenceBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rpcErrorDialog" type="project:rpcErrorDialog" >
+</xs:element>
+  <xs:complexType name="rpcErrorDialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:errorDialog">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationFileOrigExplorer" type="project:listPresentationFileOrigExplorer" >
+</xs:element>
+  <xs:complexType name="listPresentationFileOrigExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:listPresentationFilePDFExplorer">
+      <xs:attribute name="originalName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="autoLoader" type="project:autoLoader" >
+</xs:element>
+  <xs:complexType name="autoLoader" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="maxwidth" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="maxsteps" type="lzx:number" default="19" >
+</xs:attribute>
+      <xs:attribute name="currentsteps" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="logoutConfirm" type="project:logoutConfirm" >
+</xs:element>
+  <xs:complexType name="logoutConfirm" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="objectsToClean" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="boxInitEffect" type="project:boxInitEffect" >
+</xs:element>
+  <xs:complexType name="boxInitEffect" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="ziely" type="lzx:number" default="200" >
+</xs:attribute>
+      <xs:attribute name="zielx" type="lzx:number" default="200" >
+</xs:attribute>
+      <xs:attribute name="zielwidth" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="zielheight" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="objRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="appointmentNotificationPopUp" type="project:appointmentNotificationPopUp" >
+</xs:element>
+  <xs:complexType name="appointmentNotificationPopUp" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventRoomSidebar" type="project:eventRoomSidebar" >
+</xs:element>
+  <xs:complexType name="eventRoomSidebar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+      <xs:attribute name="isOpen" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="borderedInputtext" type="project:borderedInputtext" >
+</xs:element>
+  <xs:complexType name="borderedInputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tvalue" type="xs:string" default="default" >
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="sendchange" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="preText" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="multiline" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" default="null" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="editable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="checkIsNumber" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="checkIsDouble" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="monthViewAlt" type="project:monthViewAlt" >
+</xs:element>
+  <xs:complexType name="monthViewAlt" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendarTabs" type="project:calendarTabs" >
+</xs:element>
+  <xs:complexType name="calendarTabs" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:tabslider">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basePropertyPanelWhiteboard" type="project:basePropertyPanelWhiteboard" >
+</xs:element>
+  <xs:complexType name="basePropertyPanelWhiteboard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="basePanel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of this window </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="usersTable" type="project:usersTable" >
+</xs:element>
+  <xs:complexType name="usersTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="selectedDayLook" type="project:selectedDayLook" >
+</xs:element>
+  <xs:complexType name="selectedDayLook" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="open" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="dayview" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="borderedMultiInputtext" type="project:borderedMultiInputtext" >
+</xs:element>
+  <xs:complexType name="borderedMultiInputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tvalue" type="xs:string" default="default" >
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="sendchange" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="multiline" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" default="null" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="editable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="checkIsNumber" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="checkIsDouble" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="cursorObject" type="project:cursorObject" >
+</xs:element>
+  <xs:complexType name="cursorObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoObjectPlayScreenShare" type="project:videoObjectPlayScreenShare" >
+</xs:element>
+  <xs:complexType name="videoObjectPlayScreenShare" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="currentY" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="currentX" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fixedFileExplorerWhiteboardPanel" type="project:fixedFileExplorerWhiteboardPanel" >
+</xs:element>
+  <xs:complexType name="fixedFileExplorerWhiteboardPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertyPanelWhiteboard">
+      <xs:attribute name="whiteboardId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_labelMenu" type="project:_labelMenu" >
+</xs:element>
+  <xs:complexType name="_labelMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:menu">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="userTagView" type="project:userTagView" >
+</xs:element>
+  <xs:complexType name="userTagView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="userroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="formatedDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="customInputtext" type="project:customInputtext" >
+</xs:element>
+  <xs:complexType name="customInputtext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:inputtext">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="singletonErrorPopupHolder" type="project:singletonErrorPopupHolder" >
+</xs:element>
+  <xs:complexType name="singletonErrorPopupHolder" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="error" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="dialogPresent" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="dialogObject" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="panelBoundBox" type="project:panelBoundBox" >
+</xs:element>
+  <xs:complexType name="panelBoundBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverTextItem" type="project:turnOverTextItem" >
+</xs:element>
+  <xs:complexType name="turnOverTextItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleLabelRoundButtonIcon" type="project:simpleLabelRoundButtonIcon" >
+</xs:element>
+  <xs:complexType name="simpleLabelRoundButtonIcon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleLabelRoundButton">
+      <xs:attribute name="tlabelid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="ressourceIcon" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="incomingScreenSharing" type="project:incomingScreenSharing" >
+</xs:element>
+  <xs:complexType name="incomingScreenSharing" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="messageObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatParticipantsInviteConference" type="project:chatParticipantsInviteConference" >
+</xs:element>
+  <xs:complexType name="chatParticipantsInviteConference" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rtmpConnection" type="project:rtmpConnection" >
+</xs:element>
+  <xs:complexType name="rtmpConnection" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="src" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onerror" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onconnect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="lastCalled" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="debug" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resultPollBalk" type="project:resultPollBalk" >
+</xs:element>
+  <xs:complexType name="resultPollBalk" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceRoomSidebarTabButton" type="project:conferenceRoomSidebarTabButton" >
+</xs:element>
+  <xs:complexType name="conferenceRoomSidebarTabButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="currentIconRsc" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawAreaObjectCombobox" type="project:drawAreaObjectCombobox" >
+</xs:element>
+  <xs:complexType name="drawAreaObjectCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecombobox">
+      <xs:attribute name="preselectedName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="modus" type="xs:string" default="${ this.parent.canvas._drawarea.drawmodus }" >
+</xs:attribute>
+      <xs:attribute name="ObjectByName" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawAreaObjectValueBox" type="project:drawAreaObjectValueBox" >
+</xs:element>
+  <xs:complexType name="drawAreaObjectValueBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:borderedInputtext">
+      <xs:attribute name="posName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoObjectTestBroadcast" type="project:videoObjectTestBroadcast" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	contains microphone and camera for broadcasting,
+	this class is used only in Meetings-Modus
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoObjectTestBroadcast" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendMicroStatus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="sendCameraStatus" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	contains microphone and camera for broadcasting,
+	this class is used only in Meetings-Modus
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoContainerStream" type="project:videoContainerStream" >
+</xs:element>
+  <xs:complexType name="videoContainerStream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawChooseSizeRadio" type="project:drawChooseSizeRadio" >
+</xs:element>
+  <xs:complexType name="drawChooseSizeRadio" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:radiogroup">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="converterPopup" type="project:converterPopup" >
+</xs:element>
+  <xs:complexType name="converterPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="error" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomA" type="project:activityListRestrictedRoomA" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomA" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoFileExplorerItem" type="project:videoFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="videoFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverList" type="project:turnOverList" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="turnOverList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="step" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="start" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sendEventToReload" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="records" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="orderby" type="xs:string" default="firstname" >
+</xs:attribute>
+      <xs:attribute name="ondblclickedItem" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="oncallpre" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="oncallnext" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onUpdateOrder" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="mainBgColor" type="xs:string" default="0xEEF0EB" >
+</xs:attribute>
+      <xs:attribute name="currentSelectedOrder" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="asc" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="languagesEditor" type="project:languagesEditor" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Language editor module. You can edit the label for your language. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="languagesEditor" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="tempValue" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="language_id" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="xmlCrmTooltipMulti" type="project:xmlCrmTooltipMulti" >
+</xs:element>
+  <xs:complexType name="xmlCrmTooltipMulti" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="holder" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawDrawarrowTools" type="project:drawDrawarrowTools" >
+</xs:element>
+  <xs:complexType name="drawDrawarrowTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="hibRtmpConnection" type="project:hibRtmpConnection" >
+</xs:element>
+  <xs:complexType name="hibRtmpConnection" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:rtmpConnection">
+      <xs:attribute name="userobject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="userlang" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="userScope" type="xs:string" default="hibernate" >
+</xs:attribute>
+      <xs:attribute name="testAppLoading" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="step" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="start" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sipLoader" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="showKickMessage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="showFullMessage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="roomtype" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="room_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refreshDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="reconnectionAction" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="reconnectedRoomInstance" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="reconnectObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="reconnectAfterRoomleft" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="publicSIDOfNewModerator" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="protocollPort" type="xs:string" default="$once{ canvas.rtmpport }" >
+</xs:attribute>
+      <xs:attribute name="protocollName" type="xs:string" default="rtmp" >
+</xs:attribute>
+      <xs:attribute name="mute" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="modus" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="messageObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="max" type="lzx:number" default="1300" >
+</xs:attribute>
+      <xs:attribute name="loaderVar" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isClosed" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isAllowedToBroadCastAV" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="interviewPodId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="initlanguageLoaded" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentroomid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="currentdomainObj" type="xs:string" default="domain1" >
+</xs:attribute>
+      <xs:attribute name="currentdomain" type="xs:string" default="domain1" >
+</xs:attribute>
+      <xs:attribute name="currentInvitation" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the current Invitation-Object </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="currentHashSession" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="counterror" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="conferencedomain" type="xs:string" default="public" >
+</xs:attribute>
+      <xs:attribute name="canShare" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="canRemote" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="canDraw" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="avsettings" type="xs:string" default="av" >
+</xs:attribute>
+      <xs:attribute name="UserID" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawRect" type="project:baseDrawRect" >
+</xs:element>
+  <xs:complexType name="baseDrawRect" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawSelect">
+      <xs:attribute name="currentrectanglestrokeFillDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentrectanglestrokeFill" type="xs:string" default="0xFFFF33" >
+</xs:attribute>
+      <xs:attribute name="currentrectanglestrokeDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentrectanglestroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentrectangleineWidth" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="currentrectangleOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="paintToolsPalette" type="project:paintToolsPalette" >
+</xs:element>
+  <xs:complexType name="paintToolsPalette" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="testSetup" type="project:testSetup" >
+</xs:element>
+  <xs:complexType name="testSetup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="roomObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="roomClassName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isDirectLink" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="forceTest" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dragItemFLVExplorer" type="project:dragItemFLVExplorer" >
+</xs:element>
+  <xs:complexType name="dragItemFLVExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="overItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="newParentFileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="dragItemResource" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="alreadySent" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="appointmentMonth" type="project:appointmentMonth" >
+</xs:element>
+  <xs:complexType name="appointmentMonth" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="terminObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="textbox" type="project:textbox" >
+</xs:element>
+  <xs:complexType name="textbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="bordercolor" type="xs:string" default="0x000000" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatInnerSmily" type="project:chatInnerSmily" >
+</xs:element>
+  <xs:complexType name="chatInnerSmily" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="iconlabel" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationThumb" type="project:listPresentationThumb" >
+</xs:element>
+  <xs:complexType name="listPresentationThumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseListPresentationItem">
+      <xs:attribute name="thumbname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="no" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="aquaButton" type="project:aquaButton" >
+</xs:element>
+  <xs:complexType name="aquaButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelTextWidthTooltip" type="project:labelTextWidthTooltip" >
+</xs:element>
+  <xs:complexType name="labelTextWidthTooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="labelLabelid" type="lzx:number" default="-1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="participents" type="project:participents" >
+</xs:element>
+  <xs:complexType name="participents" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userNewVideoContainer" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="organisation_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ colors for each user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadCastViewRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ holds a references to the videoview which is broadcasting </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="applyDefaultModeration" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomV" type="project:activityListRestrictedRoomV" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomV" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIcons" type="project:miniIcons" >
+</xs:element>
+  <xs:complexType name="miniIcons" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventSelectorbar" type="project:eventSelectorbar" >
+</xs:element>
+  <xs:complexType name="eventSelectorbar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="yoff" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="xoff" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startDragDel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="startDate2" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="startDate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="snapEdge" type="xs:string" default="30" >
+</xs:attribute>
+      <xs:attribute name="origx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="obarx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="mdel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="hidedel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="freedragging" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="endDate2" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="endDate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dragging" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="clipping" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="clipdel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseUrl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="appointementId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="newPrivateMessage" type="project:newPrivateMessage" >
+</xs:element>
+  <xs:complexType name="newPrivateMessage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="userObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendUpdateText" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="sendUpdateAttr" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="sendSingleUpdateText" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="receipents" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="parentMessageId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labeltabelement" type="project:labeltabelement" >
+</xs:element>
+  <xs:complexType name="labeltabelement" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:tabelement">
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseturnOverListPaged" type="project:baseturnOverListPaged" >
+</xs:element>
+  <xs:complexType name="baseturnOverListPaged" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="step" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="start" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="showTopBar" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="showHScrollbar" type="xs:string" default="visible" >
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="rerender" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="renderList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="records" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="orderby" type="xs:string" default="firstname" >
+</xs:attribute>
+      <xs:attribute name="oncallpre" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="oncallnext" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onScrollItem" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onNextScrollItem" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onMoveList" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="multiselect" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="menuBarXIndent" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="listLabelId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="listItemName" type="xs:string" default="basePagingListItem" >
+</xs:attribute>
+      <xs:attribute name="itemHeight" type="lzx:number" default="20" >
+</xs:attribute>
+      <xs:attribute name="headerHeight" type="lzx:number" default="20" >
+</xs:attribute>
+      <xs:attribute name="asc" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawViewNew" type="project:drawViewNew" >
+</xs:element>
+  <xs:complexType name="drawViewNew" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="typeOfObject" type="xs:string" default="paint" >
+</xs:attribute>
+      <xs:attribute name="initwidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="initheight" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsHPanelSeperator" type="project:mainToolsHPanelSeperator" >
+</xs:element>
+  <xs:complexType name="mainToolsHPanelSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverListOrderedPaged" type="project:turnOverListOrderedPaged" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="turnOverListOrderedPaged" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:turnOverListPaged">
+      <xs:attribute name="onUpdateOrder" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="currentSelectedOrder" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseRoomInnerList" type="project:baseRoomInnerList" >
+</xs:element>
+  <xs:complexType name="baseRoomInnerList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roundRectGradient" type="project:roundRectGradient" >
+</xs:element>
+  <xs:complexType name="roundRectGradient" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="oninsettop" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetright" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetleft" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninsetbottom" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oninset" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="oncomplete" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="insettop" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetright" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetleft" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="insetbottom" type="lzx:size" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="inset" type="lzx:size" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The margin between the outside view and the content view </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowY" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x offset of the box shadow.  The box shadow is not drawn by default.
+            Specify a boxShadowColor in order to draw it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowX" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The x offset of the box shadow.  The box shadow is not drawn by default.
+            Specify a boxShadowColor in order to draw it. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowOpacity" type="xs:string" default="0.5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The box shadow opacity. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="boxShadowColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The box shadow color.  If this is specified, a box shadow is drawn.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderWidth" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The width of the border.  If this is zero, no frame is drawn. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderRadius" type="xs:string" default="5" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The rounding radius of the border corners.  Because the default
+            join type is a round join, even a radius of zero will product some
+            rounding. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border opacity </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="black" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border color </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStopOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background stop opacity.  This defaults to one (opaque) unless the
+            stop color is not specified and the start color is, in which case it
+            defaults to zero (fully transparent). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStopColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background stop color.  This is the color that is drawn at the
+            bottom or right of the view, depending on the value of
+            backgroundGradientOrientation.  See the documentation for
+            backgroundStartColor for additional documentation. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStartOpacity" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background start opacity.  This defaults to one (opaque) unless the
+            start color is not specified and the stop color is, in which case it
+            defaults to zero (fully transparent). </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundStartColor" type="lzx:color" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background start color.  This is the color that is drawn at
+            the top or left of the view, depending on the value of
+            backgroundGradientOrientation.  If this and the backround stop color
+            are specified, a gradient background is drawn in the direction specified
+            by backgroundGradientOrientation.  If only one of the background start
+            and stop color are specified, a gradient of the same color that fades to
+            transparent at the unspecified end is drawn.  If a box shadow is drawn,
+            the background defaults to white.  Specify a start and stop opacity to
+            suppress this behavior. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="backgroundGradientOrientation" type="xs:string" default="vertical" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The background gradient orientation.  One of 'vertical' (the default)
+            and 'horizontal'. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="errorPopupUserInfo" type="project:errorPopupUserInfo" >
+</xs:element>
+  <xs:complexType name="errorPopupUserInfo" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="user" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="error" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawEllipseTools" type="project:drawEllipseTools" >
+</xs:element>
+  <xs:complexType name="drawEllipseTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawSelect" type="project:baseDrawSelect" >
+</xs:element>
+  <xs:complexType name="baseDrawSelect" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawTriangle">
+      <xs:attribute name="currentSelectanglestrokeFillDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentSelectanglestrokeFill" type="xs:string" default="0x8e8986" >
+</xs:attribute>
+      <xs:attribute name="currentSelectanglestrokeDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentSelectanglestroke" type="xs:string" default="0x8e8986" >
+</xs:attribute>
+      <xs:attribute name="currentSelectangleineWidth" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="currentSelectangleOpacity" type="lzx:number" default="0.2" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawColorPicker" type="project:drawColorPicker" >
+</xs:element>
+  <xs:complexType name="drawColorPicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="onnewcolor" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="defaultno" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawChooseSeperator" type="project:drawChooseSeperator" >
+</xs:element>
+  <xs:complexType name="drawChooseSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseMenuSeperator">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fixedFileExplorerWhiteBoard" type="project:fixedFileExplorerWhiteBoard" >
+</xs:element>
+  <xs:complexType name="fixedFileExplorerWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="timeisInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="sendUpdate" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="sendObjectToClientID" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sendObjectDel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onsharedMessage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="objectRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isloadingImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isloadedImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initW" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initH" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="imagey" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ignoreUpdates" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="iamgex" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="documentmenuIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="confirmdialog" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="propertyPanelLetterButton" type="project:propertyPanelLetterButton" >
+</xs:element>
+  <xs:complexType name="propertyPanelLetterButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="labelid" type="lzx:number" default="87" >
+</xs:attribute>
+      <xs:attribute name="itemResourceName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="enabled" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentVal" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordValueList" type="project:recordValueList" >
+</xs:element>
+  <xs:complexType name="recordValueList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:turnOverList">
+      <xs:attribute name="itemToDelete" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="deleteItem" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="loadWhiteboardWindow" type="project:loadWhiteboardWindow" >
+</xs:element>
+  <xs:complexType name="loadWhiteboardWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelText">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseTopPanel" type="project:baseTopPanel" >
+</xs:element>
+  <xs:complexType name="baseTopPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseBoundingBorderView">
+      <xs:attribute name="title" type="xs:string" default="basePanel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of this window </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendarWeekView" type="project:calendarWeekView" >
+</xs:element>
+  <xs:complexType name="calendarWeekView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vsliderThumb" type="project:vsliderThumb" >
+</xs:element>
+  <xs:complexType name="vsliderThumb" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="showvalue" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="drag_min" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="drag_max" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tableCombobox" type="project:tableCombobox" >
+</xs:element>
+  <xs:complexType name="tableCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:combobox">
+      <xs:attribute name="tvalue" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="sendchange" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initvalue" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imageListInnerTable" type="project:imageListInnerTable" >
+</xs:element>
+  <xs:complexType name="imageListInnerTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawImage" type="project:baseDrawImage" >
+</xs:element>
+  <xs:complexType name="baseDrawImage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawLetter">
+      <xs:attribute name="syncImageRefObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="syncImageCheckTime" type="lzx:number" default="1000" >
+</xs:attribute>
+      <xs:attribute name="setNewScreenUserName" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="screenImageRefNumber" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="screenImageRef2" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="screenImageRef1" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="loadingUsersImageListIndex" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="loadimageDataWinRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="loadImageObjectTimer" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isWmlLoaderImage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isScreenImageLoading" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="imageSyncMessageText" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="imageSyncMessageId" type="lzx:number" default="209" >
+</xs:attribute>
+      <xs:attribute name="imageLoadingCompleteMessage" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="imageLoadMessageId" type="lzx:number" default="208" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dynamicFLVName" type="project:dynamicFLVName" >
+</xs:element>
+  <xs:complexType name="dynamicFLVName" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:customInputtext">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="parentFileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isNew" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteboardBarMenu" type="project:whiteboardBarMenu" >
+</xs:element>
+  <xs:complexType name="whiteboardBarMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="staticwidth" type="lzx:number" default="120" >
+</xs:attribute>
+      <xs:attribute name="currentBtn" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_recordPlayerBG" type="project:_recordPlayerBG" >
+</xs:element>
+  <xs:complexType name="_recordPlayerBG" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_videoBoardStream" type="project:_videoBoardStream" >
+</xs:element>
+  <xs:complexType name="_videoBoardStream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteboardVideoPlayer" type="project:whiteboardVideoPlayer" >
+</xs:element>
+  <xs:complexType name="whiteboardVideoPlayer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="timerDelegateStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="timerDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendInit" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="recordingName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isLoaded" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="deltaInSeconds" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewWhiteboard" type="project:interviewWhiteboard" >
+</xs:element>
+  <xs:complexType name="interviewWhiteboard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnoverlistheaderitemIcon" type="project:turnoverlistheaderitemIcon" >
+</xs:element>
+  <xs:complexType name="turnoverlistheaderitemIcon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basicturnoverlistheaderitem">
+      <xs:attribute name="toolTipLabelId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="subviewsid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="iconResource" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="moderationMiniIconsInterviewUserList" type="project:moderationMiniIconsInterviewUserList" >
+</xs:element>
+  <xs:complexType name="moderationMiniIconsInterviewUserList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorRectChoose" type="project:colorRectChoose" >
+</xs:element>
+  <xs:complexType name="colorRectChoose" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:colorRectChoosebase">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="verticalMenuIconBar" type="project:verticalMenuIconBar" >
+</xs:element>
+  <xs:complexType name="verticalMenuIconBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="omlegend" type="project:omlegend" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+     simple legend class
+     @access public
+      </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="omlegend" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+      <xs:attribute name="verticalgap" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="topmargin" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="styleBorder" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the style will be applied tho the border legend box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="rightmargin" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="position" type="xs:string" default="right" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates where the legend box will be positioned, default: right </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseup" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse up event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseover" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse over event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseout" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse out event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmousedown" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse down event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onitemmouseclick" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ event that allows custom action for mouse click event
+            @param Number item: The identifier legend item
+         </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendborder" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates if legend box will have a border, default: true </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFontsize" type="lzx:size" default="6" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font size wiil be used in the legend item text, default: 10px </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFontcolor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font color wiil be used in the legend item text, default: black </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="legendFont" type="xs:string" default="serif" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates the Font will be used in the legend item text </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="leftmargin" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fillColor" type="lzx:color" default="0xFFFFFF" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the fill color from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="direction" type="xs:string" default="vertical" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Indicates how the legend items will be displayed, default: vertical </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="chartClassName" type="xs:string" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="chart" type="xs:string" default="${null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Takes the relationship with the chart </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bottommargin" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderWidth" type="lzx:number" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the line width from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="borderColor" type="lzx:color" default="0x000000" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Allow to set the color line from the legend tag </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoInfoStuff" type="project:videoInfoStuff" >
+</xs:element>
+  <xs:complexType name="videoInfoStuff" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentIconLeftPanel" type="project:documentIconLeftPanel" >
+</xs:element>
+  <xs:complexType name="documentIconLeftPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseLeftPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="closableView" type="project:closableView" >
+</xs:element>
+  <xs:complexType name="closableView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorRectChooseSmall" type="project:colorRectChooseSmall" >
+</xs:element>
+  <xs:complexType name="colorRectChooseSmall" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:colorRectChoosebase">
+      <xs:attribute name="defaultno" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDraw" type="project:baseDraw" >
+</xs:element>
+  <xs:complexType name="baseDraw" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="starty" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="showGrid" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="selectedObjects" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="redolayers" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="prevy" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="prevx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="onupdateScale" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onopenWhiteBoard" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="my" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="mx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="mousetracker_del" type="xs:string" default="$once{ new LzDelegate(this, 'trackmouse' )}" >
+</xs:attribute>
+      <xs:attribute name="layers" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="last_y" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="last_x" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isSnapToGrid" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isRemoteOID" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ If true it will try to load the ObjectIdentifier Extension from the Server </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isDragging" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="hasprevious" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="hasenext" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="gridWidth" type="lzx:number" default="24" >
+</xs:attribute>
+      <xs:attribute name="endy" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="endx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="drawmodus" type="xs:string" default="hand" >
+</xs:attribute>
+      <xs:attribute name="doClearSlide" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="doClearAll" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentlayer" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="counter" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="copyObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="boundingref" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="boundingIsActive" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="basetempactionobjectList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseredoactionobjectList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseactionobjectList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="basdrawredoView" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="ObjectByName" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewConferenceRoom" type="project:interviewConferenceRoom" >
+</xs:element>
+  <xs:complexType name="interviewConferenceRoom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseConferenceRoom">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="multiWhiteboardPanel" type="project:multiWhiteboardPanel" >
+</xs:element>
+  <xs:complexType name="multiWhiteboardPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:fixedFileExplorerWhiteBoard">
+      <xs:attribute name="whiteboardId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="objWhiteboard" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="objMessage" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationThumbExplorer" type="project:listPresentationThumbExplorer" >
+</xs:element>
+  <xs:complexType name="listPresentationThumbExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseListPresentationItemExplorer">
+      <xs:attribute name="thumbname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="no" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseFileExplorerItem" type="project:baseFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="baseFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="singleClickStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="singleClickDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="refObjListRoot" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="open" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="mouseDownClickUsed" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="mouseDownClickDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isVideo" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isTrashCan" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isRoot" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isPresentation" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMouseDownDragAction" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isImage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isFolder" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileIcon" type="xs:string" default="string" >
+</xs:attribute>
+      <xs:attribute name="fileHash" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chooseNickName" type="project:chooseNickName" >
+</xs:element>
+  <xs:complexType name="chooseNickName" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="swfResourceView" type="project:swfResourceView" >
+</xs:element>
+  <xs:complexType name="swfResourceView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="zoomlevel" type="lzx:number" default="20" >
+</xs:attribute>
+      <xs:attribute name="uniqueObjectSyncName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="typeOfObject" type="xs:string" default="swf" >
+</xs:attribute>
+      <xs:attribute name="standardFileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="slideNumber" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="recorderModus" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="innery" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="innerx" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="innerwidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="innerheight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="initwidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="initheight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="fullFit" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="doSendChangeValue" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentzoomFactor" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="currentzoom" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="alterModus" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="userRoomTabItem" type="project:userRoomTabItem" >
+</xs:element>
+  <xs:complexType name="userRoomTabItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="usertime" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="cbtext" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorRow" type="project:colorRow" >
+</xs:element>
+  <xs:complexType name="colorRow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roomClientListItem" type="project:roomClientListItem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ list of conference/audience rooms </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="roomClientListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentListItem">
+      <xs:attribute name="streamid" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ list of conference/audience rooms </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="scope" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="login" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="dateConnected" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="moderationMiniIcons" type="project:moderationMiniIcons" >
+</xs:element>
+  <xs:complexType name="moderationMiniIcons" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isActive" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="redirectBox" type="project:redirectBox" >
+</xs:element>
+  <xs:complexType name="redirectBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="timerDel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="redirectURL" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="maxTime" type="lzx:number" default="5000" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rememberMessage" type="project:rememberMessage" >
+</xs:element>
+  <xs:complexType name="rememberMessage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="showCheckBox" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="labeliderror" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="inputtextbox" type="project:inputtextbox" >
+</xs:element>
+  <xs:complexType name="inputtextbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:inputtext">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="participentsTable" type="project:participentsTable" >
+</xs:element>
+  <xs:complexType name="participentsTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawSave" type="project:baseDrawSave" >
+</xs:element>
+  <xs:complexType name="baseDrawSave" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawImage">
+      <xs:attribute name="wmlspreadNews" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="wmlroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="wmlfileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="wmldomain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="wmlLoadingCompleteMessage" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="w" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="syncmessageId" type="lzx:number" default="207" >
+</xs:attribute>
+      <xs:attribute name="synccheckTime" type="lzx:number" default="1000" >
+</xs:attribute>
+      <xs:attribute name="snap" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendpictureName" type="xs:string" default="snapchot.jpg" >
+</xs:attribute>
+      <xs:attribute name="sendURL" type="xs:string" default="http://www.webbase-design.de/dokeos/videoconference/createimagefrombitmap.php" >
+</xs:attribute>
+      <xs:attribute name="sendPartURL" type="xs:string" default="http://www.webbase-design.de/dokeos/videoconference/createimagefrombitmap.php" >
+</xs:attribute>
+      <xs:attribute name="savefileName" type="xs:string" default="savefileName1" >
+</xs:attribute>
+      <xs:attribute name="savefileDataWinRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="pixel_del" type="xs:string" default="$once{ new LzDelegate(this, 'buildPixelArray' )}" >
+</xs:attribute>
+      <xs:attribute name="pixelArray" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onwmlloadStop" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onwmlloadStart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onprogress" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="loadmessageId" type="lzx:number" default="206" >
+</xs:attribute>
+      <xs:attribute name="loadfileDataWinRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="loadfileDataIndex" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="loadfileData" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="loadObjectTimer" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isinitRecordingLoad" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isSendPartArray" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isRecordingLoad" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isInitLoader" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="h" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="fileData" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="exportType" type="xs:string" default="svg" >
+</xs:attribute>
+      <xs:attribute name="bpData" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="a" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="MatrixValue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="MCRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleLabelButton" type="project:simpleLabelButton" >
+</xs:element>
+  <xs:complexType name="simpleLabelButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatTabItem" type="project:chatTabItem" >
+</xs:element>
+  <xs:complexType name="chatTabItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="usertime" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="usercolor" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="cbtext" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="boundingBoxAll" type="project:boundingBoxAll" >
+</xs:element>
+  <xs:complexType name="boundingBoxAll" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="whiteboardRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="startdragY" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startdragX" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startdragWidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startdragHeight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="objRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="minwidth" type="xs:string" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum width for the windowy, default: 60.
+          @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minheight" type="xs:string" default="2" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum height for the window, default: 50.
+          @keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="innerInsetScrollbars" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="ey" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="ex" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="ewidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="eheight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="doHandlerUpdates" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="canBeResized" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="canBeDragged" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="boundingDoUpdateOnInit" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="saveAsWmlWindow" type="project:saveAsWmlWindow" >
+</xs:element>
+  <xs:complexType name="saveAsWmlWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fileExplorerWindow" type="project:fileExplorerWindow" >
+</xs:element>
+  <xs:complexType name="fileExplorerWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="contactSearchHead" type="project:contactSearchHead" >
+</xs:element>
+  <xs:complexType name="contactSearchHead" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="uploadWindowExplorer" type="project:uploadWindowExplorer" >
+</xs:element>
+  <xs:complexType name="uploadWindowExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="winobj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="usersid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="uploadmodule" type="xs:string" default="videoconf1" >
+</xs:attribute>
+      <xs:attribute name="singleslidesmodule_id" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="sessionid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="servletName" type="xs:string" default="UploadHandler" >
+</xs:attribute>
+      <xs:attribute name="returnObj" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="parentFolderId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isdefaultreturn" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="isOnlyXml" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyProfile" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyPpt" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyImage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="moderationPanel" type="project:moderationPanel" >
+</xs:element>
+  <xs:complexType name="moderationPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="roomName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="recordingsName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="recordingUser" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="initial" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="allowUserQuestions" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="presentationFilesList" type="project:presentationFilesList" >
+</xs:element>
+  <xs:complexType name="presentationFilesList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmodul" type="xs:string" default="$once{ canvas.uploadmoduleimg }" >
+</xs:attribute>
+      <xs:attribute name="onclose" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferencecontainertab" type="project:conferencecontainertab" >
+</xs:element>
+  <xs:complexType name="conferencecontainertab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteboardMiniButton" type="project:whiteboardMiniButton" >
+</xs:element>
+  <xs:complexType name="whiteboardMiniButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="zielx" type="lzx:number" default="200" >
+</xs:attribute>
+      <xs:attribute name="zielwidth" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="objRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isactive" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isHidden" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="btnName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelCheckbox" type="project:labelCheckbox" >
+</xs:element>
+  <xs:complexType name="labelCheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:checkbox">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseChooseIcon" type="project:baseChooseIcon" >
+</xs:element>
+  <xs:complexType name="baseChooseIcon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="resourceN" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initY" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="initX" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawLineTools" type="project:drawLineTools" >
+</xs:element>
+  <xs:complexType name="drawLineTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseContentListItem" type="project:baseContentListItem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ base class for the item list views</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseContentListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ base class for the item list views</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imagesListdraw" type="project:imagesListdraw" >
+</xs:element>
+  <xs:complexType name="imagesListdraw" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmodul" type="xs:string" default="$once{ canvas.uploadmoduleimg }" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="meetingTimer" type="project:meetingTimer" >
+</xs:element>
+  <xs:complexType name="meetingTimer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="demoTime" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatOutput" type="project:chatOutput" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ chat output specialized for video-conference </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chatOutput" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isAlreadyLoaded" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ chat output specialized for video-conference </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="debugPinCode" type="project:debugPinCode" >
+</xs:element>
+  <xs:complexType name="debugPinCode" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomApplyForMuteOff" type="project:activityListRestrictedRoomApplyForMuteOff" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomApplyForMuteOff" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="textBoxSubBlank" type="project:textBoxSubBlank" >
+</xs:element>
+  <xs:complexType name="textBoxSubBlank" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="netremotecall" type="project:netremotecall" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Net remote call. 
+        @todo Document netremotecall class.
+    </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="netremotecall" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:node">
+      <xs:attribute name="remotecontext" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="onerror" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Error handling event. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="funcname" type="xs:string" default="$once{null}" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Name of the remote function. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dataobject" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="flexibleConferenceRoom" type="project:flexibleConferenceRoom" >
+</xs:element>
+  <xs:complexType name="flexibleConferenceRoom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseConferenceRoom">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="menubarButton" type="project:menubarButton" >
+</xs:element>
+  <xs:complexType name="menubarButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleLabelButton">
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="clientobjectArea" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="clientmaskname" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_whiteBoardPanelRecord" type="project:_whiteBoardPanelRecord" >
+</xs:element>
+  <xs:complexType name="_whiteBoardPanelRecord" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="validText" type="project:validText" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ A editfieldText with the possibility of a dropdown menu </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="validText" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:edittext">
+      <xs:attribute name="validate_method" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The method to be called for validating </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="typetime" type="lzx:number" default="500" >
+</xs:attribute>
+      <xs:attribute name="timerIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="timerDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="spacing" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="shownitems" type="lzx:number" default="7" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ items to be shown in the floatinglist </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resultName" type="xs:string" default="name" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the name-attribute of the resultset </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resultId" type="xs:string" default="id" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the id-attribute of the resultset </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onisopen" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initSelect" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentValue" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="bordersize" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The border size ( in pixels ) of the popup list.  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="autoscrollbar" type="xs:string" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Whether a scrollbar should automatically show up when there are more
+              items than shownitems. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="attachoffset" type="lzx:number" default="-1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The vertical offset of the floatinglist attached to this
+              combobox. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawAreaAlterPosition" type="project:drawAreaAlterPosition" >
+</xs:element>
+  <xs:complexType name="drawAreaAlterPosition" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="objName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendarDayView" type="project:calendarDayView" >
+</xs:element>
+  <xs:complexType name="calendarDayView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="clickBox" type="project:clickBox" >
+</xs:element>
+  <xs:complexType name="clickBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="onvalue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isupdateCheck" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initval" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorSlider" type="project:colorSlider" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      changed by swagner
+  </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="colorSlider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:slider">
+      <xs:attribute name="doSendValueEvent" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+      changed by swagner
+  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="newWhiteBoard" type="project:newWhiteBoard" >
+</xs:element>
+  <xs:complexType name="newWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendObjectToClientID" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onsharedMessage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="objectRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isloadingImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isloadedImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initW" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initH" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="imagey" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="iamgex" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="documentmenuIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="confirmdialog" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vsliderTrack" type="project:vsliderTrack" >
+</xs:element>
+  <xs:complexType name="vsliderTrack" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="netRemoteCallHib" type="project:netRemoteCallHib" >
+</xs:element>
+  <xs:complexType name="netRemoteCallHib" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:netremotecall">
+      <xs:attribute name="showLoading" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ show Error Messages with normal Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="sendCallBack" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="returnObj" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ this should be the contentSaveWindow </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="registerObject" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if true this object will register at the update-observer </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isCallBackHandler" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ show Error Messages with Callback Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="activeErrorHandler" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ show Error Messages with normal Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="omlegenditem" type="project:omlegenditem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+    individual legend item </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="omlegenditem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tBox" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="linevisible" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="identifier" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ @keyword private
+    individual legend item </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawArrowWhiteBoard" type="project:drawArrowWhiteBoard" >
+</xs:element>
+  <xs:complexType name="drawArrowWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="customScrollEdittext" type="project:customScrollEdittext" >
+</xs:element>
+  <xs:complexType name="customScrollEdittext" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ontextChange" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="styleableInput" type="project:styleableInput" >
+</xs:element>
+  <xs:complexType name="styleableInput" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:customInputtext">
+      <xs:attribute name="startAdjustHight" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="setFocusOnInit" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewRoomSidebar" type="project:interviewRoomSidebar" >
+</xs:element>
+  <xs:complexType name="interviewRoomSidebar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+      <xs:attribute name="isOpen" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawPointer" type="project:baseDrawPointer" >
+</xs:element>
+  <xs:complexType name="baseDrawPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawEllipse">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chartFileExplorerItem" type="project:chartFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="chartFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+      <xs:attribute name="isChartFile" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="gridsliderlayout" type="project:gridsliderlayout" >
+</xs:element>
+  <xs:complexType name="gridsliderlayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="spacing" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="rows" type="xs:string" default="6" >
+</xs:attribute>
+      <xs:attribute name="positiondel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="openview" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="openrow_only" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="openrow" type="xs:string" default="-1" >
+</xs:attribute>
+      <xs:attribute name="opencol_only" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="opencol" type="xs:string" default="-1" >
+</xs:attribute>
+      <xs:attribute name="onupdatestop" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onupdatestart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onopenstart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onclosestart" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="lastsel" type="xs:string" default="${null}" >
+</xs:attribute>
+      <xs:attribute name="duration" type="xs:string" default="300" >
+</xs:attribute>
+      <xs:attribute name="doanimation" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="displayrow" type="xs:string" default="-1" >
+</xs:attribute>
+      <xs:attribute name="displaymode" type="xs:string" default="grid" >
+</xs:attribute>
+      <xs:attribute name="displaycol" type="xs:string" default="-1" >
+</xs:attribute>
+      <xs:attribute name="cw" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="cols" type="xs:string" default="6" >
+</xs:attribute>
+      <xs:attribute name="ch" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="cellwidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="cellheight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="addedOpenWidth" type="xs:string" default="150" >
+</xs:attribute>
+      <xs:attribute name="addedOpenHeight" type="xs:string" default="170" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseChooseIconView" type="project:baseChooseIconView" >
+</xs:element>
+  <xs:complexType name="baseChooseIconView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="resourceN" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIconSmybolExtraIconsImageMap" type="project:miniIconSmybolExtraIconsImageMap" >
+</xs:element>
+  <xs:complexType name="miniIconSmybolExtraIconsImageMap" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIconsPresenter" type="project:miniIconsPresenter" >
+</xs:element>
+  <xs:complexType name="miniIconsPresenter" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="iconRessourceName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calButton" type="project:calButton" >
+</xs:element>
+  <xs:complexType name="calButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="yadjust" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="rightinset" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="rightcap" type="xs:string" default="oval" >
+</xs:attribute>
+      <xs:attribute name="overRsrcNumber" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="onsafeclick" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="normalRsrcNumber" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="mouseisdown" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="leftinset" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="leftcap" type="xs:string" default="oval" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="keepinitialwidth" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="icon" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="enabled" type="xs:string" default="true" >
+</xs:attribute>
+      <xs:attribute name="downRsrcNumber" type="lzx:number" default="3" >
+</xs:attribute>
+      <xs:attribute name="divider" type="lzx:number" default="3" >
+</xs:attribute>
+      <xs:attribute name="deselectRsrcNumber" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="applied" type="xs:string" default="classroot.leftcap == 'rect'" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawChooseSizeRadioT" type="project:drawChooseSizeRadioT" >
+</xs:element>
+  <xs:complexType name="drawChooseSizeRadioT" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:radiogroup">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="confirmCancelPopup" type="project:confirmCancelPopup" >
+</xs:element>
+  <xs:complexType name="confirmCancelPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="makeModal" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="errorlabelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="error" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="boundingBoxAllRotationMarger" type="project:boundingBoxAllRotationMarger" >
+</xs:element>
+  <xs:complexType name="boundingBoxAllRotationMarger" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="dragStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseTabbarButton" type="project:baseTabbarButton" >
+</xs:element>
+  <xs:complexType name="baseTabbarButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedRoomSidebar" type="project:restrictedRoomSidebar" >
+</xs:element>
+  <xs:complexType name="restrictedRoomSidebar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+      <xs:attribute name="isOpen" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="presentationPreview" type="project:presentationPreview" >
+</xs:element>
+  <xs:complexType name="presentationPreview" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObjList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="miniButton" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="documentObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawClipArtWhiteBoard" type="project:drawClipArtWhiteBoard" >
+</xs:element>
+  <xs:complexType name="drawClipArtWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="clipArtEndy" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="clipArtEndx" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="allmeetings" type="project:allmeetings" >
+</xs:element>
+  <xs:complexType name="allmeetings" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="refObjItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="finishedTabsQuantity" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="clickedButton" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dayname" type="project:dayname" >
+</xs:element>
+  <xs:complexType name="dayname" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="modPanel" type="project:modPanel" >
+</xs:element>
+  <xs:complexType name="modPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fillColorChoose" type="project:fillColorChoose" >
+</xs:element>
+  <xs:complexType name="fillColorChoose" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertySelector">
+      <xs:attribute name="selectedColorTransformedString" type="xs:string" default="0xFFFF33" >
+</xs:attribute>
+      <xs:attribute name="selectedColorDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="selectedColor" type="lzx:number" default="0xFFFF33" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="inInitColorSelection" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="colorPickRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="colorIsEnabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="regexptip" type="project:regexptip" >
+</xs:element>
+  <xs:complexType name="regexptip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="regexptext" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fadeDelegate" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleListItem" type="project:simpleListItem" >
+</xs:element>
+  <xs:complexType name="simpleListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="value" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="xmlCrmTooltip" type="project:xmlCrmTooltip" >
+</xs:element>
+  <xs:complexType name="xmlCrmTooltip" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="holder" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentFileExplorerItem" type="project:documentFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="documentFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="verticalMenuIconBarPointer" type="project:verticalMenuIconBarPointer" >
+</xs:element>
+  <xs:complexType name="verticalMenuIconBarPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsPanelItem" type="project:mainToolsPanelItem" >
+</xs:element>
+  <xs:complexType name="mainToolsPanelItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:blueButton">
+      <xs:attribute name="setSelectionToItem" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceContainerTab" type="project:conferenceContainerTab" >
+</xs:element>
+  <xs:complexType name="conferenceContainerTab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadTapIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="membersTapIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fadeDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="doBlink" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoContainerAudience" type="project:videoContainerAudience" >
+</xs:element>
+  <xs:complexType name="videoContainerAudience" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="streams" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="modLoaded" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="allUsers" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawDocumentItem" type="project:drawDocumentItem" >
+</xs:element>
+  <xs:complexType name="drawDocumentItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseChooseIcon">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpletimelayout" type="project:simpletimelayout" >
+</xs:element>
+  <xs:complexType name="simpletimelayout" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:layout">
+      <xs:attribute name="viewheight" type="xs:string" default="22" >
+</xs:attribute>
+      <xs:attribute name="enabled" type="xs:string" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatInnerTextBox" type="project:chatInnerTextBox" >
+</xs:element>
+  <xs:complexType name="chatInnerTextBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_chatInnerSmilyIcon" type="project:_chatInnerSmilyIcon" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ private class of emotIconsSelector.class. resource view of chat smily icons. it shows icons and label tooltips.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="_chatInnerSmilyIcon" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="iconvalue" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="iconlabel" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ private class of emotIconsSelector.class. resource view of chat smily icons. it shows icons and label tooltips.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorRectChoosebase" type="project:colorRectChoosebase" >
+</xs:element>
+  <xs:complexType name="colorRectChoosebase" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="colorchoose" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="loginScreen" type="project:loginScreen" >
+</xs:element>
+  <xs:complexType name="loginScreen" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoObjectAudience" type="project:videoObjectAudience" >
+</xs:element>
+  <xs:complexType name="videoObjectAudience" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseVideoObject">
+      <xs:attribute name="isAssigned" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="hidePropertyView" type="project:hidePropertyView" >
+</xs:element>
+  <xs:complexType name="hidePropertyView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityList" type="project:activityList" >
+</xs:element>
+  <xs:complexType name="activityList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertyPanelWhiteboard">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleLabelRoundButton" type="project:simpleLabelRoundButton" >
+</xs:element>
+  <xs:complexType name="simpleLabelRoundButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:roundrectbutton">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="blueButton" type="project:blueButton" >
+</xs:element>
+  <xs:complexType name="blueButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecomponent">
+      <xs:attribute name="y_insetResource" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="x_insetResource" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="width_insetResource" type="lzx:number" default="18" >
+</xs:attribute>
+      <xs:attribute name="resourceItem" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="height_insetResource" type="lzx:number" default="18" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="info_Panel" type="project:info_Panel" >
+</xs:element>
+  <xs:complexType name="info_Panel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basepanel">
+      <xs:attribute name="startDate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="roomtype" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="rooms_id" type="lzx:number" default="$path{ 'rooms_id/@value'}" >
+</xs:attribute>
+      <xs:attribute name="opened" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="isConnectedEvent" type="lzx:boolean" default="$path{ 'isConnectedEvent/@value' }" >
+</xs:attribute>
+      <xs:attribute name="endDate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dataapply" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="baseUrl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="arrayMeetingMember" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="appointementId" type="lzx:number" default="$path{ 'appointementId/@value' }" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentToolsPalette" type="project:documentToolsPalette" >
+</xs:element>
+  <xs:complexType name="documentToolsPalette" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListMessageRequest" type="project:activityListMessageRequest" >
+</xs:element>
+  <xs:complexType name="activityListMessageRequest" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simplebaseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewVideoBox" type="project:interviewVideoBox" >
+</xs:element>
+  <xs:complexType name="interviewVideoBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="messageObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="interviewPodId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imageListInnerTableExplorer" type="project:imageListInnerTableExplorer" >
+</xs:element>
+  <xs:complexType name="imageListInnerTableExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorWeekNumber" type="project:dateSelectorWeekNumber" >
+</xs:element>
+  <xs:complexType name="dateSelectorWeekNumber" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="weeknumber" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordingSaveWin" type="project:recordingSaveWin" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		Dialog box for recording data.
+		Similar with recordingStartWIn.lzx, but any other class dose not invoke this class.
+		Maybe this class could be deleted.
+	</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="recordingSaveWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="recordingsName" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		Dialog box for recording data.
+		Similar with recordingStartWIn.lzx, but any other class dose not invoke this class.
+		Maybe this class could be deleted.
+	</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatParticipantsInviteMessage" type="project:chatParticipantsInviteMessage" >
+</xs:element>
+  <xs:complexType name="chatParticipantsInviteMessage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="messageObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="conferenceRoomName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomAV" type="project:activityListRestrictedRoomAV" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomAV" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labeldTextListItem" type="project:labeldTextListItem" >
+</xs:element>
+  <xs:complexType name="labeldTextListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewUserList" type="project:interviewUserList" >
+</xs:element>
+  <xs:complexType name="interviewUserList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="organisation_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ colors for each user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadCastViewRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ holds a references to the videoview which is broadcasting </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="applyDefaultModeration" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="terminareaWeekView" type="project:terminareaWeekView" >
+</xs:element>
+  <xs:complexType name="terminareaWeekView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="terminObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="description" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="calenderObjRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerlistViewEventUserListTableWithNames" type="project:innerlistViewEventUserListTableWithNames" >
+</xs:element>
+  <xs:complexType name="innerlistViewEventUserListTableWithNames" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="screenShareCursorObject" type="project:screenShareCursorObject" >
+</xs:element>
+  <xs:complexType name="screenShareCursorObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="participantsPanel" type="project:participantsPanel" >
+</xs:element>
+  <xs:complexType name="participantsPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleBaseTabpane">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="redoUndoToolsPanelItem" type="project:redoUndoToolsPanelItem" >
+</xs:element>
+  <xs:complexType name="redoUndoToolsPanelItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:mainToolsPanelItem">
+      <xs:attribute name="doredo" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="tempTextBox" type="project:tempTextBox" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	Contains no microphone or camera Object, this view can only 
+	subscribe to a video or live-stream
+
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="tempTextBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isStopped" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	Contains no microphone or camera Object, this view can only 
+	subscribe to a video or live-stream
+
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="responseForModeration" type="project:responseForModeration" >
+</xs:element>
+  <xs:complexType name="responseForModeration" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="userobject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="userautoTimerDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="userautoTimerCounter" type="lzx:number" default="31" >
+</xs:attribute>
+      <xs:attribute name="clientId" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="applymessage" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dragView" type="project:dragView" >
+</xs:element>
+  <xs:complexType name="dragView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="startY" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startX" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="filesid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="filename" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roomModeratorsRoomClientListItem" type="project:roomModeratorsRoomClientListItem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ list of ddefault moderators rooms </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="roomModeratorsRoomClientListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentListItem">
+      <xs:attribute name="userId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="uName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomModeratorsId" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ list of ddefault moderators rooms </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="modRoomId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="email" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatParticipants" type="project:chatParticipants" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ it shows chat participants. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chatParticipants" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ it shows chat participants. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="picture_uri" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawRectangleTools" type="project:drawRectangleTools" >
+</xs:element>
+  <xs:complexType name="drawRectangleTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="verticalDocumentIconBar" type="project:verticalDocumentIconBar" >
+</xs:element>
+  <xs:complexType name="verticalDocumentIconBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordingsViewer" type="project:recordingsViewer" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	This class shows a play-viewer panel for recording data.
+	When you select and click a recording data from the recording list that is invoked with recordContent.lzx,
+	you can see a big start button on this panel. Then you click it, regording data starts with video/audio panel, 
+	whiteboard panel and files panel.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="recordingsViewer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="timerDel" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	This class shows a play-viewer panel for recording data.
+	When you select and click a recording data from the recording list that is invoked with recordContent.lzx,
+	you can see a big start button on this panel. Then you click it, regording data starts with video/audio panel, 
+	whiteboard panel and files panel.
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="timeStepSyncing" type="lzx:number" default="500" >
+</xs:attribute>
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="recordingValue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="initObjectCount" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="downloadUrlWhiteboard" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="currentTime" type="lzx:number" default="-500" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calenderlistitem" type="project:calenderlistitem" >
+</xs:element>
+  <xs:complexType name="calenderlistitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textAttr" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="terminObjRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fixedWhiteboardPanel" type="project:fixedWhiteboardPanel" >
+</xs:element>
+  <xs:complexType name="fixedWhiteboardPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:conferenceBox">
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseVideoStream" type="project:baseVideoStream" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	extends the Video-View with Streaming functions
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseVideoStream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseVideoView">
+      <xs:attribute name="streamName" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="soundRefMC" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Reference To the Sound MovieClip
+		@keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="soundRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Reference To the Sound Object
+		@keywords final </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onPlayStatus" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onMetaData" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="mode" type="xs:string" default="play" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This value does indicate if this stream play or broadcasts
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="micro" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is a reference to the current microphone, only set if broadcasting
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="delay" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="camera" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is a reference to the current camara, only set if broadcasting
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="bufferTime" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This is the current buffer used, in Live Streaming this MUST be 0
+              @keywords readonly </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="infoTab" type="project:infoTab" >
+</xs:element>
+  <xs:complexType name="infoTab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basetabelement">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="label" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseTabChatPanel" type="project:baseTabChatPanel" >
+</xs:element>
+  <xs:complexType name="baseTabChatPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertyPanel">
+      <xs:attribute name="fadeDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="doBlink" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="copiedTextPopup" type="project:copiedTextPopup" >
+</xs:element>
+  <xs:complexType name="copiedTextPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="error" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedConferenceRoom" type="project:restrictedConferenceRoom" >
+</xs:element>
+  <xs:complexType name="restrictedConferenceRoom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseConferenceRoom">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorWeekNumberHeader" type="project:dateSelectorWeekNumberHeader" >
+</xs:element>
+  <xs:complexType name="dateSelectorWeekNumberHeader" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="labelWeekHeader" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fieldValueForm" type="project:fieldValueForm" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ right block of the LanguageEditor. you can edit the label.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="fieldValueForm" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentSaveView">
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="fieldvalues_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="fieldlanguagesvalues_id" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lzRecordNavigation" type="project:lzRecordNavigation" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	View for recorded contents list.
+	When you select 'Recordings' on the top menu, this class shows the list.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="lzRecordNavigation" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="recordingName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="playSelected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="parentFolderId" type="lzx:number" default="-2" >
+</xs:attribute>
+      <xs:attribute name="isTrashCan" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isOpen" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	View for recorded contents list.
+	When you select 'Recordings' on the top menu, this class shows the list.
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="currentTrackGroupName" type="xs:string" default="fileExplorer" >
+</xs:attribute>
+      <xs:attribute name="currentRecording" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="currentDragItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="alternateName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ordnerInhaltHead" type="project:ordnerInhaltHead" >
+</xs:element>
+  <xs:complexType name="ordnerInhaltHead" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="showChatLog" type="project:showChatLog" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+Chat tabpane class. It contains chatOutput-class and catTabBottom-class.
+This is used in the conference.
+</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="showChatLog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="error" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+Chat tabpane class. It contains chatOutput-class and catTabBottom-class.
+This is used in the conference.
+</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="rssBox" type="project:rssBox" >
+</xs:element>
+  <xs:complexType name="rssBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="filesPanelStrict" type="project:filesPanelStrict" >
+</xs:element>
+  <xs:complexType name="filesPanelStrict" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:conferenceBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordingStartWin" type="project:recordingStartWin" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		Dialog box for recording data.
+		When you click the Recording button on your conference menu, this class shows a dialog box for saving it.
+	</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="recordingStartWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="recordingsName" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		Dialog box for recording data.
+		When you click the Recording button on your conference menu, this class shows a dialog box for saving it.
+	</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="screenSharingDialogContainer" type="project:screenSharingDialogContainer" >
+</xs:element>
+  <xs:complexType name="screenSharingDialogContainer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="toolbarTabList" type="project:toolbarTabList" >
+</xs:element>
+  <xs:complexType name="toolbarTabList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawUlineTools" type="project:drawUlineTools" >
+</xs:element>
+  <xs:complexType name="drawUlineTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawPaint" type="project:baseDrawPaint" >
+</xs:element>
+  <xs:complexType name="baseDrawPaint" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDraw">
+      <xs:attribute name="painttrans" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentlayerstroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentlayerlineWidth" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="currentlayerOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="searchResultsAddContact" type="project:searchResultsAddContact" >
+</xs:element>
+  <xs:complexType name="searchResultsAddContact" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dtmfButton" type="project:dtmfButton" >
+</xs:element>
+  <xs:complexType name="dtmfButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:button">
+      <xs:attribute name="dtmf" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="confirmationBox" type="project:confirmationBox" >
+</xs:element>
+  <xs:complexType name="confirmationBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="labeliderror" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="doAskAgain" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="callbackRpcErrorDialog" type="project:callbackRpcErrorDialog" >
+</xs:element>
+  <xs:complexType name="callbackRpcErrorDialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:errorDialog">
+      <xs:attribute name="callBackObject" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="emotIconsSelector" type="project:emotIconsSelector" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ view to select emoticons. size is 160x140 </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="emotIconsSelector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:closableView">
+      <xs:attribute name="btnRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ view to select emoticons. size is 160x140 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="colorpicker" type="project:colorpicker" >
+</xs:element>
+  <xs:complexType name="colorpicker" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="selectedColor" type="lzx:number" default="0x00aeef" >
+</xs:attribute>
+      <xs:attribute name="btnRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateField" type="project:dateField" >
+</xs:element>
+  <xs:complexType name="dateField" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="setDefaultToday" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="enabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="additionalDay" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelRadioButton" type="project:labelRadioButton" >
+</xs:element>
+  <xs:complexType name="labelRadioButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:radiobutton">
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imageFileExplorerItem" type="project:imageFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="imageFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteBoard" type="project:whiteBoard" >
+</xs:element>
+  <xs:complexType name="whiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendObjectToClientID" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onsharedMessage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isloadingImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isloadedImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initW" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initH" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="imagey" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="iamgex" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="documentmenuIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="confirmdialog" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="confirmationSingle" type="project:confirmationSingle" >
+</xs:element>
+  <xs:complexType name="confirmationSingle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="showCheckBox" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="refReturnMethod" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="labeliderror" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="changeWidthSliderWin" type="project:changeWidthSliderWin" >
+</xs:element>
+  <xs:complexType name="changeWidthSliderWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:closableView">
+      <xs:attribute name="maxvalue" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="initialNumber" type="lzx:number" default="3" >
+</xs:attribute>
+      <xs:attribute name="btnRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsLeftPanelPointer" type="project:mainToolsLeftPanelPointer" >
+</xs:element>
+  <xs:complexType name="mainToolsLeftPanelPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseLeftPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawWords" type="project:baseDrawWords" >
+</xs:element>
+  <xs:complexType name="baseDrawWords" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="inittext" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="initTextName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="winni" type="project:winni" >
+</xs:element>
+  <xs:complexType name="winni" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:window">
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomApplyForMuteOn" type="project:activityListRestrictedRoomApplyForMuteOn" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomApplyForMuteOn" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoObjectPlayTestBroadcast" type="project:videoObjectPlayTestBroadcast" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	contains microphone and camera for broadcasting,
+	this class is used only in Meetings-Modus
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoObjectPlayTestBroadcast" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawLetterTools" type="project:drawLetterTools" >
+</xs:element>
+  <xs:complexType name="drawLetterTools" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerList" type="project:innerList" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ private class for turnOverList only. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="innerList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="changeDevice" type="project:changeDevice" >
+</xs:element>
+  <xs:complexType name="changeDevice" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myalert" type="project:myalert" >
+</xs:element>
+  <xs:complexType name="myalert" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:alert">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoUserProfilePic" type="project:videoUserProfilePic" >
+</xs:element>
+  <xs:complexType name="videoUserProfilePic" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="value" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fieldValuesListItem" type="project:fieldValuesListItem" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This class shows label-ID,label name, value.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="fieldValuesListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentListItem">
+      <xs:attribute name="fieldvalues_id" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ This class shows label-ID,label name, value.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="fieldvalue" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fieldname" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="createPollWin" type="project:createPollWin" >
+</xs:element>
+  <xs:complexType name="createPollWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="polltypesid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="pollquestion" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="pollname" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="borderedPasswordText" type="project:borderedPasswordText" >
+</xs:element>
+  <xs:complexType name="borderedPasswordText" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tvalue" type="xs:string" default="default" >
+</xs:attribute>
+      <xs:attribute name="sendchange" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="multiline" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="maxlength" type="lzx:number" default="null" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="editable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="checkIsNumber" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="checkIsDouble" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="errorModeratorPopup" type="project:errorModeratorPopup" >
+</xs:element>
+  <xs:complexType name="errorModeratorPopup" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="error" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="openmeetingsTabButton" type="project:openmeetingsTabButton" >
+</xs:element>
+  <xs:complexType name="openmeetingsTabButton" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:roundRectGradient">
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="iconresourcename" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fixedWhiteBoard" type="project:fixedWhiteBoard" >
+</xs:element>
+  <xs:complexType name="fixedWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="timeisInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="sendUpdate" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="sendObjectToClientID" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sendObjectDel" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="restricted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onsharedMessage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="objectRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isloadingImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isloadedImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initW" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initH" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="imagey" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ignoreUpdates" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="iamgex" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="documentmenuIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="confirmdialog" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="basicturnoverlistheaderitem" type="project:basicturnoverlistheaderitem" >
+</xs:element>
+  <xs:complexType name="basicturnoverlistheaderitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleLabelButton">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseListPresentationItem" type="project:baseListPresentationItem" >
+</xs:element>
+  <xs:complexType name="baseListPresentationItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmoduleimgfolder" type="xs:string" default="$once{ canvas.uploadmoduleimgfolder }" >
+</xs:attribute>
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selectable" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isselected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isoriginal" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewUserProfile" type="project:viewUserProfile" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ User Profile Setting Panel </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="viewUserProfile" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userObject" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ User Profile Setting Panel </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listOfUsers" type="project:listOfUsers" >
+</xs:element>
+  <xs:complexType name="listOfUsers" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="subitemsListItem" type="project:subitemsListItem" >
+</xs:element>
+  <xs:complexType name="subitemsListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textvalue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="selected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="list" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isleaf" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="action" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventUserListTableWithNames" type="project:eventUserListTableWithNames" >
+</xs:element>
+  <xs:complexType name="eventUserListTableWithNames" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="horizontalDocumentIconBar" type="project:horizontalDocumentIconBar" >
+</xs:element>
+  <xs:complexType name="horizontalDocumentIconBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendSelection" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="multiWhiteBoard" type="project:multiWhiteBoard" >
+</xs:element>
+  <xs:complexType name="multiWhiteBoard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendObjectToClientID" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="sendObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="onsharedMessage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="objectRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isloadingImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isloadedImage" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initW" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="initH" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="imagey" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="iamgex" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="documentmenuIsInited" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="confirmdialog" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="headerMenu" type="project:headerMenu" >
+</xs:element>
+  <xs:complexType name="headerMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sharingFrame" type="project:sharingFrame" >
+</xs:element>
+  <xs:complexType name="sharingFrame" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sharingStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initSrc" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="bufferIndex" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawChooseModir" type="project:drawChooseModir" >
+</xs:element>
+  <xs:complexType name="drawChooseModir" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseChooseIcon">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSelectablemodi" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPpt" type="project:listPpt" >
+</xs:element>
+  <xs:complexType name="listPpt" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isPpt" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="filenamePure" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="filename" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ext" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chooseDrawAreaObjectCombobox" type="project:chooseDrawAreaObjectCombobox" >
+</xs:element>
+  <xs:complexType name="chooseDrawAreaObjectCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:basecombobox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="listV" type="xs:string" default="${ this.parent.listV }" >
+</xs:attribute>
+      <xs:attribute name="ObjectByName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteBoardPointer" type="project:whiteBoardPointer" >
+</xs:element>
+  <xs:complexType name="whiteBoardPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fadeDelegate" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelector" type="project:dateSelector" >
+</xs:element>
+  <xs:complexType name="dateSelector" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelector">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentMenu" type="project:documentMenu" >
+</xs:element>
+  <xs:complexType name="documentMenu" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseToolbarMenu">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myView" type="project:myView" >
+</xs:element>
+  <xs:complexType name="myView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:drawview">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawLetter" type="project:baseDrawLetter" >
+</xs:element>
+  <xs:complexType name="baseDrawLetter" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawObject">
+      <xs:attribute name="letterObjectIsActive" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="italic" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="edittextLetterObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="edittextLetter" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentletterObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="currentlayerstyle" type="xs:string" default="plain" >
+</xs:attribute>
+      <xs:attribute name="currentlayersize" type="lzx:number" default="12" >
+</xs:attribute>
+      <xs:attribute name="currentlayerletter" type="xs:string" default="0x000000" >
+</xs:attribute>
+      <xs:attribute name="bold" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_labelMenuItem" type="project:_labelMenuItem" >
+</xs:element>
+  <xs:complexType name="_labelMenuItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:menuitem">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="userItem" type="project:userItem" >
+</xs:element>
+  <xs:complexType name="userItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="0" >
+</xs:attribute>
+      <xs:attribute name="hasAnswered" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="answer" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="vslider" type="project:vslider" >
+</xs:element>
+  <xs:complexType name="vslider" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="switchaxis" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ switchaxis true means minimum-value is 
+            t op maximum is bottom false turns around </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showvalue" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ showvalue should the slider show the numbers of min/max </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="showrange" type="lzx:boolean" default="true" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Showrange should the slidertrack be with color while 'sliding' </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minvalue" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Minimum Value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="maxvalue" type="lzx:number" default="100" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Maximum Value </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="initvalue" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawLine" type="project:baseDrawLine" >
+</xs:element>
+  <xs:complexType name="baseDrawLine" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawPaint">
+      <xs:attribute name="currentlinestroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentlinelineWidth" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="currentlineOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventUserListItem" type="project:eventUserListItem" >
+</xs:element>
+  <xs:complexType name="eventUserListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="withNames" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="userroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="maxWidth" type="lzx:number" default="82" >
+</xs:attribute>
+      <xs:attribute name="maxHeight" type="lzx:number" default="72" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isSelected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="initWidth" type="lzx:number" default="42" >
+</xs:attribute>
+      <xs:attribute name="formatedDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="whiteBoardTextField" type="project:whiteBoardTextField" >
+</xs:element>
+  <xs:complexType name="whiteBoardTextField" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="typeOfObject" type="xs:string" default="text" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsVPanelSeperator" type="project:mainToolsVPanelSeperator" >
+</xs:element>
+  <xs:complexType name="mainToolsVPanelSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="participentList" type="project:participentList" >
+</xs:element>
+  <xs:complexType name="participentList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sortType" type="xs:string" default="alphabetical" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="searchContactInCalendar" type="project:searchContactInCalendar" >
+</xs:element>
+  <xs:complexType name="searchContactInCalendar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="nachname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="meetingMemberId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="email" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="moderationMiniIconRestricted" type="project:moderationMiniIconRestricted" >
+</xs:element>
+  <xs:complexType name="moderationMiniIconRestricted" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isActive" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_recorderProgressBar" type="project:_recorderProgressBar" >
+</xs:element>
+  <xs:complexType name="_recorderProgressBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="_videoBoardStreamEvent" type="project:_videoBoardStreamEvent" >
+</xs:element>
+  <xs:complexType name="_videoBoardStreamEvent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="labelText" type="project:labelText" >
+</xs:element>
+  <xs:complexType name="labelText" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roomListDetails" type="project:roomListDetails" >
+</xs:element>
+  <xs:complexType name="roomListDetails" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="roomname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomcomment" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="currentusers" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="errorDialog" type="project:errorDialog" >
+</xs:element>
+  <xs:complexType name="errorDialog" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseErrorDialog">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="confirmDeleteWindow" type="project:confirmDeleteWindow" >
+</xs:element>
+  <xs:complexType name="confirmDeleteWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="messagelabelid" type="lzx:number" default="153" >
+</xs:attribute>
+      <xs:attribute name="confirmlabelid" type="lzx:number" default="154" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedUserListInner" type="project:restrictedUserListInner" >
+</xs:element>
+  <xs:complexType name="restrictedUserListInner" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseRoomInnerList">
+      <xs:attribute name="sortType" type="xs:string" default="alphabetical" >
+</xs:attribute>
+      <xs:attribute name="selectedItem" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="resizeDelegateStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="resizeDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="renderDelegateStarted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="renderDelegate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+      <xs:attribute name="isLoaded" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentSelectedIndex" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="searchResultsContact" type="project:searchResultsContact" >
+</xs:element>
+  <xs:complexType name="searchResultsContact" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="bigTextListItem" type="project:bigTextListItem" >
+</xs:element>
+  <xs:complexType name="bigTextListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:textlistitem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewUserListItem" type="project:interviewUserListItem" >
+</xs:element>
+  <xs:complexType name="interviewUserListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isSelected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="formatedDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseVideoView" type="project:baseVideoView" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ 
+	This class provides the basic functions for the video-output
+	
+	    @START_CODE
+            &lt;baseVideoView x="20" y="20" width="320" height="240" bgcolor="black" /&gt;
+        @END_CODE	
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseVideoView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="weekView" type="project:weekView" >
+</xs:element>
+  <xs:complexType name="weekView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="dayNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="dayLabelNamesLabelIds" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="myScheduledMeetings" type="project:myScheduledMeetings" >
+</xs:element>
+  <xs:complexType name="myScheduledMeetings" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatParticipantsInviteNotification" type="project:chatParticipantsInviteNotification" >
+</xs:element>
+  <xs:complexType name="chatParticipantsInviteNotification" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="usermessage" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="messageObject" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="conferenceRoomName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dateSelectorWeek" type="project:dateSelectorWeek" >
+</xs:element>
+  <xs:complexType name="dateSelectorWeek" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDateSelectorComponent">
+      <xs:attribute name="firstweekddaydate" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawSimpleClick" type="project:drawSimpleClick" >
+</xs:element>
+  <xs:complexType name="drawSimpleClick" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseChooseIcon">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="advancedRoomSettings" type="project:advancedRoomSettings" >
+</xs:element>
+  <xs:complexType name="advancedRoomSettings" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="uploadTab" type="project:uploadTab" >
+</xs:element>
+  <xs:complexType name="uploadTab" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:simpleBaseTabpane">
+      <xs:attribute name="sortOrder" type="xs:string" default="file" >
+</xs:attribute>
+      <xs:attribute name="preButton" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="currentFilesValue" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="ascFile" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="ascDate" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDateSelectorComponent" type="project:baseDateSelectorComponent" >
+</xs:element>
+  <xs:complexType name="baseDateSelectorComponent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="weekclass" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="showingdate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="showcalenderweek" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="showcalendermonth" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="monthclass" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="daynumbers" type="xs:string" default="[0,1,2,3,4,5,6]" >
+</xs:attribute>
+      <xs:attribute name="dayclass" type="xs:string" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleValueList" type="project:simpleValueList" >
+</xs:element>
+  <xs:complexType name="simpleValueList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="onselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="multiselect" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="itemclassname" type="xs:string" default="simpleListItem" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simplebasetabpane" type="project:simplebasetabpane" >
+</xs:element>
+  <xs:complexType name="simplebasetabpane" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseLeftPanel" type="project:baseLeftPanel" >
+</xs:element>
+  <xs:complexType name="baseLeftPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseBoundingBorderView">
+      <xs:attribute name="title" type="xs:string" default="basePanel" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Title of this window </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="imageForDrawView" type="project:imageForDrawView" >
+</xs:element>
+  <xs:complexType name="imageForDrawView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:image">
+      <xs:attribute name="uniqueObjectSyncName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="typeOfObject" type="xs:string" default="image" >
+</xs:attribute>
+      <xs:attribute name="room" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="remotewidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="remoteheight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="recorderModus" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="parentPath" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="moduleName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isLocalSync" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="downloadurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="domain" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="baseurl" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="alterModus" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dynamicCombobox" type="project:dynamicCombobox" >
+</xs:element>
+  <xs:complexType name="dynamicCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:baseformitem">
+      <xs:attribute name="onselect" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="isCountryCombobox" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="propertyPanel" type="project:propertyPanel" >
+</xs:element>
+  <xs:complexType name="propertyPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertyPanel">
+      <xs:attribute name="sendSelection" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="ignoreUpdates" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawArrow" type="project:baseDrawArrow" >
+</xs:element>
+  <xs:complexType name="baseDrawArrow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawULine">
+      <xs:attribute name="currentdrawarrowlinestrokeFillDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentdrawarrowlinestrokeFill" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentdrawarrowlinestrokeDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentdrawarrowlinestroke" type="xs:string" default="0x000000" >
+</xs:attribute>
+      <xs:attribute name="currentdrawarrowlinelineWidth" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="currentdrawarrowOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawObject" type="project:baseDrawObject" >
+</xs:element>
+  <xs:complexType name="baseDrawObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawPointer">
+      <xs:attribute name="newSlideNumber" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="modernToolbar" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fullFit" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseContentView" type="project:baseContentView" >
+</xs:element>
+  <xs:complexType name="baseContentView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="sendInit" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ontabcontentleave" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="destroyByMethod" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="innerlistViewEventUserListTable" type="project:innerlistViewEventUserListTable" >
+</xs:element>
+  <xs:complexType name="innerlistViewEventUserListTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="terminarea" type="project:terminarea" >
+</xs:element>
+  <xs:complexType name="terminarea" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="terminObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isActive" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="calenderObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="arrayMeetingMember" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendar_day" type="project:calendar_day" >
+</xs:element>
+  <xs:complexType name="calendar_day" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="year" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="startdate" type="xs:string" default="1" >
+</xs:attribute>
+      <xs:attribute name="pixels_per_hour" type="xs:string" default="22" >
+</xs:attribute>
+      <xs:attribute name="opened" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="newYear" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="newMonth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="newDay" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="month" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="eventwidth" type="xs:string" default="${details.bgrect.width - ( this.opened ? 38 : 0 )}" >
+</xs:attribute>
+      <xs:attribute name="enddate" type="xs:string" default="1" >
+</xs:attribute>
+      <xs:attribute name="dayOfMonth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="asyncNew" type="xs:string" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="inviteMainWindow" type="project:inviteMainWindow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		This class shows a invitation window with clicking button which is located in video and audio panel.
+	</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="inviteMainWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="roomType" type="xs:string" default="conference" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+		This class shows a invitation window with clicking button which is located in video and audio panel.
+	</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="baseUrl" type="xs:string" default="http://www.denic.de" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resultPieCharPoll" type="project:resultPieCharPoll" >
+</xs:element>
+  <xs:complexType name="resultPieCharPoll" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:ompiechart">
+      <xs:attribute name="yseries" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="xseries" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="tooltipseries" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseItemActivityList" type="project:baseItemActivityList" >
+</xs:element>
+  <xs:complexType name="baseItemActivityList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="tStamp" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="rcl" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="message" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="labelidToolTipOkButton" type="lzx:number" default="1360" >
+</xs:attribute>
+      <xs:attribute name="labelidToolTipDenyButton" type="lzx:number" default="1361" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoContainer" type="project:videoContainer" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+        Container view including all audio/video - views for a Meeting
+        
+        @keywords deprecated see participents.lzx
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoContainer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ colors for each user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadCastViewRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ holds a references to the videoview which is broadcasting </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="roomListItem" type="project:roomListItem" >
+</xs:element>
+  <xs:complexType name="roomListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="starttime" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomid" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomcomment" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="roomType" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="roomClassName" type="xs:string" default="conferenceView" >
+</xs:attribute>
+      <xs:attribute name="obj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="maxUsers" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="ispublic" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isaudience" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="currentusers" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="checkForMaxUsers" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="sipLoader" type="project:sipLoader" >
+</xs:element>
+  <xs:complexType name="sipLoader" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="countryCombobox" type="project:countryCombobox" >
+</xs:element>
+  <xs:complexType name="countryCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:resetCombobox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="doUpdate" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="audienceView" type="project:audienceView" >
+</xs:element>
+  <xs:complexType name="audienceView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseContentSaveView" type="project:baseContentSaveView" >
+</xs:element>
+  <xs:complexType name="baseContentSaveView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="saveIsVisible" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="refreshIsVisible" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="onreload" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="onnew" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="ondelete" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="observerViews" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="deleteIsVisible" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="confirmMessageLabelId" type="lzx:number" default="661" >
+</xs:attribute>
+      <xs:attribute name="addIsVisible" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceBox" type="project:conferenceBox" >
+</xs:element>
+  <xs:complexType name="conferenceBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="textInset" type="lzx:number" default="10" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="initHeight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="headerText" type="xs:string" default="Users" >
+</xs:attribute>
+      <xs:attribute name="closedHeight" type="lzx:number" default="40" >
+</xs:attribute>
+      <xs:attribute name="closeable" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewListTable" type="project:interviewListTable" >
+</xs:element>
+  <xs:complexType name="interviewListTable" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendarWindow" type="project:calendarWindow" >
+</xs:element>
+  <xs:complexType name="calendarWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="fieldRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="horizontalMenuIconBar" type="project:horizontalMenuIconBar" >
+</xs:element>
+  <xs:complexType name="horizontalMenuIconBar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordListItem" type="project:recordListItem" >
+</xs:element>
+  <xs:complexType name="recordListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentListItem">
+      <xs:attribute name="valueName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="value" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawTriangle" type="project:baseDrawTriangle" >
+</xs:element>
+  <xs:complexType name="baseDrawTriangle" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawClipArt">
+      <xs:attribute name="currenttrianglestrokeFillDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currenttrianglestrokeFill" type="xs:string" default="0xFFFF33" >
+</xs:attribute>
+      <xs:attribute name="currenttrianglestrokeDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currenttrianglestroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currenttriangleineWidth" type="lzx:number" default="4" >
+</xs:attribute>
+      <xs:attribute name="currenttriangleOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="explorerBox" type="project:explorerBox" >
+</xs:element>
+  <xs:complexType name="explorerBox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="defaulttitle" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ The Title of this Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="resizeable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be resizeable  </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclose" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the Event will be thrown if you close the Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="dockingbarrier" type="lzx:number" default="15" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="docking" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Can this Box be docked to others and 
+			the width/height of parent compoent barrier </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="closable" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ if this Box should be closeable </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentPanelVPanelSeperator" type="project:documentPanelVPanelSeperator" >
+</xs:element>
+  <xs:complexType name="documentPanelVPanelSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="viewUserProfileWindow" type="project:viewUserProfileWindow" >
+</xs:element>
+  <xs:complexType name="viewUserProfileWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="userId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="syncWin" type="project:syncWin" >
+</xs:element>
+  <xs:complexType name="syncWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelText">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="labeliderror" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="simpleBaseTabpane" type="project:simpleBaseTabpane" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Tabpane. it used by chat. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="simpleBaseTabpane" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationFilePDFExplorer" type="project:listPresentationFilePDFExplorer" >
+</xs:element>
+  <xs:complexType name="listPresentationFilePDFExplorer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseListPresentationItemExplorer">
+      <xs:attribute name="swfName" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="pdfname" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendarMonthView" type="project:calendarMonthView" >
+</xs:element>
+  <xs:complexType name="calendarMonthView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="fullDate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="daydate" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="countsubwievs" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIconSmybolExtraIconsSeparator" type="project:miniIconSmybolExtraIconsSeparator" >
+</xs:element>
+  <xs:complexType name="miniIconSmybolExtraIconsSeparator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="title" type="xs:string" default="title" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedConferenceMenubar" type="project:restrictedConferenceMenubar" >
+</xs:element>
+  <xs:complexType name="restrictedConferenceMenubar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:menubar">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="autoloaderBarOnly" type="project:autoloaderBarOnly" >
+</xs:element>
+  <xs:complexType name="autoloaderBarOnly" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="step" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="start" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="maxwidth" type="lzx:number" default="100" >
+</xs:attribute>
+      <xs:attribute name="maxsteps" type="lzx:number" default="19" >
+</xs:attribute>
+      <xs:attribute name="max" type="lzx:number" default="1300" >
+</xs:attribute>
+      <xs:attribute name="currentsteps" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentIconTopPanel" type="project:documentIconTopPanel" >
+</xs:element>
+  <xs:complexType name="documentIconTopPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseTopPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="commonVideoViewContent" type="project:commonVideoViewContent" >
+</xs:element>
+  <xs:complexType name="commonVideoViewContent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="restrictedUserListItem" type="project:restrictedUserListItem" >
+</xs:element>
+  <xs:complexType name="restrictedUserListItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePagingListItem">
+      <xs:attribute name="userroom" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="userpicView" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="userpicURL" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="username" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="user_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="streamid" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="selfItem" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="micMuted" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="lastname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSuperModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMod" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isBroadcasting" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="formatedDate" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="firstname" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="connectedSince" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="canShare" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="canRemote" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="canDraw" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="folderFileExplorerItem" type="project:folderFileExplorerItem" >
+</xs:element>
+  <xs:complexType name="folderFileExplorerItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseFileExplorerItem">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="iconView" type="project:iconView" >
+</xs:element>
+  <xs:complexType name="iconView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="enabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="enterExternMember" type="project:enterExternMember" >
+</xs:element>
+  <xs:complexType name="enterExternMember" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="interviewVideoChooseUser" type="project:interviewVideoChooseUser" >
+</xs:element>
+  <xs:complexType name="interviewVideoChooseUser" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:guiPresenter">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoEventContainerStream" type="project:videoEventContainerStream" >
+</xs:element>
+  <xs:complexType name="videoEventContainerStream" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseVideoObject" type="project:baseVideoObject" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	Base container for a client, can be either:
+	a remote-video (subscribing/playing a video)
+	or a self-video (broadcasting a cam/mic)
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="baseVideoObject" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="usercolor" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ color of this user, this is the color the user will also use for his chat-color </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="respectRatio" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="publicSID" type="xs:string" default="" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ publicSID is a hash-value to identify a user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="minimized" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="micMuted" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ micMuted indicates if the microphone is currently turned sound or gain to 0 </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="isload" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="isShowMicMute" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isMutedByModerator" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="initW" type="lzx:number" default="40" >
+</xs:attribute>
+      <xs:attribute name="initH" type="lzx:number" default="40" >
+</xs:attribute>
+      <xs:attribute name="hidebyAudioOnly" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="custom" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="messageWin" type="project:messageWin" >
+</xs:element>
+  <xs:complexType name="messageWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="labeliderror" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceRoomSidebar" type="project:conferenceRoomSidebar" >
+</xs:element>
+  <xs:complexType name="conferenceRoomSidebar" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="selected" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="isOpen" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="ompiechart" type="project:ompiechart" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+          A pie chart represents a chart that is displayed in the 2D
+          polar plane. This class inherits immediately from chart class
+          and can be instantiated directly. (Warning: Of beta quality.)
+          @access public
+          </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="ompiechart" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:chart">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="eventUserList" type="project:eventUserList" >
+</xs:element>
+  <xs:complexType name="eventUserList" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="userNewVideoContainer" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="organisation_id" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="listType" type="xs:string" default="eventUserListTable" >
+</xs:attribute>
+      <xs:attribute name="colorArray" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ colors for each user </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="broadCastViewRef" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ holds a references to the videoview which is broadcasting </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="applyDefaultModeration" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="allowUserQuestions" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="comoboxListItemNoHeaders" type="project:comoboxListItemNoHeaders" >
+</xs:element>
+  <xs:complexType name="comoboxListItemNoHeaders" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePagingListItem">
+      <xs:attribute name="text" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomModeration" type="project:activityListRestrictedRoomModeration" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomModeration" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverListHeaderItemOrdered" type="project:turnOverListHeaderItemOrdered" >
+</xs:element>
+  <xs:complexType name="turnOverListHeaderItemOrdered" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:turnoverlistheaderitemResize">
+      <xs:attribute name="orderBy" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isSelected" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="asc" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="browserjavascriptcallback" type="project:browserjavascriptcallback" >
+</xs:element>
+  <xs:complexType name="browserjavascriptcallback" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="value" type="xs:string" >
+</xs:attribute>
+      <xs:attribute name="timer" type="lzx:number" default="10" >
+</xs:attribute>
+      <xs:attribute name="prevalue" type="xs:string" default="_browserjavascriptcallbackprevalue" >
+</xs:attribute>
+      <xs:attribute name="lzappId" type="xs:string" default="lzapp" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chooseOrganisationWindow" type="project:chooseOrganisationWindow" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Organization choice modal window when an organization is added to a user.</xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chooseOrganisationWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="item_id" type="lzx:number" default="0" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Organization choice modal window when an organization is added to a user.</xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="documentPanelHPanelSeperator" type="project:documentPanelHPanelSeperator" >
+</xs:element>
+  <xs:complexType name="documentPanelHPanelSeperator" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="lineColorChoose" type="project:lineColorChoose" >
+</xs:element>
+  <xs:complexType name="lineColorChoose" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:basePropertySelector">
+      <xs:attribute name="selectedColorTransformedString" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="selectedColorDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="selectedColor" type="lzx:number" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="inInitColorSelection" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="colorPickRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="colorIsEnabled" type="lzx:boolean" default="true" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="resetCombobox" type="project:resetCombobox" >
+</xs:element>
+  <xs:complexType name="resetCombobox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:combobox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="recordListitem" type="project:recordListitem" >
+</xs:element>
+  <xs:complexType name="recordListitem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="fileUpload" type="project:fileUpload" >
+</xs:element>
+  <xs:complexType name="fileUpload" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="isOnlyZip" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyXml" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyProfile" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyPpt" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isOnlyImage" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fr" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseBoundingBorderView" type="project:baseBoundingBorderView" >
+</xs:element>
+  <xs:complexType name="baseBoundingBorderView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="verticalClassActive" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="vWidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="vHeight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="topClassPanel" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="rightClassPanel" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="preclose" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ extra Event for this kind of view
+		will be thrown before the view inits new </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="onclose" type="xs:string" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ the Event will be thrown if you close the Box </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="mousetracker_del" type="xs:string" default="$once{ new LzDelegate(this, 'checkStaticBorders' )}" >
+</xs:attribute>
+      <xs:attribute name="leftClassPanel" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="hasshadow" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="hWidth" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="hHeight" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="dockingbarrier" type="lzx:number" default="15" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="docking" type="lzx:boolean" default="false" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Can this Box be docked to others and 
+			the width/height of parent compoent barrier </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="currentBoundingBox" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="boundingbarrier" type="lzx:number" default="2" >
+</xs:attribute>
+      <xs:attribute name="bottomClassPanel" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="activationVClassBounding" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="activationClassBounding" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listImageDrag" type="project:listImageDrag" >
+</xs:element>
+  <xs:complexType name="listImageDrag" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isPpt" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="filenamePure" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="filename" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ext" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="modernWhiteBoardPanel" type="project:modernWhiteBoardPanel" >
+</xs:element>
+  <xs:complexType name="modernWhiteBoardPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:conferenceBox">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="miniIconSmybolExtraIconsContainer" type="project:miniIconSmybolExtraIconsContainer" >
+</xs:element>
+  <xs:complexType name="miniIconSmybolExtraIconsContainer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="toolTipReference" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isopen" type="lzx:boolean" default="true" >
+</xs:attribute>
+      <xs:attribute name="iconList" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="folderName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="fName" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="calcItem" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="contentSaveWindow" type="project:contentSaveWindow" >
+</xs:element>
+  <xs:complexType name="contentSaveWindow" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseErrorDialog">
+      <xs:attribute name="saveObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="processNextIndex" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPresentationFileOrig" type="project:listPresentationFileOrig" >
+</xs:element>
+  <xs:complexType name="listPresentationFileOrig" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:listPresentationFilePDF">
+      <xs:attribute name="originalName" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="turnOverListPaged" type="project:turnOverListPaged" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="turnOverListPaged" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseturnOverListPaged">
+      <xs:attribute name="sendEventToReload" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="drawDocumentPanelItem" type="project:drawDocumentPanelItem" >
+</xs:element>
+  <xs:complexType name="drawDocumentPanelItem" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:blueButton">
+      <xs:attribute name="modi" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="labelid" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="remoteUserDetails" type="project:remoteUserDetails" >
+</xs:element>
+  <xs:complexType name="remoteUserDetails" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsTopPanel" type="project:mainToolsTopPanel" >
+</xs:element>
+  <xs:complexType name="mainToolsTopPanel" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseTopPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="flexibleEventRoom" type="project:flexibleEventRoom" >
+</xs:element>
+  <xs:complexType name="flexibleEventRoom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseConferenceRoom">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="appointmentMembers" type="project:appointmentMembers" >
+</xs:element>
+  <xs:complexType name="appointmentMembers" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="terminObjRef" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="numberOfStart" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="numberOfRecords" type="lzx:number" default="20" >
+</xs:attribute>
+      <xs:attribute name="numberOfMessage" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="conferenceView" type="project:conferenceView" >
+</xs:element>
+  <xs:complexType name="conferenceView" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseContentView">
+      <xs:attribute name="roomobj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="meetingTimer" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listPagedContent" type="project:listPagedContent" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="listPagedContent" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="totalItemsInList" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="showHScrollbar" type="xs:string" default="visible" >
+</xs:attribute>
+      <xs:attribute name="itemsToShow" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="itemHeight" type="lzx:number" default="20" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ common TurnOverList view class. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="currentLastItemInList" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="screenSharingContainer" type="project:screenSharingContainer" >
+</xs:element>
+  <xs:complexType name="screenSharingContainer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawULine" type="project:baseDrawULine" >
+</xs:element>
+  <xs:complexType name="baseDrawULine" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawLine">
+      <xs:attribute name="currentulinestroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentulinelineWidth" type="lzx:number" default="20" >
+</xs:attribute>
+      <xs:attribute name="currentulineOpacity" type="lzx:number" default="0.5" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="liste" type="project:liste" >
+</xs:element>
+  <xs:complexType name="liste" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="dynamicFileName" type="project:dynamicFileName" >
+</xs:element>
+  <xs:complexType name="dynamicFileName" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:customInputtext">
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="parentFileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="isOwner" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="isNew" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="fileExplorerItemId" type="lzx:number" default="0" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="calendar_event" type="project:calendar_event" >
+</xs:element>
+  <xs:complexType name="calendar_event" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="startTime" type="xs:string" default="${this.startHour * 60 + Number( this.startMin )}" >
+</xs:attribute>
+      <xs:attribute name="startMin" type="xs:string" default="$path{'start[1]/@minute'}" >
+</xs:attribute>
+      <xs:attribute name="startHour" type="xs:string" default="$path{'start[1]/@hour'}" >
+</xs:attribute>
+      <xs:attribute name="selected" type="xs:string" default="$path{'@selected'}" >
+</xs:attribute>
+      <xs:attribute name="pixelPerMin" type="lzx:number" default="22/60" >
+</xs:attribute>
+      <xs:attribute name="normalColor" type="lzx:color" default="${this.getEventColor( this.category )}" >
+</xs:attribute>
+      <xs:attribute name="mouseIsDown" type="xs:string" default="false" >
+</xs:attribute>
+      <xs:attribute name="hiColor" type="lzx:color" default="0xDDDDDD" >
+</xs:attribute>
+      <xs:attribute name="endTime" type="xs:string" default="${this.endHour * 60 + Number( this.endMin )}" >
+</xs:attribute>
+      <xs:attribute name="endMin" type="xs:string" default="$path{'end[1]/@minute'}" >
+</xs:attribute>
+      <xs:attribute name="endHour" type="xs:string" default="$path{'end[1]/@hour'}" >
+</xs:attribute>
+      <xs:attribute name="defaultTimes" type="xs:string" default="{startHour: 0, startMin: 0, endHour: 0, endMin: 0}" >
+</xs:attribute>
+      <xs:attribute name="category" type="xs:string" default="$path{'category[1]/@value'}" >
+</xs:attribute>
+      <xs:attribute name="bkgndColor" type="lzx:color" default="0x5D84CB" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="addLanguage" type="project:addLanguage" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Popup view to input a new language name to be added. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="addLanguage" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:labelExplorerBox">
+      <xs:attribute name="tempValue" type="lzx:number" default="0" >
+</xs:attribute>
+      <xs:attribute name="refObj" type="xs:string" default="null" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ Popup view to input a new language name to be added. </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="activityListRestrictedRoomWhiteboard" type="project:activityListRestrictedRoomWhiteboard" >
+</xs:element>
+  <xs:complexType name="activityListRestrictedRoomWhiteboard" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseItemActivityList">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="subitemsListContainter" type="project:subitemsListContainter" >
+</xs:element>
+  <xs:complexType name="subitemsListContainter" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="updatecheckbox" type="project:updatecheckbox" >
+</xs:element>
+  <xs:complexType name="updatecheckbox" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:checkbox">
+      <xs:attribute name="tvalue" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="sendchange" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="changeWidthLetterSliderWin" type="project:changeWidthLetterSliderWin" >
+</xs:element>
+  <xs:complexType name="changeWidthLetterSliderWin" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:closableViewLetter">
+      <xs:attribute name="initialNumber" type="lzx:number" default="12" >
+</xs:attribute>
+      <xs:attribute name="btnRef" type="xs:string" default="null" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="chatTabBottom" type="project:chatTabBottom" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+ View of the buttom area of chat. It contains buttons of message,emoticons,clear. </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="chatTabBottom" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:view">
+      <xs:attribute name="objMessage" type="xs:string" default="null" >
+</xs:attribute>
+      <xs:attribute name="doUpdate" type="lzx:boolean" default="false" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="videoObjectPlayBroadcast" type="project:videoObjectPlayBroadcast" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	Contains no microphone or camera Object, this view can only 
+	subscribe to a video or live-stream
+
+ </xs:documentation>
+</xs:annotation>
+</xs:element>
+  <xs:complexType name="videoObjectPlayBroadcast" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseVideoObject">
+      <xs:attribute name="ratioW" type="xs:string" default="1" >
+<xs:annotation>
+<xs:documentation xml:lang="en">
+
+	Contains no microphone or camera Object, this view can only 
+	subscribe to a video or live-stream
+
+ </xs:documentation>
+</xs:annotation>
+</xs:attribute>
+      <xs:attribute name="ratioH" type="xs:string" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="listWml" type="project:listWml" >
+</xs:element>
+  <xs:complexType name="listWml" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="lzx:text">
+      <xs:attribute name="uploadmodul" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="isPpt" type="lzx:boolean" default="false" >
+</xs:attribute>
+      <xs:attribute name="filenamePure" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="filename" type="xs:string" default="" >
+</xs:attribute>
+      <xs:attribute name="ext" type="xs:string" default="" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="mainToolsTopPanelPointer" type="project:mainToolsTopPanelPointer" >
+</xs:element>
+  <xs:complexType name="mainToolsTopPanelPointer" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseTopPanel">
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:element name="baseDrawEllipse" type="project:baseDrawEllipse" >
+</xs:element>
+  <xs:complexType name="baseDrawEllipse" mixed="true">
+  <xs:complexContent>
+  <xs:extension base="project:baseDrawRect">
+      <xs:attribute name="currentellipsestrokeFillDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentellipsestrokeFill" type="xs:string" default="0xFFFF33" >
+</xs:attribute>
+      <xs:attribute name="currentellipsestrokeDis" type="lzx:number" default="1" >
+</xs:attribute>
+      <xs:attribute name="currentellipsestroke" type="xs:string" default="0xFF6600" >
+</xs:attribute>
+      <xs:attribute name="currentellipselineWidth" type="xs:string" default="4" >
+</xs:attribute>
+      <xs:attribute name="currentellipseOpacity" type="lzx:number" default="1" >
+</xs:attribute>
+  </xs:extension>
+  </xs:complexContent>
+  </xs:complexType>
+<xs:group name="topLevelElements">
+<xs:sequence>
+<xs:choice minOccurs="0" maxOccurs="unbounded">
+<xs:any />
+</xs:choice>
+</xs:sequence>
+</xs:group>
+</xs:schema>
diff --git a/WebContent/red5/admin.bat b/WebContent/red5/admin.bat
new file mode 100644
index 0000000..8ae8ec2
--- /dev/null
+++ b/WebContent/red5/admin.bat
@@ -0,0 +1,21 @@
+REM #############################################
+REM Licensed under the Apache License, Version 2.0 (the "License");
+REM you may not use this file except in compliance with the License.
+REM You may obtain a copy of the License at
+REM
+REM     http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing, software
+REM distributed under the License is distributed on an "AS IS" BASIS,
+REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM See the License for the specific language governing permissions and
+REM limitations under the License.
+REM #############################################
+@echo off
+set RED5_HOME=%~dp0
+set OM_CONTEXT=openmeetings
+
+set CLASSPATH=%RED5_HOME%\*;%RED5_HOME%\conf;%RED5_HOME%\plugins\*;%RED5_HOME%\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\lib\*;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF;%RED5_HOME%\webapps\%OM_CONTEXT%\WEB-INF\classes
+
+java -cp "%CLASSPATH%" -Dcontext=%OM_CONTEXT% -Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector org.apache.openmeetings.cli.Admin %*
+
diff --git a/WebContent/red5/admin.sh b/WebContent/red5/admin.sh
new file mode 100644
index 0000000..a31a5ad
--- /dev/null
+++ b/WebContent/red5/admin.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+# #############################################
+# Licensed 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.
+# #############################################
+export RED5_HOME=$(cd $(dirname "$0"); pwd) 
+export OM_CONTEXT=openmeetings
+
+export CLASSPATH=$RED5_HOME/*:$RED5_HOME/conf:$RED5_HOME/plugins/*:$RED5_HOME/lib/*:$RED5_HOME/webapps/${OM_CONTEXT}/WEB-INF/lib/*:$RED5_HOME/webapps/${OM_CONTEXT}/WEB-INF:$RED5_HOME/webapps/${OM_CONTEXT}/WEB-INF/classes
+
+java -cp "$CLASSPATH" -Dcontext=${OM_CONTEXT} -Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector org.apache.openmeetings.cli.Admin $*
+
diff --git a/WebContent/red5/index.html b/WebContent/red5/index.html
new file mode 100644
index 0000000..8884681
--- /dev/null
+++ b/WebContent/red5/index.html
@@ -0,0 +1,23 @@
+<!--
+   Licensed 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.
+ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Your Page Title</title>
+<meta http-equiv="REFRESH" content="0;url=openmeetings/">
+</head>
+<body>
+Redirect to openmeetings/
+</body>
+</html>
diff --git a/WebContent/red5/network_test.sh b/WebContent/red5/network_test.sh
new file mode 100755
index 0000000..64cb8e9
--- /dev/null
+++ b/WebContent/red5/network_test.sh
@@ -0,0 +1,157 @@
+#!/bin/bash
+# #############################################
+# Licensed 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.
+# #############################################
+
+LOCAL_HOST=$1
+SSH_LOGIN=$2
+TESTING_HOST=$3
+
+if [ -z "$3" ];then
+  echo "Usage: $0 LOCAL_HOST_IP REMOTE_SSH_LOGIN REMOTE_HOST_IP"
+  echo "Script requare installed 'iperf' on both local and remote hosts."
+  echo "Also need setting up ssh login without requiring a password. Use for this purpose ssl certificates."
+  exit 0;
+fi
+
+TEST_LOCAL_IPERF=`iperf 2>&1 | grep "Usage: iperf" |wc -l`
+if [ "1" != "$TEST_LOCAL_IPERF" ];then
+  echo "Script requare installed 'iperf' on local host."
+  exit 0;
+fi
+
+TEST_REMOTE_IPERF=`ssh $SSH_LOGIN@$TESTING_HOST "iperf 2>&1 | grep \"Usage: iperf\" |wc -l"`
+if [ "1" != "$TEST_REMOTE_IPERF" ];then
+  echo "Script requare installed 'iperf' on remote host."
+  exit 0;
+fi
+
+test_jitter_with_ping (){
+## $1 - size of packets in bites
+## $2 - count of send packets
+
+COUNT_PACKETS=1000
+if [ -z "$1" ]; then 
+  ping -c 1000 -f -s $1 $TESTING_HOST 2>&1 >${1}b.out.txt
+else
+  ping -c $2 -f -s $1 $TESTING_HOST 2>&1 >${1}b.out.txt
+  COUNT_PACKETS=$2
+fi
+
+MIN=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f1 | cut -d "." -f1`
+AVG=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f2 | cut -d "." -f1`
+MAX=`grep "rtt min" ./${1}b.out.txt | cut -d " " -f4 | cut -d "/" -f3 | cut -d "." -f1`
+
+let "JITTER=($MAX-$AVG)-($AVG-$MIN)"
+if [ "$JITTER" -lt "0" ];then
+    let "JITTER=-$JITTER"
+fi
+echo "Jitter = $JITTER for $COUNT_PACKETS packets with size $1 bites (ping)"
+echo "Max latency is $MAX"
+if [ "$AVG" != "0"  ]; then 
+  let "JITTERPS=$JITTER*100/$AVG"
+  echo "Jitter = $JITTERPS % from $AVG ms"
+fi
+
+}
+
+test_opened_ports_with_iperf (){
+## Test opened ports
+echo "Start testing opened ports"
+echo "========================================"
+PORTS=$1 #"5080 1935 8088"
+AVAIL_PORTS=""
+rm server_port_log.txt
+for i in $PORTS; do
+  #echo "ssh $SSH_LOGIN@$TESTING_HOST \"iperf -s -p $i\""
+  ssh $SSH_LOGIN@$TESTING_HOST "iperf -s -p $i" >>server_port_log.txt 2>&1 &
+  sleep 2
+  #echo "telnet -e q $TESTING_HOST $i <telnet_commands.txt"
+  TELNET_OUT=`echo -e "q\nquit"|telnet -e q $TESTING_HOST $i`
+  #echo "ssh $SSH_LOGIN@$TESTING_HOST \"ps -C iperf|cut -d \" \" -f1 | xargs kill -9\""
+  ssh $SSH_LOGIN@$TESTING_HOST "ps -C iperf|cut -d \" \" -f1 | xargs kill -9" >>server_port_log.txt 2>&1 &
+  PORT_IS_AVAILABLE=`echo "$TELNET_OUT" | grep "Connected to"`
+  if [ "$PORT_IS_AVAILABLE" != "" ];then
+    echo "Port $i available"
+    AVAIL_PORTS="$AVAIL_PORTS $i"
+  else
+    echo "Port $i not available"
+  fi
+  sleep 2
+done
+
+}
+
+
+test_bandwidth_with_iperf (){
+## Test bandwidth of server
+echo "Start testing bandwidth of server"
+echo "========================================"
+  PORT=$1
+  TIME_TO_TEST=30
+  NUM_THREADS=10
+  REPORT_INTERVAL=5
+  #Download test
+  echo "Start outbound test"
+  #setup server
+  #echo "Starting server..."
+  ssh $SSH_LOGIN@$TESTING_HOST "iperf -s -p $PORT" >server_log.txt 2>&1 &
+  #wait when server started
+  sleep 2
+  #start test
+  #echo "Start test"
+  iperf -c $TESTING_HOST -p $PORT -i $REPORT_INTERVAL -P $NUM_THREADS -t $TIME_TO_TEST | tee client_log.txt | grep "SUM"
+  #stop server
+  echo "Stop server"
+  ssh $SSH_LOGIN@$TESTING_HOST "ps -C iperf|cut -d \" \" -f1 | xargs kill -9" >>server_log.txt 2>&1 &
+  echo "End outbound test"
+  sleep 2
+  echo 
+  #Upload test 
+  #Comment: This we can use any port for testing, I use 12100
+  PORT=12100
+  echo "Start inbound test"
+  #setup server
+  #echo "Starting server..."
+  iperf -s -p $PORT >local_server_log.txt 2>&1 &
+  #wait when server started
+  sleep 2
+  #start test
+  #echo "Start test"
+  ssh $SSH_LOGIN@$TESTING_HOST "iperf -c $LOCAL_HOST -p $PORT -i $REPORT_INTERVAL -P $NUM_THREADS -t $TIME_TO_TEST" | tee remote_client_log.txt | grep "SUM"
+  #stop server
+  echo "Stop server"
+  ps -C iperf | cut -d " " -f1 | xargs kill -9 >local_server_log.txt 2>&1 &
+  echo "End inbound test"
+}
+
+echo "Start testing latency and jitter"
+echo "========================================"
+test_jitter_with_ping 1000 100
+test_jitter_with_ping 1000 1000
+test_jitter_with_ping 10000 1000
+#Hard test
+#test_jitter_with_ping 1024 100000
+echo
+
+test_opened_ports_with_iperf "5080 1935 8088"
+#echo "$AVAIL_PORTS"
+echo
+
+test_bandwidth_with_iperf 1935
+
+## generate file with random content and size 1Mb
+#dd if=/dev/urandom of=test.log bs=1k count=1024
+
+
+
diff --git a/WebContent/src/base/components/button/baseChooseIcon.lzx b/WebContent/src/base/components/button/baseChooseIcon.lzx
new file mode 100644
index 0000000..86007c3
--- /dev/null
+++ b/WebContent/src/base/components/button/baseChooseIcon.lzx
@@ -0,0 +1,81 @@
+<?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.
+  
+-->
+<library>
+
+<resource name="background_drawchoose_rsc">
+    <frame src="resources/menudraw_up.png" />
+    <frame src="resources/menudraw_over.png" />
+    <frame src="resources/menudraw_down.png" />
+</resource>
+
+<class name="baseChooseIcon" extends="view" width="24" height="24" 
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+    <attribute name="resourceN" value="" type="string" />
+    
+    <view name="_bg" x="1" y="1" height="$once{ parent.height - 2 }"
+    	  width="$once{ parent.width - 2 }" bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" />
+    
+    <image name="_icon" src="$once{ canvas.getThemeImage(parent.resourceN) }" 
+    	  x="$once{ (parent.width-this.width) / 2 }"
+    	  y="$once{ (parent.height-this.height) / 2 }" 
+    	  width="18" height="18" stretches="both"/>
+    <attribute name="initX" value="0" type="number"/>
+    <attribute name="initY" value="0" type="number"/>
+    <attribute name="isselected" value="false" type="boolean" />
+	<!--
+    <attribute name="enabled" value="true" type="boolean" />
+	 -->
+    <attribute name="labelid" value="0" type="number" />
+    <handler name="onmouseover">
+    	this.isOut = false;
+    	this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMouseOvercolorizer'));
+    	this._icon.setAttribute("x",this._icon.x-1);
+    	this._icon.setAttribute("y",this._icon.y-1);
+    	this._icon.setAttribute("width",this._icon.width+2);
+    	this._icon.setAttribute("height",this._icon.height+2);
+    </handler>
+    <handler name="onmouseout">
+    	this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+    	if (this.initX == this._icon.x) {
+    		return;
+    	}
+    	this.isOut = true;
+    	this._icon.setAttribute("x",this.initX);
+    	this._icon.setAttribute("y",this.initY);
+    	this._icon.setAttribute("width",this._icon.width-2);
+    	this._icon.setAttribute("height",this._icon.height-2);
+    </handler>
+    <handler name="onclick">
+    	this.onmouseout.sendEvent(null);
+    </handler>
+    <handler name="oninit">
+    	this.initX = this._icon.x;
+    	this.initY = this._icon.y;
+        if (this.isselected){
+            this.onclick.sendEvent();
+            this.setAttribute('frame',3);
+        }
+    </handler>          
+    <labelTooltip labelid="$once{ parent.labelid }" inittwice="true" />
+</class>
+
+
+</library>
diff --git a/WebContent/src/base/components/button/blueButton.lzx b/WebContent/src/base/components/button/blueButton.lzx
new file mode 100644
index 0000000..c30474e
--- /dev/null
+++ b/WebContent/src/base/components/button/blueButton.lzx
@@ -0,0 +1,84 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="blueButton" extends="basecomponent" width="200" height="18" 
+	       bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" focusable="true">
+	    
+	    <attribute name="resourceItem" value="" type="string" />
+	    
+	    <attribute name="x_insetResource" value="4" type="number" />
+	    <attribute name="y_insetResource" value="4" type="number" />
+	    
+	    <attribute name="width_insetResource" value="18" type="number" />
+	    <attribute name="height_insetResource" value="18" type="number" />
+	    
+		<method name="setText" args="txt">
+			this.setAttribute('text',txt);
+		</method>
+		<view name="_bg" x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }"
+				width="${ parent.width-2 }" height="${ parent.height-2 }" />
+		<view name="_bgOver" x="1" y="1" bgcolor="0xFFFFFF" opacity="0.5" visibility="hidden"
+				width="${ parent.width-2 }" height="${ parent.height-2 }" />
+		<view name="_bgDown" x="1" y="1" bgcolor="0x000000" opacity="0.5" visibility="hidden"
+				width="${ parent.width-2 }" height="${ parent.height-2 }" />
+		
+		<view name="disAbledView" visibility="${ ( parent.enabled ) ? 'hidden' : 'visible' }"
+	          bgcolor="white" opacity="1" x="1" y="1"
+	          width="$once{ parent.width-2 }" height="$once{ parent.height-2 }" />
+		
+	    <image name="_rscIcon" stretches="both" 
+	    	  opacity="${ ( parent.enabled ) ? 1 : 0.4 }"
+		  	  x="$once{ parent.x_insetResource }" 
+	    	  y="$once{ parent.y_insetResource }" 
+	          width="$once{ parent.width_insetResource }" 
+	          height="$once{ parent.height_insetResource }" 
+	          src="$once{ canvas.getThemeImage(parent.resourceItem) }" />
+	          
+	    
+	     
+		<handler name="onmouseover">
+			this._rscIcon.setAttribute("x",this._rscIcon.x-1);
+			this._rscIcon.setAttribute("y",this._rscIcon.y-1);
+			this._rscIcon.setAttribute("width",this._rscIcon.width+2);
+			this._rscIcon.setAttribute("height",this._rscIcon.height+2);
+			this._bgOver.setAttribute('visibility','visible');
+		</handler>
+		<handler name="onmouseout">
+			this._rscIcon.setAttribute("x",this._rscIcon.x+1);
+			this._rscIcon.setAttribute("y",this._rscIcon.y+1);
+			this._rscIcon.setAttribute("width",this._rscIcon.width-2);
+			this._rscIcon.setAttribute("height",this._rscIcon.height-2);
+		</handler>
+		<handler name="onmousedown">
+			if (!this.enabled) {
+				return;
+			}
+			this._bgOver.setAttribute('visibility','hidden');
+			this._bgDown.setAttribute('visibility','visible');
+		</handler>
+		<handler name="onmouseup">
+			this._bgDown.setAttribute('visibility','hidden');
+		</handler>	
+			
+	</class>
+
+</library>
diff --git a/WebContent/src/base/components/button/labelBlueButton.lzx b/WebContent/src/base/components/button/labelBlueButton.lzx
new file mode 100644
index 0000000..318ddfa
--- /dev/null
+++ b/WebContent/src/base/components/button/labelBlueButton.lzx
@@ -0,0 +1,34 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelBlueButton" extends="blueButton" >
+
+	<attribute name="labelid" value="0" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		//Debug.write(this.labelid);
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/button/library.lzx b/WebContent/src/base/components/button/library.lzx
new file mode 100644
index 0000000..fa5dc19
--- /dev/null
+++ b/WebContent/src/base/components/button/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="incubator/roundrectbutton.lzx" />
+    
+	<include href="blueButton.lzx" />
+	<include href="labelBlueButton.lzx" />
+	<include href="simpleLabelButton.lzx" />
+    <include href="baseChooseIcon.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/button/resources/menudraw_down.png b/WebContent/src/base/components/button/resources/menudraw_down.png
new file mode 100644
index 0000000..8ba606b
--- /dev/null
+++ b/WebContent/src/base/components/button/resources/menudraw_down.png
Binary files differ
diff --git a/WebContent/src/base/components/button/resources/menudraw_over.png b/WebContent/src/base/components/button/resources/menudraw_over.png
new file mode 100644
index 0000000..d7e9f26
--- /dev/null
+++ b/WebContent/src/base/components/button/resources/menudraw_over.png
Binary files differ
diff --git a/WebContent/src/base/components/button/resources/menudraw_up.png b/WebContent/src/base/components/button/resources/menudraw_up.png
new file mode 100644
index 0000000..cebc7c5
--- /dev/null
+++ b/WebContent/src/base/components/button/resources/menudraw_up.png
Binary files differ
diff --git a/WebContent/src/base/components/button/simpleLabelButton.lzx b/WebContent/src/base/components/button/simpleLabelButton.lzx
new file mode 100644
index 0000000..5f63fad
--- /dev/null
+++ b/WebContent/src/base/components/button/simpleLabelButton.lzx
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<library>
+
+<class name="simpleLabelButton" extends="button" fontstyle="bold"
+	   fontsize="11" height="20" style="componentStyle">
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+<class name="simpleLabelRoundButton" extends="roundrectbutton" 
+	   fontsize="11" height="20" style="componentStyle" fontstyle="bold">
+
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    
+</class>
+
+<class name="simpleLabelButtonTooltip" extends="button" fontstyle="bold"
+	   fontsize="11" height="20" style="componentStyle">
+	
+	<attribute name="tooltipId" type="number" value="0" />
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	<labelTooltip labelid="$once{ parent.tooltipId }" />
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/calendar/calendarWindow.lzx b/WebContent/src/base/components/calendar/calendarWindow.lzx
new file mode 100644
index 0000000..1118862
--- /dev/null
+++ b/WebContent/src/base/components/calendar/calendarWindow.lzx
@@ -0,0 +1,92 @@
+<?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.
+  
+-->
+<library>
+
+<class name="calendarWindow" extends="view" clickable="true" 
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">	
+
+	<attribute name="fieldRef" value="null" />
+	
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+	</handler>
+	<method name="close">
+		lz.ModeManager.release(this);
+		this.destroy();
+	</method>	
+	
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method> 	
+	
+	<labelText fgcolor="0xFFFFFF" fontstyle="bold" labelid="481" x="1" y="1" />
+	
+    <view name="_close" x="${ this.parent.width-19 }" y="1" 
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" />
+    </view>  	
+
+	<dateSelector y="20" name="_dateselector">
+		<handler name="oninit">
+			<![CDATA[
+			//Debug.write("dateselector oninit. ",this);
+			var t = parent.fieldRef.getText();
+			var newDate = parseStringToDate(t);
+			this.showingdate = newDate;
+			//Debug.write("n1:",this.showingdate);
+			this.init();
+			]]>
+		</handler>
+		<handler name="ondoubleselect" args="d">
+			parent.fieldRef.setAttribute('text',parseDateToString(d));
+			this.parent.close();
+		</handler>
+	</dateSelector>	
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/calendar/dateField.lzx b/WebContent/src/base/components/calendar/dateField.lzx
new file mode 100644
index 0000000..fd83911
--- /dev/null
+++ b/WebContent/src/base/components/calendar/dateField.lzx
@@ -0,0 +1,80 @@
+<?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.
+  
+-->
+<library>
+
+<class name="dateField" extends="view" width="104">
+	
+	<attribute name="enabled" value="true" type="boolean" />
+	<attribute name="setDefaultToday" value="false" type="boolean" />
+	<attribute name="additionalDay" value="0" type="number" />
+	
+	<handler name="oninit">
+		if (this.setDefaultToday){
+			if (this.additionalDay==0){
+				this._text.setAttribute('text',parseDateToString(new Date()));
+			} else {
+				var date = new Date();
+				date.setTime(date.getTime()+86400000);
+				this._text.setAttribute('text',parseDateToString(date));
+			}
+		}
+	</handler>
+ 
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method>
+	<method name="getText" >
+		return this._text.getText();
+	</method>	
+    
+    <method name="setDate" args="d">
+        
+    </method>
+    <method name="getDate">
+        var tString = this._text.getText();
+        var y = tString.substring(6,10);
+        var m = Number(tString.substring(3,5))-1;
+        var d = tString.substring(0,2);     
+        var date = new Date(y,m,d);
+        if ($debug) Debug.write(date); 
+        return date;
+    </method>
+    
+	<attribute name="text" value="" type="string" />
+
+	<customEdittext name="_text" width="$once{ parent.width-22 }" regexpType="date" 
+					align="left" text="${ parent.text }" enabled="${ parent.enabled }" />
+
+	<blueButton resourceItem="date_icon_rsc" align="right"
+		  opacity="${ ((parent.enabled) ? 1 : 0.4) }"
+		  x_insetResource="2" y_insetResource="2" width="20" height="20"
+		  width_insetResource="16" height_insetResource="16">
+		<handler name="onclick">
+			if (parent.enabled) {
+				new lz.calendarWindow(this.parent.parent,{fieldRef:this.parent._text,x:this.parent.x+(this.parent.width-200),y:this.parent.y});
+			}
+		</handler>
+		<labelTooltip labelid="162" />
+	</blueButton>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/calendar/dateSelector.lzx b/WebContent/src/base/components/calendar/dateSelector.lzx
new file mode 100644
index 0000000..209ca6f
--- /dev/null
+++ b/WebContent/src/base/components/calendar/dateSelector.lzx
@@ -0,0 +1,504 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDateSelectorComponent" extends="view">
+
+	<attribute name="daynumbers" value="[0,1,2,3,4,5,6]" />
+
+	<attribute name="showingdate" type="string" value="" />
+	
+	<attribute name="dayclass" when="once" />
+
+	<attribute name="weekclass" when="once" />
+	<attribute name="showcalenderweek" value="true" type="boolean" />
+	
+	<attribute name="monthclass" when="once" />
+	<attribute name="showcalendermonth" value="true" type="boolean" />	
+	
+</class>
+
+<class name="dateSelectorDay" extends="baseDateSelectorComponent" width="24" bgcolor="0xFFFFFF">
+
+	<attribute name="dayIndexNumber" value="-1" type="number" />
+	<attribute name="weekIndexNumber" value="-1" type="number" />
+
+	<handler name="onclick">
+		this.parent.parent.parent.parent.parent.parent.selectDate(this.daydate,this.dayIndexNumber,this.weekIndexNumber);
+	</handler>
+	
+	<handler name="ondblclick">
+		this.parent.parent.parent.parent.parent.parent.selectDoubleDate(this.daydate);
+	</handler>
+	
+	<attribute name="daydate" value="null" />
+	
+	<method name="init">
+		<![CDATA[
+        super.init();
+        if (parent.parent.parent.parent.month!=daydate.getMonth())
+        	this._date.setAttribute('text','<FONT COLOR="#CCCCCC">'+daydate.getDate()+'</FONT>');
+        else 
+        	this._date.setAttribute('text',daydate.getDate());
+        ]]>
+	</method>
+	
+	<text name="_date" fontsize="10" align="center" resize="true" />
+
+</class>
+
+<class name="dateSelectorDayHeader" extends="baseDateSelectorComponent" width="24" bgcolor="0xF9F9F9" >
+
+	<attribute name="daynumber" value="0" type="number" />
+	
+	<method name="init">
+		<![CDATA[
+	        super.init();
+	        var dateRoot = parent.parent.parent.parent;
+	        //if ($debug) Debug.write("daynumber",this,dateRoot);
+	        this._date.setAttribute('text',canvas.getLabelName(dateRoot.dayNamesLabelIds[( (daynumber>6) ? (daynumber-7) : daynumber )]));
+	        this._date._tip.setAttribute('labelid',dateRoot.dayLabelNamesLabelIds[( (daynumber>6) ? (daynumber-7) : daynumber )]); 
+        ]]>
+	</method>
+	
+	<text fgcolor="0x000000" name="_date" fontsize="10" align="center" resize="true"
+		  onmouseover="" onmouseout="">
+		<labelTooltip name="_tip" />
+	</text>
+
+</class>
+
+<class name="dateSelectorWeekNumber" extends="view" width="24" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+
+	<attribute name="weeknumber" value="0" type="number" />	
+	<text name="_date" fgcolor="white" fontsize="10" text="$once{ parent.weeknumber }" 
+		  align="center" resize="true" />
+
+</class>
+
+<class name="dateSelectorWeekNumberHeader" extends="view" width="24" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+
+	<attribute name="labelWeekHeader" value="" type="string" />	
+	<text name="_date" fgcolor="white" fontsize="10" text="$once{ parent.labelWeekHeader }" 
+		  align="center" resize="true" 
+		  onmouseover="" onmouseout="">
+		<labelTooltip name="_tip" labelid="468" />
+	</text>
+
+</class>
+
+<class name="dateSelectorWeek" extends="baseDateSelectorComponent" 
+		bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+
+	<attribute name="weekIndexNumber" value="-1" type="number" />
+
+	<attribute name="firstweekddaydate" value="null" />
+	
+	<method name="init">
+        <![CDATA[ 
+        super.init();
+        for( var i = 0 ; i < 7 ; i++ )  {
+        	new dayclass(this.content,{
+        						daydate:new Date(firstweekddaydate.getTime()+(86400000*i)),
+        						weekIndexNumber:this.weekIndexNumber,
+        						dayIndexNumber:i
+        					});
+       	}  
+		]]>
+	</method>
+	
+	<view name="content" layout="axis:x;spacing:1" />
+	
+</class>
+
+
+<class name="dateSelectorMonth" extends="baseDateSelectorComponent" 
+		bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="137" width="176">
+            
+	<attribute name="month" value="0" type="number" />
+	<attribute name="firstweekNumber" value="0" type="number" />
+	<attribute name="currentMonthName" value="" type="string" />
+
+	<method name="init">
+        <![CDATA[ 
+        super.init();
+        var dateRoot = parent.parent;
+        //if ($debug) Debug.write("dateRoot: ",dateRoot);
+        this.setAttribute('currentMonthName',dateRoot.monthnames[month]); 
+        for( var i = 0 ; i < 6 ; i++ ) new lz.dateSelectorWeek(this.content,{firstweekddaydate:new Date(this.showingdate.getTime()+(604800000*i)),dayclass:dayclass,month:month,weekIndexNumber:i});  
+        for( var i = 0 ; i < 7 ; i++ ) new lz.dateSelectorDayHeader(this.weekheader,{daynumber:(this.showingdate.getDay()+i)});  
+		]]>
+	</method> 
+	<view name="header" layout="axis:x" height="18" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+		<text width="20" fgcolor="0x000000" height="18" 
+			onmouseover="this.setAttribute('bgcolor',0xFFFFFF)" onmouseout="this.setAttribute('bgcolor',canvas.getThemeColor('secondBorderColor'))">
+			<handler name="oninit"><![CDATA[
+				this.setAttribute('text','&#60;');]]>
+			</handler>
+			<handler name="onclick">
+				this.parent.parent.parent.parent.showPreviewsMonth();
+			</handler>
+		</text>
+		<text width="22" fgcolor="0x000000" height="18"
+			onmouseover="this.setAttribute('bgcolor',0xFFFFFF)" onmouseout="this.setAttribute('bgcolor',canvas.getThemeColor('secondBorderColor'))">
+			<handler name="oninit"><![CDATA[
+				this.setAttribute('text','&#60;&#60;');]]>
+			</handler>			
+			<handler name="onclick">
+				this.parent.parent.parent.parent.showPreviewsYear();
+			</handler>
+		</text>	
+		<view width="91" height="$once{ parent.height }" >
+			<text fontsize="10" fgcolor="0x000000" align="center" text="${ parent.parent.parent.currentMonthName+' '+parent.parent.parent.parent.parent.year }" resize="true" />
+		</view>
+		<text width="22" fgcolor="0x000000" text=">>" height="18"
+			onmouseover="this.setAttribute('bgcolor',0xFFFFFF)" onmouseout="this.setAttribute('bgcolor',canvas.getThemeColor('secondBorderColor'))">
+			<handler name="onclick">
+				this.parent.parent.parent.parent.showNextYear();
+			</handler>
+		</text>
+		<text width="20" fgcolor="0x000000" text="  >" height="18"
+			onmouseover="this.setAttribute('bgcolor',0xFFFFFF)" onmouseout="this.setAttribute('bgcolor',canvas.getThemeColor('secondBorderColor'))">
+			<handler name="onclick">
+				this.parent.parent.parent.parent.showNextMonth();
+			</handler>
+		</text>	
+	</view>
+	<view name="weekheader" layout="axis:x;spacing:1" x="1" y="18" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }"/>
+	<!-- 
+	<view name="weekNumber" layout="axis:y;spacing:1" x="1" y="35" />
+	 -->
+	<view name="content" layout="axis:y;spacing:1" x="1" y="35" />
+</class>
+
+<class name="baseDateSelector" extends="baseDateSelectorComponent" >
+	
+	<attribute name="dayNamesLabelIds" value="null" />
+	<attribute name="dayLabelNamesLabelIds" value="null" />
+	<attribute name="monthnames" value="['Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']"/> 
+
+
+	<attribute name="firstdayinweek" value="$once{ canvas.firstdayinweek }" type="number" />
+	<attribute name="year" value="" type="string" />
+	<attribute name="selecteddate" value="null" />
+	<attribute name="selected" value="null" />
+	
+	<event name="onselect" />
+	<event name="ondoubleselect" />
+	
+	<event name="onmonthSel" />
+	<event name="onyearSel" />
+	
+	<attribute name="dayIndexNumber" value="-1" type="number" />
+	<attribute name="weekIndexNumber" value="-1" type="number" />
+	
+	<handler name="oninit">
+		<![CDATA[
+			this.dayNamesLabelIds = [459,453,454,455,456,457,458];
+			this.dayLabelNamesLabelIds = [466,460,461,462,463,464,465];
+			this.monthnames = [canvas.getLabelName(469),canvas.getLabelName(470),
+								canvas.getLabelName(471),canvas.getLabelName(472),
+								canvas.getLabelName(473),canvas.getLabelName(474),
+								canvas.getLabelName(475),canvas.getLabelName(476),
+								canvas.getLabelName(477),canvas.getLabelName(478),
+								canvas.getLabelName(479),canvas.getLabelName(480)]
+			
+			this.init();
+		]]>
+	</handler>	
+	
+	<method name="loadDate" args="datObj">
+		this.showingdate = datObj;
+		this.init();
+		this.showDate(this.selecteddate);
+		//this.onselect.sendEvent(this.selecteddate);
+	</method>
+	
+	<method name="init">
+        <![CDATA[ 
+	        super.init();
+	        
+	        var tIsInit = false;
+	        if (this.showingdate==""){
+	        	tIsInit = true;
+	        	this.showingdate = new Date();
+	        }
+	        this.setAttribute('year',this.showingdate.getFullYear());
+	        this.selecteddate = this.showingdate;
+	        var firstdayDate = this.getDateFirstDayInMonth();
+	        if (this.content.content != null) {
+	        	this.content.content.destroy();
+	        }
+	        new lz.dateSelectorMonth(this.content,{name:'content',
+		        	firstweekNumber:this.getWeekNumber(firstdayDate.getTime()),
+		        	month:this.selecteddate.getMonth(),
+		        	showingdate:firstdayDate,
+		        	dayclass:dayclass,
+		        	weekclass:weekclass,
+		        	showcalenderweek:showcalenderweek,
+		        	showcalendermonth:showcalendermonth
+	        	});
+	        this.hiliteDate(this.showingdate);
+	        //this.onselect.sendEvent(this.selecteddate);
+	        var ref = this.checkToday();
+	        
+	        if ($debug) Debug.write("INIT ",ref,ref.daydate);
+	        
+	        if (ref != null && tIsInit) {
+		        this.selectDate(ref.daydate, ref.dayIndexNumber, ref.weekIndexNumber);
+	        }
+		]]>
+	</method>
+	
+	<method name="checkToday">
+		<![CDATA[
+		var tDate = new Date();
+        if (this.showingdate.getMonth()== tDate.getMonth() && this.showingdate.getFullYear() == tDate.getFullYear()){
+        	//Debug.write("+++++++ Found Today");
+        	var ref = this.getDateRefByDateNumber(tDate.getDate(),tDate.getMonth());
+        	if (ref == null) {
+        		if ($debug) Debug.warn("Could not find date ref",tDate);
+        	}
+        	ref.setAttribute('bgcolor',0xCECECE);
+        	return ref;
+        }
+        
+        return this.getDateRefByDateNumber(this.showingdate.getDate(),this.showingdate.getMonth())
+		]]>
+	</method>
+	
+	<method name="showDate" args="dateObj">
+		<![CDATA[
+		if(this.selected!=null) this.selected.setAttribute('bgcolor',"white");
+		var i=0;
+		while (i<this.content.content.content.subviews.length){
+			var k=0;
+			while (k<this.content.content.content.subviews[i].content.subviews.length){
+				var t = this.content.content.content.subviews[i].content.subviews[k].daydate;
+				if (t.getDate()==dateObj.getDate() && t.getMonth()==dateObj.getMonth()){
+					this.content.content.content.subviews[i].content.subviews[k].onclick.sendEvent(null);
+					return;
+				}
+				k++;
+			}
+			i++;
+		}
+		]]>
+	</method>
+	
+	<method name="selectDate" args="dateObj,dayIndex,weekIndex">
+		dayIndexNumber = dayIndex;
+		weekIndexNumber = weekIndex;
+		this.showingdate = dateObj;
+		this.selecteddate = dateObj;
+		this.hiliteDate(this.showingdate);
+		this.checkToday();
+		this.onselect.sendEvent(this.selecteddate);
+	</method>
+	
+	<method name="selectDoubleDate" args="dateObj">
+		this.showingdate = dateObj;
+		this.selecteddate = dateObj;
+		this.hiliteDate(this.showingdate);
+		this.checkToday();
+		this.ondoubleselect.sendEvent(this.selecteddate);
+	</method>
+	
+	<method name="hiliteDate" args="dateObj">
+		<![CDATA[
+		if(this.selected!=null) this.selected.setAttribute('bgcolor',"white");
+		var i=0;
+		while (i<this.content.content.content.subviews.length){
+			var k=0;
+			while (k<this.content.content.content.subviews[i].content.subviews.length){
+				var t = this.content.content.content.subviews[i].content.subviews[k].daydate;
+				if (t.getDate()==dateObj.getDate() && t.getMonth()==dateObj.getMonth()){
+					this.selected = this.content.content.content.subviews[i].content.subviews[k];
+					this.selected.setAttribute('bgcolor',0xCCD7E1);
+					return;
+				}
+				k++;
+			}
+			i++;
+		}
+		]]>
+	</method>
+	
+	<!-- 
+		Here the Date has to be changed sothat the firstday in week is the first day in month
+	 -->
+	<method name="getDateFirstDayInMonth">
+		<![CDATA[
+		//First calc the date by the given first day in week
+		var newDateTemp = new Date(this.showingdate.getFullYear(), this.showingdate.getMonth(), 1, 12); //set hours to 12 to prevent timezone issues
+		////Debug.write(newDateTemp);
+		var factor = 0;
+		if (newDateTemp.getDay()>this.firstdayinweek)	
+			factor = -((newDateTemp.getDay()-this.firstdayinweek));
+		else if (newDateTemp.getDay()<this.firstdayinweek)
+			factor = (this.firstdayinweek-newDateTemp.getDay());
+		////Debug.write("factor: ",factor);
+		
+		//calc first day
+		var newDate = new Date( (newDateTemp.getTime()+(86400000*factor)) );
+
+		//if the first day is after the first day of the selected month then we have to add 7 Days
+		if (newDate.getDate()>1 && newDate.getMonth()==newDateTemp.getMonth()){
+			newDate = new Date( (newDate.getTime()-(86400000*7)) );
+		}
+		if ($debug) Debug.write("getDateFirstDayInMonth ",newDate);
+		return newDate;
+		]]>
+	</method>
+	
+	<method name="isoWeekDays" args="yday,wday" >
+		<![CDATA[
+		return yday - ((yday - wday + 382) % 7) + 3;
+		]]>
+	</method>
+	
+	<method name="isLeapYear" args="year" >
+		<![CDATA[
+		if (((year % 4) == 0 && (year % 100)!=0) || (year % 400)==0)
+			return 1;
+		else
+			return 0;
+		]]>
+	</method>
+	
+	<method name="getDaysInMonth" args="iYear,iMonth" >
+		<![CDATA[
+			return 32 - new Date(iYear, iMonth, 32).getDate();
+		]]>
+	</method>
+	
+	<method name="getWeekNumber" args="DateInMilliseconds" >
+		<![CDATA[
+		var d = new Date(DateInMilliseconds);
+		if ($debug) Debug.write("getWeekNumber: ",d);
+		var NumerOfDaysIn = d.getDate();
+		
+		for (var i=0;i<d.getMonth();i++) {
+			var monthDays = this.getDaysInMonth(d.getFullYear(),d.getMonth());
+			NumerOfDaysIn+=monthDays;
+		}
+		if ($debug) Debug.write("NumerOfDaysIn,month: ",NumerOfDaysIn,d.getMonth());
+		
+		var days = this.isoWeekDays(NumerOfDaysIn,d.getDay());
+		if ($debug) Debug.write("days: ",days);
+		
+		if (days < 0) {
+			NumerOfDaysIn += 365 + isLeapYear(--NumerOfDaysIn);
+			days = this.isoWeekDays(NumerOfDaysIn, d.getDay());
+		} else {
+			NumerOfDaysIn -= 365 + isLeapYear(NumerOfDaysIn);
+			var d2 = this.isoWeekDays(NumerOfDaysIn,d.getDay());
+			if (0 <= d2) {
+				days = d2;
+			}
+		}
+
+		if ($debug) Debug.write("days: ",days);
+		
+		return (Math.floor((days / 7)));
+		]]>
+	</method>
+	
+	<method name="clearContent">
+		this.content.destroy();
+		new LzView(this,{name:'content'});
+	</method>
+	
+	<method name="showPreviewsMonth">
+		<![CDATA[
+		this.clearContent();
+		var preyear = this.showingdate.getFullYear();
+		var previewsMonth = this.showingdate.getMonth()-1;
+		if (previewsMonth<0) {
+			previewsMonth=11;
+			preyear--;
+		}
+		this.showingdate = new Date(preyear, previewsMonth, this.showingdate.getDate());
+		this.onmonthSel.sendEvent(previewsMonth);
+		this.init();
+		]]>
+	</method>
+	
+	<method name="showNextMonth">
+		<![CDATA[
+		this.clearContent();
+		var nextyear = this.showingdate.getFullYear();
+		var nextMonth = this.showingdate.getMonth()+1;
+		if (nextMonth>11) {
+			nextMonth=0;
+			nextyear++;
+		}		
+		this.showingdate = new Date(nextyear, nextMonth, this.showingdate.getDate());
+		this.onmonthSel.sendEvent(nextMonth);
+		this.init();
+		]]>
+	</method>
+	
+	<method name="showPreviewsYear">
+		this.clearContent();
+		this.showingdate = new Date(this.showingdate.getFullYear()-1, this.showingdate.getMonth(), this.showingdate.getDate());
+		this.onyearSel.sendEvent(this.showingdate.getFullYear());
+		this.init();
+	</method>
+	
+	<method name="showNextYear">
+		this.clearContent();
+		this.showingdate = new Date(this.showingdate.getFullYear()+1, this.showingdate.getMonth(), this.showingdate.getDate());
+		this.onyearSel.sendEvent(this.showingdate.getFullYear());
+		this.init();
+	</method>
+	
+	<method name="getDateRefByDateNumber" args="dayNumber,month">
+		<![CDATA[
+		////Debug.write(this.content.content.content);
+		for (var i=0;i<this.content.content.content.subviews.length;i++){
+			////Debug.write("this.content.content.content.subviews: ",i,this.content.content.content.subviews[i]);
+			for (var k=0;k<this.content.content.content.subviews[i].content.subviews.length;k++){
+				////Debug.write("this.content.content.content.subviews[i].content.subviews[k].daydate.getDate(): ",this.content.content.content.subviews[i].content.subviews[k].daydate.getDate(),dayNumber);
+				////Debug.write("this.content.content.content.subviews[i].content.subviews[k].daydate.getMonth(): ",this.content.content.content.subviews[i].content.subviews[k].daydate.getMonth(),month);
+				if(this.content.content.content.subviews[i].content.subviews[k].daydate.getDate()==dayNumber && this.content.content.content.subviews[i].content.subviews[k].daydate.getMonth()==month){
+					return this.content.content.content.subviews[i].content.subviews[k];
+				}
+				////Debug.write("k: ",k,this.content.content.content.subviews[i].content.subviews[k]);
+				////Debug.write(this.content.content.content.subviews[i].content.subviews[k].daydate);
+			}
+		}
+		return null;
+		]]>
+	</method>
+	
+	<view name="content">
+		<view name="content" />
+	</view>
+
+</class>
+
+<class name="dateSelector" extends="baseDateSelector"
+	weekclass="lz.dateSelectorWeek" dayclass="lz.dateSelectorDay" monthclass="lz.dateSelectorMonth" >
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/calendar/library.lzx b/WebContent/src/base/components/calendar/library.lzx
new file mode 100644
index 0000000..31e0d0e
--- /dev/null
+++ b/WebContent/src/base/components/calendar/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="dateSelector.lzx" />
+	<include href="dateField.lzx" />
+	<include href="calendarWindow.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/conferencebox/conferenceBox.lzx b/WebContent/src/base/components/conferencebox/conferenceBox.lzx
new file mode 100644
index 0000000..8b0ec40
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/conferenceBox.lzx
@@ -0,0 +1,98 @@
+<?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.
+  
+-->
+<library>     
+
+<class name="conferenceBox" extends="view" width="250" height="400" >
+    
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('headerText',canvas.getLabelName(this.labelid));
+    </method>
+    
+    <attribute name="headerText" value="Users" type="string" />
+    
+    <attribute name="closeable" value="false" type="boolean" />
+    <attribute name="isopen" value="true" type="boolean" />
+    
+    <attribute name="textInset" value="10" type="number" />
+    
+    <attribute name="initHeight" value="0" type="number"/>
+    
+    <attribute name="closedHeight" value="40" type="number"/>
+    
+    <handler name="oninit">
+        if (this.initHeight == 0) {
+            this.initHeight = this.height;
+        }
+    </handler>
+    
+    <method name="doOpen">
+        if (!this.isopen) {
+            this.toggleopen();
+        }
+    </method>
+    
+    <method name="toggleopen">
+        if (this.isopen) {
+            this.setAttribute("isopen",false);
+            this.setAttribute("height",this.closedHeight);
+            this.content.setAttribute("visibility","hidden");
+        } else {
+            this.setAttribute("isopen",true);
+            this.setAttribute("height",this.initHeight);
+            //if ($debug) Debug.write("toggleopen TRUE ",this.initHeight)
+            this.content.setAttribute("visibility","visible");
+        }
+    </method>
+    
+    <view name="_head" x="0" y="0" width="${ parent.width }" height="24" 
+    	  clickable="$once{ this.parent.closeable }" >
+        
+        <handler name="onclick">
+        	if (this.parent.closeable) {
+        		this.parent.toggleopen();
+        	}
+        </handler>
+        
+        <view x="8" y="4" visible="${ this.parent.parent.closeable }">
+            
+	        <view visible="${ !this.parent.parent.parent.isopen }" x="2" y="3" resource="conferenceBox_button_min_rsc">
+	            <handler name="onmouseup">
+	                this.parent.parent.parent.toggleopen();
+	            </handler>                                  
+	        </view>
+	        <view visible="${ this.parent.parent.parent.isopen }" x="2" y="3" resource="conferenceBox_button_max_rsc">
+	            <handler name="onmouseup">
+	                this.parent.parent.parent.toggleopen();
+	            </handler>                                  
+	        </view>
+            
+        </view>
+
+        <text x="$once{ parent.parent.textInset }" fontstyle="bold" fontsize="14" fgcolor="0xFFFFFF" 
+              text="${ parent.parent.headerText }" valign="middle"></text>
+        
+    </view>  
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/conferencebox/library.lzx b/WebContent/src/base/components/conferencebox/library.lzx
new file mode 100644
index 0000000..c00e280
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/library.lzx
@@ -0,0 +1,32 @@
+<?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.
+  
+-->
+<library>
+    
+    <resource name="conferenceBox_button_min_rsc" src="resources/box_closed.png" />
+    
+    <resource name="conferenceBox_button_max_rsc" src="resources/box_open.png" />
+    
+    <resource name="kaleidoscope_textbox_milk" 
+          src="resources/milk.swf" />
+
+    <include href="conferenceBox.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/conferencebox/resources/box_closed.fla b/WebContent/src/base/components/conferencebox/resources/box_closed.fla
new file mode 100644
index 0000000..66e7459
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/resources/box_closed.fla
Binary files differ
diff --git a/WebContent/src/base/components/conferencebox/resources/box_closed.png b/WebContent/src/base/components/conferencebox/resources/box_closed.png
new file mode 100644
index 0000000..49f20a3
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/resources/box_closed.png
Binary files differ
diff --git a/WebContent/src/base/components/conferencebox/resources/box_open.fla b/WebContent/src/base/components/conferencebox/resources/box_open.fla
new file mode 100644
index 0000000..9ea85a7
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/resources/box_open.fla
Binary files differ
diff --git a/WebContent/src/base/components/conferencebox/resources/box_open.png b/WebContent/src/base/components/conferencebox/resources/box_open.png
new file mode 100644
index 0000000..b5873a8
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/resources/box_open.png
Binary files differ
diff --git a/WebContent/src/base/components/conferencebox/resources/milk.swf b/WebContent/src/base/components/conferencebox/resources/milk.swf
new file mode 100644
index 0000000..e52a1f8
--- /dev/null
+++ b/WebContent/src/base/components/conferencebox/resources/milk.swf
Binary files differ
diff --git a/WebContent/src/base/components/explorer/explorerBox.lzx b/WebContent/src/base/components/explorer/explorerBox.lzx
new file mode 100644
index 0000000..3d2e8d4
--- /dev/null
+++ b/WebContent/src/base/components/explorer/explorerBox.lzx
@@ -0,0 +1,406 @@
+<?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.
+  
+-->
+<library>
+
+<class name="explorerBox" extends="view" width="250" y="100" visibility="hidden"
+    height="400" bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" 
+	onmousedown="this._startDragState(this)" onmouseup="this._removeDragState(this)" >
+
+	<attribute name="showWindowEffect" value="false" type="boolean" />
+	
+	<attribute name="annimationStartStyle" value="center" type="string" />
+	
+	<attribute name="annimationColor" value="$once{ canvas.getThemeColor('basebgcolorizer') }" type="string" />
+
+	<event name="animationInited" />
+
+    <handler name="oninit">
+    	<![CDATA[
+	    	//if($debug) Debug.write("explorerBox/oninit showWindowEffect? ",canvas.showWindowEffect);
+	    	if (canvas.showWindowEffect=="y" || this.showWindowEffect){
+	    		//if($debug) Debug.write("explorerBox/showWindowEffect == YES");
+	    		if (this.annimationStartStyle == "center") {
+	    			new lz.boxInitEffect(parent,{
+		    					x:this.x+(this.width/2)-50,
+		    					y:this.y+(this.height/2)-10,
+		    					zielx:this.x,
+		    					ziely:this.y,
+		    					bgcolor:annimationColor,
+		    					zielwidth:this.width,
+		    					zielheight:this.height,
+		    					objRef:this
+	    					});
+	    		} else if (this.annimationStartStyle == "mouse"){
+	    			new lz.boxInitEffect(parent,{
+		    					x:parent.getMouse("x"),
+		    					y:parent.getMouse("y"),
+		    					width:2,
+		    					height:2,
+		    					zielx:this.x,
+		    					ziely:this.y,
+		    					bgcolor:annimationColor,
+		    					zielwidth:this.width,
+		    					zielheight:this.height,
+		    					objRef:this
+	    					});
+				} else {
+					if ($debug) Debug.warn("Unkown annimationStartStyle");
+				}
+	    	} else {
+	    		this.sendAnniComplete();
+	    	}
+    	]]>
+    </handler>
+    
+    <method name="sendAnniComplete">
+    	//if($debug) Debug.write("sendAnniComplete");
+    	this.setAttribute('visibility','visible');
+    	this.animationInited.sendEvent(null);
+    	this.setShadow(); 	
+    </method>
+
+    <method name="setShadow" args="bool">
+        this.hasshadow = bool;
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+            //Debug.write(this.normalMC);
+            ////Debug.write("this.normalMC: ",this.normalMC);
+            ////Debug.write("this: ",this);
+           	this.displacementMap = new flash.filters.DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>	
+          
+	<!--- The Title of this Box -->
+	<attribute name="title" value="defaulttitle" type="string" />
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+    
+    <!--- if this Box should be resizeable  -->
+    <attribute name="resizeable" value="false" type="boolean" />
+	
+	<!--- Can this Box be docked to others and 
+			the width/height of parent compoent barrier -->
+	<attribute name="docking" value="false" type="boolean" />
+	
+	<!--- Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there -->
+	<attribute name="dockingbarrier" value="15" type="number" />
+	
+	<!--- the Event will be thrown if you close the Box -->
+	<event name="onclose" />
+	
+	<!---@keywords private the list of connected views -->
+	<attribute name="dockinglist" value="null" />
+	
+	<!--- @keywords private temp-older of x-distance to docked-Box  -->
+	<attribute name="tempXdistance" value="0" type="number" />
+
+	<!--- @keywords private temp-older of y-distance to docked-Box  -->
+	<attribute name="tempYdistance" value="0" type="number" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />	
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+	
+	<!-- do not allow draging of window -->
+	<attribute name="allowDragging" value="true" type="boolean" />
+	
+	<!--- @keywords private store initial height so toggleopen can reset height  -->
+	<handler name="oninit">
+		this.initheight=this.height;
+		////Debug.write("this.isopen: ",this.isopen);
+		if (!this.open) toggleopen();
+	</handler>
+	
+	<method name="close">
+		if (this.onclose) this.onclose.sendEvent();
+		this.doDestroy();
+	</method>
+	
+	<method name="toggleopen">
+		////Debug.write("this.isopen",this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					////Debug.write("open new y",this.y+this.initheight);
+					this.dockinglist[eg].toggleOpenByParent(this.initheight-22);
+					this.dockinglist[eg].setAttribute('y',this.y+this.initheight);
+					
+				}
+			}			
+			this.setAttribute('height',this.initheight);
+		} else {
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					this.dockinglist[eg].toggleOpenByParent(-(this.initheight-22));
+					this.dockinglist[eg].setAttribute('y',this.y+22);
+				}
+			}	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+	<method name="toggleOpenByParent" args="changeY">
+		////Debug.write("+++++ toggleOpenByParent +++++ changeY: ",this.title,changeY);
+		var tempList=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+				////Debug.write("found some: ",this.parent.subviews[eg].title);
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+					
+				if (proof) tempList.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("tempList.length: ",tempList.length);
+		if (tempList.length!=0){
+			for (var eg in tempList){
+				if(tempList[eg].docking){
+					////Debug.write("toggleOpenByParent 1 [eg],changeY: ",tempList[eg].title,changeY);
+					tempList[eg].toggleOpenByParent(changeY);
+					tempList[eg].setAttribute('y',tempList[eg].y+changeY);
+				}
+			}	
+		}
+		
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="_removeDragState" args="obj">
+	    if (!this.allowDragging) {
+	       return;
+	    }
+		//It's important to remove the dragger and do docking stuff before you check for connected Boxes
+		dragger.remove();
+		if (obj==this){
+			if (docking) arrangePosition();
+		} else {
+			if (docking) _lookforParentOnly(obj);
+		}
+			
+		//check for connected Boxes
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._removeDragState(this);
+			}
+		}
+
+	</method>
+
+	
+	<!--- @keywords private
+		the arg obj is needed because the dragging can be called by the Box itself
+		or by a Box which is connected to this Box!  -->
+	<method name="_startDragState" args="obj">
+		this.bringToFront();
+		if (!this.allowDragging) {
+           return;
+        }
+		_calcdockingList();
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._startDragState(this);
+			}
+		}
+		//store position cause it wasn't dragged by itself
+		if (obj!=this){
+			storeAdjustmentToParent(obj.x,obj.y);
+		}
+		dragger.apply();
+	</method>
+	
+	<!--- Calc the List of Boxes which will be dragged and setposition if this Box
+		will be dragged,docked or minimized/maximized  -->
+	<method name="_calcdockingList">
+		//Clear list of conencted Boxes
+		this.dockinglist=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg]["docking"] && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+
+				if (proof) this.dockinglist.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("this.dockinglist.length:",this.dockinglist.length);
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="arrangePosition">
+		//do the magic
+		//the idea is: look for all on the view container one level above this one
+		//and look for the width/height and 0/0 and look for "dockable" stuff there
+		var newx=this.x;
+		var newy=this.y;
+	  
+		<![CDATA[
+				
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg]["docking"] && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				//left box-border
+				if ( ( ((this.x+this.width)-this.parent.subviews[eg].x) < this.dockingbarrier ) && ( ((this.x+this.width)-this.parent.subviews[eg].x) > -this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x - this.width );
+				}
+				//right box-border
+				if ( ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)<this.dockingbarrier ) && ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)>-this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x + this.parent.subviews[eg].width );
+				}
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < this.dockingbarrier ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y-this.height;
+				}
+				//bottom box-border
+				if ( ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) < this.dockingbarrier ) && ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y+this.parent.subviews[eg].height;
+				}
+			}
+		}
+		
+		//Check for Borders
+		//should be done _after_ checking for other dockable stuff so it gets 
+		//priority to dock against the border of parent view
+		if (this.x<this.dockingbarrier){
+			newx=0;
+		}
+		if (this.y<this.dockingbarrier){
+			newy=0;
+		}
+		if ( (this.parent.width-(this.x+this.width))<this.dockingbarrier){
+			newx=this.parent.width-this.width;
+		}
+		if ( (this.parent.height-(this.y+this.height))<this.dockingbarrier){
+			newy=this.parent.height-this.height;
+		}
+		
+		//set position
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<method name="storeAdjustmentToParent" args="objX,objY">
+		this.tempXdistance=objX-this.x;
+		this.tempYdistance=objY-this.y;
+	</method>
+	
+	<!--- @keywords private 
+		this method is needed because if the dragging end and
+		it was not dragged _itself_ it was draged just because a connected
+		dockable Box was dragged than it could be that the connected
+		Box was forced to dock against something different onmouseup
+		so you have to rearrange the old "adjustment"	-->
+	<method name="_lookforParentOnly" args="obj">
+		<![CDATA[		
+		var newx=obj.x-tempXdistance;
+		var newy=obj.y-tempYdistance;
+		
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<dragstate name="dragger" />
+    
+    <animator attribute="y" to="20" duration="1000" started="false" />
+        
+    <animator name="doOut" attribute="y" to="-500" duration="1000" started="false" onstop="parent.doDestroy()" />    
+    
+    <method name="doDestroy">
+        this.destroy();
+    </method>
+	
+	<view width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" 
+		  x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
+	<view x="1" y="1" width="${ this.parent.width-2 }" height="20" >
+	
+		<gradientview x="0" width="${ this.parent.width }" height="20"
+				colorFrom="$once{ canvas.getThemeColor('baseMousecolorizer') }"
+				colorTo="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" >
+		</gradientview>
+		
+        <text fontsize="10" height="17" x="6" y="1" text="${ this.parent.parent.title }" 
+			fgcolor="0xFFFFFF" resize="true" fontstyle="bold" />
+			
+		<view visible="${ this.parent.parent.closable }" x="${ this.parent.parent.width-20 }" 
+			y="2" resource="btn_presenter_close"
+                onmouseover="this.setAttribute('frame',2)"
+                onmouseout="this.setAttribute('frame',1)"
+                onmousedown="this.setAttribute('frame',3)"
+                onmouseup="this.setAttribute('frame',1)" >
+			<handler name="onclick">
+				this.parent.parent.close();
+			</handler>									
+		</view>
+	</view>
+    <handler name="onaddsubview" args="v">
+		////Debug.write("onaddsubview",v);
+		if (v.parent.subviews.length>2) this._resizeview.bringToFront();
+    </handler>
+    <view visible="${ this.parent.resizeable }" name="_resizeview" 
+    	  x="${ this.parent.width - 17 }" y="${ this.parent.height - 17 }" 
+        resource="explorer_resize_rsc" cursor="explorer_resizemouse_rsc" 
+        onmousedown="this.parent.rs.apply()"
+        onmouseup="this.parent.rs.remove()" >
+    	<handler name="oninit">
+    		//if ($debug) Debug.write("setTint");
+    		//TODO: Fix this, does not work at the moment
+    		//http://code.google.com/p/openmeetings/issues/detail?id=470
+    		this.setColor(canvas.getThemeColor('baseMousecolorizer'));
+    	</handler>  	
+    </view>
+    <resizestate name="rs"/>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/explorer/labelexplorerBox.lzx b/WebContent/src/base/components/explorer/labelexplorerBox.lzx
new file mode 100644
index 0000000..66a170c
--- /dev/null
+++ b/WebContent/src/base/components/explorer/labelexplorerBox.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelExplorerBox" extends="explorerBox" >
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/explorer/library.lzx b/WebContent/src/base/components/explorer/library.lzx
new file mode 100644
index 0000000..d53d994
--- /dev/null
+++ b/WebContent/src/base/components/explorer/library.lzx
@@ -0,0 +1,31 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="incubator/gradientview.lzx" /> 
+
+	<include href="resources/" />
+	
+	<include href="explorerBox.lzx" />
+	<include href="labelexplorerBox.lzx" />
+
+    
+</library>
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_maximize_dn.png b/WebContent/src/base/components/explorer/resources/explorbar_maximize_dn.png
new file mode 100644
index 0000000..e5ae343
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_maximize_dn.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_maximize_mo.png b/WebContent/src/base/components/explorer/resources/explorbar_maximize_mo.png
new file mode 100644
index 0000000..093a0b0
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_maximize_mo.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_maximize_no.png b/WebContent/src/base/components/explorer/resources/explorbar_maximize_no.png
new file mode 100644
index 0000000..fca6ec8
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_maximize_no.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_minimize_dn.png b/WebContent/src/base/components/explorer/resources/explorbar_minimize_dn.png
new file mode 100644
index 0000000..e05de83
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_minimize_dn.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_minimize_mo.png b/WebContent/src/base/components/explorer/resources/explorbar_minimize_mo.png
new file mode 100644
index 0000000..faba70d
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_minimize_mo.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorbar_minimize_no.png b/WebContent/src/base/components/explorer/resources/explorbar_minimize_no.png
new file mode 100644
index 0000000..b4dafa3
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorbar_minimize_no.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/explorerbar.png b/WebContent/src/base/components/explorer/resources/explorerbar.png
new file mode 100644
index 0000000..4cb2d59
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/explorerbar.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/feather-1.png b/WebContent/src/base/components/explorer/resources/feather-1.png
new file mode 100644
index 0000000..d8f5175
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/feather-1.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/feather-16x16.png b/WebContent/src/base/components/explorer/resources/feather-16x16.png
new file mode 100644
index 0000000..0db0d36
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/feather-16x16.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/library.lzx b/WebContent/src/base/components/explorer/resources/library.lzx
new file mode 100644
index 0000000..8d3051d
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/library.lzx
@@ -0,0 +1,46 @@
+<?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.
+  
+-->
+<library>
+
+<resource src="explorerbar.png" name="explorer_thumb_rsc" />
+
+<resource name="explorer_thumb_rsc" src="feather-16x16.png"/>
+
+
+<resource name="explorer_button_min_rsc" >
+	<frame src="explorbar_minimize_no.png" />
+	<frame src="explorbar_minimize_mo.png" />
+	<frame src="explorbar_minimize_dn.png" />
+</resource>
+
+<resource name="explorer_button_max_rsc" >
+	<frame src="explorbar_maximize_no.png" />
+	<frame src="explorbar_maximize_mo.png" />
+	<frame src="explorbar_maximize_dn.png" />
+</resource>
+
+<resource name="explorer_resize_rsc" src="resizer.swf" />
+
+<resource name="explorer_resizemouse_rsc" src="resizemouse.png" />
+
+
+
+</library>
diff --git a/WebContent/src/base/components/explorer/resources/resizemouse.png b/WebContent/src/base/components/explorer/resources/resizemouse.png
new file mode 100644
index 0000000..be3164f
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/resizemouse.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/resizer.fla b/WebContent/src/base/components/explorer/resources/resizer.fla
new file mode 100644
index 0000000..07de957
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/resizer.fla
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/resizer.png b/WebContent/src/base/components/explorer/resources/resizer.png
new file mode 100644
index 0000000..2c951fe
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/resizer.png
Binary files differ
diff --git a/WebContent/src/base/components/explorer/resources/resizer.swf b/WebContent/src/base/components/explorer/resources/resizer.swf
new file mode 100644
index 0000000..2e5d0da
--- /dev/null
+++ b/WebContent/src/base/components/explorer/resources/resizer.swf
Binary files differ
diff --git a/WebContent/src/base/components/iconView.lzx b/WebContent/src/base/components/iconView.lzx
new file mode 100644
index 0000000..494c5f8
--- /dev/null
+++ b/WebContent/src/base/components/iconView.lzx
@@ -0,0 +1,43 @@
+<?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.
+  
+-->
+<library>
+
+<class name="iconView" extends="view">
+    <attribute name="enabled" value="true" type="boolean" />
+    <handler name="onenabled" args="ena">
+        //Debug.write("onenabled: ",ena);
+        ( this.enabled ) ? this.setAttribute('frame',1) : this.setAttribute('frame',4);
+    </handler>
+    <handler name="onmouseover">
+        if (this.enabled) this.setAttribute('frame',2);
+    </handler>
+    <handler name="onmouseout">
+        if (this.enabled) this.setAttribute('frame',1);
+    </handler>
+    <handler name="onmousedown">
+        if (this.enabled) this.setAttribute('frame',3);
+    </handler>
+    <handler name="onmouseup">
+        if (this.enabled) this.setAttribute('frame',1);
+    </handler>            
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/labelRadioButton.lzx b/WebContent/src/base/components/labelRadioButton.lzx
new file mode 100644
index 0000000..e11d718
--- /dev/null
+++ b/WebContent/src/base/components/labelRadioButton.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelRadioButton" extends="radiobutton" style="componentStyle">
+
+	<attribute name="labelid" value="0" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/labeltabelement.lzx b/WebContent/src/base/components/labeltabelement.lzx
new file mode 100644
index 0000000..bab29ad
--- /dev/null
+++ b/WebContent/src/base/components/labeltabelement.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labeltabelement" extends="tabelement" style="componentStyle">
+
+	<attribute name="labelid" value="0" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/library.lzx b/WebContent/src/base/components/library.lzx
new file mode 100644
index 0000000..a4d80cf
--- /dev/null
+++ b/WebContent/src/base/components/library.lzx
@@ -0,0 +1,50 @@
+<?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.
+  
+-->
+<library>
+
+	
+	<include href="miniIcons.lzx" />
+    <include href="iconView.lzx" />
+    <include href="miniIconsNew.lzx" />
+    <include href="resetCombobox.lzx" />
+    <include href="updatecheckbox.lzx" />
+    <include href="tableCombobox.lzx" />
+    <include href="tableListItem.lzx" />
+    <include href="labelRadioButton.lzx" />
+    <include href="labeltabelement.lzx" />
+    
+    <include href="scrollbars/" />
+    <include href="text/" />
+    <include href="omcharts/" />
+    <include href="button/" />
+    <include href="explorer/" />    
+    <include href="panel/" />  
+    <include href="turnoverlist/" />
+    <include href="turnoverlistpaged/" />
+    <include href="calendar/" />
+    <include href="simplevaluelist/" />
+    <include href="upload/" /> 
+    <include href="validbox/" />
+    <include href="presenter/" />
+    <include href="lps/" />
+    <include href="conferencebox/" />
+
+</library>
diff --git a/WebContent/src/base/components/lps/basePropertySelector.lzx b/WebContent/src/base/components/lps/basePropertySelector.lzx
new file mode 100644
index 0000000..2d9a099
--- /dev/null
+++ b/WebContent/src/base/components/lps/basePropertySelector.lzx
@@ -0,0 +1,48 @@
+<!--
+  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.
+  
+-->
+<library>
+	
+<class name="hidePropertyView" extends="view"
+	   width="$once{ parent.width }" height="$once{ parent.height }"
+	   opacity="0.7" bgcolor="0xFFFFFF" />
+
+<class name="basePropertySelector" extends="view">
+	
+	<!--- position of the SliderWin or ColorPicker -->
+	<attribute name="boxPosition" value="down" type="string" />
+	
+	<attribute name="isEnabled" value="true" type="boolean" />
+	<attribute name="enabledView" value="null" />
+	
+	<method name="setEnabled" args="b">
+		this.setAttribute('isEnabled',b);
+		if (this.enabledView != null) {
+			this.enabledView.destroy();
+			this.enabledView = null;
+		}
+		if (!b) {
+			this.enabledView = new lz.hidePropertyView(this);
+		} 
+	</method>
+    
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/lps/changeWidthLetterSlider.lzx b/WebContent/src/base/components/lps/changeWidthLetterSlider.lzx
new file mode 100644
index 0000000..646de89
--- /dev/null
+++ b/WebContent/src/base/components/lps/changeWidthLetterSlider.lzx
@@ -0,0 +1,146 @@
+<!--
+  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.
+  
+-->
+<library>  
+
+<class name="changeWidthLetterSlider" extends="basePropertySelector" bgcolor="white" width="60" height="24">
+
+    <attribute name="numberAlign" value="right" type="string"/>
+    <attribute name="minimum" type="number" value="4" />
+    <attribute name="maximum" type="number" value="100" />
+    <attribute name="step" value="1" type="number"/>
+    <attribute name="initialNumberInit" value="1" type="number"/>
+    <attribute name="initialNumber" value="12" type="number"/>
+    
+    <event name="onplus" />
+    <event name="onminus" />
+    
+    <handler name="oninit">
+        this.initialNumberInit=initialNumber;
+    </handler>
+    
+    <method name="setSliderValue" args="v">
+    	this.initialNumber = v;
+    	this.numericValue.setAttribute('text',this.initialNumber);
+    	this.setEnabled(true);
+    </method>
+    
+    <method name="getValue">
+        return this.initialNumber;
+    </method>
+
+
+    <edittext name="numericValue" width="34" height="24" text="$once{ parent.initialNumber }" >
+        <attribute name="tempValue" value="$once{ parent.initialNumber }" type="number" />
+        <handler name="onfocus">
+            this.tempValue = Number(this.getText());
+        </handler>            
+        <handler name="onblur">
+            <![CDATA[
+                var t = parseInt(this.getText());
+                if (isNaN(t) || t > this.parent.maximum || t < this.parent.minimum){
+                    t = this.tempValue;
+                    this.setAttribute('text',t);
+                    lz.Focus.setFocus(this);
+                } else {
+                    this.tempValue = t;
+                    parent.setAttribute('initialNumber',t);
+                }
+            ]]>
+        </handler>
+    </edittext>
+
+
+    <button name="arrowView" x="36" width="24" y="1" height="23" >
+        <view name="arrow_down_slider" resource="arrow_down_slider_rsc" 
+            x="4" y="3" />
+            <handler name="onclick">
+                var pick = new lz.changeWidthLetterSliderWin(canvas,{initialNumber:parent.numericValue.tempValue,btnRef:this.parent,x:(parent.getAttributeRelative('x',canvas)),y:(parent.getAttributeRelative('y',canvas))});
+                lz.ModeManager.makeModal( pick );
+            </handler>
+        <labelTooltip labelid="431" />
+    </button>
+    
+</class>
+    
+<class name="closableViewLetter" extends="view">
+    <method name="close">
+        lz.ModeManager.release(this);
+        this.destroy();
+    </method>
+</class>    
+    
+<class name="changeWidthLetterSliderWin" extends="closableViewLetter" bgcolor="white" 
+    clickable="true" width="58" height="140" >
+    
+    <attribute name="btnRef" value="null" />
+    <attribute name="initialNumber" value="12" type="number"/>
+    
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method>
+
+    <view bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" width="58" height="138" x="1" y="1" />
+    
+    <vslider name="_slider" height="120" y="10" x="10" minvalue="4" maxvalue="100"
+        initvalue="$once{ parent.initialNumber }" showrange="false" >
+        <handler name="onvalue" args="v">
+            parent.btnRef.numericValue.tempValue = Number(v);
+            parent.btnRef.numericValue.setAttribute('text',v);
+            parent.btnRef.setAttribute('initialNumber',v);
+        </handler>
+        <handler name="onvalueChosenFinal">
+            parent.close();
+        </handler>
+    </vslider>
+    
+    <view name="_close" x="$once{ parent.width-this.width-2 }" y="2"
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" />
+    </view>     
+        
+</class>    
+
+</library>
diff --git a/WebContent/src/base/components/lps/changeWidthSlider.lzx b/WebContent/src/base/components/lps/changeWidthSlider.lzx
new file mode 100644
index 0000000..dfa746a
--- /dev/null
+++ b/WebContent/src/base/components/lps/changeWidthSlider.lzx
@@ -0,0 +1,168 @@
+<?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.
+  
+-->
+<library>  
+
+<class name="changeWidthSlider" extends="basePropertySelector" bgcolor="0xFFFFFF" width="60" height="24">
+
+    <attribute name="numberAlign" value="right" type="string"/>
+    <attribute name="minimum" type="number" value="1" />
+    <attribute name="maximum" type="number" value="100" />
+    <attribute name="step" value="1" type="number"/>
+    <attribute name="initialNumberInit" value="1" type="number"/>
+    <attribute name="initialNumber" value="3" type="number"/>
+    
+    <attribute name="boxPosition" value="down" type="string"/>
+    
+    <attribute name="labelid" value="429" type="number"/>
+    
+    <event name="onplus" />
+    <event name="onminus" />
+    
+    <handler name="oninit">
+        this.initialNumberInit=initialNumber;
+    </handler>
+    
+    <method name="getValue">
+        return this.initialNumber;
+    </method>
+    
+    <method name="setSliderValue" args="v">
+    	this.initialNumber = v;
+    	this.numericValue.setAttribute('tempValue',this.initialNumber);
+    	this.numericValue.setAttribute('text',this.initialNumber);
+    	if ($debug) Debug.write("setSliderValue ",v);
+    	this.setEnabled(true);
+    </method>
+
+    <edittext name="numericValue" width="34" height="24" text="$once{ parent.initialNumber }" >
+        <attribute name="tempValue" value="$once{ parent.initialNumber }" type="number" />
+        <handler name="onfocus">
+            this.tempValue = Number(this.getText());
+        </handler>            
+        <handler name="onblur">
+            <![CDATA[
+                var t = parseInt(this.getText());
+                if (isNaN(t) || t > this.parent.maximum || t < this.parent.minimum){
+                    t = this.tempValue;
+                    this.setAttribute('text',t);
+                    lz.Focus.setFocus(this);
+                } else {
+                    this.tempValue = t;
+                    parent.setAttribute('initialNumber',t);
+                }
+            ]]>
+        </handler>
+    </edittext>
+
+
+    <button name="arrowView" x="36" width="24" y="1" height="23" >
+        <view name="arrow_down_slider" resource="arrow_down_slider_rsc" 
+            x="4" y="3" />
+            <handler name="onclick">
+            	if (this.parent.boxPosition=="up"){
+            		var pick = new lz.changeWidthSliderWin(canvas,{
+					            			initialNumber:parent.numericValue.tempValue,
+					            			btnRef:this.parent,x:(parent.getAttributeRelative('x',canvas)),
+					            			maxvalue:parent.maximum,
+					            			y:(parent.getAttributeRelative('y',canvas)-140+parent.height)
+				            			});
+            	} else {
+            		var pick = new lz.changeWidthSliderWin(canvas,{
+					            			initialNumber:parent.numericValue.tempValue,
+					            			btnRef:this.parent,x:(parent.getAttributeRelative('x',canvas)),
+					            			maxvalue:parent.maximum,
+					            			y:(parent.getAttributeRelative('y',canvas))
+				            			});
+            	}
+                lz.ModeManager.makeModal( pick );
+            </handler>
+        <labelTooltip labelid="$once{ parent.parent.labelid }" />
+    </button>
+    
+</class>
+    
+<class name="closableView" extends="view">
+    <method name="close">
+        lz.ModeManager.release(this);
+        this.destroy();
+    </method>
+</class>    
+    
+<class name="changeWidthSliderWin" extends="closableView" bgcolor="white" 
+    clickable="true" width="58" height="140" >
+    
+    <attribute name="btnRef" value="null" />
+    <attribute name="initialNumber" value="3" type="number"/>
+    <attribute name="maxvalue" value="100" type="number" />
+    
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method>
+
+    <view bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" width="58" height="138" x="1" y="1" />
+    
+    <vslider name="_slider" height="120" y="10" x="10" minvalue="1" maxvalue="$once{ parent.maxvalue }" 
+        initvalue="$once{ parent.initialNumber }" showrange="false" showvalue="true">
+        <handler name="onvalue" args="v">
+            //if ($debug) Debug.write("onvalue",v);
+            parent.btnRef.numericValue.tempValue = Number(v);
+            parent.btnRef.numericValue.setAttribute('text',v);
+            parent.btnRef.setAttribute('initialNumber',v);
+        </handler>
+        <handler name="onvalueChosenFinal">
+            parent.close();
+        </handler>        
+    </vslider>
+    
+    <view name="_close" x="$once{ parent.width-this.width-2 }" y="2"
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" />
+    </view>     
+        
+</class>    
+
+</library>
diff --git a/WebContent/src/base/components/lps/colorpicker.lzx b/WebContent/src/base/components/lps/colorpicker.lzx
new file mode 100644
index 0000000..dbd62d5
--- /dev/null
+++ b/WebContent/src/base/components/lps/colorpicker.lzx
@@ -0,0 +1,353 @@
+<?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.
+  
+-->
+<!---
+      changed by swagner
+  -->
+<library>
+    
+    
+<class name="colorSlider" extends="slider" x="4"
+    minvalue="1" maxvalue="240" 
+    trackheight="4" thumbheight="12"
+    showrange="false" showvalue="true">
+    <attribute name="doSendValueEvent" value="false" type="boolean" />
+    <handler name="onvalue">
+        if (this.doSendValueEvent) { 
+            classroot.updateColor();
+        } else {
+            this.doSendValueEvent=true;
+        }
+    </handler>
+</class>    
+
+<class name="colorPot" width="13" height="13" 
+    onmouseout="">
+    <handler name="onmouseover">
+        var t = _root.createEmptyMovieClip('hans2',20);
+        var myColorTZ = new Color(t);
+        myColorTZ.setRGB(this.mycolor);        
+        this.setAttribute('mycolorString',this.parent.parent.parent.numberToRGB(myColorTZ));
+    </handler>
+    <attribute name="mycolor" type="color" value="0x000000"/>
+    <attribute name="mycolorString" type="string" value="0x000000"/>
+    <attribute name="listener" type="expression"/>
+    <handler name="onclick">
+        listener.changeColor(this.mycolor);
+        listener.close();
+    </handler>
+    <handler name="ondblclick">
+        listener.changeColor(this.mycolor);
+        listener.close();
+    </handler>    
+    <labelTooltip text="${ parent.mycolorString }" />
+    <view bgcolor="#444444" width="13" height="13" >
+        <view bgcolor="${classroot.mycolor}"  x="1" y="1" width="11" height="11"/>
+    </view>
+</class>
+  
+<class name="colorRow" layout="axis:x;spacing:-1" />
+    
+<class name="colorpicker" extends="guiPresenter" labelid="425" isdragable="false" 
+    minimizable="false" maximizable="false" fullToolBar="true" 
+    resizeable="false" width="250" height="154" >
+    
+    <attribute name="btnRef" value="null" />
+      
+    <attribute name="selectedColor" type="number" value="0x00aeef"/>
+    
+    <handler name="onclose">
+    	lz.ModeManager.release(this);
+        this.btnRef.closedColorPicker();
+        this.btnRef.setAttribute('selectedColor', this.selectedColor);
+        this.btnRef.setTransformedStringColor();        
+    </handler>
+    
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+           if ( eventStr == "onmousedown"  ){
+               if ( view != null ) {
+                  if ( !view.childOf(this) ) {
+                       this.close();
+                  }
+               } else {
+                   this.close();
+               }
+           }
+           if (view && view.childOf(this)) {
+               if (view[ eventStr ]) {
+                   view[ eventStr ].sendEvent( view );
+               }
+               return false;
+           }
+          return true;
+       ]]> 
+    </method>  
+    
+    <method name="doDefaultColor" args="thisC">
+        <![CDATA[            
+            var c = thisC.getRGB();
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            ////Debug.write("r g b: ",r,g,b);
+            var hsl = RGBtoHLS(r,g,b);
+            ////Debug.write("doDefaultColor ",hsl);
+            this.updateSlidersByValue(hsl);
+            var rgb = HLStoRGB(s_hue.value, s_bri.value, s_sat.value);
+            var c = rgb.r << 16 | rgb.g << 8 | rgb.b
+            this.setAttribute('selectedColor', c);
+        ]]>    
+    </method>  
+    
+    <method name="updateColor" >
+        <![CDATA[
+            ////Debug.write("updateColor ");
+            var rgb = HLStoRGB(s_hue.value, s_bri.value, s_sat.value);
+            var c = rgb.r << 16 | rgb.g << 8 | rgb.b
+            this.setAttribute('selectedColor', c);
+
+        ]]>
+    </method>
+    
+    <method name="changeColor" args="c">
+        <![CDATA[
+            ////Debug.write("changeColor ");
+            this.setAttribute('selectedColor', c);
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            var hsl = RGBtoHLS(r,g,b);
+            this.updateSlidersByValue(hsl);
+        ]]>
+    </method>
+    
+    <method name="updateSlidersByValue" args="hsl">
+        s_hue.doSendValueEvent=false;
+        s_hue.setValue(hsl.h);
+        s_bri.doSendValueEvent=false;
+        s_bri.setValue(hsl.l);
+        s_sat.doSendValueEvent=false;
+        s_sat.setValue(hsl.s);        
+    </method>
+    
+    <method name="numberToRGB" args="thisC">
+        <![CDATA[            
+            var c = thisC.getRGB();
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            ////Debug.write("r g b: ",r,g,b);
+            
+            HEX_R = r.toString(16).toUpperCase();
+            HEX_G = g.toString(16).toUpperCase();
+            HEX_B = b.toString(16).toUpperCase();
+            
+            if (HEX_R.length < 2) {
+                HEX_R = "0"+HEX_R;
+            }
+            if (HEX_G.length < 2) {
+                HEX_G = "0"+HEX_G;
+            }
+            if (HEX_B.length < 2) {
+                HEX_B = "0"+HEX_B;
+            }
+            var hex = "0x"+HEX_R + HEX_G + HEX_B;
+
+            return hex;
+        ]]>
+    </method>
+    
+    <method name="RGBtoHLS" args="r,g,b">
+        <![CDATA[
+            var h,l,s;
+            var max = (Math.max(Math.max(r, g), b))/255;
+            var min = (Math.min(Math.min(r, g), b))/255;
+            var delta = max-min;
+            l = (max+min)/2;
+            s = (max == min) ? 0 : ((l <= 0.5) ? delta/l/2 : delta/(2-l*2));
+            if(r/255 == max) h = (g-b)/delta/255;
+            else if(g/255 == max) h = 2+(b-r)/delta/255;
+            else if(b/255 == max) h = 4+(r-g)/delta/255;
+            h *= 40;
+            if(h < 0) h += 240;
+            h = Math.round(h);
+            return {h:((isNaN(h)) ? 0 : h), l:Math.round(l*240), s:Math.round(s*240)};
+        ]]>
+    </method>
+    
+    <method name="HLStoRGB" args="h,l,s">
+        <![CDATA[
+            var r,g,b;
+            if(s == 0) {
+                r = g = b = Math.round(l/240*255);
+            } else {
+                h /= 240; l /= 240; s /= 240;
+                var temp4,temp3;
+                var temp2 = (l < 0.5) ? l*(s+1) : l+s-l*s;
+                var temp1 = l*2 - temp2;
+                for(var i=0; i<3; i++) {
+                    switch(i) {
+                        case 0: temp3 = h+1/3; break;
+                        case 1: temp3 = h; break;
+                        case 2: temp3 = h-1/3; break;
+                    }
+                    if(temp3 < 0) temp3++;
+                    else if(temp3 > 1) temp3--;
+                    if(temp3*6 < 1) temp4 = temp1+(temp2-temp1)*6*temp3;
+                    else if(temp3*2 < 1) temp4 = temp2;
+                    else if(temp3*3 < 2) temp4 = temp1+(temp2-temp1)*((2/3)-temp3)*6;
+                    else temp4 = temp1;
+                    switch(i) {
+                        case 0: r = Math.round(temp4*255); break;
+                        case 1: g = Math.round(temp4*255); break;
+                        case 2: b = Math.round(temp4*255); break;
+                    }
+                }
+            }
+            return {r:r, g:g, b:b};
+        ]]>
+    </method>
+    
+    
+    <text fontsize="8" x="$once{classroot.s_hue.width + classroot.s_hue.x}"
+          y="$once{classroot.s_hue.y - 4}" text="HUE" width="26"/>
+      
+    <colorSlider name="s_hue" y="102" />
+    
+    <text fontsize="8" x="$once{classroot.s_bri.width + classroot.s_bri.x}"
+          y="$once{classroot.s_bri.y - 4}" text="BRI" />
+      
+    <colorSlider name="s_bri" y="120" />
+    
+    <text fontsize="8" x="$once{classroot.s_sat.width + classroot.s_sat.x}"
+          y="$once{classroot.s_sat.y - 4}" text="SAT" />
+    
+    <colorSlider name="s_sat" y="138" />  
+    
+    
+    <!-- current color -->
+    <view name="c2" bgcolor="black" width="30" height="66" y="24" x="206">
+        <view name="current" x="1" y="1" bgcolor="${classroot.selectedColor}" 
+            width="$once{parent.width -2}" height="$once{parent.height -2}" />
+    </view>
+
+    <!-- default colors -->
+    <view x="4" y="26" layout="axis:y;spacing:-1" >
+
+        <colorRow>
+            <colorPot listener="$once{classroot}" mycolor="#ff0000" mycolorString="0xFF0000" />
+            <colorPot listener="$once{classroot}" mycolor="#ffff00" mycolorString="0xFFFF00" />
+            <colorPot listener="$once{classroot}" mycolor="#00ff00" mycolorString="0x00FF00" />
+            <colorPot listener="$once{classroot}" mycolor="#00ffff" mycolorString="0x00FFFF" />
+            <colorPot listener="$once{classroot}" mycolor="#0000ff" mycolorString="0x0000FF" />
+            <colorPot listener="$once{classroot}" mycolor="#ff00ff" mycolorString="0xFF00Ff" />
+            <colorPot listener="$once{classroot}" mycolor="#ffffff" mycolorString="0xFFFFFF" />
+            <colorPot listener="$once{classroot}" mycolor="#ebebeb" mycolorString="0xEBEBEB" />
+            <colorPot listener="$once{classroot}" mycolor="#e1e1e1" mycolorString="0xE1E1E1" />
+            <colorPot listener="$once{classroot}" mycolor="#d7d7d7" mycolorString="0xD7D7D7" />
+            <colorPot listener="$once{classroot}" mycolor="#cccccc" mycolorString="0xCCCCCC" />
+            <colorPot listener="$once{classroot}" mycolor="#c2c2c2" mycolorString="0xC2C2C2" />
+            <colorPot listener="$once{classroot}" mycolor="#b7b7b7" mycolorString="0xB7B7B7" />
+            <colorPot listener="$once{classroot}" mycolor="#acacac" mycolorString="0xACACAC" />
+            <colorPot listener="$once{classroot}" mycolor="#a0a0a0" mycolorString="0xA0A0A0" />
+            <colorPot listener="$once{classroot}" mycolor="#959595" mycolorString="0x959595" />
+        </colorRow>
+        <colorRow>
+            <colorPot listener="$once{classroot}" mycolor="#ee1d24" mycolorString="0xEE1D24" />
+            <colorPot listener="$once{classroot}" mycolor="#fff100" mycolorString="0xFFF100" />
+            <colorPot listener="$once{classroot}" mycolor="#00a650" mycolorString="0x00A650" />
+            <colorPot listener="$once{classroot}" mycolor="#00aeef" mycolorString="0x00AEEF" />
+            <colorPot listener="$once{classroot}" mycolor="#2f3192" mycolorString="0x2F3192" />
+            <colorPot listener="$once{classroot}" mycolor="#ed008c" mycolorString="0xED008C" />
+            <colorPot listener="$once{classroot}" mycolor="#898989" mycolorString="0x898989" />
+            <colorPot listener="$once{classroot}" mycolor="#7d7d7d" mycolorString="0x7D7D7D" />
+            <colorPot listener="$once{classroot}" mycolor="#707070" mycolorString="0x707070" />
+            <colorPot listener="$once{classroot}" mycolor="#626262" mycolorString="0x626262" />
+            <colorPot listener="$once{classroot}" mycolor="#555555" mycolorString="0x555555" />
+            <colorPot listener="$once{classroot}" mycolor="#464646" mycolorString="0x464646" />
+            <colorPot listener="$once{classroot}" mycolor="#363636" mycolorString="0x363636" />
+            <colorPot listener="$once{classroot}" mycolor="#262626" mycolorString="0x262626" />
+            <colorPot listener="$once{classroot}" mycolor="#111111" mycolorString="0x111111" />
+            <colorPot listener="$once{classroot}" mycolor="#000000" mycolorString="0x000000" />
+        </colorRow>
+          
+        <colorRow>
+            <colorPot listener="$once{classroot}" mycolor="#f7977a" mycolorString="0xF7977A" />
+            <colorPot listener="$once{classroot}" mycolor="#fbad82" mycolorString="0xFBAD82" />
+            <colorPot listener="$once{classroot}" mycolor="#fdc68c" mycolorString="0xFDC68C" />
+            <colorPot listener="$once{classroot}" mycolor="#fff799" mycolorString="0xFFF799" />
+            <colorPot listener="$once{classroot}" mycolor="#c6df9c" mycolorString="0xC6DF9C" />
+            <colorPot listener="$once{classroot}" mycolor="#a4d49d" mycolorString="0xA4D49D" />
+            <colorPot listener="$once{classroot}" mycolor="#81ca9d" mycolorString="0x81CA9D" />
+            <colorPot listener="$once{classroot}" mycolor="#7bcdc9" mycolorString="0x7bcdc9" />
+            <colorPot listener="$once{classroot}" mycolor="#6ccff7" mycolorString="0x6CCFF7" />
+            <colorPot listener="$once{classroot}" mycolor="#7ca6d8" mycolorString="0x7CA6D8" />
+            <colorPot listener="$once{classroot}" mycolor="#8293ca" mycolorString="0x8293CA" />
+            <colorPot listener="$once{classroot}" mycolor="#8881be" mycolorString="0x8881BE" />
+            <colorPot listener="$once{classroot}" mycolor="#a286bd" mycolorString="0xA286BD" />
+            <colorPot listener="$once{classroot}" mycolor="#bc8cbf" mycolorString="0xBC8CBf" />
+            <colorPot listener="$once{classroot}" mycolor="#f49bc1" mycolorString="0xF49BC1" />
+            <colorPot listener="$once{classroot}" mycolor="#f5999d" mycolorString="0xf5999d" />
+        </colorRow>
+          
+        <colorRow>
+            <colorPot listener="$once{classroot}" mycolor="#f16c4d" mycolorString="0xF16C4D" />
+            <colorPot listener="$once{classroot}" mycolor="#f68e54" mycolorString="0xF68E54" />
+            <colorPot listener="$once{classroot}" mycolor="#fbaf5a" mycolorString="0xFBAF5A" />
+            <colorPot listener="$once{classroot}" mycolor="#fff467" mycolorString="0xFFF467" />
+            <colorPot listener="$once{classroot}" mycolor="#acd372" mycolorString="0xACD372" />
+            <colorPot listener="$once{classroot}" mycolor="#7dc473" mycolorString="0x7DC473" />
+            <colorPot listener="$once{classroot}" mycolor="#39b778" mycolorString="0x39B778" />
+            <colorPot listener="$once{classroot}" mycolor="#16bcb4" mycolorString="0x16BCB4" />
+            <colorPot listener="$once{classroot}" mycolor="#00bff3" mycolorString="0x00BFF3" />
+            <colorPot listener="$once{classroot}" mycolor="#438ccb" mycolorString="0x438CCB" />
+            <colorPot listener="$once{classroot}" mycolor="#5573b7" mycolorString="0x5573B7" />
+            <colorPot listener="$once{classroot}" mycolor="#5e5ca7" mycolorString="0x5E5CA7" />
+            <colorPot listener="$once{classroot}" mycolor="#855FA8" mycolorString="0x855FA8" />
+            <colorPot listener="$once{classroot}" mycolor="#a763a9" mycolorString="0xA763A9" />
+            <colorPot listener="$once{classroot}" mycolor="#ef6ea8" mycolorString="0xEf6EA8" />
+            <colorPot listener="$once{classroot}" mycolor="#f16d7e" mycolorString="0xF16D7E" />
+        </colorRow>
+          
+          
+        <colorRow>
+            <colorPot listener="$once{classroot}" mycolor="#9a8575" mycolorString="0x9A8575" />
+            <colorPot listener="$once{classroot}" mycolor="#726357" mycolorString="0x726357" />
+            <colorPot listener="$once{classroot}" mycolor="#524842" mycolorString="0x524842" />
+            <colorPot listener="$once{classroot}" mycolor="#362f2c" mycolorString="0x362F2C" />
+            <colorPot listener="$once{classroot}" mycolor="#c69c6d" mycolorString="0xC69C6D" />
+            <colorPot listener="$once{classroot}" mycolor="#a77c50" mycolorString="0xA77C50" />
+            <colorPot listener="$once{classroot}" mycolor="#8c623a" mycolorString="0x8C623A" />
+            <colorPot listener="$once{classroot}" mycolor="#744b24" mycolorString="0x744B24" />
+            <colorPot listener="$once{classroot}" mycolor="#613813" mycolorString="0x613813" />
+        </colorRow>
+      
+    </view>
+    
+</class>
+
+</library>
+<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
+* Copyright 2005-2007 Laszlo Systems, Inc. All Rights Reserved.               *
+* Use is subject to license terms.                                            *
+* X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- @LZX_VERSION@                                                         -->
diff --git a/WebContent/src/base/components/lps/fillColorChoose.lzx b/WebContent/src/base/components/lps/fillColorChoose.lzx
new file mode 100644
index 0000000..d2e316e
--- /dev/null
+++ b/WebContent/src/base/components/lps/fillColorChoose.lzx
@@ -0,0 +1,190 @@
+<?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.
+  
+-->
+<library>
+
+
+<class name="fillColorChoose" extends="basePropertySelector"
+    bgcolor="white" width="80" height="24">
+    
+    <attribute name="isopen" value="false" type="boolean" />
+    
+    <attribute name="colorPickRef" value="null"/>
+    
+    <attribute name="selectedColor" type="number" value="0xFFFF33" />
+    <attribute name="selectedColorDis" type="number" value="1" />
+    <attribute name="selectedColorTransformedString" type="string" value="0xFFFF33"/>
+    <attribute name="colorIsEnabled" value="true" type="boolean" /> 
+    <attribute name="inInitColorSelection" value="true" type="boolean" />
+    
+    <handler name="oninit">
+    	if (this.selectedColorDis==-1){
+    		Debug.write("FillColor Disabled");
+    		this._currentcolor.setAttribute('clickable',false);
+    		this._currentcolor.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('enabled',false);
+    		this.colorIsEnabled = false;
+    	}
+    </handler>
+    
+    <method name="setSelectedColor" args="c">
+    	this.setEnabled(true);
+		this.setAttribute('selectedColor',c);
+		this.setTransformedStringColor();
+    </method>
+    
+    <method name="setSelectedColorWithDis" args="c,d">
+    	this.setEnabled(true);
+		this.setAttribute('selectedColor',c);
+		this.setTransformedStringColor();
+		this.selectedColorDis = d;
+		if (this.selectedColorDis==-1){
+    		if ($debug) Debug.write("FillColor Disabled");
+    		this._currentcolor.setAttribute('clickable',false);
+    		this._currentcolor.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('enabled',false);
+    		this.colorIsEnabled = false;
+    		this.rgt_b._lock.setAttribute("visibility","visible");
+	    	this.rgt_b._lock_open.setAttribute("visibility","hidden");
+    	} else {
+			this._currentcolor.setAttribute('clickable',true);
+    		this._currentcolor.setAttribute('opacity',1);
+    		this.rgt.setAttribute('opacity',1);
+    		this.rgt.setAttribute('enabled',true);
+    		this.onselectedColor.sendEvent(this.selectedColor);
+    		this.colorIsEnabled = true;
+    		this.rgt_b._lock.setAttribute("visibility","hidden");
+	    	this.rgt_b._lock_open.setAttribute("visibility","visible");
+    	}
+    </method>
+        
+    <method name="getValue">
+        return this.selectedColor;
+    </method>    
+    
+    <method name="toggle">
+        var t = _root.createEmptyMovieClip('hans',10);
+        var myColor = new Color(t);
+        myColor.setRGB(selectedColor);
+        if (this.boxPosition=="up"){
+	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
+	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	y:(this.getAttributeRelative('y',canvas)-154+this.height)});
+        } else {
+	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
+	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	y:(this.getAttributeRelative('y',canvas))});
+        }
+        this.colorPickRef.doDefaultColor(myColor);
+        lz.ModeManager.makeModal( this.colorPickRef );
+    </method>
+    
+    <method name="setTransformedStringColor">
+        ////Debug.write("setTransformedStringColor: ",this,this.selectedColor);
+        var t = _root.createEmptyMovieClip('hans2',20);
+        var myColor = new Color(t);
+        myColor.setRGB(this.selectedColor);
+        //var a = myColor.getTransform();
+        ////Debug.write("a: ",a);
+        var col = this.numberToRGB(myColor);
+        ////Debug.write("col: ",col);
+        this.setAttribute('selectedColorTransformedString',col);
+    </method>
+    
+    <method name="numberToRGB" args="thisC">
+        <![CDATA[            
+            var c = thisC.getRGB();
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            ////Debug.write("r g b: ",r,g,b);
+            
+            HEX_R = r.toString(16).toUpperCase();
+            HEX_G = g.toString(16).toUpperCase();
+            HEX_B = b.toString(16).toUpperCase();
+            
+            if (HEX_R.length < 2) {
+                HEX_R = "0"+HEX_R;
+            }
+            if (HEX_G.length < 2) {
+                HEX_G = "0"+HEX_G;
+            }
+            if (HEX_B.length < 2) {
+                HEX_B = "0"+HEX_B;
+            }
+            var hex = "0x"+HEX_R + HEX_G + HEX_B;
+
+            return hex;
+        ]]>
+    </method>    
+    
+    <method name="closedColorPicker">
+        lz.ModeManager.release( this.colorPickRef );
+    </method>
+    
+    <view name="_currentcolor" x="1" y="1" onclick="parent.toggle()" 
+        onmouseover="" onmouseout="" width="30" 
+        height="22" bgcolor="${ parent.selectedColor }" >
+        <labelTooltip text="${ parent.parent.selectedColorTransformedString }" />
+    </view>
+    
+    <button name="rgt" x="32" y="1" onclick="parent.toggle()" width="24" height="23" >
+    	<image x="4" y="3" src="$once{ canvas.getThemeImage('colorfillchoose_rsc') }"
+    			width="16" height="16" stretches="both" />
+        <labelTooltip labelid="427" />
+    </button>
+        
+    <button name="rgt_b" x="56" y="1" width="24" height="23" >
+    	<handler name="onclick">
+    		if (parent.colorIsEnabled){
+	    		parent._currentcolor.setAttribute('clickable',false);
+	    		parent._currentcolor.setAttribute('opacity',0.3);
+	    		parent.rgt.setAttribute('opacity',0.3);
+	    		parent.rgt.setAttribute('enabled',false);
+	    		parent.selectedColorDis = -1;
+	    		parent.onselectedColor.sendEvent(-1);
+	    		parent.colorIsEnabled = false;
+	    		this._lock.setAttribute("visibility","hidden");
+	    		this._lock_open.setAttribute("visibility","visible");
+    		} else {
+	    		parent._currentcolor.setAttribute('clickable',true);
+	    		parent._currentcolor.setAttribute('opacity',1);
+	    		parent.rgt.setAttribute('opacity',1);
+	    		parent.rgt.setAttribute('enabled',true);
+	    		parent.selectedColorDis = 1;
+	    		parent.onselectedColor.sendEvent(parent.selectedColor);
+	    		parent.colorIsEnabled = true;
+	    		this._lock.setAttribute("visibility","visible");
+	    		this._lock_open.setAttribute("visibility","hidden");
+    		}
+    	</handler>
+    	<image x="4" y="3" name="_lock" src="$once{ canvas.getThemeImage('color_lock_rsc') }"
+    			width="16" height="16" stretches="both" />
+ 	    <image x="4" y="3" name="_lock_open" src="$once{ canvas.getThemeImage('color_lock_open_rsc') }"
+    			width="16" height="16" stretches="both" visibility="hidden" />
+        <labelTooltip labelid="428" />
+    </button>
+    
+</class>  
+
+    
+</library>
diff --git a/WebContent/src/base/components/lps/library.lzx b/WebContent/src/base/components/lps/library.lzx
new file mode 100644
index 0000000..9826b0e
--- /dev/null
+++ b/WebContent/src/base/components/lps/library.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+    
+	<!-- APL Author sebawagner -->
+    <resource name="arrow_down_slider_rsc" src="resources/arrow_down_slider.png" /> 
+
+	<include href="vslider.lzx" /> 
+	<include href="basePropertySelector.lzx" />
+	<include href="colorpicker.lzx" />
+    <include href="lineColorChoose.lzx" />
+    <include href="lineOnlyColorChoose.lzx" />
+    <include href="lineColorChoose.lzx" />
+    <include href="fillColorChoose.lzx" />
+    <include href="changeWidthSlider.lzx" />
+    <include href="changeWidthLetterSlider.lzx" />
+    <include href="regexptip.lzx" />
+    
+</library>
diff --git a/WebContent/src/base/components/lps/lineColorChoose.lzx b/WebContent/src/base/components/lps/lineColorChoose.lzx
new file mode 100644
index 0000000..58a84a4
--- /dev/null
+++ b/WebContent/src/base/components/lps/lineColorChoose.lzx
@@ -0,0 +1,193 @@
+<?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.
+  
+-->
+<library>
+
+<class name="lineColorChoose" extends="basePropertySelector"
+    bgcolor="white" width="80" height="24">
+    
+    <attribute name="isopen" value="false" type="boolean" />
+    
+    <attribute name="colorPickRef" value="null"/>
+    
+    <attribute name="selectedColor" type="number" value="0xFF6600" />
+    <attribute name="selectedColorDis" type="number" value="1" />
+    <attribute name="selectedColorTransformedString" type="string" value="0xFF6600"/>
+    <attribute name="colorIsEnabled" value="true" type="boolean" />
+    <attribute name="inInitColorSelection" value="true" type="boolean" />
+    
+    <handler name="oninit">
+    	if (this.selectedColorDis==-1){
+    		this._currentcolor.setAttribute('clickable',false);
+    		this._currentcolor.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('enabled',false);
+    		this.colorIsEnabled = false;
+    	}
+    </handler>
+        
+    <handler name="oninit">
+    	this.setTransformedStringColor();
+    </handler>
+    
+    <method name="setSelectedColor" args="c">
+    	this.setEnabled(true);
+		this.setAttribute('selectedColor',c);
+		this.setTransformedStringColor();
+    </method>
+    
+    <method name="setSelectedColorWithDis" args="c,d">
+    	this.setEnabled(true);
+		this.setAttribute('selectedColor',c);
+		this.setTransformedStringColor();
+		this.selectedColorDis = d;
+		if (this.selectedColorDis==-1){
+    		if ($debug) Debug.write("FillColor Disabled");
+    		this._currentcolor.setAttribute('clickable',false);
+    		this._currentcolor.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('opacity',0.3);
+    		this.rgt.setAttribute('enabled',false);
+    		this.colorIsEnabled = false;
+    		this.rgt_b._lock.setAttribute("visibility","visible");
+	    	this.rgt_b._lock_open.setAttribute("visibility","hidden");
+    	} else {
+			this._currentcolor.setAttribute('clickable',true);
+    		this._currentcolor.setAttribute('opacity',1);
+    		this.rgt.setAttribute('opacity',1);
+    		this.rgt.setAttribute('enabled',true);
+    		this.onselectedColor.sendEvent(this.selectedColor);
+    		this.colorIsEnabled = true;
+    		this.rgt_b._lock.setAttribute("visibility","hidden");
+	    	this.rgt_b._lock_open.setAttribute("visibility","visible");
+    	}
+    </method>
+    
+    <method name="getValue">
+        return this.selectedColor;
+    </method>    
+    
+    <method name="toggle">
+        var t = _root.createEmptyMovieClip('hans',10);
+        var myColor = new Color(t);
+        myColor.setRGB(selectedColor);
+        if (this.boxPosition=="up"){
+	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
+	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	y:(this.getAttributeRelative('y',canvas)-154+this.height)});
+        } else {
+	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
+	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	y:(this.getAttributeRelative('y',canvas))});
+        }
+
+        this.colorPickRef.doDefaultColor(myColor);
+        lz.ModeManager.makeModal( this.colorPickRef );
+    </method>
+    
+    <method name="setTransformedStringColor">
+        ////Debug.write("setTransformedStringColor: ",this,this.selectedColor);
+        var t = _root.createEmptyMovieClip('hans2',20);
+        var myColor = new Color(t);
+        myColor.setRGB(this.selectedColor);
+        //var a = myColor.getTransform();
+        ////Debug.write("a: ",a);
+        var col = this.numberToRGB(myColor);
+        ////Debug.write("col: ",col);
+        this.setAttribute('selectedColorTransformedString',col);
+    </method>
+    
+    <method name="numberToRGB" args="thisC">
+        <![CDATA[            
+            var c = thisC.getRGB();
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            ////Debug.write("r g b: ",r,g,b);
+            
+            HEX_R = r.toString(16).toUpperCase();
+            HEX_G = g.toString(16).toUpperCase();
+            HEX_B = b.toString(16).toUpperCase();
+            
+            if (HEX_R.length < 2) {
+                HEX_R = "0"+HEX_R;
+            }
+            if (HEX_G.length < 2) {
+                HEX_G = "0"+HEX_G;
+            }
+            if (HEX_B.length < 2) {
+                HEX_B = "0"+HEX_B;
+            }
+            var hex = "0x"+HEX_R + HEX_G + HEX_B;
+
+            return hex;
+        ]]>
+    </method>    
+    
+    <method name="closedColorPicker">
+        lz.ModeManager.release( this.colorPickRef );
+    </method>
+    
+    <view name="_currentcolor" x="1" y="1" onclick="parent.toggle()" 
+        onmouseover="" onmouseout="" width="30" 
+        height="22" bgcolor="${ parent.selectedColor }" >
+        <labelTooltip text="${ parent.parent.selectedColorTransformedString }" />
+    </view>
+    
+    <button name="rgt" x="32" y="1" onclick="parent.toggle()" width="24" height="23" >
+    	<image x="4" y="3" src="$once{ canvas.getThemeImage('colorlinechoose_rsc') }"
+    			width="16" height="16" stretches="both" />
+        <labelTooltip labelid="424" />
+    </button>
+        
+    <button name="rgt_b" x="56" y="1" width="24" height="23" >
+    	<handler name="onclick">
+    		if (parent.colorIsEnabled){
+	    		parent._currentcolor.setAttribute('clickable',false);
+	    		parent._currentcolor.setAttribute('opacity',0.3);
+	    		parent.rgt.setAttribute('opacity',0.3);
+	    		parent.rgt.setAttribute('enabled',false);
+	    		parent.selectedColorDis = -1;
+	    		parent.onselectedColor.sendEvent(-1);
+	    		parent.colorIsEnabled = false;
+	    		this._lock.setAttribute("visibility","hidden");
+	    		this._lock_open.setAttribute("visibility","visible");
+    		} else {
+	    		parent._currentcolor.setAttribute('clickable',true);
+	    		parent._currentcolor.setAttribute('opacity',1);
+	    		parent.rgt.setAttribute('opacity',1);
+	    		parent.rgt.setAttribute('enabled',true);
+	    		parent.selectedColorDis = 1;
+	    		parent.onselectedColor.sendEvent(parent.selectedColor);
+	    		parent.colorIsEnabled = true;
+	    		this._lock.setAttribute("visibility","visible");
+	    		this._lock_open.setAttribute("visibility","hidden");
+    		}
+    	</handler>
+    	<image x="4" y="3" name="_lock" src="$once{ canvas.getThemeImage('color_lock_rsc') }"
+    			width="16" height="16" stretches="both" />
+ 	    <image x="4" y="3" name="_lock_open" src="$once{ canvas.getThemeImage('color_lock_open_rsc') }"
+    			width="16" height="16" stretches="both" visibility="hidden" />
+        <labelTooltip labelid="426" />
+    </button>
+    
+</class>  
+
+    
+</library>
diff --git a/WebContent/src/base/components/lps/lineOnlyColorChoose.lzx b/WebContent/src/base/components/lps/lineOnlyColorChoose.lzx
new file mode 100644
index 0000000..95c7640
--- /dev/null
+++ b/WebContent/src/base/components/lps/lineOnlyColorChoose.lzx
@@ -0,0 +1,109 @@
+<?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.
+  
+-->
+<library>
+
+<class name="lineOnlyColorChoose" extends="basePropertySelector"
+    bgcolor="white" width="56" height="24">
+    
+    <attribute name="isopen" value="false" type="boolean" />
+    
+    <attribute name="colorPickRef" value="null"/>
+    
+    <attribute name="selectedColor" type="number" value="0xFF6600" />
+    <attribute name="selectedColorTransformedString" type="string" value="0xFF6600"/>
+    <attribute name="colorIsEnabled" value="true" type="boolean" />
+    
+    <handler name="oninit">
+    	this.setTransformedStringColor();
+    </handler>
+    
+    <method name="getValue">
+        return this.selectedColor;
+    </method>    
+    
+    <method name="toggle">
+        var t = _root.createEmptyMovieClip('hans',10);
+        var myColor = new Color(t);
+        myColor.setRGB(selectedColor);
+        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,x:(this.getAttributeRelative('x',canvas)-(250-this.width)),y:(this.getAttributeRelative('y',canvas))});
+        this.colorPickRef.doDefaultColor(myColor);
+        lz.ModeManager.makeModal( this.colorPickRef );
+    </method>
+    
+    <method name="setTransformedStringColor">
+        ////Debug.write("setTransformedStringColor: ",this,this.selectedColor);
+        var t = _root.createEmptyMovieClip('hans2',20);
+        var myColor = new Color(t);
+        myColor.setRGB(this.selectedColor);
+        //var a = myColor.getTransform();
+        ////Debug.write("a: ",a);
+        var col = this.numberToRGB(myColor);
+        ////Debug.write("col: ",col);
+        this.setAttribute('selectedColorTransformedString',col);
+    </method>
+    
+    <method name="numberToRGB" args="thisC">
+        <![CDATA[            
+            var c = thisC.getRGB();
+            var r = (c >> 16) & 0xff;
+            var g = (c >> 8) &  0xff;
+            var b = c & 0xff;
+            ////Debug.write("r g b: ",r,g,b);
+            
+            HEX_R = r.toString(16).toUpperCase();
+            HEX_G = g.toString(16).toUpperCase();
+            HEX_B = b.toString(16).toUpperCase();
+            
+            if (HEX_R.length < 2) {
+                HEX_R = "0"+HEX_R;
+            }
+            if (HEX_G.length < 2) {
+                HEX_G = "0"+HEX_G;
+            }
+            if (HEX_B.length < 2) {
+                HEX_B = "0"+HEX_B;
+            }
+            var hex = "0x"+HEX_R + HEX_G + HEX_B;
+
+            return hex;
+        ]]>
+    </method>    
+    
+    <method name="closedColorPicker">
+        lz.ModeManager.release( this.colorPickRef );
+    </method>
+    
+    <view name="_currentcolor" x="1" y="1" onclick="parent.toggle()" 
+        onmouseover="" onmouseout="" width="30" 
+        height="22" bgcolor="${parent.selectedColor}" >
+        <labelTooltip text="${ parent.parent.selectedColorTransformedString }" />
+    </view>
+    
+    <button name="rgt" x="32" y="1" onclick="parent.toggle()" width="24" height="23" >
+    	<image x="4" y="3" src="$once{ canvas.getThemeImage('colorlinechoose_rsc') }"
+    			width="16" height="16" stretches="both" />
+        <labelTooltip labelid="424" />
+    </button>
+    
+</class>  
+
+    
+</library>
diff --git a/WebContent/src/base/components/lps/regexptip.lzx b/WebContent/src/base/components/lps/regexptip.lzx
new file mode 100644
index 0000000..a66bc6d
--- /dev/null
+++ b/WebContent/src/base/components/lps/regexptip.lzx
@@ -0,0 +1,53 @@
+<?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.
+  
+-->
+<library>
+
+<!-- APL Author sebawagner -->
+<resource name="regexptip_rsc_r" src="resources/regexp/regexp_bg_r.swf" />
+<!-- APL Author sebawagner -->
+<resource name="regexptip_rsc_m" src="resources/regexp/regexp_bg_m.swf" />
+<!-- APL Author sebawagner -->
+<resource name="regexptip_rsc_l" src="resources/regexp/regexp_bg_l.swf" />
+<!-- APL Author sebawagner -->
+<resource name="regexptip_rsc_point" src="resources/regexp/regexp_point.swf" />
+
+<class name="regexptip" extends="view">
+    <attribute name="regexptext" value="" type="string" />
+    <attribute name="fadeDelegate" value="null" />
+    <handler name="oninit">
+        this.fadeDelegate = new LzDelegate( this, "fadeText" );
+        lz.Timer.addTimer( this.fadeDelegate, 5000 );
+    </handler>
+    <method name="fadeText" args="itemRef">
+        this.destroy();
+    </method>
+    <view width="${parent.width}" layout="axis:x">
+        <view name="regexptip_rsc_r" resource="regexptip_rsc_r" width="5" />
+        <view name="regexptip_rsc_m" resource="regexptip_rsc_m" stretches="width" width="${ parent.width-10 }"/>
+        <view name="regexptip_rsc_l" resource="regexptip_rsc_l" width="5" />
+    </view>
+    
+    <view resource="regexptip_rsc_point" y="-7" x="12" />
+
+    <text fontsize="11" text="${ parent.regexptext}" resize="true" multiline="false" />
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/lps/resources/arrow_down_slider.png b/WebContent/src/base/components/lps/resources/arrow_down_slider.png
new file mode 100644
index 0000000..f5107d7
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/arrow_down_slider.png
Binary files differ
diff --git a/WebContent/src/base/components/lps/resources/color_fill.png b/WebContent/src/base/components/lps/resources/color_fill.png
new file mode 100644
index 0000000..13631ec
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/color_fill.png
Binary files differ
diff --git a/WebContent/src/base/components/lps/resources/regexp/regexp_bg_l.swf b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_l.swf
new file mode 100644
index 0000000..c2ae7a8
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_l.swf
Binary files differ
diff --git a/WebContent/src/base/components/lps/resources/regexp/regexp_bg_m.swf b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_m.swf
new file mode 100644
index 0000000..119a8ac
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_m.swf
Binary files differ
diff --git a/WebContent/src/base/components/lps/resources/regexp/regexp_bg_r.swf b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_r.swf
new file mode 100644
index 0000000..34383d4
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/regexp/regexp_bg_r.swf
Binary files differ
diff --git a/WebContent/src/base/components/lps/resources/regexp/regexp_point.swf b/WebContent/src/base/components/lps/resources/regexp/regexp_point.swf
new file mode 100644
index 0000000..22adb7e
--- /dev/null
+++ b/WebContent/src/base/components/lps/resources/regexp/regexp_point.swf
Binary files differ
diff --git a/WebContent/src/base/components/lps/vslider.lzx b/WebContent/src/base/components/lps/vslider.lzx
new file mode 100644
index 0000000..51648a7
--- /dev/null
+++ b/WebContent/src/base/components/lps/vslider.lzx
@@ -0,0 +1,168 @@
+<?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.
+  
+-->
+<!-- X_LZ_COPYRIGHT_BEGIN ************************************************
+* Copyright 2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Use is subject to license terms.                                       *
+* X_LZ_COPYRIGHT_END ************************************************** -->
+<!--
+    vertical slider contributed by Sebastian Wagner
+-->
+<library>
+  
+  <class name="vsliderTrack" extends="view" bgcolor="0x000000">
+        <view width="${ parent.width-2}" height="${ parent.height-2 }" 
+          x="1" y="1" bgcolor="0xFFFFFF"/>
+        <view width="${ parent.width-2}" bgcolor="0xCCCCCC"
+          x="1" y="${ (this.parent.parent.switchaxis) ? 
+                parent.parent._sliderthumb.y : 1 }" 
+          visible="${ parent.parent.showrange }" 
+          height="${ (this.parent.parent.switchaxis) ? 
+        (parent.parent._vslidertrack.height - parent.parent._sliderthumb.y-1) : 
+        parent.parent._sliderthumb.y }" />
+      <handler name="onclick">
+        var newy = parent.getMouse("y");
+        parent._sliderthumb.setNewYFromTrack(newy);
+      </handler>
+  </class>
+	  
+	<class name="vsliderThumb" extends="button" bgcolor="0x999999" height="10" width="20" 
+		onmousedown="dragger.apply()" onmouseup="dragger.remove()">
+  	
+        <attribute name="drag_min" value="0" type="number" />
+        <attribute name="showvalue" type="boolean" value="true" />
+        <attribute name="drag_max" value="0" type="number" />
+        
+        <method name="setNewYFromTrack" args="y">
+            <![CDATA[
+                if (y > drag_max) {
+                    this.setAttribute("y",this.drag_max);
+                    return;
+                }
+                if (y < drag_min) {
+                    this.setAttribute("y",this.drag_min);
+                    return;
+                }
+                this.setAttribute("y",y);
+            ]]>
+        </method>
+        
+        <handler name="oninit">
+            //Setting the initVal
+            this.setY(getPosFromValue(this.parent.initvalue));
+        </handler>
+        
+        <method name="getValueFromPos">
+            var delta1 = this.parent.maxvalue-this.parent.minvalue;
+            var perc = (this.parent.switchaxis) ? 1-(y / (this.parent.height-this.height)) : (y / (this.parent.height-this.height));
+            //Debug.write(delta1,perc);
+            return (Math.round(perc*delta1))+this.parent.minvalue;
+        </method>
+        
+        <method name="getPosFromValue" args="val">
+            var perc = (val-this.parent.minvalue) / (this.parent.maxvalue-this.parent.minvalue);
+            //Debug.write(perc);
+            valY = (this.parent.switchaxis) ? ( (1-perc) * (this.parent.height-this.height)) : (perc * (this.parent.height-this.height));
+            //Debug.write("valY: ",Math.round(valY));
+            return Math.round(valY);
+        </method>
+        
+        <handler name="ony" args="v">
+            //super.setY(v);
+            //if ($debug) Debug.write("setY: ",v);
+		    var thumbVal = getValueFromPos();
+		    if (thumbVal != parent.value) {
+		        this.parent.setValue(thumbVal);
+		    }               
+        </handler>
+        
+        <handler name="onclick">
+        	parent.onvalueChosenFinal.sendEvent();
+        </handler>
+        
+		<dragstate name="dragger" drag_axis="y"
+		    drag_min_y="${ this.drag_min }"  
+		    drag_max_y="${ this.drag_max }">
+			<text name="t1" x="-26" text="${ this.parent.parent.value }" bgcolor="0xFFFFFF"
+				  y="-4" resize="true" />
+		</dragstate>
+	</class>
+
+<class name="vslider" extends="view" >
+    <!--- Minimum Value -->
+    <attribute name="minvalue" type="number" value="0"/>
+    
+    <!--- Maximum Value -->
+    <attribute name="maxvalue" type="number" value="100"/>
+    
+    <!--- Showrange should the slidertrack be with color while 'sliding' -->
+    <attribute name="showrange" type="boolean" value="true"/>
+    
+    <!--- showvalue should the slider show the numbers of min/max -->
+    <attribute name="showvalue" type="boolean" value="true"/>
+    
+    <!--- switchaxis true means minimum-value is 
+            t op maximum is bottom false turns around -->
+    <attribute name="switchaxis" type="boolean" value="false"/>
+    
+    <!-- Initial Value -->
+    <attribute name="initvalue" value="0" type="number" />          
+        
+    <!--- @keywords private -->
+    <event name="onvalue"/>
+    
+    <!--- @keywords private -->
+    <event name="onvalueChosenFinal"/>
+        
+    <!--- @keywords private -->
+    <attribute name="value" value="0" setter="setValue(value)"/>
+    <method name="setValue" args="v">
+        if (!isinited) {
+          this.value = v;
+          return;
+        }
+        if (this.value == v) return;
+        this.value = v;
+        if (onvalue) onvalue.sendEvent(v);
+    </method>
+       
+	<vsliderTrack name="_vslidertrack" x="5" 
+	    width="10" height="${ parent.height }" />
+	    
+	<vsliderThumb name="_sliderthumb" 
+	    drag_max="${ parent.height-this.height }" 
+	    showvalue="${ parent.showvalue }" />
+	    
+	<text text="${ ( (this.parent.switchaxis) ? 
+	            this.parent.maxvalue : this.parent.minvalue ) }" 
+	    visible="${ parent.showvalue }" 
+	    y="-8" x="${ this.parent._vslidertrack.width+10 }" />
+	    
+	<text text="${ ( (this.parent.switchaxis) ? 
+	            this.parent.minvalue : this.parent.maxvalue ) }" 
+	      visible="${ parent.showvalue }" 
+	      y="${ this.parent.height-10 }" 
+	      x="${ this.parent._vslidertrack.width+10 }" />
+          
+</class>
+  
+  
+
+</library>
diff --git a/WebContent/src/base/components/miniIcons.lzx b/WebContent/src/base/components/miniIcons.lzx
new file mode 100644
index 0000000..301d381
--- /dev/null
+++ b/WebContent/src/base/components/miniIcons.lzx
@@ -0,0 +1,67 @@
+<?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.
+  
+-->
+<library>
+
+<class name="miniIcons" extends="view" stretches="both">
+	<attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x-1);
+        	this.setAttribute("y",this.y-1);
+        	this.setAttribute("height",this.height+2);
+        	this.setAttribute("width",this.width+2);
+    	}
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+    	}
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
+<class name="miniIconsImage" extends="image" stretches="both">
+	<attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x-1);
+        	this.setAttribute("y",this.y-1);
+        	this.setAttribute("height",this.height+2);
+        	this.setAttribute("width",this.width+2);
+    	}
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+    	}
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/base/components/miniIconsNew.lzx b/WebContent/src/base/components/miniIconsNew.lzx
new file mode 100644
index 0000000..2e4a1a2
--- /dev/null
+++ b/WebContent/src/base/components/miniIconsNew.lzx
@@ -0,0 +1,47 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="miniIconsNew" extends="view" >
+		<attribute name="innerResource" value="" type="string" />
+		<handler name="onmouseover">
+	    	if (this.showhandcursor) {
+	        	this.innnerView.setAttribute("x",this.innnerView.x-1);
+	        	this.innnerView.setAttribute("y",this.innnerView.y-1);
+	        	this.innnerView.setAttribute("height",this.innnerView.height+2);
+	        	this.innnerView.setAttribute("width",this.innnerView.width+2);
+	    	}
+	    </handler>
+	    <handler name="onmouseout">
+	    	if (this.showhandcursor) {
+	        	this.innnerView.setAttribute("x",this.innnerView.x+1);
+	            this.innnerView.setAttribute("y",this.innnerView.y+1);
+	            this.innnerView.setAttribute("height",this.innnerView.height-2);
+	            this.innnerView.setAttribute("width",this.innnerView.width-2);
+	    	}
+	    </handler>
+		<view name="innnerView" resource="$once{ parent.innerResource }" stretches="both"
+				width="$once{ parent.width }" height="$once{ parent.height }">
+		    
+		</view>
+	</class>
+	
+</library>
\ No newline at end of file
diff --git a/WebContent/src/base/components/omcharts/library.lzx b/WebContent/src/base/components/omcharts/library.lzx
new file mode 100644
index 0000000..7d16571
--- /dev/null
+++ b/WebContent/src/base/components/omcharts/library.lzx
@@ -0,0 +1,43 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="charts/styles/chartstyle.lzx"/>
+    <include href="charts/common/dataseries.lzx"/>
+    <include href="charts/common/viewspoolmanager.lzx"/>
+    <include href="charts/common/virtualdrawview.lzx"/>
+    <include href="charts/common/datalabel.lzx"/>
+    <include href="charts/common/chart.lzx"/>
+    <include href="charts/common/legend.lzx"/>
+    <include href="charts/piechart/piepiece.lzx"/>
+    <include href="charts/piechart/piechartplotarea.lzx"/>
+    
+    <include href="charts/styles/strokestyle.lzx"/>
+    <include href="charts/piechart/piepiece.lzx"/>
+    <include href="utils/layouts/simplelayout.lzx"/>
+    <include href="extensions/drawview.lzx"/>
+    
+    <include href="omchartstyle.lzx" />
+    <include href="omlegend.lzx" />
+    <include href="ompiechart.lzx" />
+
+
+</library>
diff --git a/WebContent/src/base/components/omcharts/omchartstyle.lzx b/WebContent/src/base/components/omcharts/omchartstyle.lzx
new file mode 100644
index 0000000..c5386dc
--- /dev/null
+++ b/WebContent/src/base/components/omcharts/omchartstyle.lzx
@@ -0,0 +1,158 @@
+<?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.
+  
+-->
+<!---
+    @access public
+    @topic Components
+    @subtopic Charts
+  -->
+<library>
+    
+<chartstyle name="omchartstyle">
+    <plotstyle name="plot" linesize="1" linecolor="0xCCCCCC" fillcolor="0xffffff" opacity="0.5"/>
+    <chartbgstyle name="chartbgstyle">
+        <linestyle name="line" size="0"/>
+        <regionstyle name="region" color="0xFFFFFF" opacity="0.5"/>
+    </chartbgstyle>
+    <valueregionstyle name="valueregionstyle">
+        <linestyle name="line" color="0x000000" size="1" opacity="1"/>
+        <regionstyle name="region" color="0xB71CB3" opacity="0.8" gradient="linear"/>
+        <labelstyle name="label" font="serif" fontsize="12" fontcolor="0x000000"/>
+        <labelstyle name="tip" font="serif" fontsize="12" fontcolor="0x000000"/>
+    </valueregionstyle>
+    <axisstyle name="haxisstyle">
+        <labelstyle name="label" font="Helmet" fontsize="16" fontcolor="0x000000" fontangle="0"/>
+        <tickstyle name="tickmajor" color="0x000000" position="outside" length="3" size="1">
+            <labelstyle name="label" font="serif" fontstyle="bold" fontsize="12" fontcolor="0x606060"/>
+        </tickstyle>
+        <tickstyle name="tickminor" color="0xD3D3D3" position="outside" length="3" size="1"/>
+        <linestyle name="axisline" color="0x000000" size="1"/>
+        <linestyle name="gridline" color="0xD3D3D3" size="1"/>
+    </axisstyle>
+    <axisstyle name="vaxisstyle">
+        <labelstyle name="label" font="Helmet" fontsize="16" fontcolor="0x000000" fontangle="-90"/>
+        <tickstyle name="tickmajor" color="0x000000" position="outside" length="3" size="1">
+            <labelstyle name="label" font="serif" fontsize="12" fontcolor="0x606060"/>
+        </tickstyle>
+        <tickstyle name="tickminor" color="0x000000" position="outside" length="3" size="1"/>
+        <linestyle name="axisline" color="0x000000" size="1"/>
+        <linestyle name="gridline" color="0xD3D3D3" size="1"/>
+        <regionstyle name="band1" color="0xE8EBEE" opacity="1" gradient="linear"/>
+        <regionstyle name="band2" color="0xE3E5E7" opacity="1" gradient="linear"/>
+    </axisstyle>
+    <valuelinestyle name="valuelinestyle">
+        <linestyle name="line" color="0xFF9999" size="2" opacity="1"/>
+        <labelstyle name="label" font="serif" fontsize="10" fontcolor="0x000000"
+           linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        <labelstyle name="tip" font="serif" fontsize="10" fontcolor="0x000000"
+           linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+    </valuelinestyle>
+    <valuepointstyle name="valuepointstyle">
+        <pointstyle name="point" width="15" height="15" color="0x00ff00" opacity=".5" shape="triangle" image="../../test/images/master.gif"/>
+        <labelstyle name="label" font="serif" fontsize="10" fontcolor="0x000000"
+           linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        <labelstyle name="tip" font="serif" fontsize="10" fontcolor="0x000000"
+           linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+    </valuepointstyle>
+    <datastylelist name="datastyles">
+        <datastyle name="yline">
+            <pointstyle name="point" width="10" height="10" color="0xF9F932" opacity="1" shape="diamond" strokeStyle="0xA3A304" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xA6CEE3" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0xF9F932" fillcolor="0xFFFFC1" linesize="4"/>
+        </datastyle>
+        <datastyle name="bline">
+            <pointstyle name="point" width="10" height="10" color="0x32ADFB" opacity="1" shape="fourpoint" strokeStyle="0x03609C" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0x1F78B4" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="rline">
+            <pointstyle name="point" width="10" height="10" color="0xFA8159" opacity="1" shape="circle" strokeStyle="0xB24C2C" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xB2DF8A" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="gline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0x33A02C" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="hline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xFB9A99" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="iline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xE31A1C" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="jline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xFDBF6F" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="kline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xFF7F00" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="lline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0xCAB2D6" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+        <datastyle name="mline">
+            <pointstyle name="point" width="10" height="10" color="0x58FB59" opacity="1" shape="square" strokeStyle="0x1D991D" lineWidth="1"/>
+            <linestyle name="line" color="0xCCCCCC" size="1" opacity="1" type="solid"/>
+            <regionstyle name="region" color="0x6A3D9A" opacity="1" gradient="none"/>
+            <labelstyle name="label" font="serif" fontsize="9" fontcolor="0x000000" linecolor="0x000000" fillcolor="0xFFFFC1" linesize="12" fontangle="90"/>
+            <labelstyle name="tip" font="serif" fontsize="8" fontcolor="0x000000"
+               linecolor="0x000000" fillcolor="0xFFFFC1" linesize="2"/>
+        </datastyle>
+    </datastylelist>
+</chartstyle>    
+    
+</library> 
diff --git a/WebContent/src/base/components/omcharts/omlegend.lzx b/WebContent/src/base/components/omcharts/omlegend.lzx
new file mode 100644
index 0000000..8d365b3
--- /dev/null
+++ b/WebContent/src/base/components/omcharts/omlegend.lzx
@@ -0,0 +1,282 @@
+<?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.
+  
+-->
+<!---
+    @access public
+    @topic Components
+    @subtopic Charts
+  -->
+<library>
+
+    <!---
+     simple legend class
+     @access public
+      -->
+    <class name="omlegend" extends="drawview" >
+        <!--- @keyword private -->
+        <attribute name="topmargin" type="number" value="0"/>
+        <!--- @keyword private -->
+        <attribute name="bottommargin" type="number" value="0"/>
+        <!--- @keyword private -->
+        <attribute name="leftmargin" type="number" value="0"/>
+        <!--- @keyword private -->
+        <attribute name="rightmargin" type="number" value="0"/>
+        <!--- @keyword private -->
+        <attribute name="verticalgap" type="number" value="1"/>
+        <!--- Indicates if legend box will have a border, default: true -->
+        <attribute name="legendborder" type="boolean" value="true"/>
+        <!--- Allow to set the line width from the legend tag -->
+        <attribute name="borderWidth" type="number" value="1"/>
+        <!--- Allow to set the color line from the legend tag -->
+        <attribute name="borderColor" type="color" value="0x000000"/>
+        <!--- Allow to set the fill color from the legend tag -->
+        <attribute name="fillColor" type="color" value="0xFFFFFF"/>
+        <!--- Indicates how the legend items will be displayed, default: vertical -->
+        <attribute name="direction" type="string" value="vertical"/>     
+        <!--- Indicates the style will be applied tho the border legend box -->
+        <attribute name="styleBorder" type="string" value="null"/>
+        <!--- Indicates the Font will be used in the legend item text -->
+        <attribute name="legendFont" type="string" value="serif"/>
+        <!--- Indicates the Font size wiil be used in the legend item text, default: 10px -->
+        <attribute name="legendFontsize" type="size" value="6"/>
+        <!--- Indicates the Font color wiil be used in the legend item text, default: black -->
+        <attribute name="legendFontcolor" type="color" value="0x000000"/>
+        <!--- Indicates where the legend box will be positioned, default: right -->
+        <attribute name="position" type="string" value="right"/>
+
+        <!--- Takes the relationship with the chart -->
+        <attribute name="chart" type="expression" value="${null}"/>
+        <attribute name="chartClassName" type="string" value="${null}"/>
+
+        <simplelayout axis="y"/>
+        
+                
+       <!--- @keywords private
+        <handler name="oninitdone" reference="this.chart">
+            if(chart.initdone)
+            {
+                var lChart = this.getChartInstance();
+                if( lChart != null ) {
+                    this.chartClassName = lChart.constructor.tagname;
+                    this.datapath.setFromPointer(lChart.getDataSeries().getLegend());
+                }   
+            }
+        </handler>
+         -->
+         
+        <handler name="oninit">
+        	<![CDATA[
+        	    var tObject = parent.getOMDataSeries();
+        	    this.chart = parent;
+        	    
+        	    for (var i=0;i<tObject.tooltipseries.length;i++) {
+        	    	
+        	    	new lz.omlegenditem(this.viewlegendbox,{tBox:tObject.tooltipseries[i]});
+        	    	
+        	    }
+        	    
+        	    //this.bringToFront();
+        	    this.border();
+        	]]>
+        </handler> 
+        
+        <!-- Top Margin -->
+        <view height="${parent.topmargin}" />
+        <!-- Legend box -->
+        <view name="viewlegendbox">    
+            <simplelayout spacing="${parent.parent.verticalgap}"/>       
+            <method name="init">
+                <![CDATA[
+    
+                    super.init();
+                    if ( parent.direction == 'horizontal'){
+                        this.layouts[0].setAttribute('axis', 'x');
+                    } else {
+                        this.layouts[0].setAttribute('axis', 'y');
+                    }
+                   
+                ]]>
+            </method>    
+                  
+        </view>
+        <!-- Bottom Margin -->
+        <view height="${parent.bottommargin}"/>        
+
+
+        <!--- @keywords private -->
+        <method name="border">
+            var lStartX = Math.ceil(this.lineWidth/2);
+            var lStartY = Math.ceil(this.lineWidth/2);
+            var lOrgWidth = this.width;
+            var lOrgHeight = this.height;
+
+            this.lineWidth = this.borderWidth;
+            this.strokeStyle = this.borderColor;
+            this.fillStyle = this.fillColor;
+
+            this.beginPath();
+            this.moveTo(lStartX, lStartY);
+            this.lineTo(this.width, lStartY);
+            this.lineTo(this.width, this.height);
+            this.lineTo(lStartY, this.height);
+            this.lineTo(lStartX, lStartY);
+            this.closePath();
+            this.stroke();
+            this.fill();
+
+            // Restores the original dimensions of the legend, due to the changes
+            // that the lineTo()'s calls perform over the legendbox dimensions.
+            this.setAttribute( "width", lOrgWidth );
+            this.setAttribute( "height", lOrgHeight );
+        </method>
+
+        <!--- @keywords private -->
+        <method name="getChartInstance">
+        <![CDATA[
+            return this.chart;
+        ]]>
+        </method>
+
+        <!--- event that allows custom action for mouse over event
+            @param Number item: The identifier legend item
+         -->
+        <event name="onitemmouseover" />
+        <!--- event that allows custom action for mouse out event
+            @param Number item: The identifier legend item
+         -->
+        <event name="onitemmouseout" />
+        <!--- event that allows custom action for mouse down event
+            @param Number item: The identifier legend item
+         -->
+        <event name="onitemmousedown" />
+        <!--- event that allows custom action for mouse up event
+            @param Number item: The identifier legend item
+         -->
+        <event name="onitemmouseup" />
+        <!--- event that allows custom action for mouse click event
+            @param Number item: The identifier legend item
+         -->
+        <event name="onitemmouseclick" />
+        
+    </class>
+    
+    <!--- @keyword private
+    individual legend item -->
+    <class name="omlegenditem" >
+        <attribute name="identifier" type="number" value="0"/>
+        <attribute name="tBox" type="string" value=""/>
+        <attribute name="linevisible" type="boolean" value="false"/>
+        <simplelayout axis="x" spacing="$once{parent.parent.parent.verticalgap}"/>
+        <view name="leftmarginview" width="$once{parent.parent.parent.leftmargin}" />
+        <marker name="legendmarker"></marker>    
+        <text name="legendtext" resize="true" text="$once{ parent.tBox }" 
+        	  fontsize="$once{parent.parent.parent.legendFontsize}"
+              fgcolor="$once{parent.parent.parent.legendFontcolor}"
+              height="$once{parent.parent.parent.legendFontsize+6}">
+        </text>
+        <view name="rightmarginview" width="${parent.parent.parent.rightmargin}"/>
+        <method name="init">
+            <![CDATA[
+                super.init();
+
+                var colors = new Array(0);
+                var imagesPath = new Array(0);
+                var legenditems = parent.subviews;
+                var legendmarkeritem;
+
+                if( parent.parent.chartClassName == "piechart" ) {
+                    var arrPieces = parent.parent.getChartInstance().plotarea.arrPiePieces;
+                    var piePiece;
+
+                    for(var i = 0; i < arrPieces.length; i++){ 
+                        piePiece = arrPieces[i];  
+                        colors[i] = piePiece.style.region.color;
+                        
+                        if ( legenditems[i] != null ){                
+                            legendmarkeritem = legenditems[i].legendmarker;
+                            legendmarkeritem.setAttribute('width', piePiece.style.point.width);
+                            legendmarkeritem.setAttribute('height', piePiece.style.point.height);
+                        }
+                    }
+                } else {
+                    var topseries = parent.parent.getChartInstance().getDataSeries();
+                    var numSeries = topseries.getNumDataSeries();
+                    for(var i = 0; i < numSeries; i++){ 
+                        var ldatastyle = parent.parent.getChartInstance().style.getDataStyle(i);
+                        if ( parent.parent.chartClassName == "linechart" )
+                            colors[i] = ldatastyle.line.color;
+                        else
+                            if ( ldatastyle.region.image != null ){
+                                imagesPath[i] = ldatastyle.region.image;
+                            } else {
+                                colors[i] = ldatastyle.region.color;
+                            }
+                        if ( legenditems[i] != null ){                
+                            legendmarkeritem = legenditems[i].legendmarker;
+                            legendmarkeritem.setAttribute('width', ldatastyle.point.width);
+                            legendmarkeritem.setAttribute('height', ldatastyle.point.height);
+                        }
+                    }
+                }
+
+                for(var i = 0; i < legenditems.length; i++){
+                    var legenditem = legenditems[i];
+                    legendmarkeritem = legenditem.legendmarker;
+                    if ( imagesPath[i] != null ){
+                        legendmarkeritem.setSource(imagesPath[i]);
+                        legendmarkeritem.setAttribute('opacity', ldatastyle.region.opacity);
+                        legendmarkeritem.setAttribute( "visible", true );
+                    }
+                    else
+                        legendmarkeritem.setAttribute('bgcolor', colors[i]);
+                    this.setAttribute('identifier', i);
+                }
+            ]]>
+        </method>
+        <!--- calls the method that implements the acton
+            @keyword private-->
+        <handler name="onmouseover">
+        	this.legendtext.setAttribute("fontstyle","bold");
+            parent.classroot.onitemmouseover.sendEvent(this);
+        </handler>
+        <!--- calls the method that implements the acton
+            @keyword private-->
+        <handler name="onmouseout">
+        	this.legendtext.setAttribute("fontstyle","plain");
+            parent.classroot.onitemmouseout.sendEvent(this);
+        </handler>
+        <!--- calls the method that implements the acton
+            @keyword private-->
+        <handler name="onmousedown">
+            parent.classroot.onitemmousedown.sendEvent(this);
+        </handler>
+        <!--- calls the method that implements the acton
+            @keyword private-->
+        <handler name="onmouseup">
+            parent.classroot.onitemmouseup.sendEvent(this);
+        </handler>
+        <!--- calls the method that implements the acton
+            @keyword private-->
+        <handler name="onclick">
+            parent.classroot.onitemmouseclick.sendEvent(this);
+        </handler>
+    </class>
+
+</library>
diff --git a/WebContent/src/base/components/omcharts/ompiechart.lzx b/WebContent/src/base/components/omcharts/ompiechart.lzx
new file mode 100644
index 0000000..e248133
--- /dev/null
+++ b/WebContent/src/base/components/omcharts/ompiechart.lzx
@@ -0,0 +1,107 @@
+<?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.
+  
+-->
+<!---
+    @access public
+    @topic Components
+    @subtopic Charts
+  -->
+<library>
+    
+    <!---
+          A pie chart represents a chart that is displayed in the 2D
+          polar plane. This class inherits immediately from chart class
+          and can be instantiated directly. (Warning: Of beta quality.)
+          @access public
+          -->
+    <class name="ompiechart" extends="chart">
+
+        <!--- @keywords private -->
+        <method name="init">
+            plotarea = this.getNodeOfClass("piechartplotarea");
+            _datalabelpool = this.createLabelViewspool();
+            super.init();            
+        </method>  
+        
+        <!--- Renders the plot area which is an instance of the piechartplotarea 
+              class. The plot area requires to read a group of two data series, one
+              for the groups that are represented by the pie slices and the second
+              for their values. -->
+        <method name="renderPlotArea">
+        <![CDATA[
+            super.renderPlotArea();
+            plotarea.clear();
+
+            var topseries = this.getOMDataSeries();
+            
+            //var numSeries = topseries.getNumDataSeries();
+            var numSeries = 1;
+            
+            var xseries = topseries.xseries;
+            var yseries = topseries.yseries;
+            var tooltipseries = topseries.tooltipseries;
+                                
+            for(var i = 0; i < numSeries; i++)
+            {
+                plotarea.renderSeries(xseries, yseries, tooltipseries);          
+            }
+            if ( this.datalabelEnabled ){
+                this.renderDataLabels();
+            }
+
+        ]]>
+        </method>
+        
+        <!--- Renders the labels that display the values of the data series. -->
+        <method name="renderDataLabels">
+        
+            <![CDATA[
+                _datalabelpool.reclaimAll();
+            
+                var arrPiePieces = this.plotarea.arrPiePieces;
+                var topseries = this.getOMDataSeries();
+                
+                var xseries = topseries.xseries;
+                var yseries = topseries.yseries;
+                var tooltipseries = topseries.tooltipseries;
+                
+                if ($debug) Debug.write("arrPiePieces.length ",arrPiePieces.length);
+
+                for(var i = 0; i < arrPiePieces.length; i++){ 
+                    piePiece = arrPiePieces[i];  
+                    
+                    var lbl = _datalabelpool.getView();
+                    var ldatastyle = piePiece.style;
+                    lbl.setAttribute('style', ldatastyle.label);
+                    lbl.render(yseries[i]);
+                    piePiece.renderLabel(lbl);
+                }
+            ]]>
+                
+        </method>
+        
+        <!--- The plot area where the pie slices are rendered -->
+        <piechartplotarea name="plotarea" x="50" y="20" width="500" height="300">
+        	
+        </piechartplotarea>
+
+    </class>
+    
+</library> 
diff --git a/WebContent/src/base/components/panel/baseBoundingBorderView.lzx b/WebContent/src/base/components/panel/baseBoundingBorderView.lzx
new file mode 100644
index 0000000..d3e0cdb
--- /dev/null
+++ b/WebContent/src/base/components/panel/baseBoundingBorderView.lzx
@@ -0,0 +1,498 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseBoundingBorderView" extends="view" width="250" y="100" height="400"
+	onmousedown="this._startDragState(this)" onmouseup="this._removeDragState(this)" >
+	
+	<!--- Can this Box be docked to others and 
+			the width/height of parent compoent barrier -->
+	<attribute name="docking" value="false" type="boolean" />
+	
+	<!--- Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there -->
+	<attribute name="dockingbarrier" value="15" type="number" />
+	
+	<attribute name="boundingbarrier" value="2" type="number" />
+	
+	<!--- the Event will be thrown if you close the Box -->
+	<event name="onclose" />
+	
+	<!--- extra Event for this kind of view
+		will be thrown before the view inits new -->
+	<event name="preclose" />
+	
+	<!---@keywords private the list of connected views -->
+	<attribute name="dockinglist" value="null" />
+	
+	<!--- @keywords private temp-older of x-distance to docked-Box  -->
+	<attribute name="tempXdistance" value="0" type="number" />
+
+	<!--- @keywords private temp-older of y-distance to docked-Box  -->
+	<attribute name="tempYdistance" value="0" type="number" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />	
+	
+	<attribute name="currentBoundingBox" value="null" />
+	
+	<attribute name="verticalClassActive" value="false" type="boolean" />
+	<attribute name="activationClassBounding" value="" type="string" />
+	<attribute name="activationVClassBounding" value="" type="string" />
+	
+	<attribute name="topClassPanel" value="" type="string" />
+	<attribute name="bottomClassPanel" value="" type="string" />
+	<attribute name="rightClassPanel" value="" type="string" />
+	<attribute name="leftClassPanel" value="" type="string" />
+	
+	<!-- this is the Width and Height of the vertical and horizontal class
+		it can have different values -->
+	<attribute name="hWidth" value="0" type="number" />
+	<attribute name="hHeight" value="0" type="number" />
+	<attribute name="vWidth" value="0" type="number" />
+	<attribute name="vHeight" value="0" type="number" />
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+	
+	<attribute name="hasshadow" value="true" type="boolean" />
+	
+	<attribute name="mousetracker_del" value="$once{ new LzDelegate(this, 'checkStaticBorders' )}" />
+	
+	<!--- @keywords private store initial height so toggleopen can reset height  -->
+    <handler name="oninit">
+    	this.initheight=this.height;
+		////Debug.write("this.isopen: ",this.isopen);
+		if (!this.open) toggleopen();
+    	if (this.hasshadow) this.setShadow(); 
+    </handler>
+    
+    <method name="setShadow" args="bool">
+        this.hasshadow = bool;
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+            //Debug.write(this.normalMC);
+            ////Debug.write("this.normalMC: ",this.normalMC);
+            ////Debug.write("this: ",this);
+           	this.displacementMap = new flash.filters.DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>		
+	
+	<method name="close">
+		if (this.onclose) this.onclose.sendEvent();
+		this.doDestroy();
+	</method>
+	
+	<method name="toggleopen">
+		////Debug.write("this.isopen",this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					////Debug.write("open new y",this.y+this.initheight);
+					this.dockinglist[eg].toggleOpenByParent(this.initheight-22);
+					this.dockinglist[eg].setAttribute('y',this.y+this.initheight);
+					
+				}
+			}			
+			this.setAttribute('height',this.initheight);
+		} else {
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					this.dockinglist[eg].toggleOpenByParent(-(this.initheight-22));
+					this.dockinglist[eg].setAttribute('y',this.y+22);
+				}
+			}	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+	<method name="toggleOpenByParent" args="changeY">
+		////Debug.write("+++++ toggleOpenByParent +++++ changeY: ",this.title,changeY);
+		var tempList=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+				////Debug.write("found some: ",this.parent.subviews[eg].title);
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+					
+				if (proof) tempList.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("tempList.length: ",tempList.length);
+		if (tempList.length!=0){
+			for (var eg in tempList){
+				if(tempList[eg].docking){
+					////Debug.write("toggleOpenByParent 1 [eg],changeY: ",tempList[eg].title,changeY);
+					tempList[eg].toggleOpenByParent(changeY);
+					tempList[eg].setAttribute('y',tempList[eg].y+changeY);
+				}
+			}	
+		}
+		
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="_removeDragState" args="obj">
+		//It's important to remove the dragger and do docking stuff before you check for connencted Boxes
+		dragger.remove();
+		if (obj==this){
+			if (docking) arrangePosition();
+		} else {
+			if (docking) _lookforParentOnly(obj);
+		}
+			
+		//check for connected Boxes
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._removeDragState(this);
+			}
+		}
+		mousetracker_del.unregisterAll();
+		this.preclose.sendEvent();
+		if (this.currentBoundingBox!=null) {
+			
+			if(this.currentBoundingBox.width>this.currentBoundingBox.height){
+				if (this.currentBoundingBox.y==0){
+					if ($debug) Debug.write("TOP");
+					if (this.topClassPanel!=""){
+						new lz[this.topClassPanel](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					} else {
+						if ($debug) Debug.warn("No Top Panel Definied");
+						new lz[this.activationVClassBounding](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					}
+				} else if (this.currentBoundingBox.y==(parent.height-this.currentBoundingBox.height)){
+					if ($debug) Debug.write("BOTTOM");
+					if (this.bottomClassPanel!=""){
+						new lz[this.bottomClassPanel](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					} else {
+						new lz[this.activationVClassBounding](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					}
+				} else {
+					new lz[this.activationVClassBounding](parent,{
+						x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+					});
+				}
+			} else {
+				if (this.currentBoundingBox.x==0){
+					if ($debug) Debug.write("RIGHT");
+					if (this.rightClassPanel!=""){
+						new lz[this.rightClassPanel](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					} else {
+						new lz[this.activationClassBounding](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					}
+				} else if (this.currentBoundingBox.x==(parent.width-this.currentBoundingBox.width)){
+					if ($debug) Debug.write("LEFT");
+					if (this.leftClassPanel!=""){
+						new lz[this.leftClassPanel](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					} else {
+						new lz[this.activationClassBounding](parent,{
+							x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+						});
+					}
+				} else {
+					new lz[this.activationClassBounding](parent,{
+						x:this.currentBoundingBox.x,y:this.currentBoundingBox.y
+					});
+				}
+			}
+			this.currentBoundingBox.destroy();
+			this.close();
+		} else {
+			if(this.width>this.height){
+				new lz[this.activationVClassBounding](parent,{x:this.x,y:this.y});
+			} else {
+				new lz[this.activationClassBounding](parent,{x:this.x,y:this.y});
+			}
+			this.close();
+		}
+	</method>
+
+	
+	<!--- @keywords private
+		the arg obj is needed because the dragging can be called by the Box itself
+		or by a Box which is connected to this Box!  -->
+	<method name="_startDragState" args="obj">
+		this.bringToFront();
+		_calcdockingList();
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._startDragState(this);
+			}
+		}
+		//store position cause it wasn't dragged by itself
+		if (obj!=this){
+			storeAdjustmentToParent(obj.x,obj.y);
+		}
+		dragger.apply();
+		mousetracker_del.register(lz.Idle,'onidle');
+	</method>
+	
+	<!--- arranges the Box to be build into any border -->
+	<method name="checkStaticBorders" args="item">
+		<![CDATA[
+			if (!this.verticalClassActive){
+				//if ($debug) Debug.write("checkStaticBorders");
+				if (this.x<this.boundingbarrier){
+					this.setAttribute('visibility','hidden');
+					if (this.y<this.boundingbarrier){
+						//if ($debug) Debug.write("a1");
+						this.drawCurrentBoundingBox(0,0,this.vWidth,this.vHeight);
+					} else if ( (this.parent.height-(this.y+this.height))<this.boundingbarrier){
+						//if ($debug) Debug.write("a2");
+						this.drawCurrentBoundingBox(0,parent.height-this.vHeight,this.vWidth,this.vHeight);
+					} else {
+						//if ($debug) Debug.write("a3");
+						this.drawCurrentBoundingBox(0,this.y,this.width,this.height);
+					}
+				} else if (this.y<this.boundingbarrier){
+					this.setAttribute('visibility','hidden');
+					if ( (this.parent.width-(this.x+this.height))<this.boundingbarrier){
+						//if ($debug) Debug.write("b1");
+						this.drawCurrentBoundingBox((this.parent.width-this.vWidth),0,this.vWidth,this.vHeight);
+					} else {
+						//if ($debug) Debug.write("b2");
+						this.drawCurrentBoundingBox(this.x,0,this.vWidth,this.vHeight);
+					}
+				} else if ( (this.parent.width-(this.x+this.width))<this.boundingbarrier){
+					this.setAttribute('visibility','hidden');
+					//if ($debug) Debug.write("c");
+					if ( (this.parent.height-(this.y+this.height))<this.boundingbarrier){
+						this.drawCurrentBoundingBox(parent.width-this.vWidth,parent.height-this.vHeight,this.vWidth,this.vHeight);
+					} else {
+						this.drawCurrentBoundingBox(parent.width-this.width,this.y,this.width,this.height);
+					}
+				} else if ( (this.parent.height-(this.y+this.height))<this.boundingbarrier){
+					
+					this.setAttribute('visibility','hidden');
+					if ( (this.parent.width-(this.x+this.height))<this.boundingbarrier){
+						//if ($debug) Debug.write("d1");
+						this.drawCurrentBoundingBox(parent.width-this.vWidth,parent.height-this.vHeight,this.vWidth,this.vHeight);
+					} else {
+						//if ($debug) Debug.write("d2");
+						this.drawCurrentBoundingBox(this.x,parent.height-this.vHeight,this.vWidth,this.vHeight);
+					}
+				} else {
+					//if ($debug) Debug.write("d");
+					this.setAttribute('visibility','visible');
+					if (this.currentBoundingBox!=null) {
+						this.currentBoundingBox.destroy();
+						this.currentBoundingBox = null;
+					}
+				}
+			} else {
+				if (this.x<this.boundingbarrier){
+					//if ($debug) Debug.write("a",(this.parent.height-(this.y+this.width)));
+					this.setAttribute('visibility','hidden');
+					if (this.y<this.boundingbarrier){
+						//if ($debug) Debug.write("a1");
+						this.drawCurrentBoundingBox(0,0,this.width,this.height);
+					} else if ( (this.parent.height-(this.y+this.width))<this.boundingbarrier){
+						//if ($debug) Debug.write("a2");
+						this.drawCurrentBoundingBox(0,parent.height-this.height,this.width,this.height);
+					} else {
+						//if ($debug) Debug.write("a3");
+						this.drawCurrentBoundingBox(0,this.y,this.hWidth,this.hHeight);
+					}
+				} else if (this.y<this.boundingbarrier){
+					//if ($debug) Debug.write("b");
+					this.setAttribute('visibility','hidden');
+					if ( (this.parent.width-(this.x+this.width))<this.boundingbarrier){
+						this.drawCurrentBoundingBox(this.parent.width-this.width,0,this.width,this.height);
+					} else {
+						this.drawCurrentBoundingBox(this.x,0,this.width,this.height);
+					}
+				} else if ( (this.parent.width-(this.x+this.width))<this.boundingbarrier){
+					this.setAttribute('visibility','hidden');
+					if ( (this.parent.height-(this.y+this.width))<this.boundingbarrier){
+						this.drawCurrentBoundingBox(this.parent.width-this.width,parent.height-this.height,this.width,this.height);
+					} else {
+						this.drawCurrentBoundingBox(parent.width-this.hWidth,this.y,this.hWidth,this.hHeight);
+					}
+				} else if ( (this.parent.height-(this.y+this.height))<this.boundingbarrier){
+					this.setAttribute('visibility','hidden');
+					this.drawCurrentBoundingBox(this.x,parent.height-this.height,this.width,this.height);
+				} else {
+					//if ($debug) Debug.write("d");
+					this.setAttribute('visibility','visible');
+					if (this.currentBoundingBox!=null) {
+						this.currentBoundingBox.destroy();
+						this.currentBoundingBox = null;
+					}
+				}
+			}			
+		]]>
+	</method>
+	
+	<method name="drawCurrentBoundingBox" args="x,y,width,height">
+		if (this.currentBoundingBox!=null) this.currentBoundingBox.destroy();
+		this.currentBoundingBox = new lz.panelBoundBox(parent,{x:x,y:y,
+			width:width,height:height});
+	</method>
+	
+	<!--- Calc the List of Boxes which will be dragged and setposition if this Box
+		will be dragged,docked or minimized/maximized  -->
+	<method name="_calcdockingList">
+		//Clear list of conencted Boxes
+		this.dockinglist=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+
+				if (proof) this.dockinglist.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("this.dockinglist.length:",this.dockinglist.length);
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="arrangePosition">
+		//do the magic
+		//the idea is: look for all on the view container one level above this one
+		//and look for the width/height and 0/0 and look for "dockable" stuff there
+		var newx=this.x;
+		var newy=this.y;
+	  
+		<![CDATA[
+				
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				//left box-border
+				if ( ( ((this.x+this.width)-this.parent.subviews[eg].x) < this.dockingbarrier ) && ( ((this.x+this.width)-this.parent.subviews[eg].x) > -this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x - this.width );
+				}
+				//right box-border
+				if ( ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)<this.dockingbarrier ) && ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)>-this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x + this.parent.subviews[eg].width );
+				}
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < this.dockingbarrier ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y-this.height;
+				}
+				//bottom box-border
+				if ( ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) < this.dockingbarrier ) && ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y+this.parent.subviews[eg].height;
+				}
+			}
+		}
+		
+		//Check for Borders
+		//should be done _after_ checking for other dockable stuff so it gets 
+		//priority to dock against the border of parent view
+		if (this.x<this.dockingbarrier){
+			newx=0;
+		}
+		if (this.y<this.dockingbarrier){
+			newy=0;
+		}
+		if ( (this.parent.width-(this.x+this.width))<this.dockingbarrier){
+			newx=this.parent.width-this.width;
+		}
+		if ( (this.parent.height-(this.y+this.height))<this.dockingbarrier){
+			newy=this.parent.height-this.height;
+		}
+		
+		//set position
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		if ($debug) Debug.write("Position: ",newx,newy);
+		]]>
+	</method>
+	
+	<method name="storeAdjustmentToParent" args="objX,objY">
+		this.tempXdistance=objX-this.x;
+		this.tempYdistance=objY-this.y;
+	</method>
+	
+	<!--- @keywords private 
+		this method is needed because if the dragging end and
+		it was not dragged _itself_ it was draged just because a connected
+		dockable Box was dragged than it could be that the connected
+		Box was forced to dock against something different onmouseup
+		so you have to rearrange the old "adjustment"	-->
+	<method name="_lookforParentOnly" args="obj">
+		<![CDATA[		
+		var newx=obj.x-tempXdistance;
+		var newy=obj.y-tempYdistance;
+		
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<dragstate name="dragger" />
+    
+    <animator attribute="y" to="20" duration="1000" started="false" />
+        
+    <animator name="doOut" attribute="y" to="-500" duration="1000" started="false" onstop="parent.doDestroy()" />    
+    
+    <method name="doDestroy">
+        this.destroy();
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/baseLeftPanel.lzx b/WebContent/src/base/components/panel/baseLeftPanel.lzx
new file mode 100644
index 0000000..b0b686c
--- /dev/null
+++ b/WebContent/src/base/components/panel/baseLeftPanel.lzx
@@ -0,0 +1,64 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseLeftPanel" extends="baseBoundingBorderView" 
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" hasshadow="false">
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+	
+	<!--- Title of this window -->
+	<attribute name="title" type="string" value="basePanel" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+	<!-- basebgcolorizer -->
+	
+	<view name="_bgItem" x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" 
+			width="$once{ this.parent.width-2 }" height="$once{ this.parent.height-2 }" />
+	
+	<view x="1" y="1" width="$once{ this.parent.width-2 }" height="17" 
+		  bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }">
+        <handler name="onmousedown">
+        	parent.onmousedown.sendEvent(parent);
+        </handler>
+        <handler name="onmouseup">
+        	lz.Cursor.unlock();
+        	parent.onmouseup.sendEvent(parent);
+        </handler>
+        <handler name="onmouseover">
+        	//cursor="arrow_draw_panel_cursor" 
+        	lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
+        </handler>
+        <handler name="onmouseout">
+        	lz.Cursor.unlock();
+        </handler>
+		<view resource="draw_box_horizontal_rsc" />
+	</view>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/basePanel.lzx b/WebContent/src/base/components/panel/basePanel.lzx
new file mode 100644
index 0000000..75d0d32
--- /dev/null
+++ b/WebContent/src/base/components/panel/basePanel.lzx
@@ -0,0 +1,108 @@
+<?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.
+  
+-->
+<library>
+
+<class name="basePanel" extends="baseBoundingBorderView" 
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+	
+	<!--- Title of this window -->
+	<attribute name="title" type="string" value="basePanel" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+	<view width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" x="1" y="1" bgcolor="0xFFFFFF" />
+	<view x="1" y="1" width="${ this.parent.width-2 }" height="20" >
+				<view width="${ this.parent.parent.width-2 }" y="0" stretches="width"
+            resource="presenter_thumb_rsc" >
+            <handler name="oninit">
+            	<![CDATA[
+            		this.setColor(canvas.getThemeColor('basebgcolorizer'));
+            	]]>
+            </handler>
+			<method name="setTintRGB" args="color, brightness">
+			    <![CDATA[
+			    if (color != "" && color != null){
+			    	
+			        if (brightness == null) { brightness = 0; }
+			        var rgb = color;
+			        var red=(rgb >> 16) & 0xFF;
+			        var green=(rgb >> 8) & 0xFF;
+			        var blue=rgb & 0xFF;
+		
+			        this.setColorTransform( { ra : red, ga : green, ba : blue,
+			                            		rb : 0, gb : 0, bb : 0 } );
+			                            		
+			        if($debug) Debug.write("explorerBox/setTintRGB",this);
+			        if($debug) Debug.write("explorerBox/setTintRGB", { ra : red, ga : green, ba : blue, rb : 0, gb : 0, bb : 0 } );
+			    }
+			    ]]>
+			</method>            
+        </view>
+        <text fontsize="11" height="17" x="16" y="1" text="${ this.parent.parent.title }" 
+			fgcolor="0xFFFFFF" resize="true" fontstyle="bold" />
+		<button visible="${ this.parent.parent.closable }" x="${ this.parent.parent.width-23 }" 
+			y="1" text="X" height="18" width="20" >
+			<handler name="onmouseup">
+				this.parent.parent.close();
+			</handler>									
+		</button>
+		<view visible="${ !this.parent.parent.isopen }" x="2" y="3" resource="explorer_button_min_rsc">
+			<handler name="onmouseover">
+				this.setAttribute('frame',2);
+			</handler>
+			<handler name="onmouseout">
+				this.setAttribute('frame',1);
+			</handler>
+			<handler name="onmousedown">
+				this.setAttribute('frame',3);
+			</handler>	
+			<handler name="onmouseup">
+				this.setAttribute('frame',1);
+				this.parent.parent.toggleopen();
+			</handler>									
+		</view>
+		<view visible="${ this.parent.parent.isopen }" x="2" y="3" resource="explorer_button_max_rsc">
+			<handler name="onmouseover">
+				this.setAttribute('frame',2);
+			</handler>
+			<handler name="onmouseout">
+				this.setAttribute('frame',1);
+			</handler>
+			<handler name="onmousedown">
+				this.setAttribute('frame',3);
+			</handler>	
+			<handler name="onmouseup">
+				this.setAttribute('frame',1);
+				this.parent.parent.toggleopen();
+			</handler>									
+		</view>
+	</view>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/basePropertyPanel.lzx b/WebContent/src/base/components/panel/basePropertyPanel.lzx
new file mode 100644
index 0000000..48e4906
--- /dev/null
+++ b/WebContent/src/base/components/panel/basePropertyPanel.lzx
@@ -0,0 +1,105 @@
+<?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.
+  
+-->
+<library>
+
+<class name="basePropertyPanel" extends="view" >
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />		
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+	
+	<!--- Title of this window -->
+	<attribute name="title" type="string" value="basePanel" />
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+		
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+	<method name="toggleopen">
+		//if ($debug) Debug.write("toggleopen:: this.isopen", this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){		
+			this.setAttribute('height',this.initheight);
+			this.setAttribute('height',this.initheight);
+		} else {	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+    <handler name="oninit">
+    	this.initheight=this.height;
+    </handler>
+	
+	<view width="${ this.parent.width }" height="${ this.parent.height-2 }" 
+		  x="0" y="1"  />
+	
+    <view x="0" y="1" width="${ this.parent.width }" height="20" bgcolor="0xE0E1EB" />
+    
+    <view x="0" y="0" width="${ this.parent.width }" height="1" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" />
+    
+    <view x="0" y="19" width="${ this.parent.width }" height="1" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" />
+	
+		  
+    <view x="0" y="1" width="${ this.parent.width }" height="20" >
+		
+		<handler name="onclick">
+            this.parent.toggleopen();
+        </handler>
+		
+        <text fontsize="11" height="17" x="16" y="1" text="${ this.parent.parent.title }" 
+			fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" resize="true" fontstyle="bold" />
+			
+		<button visible="${ this.parent.parent.closable }" x="${ this.parent.parent.width-23 }" 
+			y="1" text="X" height="18" width="20" >
+			<handler name="onmouseup">
+				this.parent.parent.close();
+			</handler>									
+		</button>
+		
+		<view visible="${ !this.parent.parent.isopen }" x="2" y="2" resource="conferenceBox_button_min_small_rsc">
+			<handler name="onmouseup">
+				this.parent.parent.toggleopen();
+			</handler>	
+			<labelTooltip name="_labelTooltip" labelid="857" />								
+		</view>
+		
+		<view visible="${ this.parent.parent.isopen }" x="2" y="2" resource="conferenceBox_button_max_small_rsc">
+			<handler name="onmouseup">
+				this.parent.parent.toggleopen();
+			</handler>
+			<labelTooltip name="_labelTooltip" labelid="856" />									
+		</view>
+		
+	</view>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/baseTopPanel.lzx b/WebContent/src/base/components/panel/baseTopPanel.lzx
new file mode 100644
index 0000000..933fc58
--- /dev/null
+++ b/WebContent/src/base/components/panel/baseTopPanel.lzx
@@ -0,0 +1,62 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseTopPanel" extends="baseBoundingBorderView" 
+	   bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" hasshadow="false">
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+	
+	<!--- Title of this window -->
+	<attribute name="title" type="string" value="basePanel" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+	<view name="_bgItem" x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" 
+			width="$once{ this.parent.width-2 }" height="$once{ this.parent.height-2 }" />
+			
+	<view x="1" y="1" height="$once{ this.parent.height-2 }" width="17" 
+		  bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }">
+        <handler name="onmousedown">
+        	parent.onmousedown.sendEvent(parent);
+        </handler>
+        <handler name="onmouseup">
+        	lz.Cursor.unlock();
+        	parent.onmouseup.sendEvent(parent);
+        </handler>
+        <handler name="onmouseover">
+        	//cursor="arrow_draw_panel_cursor" 
+        	lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
+        </handler>
+        <handler name="onmouseout">
+        	lz.Cursor.unlock();
+        </handler>
+		<view resource="draw_box_vertical_rsc" />
+	</view>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/labelPanel.lzx b/WebContent/src/base/components/panel/labelPanel.lzx
new file mode 100644
index 0000000..34aac21
--- /dev/null
+++ b/WebContent/src/base/components/panel/labelPanel.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelPanel" extends="basePanel" >
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/library.lzx b/WebContent/src/base/components/panel/library.lzx
new file mode 100644
index 0000000..96746f9
--- /dev/null
+++ b/WebContent/src/base/components/panel/library.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="resources/" />
+	
+	<include href="baseBoundingBorderView.lzx" />
+	<include href="basePanel.lzx" />
+	<include href="baseTopPanel.lzx" />
+	<include href="baseLeftPanel.lzx" />
+	<include href="panelBoundBox.lzx" />
+	<include href="basePropertyPanel.lzx" />
+
+    
+</library>
diff --git a/WebContent/src/base/components/panel/panelBoundBox.lzx b/WebContent/src/base/components/panel/panelBoundBox.lzx
new file mode 100644
index 0000000..fb637a6
--- /dev/null
+++ b/WebContent/src/base/components/panel/panelBoundBox.lzx
@@ -0,0 +1,108 @@
+<?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.
+  
+-->
+<library>
+
+<!--
+
+<class name="drawViewNew" extends="drawview" cachebitmap="false" x="-1" y="-1" >
+ -->
+<class name="panelBoundBox" extends="drawview" cachebitmap="false" >
+	
+	<handler name="oncontext">
+		var numberColor = this.stringRgbToInteger(canvas.getThemeColor('basebgcolorizer'));
+		var fillColor = this.stringRgbToInteger(canvas.getThemeColor('baseMousecolorizer'));
+		this.drawBody(this,0,0,this.width,this.height,fillColor,2);
+		this.drawDottedLine(this,0,0,this.width,0,numberColor,2);
+		this.drawDottedLine(this,this.width,0,this.width,this.height,numberColor,2);
+		this.drawDottedLine(this,this.width,this.height,0,this.height,numberColor,2);
+		this.drawDottedLine(this,0,this.height,0,0,numberColor,2);
+	</handler>
+	
+	<method name="stringRgbToInteger" args="rgb">
+	    <![CDATA[
+	        var red=(rgb >> 16) & 0xFF;
+	        var green=(rgb >> 8) & 0xFF;
+	        var blue=rgb & 0xFF;
+	        return (red * 65536 + green * 256 + blue);
+	    ]]>
+	</method>
+	
+  	<method name="drawBody" args="targetObj,x1,y1,x2,y2,fill,lineWidth">
+   		<![CDATA[
+    		
+            //if ($debug) Debug.write("drawBody: ",targetObj,lineWidth);
+        
+    		targetObj.lineWidth = lineWidth;
+    		targetObj.beginPath();
+    		targetObj.moveTo(x1,y1);
+    		targetObj.lineTo(x1,y2);
+    		targetObj.lineTo(x2,y2);
+    		targetObj.lineTo(x2,y1);
+    		targetObj.lineTo (x1,y1);
+    		targetObj.closePath();
+
+    		targetObj.fillStyle = fill;
+    		targetObj.fill();
+    		
+    	]]>   
+  	</method> 	
+
+	<method name="drawDottedLine" args="targetObj,startx,starty,endx,endy,stroke,lineWidth">
+    	<![CDATA[
+    		//var drawObj = new lz.drawview(targetObj,{width:this.width,height:this.height});	    
+    		//if ($debug) Debug.write("drawDottedLine: ",targetObj,startx,starty,endx,endy,stroke,lineWidth);
+	    	Math.linearTween = function (t, b, c, d) {
+			    return c*t/d + b;
+			};
+
+    		//if($debug)  Debug.write("drawDashLine: ",tObject);
+    		var tx = endx;
+    		var ty = endy;
+    		var sx = startx;
+    		var sy = starty;
+    		var distance = Math.sqrt(Math.pow(tx-sx,2)+Math.pow(ty-sy,2)); 
+    		var steps = Math.floor(distance  / 5 ); 
+    		//if($debug)  Debug.write("steps: ",steps);
+    		var gap = false;
+    		//if($debug)  Debug.write("gap1: ",gap);
+	        for (var i = 1; i<=steps; ++i) {
+	            var ctx = Math.linearTween(i, sx, tx-sx,steps);    //equations by R.Penner!
+	            var cty = Math.linearTween(i, sy, ty-sy,steps);
+	            //if($debug)  Debug.write("gap2: ",gap);
+	            gap = !gap;    //abwechselnd luecke/nichtluecke
+	            if(!gap) {
+	            	//if($debug)  Debug.write(csx,csy,"|",ctx,cty);
+    				targetObj.strokeStyle = stroke;
+    				targetObj.lineWidth = lineWidth;
+    				targetObj.beginPath();    			            	
+	               	targetObj.moveTo(csx,csy);
+	                targetObj.lineTo(ctx,cty);
+	                targetObj.stroke();
+	            }
+	            csx =ctx;
+	            csy = cty;
+	        }       		  		
+    	]]>
+	</method>	
+	
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor.fla b/WebContent/src/base/components/panel/resources/arrow_cursor.fla
new file mode 100644
index 0000000..7937bab
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor.swf b/WebContent/src/base/components/panel/resources/arrow_cursor.swf
new file mode 100644
index 0000000..c41d8dc
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor.swf
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.fla b/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.fla
new file mode 100644
index 0000000..47f6ba9
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.swf b/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.swf
new file mode 100644
index 0000000..05a2e97
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_resize_tool.swf
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.fla b/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.fla
new file mode 100644
index 0000000..823ce08
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.swf b/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.swf
new file mode 100644
index 0000000..1bbb90c
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_rotate_tool.swf
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_tool.fla b/WebContent/src/base/components/panel/resources/arrow_cursor_tool.fla
new file mode 100644
index 0000000..dda794a
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_tool.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/arrow_cursor_tool.png b/WebContent/src/base/components/panel/resources/arrow_cursor_tool.png
new file mode 100644
index 0000000..a9f3169
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/arrow_cursor_tool.png
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/box_closed_small.fla b/WebContent/src/base/components/panel/resources/box_closed_small.fla
new file mode 100644
index 0000000..8b0d901
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/box_closed_small.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/box_closed_small.png b/WebContent/src/base/components/panel/resources/box_closed_small.png
new file mode 100644
index 0000000..ca34510
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/box_closed_small.png
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/box_open_small.fla b/WebContent/src/base/components/panel/resources/box_open_small.fla
new file mode 100644
index 0000000..1c04bc2
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/box_open_small.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/box_open_small.png b/WebContent/src/base/components/panel/resources/box_open_small.png
new file mode 100644
index 0000000..87597a3
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/box_open_small.png
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/draw_box_horizontal.fla b/WebContent/src/base/components/panel/resources/draw_box_horizontal.fla
new file mode 100644
index 0000000..223156d
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/draw_box_horizontal.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/draw_box_horizontal.swf b/WebContent/src/base/components/panel/resources/draw_box_horizontal.swf
new file mode 100644
index 0000000..c6748e5
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/draw_box_horizontal.swf
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/draw_box_vertical.fla b/WebContent/src/base/components/panel/resources/draw_box_vertical.fla
new file mode 100644
index 0000000..7ddd9a4
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/draw_box_vertical.fla
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/draw_box_vertical.swf b/WebContent/src/base/components/panel/resources/draw_box_vertical.swf
new file mode 100644
index 0000000..37ffa2c
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/draw_box_vertical.swf
Binary files differ
diff --git a/WebContent/src/base/components/panel/resources/library.lzx b/WebContent/src/base/components/panel/resources/library.lzx
new file mode 100644
index 0000000..9cfcfd4
--- /dev/null
+++ b/WebContent/src/base/components/panel/resources/library.lzx
@@ -0,0 +1,38 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- APL Author sebawagner -->
+	<resource name="conferenceBox_button_min_small_rsc" src="box_closed_small.png" />
+    <!-- APL Author sebawagner -->
+    <resource name="conferenceBox_button_max_small_rsc" src="box_open_small.png" />
+    <!-- APL Author sebawagner -->
+	<resource name="arrow_draw_panel_cursor" src="arrow_cursor.swf" />
+	<!-- APL Author sebawagner -->
+	<resource name="arrow_resize_panel_cursor" src="arrow_cursor_resize_tool.swf" />
+	<!-- APL Author sebawagner -->
+	<resource name="arrow_rotate_panel_cursor" src="arrow_cursor_rotate_tool.swf" />
+	<!-- APL Author sebawagner -->
+	<resource name="draw_box_vertical_rsc" src="draw_box_vertical.swf" />
+	<!-- APL Author sebawagner -->
+	<resource name="draw_box_horizontal_rsc" src="draw_box_horizontal.swf" />
+    
+</library>
diff --git a/WebContent/src/base/components/presenter/boxInitEffect.lzx b/WebContent/src/base/components/presenter/boxInitEffect.lzx
new file mode 100644
index 0000000..4391c93
--- /dev/null
+++ b/WebContent/src/base/components/presenter/boxInitEffect.lzx
@@ -0,0 +1,55 @@
+<?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.
+  
+-->
+<library>
+
+<class name="boxInitEffect" extends="view" width="100" height="20" 
+    opacity="0.3" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+    
+    <attribute name="zielx" value="200" type="number" />
+    <attribute name="ziely" value="200" type="number" />
+    <attribute name="zielwidth" value="100" type="number" />
+    <attribute name="zielheight" value="100" type="number" />
+    
+    <attribute name="objRef" value="null" />
+    
+    <handler name="oninit">
+    	//It seems like you need additionally to start it oninit, the start = true works
+    	//only for the first initialization, sebawagner 19.03.2012
+    	//the following call seems to be redundant after using non-deprecated attribute name -- solomax 2012.07.20 
+    	this.anm.setAttribute('started', true);
+    </handler>
+    
+    <method name="sendStop">
+        this.objRef.sendAnniComplete();
+        this.destroy();
+    </method>
+
+    <animatorgroup name="anm" started="true" process="simultaneous" 
+        		duration="500" onstop="this.parent.sendStop()" >
+        <animator attribute="x" to="$once{ parent.parent.zielx }" />
+        <animator attribute="y" to="$once{ parent.parent.ziely }" />
+        <animator attribute="width" to="$once{ parent.parent.zielwidth }" />
+        <animator attribute="height" to="$once{ parent.parent.zielheight }" />
+    </animatorgroup>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/presenter/guiPresenter.lzx b/WebContent/src/base/components/presenter/guiPresenter.lzx
new file mode 100644
index 0000000..5b1ed9e
--- /dev/null
+++ b/WebContent/src/base/components/presenter/guiPresenter.lzx
@@ -0,0 +1,546 @@
+<?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.
+  
+-->
+<library>     
+
+<class name="guiPresenter" extends="view" width="250" height="400" 
+    clickable="$once{ this.isdragable }"
+	onmousedown="this._startDragState(this)" onmouseup="this._removeDragState(this)" >
+    
+    <handler name="oninit">
+        this.setShadow();
+    </handler>
+    
+    <method name="setShadow">
+        <![CDATA[
+        if (this.isinited && this.hasshadow){
+            this.normalMC = this.getDisplayObject();
+            this.displacementMap = new flash.filters.DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>	    
+
+    <attribute name="hasshadow" value="true" type="boolean" />
+          
+	<!--- The Title of this Box -->
+	<attribute name="title" value="defaulttitle" type="string" />
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="true" type="boolean" />
+    
+    <!--- if this Box should be resizeable  -->
+    <attribute name="resizeable" value="true" type="boolean" />
+	
+	<!--- Can this Box be docked to others and 
+			the width/height of parent compoent barrier -->
+	<attribute name="docking" value="true" type="boolean" />
+	
+	<!--- Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there -->
+	<attribute name="dockingbarrier" value="15" type="number" />
+
+	<!---@keywords private the list of connected views -->
+	<attribute name="dockinglist" value="null" />
+	
+	<!--- @keywords private temp-older of x-distance to docked-Box  -->
+	<attribute name="tempXdistance" value="0" type="number" />
+
+	<!--- @keywords private temp-older of y-distance to docked-Box  -->
+	<attribute name="tempYdistance" value="0" type="number" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />	
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+    
+    <!--- @keywords private show minimize, maximize, close buttons -->
+    <attribute name="fullToolBar" value="true" type="boolean" />
+    
+    <attribute name="maximizable" value="true" type="boolean" />
+    
+    <attribute name="minimizable" value="true" type="boolean" />
+    
+    <attribute name="minimized" value="false" type="boolean" />
+    
+    <attribute name="customMinimizeMethod" value="false" type="boolean" />
+    
+    <attribute name="initialHeight" value="0" type="number"/>
+    
+    <!--- @keywords private if this window is dragable -->
+    <attribute name="isdragable" value="true" type="boolean" />
+    
+    <attribute name="_barmenuButtonRef" value="null" />
+    
+    <!--- if this Box should be resizeable  -->
+    <attribute name="ismaximized" value="false" type="boolean" />    
+    <attribute name="maxi_x" value="0" type="number" />
+    <attribute name="maxi_y" value="0" type="number" />
+    <attribute name="maxi_height" value="0" type="number" />
+    <attribute name="maxi_width" value="0" type="number" />
+    
+    <attribute name="isresizeing" value="false" type="boolean" />
+    
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="id">
+		this.labelid=id;
+		this.setAttribute('title',canvas.getLabelName(this.labelid));
+	</method>    
+	
+	<!--- the Event will be thrown if you close the Box -->
+	<event name="onclose" />    
+    
+	<!--- the Event will be thrown if you do click on it and drag -->
+	<event name="onactivate" />   
+    
+    <!--- this Event will be triggered after resizing -->
+    <event name="onresized" />
+    
+	<!--- @keywords private store initial height so toggleopen can reset height  -->
+	<handler name="oninit">
+		this.initheight=this.height;
+		//Debug.write("this.isopen: ",this.isopen);
+		if (!this.open) toggleopen();
+	</handler>
+    
+    <handler name="onwidth" args="w">
+        <![CDATA[
+            if (this.isresizeing){
+            	if (w<40){
+            		this.setAttribute('width',41); 
+            		this._resizeview.onmouseup.sendEvent();
+            	}
+                if (w<_titlebar._title.width+70) {
+                    this.setAttribute('width',_titlebar._title.width+71); 
+                    this._resizeview.onmouseup.sendEvent();
+                }
+            }
+        ]]>
+    </handler>
+    
+    <handler name="onheight" args="h">
+        <![CDATA[
+            if (this.isresizeing){
+                if (h<40) {
+                    this.setAttribute('height',41); 
+                    this._resizeview.onmouseup.sendEvent();
+                }
+            }
+        ]]>
+    </handler>
+    
+	<method name="close">
+		if (this.onclose) this.onclose.sendEvent();
+        if (this._barmenuButtonRef!=null){
+            this._barmenuButtonRef.destroy();
+            this._barmenuButtonRef.parent.onwidth.sendEvent();
+        }
+		this.destroy();
+	</method>
+    
+    <method name="minimize">
+        <![CDATA[
+	        this.setAttribute("minimized",true);
+	        
+	        this._titlebar._toolbar._minimize.setAttribute("visibility","hidden");
+	        this._titlebar._toolbar._maximize2.setAttribute("visibility","visible");
+	        
+	        if (this.customMinimizeMethod) {
+	            return;
+	        }
+	        
+	        for (var eg in this.subviews) {
+	            if (this.subviews[eg].name != "_titlebar" 
+	                    && this.subviews[eg].name != "_bg") {
+	                 this.subviews[eg].setAttribute("visibility","hidden");   
+	            }
+	        }
+            
+	        this.initialHeight = this.height;
+	        //this.setAttribute("height",20);
+            this._minimizeZoom.setAttribute("to",20);
+            this._minimizeZoom.setAttribute('started', true);
+        ]]>
+    </method>
+    
+    <method name="reminimize">
+        <![CDATA[
+	        this.setAttribute("minimized",false);
+	        
+	        this._titlebar._toolbar._minimize.setAttribute("visibility","visible");
+	        this._titlebar._toolbar._maximize2.setAttribute("visibility","hidden");
+	        
+	        if (this.customMinimizeMethod) {
+	            return;
+	        }
+	        
+	        //this.setAttribute("height",this.initialHeight); 
+            this._minimizeZoom.setAttribute("to",this.initialHeight);
+            this._minimizeZoom.setAttribute('started', true);
+        ]]>
+    </method>
+    
+    <method name="reminimizeComplete">
+        <![CDATA[
+	        if (!this.minimized) {
+	            
+	            for (var eg in this.subviews) {
+	                if (this.subviews[eg].name != "_titlebar" 
+	                        && this.subviews[eg].name != "_bg") {
+	                     this.subviews[eg].setAttribute("visibility","visible");   
+	                }
+	            }
+	            
+	            if (!this.resizeable) {
+	                this._resizeview.setAttribute("visibility","hidden");   
+	            }
+	        
+	        }
+        ]]>
+    </method>
+	
+	<method name="toggleopen">
+		//////Debug.write("this.isopen",this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					//////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					//////Debug.write("open new y",this.y+this.initheight);
+					this.dockinglist[eg].toggleOpenByParent(this.initheight-22);
+					this.dockinglist[eg].setAttribute('y',this.y+this.initheight);
+					
+				}
+			}			
+			this.setAttribute('height',this.initheight);
+		} else {
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					//////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					this.dockinglist[eg].toggleOpenByParent(-(this.initheight-22));
+					this.dockinglist[eg].setAttribute('y',this.y+22);
+				}
+			}	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+	<method name="toggleOpenByParent" args="changeY">
+		//////Debug.write("+++++ toggleOpenByParent +++++ changeY: ",this.title,changeY);
+		var tempList=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+				//////Debug.write("found some: ",this.parent.subviews[eg].title);
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+					
+				if (proof) tempList.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		//////Debug.write("tempList.length: ",tempList.length);
+		if (tempList.length!=0){
+			for (var eg in tempList){
+				if(tempList[eg].docking){
+					//////Debug.write("toggleOpenByParent 1 [eg],changeY: ",tempList[eg].title,changeY);
+					tempList[eg].toggleOpenByParent(changeY);
+					tempList[eg].setAttribute('y',tempList[eg].y+changeY);
+				}
+			}	
+		}
+		
+	</method>
+    
+    <method name="activate">
+        this.onactivate.sendEvent();
+        this.bringToFront();
+        if (this._barmenuButtonRef!=null) this._barmenuButtonRef.sendActiveWindow(this);
+    </method>
+    
+    <method name="rsapply">
+        this.isresizeing=true;
+        this.rs.apply();
+    </method>
+    
+    <method name="rsremove">
+        this.rs.remove();
+        this.isresizeing=false;
+        //Debug.write("rsremove",this,this.isinited);
+        this.onresized.sendEvent();
+    </method>    
+    	
+	<!--- @keywords private  -->
+	<method name="_removeDragState" args="obj">
+        if (!this.ismaximized){
+            //It's important to remove the dragger and do docking stuff before you check for conencted Boxes
+            dragger.remove();
+            if (obj==this){
+                if (docking) arrangePosition();
+            } else {
+                if (docking) _lookforParentOnly(obj);
+            }
+                
+            //check for connected Boxes
+            for (var eg in this.dockinglist){
+                if(this.dockinglist[eg].docking){
+                    this.dockinglist[eg]._removeDragState(this);
+                }
+            }
+        }
+	</method>
+
+
+	
+	<!--- @keywords private
+		the arg obj is needed because the dragging can be called by the Box itself
+		or by a Box which is connected to this Box!  -->
+	<method name="_startDragState" args="obj">
+        this.activate();
+        if (!this.ismaximized){
+            _calcdockingList();
+            for (var eg in this.dockinglist){
+                if(this.dockinglist[eg].docking){
+                    this.dockinglist[eg]._startDragState(this);
+                }
+            }
+            //store position cause it wasn't dragged by itself
+            if (obj!=this){
+                storeAdjustmentToParent(obj.x,obj.y);
+            }
+            dragger.apply();
+        }
+	</method>
+	
+	<!--- Calc the List of Boxes which will be dragged and setposition if this Box
+		will be dragged,docked or minimized/maximized  -->
+	<method name="_calcdockingList">
+		//Clear list of conencted Boxes
+		this.dockinglist=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+
+				if (proof) this.dockinglist.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		//////Debug.write("this.dockinglist.length:",this.dockinglist.length);
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="arrangePosition">
+		//do the magic
+		//the idea is: look for all on the view container one level above this one
+		//and look for the width/height and 0/0 and look for "dockable" stuff there
+		var newx=this.x;
+		var newy=this.y;
+	  
+		<![CDATA[
+				
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				//left box-border
+				if ( ( ((this.x+this.width)-this.parent.subviews[eg].x) < this.dockingbarrier ) && ( ((this.x+this.width)-this.parent.subviews[eg].x) > -this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x - this.width );
+				}
+				//right box-border
+				if ( ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)<this.dockingbarrier ) && ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)>-this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x + this.parent.subviews[eg].width );
+				}
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < this.dockingbarrier ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y-this.height;
+				}
+				//bottom box-border
+				if ( ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) < this.dockingbarrier ) && ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y+this.parent.subviews[eg].height;
+				}
+			}
+		}
+		
+		//Check for Borders
+		//should be done _after_ checking for other dockable stuff so it gets 
+		//priority to dock against the border of parent view
+		if (this.x<this.dockingbarrier){
+			newx=0;
+		}
+		if (this.y<this.dockingbarrier){
+			newy=0;
+		}
+		if ( (this.parent.width-(this.x+this.width))<this.dockingbarrier){
+			newx=this.parent.width-this.width;
+		}
+		if ( (this.parent.height-(this.y+this.height))<this.dockingbarrier){
+			newy=this.parent.height-this.height;
+		}
+
+		//set position
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<method name="storeAdjustmentToParent" args="objX,objY">
+		this.tempXdistance=objX-this.x;
+		this.tempYdistance=objY-this.y;
+	</method>
+	
+	<!--- @keywords private 
+		this method is needed because if the dragging end and
+		it was not dragged _itself_ it was draged just because a connected
+		dockable Box was dragged than it could be that the connected
+		Box was forced to dock against something different onmouseup
+		so you have to rearrange the old "adjustment"	-->
+	<method name="_lookforParentOnly" args="obj">
+		<![CDATA[		
+		var newx=obj.x-tempXdistance;
+		var newy=obj.y-tempYdistance;
+		
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<dragstate name="dragger" />
+    
+	<view name="_bg" width="${ this.parent.width }" height="${ this.parent.height }" 
+        bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" > 
+        <view width="${ this.parent.width-2 }" height="${ this.parent.height-2 }"
+             x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
+    </view>        
+    
+	<view x="1" y="1" width="${ this.parent.width-1 }" height="20" name="_titlebar" >
+		<!-- stretches="width" -->
+		<gradientview x="0" width="${ this.parent.width }" height="20"
+				colorFrom="$once{ canvas.getThemeColor('baseMousecolorizer') }"
+				colorTo="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" >
+		</gradientview>
+		
+        <text name="_title" fontsize="10" height="17" x="6" y="1" text="${ this.parent.parent.title }" 
+			fgcolor="0xFFFFFF" resize="true" fontstyle="bold" />
+			
+	    <view name="_toolbar" visibility="$once{ ((parent.parent.fullToolBar) ? 'visible' : 'hidden' ) }" 
+	        x="${ parent.width-this.width-2 }" layout="axis:x;spacing:0" y="2">     
+            
+            <miniIconsPresenter name="_minimize"
+                visibility="$once{ ((parent.parent.parent.minimizable) ? 'visible' : 'hidden' ) }" 
+                iconRessourceName="btn_presenter_minimize">
+                <handler name="onclick">
+                    this.parent.parent.parent.minimize();
+                </handler>
+                <labelTooltip labelid="856" />
+            </miniIconsPresenter>
+            
+            <miniIconsPresenter name="_maximize2" visibility="hidden"
+                iconRessourceName="btn_presenter_maximize">
+                <handler name="onclick">
+                    this.parent.parent.parent.reminimize();
+                </handler>
+                <labelTooltip labelid="857" />
+            </miniIconsPresenter>
+            
+	        <miniIconsPresenter name="_close"
+	            visibility="$once{ ((parent.parent.parent.closable) ? 'visible' : 'hidden' ) }"
+	            iconRessourceName="btn_presenter_close2">
+	            <handler name="onclick">
+	                this.parent.parent.parent.close();
+	            </handler>
+	            <labelTooltip labelid="430" />
+	        </miniIconsPresenter>  
+            
+	    </view>  			
+	</view>
+    <handler name="onaddsubview" args="v">
+		//Debug.write("onaddsubview",v);
+		if (v.parent.subviews.length>2) this._resizeview.bringToFront();
+    </handler>
+    <view visibility="$once{ ((this.parent.resizeable) ? 'visible' : 'hidden' ) }"
+        name="_resizeview" x="${ this.parent.width - 16 }" 
+        y="${ this.parent.height - 16 }" resource="explorer_resize_rsc" 
+        cursor="explorer_resizemouse_rsc" onmousedown="this.parent.rsapply()"
+        onmouseup="this.parent.rsremove()" >
+        <labelTooltip text="resize" />
+    </view>    
+    <resizestate name="rs"/>
+    
+    <animator name="_minimizeZoom" attribute="height" 
+              duration="750" to="20" started="false">
+        <handler name="onstop" args="s">
+            parent.reminimizeComplete();
+        </handler>
+    </animator>
+    
+</class>
+
+<class name="miniIconsPresenter" extends="view">
+    
+    <attribute name="iconRessourceName" value="" type="string"/>
+    
+    <handler name="onmouseover">
+        this._bg.setAttribute("bgcolor",0xFFFFFF);
+        this._bg.setAttribute("visibility","visible");
+    </handler>
+    
+    <handler name="onmouseout">
+        this._bg.setAttribute("visibility","hidden");
+    </handler>
+    
+    <handler name="onmousedown">
+        this._bg.setAttribute("bgcolor",canvas.getThemeColor('basebgcolorizer'));
+        this._bg.setAttribute("visibility","visible");
+    </handler>
+    
+    <handler name="onmouseup">
+        this._bg.setAttribute("visibility","hidden");
+    </handler>
+    
+    <view name="_bg" visibility="hidden" opacity="0.7"
+          width="14" height="14" x="1" y="1" bgcolor="0xFFFFFF" />
+          
+    <view name="_itemRsc" resource="$once{ parent.iconRessourceName }" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/presenter/library.lzx b/WebContent/src/base/components/presenter/library.lzx
new file mode 100644
index 0000000..9472fa8
--- /dev/null
+++ b/WebContent/src/base/components/presenter/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="resources/" />
+	<include href="boxInitEffect.lzx" />
+	<include href="guiPresenter.lzx" />
+
+    
+</library>
diff --git a/WebContent/src/base/components/presenter/resources/close_mo.png b/WebContent/src/base/components/presenter/resources/close_mo.png
new file mode 100644
index 0000000..b9d0f94
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/close_mo.png
Binary files differ
diff --git a/WebContent/src/base/components/presenter/resources/close_up.png b/WebContent/src/base/components/presenter/resources/close_up.png
new file mode 100644
index 0000000..79d3b72
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/close_up.png
Binary files differ
diff --git a/WebContent/src/base/components/presenter/resources/library.lzx b/WebContent/src/base/components/presenter/resources/library.lzx
new file mode 100644
index 0000000..994ca29
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/library.lzx
@@ -0,0 +1,42 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- APL Author sebawagner -->
+	<resource src="presenter_thumb.swf" name="presenter_thumb_rsc" />
+    <!-- APL Author sebawagner -->
+    <resource name="btn_presenter_minimize" src="minimize_up.png" />
+    <!-- APL Author sebawagner -->
+    <resource name="btn_presenter_maximize" src="maximize_up.png" />
+    <!-- APL Author sebawagner -->
+    <resource name="btn_presenter_maximize2" src="maximize2_up.png" />
+    
+    <!-- APL Author sebawagner -->
+    <resource name="btn_presenter_close2" src="close_up.png" />
+    
+    <!-- APL Author sebawagner -->
+	<resource name="btn_presenter_close">
+        <frame src="close_up.png" />
+        <frame src="close_mo.png" />
+        <frame src="close_up.png" />
+    </resource> 
+    
+</library>
diff --git a/WebContent/src/base/components/presenter/resources/maximize2_up.png b/WebContent/src/base/components/presenter/resources/maximize2_up.png
new file mode 100644
index 0000000..1edd23b
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/maximize2_up.png
Binary files differ
diff --git a/WebContent/src/base/components/presenter/resources/maximize_up.png b/WebContent/src/base/components/presenter/resources/maximize_up.png
new file mode 100644
index 0000000..778c05c
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/maximize_up.png
Binary files differ
diff --git a/WebContent/src/base/components/presenter/resources/minimize_up.png b/WebContent/src/base/components/presenter/resources/minimize_up.png
new file mode 100644
index 0000000..1637298
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/minimize_up.png
Binary files differ
diff --git a/WebContent/src/base/components/presenter/resources/presenter_thumb.swf b/WebContent/src/base/components/presenter/resources/presenter_thumb.swf
new file mode 100644
index 0000000..84f8b96
--- /dev/null
+++ b/WebContent/src/base/components/presenter/resources/presenter_thumb.swf
Binary files differ
diff --git a/WebContent/src/base/components/resetCombobox.lzx b/WebContent/src/base/components/resetCombobox.lzx
new file mode 100644
index 0000000..ae0a855
--- /dev/null
+++ b/WebContent/src/base/components/resetCombobox.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+    <class name="resetCombobox" extends="combobox" editable="false" shownitems="12"
+    	   style="componentStyle" itemclassname="labeldTextListItem">
+    
+    	<method name="getNumItems">
+    		return this.cblist.getNumItems();
+    	</method>
+    
+        <method name="reset" >
+            <![CDATA[
+                var currentCount = this.cblist.getNumItems();
+                for (var i = 0; i < currentCount; i++)
+                    this.removeItemAt(0);
+                this.clearSelection();
+            ]]>
+        </method>
+    
+    </class>
+        
+</library>
diff --git a/WebContent/src/base/components/scrollbars/library.lzx b/WebContent/src/base/components/scrollbars/library.lzx
new file mode 100644
index 0000000..9ee00e1
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/library.lzx
@@ -0,0 +1,44 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- APL Author sebawagner -->
+	<resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" />
+	
+	<!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbmiddle_rsc" src="resources/scrollthumb_y_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbtop_rsc" src="resources/scrollthumb_y_top.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbbottom_rsc" src="resources/scrollthumb_y_bottom.swf" />
+    <!-- APL Author sebawagner -->
+   	<resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" />
+	<!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbmiddle_rsc" src="resources/scrollthumb_x_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbleft_rsc" src="resources/scrollthumb_x_left.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbright_rsc" src="resources/scrollthumb_x_right.swf" />
+
+	<include href="om_vscrollbar.lzx"/>
+	<include href="om_hscrollbar.lzx"/>
+
+</library>
diff --git a/WebContent/src/base/components/scrollbars/om_hscrollbar.lzx b/WebContent/src/base/components/scrollbars/om_hscrollbar.lzx
new file mode 100644
index 0000000..036fed6
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/om_hscrollbar.lzx
@@ -0,0 +1,61 @@
+<?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.
+  
+-->
+<library>
+
+<class name="om_hscrollbar" extends="basescrollbar" styleable="false"
+    axis="x">
+
+    <!--- @keywords private -->
+    <attribute name="height" value="10"/>
+    
+    <!--- @keywords private -->
+    <method name="_showEnabled">
+        <![CDATA[
+        if (!_enabled) {
+        	//this.scrolltrack.thumb.setAttribute('height', 0);
+            this.scrolltrack.thumb.setAttribute('visibility', 'hidden');
+        } else {
+            this.scrolltrack.thumb.setAttribute('visibility', 'visible');
+        }
+        super._showEnabled();
+    ]]>
+    </method>
+
+	<view name="rightarrow" width="0" />
+    <view name="scrolltrack">
+    	 <basescrolltrack name="left"
+           resource="omscrolltrack_x_rsc" stretches="width">
+         	<attribute name="height" value="${parent.height}"/>
+            <attribute name="width" value="${parent.width}"/>  
+         </basescrolltrack>
+         <basescrollthumb name="thumb" x="1">
+             <view resource="omscrollbar_xthumbleft_rsc"/>
+             <view resource="omscrollbar_xthumbmiddle_rsc" stretches="both"/>
+             <view resource="omscrollbar_xthumbright_rsc"/>
+             <stableborderlayout axis="x"/>
+        </basescrollthumb>
+    </view>
+
+	<view height="0" name="leftarrow" />
+    <stableborderlayout axis="x"/>
+
+</class>
+</library>
diff --git a/WebContent/src/base/components/scrollbars/om_vscrollbar.lzx b/WebContent/src/base/components/scrollbars/om_vscrollbar.lzx
new file mode 100644
index 0000000..98623ed
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/om_vscrollbar.lzx
@@ -0,0 +1,61 @@
+<?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.
+  
+-->
+<library>
+
+<class name="om_vscrollbar" extends="basescrollbar" styleable="false"
+    axis="y">
+
+    <!--- @keywords private -->
+    <attribute name="width" value="10"/>
+    
+    <!--- @keywords private -->
+    <method name="_showEnabled">
+        <![CDATA[
+        if (!_enabled) {
+        	//this.scrolltrack.thumb.setAttribute('height', 0);
+            this.scrolltrack.thumb.setAttribute('visibility', 'hidden');
+        } else {
+            this.scrolltrack.thumb.setAttribute('visibility', 'visible');
+        }
+        super._showEnabled();
+    ]]>
+    </method>
+
+	<view name="toparrow" height="0" />
+    <view name="scrolltrack">
+    	 <basescrolltrack name="top"
+           resource="omscrolltrack_y_rsc" stretches="height">
+         	<attribute name="height" value="${parent.height}"/>
+            <attribute name="width" value="${parent.width}"/>  
+         </basescrolltrack>
+         <basescrollthumb name="thumb" x="1">
+             <view resource="omscrollbar_ythumbtop_rsc"/>
+             <view resource="omscrollbar_ythumbmiddle_rsc" stretches="both"/>
+             <view resource="omscrollbar_ythumbbottom_rsc"/>
+             <stableborderlayout axis="y"/>
+        </basescrollthumb>
+    </view>
+
+	<view height="0" name="bottomarrow" />
+    <stableborderlayout axis="y"/>
+
+</class>
+</library>
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_left.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_left.swf
new file mode 100644
index 0000000..fd9411b
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_left.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_mid.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_mid.swf
new file mode 100644
index 0000000..fff3744
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_mid.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_right.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_right.swf
new file mode 100644
index 0000000..74ea64a
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_x_right.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_bottom.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_bottom.swf
new file mode 100644
index 0000000..09a370b
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_bottom.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_mid.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_mid.swf
new file mode 100644
index 0000000..af9015f
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_mid.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_top.swf b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_top.swf
new file mode 100644
index 0000000..c701740
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/scrollthumb_y_top.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/x_scrolltrack.swf b/WebContent/src/base/components/scrollbars/resources/x_scrolltrack.swf
new file mode 100644
index 0000000..937dd8d
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/x_scrolltrack.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/resources/y_scrolltrack.swf b/WebContent/src/base/components/scrollbars/resources/y_scrolltrack.swf
new file mode 100644
index 0000000..b05b88a
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/resources/y_scrolltrack.swf
Binary files differ
diff --git a/WebContent/src/base/components/scrollbars/scrollbar_yresources.lzx b/WebContent/src/base/components/scrollbars/scrollbar_yresources.lzx
new file mode 100644
index 0000000..bc08ffe
--- /dev/null
+++ b/WebContent/src/base/components/scrollbars/scrollbar_yresources.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+
+    
+</library>
\ No newline at end of file
diff --git a/WebContent/src/base/components/simplevaluelist/library.lzx b/WebContent/src/base/components/simplevaluelist/library.lzx
new file mode 100644
index 0000000..b9ca8fe
--- /dev/null
+++ b/WebContent/src/base/components/simplevaluelist/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="simpleValueList.lzx" />
+    <include href="recordValueList.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/simplevaluelist/recordValueList.lzx b/WebContent/src/base/components/simplevaluelist/recordValueList.lzx
new file mode 100644
index 0000000..95cacae
--- /dev/null
+++ b/WebContent/src/base/components/simplevaluelist/recordValueList.lzx
@@ -0,0 +1,52 @@
+<?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.
+  
+-->
+<library>
+
+<class name="recordListItem" extends="baseContentListItem" height="24">
+    
+    <attribute name="valueName" type="string" value="" />
+    <attribute name="value" type="number" value="0" />
+    
+	<turnOverTextItem text="$once{ parent.valueName }" width="226" />    
+    
+	<view width="60" height="24"
+		onclick="new lz.confirmDeleteWindow(canvas.main_content._content.inner,{refObj:this});" >		
+		<method name="confirmDelete">
+            this.parent.parent.parent.parent.parent.itemToDelete=this;
+			this.parent.parent.parent.parent.parent.deleteItem.sendEvent(parent);
+		</method>
+		<image stretches="both" width="16" height="16" 
+			 src="$once{ canvas.getThemeImage('button_cancel_rsc') }"
+			 align="center" y="4" />
+		<labelTooltip labelid="274" />
+	</view>	
+</class>
+	
+	
+<class name="recordValueList" extends="turnOverList" >
+    
+    <attribute name="itemToDelete" value="null" />
+    
+    <event name="deleteItem" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/simplevaluelist/simpleValueList.lzx b/WebContent/src/base/components/simplevaluelist/simpleValueList.lzx
new file mode 100644
index 0000000..2807c56
--- /dev/null
+++ b/WebContent/src/base/components/simplevaluelist/simpleValueList.lzx
@@ -0,0 +1,180 @@
+<?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.
+  
+-->
+<library>
+
+<class name="simpleListItem" extends="view"
+	bgcolor="0xFFFFFF" onmouseup="this.parent.parent.parent.parent.toggleSelected(this)" >
+	<handler name="onmouseover">
+		<![CDATA[
+			if (this.selected) this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'))
+			else this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'));
+		]]>
+	</handler>
+	<handler name="onmouseout">
+		<![CDATA[
+			if (this.selected)  this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'))
+			else this.setAttribute('bgcolor',0xFFFFFF);
+		]]>
+	</handler>
+	<attribute name="selected" value="false" type="boolean"/>
+	<attribute name="value" value="null" />
+	<attribute name="text" value="" type="string" />
+	<text text="$once{ parent.text }" resize="true" fontsize="11" />
+</class>
+	
+	
+<class name="simpleValueList" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" >
+	
+	<attribute name="_selected" value="null" />
+	
+	<attribute name="multiselect" value="false" type="boolean" />
+    
+    <attribute name="itemclassname" type="string" value="simpleListItem" />
+	
+	<event name="onselect" />
+	
+	<method name="toggleSelected" args="obj">
+		<![CDATA[
+			var downkeys = lz.Keys.downKeysArray;
+			
+			//Select the Obj
+			
+			
+			if(downkeys.length==1 && downkeys[0]==17 && this.multiselect){
+				if (this._selected == null) this._selected = new Array();
+				if (this._checkForAlreadySelected(obj)) {
+					obj.setAttribute('selected',false);
+					obj.setAttribute('bgcolor',0xFFFFFF);
+				} else {
+					obj.setAttribute('selected',true);
+					this._selected.push(obj);
+				}				
+			} else if (downkeys.length==0 && this.multiselect){
+				if (this._selected == null) this._selected = new Array();
+				this._deslectAll();
+				obj.setAttribute('selected',true);
+				this._selected.push(obj);	
+			} else if (!this.multiselect) {
+				if(this._selected!=null) {
+					this._selected.setAttribute('selected',false);
+					this._selected.setAttribute('bgcolor',0xFFFFFF);
+				}
+				this._selected = obj;
+			    this._selected.setAttribute('selected',true);
+			} else {
+				Debug.warning("not handled",this);
+			}
+			
+		]]>
+	</method>
+	
+	<method name="_checkForAlreadySelected" args="obj">
+		<![CDATA[
+			for (var i=0;i<this._selected.length;i++){
+				if (this._selected[i]==obj) {
+					this._selected.splice(i,1);
+					return true;
+				}
+			}
+			return false;
+		]]>
+	</method>
+	
+	<method name="_deslectAll">
+		<![CDATA[
+			for (var i=0;i<this._selected.length;i++){
+				this._selected[i].setAttribute('selected',false);
+				this._selected[i].setAttribute('bgcolor',0xFFFFFF);
+			}
+			this._selected=new Array();
+		]]>
+	</method>
+	
+    <method name="addItem" args="txt,value">
+    	new lz[this.itemclassname](this.content.content.inn,{text:txt,value:value,width:this.width});
+    </method>
+	
+    <method name="removeItem" args="value">
+		<![CDATA[
+			if (this._selected!=null){
+				if (this.multiselect){
+					for (var i=0;i<this._selected.length;i++){
+						if (this._selected[i].value==value){
+							this._selected.splice(i,1);
+						}
+					}
+				} else {
+					if (this._selected.value==value) this._selected==null;
+				}
+			}
+			for (var i=0;i<this.content.content.inn.subviews.length;i++){
+				if(this.content.content.inn.subviews[i].value==value){
+					this.content.content.inn.subviews[i].destroy();
+				}
+			}
+		]]>
+    </method>
+	<method name="checkValue" args="value">
+		<![CDATA[
+			var t = this.getAllObjects();
+			if (t!=null){
+				for (var i=0;i<t.length;i++){
+					if (t[i].value==value) return true;
+				}
+			}
+			return false;
+		]]>
+	</method>		
+		
+    <method name="getAllItems">
+    	<![CDATA[
+    	var a = new Array();
+    	for (var i=0;i<this.content.content.inn.subviews.length;i++){
+    		//Debug.write("t: ",this.content.content.inn.subviews[i].value);
+    		a.push(Number(this.content.content.inn.subviews[i].value));
+    	}
+    	return a;
+    	]]>
+    </method>
+	<method name="getAllObjects">
+    	<![CDATA[
+    	var a = new Array();
+    	for (var i=0;i<this.content.content.inn.subviews.length;i++){
+    		a.push(this.content.content.inn.subviews[i]);
+    	}
+    	return a;
+    	]]>
+	</method>
+    <method name="clearList">
+    	for (var eg in this.content.content.inn.subviews){
+    		this.content.content.inn.subviews[eg].destroy();
+    	}
+    </method>
+    <view name="content" width="$once{ parent.width-2 }" height="$once{ parent.height-2 }"
+    	x="1" y="1" clip="true" bgcolor="0xFFFFFF">
+    	<view name="content" >
+    		<view name="inn" layout="axis:y;spacing:2" />
+    	</view>
+    	<om_vscrollbar />
+    </view>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/tableCombobox.lzx b/WebContent/src/base/components/tableCombobox.lzx
new file mode 100644
index 0000000..d8d8fb6
--- /dev/null
+++ b/WebContent/src/base/components/tableCombobox.lzx
@@ -0,0 +1,36 @@
+<?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.
+  
+-->
+<library>
+
+<class name="tableCombobox" extends="combobox" editable="false" fontsize="10" style="componentStyle">
+    <attribute name="initvalue" type="string" />
+    <attribute name="tvalue" type="string" />
+    <attribute name="sendchange" value="false" type="boolean" />
+    <handler name="oninit">
+        this.parent.parent.parent.parent.loadModsCombo(this);
+        this.selectItem(this.initvalue);
+    </handler>
+    <handler name="onblur">
+        if (this.sendchange) this.parent.sendchange(this,tvalue,this.getValue());
+    </handler>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/tableListItem.lzx b/WebContent/src/base/components/tableListItem.lzx
new file mode 100644
index 0000000..fffa1ad
--- /dev/null
+++ b/WebContent/src/base/components/tableListItem.lzx
@@ -0,0 +1,65 @@
+<?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.
+  
+-->
+<library>
+
+<class name="tableListItem" extends="view"
+    bgcolor="${ ( this.isaltered ) ? red : white }" height="22">
+    
+    <handler name="oninit">
+        this.changeholder = new Array();
+    </handler>
+
+    <attribute name="isdatarecord" value="true" type="boolean" />
+    
+    <attribute name="changeholder" value="null" />
+    <attribute name="isaltered" value="false" type="boolean" />
+
+    <method name="sendchange" args="obj,oldv,newv">
+        ////Debug.write("check Update");
+        var t = false;
+        for (var eg in this.changeholder){
+            if (this.changeholder[eg][0]==obj){
+                t = true;
+                this.changeholder[eg][1]=oldv;
+                this.changeholder[eg][2]=newv;
+                break;
+            }
+        }
+        if (!t) this.changeholder.push(new Array(obj,oldv,newv));
+        
+        t = false;
+        for (var eg in this.changeholder){
+            if (this.changeholder[eg][1]!=this.changeholder[eg][2]){
+                t = true;
+                break;
+            }
+        }
+        
+        this.setAttribute('isaltered',t);
+        this._doupdate.setValue(t);
+        this.parent.parent.parent.sendchange(this);
+        
+    </method>
+    <simplelayout axis="x" spacing="3" inset="2" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/borderedInputtext.lzx b/WebContent/src/base/components/text/borderedInputtext.lzx
new file mode 100644
index 0000000..4e74e26
--- /dev/null
+++ b/WebContent/src/base/components/text/borderedInputtext.lzx
@@ -0,0 +1,204 @@
+<?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.
+  
+-->
+<library>
+
+<class name="borderedInputtext" extends="view" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+    <!---@keywords private -->
+	<attribute name="width" value="200" type="size" />
+	<!---@keywords private -->
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <!---@keywords private -->
+    <event name="onblur" />
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>         	
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="$once{parent.multiline}" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+  		<attribute name="preText" value="" type="string" />
+  		<handler name="onfocus">
+  			this.preText = this.getText();
+  		</handler>
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t=this.preText;
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+            if (this.parent.onblur) this.parent.onblur.sendEvent();
+      	</handler>
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+        </handler>       	           
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+<class name="borderedMultiInputtext" extends="view">
+    <!---@keywords private -->
+	<attribute name="width" value="200" type="size" />
+    <!---@keywords private -->	
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>       
+    <!---@keywords private -->  	
+	<attribute name="bgcolor" value="0xA3B2CC" type="color" />
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="true" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t="0";
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+      	</handler>   
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+            if(this.multiline) this.init();
+        </handler>       	           
+        <method name="init">
+            super.init();        
+        </method>
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+<class name="borderedPasswordText" extends="view">
+    <!---@keywords private -->
+	<attribute name="width" value="200" type="size" />
+	<!---@keywords private -->
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>  
+    <!---@keywords private -->       	
+	<attribute name="bgcolor" value="0xA3B2CC" type="color" />
+	<!---@keywords private -->
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="$once{parent.multiline}" password="true" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t="0";
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+      	</handler>   
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+        </handler>       	           
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/customEdittext.lzx b/WebContent/src/base/components/text/customEdittext.lzx
new file mode 100644
index 0000000..b8e1ce6
--- /dev/null
+++ b/WebContent/src/base/components/text/customEdittext.lzx
@@ -0,0 +1,236 @@
+<?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.
+  
+-->
+<library>
+
+<class name="customEdittext" extends="inputtext" bgcolor="0xFFFFFF" fontsize="11" height="20" >
+	
+	<view name="v_border" height="1"       bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" width="$once{parent.width}" />
+    <view name="h_border" width="1"  y="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="$once{parent.height -1}" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	
+	<attribute name="isvalidInput" value="true" type="boolean" />
+	<attribute name="regexpType" value="none" type="string" />
+	<attribute name="regexpLabelid" type="number" />
+	<attribute name="preText" value="" type="string" />
+    <attribute name="emailRegEx" type="string" value=""/>
+	
+	<event name="onafterCheck" />
+
+	<handler name="onfocus" args="f">
+    	this.preText = this.getText();
+    </handler>
+    
+    <handler name="oninit">
+    <![CDATA[
+    	emailRegEx = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{1,3})$";
+    	//this.field.setAttribute("bgcolor",0xFFFFFF);
+    ]]>
+    </handler>
+    
+    <handler name="ontext" args="txt">
+    	<![CDATA[
+            
+    	    //
+    	   
+    	    if (System.capabilities.os.indexOf('Linux')==-1) { 
+                return; 
+	        }
+	        
+	        //if ($debug) Debug.write("System.capabilities.os -- START ",System.capabilities.os,txt);
+	        
+	        if (txt == null || txt.length == 0) {
+	        	return;
+	        }
+	        
+	        
+	        //UTF8 character remappings
+            var cp1252 = new Object();
+            cp1252[0x20ac]=0x80;
+            cp1252[0x201a]=0x82;
+            cp1252[0x0192]=0x83;
+            cp1252[0x201e]=0x84;
+            cp1252[0x2026]=0x85;
+            cp1252[0x2020]=0x86;
+            cp1252[0x2021]=0x87;
+            cp1252[0x02c6]=0x88;
+            cp1252[0x2030]=0x89;
+            cp1252[0x0160]=0x8a;
+            cp1252[0x2039]=0x8b;
+            cp1252[0x0152]=0x8c;
+            cp1252[0x017d]=0x8e;
+            cp1252[0x2018]=0x91;
+            cp1252[0x2019]=0x92;
+            cp1252[0x201c]=0x93;
+            cp1252[0x201d]=0x94;
+            cp1252[0x2022]=0x95;
+            cp1252[0x2013]=0x96;
+            cp1252[0x2014]=0x97;
+            cp1252[0x02dc]=0x98;
+            cp1252[0x2122]=0x99;
+            cp1252[0x0161]=0x9a;
+            cp1252[0x203a]=0x9b;
+            cp1252[0x0153]=0x9c;
+            cp1252[0x017e]=0x9e;
+            cp1252[0x0178]=0x9f;
+    	
+            
+            var s=eval(Selection.getFocus()); 
+            var t=txt;
+                    
+            var i=Selection.getCaretIndex()-1; 
+            
+            //if ($debug) Debug.write("i",i,Selection.getCaretIndex());
+            
+            var d=i;
+            
+            //if ($debug) Debug.write("DO WHILE -1- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i,0x80,0xBF);
+            
+            while (((t.charCodeAt(i)>=0x80 && t.charCodeAt(i)<=0xBF) || (cp1252[t.charCodeAt(i)])) && i>0) {
+            	
+            	//if ($debug) Debug.write("DO WHILE -2- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i);
+            	
+                if (cp1252[t.charCodeAt(i)]) {
+                    t=t.substr(0,i)+String.fromCharCode(cp1252[t.charCodeAt(i)])+t.substr(i+1);
+                }
+                i--;
+            }
+            if (i==d) { 
+            	//if ($debug) Debug.write("i == d NOTHING TO REPLACE!");
+                return; 
+            }
+        
+            var u=0;
+            
+            if (t.charCodeAt(i)>=0xC2 && t.charCodeAt(i)<=0xDF && d-i==1) {
+                 // two-byte sequence
+                u= (t.charCodeAt(i+1) & 0x3F)       +
+                  ((t.charCodeAt(i  ) & 3   ) << 6) +
+                  ((t.charCodeAt(i  ) & 0x1C) << 6);
+            } else if (t.charCodeAt(i)>=0xE0 && t.charCodeAt(i)<=0xEF && d-i==2) {
+                // three-byte sequence
+                // (Flash Player doesn't cope with any more obscure Unicode)
+                u= (t.charCodeAt(i+2) & 0x3F)        +
+                  ((t.charCodeAt(i+1) & 3   ) << 6 ) +
+                  ((t.charCodeAt(i+1) & 0x3C) << 6 ) +
+                  ((t.charCodeAt(i  ) & 0x0F) << 12);
+            }
+        
+            if (u!=0) {
+            	//if ($debug) Debug.write("Replace String -1- ",txt,u,"Replace With ",String.fromCharCode(u));
+            	
+                this.setAttribute("text",t.slice(0,i)+String.fromCharCode(u)+t.slice(d+1));
+                
+                //if ($debug) Debug.write("Replace String -2- ",txt,u);
+                
+                this.setAttribute("text",this.text.split(String.fromCharCode(0x03)).join(''));
+            }
+            
+            //if ($debug) Debug.write("-- END ",this.text);
+            
+    	]]>
+    </handler>
+    
+    <attribute name="callDelegate" value="null" />
+    <attribute name="regExpCheckId" value="-1" />
+	
+	<handler name="onblur">
+		<![CDATA[
+			if (this.regexpType!="none"){
+			
+				//if ($debug) Debug.write("onblur");
+				//if ($debug) Debug.write("onblur check ",this.regexpType);		
+				var fieldValue = this.getText();
+				if (this.regexpType=="email") {
+					//var regExpV = ".+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)";
+					var regExpV = this.emailRegEx;
+					//var regExpV = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
+					this.regexpLabelid = 519;
+				} else if (this.regexpType=="date"){
+					var regExpV = "(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d";
+					this.regexpLabelid = 518;
+				} else if (this.regexpType=="float"){
+					var regExpV = "[0-9]*\\.[0-9]*";
+					this.regexpLabelid = 520;
+				} else if (this.regexpType=="phone"){
+					var regExpV = "\\+[0-9]+ [0-9]+ [0-9\\-]+";
+					this.regexpLabelid = 522;
+				} else if (this.regexpType=="number"){
+					var regExpV = "[0-9]*";
+					this.regexpLabelid = 521;
+				} else if (this.regexpType=="time"){
+					var regExpV = "([01][0-9]|2[0-3]):[0-5][0-9]";
+					this.regexpLabelid = 523;
+				} else {
+					if ($debug) Debug.warn("Unkown Regexp Type: ",this.regexpType);
+				}
+				//if ($debug) Debug.write("regExpV: ",regExpV);
+		  	    var fieldValue = this.getText();
+		  	    
+		  	    this.regExpCheckId = canvas.doRegExpCheck(this.getText(),regExpV);
+		  	    
+		  	    if(this.callDelegate == null) {
+		  	    	this.callDelegate = new LzDelegate( this, "checkRegExpResult" );
+		  	    }
+		
+				lz.Timer.resetTimer( this.callDelegate, 50 );
+			}
+		]]>
+	</handler>
+	
+	<method name="checkRegExpResult" args="item">
+		var tResult = canvas.checkRegExpResult(this.regExpCheckId);
+     	if ($debug) Debug.write("callback",tResult);
+     
+		if(tResult == undefined || tResult == null) {
+			lz.Timer.resetTimer( this.callDelegate, 50 );
+		} else {
+			if(!tResult){
+                if ($debug) Debug.warn("FALSE: regexperror");
+              	disablesTooltips(new lz.regexptip(canvas,{x:this.getAttributeRelative('x',canvas)+12,
+              					y:this.getAttributeRelative('y',canvas)+26,
+              					regexptext:canvas.getLabelName(this.regexpLabelid)}));
+              	this.usePreContent();
+              	this.setAttribute('isvalidInput',false);
+            } else {
+              	if(!this.isvalidInput){
+                	disablesTooltips(null);
+              	}
+              	this.setAttribute('isvalidInput',true);
+            }
+            if ($debug) Debug.write("-- Complete --");
+            this.onafterCheck.sendEvent();
+		}
+     </method>
+	
+    
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    
+  	<method name="usePreContent">
+  		this.setAttribute('text',this.preText);
+  	</method>    
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/customInputtext.lzx b/WebContent/src/base/components/text/customInputtext.lzx
new file mode 100644
index 0000000..4301a29
--- /dev/null
+++ b/WebContent/src/base/components/text/customInputtext.lzx
@@ -0,0 +1,156 @@
+<?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.
+  
+-->
+<library>
+
+<class name="customInputtext" extends="inputtext">
+	  
+	 <!-- lost selection workaroud -->
+	 <attribute name="selPosition" type="integer"/>
+	 <attribute name="selSize" type="integer"/>
+	 <!-- this method should be called before the component lost focus -->
+	 <method name="saveselection">
+	 	this.selPosition=getSelectionPosition();
+	 	this.selSize=getSelectionSize();
+	 </method>
+	  
+	 <handler name="onfocus">
+	 
+	 	if ($debug) Debug.write("customInputtext onFocus : ", canvas.isrtl);
+	 		
+	 
+		 if(canvas.isrtl == 'true'){
+	 		if ($debug) Debug.write("customInputtext onFocus : RTL is set");
+	 		this.setAttribute('textalign', 'right');
+        }
+        else{
+        	if ($debug) Debug.write("customInputtext onFocus : RTL is NOT set");
+      		this.setAttribute('textalign', 'left');
+        
+        }
+	 </handler>	  
+	  
+	 <handler name="ontext" args="txt">
+        <![CDATA[
+            
+            //
+           
+            if (System.capabilities.os.indexOf('Linux')==-1) { 
+                return; 
+            }
+            
+            //if ($debug) Debug.write("System.capabilities.os -- START ",System.capabilities.os,txt);
+            
+            if (txt == null || txt.length == 0) {
+                return;
+            }
+            
+            
+            //UTF8 character remappings
+            var cp1252 = new Object();
+            cp1252[0x20ac]=0x80;
+            cp1252[0x201a]=0x82;
+            cp1252[0x0192]=0x83;
+            cp1252[0x201e]=0x84;
+            cp1252[0x2026]=0x85;
+            cp1252[0x2020]=0x86;
+            cp1252[0x2021]=0x87;
+            cp1252[0x02c6]=0x88;
+            cp1252[0x2030]=0x89;
+            cp1252[0x0160]=0x8a;
+            cp1252[0x2039]=0x8b;
+            cp1252[0x0152]=0x8c;
+            cp1252[0x017d]=0x8e;
+            cp1252[0x2018]=0x91;
+            cp1252[0x2019]=0x92;
+            cp1252[0x201c]=0x93;
+            cp1252[0x201d]=0x94;
+            cp1252[0x2022]=0x95;
+            cp1252[0x2013]=0x96;
+            cp1252[0x2014]=0x97;
+            cp1252[0x02dc]=0x98;
+            cp1252[0x2122]=0x99;
+            cp1252[0x0161]=0x9a;
+            cp1252[0x203a]=0x9b;
+            cp1252[0x0153]=0x9c;
+            cp1252[0x017e]=0x9e;
+            cp1252[0x0178]=0x9f;
+        
+            
+            var s=eval(Selection.getFocus()); 
+            var t=txt;
+                    
+            var i=Selection.getCaretIndex()-1; 
+            
+            //if ($debug) Debug.write("i",i,Selection.getCaretIndex());
+            
+            var d=i;
+            
+            //if ($debug) Debug.write("DO WHILE -1- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i,0x80,0xBF);
+            
+            while (((t.charCodeAt(i)>=0x80 && t.charCodeAt(i)<=0xBF) || (cp1252[t.charCodeAt(i)])) && i>0) {
+                
+                //if ($debug) Debug.write("DO WHILE -2- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i);
+                
+                if (cp1252[t.charCodeAt(i)]) {
+                    t=t.substr(0,i)+String.fromCharCode(cp1252[t.charCodeAt(i)])+t.substr(i+1);
+                }
+                i--;
+            }
+            if (i==d) { 
+                //if ($debug) Debug.write("i == d NOTHING TO REPLACE!");
+                return; 
+            }
+        
+            var u=0;
+            
+            if (t.charCodeAt(i)>=0xC2 && t.charCodeAt(i)<=0xDF && d-i==1) {
+                 // two-byte sequence
+                u= (t.charCodeAt(i+1) & 0x3F)       +
+                  ((t.charCodeAt(i  ) & 3   ) << 6) +
+                  ((t.charCodeAt(i  ) & 0x1C) << 6);
+            } else if (t.charCodeAt(i)>=0xE0 && t.charCodeAt(i)<=0xEF && d-i==2) {
+                // three-byte sequence
+                // (Flash Player doesn't cope with any more obscure Unicode)
+                u= (t.charCodeAt(i+2) & 0x3F)        +
+                  ((t.charCodeAt(i+1) & 3   ) << 6 ) +
+                  ((t.charCodeAt(i+1) & 0x3C) << 6 ) +
+                  ((t.charCodeAt(i  ) & 0x0F) << 12);
+            }
+        
+            if (u!=0) {
+                //if ($debug) Debug.write("Replace String -1- ",txt,u,"Replace With ",String.fromCharCode(u));
+                
+                this.setAttribute("text",t.slice(0,i)+String.fromCharCode(u)+t.slice(d+1));
+                
+                //if ($debug) Debug.write("Replace String -2- ",txt,u);
+                
+                this.setAttribute("text",this.text.split(String.fromCharCode(0x03)).join(''));
+            }
+            
+            //if ($debug) Debug.write("-- END ",this.text);
+            
+        ]]>
+    </handler>
+  	
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/customscrollEdittext.lzx b/WebContent/src/base/components/text/customscrollEdittext.lzx
new file mode 100644
index 0000000..626e9ad
--- /dev/null
+++ b/WebContent/src/base/components/text/customscrollEdittext.lzx
@@ -0,0 +1,55 @@
+<?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.
+  
+-->
+<library>
+   
+<include href="incubator/scrolledittext.lzx" />
+
+<class name="customScrollEdittext" extends="view" >
+	
+	<attribute name="text" value="" type="string" />
+	
+	<event name="ontextChange" />
+
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribtue('text',canvas.getLabelName(this.labelid));
+    </method>
+    
+    <method name="getText">
+    	return this._cbtext.getText();
+    </method>
+    
+    <view name="_face" bgcolor="0xFFFFFFF" 
+          width="$once{parent.width}" 
+          height="$once{parent.height}" />
+          
+    <view name="v_border" height="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" width="$once{parent.width}" />
+    <view name="h_border" width="1"  y="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="$once{parent.height -1}" />
+          
+    <scrolledittext name="_cbtext" width="$once{ parent.width-1 }" x="1" y="1" bgcolor="0xFFFFFF"  styleable="false"
+		height="$once{ parent.height-1 }" text="${ parent.text }" vscrollbarclassname="om_vscrollbar"
+		multiline="true" fontsize="11" />
+    
+     
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/labelText.lzx b/WebContent/src/base/components/text/labelText.lzx
new file mode 100644
index 0000000..6387078
--- /dev/null
+++ b/WebContent/src/base/components/text/labelText.lzx
@@ -0,0 +1,59 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelText" extends="text" resize="true" fontsize="11" >
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+
+<class name="labelTextWidthTooltip" extends="text" resize="true" 
+	   onmouseover="" onmouseout=""
+	   fontsize="11" >
+	
+	<attribute name="labelLabelid" type="number" value="-1" />
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+	<labelTooltip name="_labelTooltip" labelid="$once{ parent.labelLabelid }" />
+	
+</class>
+
+<class name="labeldTextListItem" extends="textlistitem">
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    <labelTooltip initByDataPathparent="true" />
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/labelTooltip.lzx b/WebContent/src/base/components/text/labelTooltip.lzx
new file mode 100644
index 0000000..b143407
--- /dev/null
+++ b/WebContent/src/base/components/text/labelTooltip.lzx
@@ -0,0 +1,141 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelTooltip" extends="view" visible="false" >
+
+	<attribute name="inittwice" value="false" type="boolean" />
+    <attribute name="multiline" value="false" type="boolean" />
+    <attribute name="ismenubuttonlabel" value="false" type="boolean" />
+    <attribute name="initByDataPathparent" value="false" type="boolean" />
+    
+    <attribute name="holder" value="null" />
+    
+    <event name="setContent" />
+        
+    <handler name="onmouseover" reference="this.parent">
+    	<![CDATA[
+            this.setContent.sendEvent();
+	    	if (this.ismenubuttonlabel){
+	    		this.parent.setLabel();
+	    	}
+	    	if (this.inittwice){
+	    		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	    	}
+	    	if (this.initByDataPathparent){
+                this.setAttribute('text',parent.text);
+            }
+	        var xVal = canvas.getMouse('x');
+	        var yVal = canvas.getMouse('y');
+			////Debug.write("mytext: ",this.mytext);
+			if (this.multiline && this.text.length!=0){
+				this.holder = new lz.xmlCrmTooltipMulti(canvas,{text:this.text,holder:this});
+			} else if (this.text.length!=0){
+				this.holder = new lz.xmlCrmTooltip(canvas,{text:this.text,holder:this});
+			}
+	        if (xVal<canvas.width/2){
+	            xVal += 0;
+	        } else {
+	            xVal -= this.holder.width-14;
+	        }
+	        if (yVal<canvas.height/2){
+	            yVal += 24;
+	        } else {
+	            yVal -= 24;
+	        }
+	        if (this.holder!=null)  {
+	           this.holder.setAttribute('x',xVal);
+	           this.holder.setAttribute('y',yVal);
+            }
+            canvas.registerToolTip(this);
+        ]]>        
+    </handler>
+    <handler name="onmouseout" reference="this.parent">
+        this.cleanHolder();
+    </handler>
+    <handler name="onmouseup" reference="this.parent">
+        this.cleanHolder();
+    </handler>
+    <handler name="onclick" reference="this.parent">
+        this.cleanHolder();
+    </handler>   
+    <method name="cleanHolder">
+        if (this.holder!=null) {
+            this.holder.destroy();
+            this.holder = null; 
+            canvas.clearToolTip();
+        }
+    </method> 
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    <attribute name="text" value="" type="string" />
+</class>
+
+<class name="xmlCrmTooltip" extends="view" bgcolor="0x000000" 
+    width="${ this._text.width+2 }" height="${ this._text.height+2 }" >
+    <attribute name="text" value="" type="string" />
+    <attribute name="holder" value="null" />
+    <text x="1" y="1" text="${ parent.text }" resize="true" 
+        fontsize="10" name="_text" bgcolor="0xFFFFFF" />
+    <handler name="onmouseout">
+        this.destroy();
+    </handler>
+    <handler name="oninit">
+        this.setShadow();
+    </handler>
+    <method name="setShadow" >
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+           	this.displacementMap = new flash.filters.DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method> 
+</class>
+
+<class name="xmlCrmTooltipMulti" extends="view" bgcolor="0x000000" 
+    width="${ this._text.width+2 }" height="${ this._text.height+2 }" >
+    <attribute name="text" value="" type="string" />
+    <attribute name="holder" value="null" />
+    <text x="1" y="1" text="${ parent.text }" resize="true" 
+        fontsize="10" name="_text" bgcolor="0xFFFFFF" multiline="true" />
+    <handler name="oninit">
+        this.setShadow();
+    </handler>
+    <method name="setShadow" >
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+           	this.displacementMap = new flash.filters.DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>	    
+    <handler name="onmouseout">
+        this.destroy();
+    </handler>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/text/library.lzx b/WebContent/src/base/components/text/library.lzx
new file mode 100644
index 0000000..facbdab
--- /dev/null
+++ b/WebContent/src/base/components/text/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="borderedInputtext.lzx" />
+	<include href="labelText.lzx" />
+	<include href="labelTooltip.lzx" />
+    <include href="customEdittext.lzx" />
+    <include href="customscrollEdittext.lzx" />
+    <include href="customInputtext.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/baseContentListItem.lzx b/WebContent/src/base/components/turnoverlist/baseContentListItem.lzx
new file mode 100644
index 0000000..799bed3
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/baseContentListItem.lzx
@@ -0,0 +1,70 @@
+<?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.
+  
+-->
+<library>
+
+<!--- base class for the item list views-->
+<class name="baseContentListItem" extends="view" 
+	   layout="axis:x;spacing:0" bgcolor="0xFFFFFF" >
+	
+	<attribute name="isselected" value="false" type="boolean"/>
+	
+	<method name="select">
+		this.isselected = true;
+		this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'));
+	</method>
+	
+	<method name="deselect">
+		this.isselected = false;
+		this.setAttribute('bgcolor',0xFFFFFF);
+	</method>
+	
+	<method name="doDeselect">
+		this.deselect();
+	</method>
+	
+	<handler name="onmouseover">
+		if (!this.isselected) {
+			this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'));
+		}
+	</handler>
+	
+	<handler name="onmouseout">
+		if (!this.isselected) {
+			this.setAttribute('bgcolor',0xFFFFFF);
+		} else {
+			this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'));
+		}
+	</handler>
+	
+	<handler name="onclick">
+		if ($debug) Debug.write("baseContentListItem -- onclick");
+		this.parent.parent.parent.parent.onclickedItem.sendEvent(this);
+	</handler>
+    
+    <handler name="ondblclick">
+		this.parent.parent.parent.parent.ondblclickedItem.sendEvent(this);
+	</handler>
+	
+    <attribute name="obj" value="null" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/library.lzx b/WebContent/src/base/components/turnoverlist/library.lzx
new file mode 100644
index 0000000..32abb86
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/library.lzx
@@ -0,0 +1,38 @@
+<?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.
+  
+-->
+<library>
+    
+    <!-- APL Author sebawagner -->
+    <resource name="width_gripper_rsc" src="resources/width_change_cursor.swf" />
+
+	<!-- APL Author sebawagner -->
+	<resource name="sort_asc_turnover_rsc" src="resources/sort_asc.png" />
+	
+	<!-- APL Author sebawagner -->
+	<resource name="sort_desc_turnover_rsc" src="resources/sort_desc.png" />
+	    
+	<include href="turnOverList.lzx" />
+    <include href="simpleTurnOverList.lzx" />
+	<include href="turnOverListHeaderItem.lzx" />
+	<include href="turnOverTextItem.lzx" />
+    <include href="baseContentListItem.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/resources/sort_asc.png b/WebContent/src/base/components/turnoverlist/resources/sort_asc.png
new file mode 100644
index 0000000..a5c9c8b
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/resources/sort_asc.png
Binary files differ
diff --git a/WebContent/src/base/components/turnoverlist/resources/sort_desc.png b/WebContent/src/base/components/turnoverlist/resources/sort_desc.png
new file mode 100644
index 0000000..acdb200
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/resources/sort_desc.png
Binary files differ
diff --git a/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.fla b/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.fla
new file mode 100644
index 0000000..7205efb
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.fla
Binary files differ
diff --git a/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.swf b/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.swf
new file mode 100644
index 0000000..39e0f00
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/resources/width_change_cursor.swf
Binary files differ
diff --git a/WebContent/src/base/components/turnoverlist/simpleTurnOverList.lzx b/WebContent/src/base/components/turnoverlist/simpleTurnOverList.lzx
new file mode 100644
index 0000000..fd021fe
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/simpleTurnOverList.lzx
@@ -0,0 +1,102 @@
+<?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.
+  
+-->
+<library>
+	
+<!--- common simpleTurnOverList view class. -->
+<class name="simpleTurnOverList" extends="view">
+    
+    <attribute name="_selected" value="null"/>
+    
+    <event name="ondblclickedItem" />
+
+    <handler name="onclickedItem" args="itemObj">
+        if (this._selected != null) {
+            this._selected.deselect();
+        }
+        this._selected = itemObj;
+        this._selected.select();
+    </handler>
+	
+	<attribute name="mainBgColor" value="0xEEF0EB" />
+    
+	<method name="addHeaderItem" args="labelid,width" >
+		new lz.turnOverListHeaderItem(this._innerlisthead._inn,{labelid:labelid,width:width,subviewsid:this._innerlisthead._inn.subviews.length});
+	</method>
+    
+    <method name="sendInitialWidthUpdate">
+        for (var eg in this._innerlisthead._inn.subviews) {
+            this._innerlisthead._inn.subviews[eg].onwidth.sendEvent(this._innerlisthead._inn.subviews[eg].width);
+        }
+    </method> 
+	
+	<method name="sendWidthUpdate" args="w,subviewsid" >
+		<![CDATA[
+		////Debug.write(w,subviewsid,this._innerlist._inn);
+		for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+			this._innerlist._inn._inn.subviews[i].subviews[subviewsid].setAttribute('width',w);
+		}
+		]]>
+	</method>
+    
+    <method name="initValues" args="numberOfRecords">
+        <![CDATA[
+            this._records.setAttribute('text',numberOfRecords + ' ' + canvas.getLabelName(272) );
+        ]]>
+    </method>
+	
+	<method name="clearList">
+        this._selected = null;
+		this._innerlist._inn._inn.destroy();
+		new lz.innerList(this._innerlist._inn,{name:'_inn'});
+	</method>
+    
+    <!-- =========  BgArea area  =========-->
+    <view width="$once{ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
+          height="$once{ parent.height-20 }" x="0" y="20">
+        <view width="$once{ parent.width-2 }" bgcolor="$once{ parent.parent.mainBgColor }"
+          height="$once{ parent.height-2 }" x="1" y="1"></view>
+    </view>
+    
+	<!-- =========  Control area  =========-->
+
+    <labelText name="_records" x="2" resize="true" />
+    
+    
+	<!-- =========  List Header area  =========-->
+
+	<view name="_innerlisthead" height="20" x="1" width="$once{ parent.width-2 }"
+         y="22" clip="true">
+        <view name="_inn" x="${ parent.parent._innerlist._inn.x }" layout="axis:x;spacing:0" />
+    </view> 
+	
+	<!-- =========  List Contents area  =========-->
+	<view name="_innerlist" height="$once{ parent.height-43 }" x="1" width="$once{ parent.width-2 }"
+		y="42" clip="true" bgcolor="$once{ parent.mainBgColor }">
+		<view name="_inn" >
+			<innerList name="_inn" />
+		</view>
+		<om_vscrollbar />
+		<om_hscrollbar />
+	</view>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/turnOverList.lzx b/WebContent/src/base/components/turnoverlist/turnOverList.lzx
new file mode 100644
index 0000000..821b20f
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/turnOverList.lzx
@@ -0,0 +1,283 @@
+<?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.
+  
+-->
+<library>
+
+<!--- private class for turnOverList only. -->
+<class name="innerList" layout="axis:y;spacing:1" />
+	
+<!--- common TurnOverList view class. -->
+<class name="turnOverList" extends="view" >
+
+	<attribute name="start" value="0" type="number" />
+	<attribute name="step" value="100" type="number" />
+	<attribute name="orderby" value="firstname" type="string" />
+	<attribute name="asc" value="true" type="boolean" />
+	<attribute name="records" value="0" type="number" />
+	
+	<attribute name="_selected" value="null"/>
+    <attribute name="currentSelectedOrder" value="null" />
+    <attribute name="mainBgColor" value="0xEEF0EB" />
+	
+	<event name="oncallnext" />
+	<event name="oncallpre" />
+	<event name="ondblclickedItem" />
+    <event name="onUpdateOrder" />
+	
+	<method name="callfirst">
+		this.start = 0;
+		this.oncallnext.sendEvent();
+	</method>
+    
+    <method name="clearSelection">
+        if (this._selected != null) {
+            this._selected.deselect();
+        }
+    </method>
+	
+	<handler name="onclickedItem" args="itemObj">
+		if (this._selected != null) {
+			this._selected.deselect();
+		}
+		this._selected = itemObj;
+		this._selected.select();
+	</handler>
+	
+	<method name="calllast">
+		var newMaxPages = Math.floor(this.records/this.step);
+        if ($debug) Debug.write("calllast 1 ",newMaxPages);
+        this.start = newMaxPages*this.step;
+        if ($debug) Debug.write("calllast 2 ",this.start);
+        if (this.start == this.records) {
+            this.start = this.records-this.step;
+        }
+        if ($debug) Debug.write("calllast 3 ",this.start);
+        if ($debug) Debug.write("calllast 4 ",this.records);
+        this.oncallnext.sendEvent();
+        this.onload.sendEvent();
+        
+		//this.start = this.records-this.step;
+		//this.oncallnext.sendEvent();
+	</method>
+	
+	<method name="callnext">
+		this._next1.setAttribute('enabled',false);
+		this._pre2.setAttribute('enabled',false);
+		if (this.records>(this.start+this.step)){
+			this.start+=this.step;
+		}
+		this.oncallnext.sendEvent();
+	</method>
+	
+	<method name="callpre">
+		this._next1.setAttribute('enabled',false);
+		this._pre2.setAttribute('enabled',false);
+		if (this.start>0){
+			this.start-=this.step;
+		}
+		this.oncallpre.sendEvent();
+	</method>
+	
+	<method name="initValues" args="rec">
+		<![CDATA[
+            this.records = rec;
+            if (this.records>(this.start+this.step)){
+                this._next1.setAttribute('enabled',true);
+            } else {
+                this._next1.setAttribute('enabled',false);
+            }
+            if (this.start>0){
+                this._pre2.setAttribute('enabled',true);
+            } else {
+                this._pre2.setAttribute('enabled',false);
+            }
+            this._records.setAttribute('text',this.start + ' - ' +(this.start+this.step) + ' ' + canvas.getLabelName(272) + ' ' + this.records);
+		]]>
+	</method>
+	
+	<method name="addHeaderItem" args="labelid,width" >
+		new lz.turnOverListHeaderItem(this._innerlisthead._inn,{labelid:labelid,width:width,subviewsid:this._innerlisthead._inn.subviews.length});
+	</method>
+	
+	<method name="addHeaderItemOrdered" args="labelid,width,orderBy,asc,isSelected" >
+        new lz.turnOverListHeaderItemOrdered(this._innerlisthead._inn,{
+                labelid:labelid,width:width,
+                orderBy:orderBy,asc:asc,isSelected:isSelected,
+                subviewsid:this._innerlisthead._inn.subviews.length
+            });
+    </method> 
+    
+    <method name="updateOrder" args="itemRef">
+        <![CDATA[
+            //only do that if the previous orderBy != new orderby
+            //if (this.currentSelectedOrder == null || 
+            //        this.currentSelectedOrder.orderBy != itemRef.orderBy){
+            if (itemRef.isSelected) {
+                itemRef.asc = !itemRef.asc;
+            } else {
+                itemRef.isSelected = true;
+            }
+            if (itemRef.asc) {
+                itemRef._sortUp.setAttribute('visibility','hidden');
+                itemRef._sortDown.setAttribute('visibility','visible');
+            } else {
+                itemRef._sortUp.setAttribute('visibility','visible');
+                itemRef._sortDown.setAttribute('visibility','hidden'); 
+            }
+            
+            //do not perform search on initial Selection
+            var isInitSelect = false;
+            if (this.currentSelectedOrder != null) {
+                if (this.currentSelectedOrder.orderBy != itemRef.orderBy) {
+                    this.currentSelectedOrder.isSelected = false;
+                    this.currentSelectedOrder._sortUp.setAttribute('visibility','hidden');
+                    this.currentSelectedOrder._sortDown.setAttribute('visibility','hidden'); 
+                }
+            } else {
+                isInitSelect = true;
+            }
+            this.currentSelectedOrder = itemRef;
+            
+            if ($debug) Debug.write("updateOrder: ",itemRef,itemRef.orderBy,itemRef.asc,isInitSelect);
+            this.setAttribute('orderby',itemRef.orderBy);
+            this.setAttribute('asc',itemRef.asc);
+            
+            if (!isInitSelect){
+                this.onUpdateOrder.sendEvent(itemRef);
+            }
+            //}
+        ]]>
+    </method>
+    
+    <method name="sendInitialWidthUpdate">
+        for (var eg in this._innerlisthead._inn.subviews) {
+            this._innerlisthead._inn.subviews[eg].onwidth.sendEvent(this._innerlisthead._inn.subviews[eg].width);
+        }
+    </method> 
+	
+	<method name="sendWidthUpdate" args="w,subviewsid" >
+		<![CDATA[
+		////Debug.write(w,subviewsid,this._innerlist._inn);
+		for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+			this._innerlist._inn._inn.subviews[i].subviews[subviewsid].setAttribute('width',w);
+		}
+		]]>
+	</method>
+	
+	<method name="clearList">
+		this._selected = null;
+		this._innerlist._inn._inn.destroy();
+		new lz.innerList(this._innerlist._inn,{name:'_inn'});
+	</method>
+    
+
+
+	<!-- =========  Control area  =========-->
+
+    <labelText name="_records" x="2" resize="true" />
+    
+    <!-- 368:goto first -->
+    <blueButton name="_pre1" y="0" x="$once{ parent.width-188 }" resourceItem="step_back_two_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+					width_insetResource="16" height_insetResource="16" >
+        <handler name="onclick">
+            parent.callfirst();
+        </handler>
+        <labelTooltip labelid="368" />
+    </blueButton>
+
+    <!-- 369:goto previous -->
+    <blueButton name="_pre2" y="0" x="$once{ parent.width-166 }" resourceItem="step_back_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+					width_insetResource="16" height_insetResource="16">
+        <handler name="onclick">
+            parent.callpre();
+        </handler>
+        <labelTooltip labelid="369" />
+    </blueButton>
+
+    <!-- combobox to decide the step number -->
+    <resetCombobox name="languages" width="96" x="$once{ parent.width-144 }" 
+			  editable="false" height="20" >
+		<attribute name="sendEventToReload" value="false" type="boolean" />
+        <textlistitem value="10" text="10" />
+        <textlistitem value="25" text="25" />
+        <textlistitem value="50" text="50" />
+        <textlistitem value="75" text="75" />
+        <textlistitem value="100" text="100" />
+        <textlistitem value="200" text="200" />
+        <handler name="onselect">
+        	if (this.sendEventToReload){ 
+        		parent.setAttribute('step',Number(this.getValue()));
+        	}
+        </handler>
+        <handler name="oninit">
+        	this.selectItem(String(parent.step));
+        	this.sendEventToReload = true;
+        </handler>
+	</resetCombobox>
+	
+	<!-- 370:goto next -->
+	<blueButton name="_next1" y="0" x="$once{ parent.width-44 }" resourceItem="step_fwd_arrow" 
+                x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+        <handler name="onclick">
+            parent.callnext();
+        </handler>
+        <labelTooltip labelid="370" />
+    </blueButton>
+
+    <!-- 371:goto last -->
+    <blueButton name="_next2" y="0" x="$once{ parent.width-21 }" resourceItem="step_fwd_two_arrow" 
+				x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+        <handler name="onclick">
+            parent.calllast();
+        </handler>
+        <labelTooltip labelid="371" />
+    </blueButton>
+	
+    <!-- =========  BgArea area  =========-->
+    <view width="$once{ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
+          height="${ parent.height-20 }" x="0" y="20">
+        <view width="$once{ parent.width-2 }" bgcolor="$once{ parent.parent.mainBgColor }"
+          height="${ parent.height-2 }" x="1" y="1"></view>
+    </view>
+          
+	<!-- =========  List Header area  =========-->
+
+	<view name="_innerlisthead" height="20" x="1" width="$once{ parent.width-2 }" 
+		 y="22" clip="true">
+		<view name="_inn" x="${ parent.parent._innerlist._inn.x }" layout="axis:x;spacing:0" />
+	</view>	
+	
+	<!-- =========  List Contents area  =========-->
+	<view name="_innerlist" height="${ parent.height-43 }" x="1" width="$once{ parent.width-2 }"
+		y="42" clip="true" bgcolor="$once{ parent.mainBgColor }">
+		<view name="_inn" >
+			<innerList name="_inn" />
+		</view>
+		<om_vscrollbar />
+		<om_hscrollbar />
+	</view>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/turnOverListHeaderItem.lzx b/WebContent/src/base/components/turnoverlist/turnOverListHeaderItem.lzx
new file mode 100644
index 0000000..a349f4e
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/turnOverListHeaderItem.lzx
@@ -0,0 +1,170 @@
+<?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.
+  
+-->
+<library>
+
+<class name="turnOverListHeaderItem" extends="simpleLabelButton" clip="true" fontstyle="plain">
+
+	<attribute name="subviewsid" value="0" type="number" />
+
+	<view height="$once{ parent.height-2 }" width="5" align="right"
+		cursor="width_gripper_rsc" 
+		onmousedown="parent.rs.apply()" onmouseup="parent.rs.remove()" />
+		
+	<handler name="onwidth" args="w">
+		this.parent.parent.parent.sendWidthUpdate(w,this.subviewsid);
+	</handler>
+	<resizestate name="rs" height="20" />
+</class>
+
+<class name="turnOverListHeaderItemSimple" extends="simpleLabelButton" fontstyle="plain">
+	<attribute name="asc" value="false" type="boolean" />
+	<attribute name="pathOrder" value="" type="string" />
+	<handler name="onclick">
+		if (parent.preButton!=null){
+			parent.preButton._asc.setAttribute('visibility','hidden');
+			parent.preButton._desc.setAttribute('visibility','hidden');
+		}
+		if (!this.asc){
+			this._asc.setAttribute('visibility','hidden');
+			this._desc.setAttribute('visibility','visible');
+		} else {
+			this._asc.setAttribute('visibility','visible');
+			this._desc.setAttribute('visibility','hidden');		
+		}
+		parent.preButton = this;
+		parent.setNewSortOrder(this.pathOrder,this);
+	</handler>
+	<view name="_asc" x="$once{ parent.width-20 }" 
+		  visibility="hidden" resource="sort_asc_turnover_rsc" />
+	<view name="_desc" x="$once{ parent.width-20 }" 
+		  visibility="hidden" resource="sort_desc_turnover_rsc" />
+</class>
+
+<class name="basicturnoverlistheaderitem" fontsize="9"
+       extends="simpleLabelButton" clip="true">
+	
+</class>
+
+<class name="turnoverlistheaderitem" extends="basicturnoverlistheaderitem" >
+
+	<attribute name="subviewsid" value="0" type="number" />
+
+	<handler name="onwidth" args="w">
+		this.parent.parent.parent.sendWidthUpdate(w,this.subviewsid);
+	</handler>
+
+</class>
+
+<class name="turnoverlistheaderitemIcon" extends="basicturnoverlistheaderitem" >
+
+    <attribute name="subviewsid" value="0" type="number" />
+    <attribute name="toolTipLabelId" value="0" type="number" />
+    <attribute name="iconResource" value="" type="string" />
+
+    <handler name="onwidth" args="w">
+        this.parent.parent.parent.sendWidthUpdate(w,this.subviewsid);
+    </handler>
+    
+    <handler name="onclick" >
+        this.parent.parent.parent.sendHeaderClick.sendEvent(this);
+    </handler>
+    
+    <view align="center" valign="middle" 
+          resource="$once{ parent.iconResource }" />
+    
+    <labelTooltip labelid="$once{ parent.toolTipLabelId }" />
+    
+</class>
+
+<class name="turnoverlistheaderitemResize" extends="basicturnoverlistheaderitem" >
+
+	<attribute name="subviewsid" value="0" type="number" />
+
+    <attribute name="minwidth" value="2" type="number" />
+    <attribute name="minheight" value="10" type="number" />
+    
+	<view height="$once{ parent.height }" width="4" align="right" bgcolor="black"
+		cursor="width_gripper_rsc" opacity="0.01"
+		onmousedown="parent.rs.apply()" onmouseup="parent.rs.remove()" />
+
+	<handler name="onwidth" args="w">
+        //////if ($debug) //Debug.write("onwidth: ",w);
+		this.parent.parent.parent.sendWidthUpdate(w-1,this.subviewsid);
+	</handler>
+
+	<resizestatemin name="rs" height="20" />
+
+</class>
+
+<class name="turnoverlistheaderitemResizeWizzardRefresh" extends="basicturnoverlistheaderitem" >
+
+    <attribute name="subviewsid" value="0" type="number" />
+
+    <attribute name="minwidth" value="2" type="number" />
+    <attribute name="minheight" value="10" type="number" />
+    
+    <view height="$once{ parent.height }" width="4" align="right" bgcolor="black"
+        cursor="width_gripper_rsc" opacity="0.01"
+        onmousedown="parent.rs.apply()" onmouseup="parent.rs.remove()" />
+
+    <handler name="onwidth" args="w">
+        //////if ($debug) //Debug.write("onwidth: ",w);
+        this.parent.parent.parent.sendWidthUpdate(w-1,this.subviewsid);
+    </handler>
+    
+    <view name="refresh_geomComp" resource="refresh_geomComp" y="1" x="${ parent.width - 19 }"
+        onmouseover="" onmouseout="">
+        <handler name="onclick">
+           this.parent.parent.parent.parent.parent.updateGeomByValue();
+        </handler>
+        <labelTooltip labelid="62" />
+    </view>   
+
+    <resizestatemin name="rs" height="20" />
+
+</class>
+
+
+
+<class name="turnOverListHeaderItemOrdered" extends="turnoverlistheaderitemResize">
+
+    <attribute name="orderBy" value="" type="string" />
+    <attribute name="asc" value="true" type="boolean" />
+    <attribute name="isSelected" value="false" type="boolean" />
+    
+    <handler name="oninit">
+        if (this.isSelected) {
+            parent.parent.parent.updateOrder(this);
+        }
+    </handler>
+    
+    <handler name="onclick">
+        parent.parent.parent.updateOrder(this);
+    </handler>
+    
+    <image name="_sortUp" visibility="hidden" stretches="both" width="8" height="8" y="6"
+        x="${parent.width - 13 }" src="$once{ canvas.getThemeImage('sort_up_rsc') }" />
+    <image name="_sortDown" visibility="hidden" stretches="both" width="8" height="8" y="6"
+        x="${parent.width - 13 }" src="$once{ canvas.getThemeImage('sort_down_rsc') }" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlist/turnOverTextItem.lzx b/WebContent/src/base/components/turnoverlist/turnOverTextItem.lzx
new file mode 100644
index 0000000..c758163
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlist/turnOverTextItem.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+
+<class name="turnOverTextItem" extends="text" fontsize="11" resize="false">
+	<view height="$once{ parent.parent.height }" width="1" 
+        align="right" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+</class>
+        
+</library>
diff --git a/WebContent/src/base/components/turnoverlistpaged/basePagingListItem.lzx b/WebContent/src/base/components/turnoverlistpaged/basePagingListItem.lzx
new file mode 100644
index 0000000..2d8b24b
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlistpaged/basePagingListItem.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+<class name="basePagingListItem" extends="baseContentListItem" height="20"> 
+
+	<attribute name="itemId" value="0" type="number" />
+    
+</class>
+
+
+<class name="comoboxListItemNoHeaders" extends="basePagingListItem" >
+    
+    <attribute name="text" value="" type="string" />
+    
+    <text width="100" height="20" resize="false" fontsize="10"
+          text="${ parent.text }" />
+          
+    <labelTooltip text="${ parent.text }" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlistpaged/library.lzx b/WebContent/src/base/components/turnoverlistpaged/library.lzx
new file mode 100644
index 0000000..90f5920
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlistpaged/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+    
+    <include href="basePagingListItem.lzx" />
+    <include href="listPagedContent.lzx" />
+	<include href="turnOverListPaged.lzx" />
+    <include href="turnOverListOrderedPaged.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlistpaged/listPagedContent.lzx b/WebContent/src/base/components/turnoverlistpaged/listPagedContent.lzx
new file mode 100644
index 0000000..dbafcb4
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlistpaged/listPagedContent.lzx
@@ -0,0 +1,206 @@
+<?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.
+  
+-->
+<library>
+	
+<!--- common TurnOverList view class. -->
+<class name="listPagedContent" extends="view" clip="true" >
+	
+	<attribute name="itemHeight" value="20" type="number"/>
+    
+    <attribute name="showHScrollbar" value="visible" type="string"/>
+    
+    <method name="initItemsBySubItemNo" args="itemName,noSubItems,subItemClassName"> 
+        this._inn.initItemsBySubItemNo(itemName,noSubItems,subItemClassName);
+    </method>    
+	
+    <view name="_inn" >
+        
+        <!-- calculates the additional items -->
+        <attribute name="itemsToShow" value="0" type="number" />
+        <attribute name="totalItemsInList" value="0" type="number" />
+        
+        <attribute name="currentLastItemInList" value="0" type="number" />
+        
+        <attribute name="itemHeight" value="$once{ parent.itemHeight }" type="number"/>
+        
+		<method name="initItems" args="itemName">
+	        <![CDATA[
+	            this.totalItemsInList = Math.round(parent.height/this.itemHeight);
+	            for (var i=0;i<this.totalItemsInList;i++){
+	                this.currentLastItemInList = i;
+	                new lz[itemName](this._inn,{y:i*this.itemHeight,itemId:i,clickable:false});
+	            }
+                
+                if ($debug) Debug.write("initItems -1- ",i,itemName,lz[itemName]);
+                if ($debug) Debug.write("initItems -2- ",this._inn.subviews.length);
+                if ($debug) Debug.write("initItems -3- ",totalItemsInList);
+                if ($debug) Debug.write("initItems -4- ",parent.height);
+                if ($debug) Debug.write("initItems -5- ",this.itemHeight);
+                
+                //canvas.currentDebugPageList = this;
+                
+	        ]]>
+	    </method>	
+	    
+	    <handler name="ony" args="y">
+	    	parent.parent.onMoveList.sendEvent(y);
+	    </handler> 
+        
+        <method name="initItemsBySubItemNo" args="itemName,noSubItems,subItemClassName">
+           <![CDATA[
+                this.totalItemsInList = Math.round(parent.height/this.itemHeight);
+                for (var i=0;i<this.totalItemsInList;i++){
+                    this.currentLastItemInList = i;
+                    var baseItem = new lz[itemName](this._inn,{y:i*this.itemHeight,itemId:i,clickable:false});
+                    
+                    for (var k=0;k<noSubItems;k++) {
+                        new lz[subItemClassName](baseItem);
+                    }
+                    
+                }
+            ]]>
+        </method>      
+        
+        <method name="resetItems">
+            <![CDATA[
+                for (var i=0;i<this._inn.subviews.length;i++) {
+                    this._inn.subviews[i].itemId = i;
+                    this.currentLastItemInList = i;
+                    this._inn.subviews[i].setAttribute("y",i*this.itemHeight);
+                }
+            ]]>
+        </method>
+        
+        <handler name="ony" args="y">
+            <![CDATA[
+                //if ($debug) Debug.write("ony ",y);
+                var items = Math.round(y/this.itemHeight);
+                //if ($debug) Debug.write("items ",items);
+                if (this.itemsToShow != items) {
+                    var deltaItem = itemsToShow - items;
+                    
+                    //if ($debug) Debug.write("deltaItem ",deltaItem);
+                    
+                    if (deltaItem > 0) {
+                        //Add new Items to the end
+                        for (var i=0;i<deltaItem;i++) {
+                            var item = this._inn.getUpmostItemInList();
+                            this.shiftToLast(item);
+                        }
+                    } else {
+                        //Add new Items to the beginning
+                        for (var i=0;i>deltaItem;i--) {
+                            var item = this._inn.getLastItemInList();
+                            this.shiftToFirst(item);
+                        }
+                    }
+                    
+                    this.itemsToShow = items;
+                }
+            ]]>
+        </handler>
+        
+        <method name="shiftToLast" args="item">
+            <![CDATA[
+                parent.parent.onNextScrollItem.sendEvent(item);
+                //if ($debug) Debug.write("shiftToLast ",item,item.itemId);
+                this.currentLastItemInList++;
+                item.setAttribute("y",this.currentLastItemInList*this.itemHeight);
+                //if ($debug) Debug.write("shiftToLast -1- ",item.y,this.currentLastItemInList);
+                //if ($debug) Debug.write("++ shiftToLast 4 ",item.y,this.currentLastItemInList);
+                item.itemId = this.currentLastItemInList;
+                parent.parent.onScrollItem.sendEvent(item);
+            ]]>
+        </method>
+        
+        <method name="shiftToFirst" args="item">
+            <![CDATA[
+                parent.parent.onNextScrollItem.sendEvent(item);
+                //if ($debug) Debug.write("shiftToFirst 1 ",item.itemId);
+                //if ($debug) Debug.write("shiftToFirst 2 ",item.y);
+                var newItem = this.currentLastItemInList-this.totalItemsInList;
+                //if ($debug) Debug.write("shiftToFirst 3 ",newItem);
+                item.setAttribute("y",newItem*this.itemHeight);
+                //if ($debug) Debug.write("-- shiftToFirst 4 ",item.y,newItem,this.currentLastItemInList);
+                item.itemId = newItem;
+                //if ($debug) Debug.write("shiftToFirst 5 ",item.itemId);
+                this.currentLastItemInList--;
+                parent.parent.onScrollItem.sendEvent(item);
+            ]]>
+        </method>
+            
+        <innerListPagingContent name="_inn" />
+        
+    </view>
+    <om_vscrollbar name="_scrollbar" stepsize="$once{ parent.itemHeight }" />
+    
+    
+    <om_hscrollbar visibility="$once{ parent.showHScrollbar }" />
+
+</class>
+
+<class name="innerListPagingContent" extends="view">
+    
+    <method name="getItemByPosition" args="yPos">
+        <![CDATA[
+            for (var i=0;i<this.subviews.length;i++) {
+                if (this.subviews[i].y == yPos){
+                    return this.subviews[i];
+                }
+            }
+        ]]>
+    </method>
+    
+    <method name="getUpmostItemInList">
+        <![CDATA[
+            var item = this.subviews[0];
+            
+            //if ($debug) Debug.write("getUpmostItemInList ",this.subviews.length);
+            
+            for (var i=0;i<this.subviews.length;i++) {
+                if (this.subviews[i].itemId < item.itemId){
+                    item = this.subviews[i];
+                    //break;
+                }
+            }
+            
+            //if ($debug) Debug.write("getUpmostItemInList ",item);
+            
+            return item;
+        ]]>
+    </method>
+    
+    <method name="getLastItemInList">
+        <![CDATA[
+            var item = this.subviews[0];
+            for (var i=0;i<this.subviews.length;i++) {
+                if (this.subviews[i].itemId > item.itemId){
+                    item = this.subviews[i];
+                    //break;
+                }
+            }
+            return item;
+        ]]>
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlistpaged/turnOverListOrderedPaged.lzx b/WebContent/src/base/components/turnoverlistpaged/turnOverListOrderedPaged.lzx
new file mode 100644
index 0000000..d4db2a6
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlistpaged/turnOverListOrderedPaged.lzx
@@ -0,0 +1,76 @@
+<?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.
+  
+-->
+<library>
+    
+
+
+<!--- common TurnOverList view class. -->
+<class name="turnOverListOrderedPaged" extends="turnOverListPaged">
+    
+    <attribute name="currentSelectedOrder" value="null" />
+    
+    <event name="onUpdateOrder" />
+    
+    <method name="updateOrder" args="itemRef">
+        <![CDATA[
+	        //only do that if the previous orderBy != new orderby
+	        //if (this.currentSelectedOrder == null || 
+            //        this.currentSelectedOrder.orderBy != itemRef.orderBy){
+	        if (itemRef.isSelected) {
+	            itemRef.asc = !itemRef.asc;
+	        } else {
+	            itemRef.isSelected = true;
+	        }
+	        if (itemRef.asc) {
+	            itemRef._sortUp.setAttribute('visibility','hidden');
+	            itemRef._sortDown.setAttribute('visibility','visible');
+	        } else {
+	            itemRef._sortUp.setAttribute('visibility','visible');
+	            itemRef._sortDown.setAttribute('visibility','hidden'); 
+	        }
+	        
+	        //do not perform search on initial Selection
+	        var isInitSelect = false;
+	        if (this.currentSelectedOrder != null) {
+                if (this.currentSelectedOrder.orderBy != itemRef.orderBy) {
+		            this.currentSelectedOrder.isSelected = false;
+		            this.currentSelectedOrder._sortUp.setAttribute('visibility','hidden');
+		            this.currentSelectedOrder._sortDown.setAttribute('visibility','hidden'); 
+                }
+	        } else {
+	            isInitSelect = true;
+	        }
+	        this.currentSelectedOrder = itemRef;
+	        
+	        if ($debug) Debug.write("updateOrder: ",itemRef,itemRef.orderBy,itemRef.asc,isInitSelect);
+	        this.setAttribute('orderby',itemRef.orderBy);
+	        this.setAttribute('asc',itemRef.asc);
+	        
+	        if (!isInitSelect){
+            	this.onUpdateOrder.sendEvent(itemRef);
+            }
+	        //}
+        ]]>
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/turnoverlistpaged/turnOverListPaged.lzx b/WebContent/src/base/components/turnoverlistpaged/turnOverListPaged.lzx
new file mode 100644
index 0000000..b10550d
--- /dev/null
+++ b/WebContent/src/base/components/turnoverlistpaged/turnOverListPaged.lzx
@@ -0,0 +1,540 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="baseturnOverListPaged" extends="view">
+	
+	<attribute name="start" value="0" type="number" />
+    <attribute name="step" value="100" type="number" />
+    <attribute name="orderby" value="firstname" type="string" />
+    <attribute name="asc" value="true" type="boolean" />
+    <attribute name="records" value="0" type="number" />
+    
+    <attribute name="renderList" value="null"/>
+    
+    <attribute name="_selected" value="null" />
+    
+    <attribute name="_selectedRefObj" value="null" />
+    
+    <attribute name="multiselect" value="true" type="boolean" />
+    <attribute name="selected" value="null" />
+    
+    <attribute name="showTopBar" value="true" type="boolean" />
+    
+    <event name="oncallnext" />
+    <event name="oncallpre" />
+    
+    <!--- @keywords private -->
+    <event name="onload" />
+    
+    <event name="rerender" />
+    
+    <event name="onMoveList" />
+    
+    <event name="onScrollItem" />
+    <event name="onNextScrollItem" />
+    
+    <attribute name="listItemName" value="basePagingListItem" type="string" />
+    
+    <attribute name="itemHeight" value="20" type="number"/>
+    
+    <attribute name="menuBarXIndent" value="0" type="number"/>
+    
+    <attribute name="headerHeight" value="20" type="number" />
+    
+    <attribute name="listLabelId" value="0" type="number" />
+    
+    <attribute name="showHScrollbar" value="visible" type="string"/>
+     
+    <handler name="oninit">
+    	<![CDATA[
+            //this inits the items
+            this._innerlist._inn.initItems(this.listItemName);
+            
+            if (this["_menu"] && this["_menu"]["_pre1"]) {
+                this._menu._pre1.setAttribute('isEnabled',false);
+                this._menu._next2.setAttribute('isEnabled',false);
+                this._menu._next1.setAttribute('isEnabled',false);
+                this._menu._pre2.setAttribute('isEnabled',false);
+            }
+        ]]>
+    </handler>  
+    
+    <handler name="onclickedItem" args="obj" >
+        <![CDATA[
+            this.addToSelection(obj,false); 
+        ]]>
+    </handler>
+    
+    <method name="selectAll">
+        <![CDATA[
+        
+            if (!this.multiselect){
+                if ($debug) Debug.warn("Cannot selectAll when multiselect is FALSE");
+                return;
+            }
+            
+            this._selectedRefObj = new Array();
+            this._selected = new Array();
+            
+            for (var i=0;i<this.renderList.length;i++) {
+            	this.renderList[i].itemSelected = true;
+                this.renderList[i].isselected = true;
+                this._selectedRefObj.push(i);
+            }
+            
+            if ($debug) Debug.write("this._selectedRefObj LENGTH ",this._selectedRefObj.length);
+        
+            for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+            	if (this._innerlist._inn._inn.subviews[i].clickable) {
+	            	this._innerlist._inn._inn.subviews[i].setAttribute("itemSelected",true);
+		            this._innerlist._inn._inn.subviews[i].isselected = true;
+	                this._innerlist._inn._inn.subviews[i].onmouseout.sendEvent();
+	                this._selected.push(this._innerlist._inn._inn.subviews[i]);
+            	}
+	        }
+        
+        ]]>
+    </method>
+    
+    <method name="deleteSelected">
+        <![CDATA[
+        
+	        function sortTablePoints(a,b){
+	            var a1 = a;
+	            var b1 = b;
+	            //_root.//Debug.write("natcompare: ",a1,b1,natcompare(a1,b1));
+	            if(a1==b1){
+	                return 0;
+	            } else if(a1>b1){
+	                return 1;
+	            } else {
+	                return -1;
+	            }
+	        }
+            
+            this._selectedRefObj.sort(sortTablePoints);
+            
+            if ($debug) Debug.write("deleteSelected",this._selectedRefObj);
+            
+            if ($debug) Debug.write("-1- this.renderList ",this.renderList.length);
+        
+            for (var i=0;i<this._selectedRefObj.length;i++) {
+                this.renderList.splice(this._selectedRefObj[i],1);
+            }
+            
+            if ($debug) Debug.write("-2- this.renderList ",this.renderList.length);
+            
+            this.deselectAll();
+            
+            this.rerender.sendEvent(this);
+        ]]>
+    </method>
+    
+    <method name="deselectAll">
+        <![CDATA[
+        
+            if (!this.multiselect){
+                if ($debug) Debug.warn("Cannot deselectAll when multiselect is FALSE");
+                return;
+            }
+        
+            this._selectedRefObj = new Array();
+            this._selected = new Array();
+            
+            for (var i=0;i<this.renderList.length;i++) {
+            	this.renderList[i].itemSelected = false;
+                this.renderList[i].isselected = false;
+            }
+            
+            for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+            	this._innerlist._inn._inn.subviews[i].setAttribute("itemSelected",false);
+                this._innerlist._inn._inn.subviews[i].isselected = false;
+                this._innerlist._inn._inn.subviews[i].onmouseout.sendEvent();
+            }
+        
+        ]]>
+    </method>    
+    
+    <method name="addToSelection" args="obj,forceMultiAdd">
+        <![CDATA[
+        
+            if (this._selected!=null ||this._selectedRefObj!=null){
+                if (this.multiselect){
+                    if (lz.Keys.downKeysArray.length==0 || 
+                        (lz.Keys.downKeysArray[0]!=17 && lz.Keys.downKeysArray[0]!=16)){
+                        if (!forceMultiAdd) {
+
+                            if ($debug) Debug.write("onclickedItem Deselect ALL -1- ",this._selected.length);    
+                            if ($debug) Debug.write("onclickedItem Deselect ALL -2- ",this._selectedRefObj.length);    
+                            
+                            for (var i=0;i<this._selected.length;i++){
+                            	this._selected[i].setAttribute("itemSelected",false);
+                                this._selected[i].isselected = false;
+                                this._selected[i].doDeselect();
+                            }
+                            
+                            for (var i=0;i<this._selectedRefObj.length;i++){
+                                if ($debug) Debug.write("DESELECT ITEM ID ",this._selectedRefObj[i]);
+                                this.renderList[this._selectedRefObj[i]].itemSelected = false;
+                                this.renderList[this._selectedRefObj[i]].isselected = false;
+                            }
+                            
+                        }
+                    } else {
+                        //////if ($debug) //Debug.write("onclickedItem Key Hold IT");
+                        for (var i=0;i<this._selected.length;i++){
+                            if (this._selected[i] == obj) {
+                                //////if ($debug) //Debug.write("Found Object: ",obj);
+                                obj.isselected = false;
+                                if ($debug) Debug.write("DESELECT ITEM ID 2 ",this._selectedRefObj[i]);
+                                this.renderList[this._selectedRefObj[i]].isselected = false;
+                                ////if ($debug) //Debug.write("send onmouseout TO: ",obj);
+                                obj.doDeselect();
+                                this._selected.splice(i,1);
+                                this._selectedRefObj.splice(i,1);
+                                return;
+                            }
+                        }
+                    }
+                } else {
+                    this.renderList[this._selected.itemId].isselected = false;
+                    this._selected.isselected = false;
+                    this._selected.doDeselect();
+                }
+            }
+
+            //////if ($debug) //Debug.write("onclickedItem Set IT");
+            if ($debug) Debug.write("SELECT ITEM ID ",obj.itemId);
+            this.renderList[obj.itemId].isselected = true;
+            obj.isselected = true;
+            obj.onmouseout.sendEvent();
+            if (this.multiselect){
+                if (this._selected==null){
+                    this._selected = new Array();
+                    this._selectedRefObj = new Array();
+                }
+                if ((lz.Keys.downKeysArray.length==1 && 
+                    (lz.Keys.downKeysArray[0]==17 || lz.Keys.downKeysArray[0]==16))
+                    || forceMultiAdd){
+                    this._selected.push(obj);
+                    this._selectedRefObj.push(obj.itemId);
+                } else {
+                    this._selected = new Array();
+                    this._selectedRefObj = new Array();
+                    this._selected.push(obj);
+                    this._selectedRefObj.push(obj.itemId);
+                }
+            } else {
+                this._selected = obj;
+            }
+            
+        ]]>
+    </method>    
+    
+    <!--
+    <handler name="onclickedItem" args="obj" >
+        if (this.selected != null) {
+            this.selected.deselect();
+        }
+        this.selected = obj;
+        this.selected.select();
+    </handler>
+     -->
+    
+    <method name="callfirst">
+        this.start = 0;
+        this.oncallnext.sendEvent();
+        this.onload.sendEvent();
+    </method>
+    
+    <method name="reload">
+    	this.oncallnext.sendEvent();
+        this.onload.sendEvent();
+    </method>
+    
+    <method name="calllast">
+    	var newMaxPages = Math.floor(this.records/this.step);
+    	if ($debug) Debug.write("calllast 1 ",newMaxPages);
+        this.start = newMaxPages*this.step;
+        if ($debug) Debug.write("calllast 2 ",this.start);
+        if (this.start == this.records) {
+        	this.start = this.records-this.step;
+        }
+        if ($debug) Debug.write("calllast 3 ",this.start);
+        if ($debug) Debug.write("calllast 4 ",this.records);
+        this.oncallnext.sendEvent();
+        this.onload.sendEvent();
+        
+        //this.start = this.records-this.step;
+        //this.oncallnext.sendEvent();
+        //this.onload.sendEvent();
+    </method>
+    
+    <method name="callnext">
+        if (this.records>(this.start+this.step)){
+            this.start+=this.step;
+        }
+        this.oncallnext.sendEvent();
+        this.onload.sendEvent();
+    </method>
+    
+    <method name="callpre">
+        if (this.start>0){
+            this.start-=this.step;
+        }
+        this.oncallpre.sendEvent();
+        this.onload.sendEvent();
+    </method>
+    
+    <method name="initValues" args="rec">
+        <![CDATA[
+            this.records = rec;
+            
+            if (this.start == 0) {
+                this._menu._pre1.setAttribute('isEnabled',false);
+            } else {
+                this._menu._pre1.setAttribute('isEnabled',true);
+            }
+            
+            if ((this.start+this.step) >= this.records) {
+                this._menu._next2.setAttribute('isEnabled',false);
+            } else {
+                this._menu._next2.setAttribute('isEnabled',true);
+            }
+            
+            if (this.records>(this.start+this.step)){
+                if (this["_menu"]) this._menu._next1.setAttribute('isEnabled',true);
+            } else {
+                if (this["_menu"]) this._menu._next1.setAttribute('isEnabled',false);
+            }
+            if (this.start>0){
+                if (this["_menu"]) this._menu._pre2.setAttribute('isEnabled',true);
+            } else {
+                if (this["_menu"]) this._menu._pre2.setAttribute('isEnabled',false);
+            }
+            
+            if (this.showTopBar) {
+                
+                var maxRecord = this.start+this.step;
+                if ((this.start+this.step) > this.records) {
+                    maxRecord = this.records;
+                }
+                
+                this._records.setAttribute("text",(this.start+1) + ' - ' + maxRecord + ' von ' + this.records);
+                
+            } else {
+                
+                this._records.setAttribute("text",rec);
+            }
+        ]]>
+    </method>
+    
+    <method name="addHeaderItem" args="labelid,width" >
+        new lz.turnoverlistheaderitemResize(this._innerlisthead._inn,{
+                labelid:labelid,width:width,
+                subviewsid:this._innerlisthead._inn.subviews.length
+            });
+    </method>
+    
+    <method name="clearHead">
+        for (var eg in this._innerlisthead._inn.subviews) {
+            this._innerlisthead._inn.subviews[eg].destroy();
+        }
+    </method>
+    
+    <method name="addHeaderItemByText" args="zText,width" >
+        new lz.turnoverlistheaderitemResize(this._innerlisthead._inn,{
+                text:zText,width:width,
+                subviewsid:this._innerlisthead._inn.subviews.length
+            });
+    </method>
+    
+    <method name="addHeaderItemOrdered" args="labelid,width,orderBy,asc,isSelected" >
+    	if ($debug) Debug.write("turnOverListHeaderItemOrdered ",labelid,width,orderBy,asc,isSelected);
+        new lz.turnOverListHeaderItemOrdered(this._innerlisthead._inn,{
+                labelid:labelid,width:width,
+                orderBy:orderBy,asc:asc,isSelected:isSelected,
+                subviewsid:this._innerlisthead._inn.subviews.length
+            });
+    </method> 
+    
+    <method name="setSelectionOrder" args="orderBy,asc">
+    	<![CDATA[
+    		
+    		for (var i=0;i<this._innerlisthead._inn.subviews.length;i++) {
+    			
+    			if (this._innerlisthead._inn.subviews[i]["orderBy"] && 
+    					this._innerlisthead._inn.subviews[i].orderBy == orderBy) {
+    				
+    				if (this.currentSelectedOrder != null) {
+    					this.currentSelectedOrder.isSelected = false;
+    				}
+    				
+					this._innerlisthead._inn.subviews[i].isSelected = true;
+    				this._innerlisthead._inn.subviews[i].asc = !asc;
+    				
+    				this._innerlisthead._inn.subviews[i].onclick.sendEvent();
+    				
+    				return;
+    				
+    			}
+    			
+    		}
+    	
+    	]]>
+    </method>
+    
+    <method name="sendInitialWidthUpdate">
+        for (var eg in this._innerlisthead._inn.subviews) {
+            this._innerlisthead._inn.subviews[eg].onwidth.sendEvent(this._innerlisthead._inn.subviews[eg].width);
+        }
+    </method> 
+    
+    <method name="sendWidthUpdate" args="w,subviewsid" >
+        <![CDATA[
+        ////Debug.write(w,subviewsid,this._innerlist._inn);
+        for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+            this._innerlist._inn._inn.subviews[i].subviews[subviewsid].setAttribute('width',w+1);
+        }
+        ]]>
+    </method>
+    
+    <method name="getListItemNumber">
+        return this._innerlist._inn._inn.subviews.length;
+    </method>
+    
+    <method name="getItemByNumber" args="itemNo">
+        <![CDATA[
+	        if ($debug) Debug.write("getItemByNumber",itemNo);
+	        for (var i=0;i<this._innerlist._inn._inn.subviews.length;i++){
+                if ($debug) Debug.write("getItemByNumber :: ",this._innerlist._inn._inn.subviews[i].itemId);
+	            if (this._innerlist._inn._inn.subviews[i].itemId == itemNo) {
+                    return this._innerlist._inn._inn.subviews[i];
+                }
+	        }
+        ]]>
+        return this._innerlist._inn._inn.subviews[itemNo];
+    </method>
+    
+    <method name="clearList">
+        this._innerlist._inn._inn.destroy();
+        new lz.innerListPagingContent(this._innerlist._inn,{name:'_inn'});
+    </method>
+    
+    <method name="initItemsBySubItemNo" args="itemName,noSubItems,subItemClassName">
+        this._innerlist.initItemsBySubItemNo(itemName,noSubItems,subItemClassName);
+    </method>
+
+    <labelText labelid="${ parent.listLabelId }" visibility="$once{ (parent.showTopBar) ? 'visible' : 'hidden' }"
+                       y="4" fontsize="10" x="2" />
+                       
+    <text fontsize="10" y="4" x="$once{ (!parent.showTopBar) ? 64+parent.menuBarXIndent : 2+parent.menuBarXIndent }"
+          name="_records" resize="true" visibility="$once{ (parent.showTopBar) ? 'visible' : 'hidden' }" />
+    
+    <!-- =========  List Header area  =========-->
+    <view name="_innerlisthead" height="${ parent.headerHeight }" width="${ parent.width }" y="$once{ parent.headerHeight + 2 }" clip="true">
+        <view name="_inn" x="${ parent.parent._innerlist._inn.x }" layout="axis:x;spacing:0" />
+    </view> 
+    
+    <!-- =========  List Contents area  =========-->   
+    <listPagedContent name="_innerlist" height="${ parent.height-22-parent.headerHeight }" bgcolor="0xFFFFFF"
+          width="${ parent.width }" y="$once{ parent.headerHeight + 22 }" showHScrollbar="$once{ parent.showHScrollbar }"
+          itemHeight="$once{ parent.itemHeight }" />
+</class>
+	
+<!--- common TurnOverList view class. -->
+<class name="turnOverListPaged" extends="baseturnOverListPaged">
+
+    <!-- =========  Control area  =========-->
+    <view name="_menu" align="right" y="2" width="180"
+          visibility="$once{ (parent.showTopBar) ? 'visible' : 'hidden' }">
+    	
+	    <!-- 368:goto first -->
+	    <blueButton name="_pre1" y="0" x="0" resourceItem="step_back_two_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+			<handler name="onclick">
+				parent.parent.callfirst();
+	        </handler>
+	        <labelTooltip labelid="368" />
+	    </blueButton>
+	
+	    <!-- 369:goto previous -->
+	    <blueButton name="_pre2" y="0" x="20" resourceItem="step_back_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+			<handler name="onclick">
+				parent.parent.callpre();
+	        </handler>
+	        <labelTooltip labelid="369" />
+	    </blueButton>
+    	<resetCombobox name="_step" width="100" x="40" editable="false" fontsize="10" height="20" >
+            <attribute name="sendEventToReload" value="false" type="boolean" />
+            <textlistitem value="10" text="10" />
+            <textlistitem value="25" text="25" />
+            <textlistitem value="50" text="50" />
+            <textlistitem value="75" text="75" />
+            <textlistitem value="100" text="100" />
+            <textlistitem value="200" text="200" />
+            <textlistitem value="500" text="500" />
+            <textlistitem value="1000" text="1000" />
+            <textlistitem value="2500" text="2500" />
+            <textlistitem value="5000" text="5000" />
+            <handler name="onselect">
+                if (this.sendEventToReload){ 
+                	parent.parent.start = 0;
+                    parent.parent.setAttribute('step',Number(this.getValue()));
+                    parent.parent.onload.sendEvent();
+                }
+            </handler>
+            <handler name="oninit">
+                this.selectItem(String(parent.parent.step));
+                this.sendEventToReload = true;
+            </handler>
+        </resetCombobox>
+        
+        <!-- 370:goto next -->
+        <blueButton name="_next1" y="0" x="140" resourceItem="step_fwd_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+			<handler name="onclick">
+				parent.parent.callnext();
+	        </handler>
+	        <labelTooltip labelid="370" />
+	    </blueButton>
+		
+	    <!-- 371:goto last -->
+	    <blueButton name="_next2" y="0" x="160" resourceItem="step_fwd_two_arrow" 
+					x_insetResource="2" y_insetResource="2" width="20" height="20"
+				width_insetResource="16" height_insetResource="16">
+			<handler name="onclick">
+				parent.parent.calllast();
+	        </handler>
+	        <labelTooltip labelid="371" />
+	    </blueButton>
+		
+		<view width="2" />
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/updatecheckbox.lzx b/WebContent/src/base/components/updatecheckbox.lzx
new file mode 100644
index 0000000..1259161
--- /dev/null
+++ b/WebContent/src/base/components/updatecheckbox.lzx
@@ -0,0 +1,39 @@
+<?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.
+  
+-->
+<library>
+
+<class name="updatecheckbox" extends="checkbox" style="componentStyle">
+    <attribute name="tvalue" type="boolean" value="false"/>
+    <attribute name="sendchange" value="false" type="boolean" />       
+    <handler name="onblur">
+        if (this.parent.sendchange) this.parent.sendchange(this,tvalue,this.getValue()); 
+    </handler>  
+</class>
+
+<class name="labelCheckbox" extends="checkbox" style="componentStyle" fontsize="11" >
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+</class>
+
+</library>
diff --git a/WebContent/src/base/components/upload/fileUpload.lzx b/WebContent/src/base/components/upload/fileUpload.lzx
new file mode 100644
index 0000000..a43c464
--- /dev/null
+++ b/WebContent/src/base/components/upload/fileUpload.lzx
@@ -0,0 +1,173 @@
+<?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.
+  
+-->
+<library>
+ 
+ 	<class name="fileUpload">
+ 	
+ 		<!--  Show all Documents in FileBrowser -->
+ 		<attribute name="isOnlyImage" value="false" type="boolean" />
+ 		
+ 		<!-- Show only PowerPoint Presentations in FileBrowser -->
+ 		<attribute name="isOnlyPpt" value="false" type="boolean" />
+ 		
+ 		<!-- Show only XML Files in FileBrowser -->
+ 		<attribute name="isOnlyXml" value="false" type="boolean" />
+ 		
+ 		<!-- Show only ZIP Files in FileBrowser -->
+ 		<attribute name="isOnlyZip" value="false" type="boolean" />
+ 		
+ 		<!-- Show only Images Files in FileBrowser -->
+ 		<attribute name="isOnlyProfile" value="false" type="boolean" />
+        
+        <attribute name="fr" value="null" />
+ 		 		
+		<handler name="oninit" args="invoker">
+		<![CDATA[
+			this.fr = new flash.net.FileReference();	
+    		this.fr.onHTTPError = function(fr, httpError){
+                var t = _root;
+            	if ($debug) t.Debug.write('onHTTPError function: ' + httpError);
+            	new lz.errorPopup(canvas,{error:'Err2: '+httpError});
+			}
+			this.fr.onIOError = function(fr){
+				var t = _root;
+                if ($debug) t.Debug.write.write('onIOError function');
+				new lz.errorPopup(canvas,{error:'onIOError invoked '});
+			}
+			function callbackFunction ( e ) {
+				var t = _root;
+                if ($debug) t.Debug.write( e.data );
+			}		
+			this.fr.onSecurityError = function(fr, errorString){
+				var t = _root;
+                if ($debug) t.Debug.write('onSecurityError function: ' + errorString);
+            	new lz.errorPopup(canvas,{error:'Err2: '+errorString});
+			}
+			this.fr.addListener(invoker, callbackFunction);
+		]]>
+		</handler>
+
+		<method name="browse">
+		<![CDATA[	
+			var zipExt = "*.zip"
+				, profileExt = "*.psd;*.tiff;*.bmp;*.svg;*.dpx;*.exr;*.jpg;*.jpeg;*.gif;*.png"
+				, pptExt = "*.ppt;*.odp;"
+				, docExt = pptExt + ";*.txt;*.pptx;*.odt;*.wpd;*.doc;*.docx;*.rtf;*.ods;*.sxc;*.xls;*.xlsx;*.sxi;*.pdf"
+				, vidExt = "*.avi;*.mov;*.flv;*.mp4"
+				, imgExt = profileExt + ";*.tga;*.xcf;*.wpg;*.ico;*.ttf;*.pcd;*.pcds;*.ps"
+				, allExt = docExt + ";" + vidExt + ";" + imgExt;
+
+			if (this.isOnlyZip) {
+				
+				var allTypes = new Array();
+				var imageTypes = new Object();
+				imageTypes.description = "ZIP (*.zip)";
+				imageTypes.extension = zipExt;
+				allTypes.push(imageTypes); 				
+				fr.browse(allTypes);
+				
+			} else if(this.isOnlyProfile){	
+				var allTypes = new Array();
+				var imageTypes = new Object();
+				imageTypes.description = "Allowed Files (" + profileExt + ")";
+				imageTypes.extension = profileExt;
+				allTypes.push(imageTypes); 				
+				fr.browse(allTypes);
+			} else if (this.isOnlyImage){
+				fr.browse([
+					{description: "Allowed Files", extension: allExt}
+					, {description: "Documents", extension: docExt}
+					, {description: "Videos", extension: vidExt}
+					, {description: "Pictures", extension: imgExt}
+				]);
+			} else if(this.isOnlyPpt){	
+				var allTypes = new Array();
+				var imageTypes = new Object();
+				imageTypes.description = "Powerpoint (" + pptExt + ")";
+				imageTypes.extension = pptExt;
+				allTypes.push(imageTypes); 				
+				fr.browse(allTypes);
+			} else if(this.isOnlyXml){	
+				var allTypes = new Array();
+				var imageTypes = new Object();
+				imageTypes.description = "XML (*.xml)";
+				imageTypes.extension = "*.xml;";
+				allTypes.push(imageTypes); 				
+				fr.browse(allTypes);
+			} else {	
+				fr.browse();
+			}
+		]]>
+		</method>
+
+		<method name="getName"><![CDATA[
+			return this.fr.name;
+		]]>
+		</method>
+
+		<method name="upload" args="url"><![CDATA[
+			if ($debug) Debug.write("url: ",url,this.fr);
+			this.fr.upload(url);
+		]]>
+		</method>
+		
+    <method name="onCancel" args="fr">
+        <![CDATA[
+            if ($debug) Debug.write('onCancel invoked');
+        ]]>
+    </method>
+    
+    <method name="onComplete" args="fr">
+        <![CDATA[
+            if ($debug) Debug.write('onComplete invoked');
+            canvas.filedialogRef.progressBar.setValue(100);
+            //canvas.filedialogRef.upload.setAttribute('enabled', false);
+            if (canvas.filedialogRef.sendCompleted)canvas.filedialogRef.sendCompleted.sendEvent();
+        ]]>
+    </method>
+    
+    <method name="onHTTPError" args="fr, httpError">
+        <![CDATA[
+            if ($debug) Debug.write('onHTTPError invoked: ' + httpError);
+        ]]>
+    </method>
+    
+    <method name="onIOError" args="fr">
+        <![CDATA[
+            if ($debug) Debug.write('onIOError invoked',fr);
+        ]]>
+    </method>
+    
+    <method name="onOpen" args="fr">
+        <![CDATA[
+            if ($debug) Debug.write('onOpen invoked',fr);
+        ]]>
+    </method>
+    
+    <method name="onSecurityError" args="fr, errorString">
+        <![CDATA[
+            if ($debug) Debug.write('onSecurityError invoked: ' + errorString);
+        ]]>
+    </method>
+		
+ 	</class>
+ 	
+ </library>
diff --git a/WebContent/src/base/components/upload/library.lzx b/WebContent/src/base/components/upload/library.lzx
new file mode 100644
index 0000000..3a3f1e8
--- /dev/null
+++ b/WebContent/src/base/components/upload/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="fileUpload.lzx" />
+	<include href="uploadWindowExplorer.lzx" />
+	
+</library>
diff --git a/WebContent/src/base/components/upload/uploadWindowExplorer.lzx b/WebContent/src/base/components/upload/uploadWindowExplorer.lzx
new file mode 100644
index 0000000..f5e2f39
--- /dev/null
+++ b/WebContent/src/base/components/upload/uploadWindowExplorer.lzx
@@ -0,0 +1,288 @@
+<?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.
+  
+-->
+<library>
+ 
+ <class name="uploadWindowExplorer" extends="labelExplorerBox" labelid="304"
+    docking="true" closable="true" width="264" x="200" height="230">
+    
+    <handler name="oninit">
+    	lz.ModeManager.makeModal(this);
+        canvas.currentUploadWindow = this;
+        if (this.servletName != "file.upload") {
+        	this._loadToWhiteboard.destroy();
+        }
+    </handler>
+    
+    <handler name="onclose">
+    	lz.ModeManager.release(this);
+    </handler>
+    
+    <attribute name="winobj" value="null" />
+	<attribute name="sessionid" value="" type="string" />
+	<attribute name="isOwner" value="0" type="string" />
+	<attribute name="usersid" value="" type="string" />
+	<attribute name="singleslidesmodule_id" type="string" value="" />
+	<attribute name="fileExplorerRef" value="null" />
+	<attribute name="secondid" value="0" type="string" />
+	
+	<attribute name="servletName" value="upload.upload" type="string" />
+	<attribute name="parentFolderId" value="0" type="number" />
+    
+    <attribute name="uploadmodule" value="videoconf1" type="string" />
+    
+    <attribute name="isOnlyImage" value="false" type="boolean" />
+    <attribute name="isOnlyPpt" value="false" type="boolean" />
+    <attribute name="isOnlyProfile" value="false" type="boolean" />
+    <attribute name="isOnlyXml" value="false" type="boolean" />
+    <attribute name="isOnlyZip" value="false" type="boolean" />
+    
+    <attribute name="isdefaultreturn" value="true" type="boolean" />
+    <attribute name="returnObj" value="true" type="boolean" />
+    
+ 	<fileUpload name="myFileUpload" isOnlyImage="${ this.parent.isOnlyImage }" 
+ 		 isOnlyPpt="${ this.parent.isOnlyPpt }" isOnlyProfile="${ this.parent.isOnlyProfile }" 
+ 		 isOnlyXml="${ this.parent.isOnlyXml }" isOnlyZip="${ this.parent.isOnlyZip }">
+		<method name="onComplete" args="fr">
+            if ($debug) Debug.write("oncomplete ",fr);
+        </method>
+        <method name="formatURL" args="fileHash">
+            <![CDATA[
+                var uploadmoduleimgfolderVar = '/' + fileHash;
+                var downloadurl = canvas.getUrl()+'DownloadHandler?' +
+                    'fileName=' + encodeURIComponent(fileHash + ".swf") +
+                    '&moduleName=' + 'videoconf1' + 
+                    '&parentPath=' + encodeURIComponent(uploadmoduleimgfolderVar + '/' )+
+                    '&room_id=files'+ 
+                    '&sid='+canvas.sessionId;
+                ////if ($debug) Debug.write("downloadurl: ",downloadurl);
+                return downloadurl;
+            ]]>
+        </method> 
+        
+        <method name="generateFileLink" args="fileHash">
+            <![CDATA[
+                return canvas.getUrl()+'DownloadHandler?' +
+                        'fileName='+ fileHash + 
+                        '&moduleName='+ "videoconf1" +
+                        '&parentPath='+ '/' +
+                        '&room_id=files' +
+                        '&sid='+canvas.sessionId;
+            ]]>
+        </method>
+    
+        <method name="onCompleteByRemote" args="tArrayValueObj">
+            
+            if ($debug) Debug.write("onCompleteByRemote ",tArrayValueObj);
+            this.parent.progressBar.setValue(100);
+            this.parent.upload.setAttribute('enabled', false);
+            this.parent.upload.setAttribute("visible",false);
+            this.parent.browse.setAttribute("visible",false);
+            this.parent.txtFile.setAttribute("visible",false);
+            
+            if (this.isOnlyZip) {
+            	this.parent.close();
+            	return;
+            }
+            
+            if (this.isOnlyXml) {
+            	parent.returnObj.sendRefresh();
+            	this.parent.close();
+            	return;
+            }
+            
+            if (this.isOnlyProfile) {
+            	parent.returnObj.sendRefresh();
+            	this.parent.close();
+            	return;
+            }
+            
+            if (parent._loadToWhiteboard.getValue()) {
+            	
+            	if ($debug) Debug.write(tArrayValueObj);
+            	if (tArrayValueObj.isPresentation) {
+            		var url = this.formatURL(tArrayValueObj.fileHash);
+            		
+            		var uploadmoduleimgfolderVar = '/' + tArrayValueObj.fileHash;
+            		
+            		if ($debug) Debug.write(url);
+            		
+                	canvas._drawarea.loadSWFPresentationSynced(url,tArrayValueObj.fileHash + ".swf",
+                              "videoconf1",uploadmoduleimgfolderVar,"files",hib.conferencedomain,1,
+                              tArrayValueObj.fileSystemName);
+            	} else if (tArrayValueObj.isImage) {
+            		canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(tArrayValueObj.fileHash),0,0,
+                      canvas.getUrl() +'DownloadHandler',
+                      tArrayValueObj.fileHash,"videoconf1","/","files",hib.conferencedomain);
+            	}
+            }
+            
+            if (parent.isdefaultreturn) {
+            	
+                var tempSendArray = new Array ();
+                tempSendArray[0] = 'fileslist';
+                var nowTime = new Date();
+                var datumsString = nowTime.getHours()+':'+nowTime.getMinutes();
+                tempSendArray[1] = datumsString;
+                //if ($debug) Debug.write("Setting Message");
+                tempSendArray[2] = 'newfile';
+                tempSendArray[3] = canvas.currentusename;
+                //if ($debug) Debug.write("send: ",tempSendArray);
+                canvas.objMessage = tempSendArray;
+                canvas.thishib.sendMessageAll.doCall();
+
+            } else {
+                parent.returnObj.sendRefresh();
+            }
+            
+            if (parent.fileExplorerRef != null) {
+            	parent.fileExplorerRef.onClose.sendEvent();
+            }
+            
+            parent.close();
+        </method>
+
+		<method name="onProgress" args="fr, bytesLoaded, bytesTotal">
+			<![CDATA[
+    			this.parent.progressBar.setValue(bytesLoaded * 100 / bytesTotal);
+    			if (Math.round(bytesLoaded * 100 / bytesTotal)==100){
+    				this.parent.progressBar.setAttribute('visibility','hidden');
+    				this.parent.progress2.startShowing();
+    			}
+    		]]>
+		</method>
+    
+	    <method name="onHTTPError" args="fr, httpError">
+	        <![CDATA[
+	            if ($debug) Debug.write('onHTTPError invoked: ' + httpError);
+	            new lz.errorPopup(canvas,{error:'HTTP-ERROR: '+httpError});
+	            this.parent.close();
+		  		var tempSendArray = new Array ();
+		  		tempSendArray[0] = 'fileslist';
+		  		var nowTime = new Date();
+		  		var datumsString = nowTime.getHours()+':'+nowTime.getMinutes();
+		  		tempSendArray[1] = datumsString;
+	  			//if ($debug) Debug.write("Setting Message");
+	  			tempSendArray[2] = 'newfile';
+	  			tempSendArray[3] = canvas.currentusename;
+		  		//if ($debug) Debug.write("send: ",tempSendArray);
+		  		canvas.objMessage = tempSendArray;
+		  		hib.sendMessage.doCall();	            
+	        ]]>
+	    </method>
+    
+		<method name="onSelect" args="fr">
+			//if ($debug) Debug.write("onSelect: ",getName());
+			this.parent.txtFile.setAttribute('text',getName());
+			this.parent.upload.setAttribute('enabled', true);
+		</method>
+	</fileUpload>
+    
+    <labelText x="10" width="250" y="24" multiline="true" name="txtFileDescr" labelid="594" />
+	
+	<labelText x="10" fontsize="11" y="60" width="250" name="txtFile" multiline="true" 
+			   resize="false" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" />
+
+	<simpleLabelButton fontsize="11" name="browse" x="10" y="100" labelid="596" width="250" height="20">
+		<handler name="onclick">
+			parent.myFileUpload.browse();
+		</handler>
+	</simpleLabelButton>
+
+    <!-- moduleName=videoconf1'; -->
+	<simpleLabelButton name="upload" x="10" y="120" labelid="593" width="250" enabled="false" height="20">
+		<handler name="onclick">
+			<![CDATA[
+			var uploadurl = canvas.getUrl() + parent.servletName +'?' +
+					'moduleName='+this.parent.uploadmodule +
+                    '&publicSID='+canvas.publicSID +
+                    '&filename='+encodeURIComponent(parent.txtFile.text) +
+                    '&parentFolderId='+parent.parentFolderId +
+					'&room_id='+hib.currentroomid +
+					'&secondid='+parent.secondid +
+					'&isOwner='+parent.isOwner + 
+					'&sid='+canvas.sessionId;
+            if ($debug) Debug.write("uploadurl: ",uploadurl);
+			parent.myFileUpload.upload(uploadurl);
+			this.setAttribute("enabled", false);
+			]]>
+		</handler>
+	</simpleLabelButton>
+    
+    <view name="progress2" x="10" y="158" width="250" visibility="hidden" height="10" bgcolor="#C6CEDF">
+        <attribute name="isStarted" value="false" type="boolean" />
+        <method name="startShowing">
+        	if (!this.isStarted) {
+        		this.isStarted = true;
+        		this.status._hide.setAttribute('started', true);
+        		this.setAttribute("visibility","visible");
+        	} else {
+        		return;
+        	}
+        </method>
+        <view x="1" y="1" width="248" height="8" bgcolor="#FFFFFF"/>
+        <view name="status" x="1" y="1" height="8" width="248" bgcolor="#D6DEEF">
+        	
+        	<animator name="_hide" attribute="opacity" to="0" from="1" duration="1000" started="false">
+        		<handler name="onstop">
+        			if (parent["_show"]) {
+        				parent._show.setAttribute('started', true);
+        			}
+        		</handler>
+        	</animator>
+        	<animator name="_show" attribute="opacity" to="1" from="0" duration="1000" started="false">
+                <handler name="onstop">
+                	if (parent["_show"]) {
+                    	parent._show.setAttribute('started', true);
+                    }
+                </handler>
+            </animator>
+        </view>
+        <labelText name="percent" align="center" resize="true" y="-18" fontstyle="bold" 
+            fontsize="10" fgcolor="#555555" labelid="592"/>
+    </view>
+    		   
+	<view name="progressBar" x="10" y="158" width="250" visibility="hidden" height="10" bgcolor="#C6CEDF">
+		<view x="1" y="1" width="248" height="8" bgcolor="#FFFFFF"/>
+		<view name="status" x="1" y="1" height="8" bgcolor="#D6DEEF"/>
+		<method name="setValue" args="value">
+			<![CDATA[
+                this.setAttribute("visible",true);
+                status.setAttribute('width', value * 248 / 100);
+                percent.setAttribute('text',Math.round(value) + '%');
+			]]>
+		</method>
+		<text name="percent" align="center" resize="true" y="-18" fontstyle="bold" 
+			fontsize="10" fgcolor="#555555" />
+	</view>
+	
+	<labelCheckbox name="_loadToWhiteboard" x="4" y="184" fontsize="11" 
+		labelid="1312" value="${ canvas.whiteboardCount &gt; 0 }" enabled="${ canvas.whiteboardCount &gt; 0 }" />
+	
+	<simpleLabelButton name="_close" x="100" y="204" labelid="595" width="160" height="20">
+		<handler name="onclick">
+			if ($debug) Debug.write("this.parent: ",this.parent);
+			this.parent.close();
+		</handler>
+	</simpleLabelButton>
+</class>
+	
+</library>
+ 
diff --git a/WebContent/src/base/components/validbox/library.lzx b/WebContent/src/base/components/validbox/library.lzx
new file mode 100644
index 0000000..63a46b7
--- /dev/null
+++ b/WebContent/src/base/components/validbox/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="validText.lzx" />
+
+</library>
diff --git a/WebContent/src/base/components/validbox/validText.lzx b/WebContent/src/base/components/validbox/validText.lzx
new file mode 100644
index 0000000..0f5ffc2
--- /dev/null
+++ b/WebContent/src/base/components/validbox/validText.lzx
@@ -0,0 +1,214 @@
+<?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.
+  
+-->
+<library>
+    
+    <!--- A editfieldText with the possibility of a dropdown menu -->
+
+    <class name="validText" extends="edittext">
+        
+        <!--- The method to be called for validating -->
+        <attribute name="validate_method" value="null" />
+        
+        <!--- the id-attribute of the resultset -->
+        <attribute name="resultId" value="id" type="string" />
+        <!--- the name-attribute of the resultset -->
+        <attribute name="resultName" value="name" type="string" />        
+					
+        <attribute name="initSelect" value="false" type="boolean" />
+					
+        <attribute name="timerDelegate" value="null"/>
+        <attribute name="typetime" type="number" value="500"/>
+        <attribute name="timerIsInited" value="false" type="boolean"/>
+        
+        <!--- items to be shown in the floatinglist -->
+        <attribute name="shownitems" value="7" type="number" />          
+        <attribute name="spacing" value="1" type="number" />  
+        <!--- The vertical offset of the floatinglist attached to this
+              combobox. -->
+        <attribute name="attachoffset" value="-1" type="number"/>
+        <!--- Whether a scrollbar should automatically show up when there are more
+              items than shownitems. -->
+        <attribute name="autoscrollbar" value="true"/>   
+
+        <!--- The border size ( in pixels ) of the popup list.  -->
+        <attribute name="bordersize"   value="1" />      
+        
+        <attribute name="currentValue" type="string" value="" />
+        
+        <!--- refernce to the current selected item -->
+        <attribute name="_selected" value="null" />    
+        
+        <method name="addAndSelectItem" args="txt,id">
+            this.cblist.addItem(txt,id);
+            this.currentValue = id;
+            this.setAttribute('text',txt);
+        </method>    
+        
+        <method name="setSelection" args="obj">
+            this._selected = obj;
+            this.currentValue = obj.value;
+            this.setAttribute('text',obj.text);
+            this.setOpen(false,true);
+            this.onselect.sendEvent();
+        </method>    
+        
+        <event name="onselect" />
+        
+        <method name="getValue">
+            return this.currentValue;
+        </method>
+
+                    <!-- arrow down and up both popup floatinglist, and pass the key event to it -->
+        <handler name="onkeydown" args="key">
+            <![CDATA[
+                //Debug.write("onkeydown: ",key);
+                // 38 is up-arrow
+                // 40 is down-arrow
+                // 32 is space
+                // 13 is return
+                if ((key==38) || (key==40)) {
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    } else {
+                        lz.Focus.setFocus(this.cblist, true);
+                    }
+                    // pass the key event on to the floatinglist
+                    this.cblist.onkeydown.sendEvent(key);
+                } else if (key==27){
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    } else {
+                        lz.Focus.setFocus(this.cblist, true);
+                    }
+                    this.cblist.onkeydown.sendEvent(key);
+                } else if (key!=13 && key!=9){
+                    //Don't handle Enter and Tab Events cause it will open the listItems
+                    ////Debug.write("onkeydown txt: ",this.getText());
+                    if (!this.initSelect){
+                        ////Debug.write("onvalue: ",txt,this);
+                        if (!this.timerIsInited){
+                            this.timerIsInited = true;
+                            this.timerDelegate = new LzDelegate( this, "validatedText" );
+                            ////Debug.write("+++++++++++++++++ addTimer");
+                            //Debug.write("+++++++++++++++++ removeTimer ",lz.Timer.countTimers());
+                            lz.Timer.addTimer( this.timerDelegate, this.typetime );
+                        } else {
+                            ////Debug.write("############### resetTimer NO ADDING ");
+                            //Debug.write("############### resetTimer ",lz.Timer.countTimers());
+                            lz.Timer.resetTimer( this.timerDelegate, this.typetime );
+                        }
+                    } else {
+                        this.initSelect = false;
+                    }
+                }
+            ]]>
+        </handler>
+        
+        <method name="validatedText">
+            <![CDATA[
+                ////Debug.write("validatedText: ",this.getText());
+                //this.reset();
+                if (!this.initSelect){
+                    var t = this.validate_method(this.getText());
+                    ////Debug.write('t: ',t.length);
+                    //this.parent._cblist.setAttribute('visible',true);
+                    this.cblist.removeAllItems();
+                    for (var i=0;i<t.length;i++){
+                        ////Debug.write(t[i][this.resultName],t[i][this.resultId]);
+                        this.cblist.addItem(t[i][this.resultName],t[i][this.resultId]);
+                    }                
+
+                    ////Debug.write("validateText: ",this.getText());
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    }
+                    this.timerIsInited = false;
+                } else {
+                    this.initSelect=false;
+                    this.timerIsInited = false;
+                }
+            ]]>
+        </method>	
+        
+        <attribute name="isopen" value="false" type="boolean" setter="this.setOpen(isopen)" />
+        
+        <event name="onisopen" />
+        
+        <method name="setOpen" args="open, withkey" >
+            if (!this.isinited) {
+                this.isopen = open;
+                return;
+            }
+            if (open) { // open combox
+                if (this.isopen) return; // tends to get called more than once, esp when
+                //lz.ModeManager.makeModal( this );
+
+                this.cblist.bringToFront();
+                this.cblist.setVisible(true);
+                //lz.Focus.setFocus(this.cblist, withkey);
+
+                this.isopen = true;
+                if (this['onisopen']) this.onisopen.sendEvent(true);
+            } else { // close combox
+                if (!this['isopen']) return;
+                this.isopen = false;
+
+                //lz.ModeManager.release( this );
+                this.cblist.setVisible(false);
+                if (this['onisopen']) this.onisopen.sendEvent(false);
+                if ( lz.Focus.getFocus() == this.cblist ) {
+                    lz.Focus.setFocus(this, withkey);
+                }
+            }
+        </method>           
+
+        <floatinglist name="cblist"
+                      width="${owner.width - 1}"
+                      bordersize="${this.owner.bordersize}"
+                      spacing="${this.owner.spacing}"
+                      visible="false"
+                      shownitems="${this.owner.shownitems}"
+                      attach="bottom"
+                      attachoffset="${this.owner.attachoffset}"
+                      multiselect="false"
+                      autoscrollbar="${owner.autoscrollbar}" >
+
+            <handler name="onkeyup" args="kc">
+                //name="_dokeyup" 
+                if (kc == 27) {  // escape needs to close floating list
+                    this.owner.setOpen(false);
+                }
+            </handler>
+            <method name="removeAllItems" args="index"> 
+                for (var eg in _contentview.subviews){
+                    _removeitem(_contentview.subviews[eg]); 
+                } 
+            </method>	
+            <handler name="onselect" args="obj">
+                ////Debug.write("obj: ",obj);
+                this.owner.setSelection(obj);
+            </handler>		
+        </floatinglist>
+
+    </class>
+	
+    
+</library>
diff --git a/WebContent/src/base/contentviews/baseContentSaveView.lzx b/WebContent/src/base/contentviews/baseContentSaveView.lzx
new file mode 100644
index 0000000..915c0a6
--- /dev/null
+++ b/WebContent/src/base/contentviews/baseContentSaveView.lzx
@@ -0,0 +1,113 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="baseContentSaveView" extends="baseContentView">
+
+    <attribute name="observerViews" value="null" />
+	
+	<attribute name="saveIsVisible" value="true" type="boolean" />
+	<attribute name="addIsVisible" value="true" type="boolean" />
+	<attribute name="refreshIsVisible" value="true" type="boolean" />
+	<attribute name="deleteIsVisible" value="true" type="boolean" />
+	
+	<attribute name="confirmMessageLabelId" value="661" type="number" />
+    
+	<event name="onnew" />
+    <event name="ondelete" />
+    <handler name="onsavecompleted" >
+		this.hideNewRecordText();
+	</handler>
+    
+    <method name="hideNewRecordText">
+        this._newRecord.setAttribute('visibility','hidden');
+    </method>
+    
+	<event name="onreload" />
+
+    <view name="_savecontentbar" layout="axis:x;spacing:2;inset:2" x="2" height="28" width="$once{ parent.width }"
+        bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }">
+        
+        <state applied="$once{ parent.parent.saveIsVisible }">
+	        <baseChooseIcon resourceN="filesave_rsc" labelid="144" y="2" 
+	        	onclick="this.parent.parent.doSaveEvent()" />
+        </state>	
+        <state applied="$once{ parent.parent.addIsVisible }">
+        	<baseChooseIcon resourceN="edit_add_rsc" labelid="155" y="2" 
+        		onclick="this.parent.parent.doAddEvent()" />  
+        </state>
+        <state applied="$once{ parent.parent.refreshIsVisible }">
+	        <baseChooseIcon resourceN="reload_rsc" labelid="156" y="2" 
+	        	onclick="this.parent.parent.doReloadEvent()" />
+        </state> 
+        <state applied="$once{ parent.parent.deleteIsVisible }">    
+	        <baseChooseIcon resourceN="button_cancel_rsc" labelid="157" y="2" 
+	        	onclick="this.parent.parent.doDeleteEvent()"  />
+        </state>
+        
+		  
+		 	 	      	
+    </view>
+    
+    <labelText name="_newRecord" x="120"
+   						visibility="hidden" labelid="344" fgcolor="green" width="150" />     
+    
+    <method name="addViewToObserver" args="obj">
+    	if (this.observerViews==null) this.observerViews = new Array();
+        this.observerViews.push(obj);
+    </method>
+	
+	<method name="doAddEvent">
+		this._newRecord.setAttribute('visibility','visible');
+		this.onnew.sendEvent();
+	</method>
+    
+    <method name="doSaveEvent">
+    	if (this.observerViews.length!=0){
+        	new lz.contentSaveWindow(canvas.main_content._content.inner,{refObj:this,saveObj:this.observerViews});
+        }
+    </method>
+	
+	<method name="doReloadEvent">
+		this.onreload.sendEvent();
+	</method>
+    
+    <method name="doDeleteEvent">
+    	new lz.confirmDeleteWindow(canvas.main_content._content.inner,{
+    	                   refObj:this,
+    	                   messagelabelid:confirmMessageLabelId
+    	               });
+    </method> 
+    
+    <method name="confirmDelete">
+    	this.ondelete.sendEvent();
+    </method>
+
+    <event name="ontabcontentleave" />
+    
+    <method name="close">
+        this.ontabcontentleave.sendEvent();
+        this.destroy();
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/contentviews/baseContentView.lzx b/WebContent/src/base/contentviews/baseContentView.lzx
new file mode 100644
index 0000000..167b5bb
--- /dev/null
+++ b/WebContent/src/base/contentviews/baseContentView.lzx
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="baseContentView" extends="view">
+
+    <!---
+        If destroyByMethod is true, the clear content call will not destroy the views, but the method 
+        ontabcontentleave is still invoked, this can be handy if some connections must be closed before 
+        destroying / leaving the module, you could probably also use it to confirm leaving the module 
+     -->
+    <attribute name="destroyByMethod" value="false" type="boolean" />
+    
+    <event name="ontabcontentleave" />
+    
+    <handler name="oninit">
+    	canvas.currentContentView = this;
+    </handler>
+    
+    <!--
+        This Event is for sending additional Init Events, for example after the reconnect
+        the File-List has to be refreshed for the File-Browser Plugin 
+     -->
+    <event name="sendInit" />
+    
+    <method name="close">
+        if ($debug) Debug.write("close: ",this,this.destroyByMethod);
+        //Make sure any cursor status is reset
+		lz.Cursor.restoreCursor();
+		lz.Cursor.showHandCursor(true);
+		//Make sure any tooltip is cleared
+		canvas.clearToolTip();
+        this.ontabcontentleave.sendEvent();
+        if (!this.destroyByMethod) this.destroy();
+        return this.destroyByMethod;
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/base/contentviews/confirmDeleteWindow.lzx b/WebContent/src/base/contentviews/confirmDeleteWindow.lzx
new file mode 100644
index 0000000..bb090da
--- /dev/null
+++ b/WebContent/src/base/contentviews/confirmDeleteWindow.lzx
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<library>
+
+<class name="confirmDeleteWindow" extends="labelExplorerBox" labelid="152"
+    docking="true" width="264" x="450" y="20" height="200">
+    
+    <attribute name="refObj" value="null" />
+    <attribute name="messagelabelid" value="153" type="number" />
+    <attribute name="confirmlabelid" value="154" type="number" />
+    
+    <handler name="oninit">
+        lz.ModeManager.makeModal(this);
+    </handler>
+    
+    <handler name="onclose">
+        lz.ModeManager.release(this);
+    </handler>
+    
+    <labelText labelid="$once{ parent.messagelabelid }" y="22" x="4"
+    		   width="$once{ parent.width - 8 }" multiline="true"/>
+    
+    <simpleLabelButton labelid="$once{ parent.confirmlabelid }" width="100" x="40" y="170">
+        <handler name="onclick">
+            //Debug.write("confirm");
+            this.parent.refObj.confirmDelete();
+            this.parent.close();
+        </handler>
+    </simpleLabelButton>
+    
+    <simpleLabelButton labelid="153" width="100" x="150" y="170">
+        <handler name="onclick">
+            //Debug.write("cancel");
+            this.parent.close();
+        </handler>
+    </simpleLabelButton>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/contentviews/library.lzx b/WebContent/src/base/contentviews/library.lzx
new file mode 100644
index 0000000..4e6c9a1
--- /dev/null
+++ b/WebContent/src/base/contentviews/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+    
+    <include href="baseContentView.lzx" />
+    <include href="baseContentSaveView.lzx" />
+    <include href="confirmDeleteWindow.lzx" />
+
+</library>
diff --git a/WebContent/src/base/externalJavaScript.lzx b/WebContent/src/base/externalJavaScript.lzx
new file mode 100644
index 0000000..c19e3c5
--- /dev/null
+++ b/WebContent/src/base/externalJavaScript.lzx
@@ -0,0 +1,110 @@
+<?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.
+  
+-->
+<library>
+
+<script>
+<![CDATA[
+
+
+	flash.external.ExternalInterface.addCallback("redirectToUrlCallback", null, redirectToUrlCallback);
+	flash.external.ExternalInterface.addCallback("getTimeZoneOffsetCallback", null, getTimeZoneOffsetCallback);
+    flash.external.ExternalInterface.addCallback("getBrowserInfoCallback", null, getBrowserInfoCallback);
+    flash.external.ExternalInterface.addCallback("getBrowserLangCallback", null, getBrowserLangCallback);
+
+	
+	var redirectToUrlReturnObject = null;
+	var timeZoneOffsetReturnObject = null;
+	var browserInfoReturnObject = null;
+	var browserLangReturnObject = null;
+	
+	
+	function redirectToUrl(url, returnObject) {
+		
+		redirectToUrlReturnObject = returnObject;
+		
+		flash.external.ExternalInterface.call("redirectToUrl", url);
+		
+		//lz.Browser.callJS("redirectToUrl",callback,this.redirectURL);
+	}
+	
+	function redirectToUrlCallback(returnValue) {
+		if ($debug) Debug.write("redirectToUrlCallback ",returnValue);
+		if (redirectToUrlReturnObject != null) {
+			redirectToUrlReturnObject.callback(returnValue);
+		}
+	}
+
+	
+	function getTimeZoneOffset(returnObject) {
+		
+		timeZoneOffsetReturnObject = returnObject;
+		
+		flash.external.ExternalInterface.call("getTimeZoneOffset");
+		
+		//lz.Browser.callJS("getTimeZoneOffset",getTimeZoneOffsetCallback);
+	}
+	
+	function getTimeZoneOffsetCallback(returnValue) {
+		if ($debug) Debug.write("getTimeZoneOffsetCallback ",returnValue);
+		if (timeZoneOffsetReturnObject != null) {
+			timeZoneOffsetReturnObject.callback(returnValue);
+		}
+	}
+	
+	
+	function getBrowserInfo(returnObject) {
+        
+        browserInfoReturnObject = returnObject;
+        
+        flash.external.ExternalInterface.call("getBrowserInfo");
+        
+        //lz.Browser.callJS("getBrowserInfo",callback);
+    }
+    
+    function getBrowserInfoCallback(returnValue) {
+        if ($debug) Debug.write("getBrowserInfoCallback ",returnValue);
+        if (browserInfoReturnObject != null) {
+            browserInfoReturnObject.callback(returnValue);
+        }
+    }
+    
+    
+    function getBrowserLang(returnObject) {
+        
+        browserLangReturnObject = returnObject;
+        
+        flash.external.ExternalInterface.call("getBrowserLang");
+        
+        //lz.Browser.callJS("getBrowserLang",callback);
+    }
+    
+    function getBrowserLangCallback(returnValue) {
+        if ($debug) Debug.write("getBrowserLangCallback ",returnValue);
+        if (browserLangReturnObject != null) {
+            browserLangReturnObject.callback(returnValue);
+        }
+    }
+	
+
+]]>
+</script>
+
+</library>
diff --git a/WebContent/src/base/functions.lzx b/WebContent/src/base/functions.lzx
new file mode 100644
index 0000000..27611d5
--- /dev/null
+++ b/WebContent/src/base/functions.lzx
@@ -0,0 +1,409 @@
+<?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.
+  
+-->
+<library>
+
+<script>
+<![CDATA[
+
+var labelObj;
+    
+var tempActionForNavi = null;
+
+// Load Labels from List
+var labels = new Object();
+
+String.prototype.startsWith = function(prefix) {
+    return (this.indexOf(prefix) === 0);
+};	
+
+var _labelObject = new Array();
+
+var RegExpTooltiplist = null;
+
+function disablesTooltips(obj){
+  if(RegExpTooltiplist!=null){
+    RegExpTooltiplist.destroy();
+    RegExpTooltiplist=null;
+  }
+  RegExpTooltiplist = obj;
+}
+
+function setLabelObject(lableObj){
+	_labelObject = lableObj;
+}
+
+function getLabelObjectById(labelid){
+	for (var i=0;i<_labelObject.length;i++){
+		if (Number(_labelObject[i]['labelid'])==labelid){
+			return _labelObject[i];
+		}
+	}
+}
+
+function getLabelNameGlob(labelid){
+	for (var i=0;i<_labelObject.length;i++){
+		if (Number(_labelObject[i]['labelid'])==labelid){
+			return _labelObject[i]['labelvalue'];
+		}
+	}
+}
+    
+var currentMouseWheelObject = null;
+    
+function setCurrentMouseWheelObject(obj) {
+    currentMouseWheelObject=obj;
+}    
+function getCurrentMouseWheelObject(obj) {
+    return currentMouseWheelObject;
+}  
+function disableCurrentMouseWheelObject() {
+    currentMouseWheelObject=null;
+}  
+
+function setLabelObjectByHundred(no,obj){
+    canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "hibAdapter_setLabelObjectByHundred", [no, obj]); 
+   	for (var i = 0; i < obj.length; ++i) {
+	    labels["id" + obj[i].id] = obj[i].value;
+   	}
+}
+
+function getLabelTag(labelid){
+	var l = labels["id" + labelid];
+	if (l != undefined) {
+		if ($debug) l += " [" + labelid + "]";
+	} else {
+		l = "Error Missing [" + labelid + "]";
+	}
+    return l;
+}
+
+function quicklinkAct(action) {
+    // if($debug) Debug.write("FUNC/quicklinkAct",action);
+    loadContent({action: action, params: null},null,null);
+}            
+
+function loadContent(obj,parentobj,preparentobj){
+    if($debug) Debug.write("FUNC/loadContent: ", obj);
+    
+	if (obj.action!="logout") {
+	    tempActionForNavi = {action: obj.action, params: obj.params};
+		if (!clearStageContent()) {
+			loadContentByTempActionForNavi();
+		}
+	} else {
+		new lz.logoutConfirm(canvas,{objectsToClean: obj});
+	}
+    
+}
+    
+function loadContentByTempActionForNavi(){
+    // if($debug) Debug.write("FUNC/loadContentByTempActionForNavi");
+    
+	if (canvas.roomJumpId != 0) {
+		canvas.initroomid = canvas.roomJumpId;
+        canvas.thishib.getRoomById.doCall();
+		canvas.roomJumpId = 0;
+	} else {
+        if($debug) Debug.write("FUNC/loadContentByString -1- ",tempActionForNavi);
+        if($debug) Debug.write("FUNC/loadContentByString -2- ",canvas[tempActionForNavi.action]);
+        if($debug) Debug.write("FUNC/loadContentByString -3- ",lz[canvas[tempActionForNavi.action]]);
+        
+        new lz[canvas[tempActionForNavi.action]](canvas.main_content._content.inner, {params: tempActionForNavi.params});
+	}
+}    
+
+function clearStageContent(){
+    return canvas.main_content._content.clearAll();
+}
+
+function setLabelObject(labelObjRef){
+    // if($debug) Debug.write("FUNC/setLabelObject",labelObjRef);
+    labelObj = labelObjRef;
+}
+
+function getLabelNameXMLCRM(labelid){
+    // if($debug) Debug.write("FUNC/getLabelNameXMLCRM",labelid);
+    for (var i=0;i<labelObj.length;i++){
+        if (labelid==labelObj[i].fieldvalues_id){
+            return labelObj[i].value;
+        }
+    }
+    
+}
+
+function getStringTime(){
+    var dateObj = new Date();
+    var hours = dateObj.getHours();
+    if (hours<10) hours="0"+hours;
+    var minutes = dateObj.getMinutes();
+    if (minutes<10) minutes="0"+minutes;
+    return ''+hours+':'+minutes;
+}   
+
+function getStringTimeWithSeconds(){
+    var dateObj = new Date();
+    var hours = dateObj.getHours();
+    if (hours<10) hours="0"+hours;
+    var minutes = dateObj.getMinutes();
+    if (minutes<10) minutes="0"+minutes;
+    var seconds = dateObj.getSeconds();
+    if (seconds<10) seconds="0"+seconds;
+    return ''+hours+':'+minutes+':'+seconds;
+}   
+
+function parseDateToString(dateObj){
+    // if($debug) Debug.write("FUNC/parseDateToString",dateObj);
+    if (dateObj==null) return "";
+    var d = dateObj.getDate();
+    if (d<10) d = "0"+d;
+    var m = dateObj.getMonth()+1;
+    if (m<10) m = "0"+m;
+    var y = dateObj.getFullYear();
+    if (y<10) y = "0"+y;
+    return d+'.'+m+'.'+y;
+}
+
+function parseDateToStringTimeOnly(dateObj){
+    // if($debug) Debug.write("FUNC/parseDateToStringTime",dateObj);
+    if (dateObj==null) return "";
+    var d = dateObj.getDate();
+    if (d<10) d = "0"+d;
+    var mo = dateObj.getMonth()+1;
+    if (mo<10) mo = "0"+mo;
+    var y = dateObj.getFullYear();
+    if (y<10) y = "0"+y;
+    var h = dateObj.getHours();
+    if (h<10) h = "0"+h;    
+    var m = dateObj.getMinutes();
+    if (m<10) m = "0"+m;        
+    return h+':'+m;
+}
+
+function parseTimeStringToDate(t){
+    // if($debug) Debug.write("FUNC/parseStringToTime",t);
+    if (t.length==5){
+        var d = 1;
+        var m = 1;
+        var y = 1970;
+        var std = Number(t.substring(0, 2));
+        var min = Number(t.substring(3, 5));
+        if (!isNaN(d) && !isNaN(m) && !isNaN(y)){
+            if ($debug) Debug.write("parseTimeStringToDate: ",new Date(y, m-1, d, std, min))
+            return new Date(y, m-1, d, std, min);
+        } else {
+            return new Date();
+        }
+    } else {
+        return new Date();
+    }
+}
+
+function parseDateToStringTime(dateObj){
+    // if($debug) Debug.write("FUNC/parseDateToStringTime",dateObj);
+    if (dateObj==null) return "";
+    var d = dateObj.getDate();
+    if (d<10) d = "0"+d;
+    var mo = dateObj.getMonth()+1;
+    if (mo<10) mo = "0"+mo;
+    var y = dateObj.getFullYear();
+    if (y<10) y = "0"+y;
+    var h = dateObj.getHours();
+    if (h<10) h = "0"+h;    
+    var m = dateObj.getMinutes();
+    if (m<10) m = "0"+m;        
+    return d+'.'+mo+'.'+y+' '+h+':'+m;
+}
+
+function parseDateToStringTimeSeconds(dateObj){
+    // if($debug) Debug.write("FUNC/parseDateToStringTime",dateObj);
+    if (dateObj==null) return "";
+    var d = dateObj.getDate();
+    if (d<10) d = "0"+d;
+    var mo = dateObj.getMonth()+1;
+    if (mo<10) mo = "0"+mo;
+    var y = dateObj.getFullYear();
+    if (y<10) y = "0"+y;
+    var h = dateObj.getHours();
+    if (h<10) h = "0"+h;    
+    var m = dateObj.getMinutes();
+    if (m<10) m = "0"+m; 
+    var s = dateObj.getSeconds();
+    if (s<10) s = "0"+s; 
+    return d+'.'+mo+'.'+y+' '+h+':'+m+':'+s;
+}
+
+function parseStringToDate(t){
+    // if($debug) Debug.write("FUNC/parseStringToDate",t);
+    if (t.length==10){
+        var d = Number(t.substring(0, 2));
+        var m = Number(t.substring(3, 5));
+        var y = Number(t.substring(6, 10));
+        if (!isNaN(d) && !isNaN(m) && !isNaN(y)){
+            return new Date(y, m-1, d);
+        } else {
+            return new Date();
+        }
+    } else {
+        return new Date();
+    }
+}
+
+function parseStringToDateTime(t){
+    // if($debug) Debug.write("FUNC/parseStringToDate",t);
+    if (t.length==15){
+        var d = Number(t.substring(0, 2));
+        var m = Number(t.substring(3, 5));
+        var y = Number(t.substring(6, 10));
+        var h = Number(t.substring(10, 12));
+        var min = Number(t.substring(13, 15));
+        if (!isNaN(d) && !isNaN(m) && !isNaN(y)){
+            if ($debug) Debug.write("parseStringToDateTime+: ",new Date(y, m-1, d, h, min))
+            return new Date(y, m-1, d, h, min);
+        } else {
+            return new Date();
+        }
+    } else {
+        return new Date();
+    }
+}
+
+function getStringDateFileSave(){
+    // if($debug) Debug.write("FUNC/getStringDateFileSave");
+    var dateObj = new Date();
+    var hours = dateObj.getHours();
+    if (hours<10) hours="0"+hours;
+    var minutes = dateObj.getMinutes();
+    if (minutes<10) minutes="0"+minutes;
+    var date = dateObj.getDate();
+    if (date<10) date="0"+date;
+    var month = dateObj.getMonth()+1;
+    if (month<10) month="0"+month;
+    return date+'_'+month+'_'+dateObj.getFullYear()+'_at_'+hours+'_'+minutes;
+} 
+
+function getStringTimeByTimeStamp(tStamp){
+    if ($debug) Debug.write("getStringTimeByTimeStamp "+tStamp);
+    var dateObj = new Date(tStamp);
+    var hours = dateObj.getHours();
+    if (hours<10) hours="0"+hours;
+    var minutes = dateObj.getMinutes();
+    if (minutes<10) minutes="0"+minutes;
+    var seconds = dateObj.getSeconds();
+    if (seconds<10) seconds="0"+seconds;
+    return ''+hours+':'+minutes+':'+seconds;
+}  
+
+
+function strtrim(str)
+{
+    for(var i = 0; str.charCodeAt(i) < 33; i++);
+    for(var j = str.length-1; str.charCodeAt(j) < 33; j--);
+    return str.substring(i, j+1);
+}
+
+function parseDateTimeStringFromXmlString(str) { 
+	//0123456789012345678901234567890
+	//2012-03-08T06:30:00.000+01:00
+	//2012-03-11T15:00:00.713Z
+	var tYear = str.substr(0,4);
+	var tMonth = str.substr(5,2);
+	var tDay = str.substr(8,2);
+	var tHour = str.substr(11,2);
+	var tMin = str.substr(14,2);
+	return ""+tDay+"."+tMonth+"."+tYear+" "+tHour+":"+tMin;
+}
+
+function parseDateStringFromXmlString(str) { 
+	//0123456789012345678901234567890
+	//2012-03-08T06:30:00.000+01:00
+	//2012-03-11T15:00:00.713Z
+	var tYear = str.substr(0,4);
+	var tMonth = str.substr(5,2);
+	var tDay = str.substr(8,2);
+	return ""+tDay+"."+tMonth+"."+tYear;
+}
+
+function parseTimeStringFromXmlString(str) { 
+	//0123456789012345678901234567890
+	//2012-03-08T06:30:00.000+01:00
+	//2012-03-11T15:00:00.713Z
+	var tHour = str.substr(11,2);
+	var tMin = str.substr(14,2);
+	
+	return ""+tHour+":"+tMin;
+}
+
+/*
+ * parse date from string
+ * sample strings:
+ * 2012-03-05
+ */
+function parseDateOnlyFromXmlString(str) { 
+	var tYear = str.substr(0,4);
+	var tMonth = str.substr(5,2);
+	var tDay = str.substr(8,2);
+	return new Date(tYear,Number(tMonth)-1,tDay);
+}
+
+
+/*
+ * parse date from string
+ * sample strings:
+ * 0123456789012345678901234567890
+ * 2012-03-08T06:30:00.000+01:00
+ * 2012-03-11T15:00:00.713Z
+ */
+function parseDateTimeFromXmlString(str) { 
+	var tYear = str.substr(0,4);
+	var tMonth = str.substr(5,2);
+	var tDay = str.substr(8,2);
+	var tHour = str.substr(11,2);
+	var tMin = str.substr(14,2);
+	return new Date(tYear,Number(tMonth)-1,tDay,tHour,tMin,0);
+}
+
+/**
+ * Correct REST format for java.util.Calendar is: yyyy-mm-ddTHH:MM:SS
+ *
+ *
+ */
+function parseDateToRestDateCalendar(dateObj){
+    if($debug) Debug.write("FUNC/parseDateToStringTime 1",dateObj);
+    if (dateObj==null) return "";
+    var d = dateObj.getDate();
+    if (d<10) d = "0"+d;
+    var mo = dateObj.getMonth()+1;
+    if (mo<10) mo = "0"+mo;
+    var y = dateObj.getFullYear();
+    var h = dateObj.getHours();
+    if (h<10) h = "0"+h;    
+    var m = dateObj.getMinutes();
+    if (m<10) m = "0"+m; 
+    var s = dateObj.getSeconds();
+    if (s<10) s = "0"+s; 
+    if($debug) Debug.write("FUNC/parseDateToStringTime 2",""+y+"-"+mo+"-"+d+"T"+h+":"+m+":"+s);
+    return ""+y+"-"+mo+"-"+d+"T"+h+":"+m+":"+s;
+}
+
+]]>
+</script>
+		
+</library>
diff --git a/WebContent/src/base/hibernate/hibRtmpConnection.lzx b/WebContent/src/base/hibernate/hibRtmpConnection.lzx
new file mode 100644
index 0000000..a008ba9
--- /dev/null
+++ b/WebContent/src/base/hibernate/hibRtmpConnection.lzx
@@ -0,0 +1,1909 @@
+<?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.
+  
+-->
+<library>
+    
+<dataset name="myresultnavi" />
+
+<dataset name="languagesSet" />        
+
+<class name="userStatus" extends="view" width="250" height="30">
+    <attribute name="statusText" type="string" />
+    <attribute name="statusColor" type="number" value="0" />
+
+    <text name="status" width="240" height="20" x="5" y="5" fontstyle="bold" fgcolor="0" text="defaulttext" fontsize="10"/>
+
+    <handler name="oninit">
+        this.status.setAttribute("text", this.statusText);
+        this.status.setAttribute("fgcolor", this.statusColor);
+        this.setAttribute("visibility", "visible");
+        lz.Timer.addTimer( new LzDelegate( this, "selfDestroy" ), 3000 );
+    </handler>
+
+    <method name="selfDestroy" args="ignore=null">
+        this.destroy();
+    </method>
+</class>
+
+<class name="hibRtmpConnection" extends="rtmpConnection" debug="false"
+    src="$once{ this.getUrl() }" >
+
+    <attribute name="counterror" type="number" value="0" />
+    
+    <attribute name="loaderVar" value="null" />
+    
+    <attribute name="userScope" value="hibernate" type="string" />
+    
+    <!-- refreshing the session regulary -->
+    <attribute name="refreshDelegate" value="null" />
+    
+    <!-- UserId-->
+    <attribute name="UserID" value="1" type="number" />
+    <!-- reconnect after each conferenceView -->
+    <attribute name="reconnectAfterRoomleft" type="boolean" value="false" />
+    <attribute name="reconnectedRoomInstance" value="null" />
+    
+    <attribute name="reconnectionAction" value="false" type="boolean" />
+    <attribute name="reconnectObjRef" value="null" />
+         
+     <attribute name="userobject" value="null" />
+     
+     <!-- default will be loaded on startup -->
+     <attribute name="userlang" value="1" type="number" />
+     
+     <!-- The default Language will be loaded on init  -->
+     <attribute name="initlanguageLoaded" value="false" type="boolean" />
+     
+     <!-- This domain is the orgdomain used in the video-conference -->
+     <attribute name="conferencedomain" value="public" type="string" />
+     
+     <!-- if this connection is used for testing the app
+     see test-setup.lzx -->
+     <attribute name="testAppLoading" value="false" type="boolean" />
+     
+     <!-- 
+        the real ROOM_ID
+     -->
+     <attribute name="currentroomid" value="0" type="number" />
+     
+     <!-- This is the current domain the user has logged-in -->
+     <attribute name="currentdomain" value="domain1" type="string" />
+     <attribute name="currentdomainObj" value="domain1" type="string" />
+     
+     <!--- the current Invitation-Object -->
+     <attribute name="currentInvitation" value="null" />
+    
+    <!-- shows what kind of conferenceView it is at the moment
+        wether its conferenceView or audienceView -->
+    <attribute name="modus" value="" type="string" />
+    
+    <!-- shows what kind of room the use is public or private -->
+    <attribute name="roomtype" value="" type="string" />
+        
+    <attribute name="showKickMessage" value="false" type="boolean"/>
+    <attribute name="showFullMessage" value="false" type="boolean"/>
+         
+    <attribute name="useRTMPT" value="false" type="boolean" />
+    
+    <method name="getProtocol">
+    	if (canvas.useSSL) {
+    		return "rtmps";
+    	}
+    	if (this.useRTMPT) {
+    		return "rtmpt";
+    	}
+    	return "rtmp";
+    </method>
+    
+    <method name="getPort">
+    	if (canvas.useSSL) {
+    		if (canvas.isSlaveHosted) {
+    			return canvas.slaveRtmpsslport;
+    		}
+            return canvas.rtmpsslport;
+        }
+    	if (this.useRTMPT) {
+    		if (canvas.isSlaveHosted) {
+    			return canvas.red5httpport; //TODO probably slave equivalent need to be added (or maybe this is not used)
+    		}
+    		return canvas.red5httpport;
+    	}
+    	if (canvas.isSlaveHosted) {
+    		return canvas.slaveRtmpport;
+    	}
+    	return canvas.rtmpport;
+    </method>
+    
+    <method name="getHost">
+    	if (canvas.isSlaveHosted) {
+    		return canvas.slaveRtmphostlocal;
+    	}
+    	return canvas.rtmphostlocal;
+    </method>
+    
+    <method name="getWebappRootKey">
+    	if (canvas.isSlaveHosted) {
+    		return canvas.slaveWebAppRootKey;
+    	}
+    	return canvas.webAppRootKey;
+    </method>
+         
+    <!-- 
+    	canvas.getUrl() can not be reused since it has different protocol and port 
+    	and potentially in cluster another host, the only thing that stays the same
+    	no matter if hosted on slave or on master, is the scope, so
+    	userScope always stays the same
+     -->
+    <method name="getUrl">
+        return this.getProtocol() + '://' + this.getHost() + ':' + this.getPort() 
+        			+ '/' + this.getWebappRootKey() + '/' + this.userScope;
+    </method>
+             
+     <!--
+        The onconnect Method is triggered several times:
+             - When you enter a room the NetConnection will close and reconnect to the Scope of the Room
+             - When you leave the room again it will be re-connected to the default scope again
+      -->
+     <handler name="onconnect">
+        if($debug) Debug.write("hibRtmpConnection/onconnect");
+        if (this.reconnectionAction){
+        	if (canvas.wicketsid == null) {
+            	this.overwritePublicSID.doCall();
+	            this.setUsernameReconnect.doCall();
+            } else {
+	            canvas.sessionId = canvas.wicketsid;
+				canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSessionId", [canvas.sessionId]);
+	            this.getPublicSID.doCall();
+            }
+        } else if (this.reconnectAfterRoomleft) {
+            //Return to content after reconnect
+            canvas.thishib.reconnectedRoomInstance.destroy();
+            this.overwritePublicSID.doCall();
+            this.setUsernameReconnect.doCall();
+        } else if (canvas.wicketsid != null) {
+            canvas.sessionId = canvas.wicketsid;
+			canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSessionId", [canvas.sessionId]);
+			if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+            this.getPublicSID.doCall();
+        } else {
+            this.refreshDelegate = new LzDelegate( this, "refreshSessionMeth" );
+            //lz.Timer.addTimer( this.refreshDelegate, 60000 );
+            lz.Timer.addTimer( this.refreshDelegate, canvas.refreshSession );
+            if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+            
+            //Load Session Data
+            this.getsessiondata.callRPC();    
+        }
+    </handler>
+    
+    <handler name="ondisconnect">
+        canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "disconnect", [canvas.thishib.src]);
+    </handler>
+    
+    <method name="reconnectComplete">
+         if (this.reconnectionAction){
+            this.reconnectionAction = false;
+            this.reconnectObjRef.reconnectSuccess();
+        } else if (this.reconnectAfterRoomleft) {
+            loadContentByTempActionForNavi();
+        }
+        canvas.currentContentView.sendInit.sendEvent(this);
+    </method>
+    
+	<handler name="onerror" >
+	<![CDATA[
+		canvas.remoteLogWrite("error status='" + this.status + "'; src='" + this.src + "'; lastCalled='" + this.lastCalled
+			+ "'; showKickMessage='" + this.showKickMessage + "'; showFullMessage='" + this.showFullMessage
+			+ "'; reconnectionAction='" + this.reconnectionAction + "'; reconnectAfterRoomleft='" + this.reconnectAfterRoomleft + "'");
+		if (this.showFullMessage) {
+			new lz.labelerrorPopup(canvas,
+				{
+					errorlabelid: 99
+					, onCloseFunc: function() {
+				       if (this.makeModal) {
+				           lz.ModeManager.releaseAll();
+				       }
+				       if ($debug) Debug.write("Error dialog is being closed, calling QUIT");
+				       canvas.sendViaLocalConnection(canvas.vid_lc_name, "immediateExitRoom", [true,null]);
+					}
+				});
+			this.showFullMessage = false;
+			return;
+		} else if (this.showKickMessage) {
+			new lz.labelerrorPopup(canvas,{
+				errorlabelid:606
+				, onCloseFunc: function() {
+					canvas.quit();
+				}
+			});
+			canvas._loadingAll.hideContentOnly();
+			return;
+		} else if (this.reconnectionAction){
+			this.connect();
+		} else if (this.reconnectAfterRoomleft) {
+			if ($debug) Debug.write("this.reconnectAfterRoomleft: ",this.reconnectAfterRoomleft);
+			this.counterror=0;
+			this.connect();
+		} else {
+			if (canvas.isRemoteUser() && (this.status == 'NetConnection.Connect.Closed' 
+					|| this.status == 'NetConnection.Connect.NetworkChange'))
+			{
+				if (null != canvas.REDIRECT_URL_FOR_EXTERNAL_USERS) {
+					new lz.redirectBox(canvas, {
+							redirectURL:canvas.REDIRECT_URL_FOR_EXTERNAL_USERS
+							, maxTime: 0
+						});
+				}
+				this.counterror = 6; //NO more reconnects
+			}
+			this.useRTMPT = true
+			var src = getUrl();
+			this.setAttribute('src',src);
+			//Debug.write("new src ",this.src);
+			if (this.counterror<3){
+				this.counterror++;
+				//Debug.write("try ",this.counterror,"one");
+				if (canvas.thishib.loaderVar != null) {
+					canvas.thishib.loaderVar.error.setAttribute('text',"try "+this.counterror);
+				}
+				this.connect();
+			} else {
+				//Debug.write("connection failed");
+				if (canvas.thishib.loaderVar != null) {
+					canvas.thishib.loaderVar.error.setAttribute('text',this.status);
+				}
+				canvas.setAttribute('loadingmessage','connection failed');
+				new lz.labelerrorPopup(canvas,{errorlabelid:556});
+			}
+			if (canvas.thishib.loaderVar != null) {
+				canvas.thishib.loaderVar._src.setAttribute('text',src);
+			}
+		}
+	]]>
+	</handler>    
+    
+    <method name="refreshSessionMeth" args="calleeObj">
+        this.refreshSession.doCall();
+    </method>
+    
+    <!-- This Function is just for refreshing the Session -->
+    <netRemoteCallHib name="refreshSession" funcname="userservice.refreshSession" showLoading="false" >    
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>   
+        <handler name="ondata" args="value">
+            //if ($debug) Debug.write("hibRtmpConnection/refreshSession [",value,"]");
+            lz.Timer.addTimer( parent.refreshDelegate, canvas.refreshSession );
+        </handler>
+    </netRemoteCallHib>
+      
+    <netRemoteCallHib name="getsessiondata" funcname="xmlcrm.getsessiondata" >      
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("hibRtmpConnection/getsessiondata [",value,"]");
+            canvas.sessionObject = value;
+            canvas.sessionId = value.session_id;
+			canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSessionId", [canvas.sessionId]);
+			if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+            parent.getPublicSID.doCall();
+        </handler>  
+    </netRemoteCallHib>
+     
+    <netRemoteCallHib name="getPublicSID" funcname="getPublicSID" >      
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("hibRtmpConnection/getPublicSID [",value,"]");
+            canvas.publicSID = value;     
+			if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+			parent.getLanguages.doCall();
+        </handler>  
+    </netRemoteCallHib>
+    
+    <netRemoteCallHib name="overwritePublicSID" funcname="overwritePublicSID" >     
+        <netparam><method name="getValue"> return canvas.publicSID;</method></netparam>
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("overwritePublicSID: ",value);
+        </handler>  
+    </netRemoteCallHib>    
+    
+    <netRemoteCallHib name="getLanguages" funcname="languageservice.getLanguages" 
+                      dataobject="languagesSet" >      
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            //Debug.write("getLanguages: ",value);
+			if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+            parent.getDefaultLanguage.doCall();
+        </handler>  
+    </netRemoteCallHib>    
+    
+    <method name="setDefaultUserLanguage">
+	    <![CDATA[
+	        if (userlang == -1 && canvas.language_id != 0) {
+	            userlang = canvas.language_id;
+	        } else if (userlang == -1) {
+	            var lang_id = canvas.default_lang_id;
+	            
+	            var browserLang = flash.external.ExternalInterface.call("function(){return window.navigator.systemLanguage || window.navigator.userLanguage || window.navigator.language;}");
+	            if (browserLang == null) {
+	                browserLang = "" + System.capabilities.language;
+	            }
+	            if (browserLang != null && browserLang.length > 1) {
+	                var lngCode = browserLang.substring(0, 2);
+	                
+	                //openlaszlo XPath is able to search nothing, so will iterate
+	                var xpath = "languagesSet:/item";
+	                var list = languagesSet.getPointer().xpathQuery(xpath);
+	                
+	                var partMatch = -1, fullMatch = -1; 
+	                for (var i = 1; list != null && i <= list.length; ++i) {
+	                    xpath = "languagesSet:/item[" + i + "]/code/text()";
+	                    var val = languagesSet.getPointer().xpathQuery(xpath);
+	                    if (val != null && val.length > 1) {
+	                        var partCode = ("" + val).substring(0, 2);
+	                        
+	                        if (browserLang == val) {
+	                            fullMatch = i;
+	                        } else if (lngCode == val) {
+	                            partMatch = i;
+	                        } else if (partCode == lngCode) {
+	                            partMatch = i;
+	                        }
+	                    }
+	                }
+	                if (partMatch != -1 || fullMatch != -1) {
+	                    i = (fullMatch != -1) ? fullMatch : partMatch;
+	                    xpath = "languagesSet:/item[" + i + "]/language_id/text()";
+	                    lang_id = languagesSet.getPointer().xpathQuery(xpath);
+	                }
+	            }
+	            
+	            if (canvas.language_id == 0) {
+	                userlang = lang_id;
+	            } else {
+	                userlang = canvas.language_id;
+	            }
+	        }
+	    ]]>
+    </method>
+    
+    <netRemoteCallHib name="logoutUser" funcname="xmlcrm.logoutUser"
+        remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" 
+        isCallBackHandler="true">
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <handler name="sendCallBack">
+        <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("sendCallBack logoutUser: ");    
+            parent.initlanguageLoaded = false;
+            
+            var g = canvas.getUserData();
+            g["username"] = '';
+            g["userpass"] = '';
+            g["userquality"] = null;
+            g["usercolor"] = null;
+            g["userlang"] = null;
+            g["saveuserdata"]=false;
+            g["storedSession"] = "";
+            canvas.setUserData(g);
+            canvas.setColorStyle(canvas.baseColorScheme);
+            
+            parent.userlang = -1;
+            parent.setDefaultUserLanguage();
+
+            parent.getLanguageByIdAndMax.start = 0;
+            parent.getLanguageByIdAndMax.doCall();
+        ]]>
+        </handler>          
+    </netRemoteCallHib>     
+    
+    <netRemoteCallHib name="setUsernameReconnect" funcname="setUsernameReconnect" remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return canvas.user_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentuser;</method></netparam>
+        <netparam><method name="getValue">return canvas.firstName;</method></netparam>
+        <netparam><method name="getValue">return canvas.lastName;</method></netparam>   
+        <netparam><method name="getValue">return canvas.picture_uri;</method></netparam>   
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("setUsernameReconnect: ",canvas.user_id,value);   
+            parent.reconnectComplete();
+        </handler>  
+    </netRemoteCallHib>    
+        
+    <netRemoteCallHib name="getDefaultLanguage" funcname="languageservice.getDefaultLanguage" >      
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            canvas.default_lang_id = value;
+            if ($debug) Debug.write("getDefaultLanguage: ",value,"; canvas.lang = ", canvas.language_id);
+            if (canvas.language_id==0){
+                parent.userlang = canvas.default_lang_id;
+            } else {
+                parent.userlang = canvas.language_id;
+            }
+            parent.getLanguageByIdAndMax.doCall();
+        </handler>  
+    </netRemoteCallHib>      
+    
+	<netRemoteCallHib name="getInvitationByHash" activeErrorHandler="true" funcname="invitationservice.getInvitationByHash">
+		<netparam name="invitationHash"><method name="getValue">return canvas.invitationHash;</method></netparam>
+		<handler name="ondata" args="value">
+		<![CDATA[
+			if (canvas.thishib.loaderVar != null) {
+				canvas.thishib.loaderVar.close();
+			}
+			//The onResult-Handler will be called be the rtmpconnection
+			if ($debug) Debug.write("getInvitationByHash: ",value);
+			if (value<0){
+			} else {
+				if (value.allowEntry) {
+					parent.currentInvitation = value;
+					new lz.invitationQuickLoader(canvas.main_content._content.inner);
+				} else {
+					var addInfo = "" + value.validFrom +"<br/> - <br/>"+ value.validTo;
+					var dlg = new lz.rpcErrorDialog(canvas,{errorid:-50,addInfo:addInfo});
+				}
+			}
+		]]>
+		</handler>
+	</netRemoteCallHib> 
+    
+	<netRemoteCallHib name="secureLoginByRemote" activeErrorHandler="true" funcname="xmlcrm.secureLoginByRemote" >
+		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+		<netparam name="remoteSessionId"><method name="getValue">return canvas.secureHash;</method></netparam>
+		<handler name="ondata" args="value">
+		<![CDATA[
+			if (canvas.thishib.loaderVar != null) {
+				canvas.thishib.loaderVar.close();
+			}
+			//The onResult-Handler will be called be the rtmpconnection
+			if ($debug) Debug.write("secureLoginByRemote: ",value);
+			if (value < 0) {
+			} else {
+				if (value == null) {
+					new lz.errorPopup(canvas,{error:'Invalid Hash'});
+					return;
+				}
+				
+				canvas.showNickNameDialog = value.showNickNameDialog;
+				if ($debug) Debug.write("markSessionAsLogedIn9 ",canvas.showNickNameDialog);
+				
+				canvas.initroomid = value.room_id;
+				canvas.becomemoderator = value.becomemoderator;
+				canvas.showAudioVideoTest = value.showAudioVideoTest;
+				canvas.landingZone = value.landingZone;
+				
+				canvas.roomRecordingId = value.roomRecordingId;
+				
+				if (canvas.roomRecordingId == null) {
+					canvas.roomRecordingId = 0;
+				}
+				
+				if (canvas.showNickNameDialog) {
+					new lz.chooseNickName(canvas);
+				} else {
+					parent.getCurrentRoomClient.doCall();
+				}
+			}
+		]]>
+		</handler>
+	</netRemoteCallHib>  
+    
+    <netRemoteCallHib name="loginUserByRemote" activeErrorHandler="true" 
+        funcname="xmlcrm.loginUserByRemote" >          
+        <netparam name="remoteSessionId"><method name="getValue">return canvas.remoteUserSid;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("loginUserByRemote -1-: ",value);
+                if ($debug) Debug.write("loginUserByRemote -2-: ",canvas.remoteUserSid);
+                if (value<0){
+                    
+                } else {
+                    parent.getCurrentRoomClient.doCall();
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+    
+    <netRemoteCallHib name="getCurrentRoomClient" funcname="xmlcrm.getCurrentRoomClient" >          
+        <netparam name="sessionId"><method name="getValue">return canvas.sessionId;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("getCurrentRoomClient: ",value);
+                if (value!=null){
+                    
+                    canvas.setAttribute('currentuser',value.firstname+" "+value.lastname);
+                    
+                    //Somehow this leads to a bug in the implementation of the secure User Login
+                    canvas.setAttribute('user_id',value.user_id);
+                    
+                    canvas.setAttribute('allowRecording',value.allowRecording);
+                    
+                    canvas.setAttribute('firstName',value.firstname);
+                    canvas.setAttribute('lastName',value.lastname);
+                    
+                    hib.userobject.firstname = value.firstname;
+                    hib.userobject.lastname = value.lastname;
+                    
+                    canvas.setAttribute('mail','');
+                    canvas.setAttribute('lastLogin','');
+                    canvas.setAttribute('official_code','');
+                    canvas.setAttribute('picture_uri',value.picture_uri);
+                    canvas.setAttribute('language','');
+                    
+                    if ($debug) Debug.write("canvas.landingZone :: ",canvas.landingZone);
+                    
+                    if (canvas.landingZone == "dashboard") {
+                        canvas.destroyExitButton = false;
+			            parent.setUsernameAndSession.doCall();
+                        parent.getRoomTypes.doCall();
+                    } else if (canvas.roomRecordingId > 0) {
+                    	if (canvas.thishib.loaderVar != null) {
+                        	canvas.thishib.loaderVar.close();
+                        }
+                        //parent.getRoomById.doCall();
+                        var obj = new Array();
+                        obj["action"] = "recordModule";
+                        loadContent(obj,null,null);
+                    } else if (canvas.wicketroomid > 0) {
+                    	canvas.initroomid = canvas.wicketroomid;
+                        parent.getRoomTypes.doCall();
+                        parent.getRoomById.doCall();
+                    } else {
+                    	if (canvas.thishib.loaderVar != null) {
+	                        canvas.thishib.loaderVar.close();
+                        }
+                        parent.getRoomById.doCall();
+                    }
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>
+    
+	<netRemoteCallHib name="getRoomById" funcname="conferenceservice.getRoomById" >          
+		<netparam name="sessionId"><method name="getValue">return canvas.sessionId;</method></netparam>
+		<netparam name="roomId"><method name="getValue">return canvas.initroomid;</method></netparam>
+		<handler name="ondata" args="value">
+		<![CDATA[
+			//The onResult-Handler will be called be the rtmpconnection
+			if ($debug) Debug.write("getRoomById: ",value);
+			if (value!=null){
+				if (canvas.wicketsid != null) {
+					canvas.thishib.loaderVar.close();
+				}
+				if (canvas.directUserLogin) {
+					canvas.directRoomObj = value;
+					canvas.thishib.loaderVar.close();
+				} else {
+					canvas.setRoomValues(value.roomtype.roomtypes_id,value.rooms_id,value);
+					canvas.sendViaLocalConnection(canvas.rtmp_lc_name,"setRoomValues",[value.roomtype.roomtypes_id,value.rooms_id,value]);
+				}
+			} else {
+				new lz.labelerrorPopup(canvas,{errorlabelid:1286});
+			}
+		]]>
+		</handler>
+	</netRemoteCallHib>
+        
+    <netRemoteCallHib name="getLanguageByIdAndMax" funcname="languageservice.getLanguageByIdAndMax" >
+        <attribute name="start" value="0" type="number" />
+        <attribute name="step" value="100" type="number" />
+        <attribute name="max" value="1600" type="number" />
+        <netparam><method name="getValue">return parent.parent.userlang;</method></netparam> 
+        <netparam><method name="getValue">return parent.start;</method></netparam> 
+        <netparam><method name="getValue">return parent.step;</method></netparam> 
+        <handler name="ondata" args="value">
+            <![CDATA[
+            if($debug) Debug.write("hibRtmpConnection/userlang:[",parent.userlang,"]");
+                //if($debug) Debug.write("hibRtmpConnection/getLanguageByIdAndMax:[",value,"]");
+                setLabelObjectByHundred(this.start,value);
+                //The onResult-Handler will be called be the rtmpconnection
+                if (this.start <= max){
+                    this.start += this.step;
+                    if (canvas.thishib.loaderVar != null) {
+                       canvas.thishib.loaderVar.setProgress();
+                    }
+                    this.doCall();
+                } else {
+                	if($debug) Debug.write("loading lang complete");
+                    if (parent.initlanguageLoaded){
+                        if (canvas.thishib.loaderVar != null) {
+                            canvas.thishib.loaderVar.setProgress();
+                        }
+			            parent.setUsernameAndSession.doCall();
+                    } else {
+						parent.initlanguageLoaded = true;
+						if($debug) Debug.write("getGeneralOptions");
+						parent.getGeneralOptions.doCall();
+						if($debug) Debug.write("getTimeZones");
+						parent.getTimeZones.doCall(); // this is very long call let it be async
+                    }
+                    if($debug) Debug.write("getRoomTypes");
+                    parent.getRoomTypes.doCall();
+                }
+            ]]>
+        </handler>  
+    </netRemoteCallHib>
+        
+	<netRemoteCallHib name="getTimeZones" funcname="xmlcrm.getTimeZones">
+		<attribute name="start" value="0" type="number" />
+		<attribute name="step" value="100" type="number" />
+		<netparam><method name="getValue">return parent.start;</method></netparam>
+		<netparam><method name="getValue">return parent.step;</method></netparam>
+		<handler name="ondata" args="value">
+		<![CDATA[
+			//The onResult-Handler will be called be the rtmpconnection
+			if ($debug) Debug.write("getTimeZones count: ", value.length);
+			if (canvas.thishib.loaderVar != null) {
+				canvas.thishib.loaderVar.setProgress();
+			}
+			if (start == 0) {
+				canvas.timeZones = new Array();
+			}
+			for (var i = 0; i < value.length; ++i) {
+				canvas.timeZones.push(value[i]);
+			}
+			if (value.length < step) {
+				//if($debug) Debug.write("canvas.timeZones == ", canvas.timeZones);
+				canvas.inviteMainWindow = new lz.inviteMainWindow(canvas);
+				if($debug) Debug.write("create invitationWindow: ",canvas.inviteMainWindow);
+			} else {
+				start += step;
+				doCall();
+			}
+		]]>
+		</handler>
+	</netRemoteCallHib>
+
+    <!--
+        There must be a temporary SIP-Account created at this moment
+     -->  
+    <netRemoteCallHib name="markSessionAsLogedIn" funcname="xmlcrm.markSessionAsLogedIn" >
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+                        
+            if (value == null) {
+                new lz.errorPopup(canvas,{error:"Missing User Object, set the Configuration value of the key 'default.rpc.userid' to a valid user Id that has at least one Organization assigned in the OpenMeetings Administrion Configuration Panel "});
+            }
+            
+            if ($debug) Debug.write("markSessionAsLogedIn1 ",value);
+             
+            hib.userobject = value;
+             
+            canvas.user_id = hib.userobject.user_id;
+            
+            if (value.organisation_users.length > 0){
+                hib.currentdomain = value.organisation_users[0].organisation.name;
+                hib.currentdomainObj = value.organisation_users[0].organisation;
+            } else {
+                new lz.errorPopup(canvas,{error:"Missing Organization in User Object, set the Configuration value of the key 'default.rpc.userid' to a valid user Id that has at least one Organization assigned in the OpenMeetings Administrion Configuration Panel "});
+            }
+            
+            if ($debug) Debug.write("markSessionAsLogedIn2 ",canvas.sessionId);
+            if ($debug) Debug.write("markSessionAsLogedIn3 ",canvas.initroomid);
+            if ($debug) Debug.write("markSessionAsLogedIn4 ",canvas.isinitRoomDirect);
+            if ($debug) Debug.write("markSessionAsLogedIn5 ",canvas.remoteUserLogin);
+            if ($debug) Debug.write("markSessionAsLogedIn6 ",canvas.directUserLogin);
+            if ($debug) Debug.write("markSessionAsLogedIn7 ",canvas.directRoomId);
+            if ($debug) Debug.write("markSessionAsLogedIn8 ",canvas.secureRemoteUserLogin);
+            
+            if (canvas.secureRemoteUserLogin) {
+                
+                if ($debug) Debug.write("markSessionAsLogedIn == CALL ",canvas.secureHash);
+             
+                parent.secureLoginByRemote.doCall();
+                
+            } else if (canvas.isinitRoomDirect){
+                parent.getInvitationByHash.doCall();   
+            } else if (canvas.remoteUserLogin) {
+                parent.loginUserByRemote.doCall();   
+            } else if (canvas.directUserLogin) {
+                //show Nick Name or Password Protection Dialog
+                canvas.initroomid = Number(canvas.directRoomId);
+                parent.getRoomById.doCall();
+            }
+        </handler>  
+    </netRemoteCallHib> 
+    
+	<netRemoteCallHib name="getGeneralOptions" funcname="xmlcrm.getGeneralOptions">
+		<handler name="ondata" args="value">
+		<![CDATA[
+			if (canvas.thishib.loaderVar != null) {
+				canvas.thishib.loaderVar.setProgress();
+			}
+			if ($debug) Debug.write("getGeneralOptions: ", value.length, value);
+			if (value != null) {
+				if (value.length > 0 && value[0] != null) {
+					//if ($debug) Debug.write("Give exclusive audio keycode is: ", value[0].conf_value);
+					canvas.setAttribute('GIVE_EXCLUSIVE_AUDIO_KEY', value[0].conf_value);
+				}
+				if (value.length > 1 && value[1] != null) {
+					if ($debug) Debug.write("red5sip.enable is: ", value[1].conf_value);
+					canvas.setAttribute('RED5_SIP_ENABLE', value[1].conf_value);
+				}
+				if (value.length > 2 && value[2] != null) {
+					if ($debug) Debug.write("max_upload_size is: ", value[2].conf_value);
+					canvas.setAttribute('MAX_UPLOAD_SIZE', value[2].conf_value);
+				}
+				if (value.length > 3 && value[3] != null) {
+					if ($debug) Debug.write("Mute/unmute keycode is: ", value[3].conf_value);
+					canvas.setAttribute('MUTE_AUDIO_KEY', value[3].conf_value);
+				}
+				if (value.length > 4 && value[4] != null) {
+					if ($debug) Debug.write("redirect.url.for.external.users is: ", value[4].conf_value);
+					canvas.setAttribute('REDIRECT_URL_FOR_EXTERNAL_USERS', value[4].conf_value);
+				}
+			} else {
+				if ($debug) Debug.warn("xmlcrm.getGeneralOptions empty!");
+			}
+			parent.getUserSalutations.doCall();
+		]]>
+		</handler>
+	</netRemoteCallHib>
+    
+    <netRemoteCallHib name="setCurrentUserOrganization" funcname="xmlcrm.setCurrentUserOrganization">
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return hib.currentdomainObj.organisation_id;</method></netparam>  
+        <handler name="ondata" args="value">
+            //Sessionmanagement.getInstance() 
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("setCurrentUserOrganization: ",value);
+        </handler>  
+    </netRemoteCallHib> 
+     
+    
+    <netRemoteCallHib name="getUserSalutations" funcname="userservice.getUserSalutations" >
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.userlang; </method></netparam> 
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            //Debug.write("getUserSalutations ",value);
+            canvas.salutationsInitValues = value;
+            //check for password reset
+            if (canvas.wicketsid != null) {
+            	parent.loginWicket.doCall();
+            } else { 
+                if (canvas.thishib.loaderVar != null) {
+                   canvas.thishib.loaderVar.close();
+                }
+                //do not show loggin-PopUp for the test-Application
+                if (parent.testAppLoading){ 
+                    canvas.loadNextStepTestApp();
+                } else {
+                    if (canvas.isRemoteUser()){
+                        if (canvas.thishib.loaderVar != null) {
+                          canvas.thishib.loaderVar.setProgress();
+                        }
+                        if($debug) Debug.write("isinitRoomDirect or remoteUserLogin is true");
+                        parent.markSessionAsLogedIn.doCall();
+                    }
+                }
+            }
+        </handler>  
+    </netRemoteCallHib>
+    
+	<netRemoteCallHib name="loginWicket" funcname="xmlcrm.loginWicket" >
+		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+		<netparam><method name="getValue">return canvas.wicketsid;</method></netparam>
+		<netparam><method name="getValue">return canvas.wicketroomid;</method></netparam>
+		<handler name="ondata" args="value">
+		<![CDATA[
+			if ($debug) Debug.write("!!!!!!!!!!! loginWicket", value);
+			if (value != null) {
+				canvas.setAttribute('user_id',value.user_id);
+				canvas.setAttribute('firstName',value.firstname);
+				canvas.setAttribute('lastName',value.lastname);
+				canvas.setAttribute('mail','');
+				canvas.setAttribute('lastLogin','');
+				canvas.setAttribute('official_code','');
+				canvas.setAttribute('picture_uri','');
+				canvas.setAttribute('language','');
+				canvas.setAttribute('currentuser',value.login);
+				if (value.timeZoneId != null) {
+					canvas.timeZoneId = value.timeZoneId;
+				}
+				if (value.rights != null) {
+					for (var i = 0; i < value.rights.length; ++i) {
+						if ('Admin' == value.rights[i]) {
+							canvas.becomemoderator = true;
+						}
+					}
+				}
+				if ($debug) Debug.write("hibRtmpConnection::loginWicket -> canvas.becomemoderator", canvas.becomemoderator);
+				if (value.sessionData == null) {
+					if ($debug) Debug.write("No Language Found to assign");
+					return;
+				}
+				hib.userobject = value;
+				var found = false;
+				for (var i = 0; i < value.organisation_users.length; ++i) {
+					if (value.organisation_users[i].organisation.organisation_id == value.sessionData.organization_id) {
+						found = true;
+						hib.currentdomain = value.organisation_users[i].organisation.name;
+						hib.currentdomainObj = value.organisation_users[i].organisation;
+						break;
+					}
+				}
+				if (!found && value.organisation_users.length > 0) {
+					hib.currentdomain = value.organisation_users[0].organisation.name;
+					hib.currentdomainObj = value.organisation_users[0].organisation;
+				}
+				parent.getCurrentRoomClient.doCall();
+			} else {
+				new lz.labelerrorPopup(canvas, {errorlabelid: 1599});
+			}
+		]]>
+		</handler>
+	</netRemoteCallHib>
+	
+    <netRemoteCallHib name="getRoomTypes" funcname="conferenceservice.getRoomTypes" >
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("getRoomTypes ", value);
+            canvas.roomTypesInitValues = value;
+            canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "getRoomTypes", [value]);
+			if (canvas.thishib.loaderVar != null) {
+            	canvas.thishib.loaderVar.setProgress();
+            }
+        </handler>  
+    </netRemoteCallHib>      
+    
+        <netRemoteCallHib name="setId" funcname="setId">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("################ setId: ",value);
+                canvas.setAttribute('streamid',value);   
+            </handler>  
+        </netRemoteCallHib> 
+        
+        <netRemoteCallHib name="setUsernameAndSession" funcname="setUsernameAndSession" remotecontext="$once{ canvas.thishib }" >   
+            <netparam><method name="getValue"> return canvas.sessionId; </method></netparam> 
+            <netparam><method name="getValue">return canvas.user_id;</method></netparam>
+            <netparam><method name="getValue">return canvas.currentuser;</method></netparam>
+            <netparam><method name="getValue">return canvas.firstName;</method></netparam>
+            <netparam><method name="getValue">return canvas.lastName;</method></netparam>      
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("setUsernameAndSession: ",canvas.user_id,value);
+                if (canvas.thishib.loaderVar != null) {
+	                canvas.thishib.loaderVar.close();
+                }
+            </handler>  
+        </netRemoteCallHib>        
+        
+        <netRemoteCallHib name="testMethod" funcname="testMethod">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("testMethod ",value);                   
+            </handler>  
+        </netRemoteCallHib>
+
+        <!--- Notification of new User --> 
+		<netRemoteCallHib name="addNewUser" funcname="addNewUser">
+			<handler name="ondata" args="value">
+				//The onResult-Handler will be called be the rtmpconnection
+				if ($debug) Debug.write("addNewUser: ",value);
+				if(value.sipTransport) {
+					canvas._videocontainer.addItem(value.connectedSince,value.isMod,value.streamid,value.room_id,'',value.formatedDate,value.userpos,value.usercolor,value);
+				} else {
+					canvas._videocontainer.addClientItem(value.connectedSince,value.isMod,value.streamid,value.room_id,'',value.formatedDate,value.userpos,value.usercolor,value);
+				}
+				canvas.setAttribute('numberofpartners',canvas.numberofpartners+1);
+			</handler>
+		</netRemoteCallHib>    
+        
+        <netRemoteCallHib name="getCurrentModeratorList" funcname="getCurrentModeratorList">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    if ($debug) Debug.write("############ getCurrentModeratorList: ",value);
+                    
+                    canvas.analyzeModerationList(value);
+                    
+                    canvas.currentModeratorList = value;
+                    //Update Moderation Flag
+                    canvas.updateModerationFlag();
+                    
+                    var messageAlreadyThrown = false;
+                    
+                    //if ($debug) Debug.write("throw event to drawarea: ",canvas.moderatorStreamID,canvas.ismoderator);
+                    
+					if (this.parent.modus == "conference") {
+						if ($debug) Debug.write("############## showDevicePopUp");
+						canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
+					}
+                    canvas._drawarea.onopenWhiteBoard.sendEvent();
+                    
+                    if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject);
+                    if ($debug) Debug.write("roomType_id ",canvas.currentRoomObject.roomtype.roomtypes_id);
+                    
+                    if (canvas.currentRoomObject.roomtype.roomtypes_id!=3) {
+                        //We do not show this warning when the roomtype is 3 (restricted)
+                        if (canvas.currentRoomObj.isModeratedRoom) {
+                            if (value.length == 0 && !messageAlreadyThrown){
+                                new lz.labelerrorPopup(canvas,{errorlabelid:641});
+                            }
+                        } else {
+                            if (value.length == 0 && !messageAlreadyThrown){
+                                new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(498)});
+                            }
+                        }
+                    }
+                ]]>
+            </handler>
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="newStream" funcname="newStream">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("newStream: ",value);
+                if (value == null || value.isScreenClient) {
+                    return;
+                }
+                canvas._videocontainer.startStream(value.publicSID,value.broadCastID,value.firstname,value.lastname,value.interviewPodId,value.VWidth,value.VHeight); 
+            </handler>   
+        </netRemoteCallHib> 
+           
+        <netRemoteCallHib name="closeStream" funcname="closeStream">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("**** closeStream: ",value);
+                if (value == null) {
+                	return;
+                }
+                if (value.isScreenClient) {
+                    if ($debug) Debug.write(" ondata closeStream: ",value.streamPublishName); 
+                    canvas.currentBaseConferenceRoom._screenSharingAdapter.closeScreenSharing(value);
+                } else {
+                    //free the VideoContainer
+                    //canvas._videocontainer.closeStreamClient(value.publicSID);
+                    canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeStreamClient", [value.publicSID]);
+                    canvas.setAttribute('numberofpartners',canvas.numberofpartners-1);
+                }
+                //TODO:check first current tab
+            </handler>   
+        </netRemoteCallHib>  
+        
+        <!---
+            Event is invoked if a red5 stream sharing is closed
+         -->
+        <netRemoteCallHib name="stopScreenSharingMessage" funcname="stopScreenSharingMessage">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("**** closeStream: ",value);
+                if ($debug) Debug.write(" onResult stopScreenSharingMessage : ",value.streamPublishName); 
+                canvas.currentBaseConferenceRoom._screenSharingAdapter.closeScreenSharing(value);
+            </handler>   
+        </netRemoteCallHib> 
+             
+        <netRemoteCallHib name="clientregisterRoom" funcname="clientregisterRoom">
+            <handler name="ondata" args="value">
+                if ($debug) Debug.write("**** clientregisterRoom::ondata ", value);
+            </handler>   
+        </netRemoteCallHib>   
+
+		<method name="roomDisconnectUser" args="value,id">
+			if (canvas._videocontainer!=null){
+				canvas._videocontainer.disconnectclient(id);
+				if (canvas.currentModApply!=null) canvas.currentModApply.rejectUser(value);
+				if (value.isRecording) {
+					canvas._mymod.recordingUser = null;
+				}
+				if (value.streamPublishStarted) {
+					canvas._mymod.publishingObj = null;
+				}
+				canvas._mymod.setMessage();
+			}
+		</method>
+		
+        <netRemoteCallHib name="roomDisconnect" funcname="roomDisconnect">
+            <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("roomDisconnect: ",value);
+                if (value == null || value.isScreenClient) {
+                    return;
+                }
+                if (canvas.currentBaseConferenceRoom != null && canvas.currentBaseConferenceRoom._chatPanelStrict != null) {
+	                if ($debug) Debug.write("canvas.currentBaseConferenceRoom._chatPanelStrict: ", canvas.currentBaseConferenceRoom._chatPanelStrict);
+                	canvas.currentBaseConferenceRoom._chatPanelStrict.closeprivatechat(["close", value.publicSID]);
+                }
+                if (canvas.currentActivityList != null) {
+                    canvas.currentActivityList.addMessageRequest(value, canvas.getLabelName(1367), new Date().getTime());
+                }
+                parent.roomDisconnectUser(value, value.publicSID);
+            ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="stopRecordingMessage" funcname="stopRecordingMessage">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                canvas._mymod.recordingUser = null;
+                canvas._mymod.setMessage();                 
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="stopPublishingMessage" funcname="stopPublishingMessage">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+				canvas._mymod.publishingObj = null;
+                canvas._mymod.setMessage();                 
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setSyncFlag" funcname="setSyncFlag" >      
+            <handler name="ondata" args="value">
+                if ($debug) Debug.write("setSyncFlag: ",value);
+            </handler>
+        </netRemoteCallHib>   
+             
+        <netRemoteCallHib name="logicalRoomLeaveDis" funcname="logicalRoomLeaveDis" >      
+            <handler name="ondata" args="value">
+                if ($debug) Debug.write("logicalRoomLeaveDis: ",value);
+                parent.roomDisconnectUser(value, value.broadCastID);
+            </handler>
+        </netRemoteCallHib>             
+  
+        <method name="setUserStatus" args="ctx,user,o">
+            <![CDATA[
+				if (!o || !user) return;
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) {
+                    Debug.write("setUserStatus: ", user);
+                    Debug.write("setUserStatus: ", o.param);
+                }
+                var aObj = o.param[3];
+                var usPoint = null;
+                if ($debug) Debug.write("drawObj: ", aObj[0]);
+                switch(aObj[0]) {
+                    case 'line':
+                    case 'uline':
+                        usPoint = {x: aObj[aObj.length - 5] + aObj[6], y: aObj[aObj.length - 4] + aObj[7]};
+                        break;
+                    case 'letter':
+                    case 'rectangle':
+                    case 'ellipse':
+                    case 'clipart':
+                        usPoint = {x: aObj[aObj.length - 3] + aObj[aObj.length - 5], y: aObj[aObj.length - 2] + aObj[aObj.length - 4]};
+                        break;
+                    case 'paint':
+                        var points = aObj[1];
+                        //points are empty on 'paint' move
+                        usPoint = {
+                            x: aObj[aObj.length - 5] + (points.length ? points[points.length - 1][3] : aObj[aObj.length - 3])
+                            , y: aObj[aObj.length - 4] + (points.length ? points[points.length - 1][4] : aObj[aObj.length - 2])};
+                        break;
+                    case 'drawarrow':
+                        usPoint = {x: aObj[aObj.length - 5] + aObj[9], y: aObj[aObj.length - 4] + aObj[10]};
+                        break;
+                    case 'clipart':
+                        break;
+                }
+                if (usPoint) {
+                    var us = new lz.userStatus(ctx, {
+                        width:100
+                        , x: usPoint.x
+                        , y: usPoint.y - 25 //little above
+                        , queueable: false
+                        , statusText: user.firstname + " " + user.lastname
+                        });
+                    if ($debug) Debug.write("us: ", us, "; usPoint: ", usPoint);
+                }
+            ]]>
+        </method>
+
+        <netRemoteCallHib name="sendVarsToWhiteboard" funcname="sendVarsToWhiteboard">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("sendVarsToWhiteboard : ",value);
+            parent.setUserStatus(canvas._drawarea, value[0], value[1]);
+            canvas._drawarea.sendWatchObject(canvas._drawarea,value[1][2],value[1][3],false);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>  
+        
+         <netRemoteCallHib name="sendVarsToWhiteboardById" funcname="sendVarsToWhiteboardById">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("sendVarsToWhiteboardById : ",value);
+            parent.setUserStatus(canvas._drawarea, value[0], value[1]);
+            canvas._drawarea.parent.parent.parent.sendWatchObjectByWhiteboard(value[1]);
+                ]]>
+            </handler>   
+        </netRemoteCallHib> 
+        
+        <netRemoteCallHib name="loadWmlToWhiteboardById" funcname="loadWmlToWhiteboardById">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("sendVarsToWhiteboardById : ",value);
+                    canvas._drawarea.parent.parent.parent.loadWmlToWhiteboardById(value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <!--
+            Adds this User to the List of current Moderators
+         -->
+        <netRemoteCallHib name="addModerator" funcname="addModerator">
+            <attribute name="publicSIDOfNewModerator" value="0" type="string" />
+            <netparam name="vars"><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write(" addModerator : ",value);                   
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="removeModerator" funcname="removeModerator">
+            <attribute name="publicSIDOfNewModerator" value="0" type="string" />
+            <netparam name="vars"><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write(" onResult setModerator : ",value);                   
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <!--
+        public synchronized Long setBroadCastingFlag(String publicSID, boolean value) 
+         -->
+        <netRemoteCallHib name="setBroadCastingFlag" funcname="setBroadCastingFlag">
+            <attribute name="publicSIDOfNewModerator" value="0" type="string" />
+            <attribute name="isAllowedToBroadCastAV" value="false" type="boolean" />
+            <attribute name="avsettings" value="av" type="string" />
+            <attribute name="interviewPodId" value="0" type="number" />
+            <netparam><method name="getValue">return parent.publicSIDOfNewModerator;</method></netparam>
+            <netparam><method name="getValue">return parent.isAllowedToBroadCastAV;</method></netparam>
+            <netparam><method name="getValue">return parent.interviewPodId;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write(" onResult setModerator : ",value);                   
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setNewBroadCastingFlag" funcname="setNewBroadCastingFlag">
+            <netparam><method name="getValue">return null;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    //if ($debug) Debug.write(" onResult setNewBroadCastingFlag : ",value);   
+                    if (canvas.publicSID == value.publicSID) {
+                        if ($debug) Debug.write("Its about You ",value);
+                        if (value.isBroadcasting) {
+                            
+                            if (canvas.thishib.modus == "interview") {
+                               canvas._drawarea.newInterviewStarting(value);
+                            } else {
+                            	canvas._videocontainer._videoviewcontent.showDevicePopUp(false);
+                            }
+                            
+                            canvas.setAttribute("isBroadCasting",true);
+                        } else {
+                            canvas.setAttribute("isBroadCasting",false);
+                        }
+                    } 
+                    canvas.setAttribute("lastBroadCastingUser",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+
+        <netRemoteCallHib name="giveExclusiveAudio" funcname="giveExclusiveAudio">
+            <attribute name="publicSID" value="0" type="string" />
+            <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+            <method name="setExclusiveAudio" args="tPublicSID">
+                this.publicSID = tPublicSID;
+                this.doCall();
+            </method>
+        </netRemoteCallHib>
+
+        <netRemoteCallHib name="receiveExclusiveAudioFlag" funcname="receiveExclusiveAudioFlag">
+            <netparam><method name="getValue">return null;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    canvas._videocontainer.receiveExclusiveAudioFlag(value.publicSID)
+                ]]>
+            </handler>
+        </netRemoteCallHib>
+
+        <netRemoteCallHib name="switchMicMuted" funcname="switchMicMuted">
+            <attribute name="publicSID" value="" type="string" />
+            <attribute name="mute" value="false" type="boolean" />
+            <event name="onMute" />
+            <method name="setMute" args="tPublicSID,tMute">
+                this.publicSID = tPublicSID;
+                this.mute = tMute;
+                var obj = new Array();
+                obj["mute"] = tMute;
+                obj["publicSID"] = tPublicSID;
+                this.onMute.sendEvent(obj);
+                this.doCall();
+            </method>
+            <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+            <netparam><method name="getValue">return parent.mute;</method></netparam>
+        </netRemoteCallHib>
+
+        <netRemoteCallHib name="newRed5ScreenCursor" funcname="newRed5ScreenCursor">
+            <netparam><method name="getValue">return null;</method></netparam>
+			<handler name="ondata" args="value">
+			<![CDATA[
+				//The onResult-Handler will be called be the rtmpconnection
+				//if ($debug) Debug.write(" onResult newRed5ScreenCursor : ",value);
+				if (canvas.currentBaseConferenceRoom._screenSharingAdapter != null) {
+					canvas.currentBaseConferenceRoom._screenSharingAdapter.updateCursorScreenSharing(value);
+				}
+			]]>
+			</handler>   
+        </netRemoteCallHib>
+        
+        
+        <!--
+            Red5 Screen Sharing
+         -->
+        <netRemoteCallHib name="newScreenSharing" funcname="newScreenSharing">
+            <netparam><method name="getValue">return null;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                
+                    //The onResult-Handler will be called be the rtmpconnection
+                    //if ($debug) Debug.write(" onResult newScreenSharing 1 : ",value);  
+                    //if ($debug) Debug.write(" onResult newScreenSharing 2 : ",value.streamid); 
+                    //if ($debug) Debug.write(" onResult newScreenSharing 3 : ",canvas.streamid); 
+                    if ($debug) Debug.write(" onResult newScreenSharing 4 : ",value.streamPublishName); 
+                    if ($debug) Debug.write(" onResult newcreenSharing 5 : ",canvas.publicSID); 
+                    
+                    canvas.currentBaseConferenceRoom._screenSharingAdapter.newScreenSharing(value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="checkScreenSharing" funcname="checkScreenSharing">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write(" onResult checkScreenSharing : ",value);  
+                    if (value != null) {
+                    	canvas.currentBaseConferenceRoom._screenSharingAdapter.newScreenSharings(value);
+                    } else {
+                        if ($debug) Debug.warn("Self Screen Sharing");
+                    }
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        
+        <!--
+        public synchronized Long applyForModeration(String publicSID)
+         -->
+        <netRemoteCallHib name="applyForModeration" funcname="applyForModeration"
+                       remotecontext="$once{ canvas.thishib }">
+            <netparam><method name="getValue">return canvas.publicSID;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("applyForModeration : ",value);
+                    if (value == 1) {
+                        //Do add direct
+                        parent.addModerator.publicSIDOfNewModerator = canvas.publicSID;
+                        parent.addModerator.doCall();
+                    } else if (value == 2) {
+                        //Ask the Moderator
+                        var tDate = new Date();
+                        parent.sendMessageWithClient.sendMessage("applyForModeration",tDate.getTime());
+                    } else if (value == 3) {
+                        new lz.labelerrorPopup(canvas,{errorlabelid:696});
+                    }
+                ]]>
+            </handler>
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setCanDraw" funcname="whiteboardservice.setCanDraw"
+                       remotecontext="$once{ canvas.thishib }">
+            <attribute name="publicSID" value="" type="string" />
+            <attribute name="canDraw" value="true" type="boolean" />
+            <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+            <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+            <netparam><method name="getValue">return parent.canDraw;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("setCanDraw : ",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setCanShare" funcname="whiteboardservice.setCanShare"
+                       remotecontext="$once{ canvas.thishib }">
+            <attribute name="publicSID" value="" type="string" />
+            <attribute name="canShare" value="true" type="boolean" />
+            <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+            <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+            <netparam><method name="getValue">return parent.canShare;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("setCanShare : ",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setCanRemote" funcname="whiteboardservice.setCanRemote"
+                       remotecontext="$once{ canvas.thishib }">
+            <attribute name="publicSID" value="" type="string" />
+            <attribute name="canRemote" value="true" type="boolean" />
+            <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+            <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+            <netparam><method name="getValue">return parent.canRemote;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("setCanRemote : ",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>
+        
+        <netRemoteCallHib name="setNewModeratorByList" funcname="setNewModeratorByList">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    if ($debug) Debug.write("setNewModeratorByList ",value);
+                    
+                    canvas.analyzeModerationList(value);
+                    
+                    //The onResult-Handler will be called be the rtmpconnection
+                    canvas.currentModeratorList = value;
+                    //Update Moderation Flag
+                    canvas.updateModerationFlag();
+                ]]>
+            </handler>   
+        </netRemoteCallHib> 
+        
+        <netRemoteCallHib name="sendMessage" funcname="sendMessage">
+            <netparam name="vars"><method name="getValue">return canvas.objMessage;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write("getValue : ",value);
+                
+                ]]>
+            </handler>   
+        </netRemoteCallHib> 
+        
+        <netRemoteCallHib name="sendMessageAll" funcname="sendMessageAll">
+            <netparam name="vars"><method name="getValue">return canvas.objMessage;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write("getValue : ",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib> 
+        
+        <netRemoteCallHib name="sendVarsToMessage" funcname="sendVarsToMessage">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    //Debug.write("sendVarsToMessage : ",value);
+                    if (value[0]=='audioActivity'){
+                        //canvas.currentModApply
+                        //if ($debug) Debug.write("audioActivity Client ",value[1],value[2]);
+                        canvas._videocontainer.setSpeakingByPos(value[2],value[1]);
+                    } else if (value[0]=='chat'){
+                        // Not Used
+                        //Debug.warn("Not Used");
+                        canvas.addChatHistory(value);
+                    } else if (value[0]=='activateWhiteboard'){
+                        // Not Used
+                        //Debug.warn("Not Used");
+                        canvas._drawarea.parent.parent.parent.activateWhiteboard(value);
+                    } else if (value[0]=='newWhiteboard'){
+                        // Not Used
+                        //Debug.warn("Not Used");
+                        canvas._drawarea.parent.parent.parent.newWhiteboard(value);
+                    } else if (value[0]=='removeWindow'){
+                        // Not Used
+                        //Debug.warn("Not Used");
+                        canvas._drawarea.parent.parent.parent.removeWindow(value);
+                    } else if(value[0]=='fileslist'){
+                        canvas.currentImagesListdraw.parent.onvisible.sendEvent(true);
+                    } else if(value[0]=='initBrowser'){
+                        canvas.startBrowser(value);
+                    } else if(value[0]=='newBrowserURL'){
+                        canvas.startBrowser(value);
+                    } else if(value[0]=='closeBrowserURL'){
+                        canvas.closeBrowser(value);
+                    }
+                    
+                ]]>
+            </handler>   
+        </netRemoteCallHib>   
+        <netRemoteCallHib name="sendVarsModeratorGeneral" funcname="sendVarsModeratorGeneral">
+            <netparam name="vars"><method name="getValue">return canvas.VarsModeratorGeneral;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write("sendVarsModeratorGeneral : ",value);
+                
+                ]]>
+            </handler>   
+        </netRemoteCallHib>  
+
+		<netRemoteCallHib name="sendChatMessageWithClient"
+			funcname="chatservice.sendMessageWithClient" remotecontext="$once{ canvas.thishib }">
+            <attribute name="messageObj" value="null" />
+			<netparam><method name="getValue">return parent.messageObj;</method></netparam>
+
+            <method name="sendMessage" args="messageObject">
+                this.messageObj = messageObject;
+                this.doCall();
+            </method>
+			<handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("chatservice.sendMessageWithClient getValue : ",value);
+                ]]>
+			</handler>
+		</netRemoteCallHib>
+		
+        <netRemoteCallHib name="sendMessageWithClient" funcname="sendMessageWithClient" 
+                          remotecontext="$once{ canvas.thishib }" >  
+            
+            <attribute name="messageObj" value="null" />
+            <method name="sendMessage" args="typeName,messageObject">
+                this.messageObj = new Object();
+                this.messageObj[0] = typeName;
+                this.messageObj[1] = messageObject;
+                this.doCall();
+            </method>
+            
+            <method name="sendAdvMessage" args="typeName,messageObject,tStamp">
+                this.messageObj = new Object();
+                this.messageObj[0] = typeName;
+                this.messageObj[1] = messageObject;
+                this.messageObj[2] = tStamp;
+                this.doCall();
+            </method>
+            
+            <netparam name="vars"><method name="getValue">return parent.messageObj;</method></netparam>
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write("sendMessageWithClient : ",value);
+            </handler>
+        </netRemoteCallHib>
+          
+        <netRemoteCallHib name="sendVarsToMessageWithClient" funcname="sendVarsToMessageWithClient" 
+                          remotecontext="$once{ canvas.thishib }" >  
+            <netparam name="vars"><method name="getValue">return parent.parent.applymessage;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendVarsToMessageWithClient : ",value,value.message,value.message[0]);
+                if (value[0]=='kick' || value.message[0]=='kick'){
+                    //canvas.currentModApply
+                    if ($debug) Debug.write("!!!!!! THIS USER GOING TO BE KICKED");
+                    parent.showKickMessage = true;
+                    parent.disconnect();
+                    canvas.sendViaLocalConnection(canvas.vid_lc_name, "immediateExitRoom", [true,null]);
+                } else if (value.message[0]=='copiedText'){
+                    //canvas.currentModApply
+                    
+                    if ($debug) Debug.info("copiedText :: ",value.message[1]);
+                    //System.setClipboard(value.message[1]);
+                    //lz.Browser.setClipboard(value.message[1]);
+                    //LzBrowserKernel.setClipboard (value.message[1]);
+                    
+                    //import flash.System;
+                    //flash.System.setClipboard(value.message[1]);
+                    
+                    new lz.copiedTextPopup(canvas,{
+                                       error:value.message[1]
+                                    });
+                    
+                } else if (value.message[0]=='applyforMod'){
+                    //canvas.currentModApply
+                    if (canvas.streamid!=value.client.streamid) {
+                        new lz.responseForModeration(canvas.main_content._content.inner,{
+                                                                userobject:value.client,
+                                                                clientId:value.client.streamid
+                                                            });
+                    }
+                } else if (value.message[0]=='applyModAnswer'){
+                    canvas.currentModApply.setUserAnswer(value);
+                } else if (value.message[0]=='privatechat'){
+                    if ($debug) Debug.write("privatechat",value.message,value.client);
+                    canvas._currentChatPanel.privatechat(value.message,value.client);
+                } else if (value.message[0]=='chat'){
+                    if (canvas._chatcontent) canvas._chatcontent.addChatHistory(value.message,value.client);
+                } else if (value.message[0]=='avsettings'){
+                    canvas._videocontainer.setAVSettingsToClient(value.client);
+                } else if (value.message[0]=='whiteboard'){
+                    //if (value.message[1]=='wmlloadcomplete'){
+                    //    canvas._drawarea.sendCompleteWmlLoadedRClient(value.client);
+                    //} else if (value.message[1]=='wmlsynccomplete'){
+                    //    canvas._drawarea.sendCompleteWmlSync(value.client);
+                    //} else 
+                    
+                    if (value.message[1]=='imageloadcomplete'){
+                        canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
+                    } else if (value.message[1]=='imagesynccomplete'){
+                        canvas._drawarea.sendCompleteImageSync(value.client);
+                    } else if (value.message[1]=='imageloaderror'){
+                        canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
+                    } else if (value.message[1]=='imageloadtimeout'){
+                        canvas._drawarea.sendCompleteImageLoadedRClient(value.client);
+                    } else if (value.message[1]=='swfloadcomplete'){
+                        canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
+                    } else if (value.message[1]=='swfsynccomplete'){
+                        canvas._drawarea.sendCompleteSWFSync(value.client);
+                    } else if (value.message[1]=='swfloaderror'){
+                        canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
+                    } else if (value.message[1]=='swfloadtimeout'){
+                        canvas._drawarea.sendCompleteSWFLoadedRClient(value.client);
+                    } else if (value.message[1]=='inituser'){
+                        
+                        //this message is deprecated and can be removed!
+                        //swagner 12.06.2008
+                        //canvas._drawarea.sendCompleteImageSync(value.client);
+                        if ($debug) Debug.write("inituser loadwmlObjectToStage: ",value.message[2]);
+                        if (!canvas.ismoderator) canvas._drawarea.loadwmlObjectToStage(value.message[2],"","","",true,true);
+                    } else if (value.message[1]=='initgetVars'){
+                        //canvas._drawarea.sendCompleteImageSync(value.client);
+                        //Debug.write("initgetVars sendVarsToMessageWithClient: ",value.message[2]);
+                        canvas._drawarea.sendWatchObject(value.message[1],value.message[2],false);
+                    } else if (value.message[1]=='syncinitLoader'){
+                        //canvas._drawarea.sendCompleteImageSync(value.client);
+                        //Debug.write("syncinitLoader sendVarsToMessageWithClient: ",value.message[2]);
+                        if (value.client.streamid!=canvas.streamid) canvas._drawarea.remoteSyncLoader();
+                    } else if (value.message[1][0]=='isSnapToGrid'){
+                        canvas._drawarea.setAttribute('isSnapToGrid', value.message[1][1]);
+                        //Debug.write("syncinitLoader sendVarsToMessageWithClient: ",value.message[2]);
+                        //if (value.client.streamid!=canvas.streamid) canvas._drawarea.remoteSyncLoader();
+                    }
+                } else if (value.message[0]=='updateMuteStatus'){
+                    canvas.setMuteStatus(value.message[1]);
+                } else if (value.message[0]=='updateDrawStatus'){
+                    canvas.setDrawAllowStatus(value.message[1]);
+                    //Notify all Listeners for change of the item
+                    canvas.setAttribute("drawAllowStatus",value.message[1]);
+                } else if (value.message[0]=='updateGiveAudioStatus') {
+                    canvas.setExclusiveAudioAllowStatus(value.message[1]);
+                    canvas.setAttribute("exclusiveAudioAllowStatus",value.message[1]);                    
+                } else if (value.message[0]=='applyForModeration'){
+                    if ($debug) Debug.write("Somebody wants the Moderation ",value.client);
+                    canvas.currentActivityList.addModerationRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForScreen'){
+                   if ($debug) Debug.write("Somebody wants to share/record Screen ",value.client);
+                    canvas.currentActivityList.addScreenRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForRemote'){
+                    if ($debug) Debug.write("Somebody wants to remote control screen ",value.client);
+                    canvas.currentActivityList.addRemoteRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForWhiteboard'){
+                    if ($debug) Debug.write("Somebody wants to draw on Whiteboard ",value.client);
+                    canvas.currentActivityList.addWhiteboardRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForA'){
+                    if ($debug) Debug.write("Somebody wants to share A ",value.client);
+                    canvas.currentActivityList.addAudioRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForAV'){
+                    if ($debug) Debug.write("Somebody wants to share AV ",value.client);
+                    canvas.currentActivityList.addAudioAndVideoRequest(value.client,value.message[1]);
+                } else if (value.message[0]=='hideActivityObj'){
+                    if ($debug) Debug.write("Somebody wants to hideActivityObj ",value.client);
+                    canvas.currentActivityList.hideActivityObj(value);
+                } else if (value.message[0]=='applyForMuteOn'){
+                    canvas.currentActivityList.applyForMuteOn(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForMuteOff'){
+                    canvas.currentActivityList.applyForMuteOff(value.client,value.message[1]);
+                } else if (value.message[0]=='applyForGiveExclusiveAudioOn'){
+                    canvas.currentActivityList.applyForGiveExclusiveAudioOn(value.client,value.message[1]);
+                } else if (value.message[0] == 'personal') {
+                	var pSID = value.client.publicSID;
+                    var vo = canvas._videocontainer._participants.getUserListItemByPublicSID(pSID);
+                    if (vo != null) {
+                    	vo.setAttribute('lastname', value.message[2]);
+                    	vo.refObj.lastname = value.message[2];
+                    }
+					canvas.sendViaLocalConnection(canvas.vid_lc_name, "updateFirstLastName", [pSID, value.message[1], value.message[2]]);
+                } else {
+                    if ($debug) Debug.warn("sendVarsToMessageWithClient unkown message ",value);
+                }
+                ]]>
+            </handler>   
+        </netRemoteCallHib>     
+    
+        <netRemoteCallHib name="newMessageByRoomAndDomain" funcname="newMessageByRoomAndDomain">
+            <handler name="ondata" args="value">
+                //The onResult-Handler will be called be the rtmpconnection
+                //if ($debug) Debug.write("newMessageByRoomAndDomain: ",value);    
+                <![CDATA[
+                    if (value[0]=='closeprivatechat'){
+                        if ($debug) Debug.write("closeprivatechat",value);
+                        canvas._currentChatPanel.closeprivatechat(value);
+                    } else if (value[0]=='newprivatechat'){
+	                    if ($debug) Debug.write("newprivatechat",value);
+	                    canvas._currentChatPanel.newprivatechat(value);
+	                } else if (value.message=='desktop'){
+                        canvas._drawarea.incomingScreenSharing(value);
+                    } else if (value.message=='library'){
+                        
+                        if (value.action == 'import') {
+                            canvas.currentUploadWindow.myFileUpload.onCompleteByRemote(value);
+                            return;
+                        }
+                        
+                        var error = false;
+                        for (var eg in value.error){
+                            if (value.error[eg].exitValue!=0){
+	                            if ($debug) Debug.write("eg ",eg," value ",value.error[eg]);
+	                            if ($debug) Debug.write("eg ",eg," value ",value.error[eg].exitValue);
+                                error = true;
+                            }
+                        }
+                        canvas.currentUploadWindow.myFileUpload.onCompleteByRemote(value);
+                        if (value.hasError) {
+                            new lz.converterPopup(canvas.main_content._content.inner,{error:value.error});
+                        }
+                    } else if (value.message=='startStreaming'){
+                        canvas._drawarea.startStreaming(value);
+                    } else if (value.message=='stopStreaming'){
+                        canvas._drawarea.stopStreaming(value);
+                    } else if (value.message=='roomClosed'){
+                        canvas.roomClosed();
+                    } else if (value.message=='inviteToRoom'){
+                        if ($debug) Debug.write("Incoming Room Invitation ",value);
+                        new lz.chatParticipantsInviteNotification(canvas,{
+                                    publicSID:value.publicSID,
+                                    usermessage:value.usermessage,
+                                    roomId:value.roomId
+                                });
+                    } else if (value.message=='inviteToRoomAnswer'){
+                        if ($debug) Debug.write("Incoming Room inviteToRoomAnswer ",value);
+                        new lz.errorPopup(canvas,{
+                                    error:value.usermessage
+                                });
+                    } else {
+                        if ($debug) Debug.warn("Unknown Event -newMessageByRoomAndDomain- ",value);
+                    }
+                    
+                    
+                ]]>    
+            </handler>  
+        </netRemoteCallHib>      
+               
+        
+        <netRemoteCallHib name="newPoll" funcname="newPoll">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called by the rtmpconnection
+                //Debug.write("newPoll : ",value);
+                if(canvas.user_id!=value.createdBy.user_id)
+                    new lz.answerPoll(
+                        canvas.main_content._content.inner
+                        , {
+                            createdBy: value.createdBy.login
+                            , pollDate: value.created
+                            , pollQuestion: value.pollQuestion
+                            , pollTypeId: value.pollType.pollTypesId
+                            , roomPollAnswerList: value.roomPollAnswerList
+                            , roomPollId: value.roomPollId
+                            , roomScopeName: value.roomScopeName
+                        }
+                    );
+                ]]>
+            </handler>   
+        </netRemoteCallHib>                    
+                                
+        <netRemoteCallHib name="sendVarsToModeratorGeneral" funcname="sendVarsToModeratorGeneral">
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                //Debug.write("sendVarsToWhiteboard : ",value);
+                if (value[0]=='sharewhiteinit'){
+                    if (!canvas.htmlframeisloaded){         
+                        canvas.ifrm.createIFrame();
+                        canvas.setAttribute('htmlframeisloaded',true);
+                    }
+                } else if (value[0]=='sharewhiteside'){
+                    if (canvas.htmlframeisloaded){      
+                        _htmlside.setAttribute('text',value[2]);
+                        canvas.ifrm.setAttribute('isrc','http://'+value[2]);
+                    }
+                }
+                ]]>
+            </handler>   
+        </netRemoteCallHib>       
+        
+   <!-- recordContentings Notifications -->
+    <netRemoteCallHib name="stopedRecording" funcname="stopedRecording" >      
+        <handler name="ondata" args="value">
+            if ($debug) Debug.write("stopedRecording: ",value);
+            canvas._mymod.recordingUser = null;
+            canvas._mymod.setMessage();
+        </handler>
+    </netRemoteCallHib>
+    
+    <netRemoteCallHib name="startedRecording" funcname="startedRecording" >      
+        <handler name="ondata" args="value">
+            if ($debug) Debug.write("startedRecording: ",value);
+            canvas._mymod.recordingUser = value;
+            canvas._mymod.setMessage();
+        </handler>
+    </netRemoteCallHib>
+    
+    <netRemoteCallHib name="checkLzRecording" funcname="flvrecorderservice.checkLzRecording" >      
+        <handler name="ondata" args="value">
+            if ($debug) Debug.write("checkLzRecording: ",value);
+            if (value != null) {
+                canvas._mymod.recordingUser = value;
+                canvas._mymod.setMessage();
+            }
+            parent.checkScreenSharing.doCall();
+        </handler>
+    </netRemoteCallHib>
+    
+    <netRemoteCallHib name="startedPublishing" funcname="startedPublishing" >      
+        <handler name="ondata" args="value">
+            if ($debug) Debug.write("startedPublishing: ", value);
+            canvas._mymod.publishingObj = {user: value[0], url: value[1]};
+            canvas._mymod.setMessage();
+        </handler>
+    </netRemoteCallHib>
+    
+    <netRemoteCallHib name="roomConnect" funcname="roomConnect" >      
+        <handler name="ondata" args="value">
+            if ($debug) Debug.write("roomConnect: ",value);
+            canvas._videocontainer.addItem(value.connectedSince,value.isMod,value.streamid,value.username,
+                              '',value.formatedDate,value.userpos,value.usercolor,value);
+        </handler>
+    </netRemoteCallHib>
+    
+    
+    <!-- Whiteboard sync Events -->
+    <netRemoteCallHib name="sendSyncFlag" funcname="sendSyncFlag">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendSyncFlag: ",value);
+                if (canvas.syncWindow == null) {
+                    canvas.syncWindow = new lz.syncWin(canvas.main_content._content.inner,{
+                            labelid:558,labeliderror:559});
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     
+    
+    <netRemoteCallHib name="sendSyncCompleteFlag" funcname="sendSyncCompleteFlag">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendSyncCompleteFlag: ",value);
+                if (canvas.syncWindow != null) {
+                    canvas.syncWindow.close();
+                    canvas.syncWindow = null;
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+    
+    <!-- Whiteboard Object Sync Process -->
+    <netRemoteCallHib name="sendObjectSyncFlag" funcname="sendObjectSyncFlag">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendObjectSyncFlag: ",value);
+                if (canvas.syncImageWindow == null) {
+                    canvas.syncImageWindow = new lz.syncWin(canvas.main_content._content.inner,{labeliderror:591});
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     
+    
+    <netRemoteCallHib name="sendObjectSyncCompleteFlag" funcname="sendObjectSyncCompleteFlag">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendObjectSyncCompleteFlag: ",value);
+                if (canvas.syncImageWindow != null) {
+                    canvas.syncImageWindow.close();
+                    canvas.syncImageWindow = null;
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+    
+    
+    <!-- Recording of Meetings -->
+    <netRemoteCallHib name="interviewStatus" funcname="interviewStatus">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("interviewStatus: ",value);
+                canvas._drawarea.reloadStatus();
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+    
+    <netRemoteCallHib name="closeRoom" funcname="xmlcrm.closeRoom">
+        <attribute name="room_id" value="0" type="number" />
+        <attribute name="isClosed" value="true" type="boolean" />
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.room_id;</method></netparam>
+        <netparam><method name="getValue">return parent.isClosed;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("closeRoom: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="clearChatContent" funcname="clearChatContent">
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                canvas._chatcontent.reload();
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="setCanGiveAudio" funcname="whiteboardservice.setCanGiveAudio"
+                   remotecontext="$once{ canvas.thishib }">
+        <attribute name="publicSID" value="" type="string" />
+        <attribute name="canGiveAudio" value="true" type="boolean" />
+        <method name="sendValue" args="publicSID,giveAudio">
+        	this.publicSID = publicSID;
+        	this.canGiveAudio = giveAudio;
+        	this.doCall();
+        </method>
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+        <netparam><method name="getValue">return parent.canGiveAudio;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("setCanGiveAudio : ",value);
+            ]]>
+        </handler>
+    </netRemoteCallHib>
+    
+    
+</class>
+
+<hibRtmpConnection name="thishib" id="hib" />
+
+</library>
diff --git a/WebContent/src/base/hibernate/library.lzx b/WebContent/src/base/hibernate/library.lzx
new file mode 100644
index 0000000..d3bfbf1
--- /dev/null
+++ b/WebContent/src/base/hibernate/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="netRemoteCallHib.lzx" />
+	<include href="hibRtmpConnection.lzx" />
+
+</library>
diff --git a/WebContent/src/base/hibernate/netRemoteCallHib.lzx b/WebContent/src/base/hibernate/netRemoteCallHib.lzx
new file mode 100644
index 0000000..cd13da1
--- /dev/null
+++ b/WebContent/src/base/hibernate/netRemoteCallHib.lzx
@@ -0,0 +1,87 @@
+<?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.
+  
+-->
+<library>
+
+<class name="netRemoteCallHib" extends="netremotecall">
+
+	<!--- this should be the contentSaveWindow -->
+	<attribute name="returnObj" value="null" />
+	 
+	<!--- if true this object will register at the update-observer -->
+	<attribute name="registerObject" value="false" type="boolean" />
+	
+	<!--- show Error Messages with normal Box -->
+    <attribute name="activeErrorHandler" value="false" type="boolean" />	
+    
+	<!--- show Error Messages with normal Box -->
+    <attribute name="showLoading" value="true" type="boolean" />    
+	
+	<!--- show Error Messages with Callback Box -->
+	<attribute name="isCallBackHandler" value="false" type="boolean" />	
+	
+	<handler name="oninit">
+		if (this.registerObject) this.parent.addViewToObserver(this);
+	</handler>	
+	<method name="doCall">
+        if (this.showLoading) canvas._loadingAll.showLoading();
+		//if($debug) Debug.write("netRemoteCallHib/doCall: [ " , this.funcname , " ]",this.parent);
+		this.callRPC();
+	</method>
+	
+	<event name="sendCallBack" />
+	
+	<!---
+        @keywords private
+	 -->
+	<handler name="ondata" args="value">
+		<![CDATA[
+			//Debug.write("ondata: ",this.funcname,value);
+			
+			if (this.showLoading) canvas._loadingAll.hideLoading();
+			
+			//Another Error Handler for the Form-Components
+			if (this.returnObj!=null && Number(value)>0) {
+				//Debug.write("this.returnObj.processNext");
+				this.returnObj.processNext();
+			} else if (this.returnObj!=null && Number(value)<0) {
+				this.returnObj.errorByCode(Number(value));
+			} else if (this.returnObj!=null && value==null) {
+				this.returnObj.errorByCode(-1);
+			}
+			
+            if (this.activeErrorHandler) {
+                if (Number(value)<0){
+                    Debug.warn("Received Error ID: ",value);					
+					if (this.isCallBackHandler) 
+					{
+						var dlg = new lz.callbackRpcErrorDialog(canvas,{callBackObject:this,errorid:Number(value)});						
+						lz.Focus.setFocus(dlg);
+					} else {
+						var dlg = new lz.rpcErrorDialog(canvas,{errorid:Number(value)});
+						lz.Focus.setFocus(dlg);
+					}
+                }
+            }			
+		]]>
+	</handler>	
+</class>
+
+</library>
diff --git a/WebContent/src/base/library.lzx b/WebContent/src/base/library.lzx
new file mode 100644
index 0000000..5ce5d66
--- /dev/null
+++ b/WebContent/src/base/library.lzx
@@ -0,0 +1,43 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="remote/" />
+    <include href="components/" /> 
+    <include href="hibernate/" />
+    <include href="contentviews/" />
+    <include href="navi/" />
+
+	<!-- for main.lzx -->
+	<include href="externalJavaScript.lzx" />
+    <include href="functions.lzx" />
+	<include href="mainAttributes.lzx" /> 
+	<include href="mainDatasets.lzx" /> 
+	<include href="mainMethods.lzx" /> 
+	<include href="logoutConfirm.lzx" />
+	
+	<!-- 
+	   Defines the Core Classes that gets loaded in the Main Navigation
+	 -->
+	<include href="moduleConfiguration.lzx" />
+
+
+</library>
diff --git a/WebContent/src/base/logoutConfirm.lzx b/WebContent/src/base/logoutConfirm.lzx
new file mode 100644
index 0000000..b1c18ab
--- /dev/null
+++ b/WebContent/src/base/logoutConfirm.lzx
@@ -0,0 +1,50 @@
+<?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.
+  
+-->
+<library>
+
+<class name="logoutConfirm" extends="labelExplorerBox" labelid="633"
+    docking="true" resizeable="false" closable="false" width="270" x="${ canvas.width / 2 - 145 }" y="${ canvas.height / 2 - 120}" height="100">
+
+	<attribute name="objectsToClean" type="expression"/>
+	
+	<labelText fontstyle="bold" y="25" labelid="634" x="10" width="270" multiline="true" />
+	
+	<simpleLabelButton name="ok" x="20" y="70" labelid="54" width="120" height="20">
+		<handler name="onclick">
+			if (!clearStageContent())
+			{
+				canvas._mainbgcontentNavi.navi.destroy();
+				canvas._mainbgcontentNavi.help.destroy();
+				canvas.thishib.logoutUser.doCall();
+			}
+        
+            this.parent.close();                   
+			
+		</handler>
+	</simpleLabelButton>
+	<simpleLabelButton name="cancel" x="140" y="70" labelid="55" width="120" height="20">
+		<handler name="onclick">
+			this.parent.close();
+		</handler>
+	</simpleLabelButton>		
+</class>
+
+</library>
diff --git a/WebContent/src/base/mainAttributes.lzx b/WebContent/src/base/mainAttributes.lzx
new file mode 100644
index 0000000..af8e54f
--- /dev/null
+++ b/WebContent/src/base/mainAttributes.lzx
@@ -0,0 +1,506 @@
+<?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.
+  
+-->
+
+<!-- all attributes for main.lzx -->
+
+<library>
+<!-- 
+##########################################################
+these properties will be overwritten by public/config.xml -->  
+
+<attribute name="vid_lc_name" value="" type="string"/>
+
+<attribute name="lc_SID" value="" type="string"/>
+
+<attribute name="lc"/>
+
+<attribute name="rtmp_lc_name" value="" type="string"/>
+
+<attribute name="rtmp_lc"/>
+
+<attribute name="videoComp_lc_name" value="" type="string"/>
+
+<attribute name="videoComp_lc_callback_name" value="" type="string"/>
+
+<attribute name="videoComp_lc"/>
+
+<!--- URL/IP to use for the Server 192.168.178.28
+    inno02.fh-pforzheim.de macbook 192.168.2.103
+    192.168.2.102 bxlug.homelinux.org 213.219.160.72
+        if this value is empty it will try to connect to the 
+    domain-name it has been loading from
+    -->
+<attribute name="rtmphostlocal" value="" type="string" />
+
+<!-- 
+	URL/IP to use for the Server for HTTP and HTTPS traffic.
+    If this value is empty it will use the rtmphostlocal 
+    variable (and in that way try to connect to the 
+    domain-name the OpenMeetings-Client has been loading from)
+ -->
+<attribute name="httphostlocal" value="" type="string" />
+ 
+<!---  
+    Port to use for the Server
+    To this port the default server lookup is done
+    
+    You can find all this configuraiton in your red5-Config in: $RED5_HOME/conf/red5.properties
+ -->
+<attribute name="rtmpport" value="1935" type="string" />
+
+<!--- 
+    Port to use for the Server
+    This port is used to connect to the HTTP-Servlet
+    of the Red5-Servlet
+ -->
+<attribute name="red5httpport" value="5080" type="string" />
+
+<attribute name="useSSL" value="false" type="boolean" />
+<attribute name="rtmpsslport" value="443" type="string" />
+
+<!---
+#############################################################
+    These colors are the main colors and style the hole application
+ -->
+<attribute name="basebgcolorizer" value="" type="string" /> 
+<attribute name="baseMousecolorizer" value="" type="string" />  
+<attribute name="baseMouseOvercolorizer" value="" type="string" />      
+<attribute name="styleMenuBarBaseColor" value="0xFFFFFF" type="string" />    
+
+<attribute name="fontColorHeader" value="0x000000" type="string" />
+<attribute name="bgColorMenuItems" value="0xEAEAEA" type="string" />
+
+<attribute name="webAppRootKey" value="" type="string" />
+
+<attribute name="httpRootKey" value="/" type="string" />
+
+<attribute name="protocol" value="http" type="string" />
+<attribute name="proxyType" value="none" type="string" />
+
+<attribute name="showAudioVideoTest" value="true" type="boolean" />
+
+<!-- 
+#############################################################
+Attributes needed for clustering -->
+
+<attribute name="isSlaveHosted" value="false" type="boolean" />
+
+<!-- server object's address (not loaded from public/config.xml cause this variable is empty by default) -->
+<attribute name="slaveRtmphostlocal" value="" type="string" />
+<!-- rtmpport from slave's public/config.xml  --> 
+<attribute name="slaveRtmpport" value="5080" type="string" />
+<!-- rtmpsslport from slave's public/config.xml -->
+<attribute name="slaveRtmpsslport" value="443" type="string" />
+<!-- from slave's public/config.xml -->
+<attribute name="slaveWebAppRootKey" value="" type="string" /> 
+
+<!--
+#############################################################
+    Id of the Recording that is played when access the Recordings Player via Direct Link URL
+ -->
+<attribute name="roomRecordingId" value="0" type="number" />
+
+<!--- Name of the Application -->
+<attribute name="currentappname" value="OpenMeetings" type="string" />   
+<attribute name="currentappnameurl" value="OpenMeetings" type="string" />   
+<attribute name="currentappnamebugurl" value="OpenMeetings" type="string" /> 
+
+<!--- Video Settings -->
+<attribute name="loudnessAcitviation" value="10" type="number" />
+<attribute name="showWindowEffect" value="y" type="string" /> 
+
+<!--- Calendar Settings -->
+<attribute name="firstdayinweek" value="1" type="number" />
+
+<attribute name="showmodernWhiteBoard" value="y" type="string" />
+
+<attribute name="showRecording" value="visible" type="string" />
+
+<attribute name="defaultWhiteboardWidth" value="2400" type="number" />
+<attribute name="defaultWhiteboardHeight" value="1200" type="number" />
+
+<!-- END OF public/config.xml attributes
+##########################################################
+ -->
+
+<attribute name="userHistory" value="null" />
+<attribute name="browserTabHistory" value="null" />
+
+<!-- this attribute holds an object of type RoomClient
+ the LAST RoomClient Object that has been changed the drawstatus
+ so ondrawAllowStatus = will trigger that the draw-status of ANYBODY has changed
+ and canvas.drawAllowStatus = is the RoomClient that has changed
+ and canvas.drawAllowStatus.canDraw = is the new Status of that RoomClient
+ -->
+
+<attribute name="drawAllowStatus" value="null"/>
+
+<!-- this attribute holds an object of type RoomClient
+the LAST RoomClient Object that has been changed the giveExclusiveAudio status
+-->
+<attribute name="exclusiveAudioAllowStatus" value="null"/>
+
+<!--
+    this value indicates if this user is allowed to draw to the Whiteboard
+    If this user is currently Moderator => he ALWAYS can draw to whiteboard
+    even if this isAllowedToDraw == false
+ -->
+<attribute name="isAllowedToDraw" value="false" type="boolean" />
+
+<!-- 
+    this attribute holds an object of type RoomClient
+    the LAST RoomClient Object that has been changed the mute-status
+ -->
+<attribute name="micMutedStatusChangedItem" value="null" />
+
+<!--
+    this value indicates if this user is currently muted
+ -->
+<attribute name="micMuted" value="false" type="boolean" />
+
+<!--- URL/IP to use for the Server -->
+<attribute name="rtmphost" value="" type="string" />
+
+<!--- Username/Nickname -->
+<attribute name="currentuser" value="" type="string" />
+
+<!--- Roomname internaly Scope -->
+<attribute name="currentcourse" value="" type="string" />
+
+<!--- Roomname/Coursename -->
+<attribute name="currentcourseName" value="" type="string" />
+
+<attribute name="currentImagesListdraw" value="null" />
+
+<!--- 
+    The Reference for a Streaming Object
+    This should be removed later when the OpenLaszlo API handles
+    the broadcast better
+    -swagner
+ -->
+<attribute name="_nc" value="null" />
+    
+<!--
+<attribute name="moderatorStreamID" value="" type="string" />
+<attribute name="moderatorationObject" value="" type="string" />
+<attribute name="moderatorName" type="string" setter="this.setModeratorName(moderatorName)" />
+ -->
+<attribute name="currentModeratorList" value="null" />
+
+<attribute name="newModeratorList" value="null" />
+<attribute name="removeModeratorList" value="null" />
+
+<attribute name="ismoderator" value="false" type="boolean" />
+
+<attribute name="loadingmessage" value="" type="string" />
+<!--- 
+    The state of the Application
+    At the beginning you should choose how many users are allowed to
+    login simultaniously
+ -->
+<attribute name="islogedin" value="false" type="boolean" />
+   
+<attribute name="htmlframeisloaded" value="false" type="boolean" />
+<attribute name="createIFrameDone_attr" value="false" type="boolean" />
+
+
+<attribute name="uploadmoduleppt" value="videoconf1ppt" type="string" />
+<attribute name="uploadmoduleimg" value="videoconf1" type="string" />
+<attribute name="foldersequence" value="null" />
+<attribute name="uploadmoduleimgfolder" value="" type="string" />
+<!---
+    Can be either 2 or 4
+    But theoretically there is no limit
+ -->
+<attribute name="numberofallowedpartners" value="0" type="number" />
+
+<!--- Number of currently connected Users -->
+<attribute name="numberofpartners" value="0" type="number" />
+
+<!--- unique ID of this Stream -->
+<attribute name="streamid" value="0" type="string" />
+
+<!--- id of the current Mod in this room -->
+<attribute name="currentmodid" value="0" type="string" />
+
+<attribute name="currentlanguage" value="english" type="string" />
+
+<attribute name="objWhiteboard" value="null" />
+<attribute name="whiteboardCount" value="0" type="number" />
+<attribute name="objMessage" value="null" />
+<attribute name="VarsModeratorGeneral" value="null" />
+
+<attribute name="isConference" value="false" type="boolean" />
+
+<attribute name="statesInitValues" value="null" />
+<attribute name="salutationsInitValues" value="null" />
+<attribute name="roomTypesInitValues" value="null" />
+
+<attribute name="stdTimeOffset" value="0" type="number" />
+<attribute name="inviteMainWindow" value="null" />
+
+<!--- Audio-Video Quality Settings
+    overwritten by values from the public/config.xml 
+ -->
+<attribute name="codecType" value="h264" type="string" />
+<attribute name="framesPerSecond" value="30" type="number" />
+<attribute name="bandwidthNeededNormal" value="16384" type="number" />
+<attribute name="bandwidthNeededBest" value="32768" type="number" />
+<attribute name="camQualityNormal" value="75" type="number" />
+<attribute name="camQualityBest" value="75" type="number" />
+        
+<!--- Reference to the current active drawarea -->
+<attribute name="_drawarea" value="null" /> 
+
+<!--- Username of current user -->
+<attribute name="currentusename" value="defaultname" type="string" />
+<attribute name="user_id" value="0" type="number" />
+<attribute name="firstName" value="" type="string" />
+<attribute name="timeZoneId" value="0" type="number" />
+<attribute name="jNameTimeZone" value="" type="string" />
+<attribute name="timeZones" type="object" />
+<attribute name="timeZonesLoaded" type="boolean" value="false"/>
+<attribute name="lastName" value="" type="string" />
+<attribute name="mail" value="" type="string" />
+<attribute name="lastLogin" value="" type="string" />
+<attribute name="official_code" value="" type="string" />
+<attribute name="picture_uri" value="" type="string" />
+<attribute name="language" value="" type="string" />
+
+<!--- User porperties -->
+<attribute name="currentusercolor" value="0" type="number" />
+<attribute name="currentuserpos" value="0" type="number" />
+    
+<attribute name="currentModApply" value="null" />   
+
+<attribute name="sessionObject" value="null" />
+<attribute name="sessionId" value="" type="string" />
+
+<attribute name="syncWindow" value="null" />
+<attribute name="syncImageWindow" value="null" />
+<attribute name="syncSWFWindow" value="null" />
+<attribute name="publicSID" value="" type="string" />
+
+<!--- attributes for direct room access -->
+<attribute name="initroomid" value="0" type="number" />
+<attribute name="initroomStr" value="" type="string" />
+<attribute name="initroomtype" value="" type="string" />
+<attribute name="initdomainid" value="" type="string" />
+<attribute name="initlangid" value="1" type="number" />
+<attribute name="isinitRoomDirect" value="false" type="boolean" />
+<attribute name="isinitRoomObject" value="null" /> 
+
+<!-- attributes for direct room access via direct link -->
+<attribute name="directUserLogin" value="false" type="boolean" />
+<attribute name="directRoomId" value="1" type="number" />
+<attribute name="directRoomObj" value="null" />
+
+<!--- attributes for direct room access via remoteUser -->
+<attribute name="remoteUserLogin" value="false" type="boolean" />
+<attribute name="remoteUserSid" value="" type="string" />
+
+<!--- attributes for direct room access via remoteUser
+    This is using the advanced methods to prevent abuse
+ -->
+<attribute name="secureRemoteUserLogin" value="false" type="boolean" />
+<attribute name="secureHash" value="" type="string" />
+
+<!-- Attributes for wicket login (since it hard not to break anything)-->
+<attribute name="wicketsid" type="string" value="null"/>
+<attribute name="wicketroomid" type="number" value="0"/>
+
+<!--- skip loading of Language -->
+<attribute name="language_id" value="0" type="number" />
+<!--- application default language -->
+<attribute name="default_lang_id" value="1" type="number" />
+
+<attribute name="isResetUsername" value="false" type="boolean" />
+<attribute name="resetHash" value="" type="string" />
+    
+<attribute name="naviHeight" value="84" type="number" />    
+<attribute name="naviHeightDelta" value="84" type="number" />  
+
+<attribute name="currentrecorder" value="null" /> 
+<attribute name="currentrecorder_id" value="0" type="number" /> 
+
+<!--- 
+Holds a refernce to the current VideoCOntainer Object
+containing the VideoViews
+and some more references to temp-objects
+ -->
+<attribute name="_videocontainer" value="null" />
+<attribute name="_mymod" value="null" />
+
+<attribute name="isrtl" value="false" type="boolean" />    
+
+<!---
+    Attributes for browser panel size.
+    Those attributes are used to determine size of browser class (modules/conference/browser/conferenecBrowser.lzx)
+    in base/mainMethods.lzx.
+        2008 Apr 9 commented by onokeiji@gmail.com
+-->
+<attribute name="browserPanelWidth" value="600"/>
+<attribute name="browserPanelHeight" value="500"/>
+
+<attribute name="currentSlideNo" value="0" type="number" />
+<attribute name="currentSlideTotal" value="0" type="number" />
+<attribute name="currentSlideZoom" value="0" type="number" />
+
+<attribute name="currentUploadWindow" value="null" />
+
+<!--
+    ################################
+    Attributes for direct Moderator setup via Moodle
+ -->
+<attribute name="isMoodleRoom" value="false" type="boolean" /> 
+
+<attribute name="becomemoderator" value="false" type="boolean" />
+<attribute name="becomeSuperModerator" value="false" type="boolean" />
+
+<attribute name="moodleWwwRoot" value="" type="string" />
+<attribute name="moodleUserId" value="0" type="number" />
+<attribute name="moodlePicture" value="0" type="number" />
+
+
+<attribute name="currentRoomObj" value="null" />
+
+<attribute name="refreshSession" value="60000" type="number" />
+
+<attribute name="globalFontSize" value="11" type="number" />
+
+<attribute name="lastBroadCastingUser" value="null" />
+
+<attribute name="isBroadCasting" value="false" type="boolean" />
+
+<attribute name="currentContentView" value="null" />
+
+<!-- item to focus on after rpcErrorDialog has been shown-->
+<attribute name="focusOnItem" value="null"/>
+
+<attribute name="currentRoomObject" value="null"/>
+
+<attribute name="appointmentNotificationPopUp" value="null"/>
+
+<attribute name="conferenceBrowserIsinited" value="false" type="boolean" />
+
+<attribute name="isAllowedToScreenShare" value="false" type="boolean" />
+
+<attribute name="isAllowedToRemoteControl" value="false" type="boolean" />
+
+<attribute name="isAllowedToGiveExclusiveAudio" value="false" type="boolean" />
+
+<attribute name="roomJumpId" value="0" type="number" />
+
+<!--
+    Loads a User profile page directly instead of loading the Dashboard
+    cuser is a hash that can be found in the UserContacts Table
+ -->     
+<attribute name="cuser" value="" type="string"/>
+
+<!--
+    Indicates if the user does accept or deny a user contact request
+ -->    
+<attribute name="cuserStatus" value="none" type="string"/>
+
+<!--
+    Attribute to load a custom user calendar instead of the own one
+-->
+<attribute name="contactUser" value="0" type="number" />
+
+<attribute name="monthnames" value="['Januar','Februar','Maerz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']"/> 
+
+<attribute name="dayShortNames" value="null" />
+
+<!--
+    Used in SOAP API to indicate if the user will see a pop up to enter its nickname
+ -->
+<attribute name="showNickNameDialog" value="false" type="boolean" />
+
+<!--
+    Used in SOAP API to indicate if the user logs directly into a room or into the dashboard
+ -->
+<attribute name="landingZone" value="" type="string"/>
+
+<!--
+    if the users logs in via SOAP he does not see the exit button by default
+    only if the landingZone == dashboard
+ -->
+<attribute name="destroyExitButton" value="true" type="boolean" />
+
+<attribute name="currentFileExplorer" value="null"/>
+
+<attribute name="allowRecording" value="true" type="boolean" />
+
+<!-- userdata -->
+<attribute name="sharedObject" value="null" />
+
+<attribute name="currentMicName" value="" type="string"/>
+<attribute name="currentCamName" value="" type="string"/>
+
+<attribute name="currentBaseConferenceRoom" value="null" />
+
+<attribute name="GIVE_EXCLUSIVE_AUDIO_KEY" value="123"/> <!-- F12 --> 
+<attribute name="ARRANGE_WINDOWS_KEY" value="119"/> <!-- F8 --> 
+<attribute name="MUTE_AUDIO_KEY" value="118"/> <!-- F7 --> 
+
+<!-- 
+	Indicates if the Red5 SIP Integration is enabled or not and 
+	if the SIP Dialer is shown in the conference menu
+ -->
+<attribute name="RED5_SIP_ENABLE" value="no" type="string" /> 
+
+<!-- 
+	The server side configuration of the max upload size for files
+ -->
+<attribute name="MAX_UPLOAD_SIZE" value="-1" type="string" /> 
+
+<!-- 
+	The server side configuration of the redirect.url.for.external.users
+ -->
+<attribute name="REDIRECT_URL_FOR_EXTERNAL_USERS" value="null" type="string" /> 
+
+<attribute name="currentNC" value="null" />
+
+<!-- 
+	Holds a reference to the current tooltip, if there is one
+ -->
+<attribute name="currentToolTip" value="null" />
+
+<method name="registerToolTip" args="viewInstance">
+	if (this.currentToolTip != null) {
+		this.currentToolTip.cleanHolder();
+	}
+	this.currentToolTip = viewInstance;
+</method>
+
+<method name="clearToolTip">
+	if (this.currentToolTip != null) {
+		this.currentToolTip.cleanHolder();
+		this.currentToolTip = null;
+	}
+</method>
+
+<!-- 
+	Holds a reference to the current activity list, if there is one
+ -->
+<attribute name="currentActivityList" value="null" />
+
+</library>
diff --git a/WebContent/src/base/mainDatasets.lzx b/WebContent/src/base/mainDatasets.lzx
new file mode 100644
index 0000000..af3020b
--- /dev/null
+++ b/WebContent/src/base/mainDatasets.lzx
@@ -0,0 +1,62 @@
+<?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.
+  
+-->
+
+<!-- all datasets for main.lzx -->
+
+<library>
+
+<!-- get values from public/config.xml -->
+<dataset type="http" name="myConfigSet" request="false" ondata="parent.mainTheme.loadTheme()">
+    <handler name="oninit">
+        var d = new Date();
+        this.setAttribute("src","config.xml?random="+d.getTime());
+        this.doRequest();
+    </handler>
+    <handler name="ondata">
+        if ($debug) Debug.write("ondata");
+    </handler>
+    <handler name="onerror" args="e">
+        if ($debug) Debug.write("onerror",e);
+    </handler>
+    <handler name="ontimeout" args="e">
+        if ($debug) Debug.write("ontimeout",e);
+    </handler>
+</dataset>
+
+<!-- get values from public/config.xml -->
+<dataset type="http" name="mainTheme" request="false" ondata="canvas.myinit()">
+    <method name="loadTheme">
+        var d = new Date();
+        this.setAttribute("src","theme.xml?random="+d.getTime());
+        this.doRequest();
+    </method>
+    <handler name="ondata">
+        if ($debug) Debug.write("ondata");
+    </handler>
+    <handler name="onerror" args="e">
+        if ($debug) Debug.write("onerror",e);
+    </handler>
+    <handler name="ontimeout" args="e">
+        if ($debug) Debug.write("ontimeout",e);
+    </handler>
+</dataset>
+
+</library>
diff --git a/WebContent/src/base/mainMethods.lzx b/WebContent/src/base/mainMethods.lzx
new file mode 100644
index 0000000..2632890
--- /dev/null
+++ b/WebContent/src/base/mainMethods.lzx
@@ -0,0 +1,1149 @@
+<?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.
+  
+-->
+
+<!-- methods for main.lzx -->
+
+<library>
+
+	<class name="baseconfmenucommand" extends="command" >
+    	<attribute name="enabled" value="true" type="boolean" />
+    	<attribute name="tipLabelId" value="0" type="number" />
+    </class>
+    
+    <class name="confmenucommand" extends="baseconfmenucommand" >
+    	<attribute name="actionCommand" value="" type="string" />
+    	<handler name="onselect" args="sel">
+    		if (!this.enabled) {
+    			return;
+    		}
+    		canvas.doActionmenu(this.actionCommand);
+    	</handler>
+    </class>
+        
+    <baseconfmenucommand id="cmd_shareDesktop" tipLabelId="1480" >
+    	<handler name="onselect" args="sel">
+    		if (!this.enabled) {
+    			return;
+    		}
+    		canvas._mymod.checkForApplyScreen("no");
+    	</handler>
+    </baseconfmenucommand>
+    
+    <confmenucommand id="cmd_applyforMod" tipLabelId="1481" actionCommand="applyForMod" />
+    
+    <confmenucommand id="cmd_applyforWhiteBoard" tipLabelId="1492" key="['control','shift','2']">
+    	<handler name="onselect" args="tSel">
+    		if (!this.enabled) {
+    			return;
+    		}
+    		if ($debug) Debug.write("cmd_applyforWhiteBoard onselect",tSel);
+    		//Ask for Right to Draw on Whiteboard
+			var tDate = new Date();
+			canvas.thishib.sendMessageWithClient.sendMessage("applyForWhiteboard",tDate.getTime());
+    	</handler>
+    </confmenucommand>
+    
+    <baseconfmenucommand id="cmd_applyforAV" tipLabelId="1482">
+    	<handler name="onselect" args="tSel">
+    		if (!this.enabled) {
+    			return;
+    		}
+    		if ($debug) Debug.write("cmd_applyforAV onselect",canvas.ismoderator,tSel);
+    		if (canvas.ismoderator) {
+				//Do directly send confirmation to share Audio/Video to SELF! so that all users get
+				//the notification and the broadcasting Bit is set for this User
+				canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+				canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+				canvas.thishib.setBroadCastingFlag.doCall();
+			} else {
+				//Apply for Right to Share Audio/Video
+				var tDate = new Date();
+				canvas.thishib.sendMessageWithClient.sendMessage("applyForAV",tDate.getTime());
+			}
+    	</handler>
+    </baseconfmenucommand>
+    
+    <confmenucommand id="cmd_createPoll" tipLabelId="1483" actionCommand="createPoll" />
+    <confmenucommand id="cmd_pollResults" tipLabelId="1484" actionCommand="pollResults" />
+    <confmenucommand id="cmd_checkPollVoted" tipLabelId="1485" actionCommand="checkPollVoted" />
+    <confmenucommand id="cmd_importFile" tipLabelId="1479" actionCommand="importFile" />
+    <confmenucommand id="cmd_editCamMicSettings" actionCommand="editCamMicSettings" tipLabelId="1486" /> 
+    <confmenucommand id="cmd_quit" actionCommand="quit" tipLabelId="1487" />
+    <confmenucommand id="cmd_showSipDialer" actionCommand="showSipDialer" tipLabelId="1488" />
+    
+    <confmenucommand id="cmd_invitation" actionCommand="invitation" tipLabelId="1489" /> 
+    <confmenucommand id="cmd_editWhiteboardDefault" actionCommand="editWhiteboardDefault" tipLabelId="1490" /> 
+    
+    <!-- 
+    <confmenucommand id="cmd_coBrowser" actionCommand="browser_open" key="['control','b']"/> 
+     -->
+   
+    <confmenucommand id="cmd_exportFilePNG" onselect="canvas.doWhiteboardActionmenu('exportFilePNG')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileJPG" onselect="canvas.doWhiteboardActionmenu('exportFileJPG')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileSVG" onselect="canvas.doWhiteboardActionmenu('exportFileSVG')" tipLabelId="1489" />
+    <!-- 
+    <confmenucommand id="cmd_exportFilePDF" onselect="canvas.doWhiteboardActionmenu('exportFilePDF')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileTIF" onselect="canvas.doWhiteboardActionmenu('exportFileTIF')" tipLabelId="1489" />
+     -->
+    
+    <attribute name="colorArray" value="null" />
+    
+    <method name="getColorForUser">
+    	<![CDATA[
+    	   var colorArray = [0x92E8A4,0xC2F1FF,0xFFFCAE,0xE8C792,0xFF8073,
+                            0xE8DB87,0xAFFFB8,0xBED4FF,0xE0BBE8,0xFFBBA5];
+    	   return colorArray[Math.round(Math.random()*10)];
+    	]]>
+    </method>
+    
+    <method name="remoteLogWrite" args="message">
+    	if ($debug) Debug.write(message);
+    	var remoteLog = new lz.dataset();
+    	remoteLog.setQueryType("POST");
+    	remoteLog.setAttribute("src", canvas.getUrl() + "remotelog.upload");
+    	remoteLog.setQueryParam("message", message);
+    	remoteLog.setQueryParam("sid", canvas.sessionId);
+    	remoteLog.doRequest();
+    </method>
+    
+    <method name="getHttpHost">
+   	<![CDATA[
+    	if (canvas.httphostlocal != null && canvas.httphostlocal.length > 0) {
+			return canvas.httphostlocal;
+		}
+		return canvas.rtmphostlocal;
+	]]>
+    </method>
+        
+	<method name="getUrl">
+	<![CDATA[
+		return canvas.protocol + '://' + getHttpHost()
+			+ ':' + canvas.red5httpport + canvas.httpRootKey;
+	]]>
+	</method>
+        
+	<method name="getServicesUrl">
+	<![CDATA[
+		return getUrl() + 'services/';
+	]]>
+	</method>
+
+	<method name="getTestingUrl">
+	<![CDATA[
+		return getUrl() + '?swf=networktesting' + ($debug ? 'debug' : '') + '.swf10.swf';
+	]]>
+	</method>
+
+	<method name="getAppBaseUrlWithoutSwfSuffix">
+	<![CDATA[
+		var urlObject = lz.Browser.getBaseURL();
+		//If Port is Null or undefinied use port 80
+		var port = (urlObject.port != null && urlObject.port != undefined) ? urlObject.port : 80;
+		//if($debug) Debug.write("getBaseUrl:: [urlObject, port]", urlObject, port);
+		var url = "" + urlObject.protocol + "://" + urlObject.host + (port != 80 ? ":" + port : "") + urlObject.path;
+		//if($debug) Debug.write("!!!!!!! getBaseUrl:: [urlObject, port, url]", urlObject, port, url);
+		url = url + (url.slice(-1) == '/' ? '' : '/');
+		//if($debug) Debug.write("!!!!!!! getBaseUrl:: [last, url]", url.slice(-1), url);
+		return url.substring(0, url.length - 7); // the length of "public/"
+	]]>
+	</method>
+
+	<method name="getAppBaseUrl">
+	<![CDATA[
+		return getAppBaseUrlWithoutSwfSuffix() + "swf"
+	]]>
+	</method>
+
+	<method name="getScreenSharingUrl">
+	<![CDATA[
+		var organisation_id = (hib.currentdomainObj != null && hib.currentdomainObj.organisation_id != null)
+			? hib.currentdomainObj.organisation_id : 1;
+		if ($debug) Debug.write("mainMethods::getScreenSharingUrl ", hib.userobject, hib.currentdomainObj);
+		
+		var appBase = canvas.getAppBaseUrlWithoutSwfSuffix();
+		if ($debug) Debug.write("appBase=" + appBase);
+		var downloadurl = appBase + 'screen.upload?'
+			+'rtmphostlocal=' + canvas.getHttpHost()
+			+'&baseurl=' + escape(appBase)
+			+'&domain=' + hib.conferencedomain
+			+'&organization_id=' + organisation_id
+			+'&sid=' + canvas.sessionId
+			+'&connectionType=' + canvas.thishib.getProtocol()
+			+'&port=' + canvas.thishib.getPort()
+			+'&publicSID=' + canvas.publicSID
+			+'&languageAsString=' + hib.userlang;
+		if ($debug) Debug.write("mainMethods::getScreenSharingUrl ", downloadurl); 
+		return downloadurl;
+	]]>
+	</method>
+	
+    <dataset type="http" name="languageData" request="false" 
+        src="${ canvas.currentlanguage+'.xml' }" proxied="false">
+        <handler name="ondata" args="value">
+            parent.parseLanugageObject(value);
+        </handler>
+    </dataset>
+
+    <method name="myinit">
+        <![CDATA[
+        canvas.mediaerrortimeout = 30000;
+        canvas.medialoadtimeout = 30000;
+        
+        if($debug) Debug.write("main.lzx/config.xml ondata",this);
+        
+        //Set Config-values by public/config.xml, see comments on public/config.xml
+        this.setAttribute('rtmphostlocal',canvas.myConfigSet.getPointer().xpathQuery('config/rtmphostlocal/text()'));   
+        this.setAttribute('rtmpport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/rtmpport/text()')));  
+        this.setAttribute('rtmpsslport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/rtmpsslport/text()'))); 
+        
+        var userSSLString = canvas.myConfigSet.getPointer().xpathQuery('config/useSSL/text()');
+        if ($debug) Debug.write("userSSLString",userSSLString)
+        if (userSSLString == "yes") {
+            this.setAttribute('useSSL',true);
+        }
+        
+        this.setAttribute('red5httpport',Number(canvas.myConfigSet.getPointer().xpathQuery('config/red5httpport/text()')));
+        
+        this.setAttribute('currentappname',canvas.myConfigSet.getPointer().xpathQuery('config/currentappname/text()'));  
+        this.setAttribute('currentappnameurl',canvas.myConfigSet.getPointer().xpathQuery('config/currentappnameurl/text()'));  
+        this.setAttribute('currentappnamebugurl',canvas.myConfigSet.getPointer().xpathQuery('config/currentappnamebugurl/text()'));
+        this.setAttribute('loudnessAcitviation',canvas.myConfigSet.getPointer().xpathQuery('config/loudnessAcitviation/text()'));
+        this.setAttribute('webAppRootKey',canvas.myConfigSet.getPointer().xpathQuery('config/webAppRootKey/text()'));
+        this.setAttribute('showWindowEffect',canvas.myConfigSet.getPointer().xpathQuery('config/showWindowEffect/text()'));
+        this.setAttribute('firstdayinweek',canvas.myConfigSet.getPointer().xpathQuery('config/firstdayinweek/text()'));
+        this.setAttribute('showRecording',canvas.myConfigSet.getPointer().xpathQuery('config/showRecording/text()'));
+        
+        //old menubar is not active anymore
+        //this.setAttribute('showmodernWhiteBoard',canvas.myConfigSet.getPointer().xpathQuery('config/showmodernWhiteBoard/text()'));
+        
+        //Audio-Video-Settings
+        this.setAttribute('codecType',canvas.myConfigSet.getPointer().xpathQuery('config/codecType/text()'));
+        this.setAttribute('framesPerSecond',Number(canvas.myConfigSet.getPointer().xpathQuery('config/framesPerSecond/text()')));  
+        this.setAttribute('bandwidthNeededNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededNormal/text()')));  
+        this.setAttribute('bandwidthNeededBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededBest/text()')));  
+        this.setAttribute('camQualityNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityNormal/text()')));  
+        this.setAttribute('camQualityBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityBest/text()')));  
+        
+        this.setAttribute('defaultWhiteboardWidth',Number(canvas.myConfigSet.getPointer().xpathQuery('config/defaultWhiteboardWidth/text()')));  
+        this.setAttribute('defaultWhiteboardHeight',Number(canvas.myConfigSet.getPointer().xpathQuery('config/defaultWhiteboardHeight/text()')));  
+        
+        
+        this.setAttribute('moderatorModuleUser',canvas.myConfigSet.getPointer().xpathQuery('config/moderatorModuleUser/text()'));  
+        this.setAttribute('moderatorModuleRoom',canvas.myConfigSet.getPointer().xpathQuery('config/moderatorModuleRoom/text()'));  
+        
+        this.setAttribute('dashboardModuleStartScreen',canvas.myConfigSet.getPointer().xpathQuery('config/dashboardModuleStartScreen/text()'));  
+        this.setAttribute('dashboardModuleCalendar',canvas.myConfigSet.getPointer().xpathQuery('config/dashboardModuleCalendar/text()'));  
+        this.setAttribute('conferenceRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/conferenceRoomModule/text()'));  
+        this.setAttribute('restrictedRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/restrictedRoomModule/text()'));  
+        this.setAttribute('interviewRoomModule',canvas.myConfigSet.getPointer().xpathQuery('config/interviewRoomModule/text()'));  
+        this.setAttribute('recordModule',canvas.myConfigSet.getPointer().xpathQuery('config/recordModule/text()'));
+          
+        this.setAttribute('httpRootKey',canvas.myConfigSet.getPointer().xpathQuery('config/httpRootKey/text()'));
+        this.setAttribute('httphostlocal',canvas.myConfigSet.getPointer().xpathQuery('config/httphostlocal/text()'));
+        this.setAttribute('protocol',canvas.myConfigSet.getPointer().xpathQuery('config/protocol/text()'));  
+        this.setAttribute('proxyType',canvas.myConfigSet.getPointer().xpathQuery('config/proxyType/text()'));
+
+		//set user color
+		canvas.currentusercolor = canvas.getColorForUser();
+
+        var lc_SID = lz.Browser.getInitArg('lc_SID');
+        
+        if($debug) Debug.write("lc_SID: ", lc_SID);
+        
+        if (lc_SID == undefined) {
+        	new lz.errorPopup(canvas,{'error':'You are loading the wrong SWF, there is no lz_SID given'});
+        	return;
+        }
+        
+        
+
+        this.setAttribute('lc_SID', lc_SID);
+        this.setAttribute('vid_lc_name', this.lc_SID + "__videoLC");
+        this.setAttribute('rtmp_lc_name', this.lc_SID + "__rtmpLC");
+        this.setAttribute('videoComp_lc_name', this.lc_SID + "__streamLC");
+        this.setAttribute('videoComp_lc_callback_name', this.lc_SID + "__streamLC_cback");
+
+        var videoComp_lc = new LocalConnection();
+        videoComp_lc.connect(this.videoComp_lc_name);
+        this.setAttribute('videoComp_lc', videoComp_lc);
+        
+        var t = this;
+    	canvas.videoComp_lc.regExpResult = function(tId,tResult) {
+      		t.regExpResult(tId,tResult);
+        }
+        canvas.videoComp_lc.remoteLogWrite = function(message) {
+        	canvas.remoteLogWrite(message);
+        }
+        canvas.videoComp_lc.exitRoom = function(confirm) {
+            if ($debug) Debug.write("confirm exitRoom:", confirm);
+            if (confirm) {
+            	logicalRoomLeave.doCall();
+            }
+        }
+    
+        mainBaseText.setAttribute('text',canvas.currentappname);
+        var cleanUrl = _url;
+        
+        var hasParams = _url.indexOf("?");
+        if (hasParams != -1) {
+            cleanUrl = _url.substr(0, hasParams);
+        }
+        
+        if ($debug) Debug.write("_url ",_url,cleanUrl);
+        var doubleSlash = cleanUrl.indexOf("//");
+        var isNotPort80 = cleanUrl.indexOf(":", doubleSlash+2);
+        if ($debug) Debug.write("isNotPort80: ",isNotPort80,doubleSlash);
+        if (isNotPort80!=-1){
+            //Debug.write("isNotPort80: ",doubleSlash+2, _url.indexOf(":", doubleSlash+2)-doubleSlash-2);
+            var server = cleanUrl.substr(doubleSlash+2, _url.indexOf(":", doubleSlash+2)-doubleSlash-2); 
+        } else {
+            var server = cleanUrl.substr(doubleSlash+2, _url.indexOf("/", doubleSlash+2)-doubleSlash-2); 
+        }
+        
+        if ($debug) Debug.write("this zielnr: ",this,server);
+        
+        this.setAttribute('rtmphost',server);
+    
+        if (this.rtmphostlocal.length==0){
+            this.setAttribute('rtmphostlocal',server);
+        }
+        
+        //Check for Invitation
+        var invitationHash = lz.Browser.getInitArg('invitationHash');
+        
+        if ($debug) Debug.info("###################### -1 ");
+        if ($debug) Debug.info("invitationHash :: ",invitationHash);
+        
+        if (invitationHash != undefined){
+            canvas.isinitRoomDirect = true;
+            canvas.invitationHash = invitationHash;
+        }
+        
+        var secureHash = lz.Browser.getInitArg('secureHash');
+        if (secureHash != undefined){
+            canvas.secureRemoteUserLogin = true;
+            canvas.secureHash = secureHash;
+        }
+        
+        if ($debug) Debug.info("###################### -2 ");
+        
+        //sid=fe9ea55284e0b23991b1c1089b2c8f64&roomid=1
+        var sid = lz.Browser.getInitArg('sid');
+        var initroomid = lz.Browser.getInitArg('roomid');
+        if (sid != undefined && initroomid != undefined){
+            canvas.remoteUserLogin = true;
+            canvas.initroomid = initroomid;
+            canvas.remoteUserSid = sid;
+        }
+        
+        var directRoomId = lz.Browser.getInitArg('directRoomId');
+        if (directRoomId != undefined) {
+            canvas.directUserLogin = true;
+            canvas.directRoomId = directRoomId;
+        }
+        
+        var language = lz.Browser.getInitArg('language');
+        if (language != undefined) {
+            canvas.language_id = Number(language);
+        }
+    
+        //check for reset password
+        var hash = lz.Browser.getInitArg('hash');
+        if (hash!=undefined){
+            canvas.isResetUsername = true;
+            canvas.resetHash = hash;        
+        }
+        
+        var cuserItem = lz.Browser.getInitArg('cuser');
+        if (cuserItem!=undefined){
+            canvas.cuser = cuserItem;  
+            
+            //Lookup additional actions
+            var tAccept = lz.Browser.getInitArg('tAccept');
+            if (tAccept != undefined) {
+                canvas.cuserStatus = tAccept;
+            } else {
+                canvas.cuserStatus = "none";
+            }
+            
+        }
+        
+        var moodleRoom = lz.Browser.getInitArg('moodleRoom');
+        var becomemoderator = lz.Browser.getInitArg('becomemoderator');
+        
+        if (becomemoderator != undefined) {
+            if (becomemoderator == "2"){
+                canvas.becomemoderator = true;
+            } else {
+                canvas.becomemoderator = false;
+            }
+        }
+        
+        if (moodleRoom != undefined){
+            canvas.isMoodleRoom = true;
+            
+            var moodleWwwRoot = lz.Browser.getInitArg('wwwroot');
+            var moodleUserId = lz.Browser.getInitArg('user_id');
+            var moodlePicture = lz.Browser.getInitArg('picture');
+            
+            if (moodleWwwRoot != undefined) {
+                canvas.moodleWwwRoot = moodleWwwRoot;
+            }
+            if (moodleUserId != undefined) {
+                canvas.moodleUserId = Number(moodleUserId);
+            }
+            if (moodlePicture != undefined) {
+                canvas.moodlePicture = moodlePicture;
+            }
+        }
+        
+        var scopeRoomId = lz.Browser.getInitArg('scopeRoomId');
+        if (scopeRoomId != undefined){
+            hib.userScope = scopeRoomId;
+        }
+        
+       	canvas.setAttribute('wicketsid', null);
+        var wicketsid = lz.Browser.getInitArg('wicketsid');
+        var wicketroomid = lz.Browser.getInitArg('wicketroomid');
+        if (wicketsid != undefined && wicketroomid != undefined && !isNaN(wicketroomid)) {
+        	canvas.setAttribute('wicketsid', wicketsid);
+        	canvas.setAttribute('wicketroomid', Number(wicketroomid));
+        	hib.userScope = wicketroomid;
+        }
+        this.setBaseColors();
+    
+        //Debug.write("rtmphostlocal,rtmphost: ",canvas.rtmphostlocal,canvas.rtmphost); 
+        var src = hib.getUrl();
+        
+        canvas.thishib.setAttribute('src',src);
+        canvas.thishib.loaderVar = new lz.autoLoader(canvas);
+        canvas.thishib.loaderVar._src.setAttribute('text',src);
+        canvas.thishib.connect();
+        ]]>
+    </method>
+    
+	<netRemoteCallHib name="logicalRoomLeave" funcname="logicalRoomLeave" remotecontext="$once{ canvas.thishib }" >
+		<handler name="ondata" args="value">
+			if ($debug) Debug.write("############# logicalRoomLeave: ",value);
+			canvas.currentBaseConferenceRoom._screenSharingAdapter.closeAllScreenSharings();
+			if (canvas.appointmentNotificationPopUp != null) {
+				canvas.appointmentNotificationPopUp.destroy();
+			}
+			canvas.doActionmenu('quit');
+		</handler>
+	</netRemoteCallHib>
+	
+    <method name="getLabelName" args="id">
+        //if($debug) Debug.write("main.lzx/getLabelName()",id);
+        return getLabelTag(id);
+    </method>
+    
+    <!--
+        exportFilePNG exportFileJPG exportFilePDF exportFileSVG exportFileTIF
+     -->
+     
+    <method name="doWhiteboardActionmenu" args="action">
+        if (action == "exportFilePNG") {
+            canvas._drawarea.confirmSaveAsImageTypeExport("image","png");
+        } else if (action == "exportFileJPG") {
+            canvas._drawarea.confirmSaveAsImageTypeExport("image","jpg");
+        } else if (action == "exportFilePDF") {
+            canvas._drawarea.confirmSaveAsImageTypeExport("image","pdf");
+        } else if (action == "exportFileSVG") {
+            canvas._drawarea.confirmSaveAsImageExport("image");
+        } else if (action == "exportFileTIF") {
+            canvas._drawarea.confirmSaveAsImageTypeExport("image","tif");
+        }
+    </method>
+
+	<method name="quit">
+		canvas.videoComp_lc.exitRoom = null;
+		canvas.thishib.src = null;
+		canvas.thishib.reconnectionAction = false;
+		canvas.thishib.reconnectAfterRoomleft = false;
+		canvas.thishib.counterror = 100;
+		canvas.thishib.disconnect();
+		canvas.thishib._nc.close();
+		flash.external.ExternalInterface.call("roomExit");
+	</method>
+	
+	<!---
+		Actions connected to the shortcuts
+	 -->
+    <method name="doActionmenu" args="stringSub">
+        <![CDATA[
+            if($debug) Debug.write("doActionmenu: ",stringSub);
+            if (canvas._conferencemenu.visibility == 'visible'){
+            	 if (stringSub == "invitation") {
+				    canvas.inviteMainWindow.setAttribute('visibility', 'visible');
+			    } else if (stringSub=='editWhiteboardDefault') {
+                    new lz.editWhiteboardDefault(canvas.main_content._content.inner);
+                } else if (stringSub=='createPoll') {
+                    new lz.createPollWin(canvas.main_content._content.inner);
+                } else if (stringSub=='pollResults') {
+                    this.getVotes.doCall();
+                } else if (stringSub=='checkPollVoted') {
+                    this.checkHasVoted.doCall();
+                } else if (stringSub=='importFile') {
+                    new lz.uploadWindowExplorer(canvas.main_content._content.inner,{
+                            x:60,uploadmodule:canvas.uploadmoduleimg,
+                            parentFolderId:0,
+                            isOwner:false,
+                            fileExplorerRef:null,
+                            isOnlyImage:true,
+                            servletName:'file.upload'
+                        });
+                } else if (stringSub=='applyForMod') {
+                    if ($debug) Debug.info("Apply For Mod through doActionmenu");
+                    //new lz.applyForModeration(canvas.main_content._content.inner);
+                    canvas.thishib.applyForModeration.doCall();
+                } else if (stringSub=='editCamMicSettings') {
+                    canvas._videocontainer._videoviewcontent.changeDevice();
+                } else if (stringSub=='showSipDialer') {
+                    new lz.sipDialer(canvas.main_content._content.inner);
+                } else if (stringSub=='quit') {
+					canvas.quit();
+                } else if( stringSub == "browser_open" ){
+                    var browserPanelWidth  = canvas.browserPanelWidth;
+                    var browserPanelHeight = canvas.browserPanelHeight;
+
+                    if ($debug) Debug.write( "is browser[open] ? ", canvas.main_content._content.inner.conferenceBrowser );
+                    if ($debug) Debug.write( "is browser[browserPanelWidth] ? ", browserPanelWidth );
+                    if ($debug) Debug.write( "is browser[browserPanelHeight] ? ", browserPanelHeight );
+
+                    if( !canvas.conferenceBrowserIsinited ){
+                        new lz.conferenceBrowser( canvas.main_content._content.inner,{
+                                                         name:'conferenceBrowser',y:30,
+                                                         width:canvas.width-220, 
+                                                         height:canvas.height-100,
+                                                         width:browserPanelWidth, 
+                                                         height:browserPanelHeight
+                                                     });
+                    } else{
+                    with( canvas.main_content._content.inner ){
+                            conferenceBrowser.htmlviewer.setVisible( true );
+                            conferenceBrowser.setVisible( true );
+                    }
+                }
+             } else if( stringSub == "browser_close" ){
+                if ($debug) Debug.write( "is browser[close] ? ", canvas.main_content._content.inner.conferenceBrowser );
+                with( canvas.main_content._content.inner ){
+                    if( conferenceBrowser  != undefined ){
+                            conferenceBrowser.htmlviewer.setVisible( false );
+                            conferenceBrowser.setVisible( false );
+                    }
+                }
+            }
+          }
+        ]]>
+    </method> 
+    
+    <method name="startBrowser" args="objMessage">
+        <![CDATA[
+            if( !canvas.conferenceBrowserIsinited ){
+                        if ($debug) Debug.write( "if this" );
+                new lz.conferenceBrowser(canvas.main_content._content.inner,{
+                                             name:'conferenceBrowser',y:30,
+                                             width:canvas.width-220, 
+                                             height:canvas.height-100,
+                                             initedByUser:false,
+                                             initURL:objMessage[1]
+                                        });
+            } else{Debug.write( "else this" );
+                with( canvas.main_content._content.inner ){
+                        conferenceBrowser.htmlviewer.setVisible( true );
+                        conferenceBrowser.setVisible( true );
+                        conferenceBrowser.newBrowserURL(objMessage[1]);
+                }
+            }
+        ]]>
+    </method>   
+    
+    <method name="closeBrowser" args="objMessage">
+        <![CDATA[
+            if( canvas.conferenceBrowserIsinited ){
+                with( canvas.main_content._content.inner ){
+                        conferenceBrowser.close();
+                }
+            }
+        ]]>
+    </method>
+    
+    <netRemoteCallHib name="getVotes" funcname="pollservice.getVotes" remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            new lz.resultPollWin(canvas.main_content._content.inner, {roomPoll: value});
+        </handler>   
+    </netRemoteCallHib>  
+        
+    <netRemoteCallHib name="checkHasVoted" funcname="pollservice.checkHasVoted" remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+                      if (value==1){
+                        parent.getPoll.doCall();
+                      } else if (value==-1){
+                        new lz.messageWin(canvas.main_content._content.inner,{labeliderror:31});
+                      } else if (value==-2){
+                            new lz.messageWin(canvas.main_content._content.inner,{labeliderror:41});
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="getPoll" funcname="pollservice.getPoll" remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if (value!=null){
+                    if ($debug) Debug.write(":: getPoll: ", value);
+                     new lz.answerPoll(
+                        canvas.main_content._content.inner
+                        , {
+                            createdBy: value.createdBy.login
+                            , pollDate: value.created
+                            , pollQuestion: value.pollQuestion
+                            , pollTypeId: value.pollType.pollTypesId
+                            , roomPollAnswerList: value.roomPollAnswerList
+                            , roomPollId: value.roomPollId
+                            , roomScopeName: value.roomScopeName
+                        }
+                     );
+                }
+            ]]>
+        </handler>
+    </netRemoteCallHib> 
+    
+    <method name="setRoomValues" args="roomTypeId,roomId,roomObj">
+    
+        if ($debug) Debug.warn("setRoomValues ",roomTypeId,roomId,roomObj);
+        if (roomTypeId==1){
+                canvas.isConference = true;
+            } else {
+                canvas.isConference = false;
+        }
+        
+        //this is needed cause in the rpc-method *getCurrentModeratorList* we check if its roomtype_id == 3
+        //and if roomtype_id == 3 we will not show any *There is no Moderator* Warning Dialog
+        canvas.currentRoomObject = roomObj;
+
+        hib.currentroomid = roomId;
+        if (roomObj!=null){
+            if (roomTypeId==1){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.conferenceRoomModule,roomObj:roomObj});
+                 
+            } else if (roomTypeId==2){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.restrictedRoomModule,roomObj:roomObj});
+                new lz.labelerrorPopup(canvas,{error:'No RoomType currently available for roomTypeId 2'});
+                 
+            } else if (roomTypeId==3){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.restrictedRoomModule,roomObj:roomObj});
+                 
+            } else if (roomTypeId==4){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.interviewRoomModule,roomObj:roomObj});
+                 
+            } else if (roomTypeId==5){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.customRoomModule,roomObj:roomObj});
+                 
+            } 
+        }
+    </method>
+    
+	<method name="roomClosed">
+	    <![CDATA[
+	        if ($debug) Debug.write("canvas.currentRoomObject ",canvas.currentRoomObject);
+	        new lz.redirectBox(canvas,{redirectURL:canvas.currentRoomObject.redirectURL});
+	    ]]>
+	</method>
+                 
+        
+
+	
+	<method name="parseLanugageObject" args="obj">
+	
+	    ////Debug.write('parseLanugageObject: ',obj);
+	    ////Debug.write('parseLanugageObject: ',obj.childNodes);
+	    <![CDATA[
+	    var t = new Array();
+	    for (var i=0;i<obj.childNodes.length;i++){
+	        for (var k=0;k<obj.childNodes[i].childNodes.length;k++){
+	            ////Debug.write(obj.childNodes[i].childNodes[k]);
+	            var t2 = new Array();
+	            t2[obj.childNodes[i].childNodes[k].childNodes[0].nodeName]=obj.childNodes[i].childNodes[k].childNodes[0].childNodes[0].data;
+	            t2[obj.childNodes[i].childNodes[k].childNodes[1].nodeName]=obj.childNodes[i].childNodes[k].childNodes[1].childNodes[0].data;
+	            t.push(t2);
+	        }
+	    }
+	    setLabelObject(t);
+	    canvas.initScreen();
+	    //Debug.write(t);
+	    ]]>
+	</method>
+	
+	<!-- Data Source Definition -->
+	<dataset name="getSessionVarsData" request="false" proxied="false"
+	    querytype="POST" src="${ 'http://'+canvas.rtmphost+'/webrooms/checksession.php' }" 
+	    type="http" >
+	    <handler name="ondata" args="value">
+	    
+	        //Debug.write(value);
+	        canvas.setAttribute('currentcourse',value.childNodes[0].childNodes[0].childNodes[0].childNodes[0].data);
+	        canvas.setAttribute('currentcourseName',canvas.currentcourse);
+	        canvas.setAttribute('currentcourseNameLong',value.childNodes[0].childNodes[0].childNodes[1].childNodes[0].data);
+	        canvas.setAttribute('currentlanguage',value.childNodes[0].childNodes[0].childNodes[8].childNodes[0].data);
+	
+	        canvas.setAttribute('currentusename',value.childNodes[0].childNodes[1].childNodes[2].childNodes[0].data+' '+value.childNodes[0].childNodes[1].childNodes[1].childNodes[0].data);
+	        
+	        canvas.setAttribute('user_id',value.childNodes[0].childNodes[1].childNodes[0].childNodes[0].data);
+	        canvas.setAttribute('firstName',value.childNodes[0].childNodes[1].childNodes[1].childNodes[0].data);
+	        canvas.setAttribute('lastName',value.childNodes[0].childNodes[1].childNodes[2].childNodes[0].data);
+	        canvas.setAttribute('mail',value.childNodes[0].childNodes[1].childNodes[3].childNodes[0].data);
+	        canvas.setAttribute('lastLogin','');
+	        canvas.setAttribute('official_code',value.childNodes[0].childNodes[1].childNodes[5].childNodes[0].data);
+	        canvas.setAttribute('picture_uri','');
+	        canvas.setAttribute('language',value.childNodes[0].childNodes[1].childNodes[7].childNodes[0].data);
+	
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[0].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[1].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[2].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[3].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[4].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[5].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[6].childNodes[0].data);
+	        //Debug.write(value.childNodes[0].childNodes[1].childNodes[7].childNodes[0].data);
+	        
+	        switch (canvas.currentlanguage){
+	            case 'english':
+	            break;
+	            case 'german':
+	            break;
+	            case 'french':
+	            break;          
+	            default:
+	            canvas.setAttribute('currentlanguage','english');
+	            break;
+	        }
+	        
+	        var addIt='conf';
+	        if (!canvas.isConference){
+	            addIt='meet'
+	        }
+	        canvas.setAttribute('currentcourse',canvas.rtmphost+canvas.currentcourse+addIt);
+	        canvas.setAttribute('currentuser',value.childNodes[0].childNodes[1].childNodes[5].childNodes[0].data);
+	        
+	        canvas.setAttribute('loadingmessage','loading language data');
+	        canvas.languageData.doRequest();
+	    </handler>
+	</dataset>
+	
+	<method name="addBrowserTabHistory" args="value">
+	    <![CDATA[
+	    //Debug.write("addBrowserTabHistory: ",value);
+	    _browserhistory.addItem(value);
+	    this.browserTabHistory.push(value);
+	    ]]>
+	</method>
+	  
+	<!---
+	@doc The function does compare the new moderator list with the old and prepares the list 
+		the removeModeratorList is used in the performance optimized user list of the restricted 
+		room type to re-render the list items only if really something has changed in any 
+		of the user list items
+	 -->
+	<method name="analyzeModerationList" args="newList">
+	    <![CDATA[
+	    
+	       canvas.newModeratorList = new Array();
+	       canvas.removeModeratorList = new Array();
+	       
+	       if (canvas.currentModeratorList != null) {
+	           for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	                canvas.currentModeratorList[i].found = false;
+	           }
+	       
+	           for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	                
+	                for (var k=0;k<newList.length;k++) {
+	                    if (newList[k].publicSID == canvas.currentModeratorList[i].publicSID) {
+	                        canvas.currentModeratorList[i].found = true;
+	                    }
+	                }
+	            }
+	        }
+	        
+	        for (var k=0;k<newList.length;k++) {
+	            newList[k].found = false;
+	        }
+	       
+	        for (var k=0;k<newList.length;k++) {
+	        	if (canvas.currentModeratorList != null) {
+	                for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	                    if (newList[k].publicSID == canvas.currentModeratorList[i].publicSID) {
+	                        newList[k].found = true;
+	                    }
+	                }
+	        	}
+	        }
+	        
+	        for (var k=0;k<newList.length;k++) {
+	            if (!newList[k].found) {
+	                canvas.newModeratorList.push(newList[k]);
+	            }
+	        }
+	        
+	        if (canvas.currentModeratorList != null) {
+	            for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	                
+	                if (!canvas.currentModeratorList[i].found) {
+	                    canvas.removeModeratorList.push(canvas.currentModeratorList[i])
+	                }
+	            }
+	        }
+	        
+	        if ($debug) Debug.write("newModeratorList :: ",canvas.newModeratorList);
+	        if ($debug) Debug.write("removeModeratorList :: ",canvas.removeModeratorList);
+	    ]]>
+	</method>
+	
+	<!---
+		Updates the "ismoderator" flag
+		the setAttribute method will broadcast an event to all event listeners that 
+		did subscribe using the "onismoderator" handler with reference to canvas !
+		For example in the userlist's of the roomtypes
+	 -->
+	<method name="updateModerationFlag">
+	    <![CDATA[
+	        if ($debug) Debug.write("updateModerationFlag",canvas.currentModeratorList);
+	        var isCurrentModerator = false;
+	        for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	            var item = canvas.currentModeratorList[i];
+	            if (canvas.publicSID == item.publicSID) {
+	                isCurrentModerator = true;
+	            }
+	        }
+	        
+	        //Only send this event if the current user moderators status changes
+	        if (isCurrentModerator != this.ismoderator) {
+		        canvas.sendViaLocalConnection(canvas.vid_lc_name, "updateModerationFlag", [isCurrentModerator]);
+	        }
+	        
+	        // do always spread this event, we need to broadcast the "onismoderator" event
+	        // so that we can update the status of other users in the user list
+	        this.setAttribute('ismoderator',isCurrentModerator);
+	    ]]>
+	</method> 
+	
+	<!---
+		Checks if a certain publicSID is a moderator
+	 -->
+	<method name="getIsModeratorByPublicSID" args="publicSID">
+	    <![CDATA[
+	        for (var i=0;i<canvas.currentModeratorList.length;i++) {
+	            var item = canvas.currentModeratorList[i];
+	            if (publicSID == item.publicSID) {
+	                return true;
+	            }
+	        }
+	        return false;
+	    ]]>
+	</method>
+	 
+	<!---
+		Sets the flags isAllowedToDraw, isAllowedToScreenShare, isAllowedToRemoteControl 
+		and broadcasts the three rights to SWF10 container
+	 -->
+	<method name="setDrawAllowStatus" args="roomClientObj">
+	    <![CDATA[
+	        if ($debug) Debug.write("drawAllowStatus changes ###### ");
+	        if (roomClientObj.publicSID==canvas.publicSID) {
+	            canvas.setAttribute("isAllowedToDraw",roomClientObj.canDraw);
+	            canvas.setAttribute("isAllowedToScreenShare",roomClientObj.canShare);
+	            canvas.setAttribute("isAllowedToRemoteControl",roomClientObj.canRemote);
+	            canvas.sendViaLocalConnection(canvas.vid_lc_name, "setDrawAllowStatus", [roomClientObj.canDraw, roomClientObj.canShare, roomClientObj.canRemote]);
+	        }
+	    ]]>
+	</method>
+	
+	<!---
+		Sets the flag for the isAllowedToGiveExclusiveAudio status and broadcasts it to the 
+		SWF10 container
+	 -->
+	<method name="setExclusiveAudioAllowStatus" args="roomClientObj">
+	    <![CDATA[
+	        if ($debug) Debug.write("giveExclusiveAudioStatus changes ###### ");
+	        if (roomClientObj.publicSID==canvas.publicSID) {
+	            canvas.setAttribute("isAllowedToGiveExclusiveAudio",roomClientObj.canGiveAudio);
+	            canvas.sendViaLocalConnection(canvas.vid_lc_name, "setExclusiveAudioAllowStatus", [roomClientObj.canGiveAudio]);
+	        }
+	    ]]>
+	</method>
+	
+	<method name="setMuteStatus" args="roomClientObj">
+	    <![CDATA[
+	        if ($debug) Debug.write("setMuteStatus changes ###### ",roomClientObj.micMuted);
+	        //Check for self status
+	        if (roomClientObj.publicSID==canvas.publicSID) {
+	            canvas.setAttribute("micMuted",roomClientObj.micMuted);
+	        }
+	        
+	        canvas._videocontainer.updateMuteStatusVideoView(roomClientObj);
+	        
+	        //Notify all Listeners for change of the item
+	        canvas.setAttribute("micMutedStatusChangedItem",roomClientObj);
+	    ]]>
+	</method>
+	
+	<method name="addFolderSequence" args="foldername">
+	    <![CDATA[
+	    this.uploadmoduleimgfolder = '/';
+	    this.uploadmoduleimgfolder += foldername;
+	    this.setAttribute('uploadmoduleimgfolder',this.uploadmoduleimgfolder);
+	    ]]>
+	</method>
+	    
+	    
+	<!-- country validation -->
+	<method name="validateCountry" args="str">
+	    ////Debug.write("validateCountry: ",str);
+	    str = str.toLowerCase();
+	    <![CDATA[
+	        if (str.length!=0){
+	            var a = new Array();
+	            for (var i=0;i<canvas.statesInitValues.length;i++){
+	                var st = canvas.statesInitValues[i].name.toLowerCase();
+	                if (st.startsWith(str))a.push(canvas.statesInitValues[i]);
+	                //this.addItem(canvas.statesInitValues[i].name,canvas.statesInitValues[i].state_id);
+	            }
+	            return a;
+	        }
+	    ]]> 
+	</method>
+	    
+	<method name="getCountryRecord" args="id">
+	    return canvas.statesInitValues[id];
+	</method>
+	    
+	<handler name="onmousewheeldelta" reference="lz.Keys" args="d">
+	    var obj = getCurrentMouseWheelObject();
+	    ////Debug.write("onmousewheeldelta 12: ",d,obj);
+	    <![CDATA[
+	        if (obj!=null) {
+	            obj.step(-d);
+	        }
+	    ]]>
+	</handler>    
+	
+	<method name="reverseWordingsBySplit" args="str">
+	    <![CDATA[
+	        var words_arr = str.split( " " ); // an array of chars
+	        for ( var i = 0, str = ""; i < words_arr.length; i++ ) // reverse their order
+	        {
+	            str += words_arr[ words_arr.length - i - 1 ];
+	            if (words_arr.length != 1) {
+	                str += " ";
+	            }
+	        }
+	        return str;
+	        
+	    ]]>
+	</method> 
+	
+	<method name="reverseAll" args="str">
+	    <![CDATA[
+	        var words_arr = str.split( "" ); // an array of chars
+	        for ( var i = 0, str = ""; i < words_arr.length; i++ ) // reverse their order
+	        {
+	            str += words_arr[ words_arr.length - i - 1 ];
+	            
+	        }
+	        return str;
+	        
+	    ]]>
+	</method> 
+	    
+	<method name="reverseWords" args="str">
+	    <![CDATA[
+	        if ( str == "" || str == null ) return ""; // undefined
+	        // first char indicates the main directive of str (rtl/ltr)
+	        if ( isLTR( str.charCodeAt( 0 ) ) ) return str; // english or number
+	        var words_arr = str.split( "" ); // an array of chars
+	        for ( var i = 0, str = ""; i < words_arr.length; i++ ) // reverse their order
+	            str += words_arr[ words_arr.length - i - 1 ];
+	        return str;
+	    ]]>
+	</method>
+	    
+	<method name="isLTR" args="c">
+	    <![CDATA[
+	        return ( c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 );
+	    ]]>
+	</method>
+	
+	<method name="isHEB" args="c">
+	    <![CDATA[
+	        return ( c >= 224 && c <= 250 );
+	    ]]>
+	</method>    
+	
+	<method name="setTextAlign" args="obj,type">
+	    switch ( type ) {
+	        case "left" :
+	            obj.setX( 0 );
+	        break;
+	        case "center" :
+	            obj.setX( this.parent.width / 2 - this.getTextWidth() / 2 );
+	        break;
+	        case "right" :
+	            obj.setX( this.parent.width - this.getTextWidth() );
+	        break;
+	    }
+	</method>  
+	
+	<method name="initSharedObject">
+	    if (canvas.sharedObject == null) {
+	        if($debug) Debug.write("canvas.initSharedObject sharedObject IS null");
+	        canvas.sharedObject = new lz.sharedObject();
+	        canvas.sharedObject.getLocal('userdata');
+	    }
+	</method>
+	
+	<method name="getUserData">
+	    canvas.initSharedObject();
+	    var g = canvas.sharedObject.getData('userdata');
+	    if (g==null) {
+	        if($debug) Debug.write("sharedObject.getData IS null");
+	        g = new Array();
+	    }
+	    return g;
+	</method>
+	
+	<method name="setUserData" args="g">
+	    canvas.initSharedObject();
+	    canvas.sharedObject.setData('userdata', g);
+	    canvas.sharedObject.flush();
+	</method>
+	
+	<attribute name="regExpCounter" value="0" type="number" />
+	<attribute name="regExpResultArray" value="null" />
+	
+	<method name="doRegExpCheck" args="fieldValue,regExpV">
+		this.regExpCounter = this.regExpCounter +1;
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "regExpTest", [fieldValue, regExpV, this.regExpCounter]);
+		return this.regExpCounter;
+	</method>
+	
+	<method name="regExpResult" args="tId,tResult">
+		if (this.regExpResultArray == null) {
+			this.regExpResultArray = new Array();
+		}
+		this.regExpResultArray[tId] = tResult;
+		if ($debug) Debug.write("regExpResult ",tId,tResult);
+	</method>
+	
+	<method name="checkRegExpResult" args="tId">
+		return this.regExpResultArray[tId];
+	</method>
+	
+	
+	<method name="getThemeImage" args="tName">
+		//if ($debug) Debug.write("load Image by Name: ",tName);
+		var tPath = canvas.mainTheme.getPointer().xpathQuery("theme/resource[@name='"+tName+"']/@src");
+		//if ($debug) Debug.write("tPath "+tPath);
+		if (tPath == null) {
+			if ($debug) Debug.warn("getThemeImage - No Image found for config: ",tName);
+		}
+		return tPath;
+	</method>
+	
+	<method name="getThemeColor" args="tColor">
+		//if ($debug) Debug.write("load Color by Name: ",tColor);
+		var tResColor = canvas.mainTheme.getPointer().xpathQuery("theme/color[@name='"+tColor+"']/@value");
+		//if ($debug) Debug.write("tColor "+tColor);
+		if (tResColor == null) {
+			if ($debug) Debug.warn("getThemeColor - No Color found for config: ",tColor);
+		}
+		return tResColor;
+	</method>
+	
+	<method name="setBaseColors">
+		defaultstyle.setAttribute("basecolor",canvas.getThemeColor('basebgcolorizer'));
+		itemStyle.setAttribute("basecolor",canvas.getThemeColor('basebgcolorizer'));
+		menuStyle.setAttribute("basecolor",canvas.getThemeColor('styleMenuBarBaseColor'));
+		_conferencemenu.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+		_mainbgcontentNavi.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+		main_content.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+	</method>
+
+	<method name="getPictureUrl" args="pictureuri,extraParams">
+	<![CDATA[
+		var pUri = (pictureuri == null || pictureuri.length == 0) ? "d.jpg" : pictureuri;
+		var downloadurl = pUri;
+		if (!pUri.startsWith("http://") && !pUri.startsWith("https://")) {
+			pUri = "_profile_" + pUri;
+			
+			downloadurl = canvas.getUrl() + 'DownloadHandler?fileName=' + pUri
+				+ '&parentPath=&room_id=&r=' + (new Date()).getTime()
+				+ extraParams + '&sid='+canvas.sessionId;
+		}
+		if($debug) Debug.write("getPictureUrl/downloadurl ", downloadurl);
+		return downloadurl;
+	]]>
+	</method>
+		
+	<method name="sendViaLocalConnection" args="lc_name,methodName,tArray">
+		//if ($debug) Debug.info("sendViaLocalConnection ",lc_name,methodName); //,tArray
+		if (tArray == null || tArray.length == 0) {
+			canvas.lc.send(lc_name,methodName);
+		} else if (tArray.length == 1) {
+			canvas.lc.send(lc_name,methodName,tArray[0]);
+		} else if (tArray.length == 2) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1]);
+		} else if (tArray.length == 3) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2]);
+		} else if (tArray.length == 4) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3]);
+		} else if (tArray.length == 5) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4]);
+		} else if (tArray.length == 6) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4],tArray[5]);
+		} else if (tArray.length == 7) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4],tArray[5],tArray[6]);
+		} else if (tArray.length == 8) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4],tArray[5],tArray[6],tArray[7]);
+		} else if (tArray.length == 9) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4],tArray[5],tArray[6],tArray[7],tArray[8]);
+		} else if (tArray.length == 10) {
+			canvas.lc.send(lc_name,methodName,tArray[0],tArray[1],tArray[2],tArray[3],tArray[4],tArray[5],tArray[6],tArray[7],tArray[8],tArray[9]);
+		} else {
+			if ($debug) Debug.error("tArray in sendViaLocalConnection longer then allowed")
+		}
+	</method>
+	
+	<method name="getNotNullString" args="value">
+		return value == null ? '' : value;
+	</method>
+	
+	<method name="isRemoteUser" args="">
+		return canvas.isinitRoomDirect || canvas.remoteUserLogin || canvas.directUserLogin || canvas.secureRemoteUserLogin;
+	</method>
+</library>
diff --git a/WebContent/src/base/moduleConfiguration.lzx b/WebContent/src/base/moduleConfiguration.lzx
new file mode 100644
index 0000000..bd191eb
--- /dev/null
+++ b/WebContent/src/base/moduleConfiguration.lzx
@@ -0,0 +1,64 @@
+<?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.
+  
+-->
+
+<library>
+<!-- 
+##########################################################
+these properties can be overwritten by public/config.xml -->  
+   
+   
+<!-- #############################################
+    Moderator Modules
+ -->
+
+<attribute name="moderatorModuleUser" value="userModerate" type="string" />
+
+<attribute name="moderatorModuleRoom" value="roomModerate" type="string" />
+
+
+<!-- #############################################
+    Conference Room
+ -->
+
+<attribute name="conferenceRoom" value="conferenceView" type="string" />
+
+
+<!-- #############################################
+    Restricted Room
+    
+    Room Layouts: flexibleRestrictedConferenceRoom,restrictedConferenceRoom
+ -->
+<attribute name="restrictedRoomModule" value="restrictedConferenceRoom" type="string" />
+
+<!-- #############################################
+    Custom Room
+ -->
+
+<attribute name="customRoomModule" value="flexibleCustomRoom" type="string" />
+
+<!-- #############################################
+    Event Room
+    
+    Room Layouts: interviewConferenceRoom
+ -->
+<attribute name="interviewRoomModule" value="interviewConferenceRoom" type="string" />
+
+</library>
diff --git a/WebContent/src/base/navi/library.lzx b/WebContent/src/base/navi/library.lzx
new file mode 100644
index 0000000..8d54b39
--- /dev/null
+++ b/WebContent/src/base/navi/library.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+    
+    <!-- 
+    Icon from FamFam Icon Set
+     -->
+    <resource name="bullet_arrow_down_rsc">
+    	<frame src="resources/bullet_arrow_down.png" /> 
+    	<frame src="resources/bullet_arrow_down_dark.png" /> 
+    </resource>
+    
+    <include href="mainNavi.lzx" />
+
+</library>
diff --git a/WebContent/src/base/navi/mainNavi.lzx b/WebContent/src/base/navi/mainNavi.lzx
new file mode 100644
index 0000000..48a21b3
--- /dev/null
+++ b/WebContent/src/base/navi/mainNavi.lzx
@@ -0,0 +1,231 @@
+<?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.
+  
+-->
+<library>
+
+<class name="textBoxSubBlank" extends="text" text="$once{ parent.text }"
+    fgcolor="0x000000" fontstyle="bold"
+        fontsize="14" y="6" x="10" />
+
+
+<class name="baseDropDownMenuListItem" extends="view" height="36">
+
+    <attribute name="action" value="" type="string" />
+    <attribute name="params" value="" type="string" />
+    <attribute name="isopen" value="false" type="boolean" />
+    <attribute name="isleaf" value="false" type="boolean" />
+    <attribute name="list" value="null" />
+    <attribute name="textvalue" value="" type="string" />
+    <attribute name="selected" value="false" type="boolean" />
+    <attribute name="textToolTip" value="" type="string" />
+    
+    <attribute name="isSpacer" value="false" type="boolean" />
+    <attribute name="text" value="" type="string" />
+    
+    <handler name="onmouseover">
+        this._bg.setAttribute("visibility","visible");
+    </handler>
+    
+    <handler name="onmouseout">
+        this._bg.setAttribute("visibility","hidden");
+    </handler>
+
+    <view name="_bg" visibility="hidden" width="${ parent.width-2 }" y="0" x="1"
+          bgcolor="0xFFFFFF" opacity="0.5" height="36" />
+    
+    <text text="$once{ parent.text }" name="_ctext" fontstyle="bold" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"
+        	fontsize="14" y="2" x="10" />
+        	
+    <text text="$once{ parent.textToolTip }" name="_ctextTooltip" fontstyle="plain" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"
+        	fontsize="10" y="20" x="10" />	
+   
+</class>
+
+<class name="dropDownMenuListItem" extends="baseDropDownMenuListItem" >
+
+    <handler name="onclick">
+        loadContent(this,null,null);
+        parent.parent.close();
+    </handler>
+    
+</class>
+
+<class name="horizontalDropDownSpacer" x="4" height="1" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }">
+	<attribute name="isSpacer" value="true" type="boolean" />
+</class>
+
+<class name="baseDropDownMenuList" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }">
+		
+	<attribute name="list" value="null" />
+	
+	<attribute name="btnRef" value="null" />
+	
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+	</handler>
+	
+	<!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+           if ( eventStr == "onmousedown"  ){
+               if ( view != null ) {
+                  if ( !view.childOf(this) ) {
+                       this.close();
+                  }
+               } else {
+                   this.close();
+               }
+           }
+           if (view && view.childOf(this)) {
+               if (view[ eventStr ]) {
+                   view[ eventStr ].sendEvent( view );
+               }
+               return false;
+           }
+          return true;
+       ]]> 
+    </method>  
+    
+	<method name="close">
+		this.btnRef.setAttribute("selected",false);
+		lz.ModeManager.release(this);
+		this.destroy();
+	</method>
+	
+	<method name="fixWidth">
+		<![CDATA[
+            //the second round goes through the list of items, as 
+            //now the maxwidth is detected we adjust the rest to it
+            var maxWidth = 0;
+            for (var i=0;i<this._content.subviews.length;i++) {
+            	if (this._content.subviews[i].width > maxWidth) {
+            		maxWidth = this._content.subviews[i].width;
+            	}
+            }
+            //add a little bit of spacing at the end
+            maxWidth += 10;
+            
+            for (var i=0;i<this._content.subviews.length;i++) {
+            	if (this._content.subviews[i].isSpacer) {
+            		this._content.subviews[i].setAttribute("width",maxWidth-8);
+            	} else {
+            		this._content.subviews[i].setAttribute("width",maxWidth);
+            	}
+            }
+		]]>
+	</method>
+
+</class>
+
+<class name="dropDownMenuList" extends="baseDropDownMenuList"
+		height="${ this._content.height+2 }" width="${ this._content.width+2 }">
+		
+	<handler name="oninit">
+		<![CDATA[
+			if (this.list == null) {
+				return;
+			}
+			for (var i=0;i<this.list.length;i++) {
+				if (i!=0) {
+					new lz.horizontalDropDownSpacer(this._content);
+				}
+                new lz.dropDownMenuListItem(this._content,{
+                			textvalue:this.list[i].name,
+                			text:this.list[i].label.value,
+                			isopen:this.list[i].isopen,
+                			isleaf:this.list[i].isleaf,
+                			action:this.list[i].action,
+                			params:this.list[i].params,
+                			textToolTip:list[i].tooltip.value
+               			});
+            }
+            
+            this.fixWidth();
+		]]>
+	</handler>	
+	
+	<view name="_content" x="1" y="1" 
+			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" />
+		
+</class>
+
+<class name="baseMenuMeetingsItem" extends="view" height="34"
+    width="${ this._ctext.width+36 }" >
+
+    <attribute name="action" value="" type="string" />
+	<attribute name="text" value="" type="string" />
+    <attribute name="textToolTip" value="" type="string" />
+    <attribute name="_menuRef" value="null" />
+    <attribute name="isopen" value="false" type="boolean" />
+    <attribute name="isleaf" value="false" type="boolean" />
+    <attribute name="list" value="null" />
+    <attribute name="textvalue" value="null" />
+    <attribute name="selected" value="false" type="boolean" />
+    
+    <attribute name="text_y_inset" value="6" type="number" />
+    <attribute name="text_fontsize" value="14" type="number" />
+    
+    <attribute name="down_y_inset" value="10" type="number" />
+    
+    <handler name="onmouseover">
+        if (!this.selected){
+            this.bgc.setAttribute('visibility','visible');
+        }
+    </handler>
+    <handler name="onmouseout">
+        if (!this.selected){
+            this.bgc.setAttribute('visibility','hidden');
+        }
+    </handler>
+    
+    <handler name="onselected" args="tSelect">
+    	this.selected = tSelect;
+    	if (tSelect) {
+    		this._icon_down.setAttribute("frame",2);
+    		this.bga.setAttribute("visibility","visible");
+    		this._ctext.setAttribute("fgcolor",0x000088);
+    	} else {
+    		this._icon_down.setAttribute("frame",1);
+    		this.bgc.setAttribute("visibility","hidden");
+    		this.bga.setAttribute("visibility","hidden");
+    		this._ctext.setAttribute("fgcolor",0xFFFFFF);
+    	}
+    </handler>
+    
+    <view width="${ parent.width-1 }" bgcolor="0xFFFFFF" opacity="0.4" height="$once{ parent.height - 2}" y="1"
+        visibility="hidden" name="bgc"/>
+        
+    <view width="${ parent.width-1 }" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" height="$once{ parent.height }" 
+        visibility="hidden" name="bga">
+        <view width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+    </view>
+    
+    <view name="_icon_down" x="${ parent.width-20 }" y="$once{ parent.down_y_inset }" 
+    			resource="bullet_arrow_down_rsc" frame="1" />  
+    
+    <view width="1" height="${ parent.height }" y="0" bgcolor="0xEEEEEE" x="${ parent.width-1 }" />
+    <text text="$once{ parent.text }" name="_ctext" fontstyle="plain" fgcolor="0xFFFFFF"
+        	fontsize="$once{ parent.text_fontsize }" y="$once{ parent.text_y_inset }" x="10" />
+
+    <labelTooltip name="_textToolTip" text="$once{ parent.textToolTip }" multiline="false" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/base/navi/resources/bullet_arrow_down.png b/WebContent/src/base/navi/resources/bullet_arrow_down.png
new file mode 100644
index 0000000..9b23c06
--- /dev/null
+++ b/WebContent/src/base/navi/resources/bullet_arrow_down.png
Binary files differ
diff --git a/WebContent/src/base/navi/resources/bullet_arrow_down_dark.png b/WebContent/src/base/navi/resources/bullet_arrow_down_dark.png
new file mode 100644
index 0000000..b5504f8
--- /dev/null
+++ b/WebContent/src/base/navi/resources/bullet_arrow_down_dark.png
Binary files differ
diff --git a/WebContent/src/base/remote/datasetHelper.lzx b/WebContent/src/base/remote/datasetHelper.lzx
new file mode 100644
index 0000000..5d7cf22
--- /dev/null
+++ b/WebContent/src/base/remote/datasetHelper.lzx
@@ -0,0 +1,57 @@
+<?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.
+  
+-->
+<library>
+	<class name="datasetHelper">
+		<attribute name="successHandler" type="object" />
+		
+		<dataset name="restdataset" type="http">
+			<handler name="ondata" args="d">
+			<![CDATA[
+				//Make sure any cursor status is reset
+				lz.Cursor.restoreCursor();
+				lz.Cursor.showHandCursor(true);
+				if ($debug) Debug.write("restdataset ondata", d);
+				
+				if (typeof parent.successHandler != undefined && parent.successHandler != undefined && parent.successHandler != null) {
+					parent.successHandler(parent.parent, d);
+				}
+			]]>
+			</handler>
+		</dataset>
+		
+		<method name="call">
+			if ($debug) Debug.write("this.restdataset ",this.restdataset);
+			this.restdataset.doRequest();
+		</method>
+		
+		<method name="setServiceSource" args="m,o">
+		<![CDATA[
+			var params = "?SID=" + canvas.sessionId;
+			if (o) {
+				for (var key in o) {
+					params += "&" + encodeURIComponent(key) + "=" + encodeURIComponent(o[key]);
+				}
+			}
+			this.restdataset.setAttribute("src", canvas.getServicesUrl() + m + params);
+		]]>
+		</method>
+	</class> 
+</library>
\ No newline at end of file
diff --git a/WebContent/src/base/remote/library.lzx b/WebContent/src/base/remote/library.lzx
new file mode 100644
index 0000000..e76368e
--- /dev/null
+++ b/WebContent/src/base/remote/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="datasetHelper.lzx" />
+	<include href="rtmpConnection.lzx" />
+	<include href="sharedObject.lzx" />
+    
+</library>
diff --git a/WebContent/src/base/remote/rtmpConnection.lzx b/WebContent/src/base/remote/rtmpConnection.lzx
new file mode 100644
index 0000000..120c3b8
--- /dev/null
+++ b/WebContent/src/base/remote/rtmpConnection.lzx
@@ -0,0 +1,334 @@
+<!--
+  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.
+  
+-->
+<library>
+
+
+<class name="rtmpConnection" extends="node">
+    	
+    	<attribute name="debug" value="false" type="boolean" />
+    	
+    	<event name="onconnect"/>
+    	<event name="onerror"/>
+    	<event name="ondisconnect" />
+        
+        <!-- this attribute holds a reference to the current/last called netremoteCall,
+        in case of error you can debug that way which call did fail -->
+        <attribute name="lastCalled" value="null" />
+    	
+    	<attribute name="src" value="" type="string"/>
+    	
+		<method name="connect">
+            this._nc = new NetConnection();
+
+            // local reference to rtmpconnection
+            this._nc.t = this;     
+            
+            this._nc.proxyType = canvas.proxyType;
+            
+            var ok = this._nc.connect(src == "null" ? null : src, false); //isAVClient = false
+            if (this.debug) {
+            	if($debug) Debug.write("*** debug ***");
+            }
+            
+            //canvas.currentNC is the reference to the NetConnection that is used in the NetStream
+            canvas.currentNC = this._nc;
+            
+            this._nc.onStatus = function(info){
+                this.t._onStatus(info);
+            }
+            
+    		if($debug) Debug.write("devRtmpConnection/registerMethods()");
+			//Register Methods
+			this.registerMethods();    	            
+		</method>
+		
+        <method name="_onStatus" args="info"><![CDATA[
+            if (this.debug) {
+                Debug.write("devrtmpconnection", this, "_onStatus", info.code);
+            }
+
+            var msg = "";
+
+            switch (info.code) {
+
+                case "NetConnection.Connect.Success": {
+                    // The connection attempt succeeded.
+                    msg = info.code;
+                    s = 2;
+                    break;
+                }
+
+                default: {
+                    msg = info.code;
+                    s = 0;
+                    break;
+                }
+
+            }
+
+            this.setAttribute("status", msg);
+
+            if (s == 2) {
+                this.onconnect.sendEvent();
+            } else {
+            	this.onerror.sendEvent();
+            }
+
+          ]]>
+        </method>	
+        
+        <method name="disconnect">
+            this.ondisconnect.sendEvent();
+        	canvas.currentNC = null;
+            this._nc.close();
+        </method>
+    <!--- 
+        With this function all methods are registered to the NetConnection
+        A server can invoke this Method with a call for it from the Client
+        Only subnodes of rtmpconnections which are a instance of netRemoteCallHib
+        are registered, to add dynamically methods to the remotefunction you will
+        have to invoke this method once again
+        -swagner
+     -->
+	<method name="registerMethods">
+	<![CDATA[
+		if (this.subnodes != null) {
+			//Register all methods which are instanceof netRemoteCallHib
+			for (var i = 0; i < this.subnodes.length; ++i) {
+				//If it is of Type netRemoteCallHib then register it to the NetConnection
+				if (this.subnodes[i] instanceof lz.netRemoteCallHib) {
+					this._nc[this.subnodes[i].funcname] = function(args) {
+						return hib.remoteCallMethod(arguments.callee, arguments);
+					}
+				}
+			}
+		}
+	]]>
+	</method>
+    
+    <!-- 
+        Process the RemoteCall to the Right Funtion
+        -swagner
+     -->
+    <method name="remoteCallMethod" args="callee,args">
+        <![CDATA[
+            for (var eg in this._nc){
+                if (this._nc[eg]==callee){
+                    if (this.debug) {
+                        //_root.Debug.write.write("DEBUG invoked a function remotely: ",eg,args);
+                    }    
+                    if (args.length == 1) {
+                        return this.callFuntion(eg,args[0]);
+                    } else {
+                        return this.callFuntion(eg,args);
+                    }
+                    //return this.callFuntion(eg,args);
+                }
+            }
+        ]]>
+    </method>
+    
+    <!-- 
+        Map the Function to a netRemoteCallHib
+        -swagner
+     -->
+    <method name="callFuntion" args="funcname,args">
+        <![CDATA[
+            for (var i=0;i<this.subnodes.length;i++){
+                if (this.subnodes[i].funcname==funcname){
+                    return this.subnodes[i].onResult(args);
+                }
+            }
+        ]]>
+    </method>		
+    
+    <method name="callRPC" args="func, obj, params">
+    	if (this.debug) Debug.write("*** call: func, obj, params",func,obj, typeof (params) ,params.length);
+    	if (params.length != 0){
+	    	//does this really work?
+	    	ASSetPropFlags(_global, null, 8, 1);
+	    	//Debug.write("does it work?",arguments);
+	    	<!--
+	    	this._nc.call.apply(this._nc,arguments);
+	    	 -->
+			if (params.length==1){
+			    this._nc.call(func, obj,params[0]);
+			} else if (params.length==2){
+			    this._nc.call(func, obj,params[0],params[1]);
+			} else if (params.length==3){
+			    this._nc.call(func, obj,params[0],params[1],params[2]);
+			} else if (params.length==4){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3]);
+			} else if (params.length==5){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4]);
+			} else if (params.length==6){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5]);
+			} else if (params.length==7){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
+			} else if (params.length==8){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7]);
+			} else if (params.length==9){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8]);
+			} else if (params.length==10){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9]);
+			} else if (params.length==11){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10]);
+			} else if (params.length==12){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11]);
+			} else if (params.length==13){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12]);
+			} else if (params.length==14){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13]);
+			} else if (params.length==15){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14]);
+			} else if (params.length==16){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15]);
+			} else if (params.length==17){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16]);
+			} else if (params.length==18){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17]);
+			} else if (params.length==19){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17],params[18]);
+			} else if (params.length==20){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17],params[18],params[19]);
+			}	    	 
+        } else {
+            this._nc.call(func, obj);
+        }
+    </method>
+    
+</class>
+
+
+    <!---
+        Net remote call. 
+        @todo Document netremotecall class.
+    -->
+    <class name="netremotecall" extends="node">
+
+
+        <!--- Name of the remote function. -->
+        <attribute name="funcname" value="$once{null}" type="string" />
+    
+        <attribute name="remotecontext" value="null" />
+    
+        <attribute name="dataobject" value="null" />
+		
+        <!--- Data handling event. args="value" 
+        @keywords private  -->
+        <event name="ondata" />
+
+        <!--- Error handling event. -->
+        <event name="onerror"/>
+
+        <!--- Call the remote method, passing the array of params. -->
+        <method name="callRPC" args="params"><![CDATA[
+            if (this.funcname == null) {
+                //Debug.write("No funcname given");
+                if (this.onerror) this.onerror.sendEvent("No funcname given");
+                return;
+            }
+
+            if (params == null) {
+                params = [];
+
+                var subnodes = this.subnodes;
+                if (subnodes != null) {
+                    var i;
+                    var n = subnodes.length;
+                    for (i = 0; i < n; i++) {
+                        // If getValue method is declared in param, call that
+                        // instead to get value.
+                        var tsi = subnodes[i];
+                        if ((tsi["getValue"] != null) && 
+                            (tsi.getValue["prototype"] != null)) {
+                            params[i] = tsi.getValue();
+                        } else {
+                            params[i] = tsi.value;
+                        }
+                    }
+                }
+
+            } else if (params.__proto__ != Array.prototype) {
+                //Debug.write(this.name, "error: first argument (params) is not an array");
+                return -1;
+            }
+
+            //if ($debug) Debug.write("call", this, this.parent, this.parent.status);
+            var rtmpObject = null;
+            if (this.parent instanceof lz.rtmpConnection){
+        	    rtmpObject = this.parent;
+            } else if(this.remotecontext  instanceof lz.rtmpConnection){
+        	    rtmpObject = this.remotecontext;
+            } else {
+        	    if ($debug) Debug.warn("ERROR: no remotecontext availible abort call", this.funcname, this);
+        	    return;
+            }
+        	//Debug.write('call', this, rtmpObject, rtmpObject.status);
+        	//Debug.write('call', this.remotecontext);
+            if (rtmpObject.debug) Debug.write('call', this, rtmpObject, rtmpObject.status);
+            rtmpObject.lastCalled = this;
+            rtmpObject.callRPC(this.funcname, this, params);
+
+          ]]>
+        </method>
+
+
+        <!--- Handle the result returned from the remote method. -->
+        <method name="onResult" args="value"><![CDATA[
+            // Can be overriden.
+            // Would be great if it can be used with dataobject,
+            // but I don't know how to convert Array/primitive to LzDataset/LzDataPointer.
+            ////Debug.write("netremotecall", this, "onResult", value);
+
+            if (this.dataobject!=null) {
+                if ( this.dataobject instanceof LzDataset ) {
+                    //Debug.write("onResult: ",this,value,dataobject);
+                    var element = LzDataElement.valueToElement(value);
+                    this.dataobject.setData(element.childNodes);
+                } else if ( this.dataobject instanceof LzDataElement ) {
+                    var element = LzDataElement.valueToElement(value);
+                    this.dataobject.appendChild( element );
+                } else {
+                    Debug.warn("dataobject is not LzDataset or LzDataElement: ",this,this.dataobject,delegate);
+                }
+            }
+            this.ondata.sendEvent(value);		
+          ]]>
+        </method>
+
+
+    </class>
+
+
+    <!---
+        Net parameter.
+        Element to use inside netremotecall.
+        @todo Document netparam class.
+    -->
+    <class name="netparam" extends="node">
+
+        <!--- The value of the netparam. -->
+        <attribute name="value" value="null"/>
+
+    </class>
+
+
+</library>
diff --git a/WebContent/src/base/remote/sharedObject.lzx b/WebContent/src/base/remote/sharedObject.lzx
new file mode 100644
index 0000000..36da568
--- /dev/null
+++ b/WebContent/src/base/remote/sharedObject.lzx
@@ -0,0 +1,95 @@
+<?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.
+  
+-->
+<library>
+
+<class name="sharedObject" extends="node">
+
+	<attribute name="so" value="null" />
+	<attribute name="onStatus" value="null" />
+	
+
+	<method name="connect" args="so_Name,nc,persistant">
+
+		//Debug.write("connect SharedObject: ",nc.uri);
+		this.so = SharedObject.getRemote(so_Name,nc.uri,persistant); 
+		
+		var t = this;
+		this.so.onSync = function (evtObj){
+			if (t.onStatus)t.onStatus.sendEvent(evtObj);
+			//_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+		}
+		
+		this.so.connect(nc);
+		
+	</method>
+	
+    
+    <method name="getRemote" args="so_Name,nc,persistant">
+
+        //Debug.write("connect SharedObject: ",nc.uri);
+        this.so = SharedObject.getRemote(so_Name,nc.uri,persistant); 
+
+        var t = this;
+        this.so.onSync = function (evtObj){
+            if (t.onStatus)t.onStatus.sendEvent(evtObj);
+            //_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+        }
+    </method>
+    
+    <!--- create Object if not existing  -->
+    <method name="getLocal" args="name">
+
+        this.so = SharedObject.getLocal(name); 
+
+        var t = this;
+        this.so.onSync = function (evtObj){
+            if (t.onStatus)t.onStatus.sendEvent(evtObj);
+            //_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+        }
+        
+    </method>
+    
+    <!--- 
+        force write to disk
+        @return true(success) false(User has forbidden to store data local)
+      -->
+    <method name="flush">
+        return this.so.flush();
+    </method>
+
+    <method name="getData" args="key">
+        if (this.so.data["key"] == undefined){
+            return null;
+           //_root.Debug.write.write("key undefined",key);
+        } else {
+            return this.so.data["key"];
+        }
+    </method>
+	
+    <method name="setData" args="key,val">
+    	//Debug.write("this...... so: ",this.so);
+        this.so.data["key"] = val;
+    </method>
+
+		
+</class>
+
+</library>
diff --git a/WebContent/src/broadcast.lzx.lzr=swf8.swf b/WebContent/src/broadcast.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..95cdc24
--- /dev/null
+++ b/WebContent/src/broadcast.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/classintro.swf b/WebContent/src/classintro.swf
new file mode 100644
index 0000000..0d0ee92
--- /dev/null
+++ b/WebContent/src/classintro.swf
Binary files differ
diff --git a/WebContent/src/confintro.swf b/WebContent/src/confintro.swf
new file mode 100644
index 0000000..6b4505c
--- /dev/null
+++ b/WebContent/src/confintro.swf
Binary files differ
diff --git a/WebContent/src/main.lzx b/WebContent/src/main.lzx
new file mode 100644
index 0000000..affaa1c
--- /dev/null
+++ b/WebContent/src/main.lzx
@@ -0,0 +1,183 @@
+﻿<?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.
+  
+-->
+<canvas width="100%" height="100%" title="OpenMeetings">
+<switch>
+	<when property="$debug">
+		<method name="doDebugInit">
+			canvas.setAttribute('debug', true);
+		</method>
+		<debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="0" height="50%" />
+	</when>
+	<otherwise>
+		<method name="doDebugInit">
+		</method>
+	</otherwise>
+</switch>    
+     
+<include href="incubator/lzcombobox.lzx" />
+<include href="incubator/shadowbox.lzx" />
+
+<include href="resources/" /> 
+<include href="base/" /><!-- attributes,methods,datasets,are moved into /base -->
+<include href="modules/" />
+<include href="plugins/" />  
+
+<silverstyle name="defaultstyle" isdefault="true" canvascolor="white" />
+
+<silverstyle name="componentStyle" basecolor="0xFFFFFF" textcolor="0x000000" />
+
+<silverstyle name="itemStyle" textcolor="0xFFFFFF" />
+
+<whitestyle name="menuStyle" textcolor="0x000000" />
+             
+
+<!-- main colors: 264269 -->
+<handler name="oninit">
+	flash.external.ExternalInterface.call("loadingComplete");
+	doDebugInit();
+    var cmenu = new LzContextMenu();
+    canvas.setDefaultContextMenu(cmenu);
+    cmenu.hideBuiltInItems();
+    if($debug) Debug.write("main.lzx/oninit:",this);
+    canvas.lc = new LocalConnection();
+
+	getTimeZoneOffset(this);
+</handler>
+
+<handler name="onerror" args="errmsg">
+	canvas.remoteLogWrite("error " + errmsg);
+</handler>
+
+<method name="callback" args="returnValue">
+    if ($debug) Debug.write("getTimeZoneOffset callback ",returnValue);
+            
+    canvas.stdTimeOffset = Number(returnValue);
+</method>
+
+<!-- View for Contents. All Windows will be loaded on this view. -->
+<view name="main_content" y="${ canvas.naviHeightDelta }" width="${canvas.width}" 
+			    height="${ canvas.height-canvas.naviHeightDelta }"
+			    visibility="hidden" showhandcursor="false">
+    
+    <handler name="onmouseover">
+        setCurrentMouseWheelObject(this._scrollbar);
+    </handler>
+    <handler name="onmouseout">
+        disableCurrentMouseWheelObject();
+    </handler>
+    
+    <view x="0" name="_content" >
+        <view name="inner" />
+        <method name="clearAll">
+            <![CDATA[
+                canvas.sendViaLocalConnection(canvas.vid_lc_name, "clearAll", null);
+                if($debug) Debug.write("main.lzx/main_content._content.inner.clearAll(): ",this.inner,this.inner.subviews.length);
+                if (this.inner.subviews != null) {
+                	if (this.inner.subviews[0] != null) {
+		                var baseContent = this.inner.subviews[0].close();
+		                for (var eg in this.inner.subviews) {
+		                    if($debug) Debug.write("main.lzx/main_content._content.inner.clearAll()-subviews: ",this.inner.subviews[eg]);
+		                    if (eg!=0) this.inner.subviews[eg].close();               
+		                }
+	                }
+                }
+                return baseContent;
+            ]]>
+        </method>
+    </view>
+    <om_hscrollbar name="_scrollbarH" id="_mainScrollHBar" visibility="hidden" />
+    <om_vscrollbar name="_scrollbar" id="_mainScrollBar" />
+</view>  
+  
+<!-- View for Navigation-bar and App-name -->
+<view name="_mainbgcontentNavi" x="0" y="0" clip="true"
+    width="100%" height="${ canvas.naviHeight }" visibility="hidden">
+    <image id="mainApplogo" visible="false" />
+    <text id="mainBaseText" visible="false"
+        fgcolor="${ canvas.fontColorHeader }" fontsize="20" fontstyle="bold">
+        <method name="setShadow" >
+            <![CDATA[
+            if (this.isinited && false){
+                this.normalMC = this.getDisplayObject();
+                this.displacementMap = new flash.filters.DropShadowFilter();
+                this.normalMC.filters = [this.displacementMap];
+            }
+            ]]>              
+        </method> 
+        <handler name="onclick">
+            lz.Browser.loadURL(canvas.currentappnameurl,"_blank");
+        </handler>  
+        <labelTooltip id="mainBaseTextLabel" />      
+    </text>
+    <handler name="oninit">
+        var cmenu = new LzContextMenu();
+        this.setContextMenu(cmenu);
+        cmenu.hideBuiltInItems();
+    </handler>     
+</view>
+
+<!-- View for Conference menu bar at the top side. Visible on conference -->
+<view name="_conferencemenu" y="0" x="0" width="100%" height="20" visibility="hidden" > 
+    <method name="removeAll">
+        <![CDATA[
+            if($debug) Debug.write("main.lzx/_coferencemenu.removeAll(): ");
+            while (this.subviews.length > 0) {
+                this.subviews[0].destroy();
+            }
+            parent._moderatormenu.removeAll();
+        ]]>
+    </method>
+</view> 
+
+<view name="_moderatormenu" y="0" x="0" width="100%" height="20">
+    <method name="removeAll">
+        <![CDATA[
+            if($debug) Debug.write("main.lzx/_moderatormenu.removeAll(): ");
+            while (this.subviews.length > 0) {
+                this.subviews[0].destroy();
+            }
+        ]]>
+    </method>
+</view>  
+    
+<!-- View for "Loading" -->
+<view name="_loadingAll" visible="false" opacity="0.7" 
+    width="${ canvas.width }" height="${ canvas.height }" 
+    bgcolor="0xFFFFFF" clickable="true" showhandcursor="false">
+    <method name="hideContentOnly">
+    	this.showLoadingAnni.setAttribute('started', true);
+        this.setAttribute("visibility","visible");
+        this._text.setAttribute("visibility","hidden");
+    </method>
+    <method name="showLoading">
+    	this.showLoadingAnni.setAttribute('started', true);
+        this.setAttribute("visibility","visible");
+        this._text.setAttribute("visibility","visible");
+    </method>
+    <method name="hideLoading">
+        this.setAttribute("visibility","hidden");
+    </method>
+    <animator name="showLoadingAnni" attribute="opacity" 
+    		from="0" to="0.7" started="false" duration="250" />
+    <text name="_text" align="right" y="56" fontsize="14" fgcolor="red">Loading...</text>
+</view>
+
+</canvas>
\ No newline at end of file
diff --git a/WebContent/src/modules/chat/chatBarMenu.lzx b/WebContent/src/modules/chat/chatBarMenu.lzx
new file mode 100644
index 0000000..92f2f30
--- /dev/null
+++ b/WebContent/src/modules/chat/chatBarMenu.lzx
@@ -0,0 +1,109 @@
+<?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.
+  
+-->
+<library>
+
+<class name="chatBarMenu" extends="view" width="${ parent.width }" x="0" 
+    height="20" layout="axis:x;spacing:1;inset:2" bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }">
+    
+    <attribute name="staticwidth" type="number" value="120" />
+    <attribute name="currentBtn" value="null" />
+    
+    <event name="onRemoveWindow" />
+    
+    <method name="getCurrentSize">
+        <![CDATA[
+            if ( ((this.subviews.length+1)*(this.staticwidth+1)) <= this.width) {
+                return this.staticwidth;
+            } else {
+                var newwidth = Math.round((this.width-this.subviews.length)/(this.subviews.length+1));
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',newwidth);
+                }
+                return newwidth;
+            }   
+        ]]>
+    </method>
+    
+    <handler name="onwidth">
+        <![CDATA[
+            if ( ((this.subviews.length)*(this.staticwidth+1)) <= this.width) {
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',this.staticwidth);
+                }
+            } else {
+                var newwidth = Math.round((this.width-this.subviews.length)/(this.subviews.length));
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',newwidth);
+                }
+            } 
+        ]]>
+    </handler>
+    
+    <method name="removeObject" args="btn">
+    	this.removeObjectSynced(btn);
+    	if ($debug) Debug.write("removeObject :: ",btn);
+    	this.onRemoveWindow.sendEvent(btn.objRef.refObj.publicSID);
+    </method>
+    
+    <method name="removeObjectSynced" args="btn">
+    	var removeCurrent = false;
+    	if (this.currentBtn == btn){
+    		removeCurrent = true;
+    	}
+    	btn.objRef.destroy();
+        btn.destroy();
+        if (this.subviews.length != 0) {
+	        if (removeCurrent) {
+	        	this.sendActiveWindowSynced(this.subviews[this.subviews.length-1]);
+	        }
+        }
+        
+    </method>
+
+    
+    <method name="sendActiveWindow" args="btn,win">
+        if ($debug) Debug.write("sendActiveWindow: ", btn, win);
+        this.sendActiveWindowSynced(btn);
+    </method>
+    
+    <method name="sendActiveWindowSynced" args="btn">
+    	<![CDATA[
+            if (this.currentBtn != null){
+                this.currentBtn.isactive=false;
+                this.currentBtn.objRef.setAttribute("visibility", "hidden");
+                if ($debug) Debug.write("sendActiveWindow1: ",this.currentBtn);
+                this.currentBtn._minimizebtn_mo.setAttribute('visibility','hidden');
+                this.currentBtn._minimizebtn_dn.setAttribute('visibility','hidden');
+            }
+            this.currentBtn = btn;
+            this.currentBtn.objRef.setAttribute("visibility","visible");
+        	this.currentBtn.objRef.bringToFront();
+            if ($debug)  //Debug.write("sendActiveWindow2: ",this.currentBtn);
+            this.currentBtn._minimizebtn_mo.setAttribute('visibility','hidden');
+            this.currentBtn._minimizebtn_dn.setAttribute('visibility','visible');
+            this.currentBtn.isactive=true;
+	       	this.currentBtn.objRef.sendActiveWindow();
+        ]]>
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/chatMiniButton.lzx b/WebContent/src/modules/chat/chatMiniButton.lzx
new file mode 100644
index 0000000..10e1bee
--- /dev/null
+++ b/WebContent/src/modules/chat/chatMiniButton.lzx
@@ -0,0 +1,171 @@
+<?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.
+  
+-->
+<library>
+
+<class name="chatMiniButton" extends="view" width="250" height="18" y="2"
+    bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+     
+    <attribute name="btnName" value="" type="string" />
+    <attribute name="objRef" value="null" />
+
+    <attribute name="zielx" value="200" type="number" />
+    <attribute name="zielwidth" value="100" type="number" />    
+    
+    <attribute name="isactive" value="true" type="boolean" />
+    
+    <attribute name="isHidden" value="false" type="boolean" />
+    
+    <attribute name="isClosable" value="true" type="boolean" />
+    
+    <handler name="oninit">
+        this.calcTextWidth();
+        parent.onwidth.sendEvent();
+    </handler>
+    
+    <handler name="onwidth">
+        if (this.isinited){
+            this.calcTextWidth();
+        }
+    </handler>
+    
+    <method name="disableItem">
+        //if ($debug) Debug.write("disableItem :: set visibility to hidden");
+        this.isHidden = true;
+        this.setAttribute("visibility","hidden");
+        //this.destroy();
+    </method>
+    
+    <method name="enableItem">
+        this.setAttribute("visibility","visible");
+        this.isHidden = false;
+    </method>
+    
+    <method name="calcTextWidth">
+        <![CDATA[
+            if (this.isHidden) {
+                return;
+            }
+            ////////if ($debug)  //Debug.write(this,this._text,this._text.getTextWidth());
+            if (this._text.getTextWidth()>(this.width-24)) {
+                this._long.setAttribute('visibility','visible');
+                this._text.setAttribute('width',this.width-26);
+            } else {
+                this._long.setAttribute('visibility','hidden');
+                this._text.setAttribute('width',this.width-18);
+            }
+        ]]>        
+    </method>
+        
+    <handler name="onclick">
+        if (this.isHidden) {
+            return;
+        }
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+        if ($debug) Debug.write(" :: onclick :: ");
+        this.sendActiveWindow(this.objRef);
+    </handler>
+    
+    <handler name="onmouseover">
+        if (this.isHidden) {
+            return;
+        }
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+    </handler>
+    <handler name="onmouseout">
+        if (this.isHidden) {
+            return;
+        }
+        if (this.isactive) {
+            this._minimizebtn_mo.setAttribute('visibility','hidden');
+            this._minimizebtn_dn.setAttribute('visibility','visible');
+        } else {
+            this._minimizebtn_mo.setAttribute('visibility','hidden');
+            this._minimizebtn_dn.setAttribute('visibility','hidden');
+        }        
+    </handler>
+    <handler name="onmousedown">
+        if (this.isHidden) {
+            return;
+        }        
+        this._minimizebtn_mo.setAttribute('visibility','hidden');
+        this._minimizebtn_dn.setAttribute('visibility','visible');
+    </handler>
+    <handler name="onmouseup">
+        if (this.isHidden) {
+            return;
+        }        
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+    </handler>
+    
+    <method name="sendActiveWindow" args="win">
+        this.parent.sendActiveWindow(this,win);
+    </method>    
+
+	<method name="activateSynced">
+		this.parent.sendActiveWindowSynced(this,win);
+	</method>
+    
+    <view name="_minimizebtn_mo" width="${ parent.width-2 }" height="16"
+        bgcolor="0xFFFFFF" opacity="0.3" visibility="hidden" x="1" y="1" />
+
+    <view name="_minimizebtn_dn" width="${ parent.width-2 }" height="16"
+        bgcolor="0x000000" opacity="0.3" visibility="hidden" x="1" y="1" />
+    
+
+    <text text="${ parent.btnName }" fgcolor="0xFFFFFF" resize="false" 
+        x="1" fontsize="10" name="_text" />
+    
+        <view y="1" x="${ parent.width-18 }" name="_close"
+            resource="btn_presenter_close"
+            visible="$once{ parent.isClosable }" 
+            onmouseover="this.setAttribute('frame',2)"
+            onmouseout="this.setAttribute('frame',1)"
+            onmousedown="this.setAttribute('frame',3)"
+            onmouseup="this.setAttribute('frame',1)" >
+            <handler name="onclick">
+                this.setAttribute('frame',2);
+                new lz.confirmationSingle(canvas,{
+                           refObj:this,
+                           labeliderror:1497,
+                           showCheckBox:false
+                        });
+            </handler>
+            <method name="sendConfirmation" args="bool,askAgain">
+                if (bool) {
+                    this.parent.parent.removeObject(this.parent);
+                }
+            </method>
+            <method name="sendNoConfirmation">
+            	
+            </method>
+            <labelTooltip text="close" />
+        </view>     
+ 
+    <text y="1" name="_long" text="..." 
+        x="${ parent.width-28 }" fontsize="10" />
+
+    <labelTooltip text="${ parent.btnName }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/chatParticipants.lzx b/WebContent/src/modules/chat/chatParticipants.lzx
new file mode 100644
index 0000000..8a3d179
--- /dev/null
+++ b/WebContent/src/modules/chat/chatParticipants.lzx
@@ -0,0 +1,139 @@
+<?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.
+  
+-->
+<library>
+	
+<!--- it shows chat participants. -->
+<class name="chatParticipants" extends="view" height="40" clickable="true"
+	   width="$once{ parent.width }" bgcolor="$once{ canvas.bgColorMenuItems }">
+	
+	<attribute name="user_id" value="0" type="number" />
+	<attribute name="username" value="" type="string" />
+	<attribute name="connectedSince" value="" type="string" />
+	<attribute name="publicSID" value="" type="string" />
+	
+	<attribute name="picture_uri" value="" type="string"/>
+	
+	<handler name="oninit">
+		<![CDATA[
+			if($debug) Debug.write("chatParticipants/picture_uri: ",this.picture_uri);
+            this._userpic.setAttribute('src', canvas.getPictureUrl(this.picture_uri, '&moduleName=chat')); 
+        ]]>
+	</handler>
+	
+	<!--
+    public Long requestUserToContactList(String SID, Long userToAdd_id, 
+                String domain, String port, String webapp)
+     -->
+    <netRemoteCallHib name="requestUserToContactList" funcname="userservice.requestUserToContactList" 
+                  remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >      
+        <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue"> return parent.parent.user_id; </method></netparam>
+        <netparam><method name="getValue"> return canvas.rtmphostlocal; </method></netparam>
+        <netparam><method name="getValue"> return canvas.red5httpport; </method></netparam>
+        <netparam><method name="getValue"> return canvas.httpRootKey; </method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("requestUserToContactList: ",value);
+                if (value > 0) {
+                    new lz.labelerrorPopup(canvas,{labelid:1267,errorlabelid:1266});
+                }
+            ]]>
+        </handler>
+    </netRemoteCallHib> 
+    
+    <view width="$once{ parent.width }" height="$once{ parent.height-1 }" 
+    	bgcolor="0xFFFFFF" opacity="0.2" />
+	
+	<image name="_userpic" stretches="both" x="1" y="1">
+		<handler name="onload">
+            <![CDATA[
+                if (this.height > 38) {
+                    //If bigger then containter then scale it
+                    var width = this.width/(this.height/38);
+                    this.setAttribute('height',38);
+                    this.setAttribute('width',width);
+                }
+            ]]>
+        </handler>
+	</image>
+	
+	<text text="$once{ parent.username }" x="40" resize="false"
+		  width="$once{ parent.width - 40 }" />	
+		  
+	<miniIconsImage name="add" src="$once{ canvas.getThemeImage('edit_add_rsc') }" width="16" height="16" 
+                   y="20" x="$once{ parent.width - 80 }" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Start Conference");
+            if (hib.userobject.user_id == parent.user_id) {
+                new lz.labelerrorPopup(canvas,{errorlabelid:1225});
+                return;
+            }
+            parent.requestUserToContactList.doCall();
+        </handler>
+        <labelTooltip labelid="1186" />
+    </miniIconsImage>
+    
+    <miniIcons name="private_message_add" resource="private_message_add_rsc" width="16" height="16" 
+                   y="20" x="$once{ parent.width - 60 }" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Start Conference");
+            new lz.newPrivateMessage(canvas,{
+                                x:200,y:120,
+                                refObj:null,
+                                minimizable:true,
+                                maximizable:true,
+                                userObject:null,
+                                isdragable:true,
+                                user_id:parent.user_id,
+                                width:canvas.width-300,
+                                height:canvas.height-130
+                            });
+        </handler>
+        <labelTooltip labelid="1253" />
+    </miniIcons>
+	
+	<miniIcons resource="user_profile_rsc" width="16" height="16" 
+               y="20" x="$once{ parent.width - 40 }" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Start Conference");
+            new lz.viewUserProfileWindow(canvas,{
+                                userId:parent.user_id
+                            });
+        </handler>
+        <labelTooltip labelid="1236" />
+    </miniIcons>    
+	
+	<miniIcons resource="start_conference2_rsc" width="16" height="16" 
+			   y="20" x="$once{ parent.width - 20 }" showhandcursor="true">
+		<handler name="onclick">
+			if ($debug) Debug.write("Start Conference");
+			new lz.chatParticipantsInviteConference(canvas,{
+            			    publicSID:parent.publicSID
+            			});
+		</handler>
+		<labelTooltip labelid="1131" />
+	</miniIcons>	 
+	
+	<labelTooltip text="$once{ parent.connectedSince }" /> 
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/emotIconsSelector.lzx b/WebContent/src/modules/chat/emotIconsSelector.lzx
new file mode 100644
index 0000000..98edc70
--- /dev/null
+++ b/WebContent/src/modules/chat/emotIconsSelector.lzx
@@ -0,0 +1,118 @@
+<?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.
+  
+-->
+<library>
+	
+<!--- view to select emoticons. size is 160x140 -->
+<class name="emotIconsSelector" extends="closableView" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" 
+    clickable="true" width="160" height="140" >
+
+    <attribute name="btnRef" value="null" />
+
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method>
+    
+    <handler name="oninit">
+    	this.getAllPublicEmoticons.doCall();
+    </handler>
+    
+        <netRemoteCallHib name="getAllPublicEmoticons" funcname="chatservice.getAllPublicEmoticons" 
+			remotecontext="$once{ canvas.thishib }" > 
+            <handler name="ondata" args="value">
+            	<![CDATA[
+                	//The onResult-Handler will be called be the rtmpconnection
+					if($debug) Debug.write("emotIconsSelector/getAllPublicEmoticons : ",value);
+					for (var i=0;i<value.length;i++){
+						var swfurl = canvas.getUrl() + 'public/emoticons/'+value[i][0];
+						iconlabel = value[i][1];
+						if (value[i].length>4){
+							iconlabel += ", "+value[i][2];							
+						}
+						
+						if ($debug) Debug.write("swfurl "+swfurl);
+						
+						var m = new lz._chatInnerSmilyIcon(parent.inn.inn,{iconvalue:value[i][1],iconlabel:iconlabel});
+						m.setSource(swfurl);						
+					}
+                ]]>
+            </handler>   
+        </netRemoteCallHib>    
+
+    <view bgcolor="0xFFFFFF" width="$once{ parent.width-2 }" opacity="0.8"
+    	  height="$once{ parent.height-2 }" x="1" y="1" />
+    	  
+    <labelText x="1" y="1" labelid="446" fontstyle="bold" /><!-- 446:Emoticons -->
+	<view name="inn" width="158" height="118" x="0" y="20" clip="true">
+		<view name="inn" width="$once{ parent.height }" >
+			<wrappinglayout axis="x" spacing="2" />
+		</view>
+		<om_vscrollbar name="myscrollbar" />
+	</view>
+    
+    <view name="_close" x="$once{ parent.width-this.width-2 }" y="2"
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" /><!-- 430:close -->
+    </view>    
+	
+</class>	
+
+<!--- private class of emotIconsSelector.class. resource view of chat smily icons. it shows icons and label tooltips.-->
+<class name="_chatInnerSmilyIcon" extends="view" onmouseover="" onmouseout="">
+	<attribute name="iconlabel" value="" type="string" />
+	<attribute name="iconvalue" value="" type="string" />
+	<handler name="onclick">
+		var messageBox = parent.parent.parent.btnRef.message;
+		messageBox.setText(messageBox.getText()+" "+iconvalue+"  ");
+		if ($debug) Debug.write("messageBox TEXT: ",messageBox.text,messageBox);
+		lz.Focus.setFocus(messageBox._ctext);
+		messageBox._ctext.setSelection(messageBox.getText().length-1,messageBox.getText().length);
+		parent.parent.parent.close();
+	</handler>
+	<labelTooltip text="$once{ parent.iconlabel }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/fontOptions.lzx b/WebContent/src/modules/chat/fontOptions.lzx
new file mode 100644
index 0000000..4b11c87
--- /dev/null
+++ b/WebContent/src/modules/chat/fontOptions.lzx
@@ -0,0 +1,154 @@
+<?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.
+  
+-->
+<library>
+
+<class name="fontOptions" extends="closableView" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"
+	clickable="true" width="130" height="42">
+
+	<attribute name="btnRef" value="null" />
+	
+	<method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method>
+    
+    <method name="applyStyle" args="styleLeftPart, styleRightPart">
+    	var messageBox = btnRef.message;
+    	var beforeSelection = messageBox.getText().substring(0, messageBox._ctext.selPosition);
+    	var selection = messageBox.getText().substring(messageBox._ctext.selPosition, 
+    		messageBox._ctext.selPosition + messageBox._ctext.selSize);
+    	var afterSelection = messageBox.getText().substring(messageBox._ctext.selPosition + 
+    		messageBox._ctext.selSize, messageBox.getText().length);
+		messageBox.setText(beforeSelection + styleLeftPart + selection + styleRightPart + afterSelection);
+		close();
+		lz.Focus.setFocus(messageBox._ctext);
+    </method>
+        
+    <view bgcolor="0xFFFFFF" width="$once{ parent.width-2 }" opacity="0.8"
+    	  height="$once{ parent.height-2 }" x="1" y="1" />
+    	  
+    <labelText x="1" y="1" labelid="1530" fontstyle="bold" /><!-- 1530:Font style -->
+    
+    <view name="_close" x="$once{ parent.width-this.width-2 }" y="2"
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" /><!-- 430:close -->
+    </view>
+
+	<miniIconsImage y="18" x="0" src="$once{ canvas.getThemeImage('font_bold') }"
+		width="24" height="24" showhandcursor="true" stretches="none" xoffset="-4" yoffset="-4">
+		<handler name="onclick">
+			<![CDATA[
+			parent.applyStyle("<b>", "</b>");
+			]]>
+		</handler>
+		<labelTooltip labelid="87" />
+	</miniIconsImage>
+	    
+	<miniIconsImage y="18" x="24" src="$once{ canvas.getThemeImage('font_italic') }" 
+		width="24" height="24" showhandcursor="true" stretches="none" xoffset="-4" yoffset="-4">
+		<handler name="onclick">
+			<![CDATA[
+			parent.applyStyle("<i>", "</i>");
+			]]>
+		</handler>
+		<labelTooltip labelid="86" />
+	</miniIconsImage>
+	    
+	<miniIconsImage y="18" x="48" src="$once{ canvas.getThemeImage('font_underline') }"
+		width="24" height="24" showhandcursor="true" stretches="none" xoffset="-4" yoffset="-4">
+		<handler name="onclick">
+			<![CDATA[
+			parent.applyStyle("<u>", "</u>");
+			]]>
+		</handler>
+		<labelTooltip labelid="1529" />
+	</miniIconsImage>
+	
+	<miniIconsImage y="18" x="72" src="$once{ canvas.getThemeImage('font_color') }" 
+		width="24" height="24" showhandcursor="true" stretches="none" xoffset="-4" yoffset="-4">
+		<attribute name="selectedColor" type="number" value="0" />
+		<attribute name="colorBeforeOpen" type="number" />
+		<attribute name="colorPickRef" value="null"/>
+		<handler name="onclick">
+			<![CDATA[
+				this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
+	        		x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        		y:(this.getAttributeRelative('y',canvas)-154+this.height)});
+	        	var myColor = new Color();
+        		myColor.setRGB(0);
+	        	this.colorPickRef.doDefaultColor(myColor);
+	        	this.colorBeforeOpen = colorPickRef.selectedColor;
+	        	lz.ModeManager.makeModal(this.colorPickRef);
+			]]>
+		</handler>
+		
+		<method name="closedColorPicker">
+			// called by colorpicker
+		</method>
+		
+		<method name="setTransformedStringColor">
+		<![CDATA[
+			if (colorBeforeOpen != this.colorPickRef.selectedColor)
+				parent.applyStyle("<font color=\'#" + 
+					parseInt(this.colorPickRef.selectedColor).toString(16) + "\'>", "</font>");
+		]]>
+		</method>
+		
+		<labelTooltip labelid="1532" />
+	</miniIconsImage>
+	
+	<miniIconsImage y="18" x="96" src="$once{ canvas.getThemeImage('hyperlink') }" 
+		width="24" height="24" showhandcursor="true" stretches="none"  xoffset="-4" yoffset="-4">
+		<handler name="onclick">
+			<![CDATA[
+			parent.applyStyle("<a href=\"\">", "</a>");
+			]]>
+		</handler>
+		<labelTooltip labelid="1533" />
+	</miniIconsImage>
+    
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/chat/globalAttributes.lzx b/WebContent/src/modules/chat/globalAttributes.lzx
new file mode 100644
index 0000000..3b5283d
--- /dev/null
+++ b/WebContent/src/modules/chat/globalAttributes.lzx
@@ -0,0 +1,35 @@
+<?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.
+  
+-->
+
+<!-- global attributes for chat module -->
+
+<library>
+
+<!--- chat modules: chat history -->
+<attribute name="chathistory" value="null" />
+
+<!--- chat modules: chat content -->
+<attribute name="_chatcontent" value="null" />
+
+<!--- chat modules: chat content -->
+<attribute name="_currentChatPanel" value="null" />
+
+</library>
diff --git a/WebContent/src/modules/chat/globalMethods.lzx b/WebContent/src/modules/chat/globalMethods.lzx
new file mode 100644
index 0000000..c42394f
--- /dev/null
+++ b/WebContent/src/modules/chat/globalMethods.lzx
@@ -0,0 +1,199 @@
+<?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.
+  
+-->
+
+<!-- global methods for chat module -->
+<library>
+
+<script>
+<![CDATA[
+
+	// global chat history array for all chat module
+	this.chathistory=new Array();
+
+var maxsize = 220;
+var textFieldtext = "";
+var startIndex = 0;
+var currentLine = 0;
+var textObject = null;
+var myTextFormat = null;
+var lineHeight = 0;
+
+function calcLineWidthByTextField(maxsizeText,textForCalcing,fontsize, fontname){
+	//check test/testLineWidth.lzx in test-directory for a detailed example calculation 
+	//Debug.write("calcLineWidthByTextField: ",textForCalcing);
+	
+	maxsize = maxsizeText;
+	startIndex = 0;
+	currentLine = 0;
+	textObject = new Array();
+	
+	textFieldtext = textForCalcing;
+	myTextFormat = new TextFormat();
+	myTextFormat.size = fontsize;
+	myTextFormat.font = fontname;
+	
+	var metrics = myTextFormat.getTextExtent(textFieldtext, 100000);
+	lineHeight = metrics.ascent+metrics.descent;
+	//Debug.write(lineHeight);
+	
+	measureLine();
+	
+	return textObject;
+}
+
+function measureLine(){
+    var remainingLength = textFieldtext.length;
+        
+    var testTxt = "";
+    var testTxt2 = "";
+    var textFieldtext2 = textFieldtext;
+    var metrics = 0;
+    var firstSpaceIndex = 0;
+    var isFirstWord = true;
+
+    //if ($debug) Debug.write("FUNC/chat Message: ", textFieldtext);
+    //if ($debug) Debug.write("FUNC/length of chat Message: ", remainingLength);
+
+    while (remainingLength > 0) {
+        testTxt = "";
+        testTxt2 = "";
+        textFieldtext2 = textFieldtext;
+        metrics = myTextFormat.getTextExtent(textFieldtext2, 100000);
+        isFirstWord = true;
+        
+        //if ($debug) Debug.write("size of the current part: ", metrics.width);
+        do {
+            firstSpaceIndex = textFieldtext2.indexOf(" ");
+            testTxt2 = testTxt;
+
+            if (firstSpaceIndex != -1) {
+                //if ($debug) Debug.write("the first space is at position: ", firstSpaceIndex);
+                if (isFirstWord) {
+                    testTxt = textFieldtext2.slice(startIndex, firstSpaceIndex);
+                    isFirstWord = false;
+                } else {
+                    testTxt = testTxt + " " + textFieldtext2.slice(startIndex, firstSpaceIndex);
+                }
+                textFieldtext2 = textFieldtext2.slice(firstSpaceIndex + 1, textFieldtext2.length);
+                metrics = myTextFormat.getTextExtent(testTxt, 100000);
+            } else {
+                // this is the last word
+                //if ($debug) Debug.write("this is the last word!");
+                testTxt = testTxt + " " + textFieldtext2;
+                metrics = myTextFormat.getTextExtent(testTxt, 100000);
+                if (isFirstWord && metrics.width < maxsize) {
+                    testTxt2 = testTxt;
+                    isFirstWord = false;
+                }
+                break;
+            }
+        } while (metrics.width < maxsize)
+        
+        if (metrics.width < maxsize) {
+            testTxt2 = testTxt;
+        }
+
+        if (testTxt2.length == 0) {
+            // the first word is already too long
+            //if ($debug) Debug.write("the first word is already too long!");
+            testTxt = "";
+            textFieldtext2 = textFieldtext;
+            metrics = myTextFormat.getTextExtent(testTxt, 100000);
+            isFirstWord = true;
+
+            while (metrics.width < maxsize) {
+                testTxt = testTxt + textFieldtext2.slice(startIndex, 1);
+                textFieldtext2 = textFieldtext2.slice(1, remainingLength);
+                metrics = myTextFormat.getTextExtent(testTxt, 100000);
+            }
+            
+            testTxt2 = testTxt;
+        }
+                
+        textObject[currentLine] = new Array();
+        textObject[currentLine]["text"] = testTxt2;
+        metrics2 = myTextFormat.getTextExtent(textObject[currentLine]["text"], 100000);
+        textObject[currentLine]["lineWidth"] = metrics2.width;
+        currentLine += 1;
+        //if ($debug) Debug.write("new line: ", textObject[currentLine]["text"]);
+               
+        textFieldtext = textFieldtext.slice(testTxt2.length, textFieldtext.length)
+        if (textFieldtext.indexOf(" ") == 0) {
+           textFieldtext = textFieldtext.slice(1, textFieldtext.length)
+        }
+        remainingLength = textFieldtext.length;
+
+        //if ($debug) Debug.write("remaining text: ", textFieldtext);
+    }
+}
+
+function getLineHeight(){
+	return lineHeight;
+}
+
+
+
+
+]]>
+</script>
+
+
+
+
+<method name="addChatHistory" args="value,client">
+  	<![CDATA[
+  	Debug.write("addChatHistory: ",value,client);
+    if (value[7]){
+          var newmessage = "<FONT COLOR='"+value[5]+"' size='11'>"+client.firstname+" "+client.lastname+"</FONT>:<FONT COLOR='0x000000' size='11'>"+value[4]+"</FONT><br />";
+    } else {
+          var newmessage = "<FONT COLOR='"+value[5]+"' size='11'>"+client.firstname+" "+client.lastname+"</FONT>:<FONT COLOR='0x000000' size='11'>"+value[4]+"</FONT><br />";
+    }
+  	//Debug.write("newmessage: ",newmessage);
+  	canvas._chatcontent.addChatItem(newmessage);  // Is "addChatItem()" used?  By what? h.kuze 2008/3/27
+  	canvas._chathistory.push(newmessage);
+  	]]>
+</method>
+
+<method name="resetFormatedChatHistory">
+  	<![CDATA[
+  	if (this.chathistory==null) return '';
+  	var completeText = '';
+  	for (var i=0;i<chathistory.length;i++){
+  		completeText+=chathistory[i];
+  	}
+  	//Debug.write("getFormatedChatHistory: ",completeText);
+  	return completeText;
+  	]]>
+</method>
+<method name="getFormatedChatHistory">
+  	<![CDATA[
+  	if (this.chathistory==null) return '';
+  	var completeText = '';
+  	for (var i=0;i<chathistory.length;i++){
+  		completeText+=chathistory[i];
+  	}
+  	//Debug.write("getFormatedChatHistory: ",completeText);
+  	return completeText;
+  	]]>
+</method>
+
+
+</library>
diff --git a/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteConference.lzx b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteConference.lzx
new file mode 100644
index 0000000..cae4835
--- /dev/null
+++ b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteConference.lzx
@@ -0,0 +1,129 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="chatParticipantsInviteConference" extends="guiPresenter" resizeable="false"
+    width="490" height="430" y="240" x="240" closable="true" labelid="1131" >
+	
+	<attribute name="publicSID" value="" type="string" />
+	<attribute name="user_id" value="0" type="number" />
+	
+    <view resource="messagebox_info_rsc" x="10" y="24" />
+    
+    <labelText labelid="1132" x="30" y="22" fontstyle="italic"
+               multiline="true" width="$once{ parent.width - 40 }" />
+	
+	<labelText labelid="777" x="2" y="52" fontstyle="bold" />
+	
+    <view x="4" y="72" height="150">
+                    
+        <handler name="oninit">
+            this.getRoomsPublicWithoutType.doCall();
+        </handler>
+
+        <netRemoteCallHib name="getRoomsPublicWithoutType" funcname="conferenceservice.getRoomsPublicWithoutType" 
+            remotecontext="$once{ canvas.thishib }" >   
+            <netparam><method name="getValue">return canvas.sessionId;</method></netparam>  
+            <handler name="ondata" args="value">    
+                <![CDATA[
+                    if ($debug) Debug.write("getRoomsPublicWithoutType: ", value);
+                    if (value != null) {
+                        for (var eg = 0; eg < value.length; eg++) {
+                            var time = value[eg].starttime.getHours()
+                                    + ':' + value[eg].starttime.getMinutes()
+                                    + ' ' + value[eg].starttime.getDate()
+                                    + '.' + (value[eg].starttime.getMonth() + 1)
+                                    + '.' + value[eg].starttime.getFullYear();
+                                    
+                            new lz.roomListInviteUserItem(parent.inn.inn.inn,
+                                    {
+                                        roomType:value[eg].roomtype.roomtypes_id,
+                                        currentusers : value[eg].currentusers,
+                                        obj : value[eg],
+                                        ispublic : true,
+                                        roomid : value[eg].rooms_id,
+                                        starttime : time,
+                                        roomname : value[eg].name,
+                                        publicSID:parent.parent.publicSID,
+                                        user_id:parent.parent.user_id
+                                    });
+                        }
+                    }
+                ]]>                                     
+            </handler>  
+        </netRemoteCallHib>
+
+        <!-- inn.inn.inn view would be setted object by above ondata hander. -->
+        <view name="inn" width="480" height="${ parent.height }" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+            <view name="inn" x="1" y="1" width="478" height="${ parent.height-2 }" 
+                        bgcolor="0xFFFFFF" clip="true" >
+                <view name="inn" layout="axis:y;spacing:1"/>
+                <om_vscrollbar />
+            </view>
+        </view>
+    </view>
+	
+	<labelText labelid="779" x="2" y="222" fontstyle="bold" />
+	
+    <view x="4" y="242" height="150">
+        <handler name="oninit">
+            this.getRoomsByOrganisationWithoutType.doCall();
+        </handler>    
+
+        <netRemoteCallHib name="getRoomsByOrganisationWithoutType" funcname="conferenceservice.getRoomsByOrganisationWithoutType" remotecontext="$once{ canvas.thishib }" >   
+            <netparam><method name="getValue">return canvas.sessionId;</method></netparam>  
+            <netparam><method name="getValue">return hib.currentdomainObj.organisation_id;</method></netparam>  
+            <handler name="ondata" args="value">    
+            <![CDATA[
+                if ($debug) Debug.write("getRoomsByOrganisationWithoutType ",value);
+                if (value != null) {
+                    for (var eg = 0; eg < value.length; eg++) {
+                        new lz.roomListInviteUserItem(parent.inn.inn.inn,{
+                                    roomType:value[eg].room.roomtype.roomtypes_id,
+                                    currentusers : value[eg].room.currentusers,
+                                    obj : value[eg],
+                                    ispublic : false,
+                                    roomid : value[eg].room.rooms_id,
+                                    starttime : parseDateToStringTime(value[eg].room.starttime),
+                                    roomname : value[eg].room.name,
+                                    publicSID:parent.parent.publicSID
+                                });
+                    }
+                }
+            ]]>                                     
+            </handler>  
+        </netRemoteCallHib> 
+ 
+                <!-- inn.inn.inn view would be setted object by above ondata hander. -->
+        <view name="inn" width="480" height="${ parent.height }" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+            <view name="inn" x="1" y="1" width="478" height="${ parent.height-2 }" bgcolor="0xFFFFFF" clip="true" >
+                <view name="inn" layout="axis:y;spacing:1"/>
+                <om_vscrollbar />
+            </view>
+        </view>
+    </view>
+    
+    <simpleLabelButton labelid="55" width="100" onclick="this.parent.close();"
+		   x="$once{ parent.width-104 }" y="$once{ parent.height-26 }" />    	
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteMessage.lzx b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteMessage.lzx
new file mode 100644
index 0000000..8d5d5a9
--- /dev/null
+++ b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteMessage.lzx
@@ -0,0 +1,104 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="chatParticipantsInviteMessage" extends="guiPresenter" labelid="1138"
+    docking="true" resizeable="false" closable="true" y="260"
+    width="400" x="300" height="240">
+	
+	<attribute name="refObj" value="null" />
+	
+	<attribute name="publicSID" value="" type="string" />
+	<attribute name="user_id" value="0" type="number" />
+	<attribute name="conferenceRoomName" value="" type="string" />
+	<attribute name="roomId" value="0" type="number" />
+	
+	<handler name="oninit">
+		<![CDATA[
+		  
+		  var tString = canvas.firstName + ' ' + canvas.lastName + ' ' 
+		                  + canvas.getLabelName(1137) + ' ' 
+		                  + this.conferenceRoomName;
+		                  
+		  this.message.setAttribute("text",tString);
+		
+		]]>
+	</handler>
+	
+	<method name="send">
+		
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject = new Object
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject["message"] = "inviteToRoom";
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject["action"] = "inviteToRoom";
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject["roomId"] = this.roomId;
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject["usermessage"] = this.message.getText();
+		this.sendMessageWithClientByPublicSIDOrUser.messageObject["publicSID"] = canvas.publicSID;
+		
+		if ($debug) Debug.write("Send to _ ",this.publicSID);
+		if ($debug) Debug.write("Send to _ ",this.user_id);
+		
+		this.sendMessageWithClientByPublicSIDOrUser.doCall();
+		
+	</method>
+	
+    <netRemoteCallHib name="sendMessageWithClientByPublicSIDOrUser" funcname="sendMessageWithClientByPublicSIDOrUser" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <attribute name="messageObject" value="null" />
+        <netparam><method name="getValue">return parent.messageObject;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.publicSID;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.user_id;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("+sendMessageWithClientByPublicSIDOrUser : ",value);
+                
+                if (parent._switch.getValue()) {
+            
+                    parent.refObj.checkConditionsWhenButtonClicked(null);
+                    
+                } else {
+                	
+                	parent.refObj.doCloseWindow();
+                	
+                }
+                
+                parent.close();
+            ]]>
+        </handler>  
+    </netRemoteCallHib>	
+    
+    <labelText labelid="1136" x="2" y="22" fontstyle="bold" />
+    
+    <customScrollEdittext name="message" y="42" x="2" width="$once{ parent.width - 4 }" 
+            height="100" text="" />
+            
+    <labelCheckbox x="2" y="$once{ parent.height-48 }" fontsize="11"
+        name="_switch" labelid="1134" >
+    </labelCheckbox>  
+    
+    <simpleLabelButton labelid="1139" width="200" x="88" y="$once{ parent.height-22 }" 
+        onclick="this.parent.send();" />
+        
+    <simpleLabelButton labelid="25" width="100" x="290" y="$once{ parent.height-22 }" 
+        onclick="this.parent.close();" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteNotification.lzx b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteNotification.lzx
new file mode 100644
index 0000000..4053ab6
--- /dev/null
+++ b/WebContent/src/modules/chat/inviteuser/chatParticipantsInviteNotification.lzx
@@ -0,0 +1,91 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="chatParticipantsInviteNotification" extends="guiPresenter" labelid="1138"
+    docking="true" resizeable="false" closable="true" y="260"
+    width="400" x="300" height="240">
+	
+	<attribute name="refObj" value="null" />
+	
+	<attribute name="publicSID" value="" type="string" />
+	<attribute name="conferenceRoomName" value="" type="string" />
+	<attribute name="usermessage" value="" type="string" />
+	<attribute name="roomId" value="0" type="number" />
+	
+	<handler name="oninit">
+		<![CDATA[
+		  
+		  this.message.message.setAttribute("text",this.usermessage);
+		
+		]]>
+	</handler>
+	
+	<method name="accept">
+		canvas.roomJumpId = this.roomId;
+        quicklinkAct("jumpToRoom");
+		
+		this.close();
+	</method>
+	
+	<method name="deny">
+		
+		this.sendMessageWithClientByPublicSID.messageObject = new Object
+		this.sendMessageWithClientByPublicSID.messageObject["message"] = "inviteToRoomAnswer";
+		this.sendMessageWithClientByPublicSID.messageObject["action"] = "inviteToRoomAnswer";
+		this.sendMessageWithClientByPublicSID.messageObject["usermessage"] = canvas.firstName + ' ' + canvas.lastName + ' ' 
+                                                                                    + canvas.getLabelName(1140);
+		this.sendMessageWithClientByPublicSID.doCall();
+		
+	</method>
+	
+    <netRemoteCallHib name="sendMessageWithClientByPublicSID" funcname="sendMessageWithClientByPublicSID" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <attribute name="messageObject" value="null" />
+        <netparam><method name="getValue">return parent.messageObject;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.publicSID;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("+sendMessageWithClientByPublicSID : ",value);
+                parent.close();
+            ]]>
+        </handler>  
+    </netRemoteCallHib>	
+    
+    <labelText labelid="1136" x="2" y="22" fontstyle="bold" />
+    
+    <view y="42" x="2" name="message" width="$once{ parent.width - 4 }" clip="true">
+    	<text name="message"  width="$once{ parent.width - 16 }"
+            height="100" text="" multiline="true" />
+    </view>
+    
+    <simpleLabelButton labelid="1141" width="100" x="86" y="$once{ parent.height-22 }" 
+        onclick="this.parent.accept();" />
+        
+    <simpleLabelButton labelid="1142" width="100" x="188" y="$once{ parent.height-22 }" 
+        onclick="this.parent.deny();" />
+        
+    <simpleLabelButton labelid="25" width="100" x="290" y="$once{ parent.height-22 }" 
+        onclick="this.parent.close();" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/inviteuser/library.lzx b/WebContent/src/modules/chat/inviteuser/library.lzx
new file mode 100644
index 0000000..bffbfe1
--- /dev/null
+++ b/WebContent/src/modules/chat/inviteuser/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+
+
+	<include href="roomListInviteUserItem.lzx" />
+	<include href="chatParticipantsInviteMessage.lzx" />
+	<include href="chatParticipantsInviteNotification.lzx" />
+	<include href="chatParticipantsInviteConference.lzx" />
+	
+    
+</library>
diff --git a/WebContent/src/modules/chat/inviteuser/roomListInviteUserItem.lzx b/WebContent/src/modules/chat/inviteuser/roomListInviteUserItem.lzx
new file mode 100644
index 0000000..2de9ed7
--- /dev/null
+++ b/WebContent/src/modules/chat/inviteuser/roomListInviteUserItem.lzx
@@ -0,0 +1,167 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="roomListInviteUserItem" extends="view" bgcolor="$once{ canvas.bgColorMenuItems }" 
+		   height="50" onmouseover="" onmouseout="" width="478" >
+
+		<attribute name="ispublic" value="false" type="boolean" />
+		<attribute name="isaudience" value="false" type="boolean" />
+		<attribute name="obj" value="null" />
+		<attribute name="roomid" value="0" type="number" />
+		<attribute name="starttime" value="" type="string" />
+		<attribute name="roomname" value="" type="string" />
+
+		<attribute name="roomClassName" value="conferenceView" type="string" />
+		<attribute name="currentusers" value="null" />
+
+		<attribute name="maxUsers" value="4" type="number" />
+		
+		<attribute name="roomType" value="0" type="number" />
+
+		<attribute name="checkForMaxUsers" value="false" type="boolean" />
+		
+		<attribute name="publicSID" value="" type="string" />
+		<attribute name="user_id" value="0" type="number" />
+
+		<handler name="oninit">
+		<![CDATA[
+
+			//if ($debug) Debug.write("obj: ",obj);
+			if (this.ispublic) {
+				this.maxUsers = obj.numberOfPartizipants;
+			} else {
+				this.maxUsers = obj.room.numberOfPartizipants;
+			}
+			this._users.setAttribute('text', canvas.getLabelName(398) + ' '
+							+ this.currentusers.length + " / " + this.maxUsers);
+			var tString = canvas.getLabelName(401) + "<br/>";
+			for (var i = 0; i < this.currentusers.length; i++) {
+				tString += this.currentusers[i].firstname + " "
+						+ this.currentusers[i].lastname + " ("
+						+ this.currentusers[i].username + ") "
+						+ canvas.getLabelName(399)
+						+ parseDateToStringTime(this.currentusers[i].roomEnter)
+						+ " <br/>";
+			}
+			this._labeltooltip.setAttribute('text', tString);
+		]]>
+		</handler>
+
+		<handler name="onclick">
+			canvas.isConference = !this.isaudience;
+			if (this.isaudience)
+				connectedIsAudience = '_' + 'audi';
+			if (this.ispublic) {
+				hib.conferencedomain = "public";
+				hib.currentroomid = this.obj.rooms_id;
+				//Debug.write("ispublic");
+			} else {
+				hib.conferencedomain = this.obj.organisation.organisation_id;
+				hib.currentroomid = this.obj.room.rooms_id;
+				//Debug.write("non ispublic");
+			}
+			if ($debug) Debug.write("onclick", this);
+			parent.parent.parent.parent.parent._roomlistdetails.doinit(
+					this.currentusers, this.roomid, this.roomname);
+		</handler>
+
+		<method name="checkMaxUsers">
+		<![CDATA[
+			if (this.currentusers.length < this.maxUsers) {
+				this.enterRoom();
+			} else {
+				new lz.labelerrorPopup(canvas,{errorlabelid:99});
+				//new lz.rpcErrorDialog(canvas.main_content._content.inner, {
+				//			errorid : 30
+				//		});
+			}
+		]]>
+		</method>
+
+		<method name="enterRoom">
+			
+			var roomid = 0;
+			
+			if (this.ispublic) {
+				roomid = this.obj.rooms_id;
+				//Debug.write("ispublic");
+			} else {
+				roomid = this.obj.room.rooms_id;
+				//Debug.write("non ispublic");
+			}
+			
+			canvas.roomJumpId = roomid;
+			quicklinkAct("jumpToRoom");
+			
+			this.doCloseWindow();
+		</method>
+
+		<netRemoteCallHib name="getRoomClientsListByRoomId" funcname="conferenceservice.getRoomClientsListByRoomId"
+			remotecontext="$once{ canvas.thishib }" >
+			<netparam> <method name="getValue">return parent.parent.roomid;</method></netparam>
+			<handler name="ondata" args="value">
+			<![CDATA[
+				if ($debug) Debug.write("getRoomClientsListByRoomId: ", value);
+				parent.currentusers = value;
+				parent.oninit.sendEvent();
+				if (parent.checkForMaxUsers) {
+					parent.checkMaxUsers();
+				}
+			]]>
+			</handler>
+		</netRemoteCallHib>
+
+		<labelText text="$once{ parent.roomname }" />
+
+		<labelText name="_users" y="26" />
+		<image name="_r" src="$once{ canvas.getThemeImage('reload_rsc') }" x="130" y="26"
+			onclick="parent.getRoomClientsListByRoomId.doCall()" >
+			<labelTooltip labelid="402" />
+		</image>
+
+		<method name="checkConditionsWhenButtonClicked" args="_clicked">
+			checkForMaxUsers = true;
+			getRoomClientsListByRoomId.doCall();
+		</method>
+		
+		<method name="doCloseWindow">
+			if ($debug) Debug.write("doCloseWindow :: ");
+			parent.parent.parent.parent.parent.close();
+		</method>
+
+		<simpleLabelButton labelid="1135" x="380" width="80" height="24" y="20">
+			<handler name="onclick">
+				new lz.chatParticipantsInviteMessage(canvas,{
+    				    refObj:parent,
+    				    publicSID:parent.publicSID,
+    				    user_id:parent.user_id,
+    				    conferenceRoomName:parent.roomname,
+    				    roomId:parent.roomid
+    				});
+			</handler>
+		</simpleLabelButton>
+
+		<labelTooltip multiline="true" name="_labeltooltip" />
+
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/chat/library.lzx b/WebContent/src/modules/chat/library.lzx
new file mode 100644
index 0000000..b70fa7b
--- /dev/null
+++ b/WebContent/src/modules/chat/library.lzx
@@ -0,0 +1,35 @@
+<?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.
+  
+-->
+<library>
+
+
+	<include href="globalAttributes.lzx" />
+	<include href="globalMethods.lzx" />
+	
+	<include href="chatMiniButton.lzx" />
+	<include href="chatBarMenu.lzx" />
+	<include href="inviteuser/" />
+	
+	<include href="chatParticipants.lzx" />
+	<include href="fontOptions.lzx" />
+	<include href="emotIconsSelector.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/browser/conferenceBrowser.lzx b/WebContent/src/modules/conference/browser/conferenceBrowser.lzx
new file mode 100644
index 0000000..441b6b3
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/conferenceBrowser.lzx
@@ -0,0 +1,436 @@
+<?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.
+  
+-->
+<library>
+
+	<!--- TODO:
+		inprement of history feature
+		add resize feature to labelExplorerBox component
+	-->
+	<!--
+	<include href="extensions/html.lzx"/>
+     -->
+     
+    <class name="browserButton" extends="view" width="22" height="22">
+    	
+    	<attribute name="enabled" value="true" type="boolean" />
+    	
+    	<handler name="onenabled" args="o">
+    		this.enabled = o;
+    		if (o) {
+    			this.setAttribute("opacity",1);
+    		} else {
+    			this.setAttribute("opacity",0.5);
+    		}
+    	</handler>
+    	
+    </class> 
+     
+	<class name="conferenceBrowser" extends="labelExplorerBox" labelid="749" 
+		   x="200" closable="false" resizeable="true">
+		 
+		<!--
+		      this attribute is true if the user has opened the browser on its own
+		      if the browser is opened by a Remote-Call, the user will get the Web-Site 
+		      notifications from the Moderator(s)
+		 -->
+		<attribute name="initedByUser" value="true" type="boolean" /> 
+		
+		<attribute name="initURL" value="" type="string" /> 
+		
+		<attribute name="callBackJSDelegate" value="null" /> 
+		
+		<attribute name="browserhistoryPre" value="null" />
+		<attribute name="browserhistoryPost" value="null" /> 
+		 
+		<handler name="oninit">
+			<![CDATA[
+			
+			    this.browserhistoryPre = new Array();
+			    this.browserhistoryPost = new Array();
+			    
+			    this.updateIcons();
+			
+				canvas.conferenceBrowserIsinited = true;
+				this.callBackJSDelegate = new LzDelegate(this, "updatedURLValues");
+			
+                var os = lz.Browser.getOS();
+                
+                //We have to detect Firefox, unfortunately it does not work for
+                //Windows with Firefox see: http://jira.openlaszlo.org/jira/browse/LPP-8525
+                
+                if ($debug) Debug.write("os ::",os.indexOf('Win'),os);
+                
+                //To test this you have to run the application with the index.jsp wrapper that
+                //contains the browser-detection code
+                if (false && os.indexOf("Win") >= 0) {
+                
+                    if ($debug) Debug.write("os :: version isWindows check for Firefox Bug ",os,version);
+                    
+                    getBrowserLang(this);
+                
+                }
+                
+                if (canvas.ismoderator) {
+                	
+                    this._navigation._inner._showBar.setAttribute('started', true);
+                    
+                }
+                
+                //see attribute definition for docs
+                if (this.initedByUser) {
+                	this._navigation._inner.browser.navigation.url.setAttribute("text","http://www.google.com");
+                	this._navigation._inner.browser.navigation.readStart.setURL();
+                	
+                	this.sendBrowserMessageToMembers.objMessage = new Array();
+                	this.sendBrowserMessageToMembers.objMessage[0] = "initBrowser";
+                	this.sendBrowserMessageToMembers.objMessage[1] = this._navigation._inner.browser.navigation.url.text;
+                	this.sendBrowserMessageToMembers.doCall();
+                } else {
+                	
+                	this._navigation._inner.browser.navigation.url.setAttribute("text",this.initURL);
+                	this._navigation._inner.browser.navigation.readStart.setURL();
+                	
+                }
+                
+            ]]>
+        </handler>
+        
+        <method name="callback" args="returnValue">
+        	<![CDATA[
+        	
+        	    if ($debug) Debug.write("getBrowserInfo callback ",returnValue);
+                        
+                if (returnValue.indexOf("Firefox") >= 0) {
+                    
+                    this.setAttribute("y",160);
+                    
+                    new lz.labelerrorPopup(canvas,{y:0,errorlabelid:750});
+                }
+        	
+        	]]>
+        </method>
+        
+        <method name="newBrowserURL" args="newURL">
+        	this._navigation._inner.browser.navigation.url.setAttribute("text",newURL);
+        	this._navigation._inner.browser.navigation.readStart.setURL();
+        </method>
+        
+        <method name="updatedURLValues" args="returnValue">
+        	
+        	if ($debug) Debug.write("updatedURLValues ",returnValue);
+        	
+        </method>
+        
+        <method name="getIFrameLocation">
+        	<![CDATA[
+
+                //function callbackIFrameLocation(returnValue) {
+                    
+                //    if ($debug) Debug.write("callbackIFrameLocation ",returnValue);
+                    
+                //}
+                
+                //lz.Browser.callJS("getiFrameOMSource",callbackIFrameLocation, "__lz0");   
+                
+                this.htmlviewer.callJavascript("window.location.href",this.callBackJSDelegate);
+                
+                
+                
+        	]]>
+        </method>
+        
+        <netRemoteCallHib name="sendBrowserMessageToMembers" funcname="sendBrowserMessageToMembers" 
+        				   remotecontext="$once{ canvas.thishib }" >
+        	<attribute name="objMessage" value="null" />
+            <netparam name="vars"><method name="getValue">return parent.objMessage;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                	if ($debug) Debug.write("getValue : ",value);
+                	if (this.objMessage[0] == "closeBrowserURL") {
+                		parent.close();
+                	}
+                ]]>
+            </handler>   
+        </netRemoteCallHib> 
+        
+        <handler name="onismoderator" reference="canvas" args="m">
+            if ($debug) Debug.write("###### ismoderator ",m);
+            <![CDATA[
+                //this.isMod = canvas.getIsModeratorByPublicSID(this.refObj.publicSID);
+                if (m) {
+                    this._navigation._inner._showBar.setAttribute('started', true);
+                } else {
+                	this._navigation._inner.setAttribute("y",-40);
+                }
+                //throw a onx/y event to 
+                this.setAttribute("y",this.y);
+            ]]>
+        </handler>
+        
+        <method name="addLocalHistoryPre" args="url">
+        	this.browserhistoryPre.push(url);
+        	this.updateIcons();
+        </method>
+        
+        <method name="addLocalHistoryPost" args="url">
+            this.browserhistoryPost.push(url);
+            this.updateIcons();
+        </method>
+        
+        <method name="updateIcons">
+        	<![CDATA[
+            	if (this.browserhistoryPre.length > 1) {
+            		this._navigation._inner.browser.navigation._pre.setAttribute("enabled",true);
+            	} else {
+            		this._navigation._inner.browser.navigation._pre.setAttribute("enabled",false);
+            	}
+            	
+            	if (this.browserhistoryPost.length > 0) {
+                    this._navigation._inner.browser.navigation._post.setAttribute("enabled",true);
+                } else {
+                    this._navigation._inner.browser.navigation._post.setAttribute("enabled",false);
+                }
+        	]]>
+        </method>
+        
+        <method name="doPreItem">
+        	<![CDATA[
+                if (this.browserhistoryPre.length > 1) {
+                	
+                	if ($debug) Debug.write("doPreItem 1 ",this.browserhistoryPre.length);
+                	
+                	var lastItem = this.browserhistoryPre[this.browserhistoryPre.length-2];
+                	var nextItem = this.browserhistoryPre[this.browserhistoryPre.length-1];
+                	
+                	if ($debug) Debug.write("doPreItem 2 ",lastItem);
+                	
+                	this.browserhistoryPost.push(nextItem);
+                	
+                	this.browserhistoryPre.splice(this.browserhistoryPre.length-2,1);
+                	
+                	if ($debug) Debug.write("doPreItem 3 ",this.browserhistoryPre.length);
+                	
+                	this._navigation._inner.browser.navigation.url.setAttribute("text",lastItem);
+                    this._navigation._inner.browser.navigation.readStart.setURLWithoutEvent();
+                	
+                	this.updateIcons();
+                	
+                	return lastItem;
+                }
+            ]]>
+        </method>
+        
+        <method name="doPostItem">
+            <![CDATA[
+                if (this.browserhistoryPost.length > 0) {
+                    
+                    var lastItem = this.browserhistoryPost[this.browserhistoryPost.length-1];
+                    
+                    this.browserhistoryPost.splice(this.browserhistoryPost.length-1,1);
+                    
+                    this.browserhistoryPre.push(lastItem);
+                    
+                    this._navigation._inner.browser.navigation.url.setAttribute("text",lastItem);
+                    this._navigation._inner.browser.navigation.readStart.setURLWithoutEvent();
+                    
+                    this.updateIcons();
+                    
+                    return lastItem;
+                }
+            ]]>
+        </method>
+        
+        <method name="doClose">
+            if (canvas.ismoderator) {
+            
+                this.sendBrowserMessageToMembers.objMessage = new Array();
+                this.sendBrowserMessageToMembers.objMessage[0] = "closeBrowserURL";
+                this.sendBrowserMessageToMembers.doCall();
+            
+            }
+        </method>
+        
+        <handler name="onclose">
+        	canvas.conferenceBrowserIsinited = false;
+            this.htmlviewer.setVisible(false);
+        </handler>              
+        
+        <!--
+            Broadcast Message to all user
+         -->
+        <view name="_navigation" clip="true" y="22" height="38" width="${ parent.width }" >
+    		<view name="_inner" y="-40">
+    			
+    			<animator name="_showBar" attribute="y" to="0" duration="750" started="false">
+    				<handler name="onstop">
+    					lz.Focus.setFocus(parent.browser.navigation.url,true);
+    				</handler>
+    			</animator>
+    			
+    			<!-- enabled="false" -->
+        		<view name="browser" height="28" bgcolor="0xEEEEEE" x="1" >
+        			
+        			<view name="navigation" layout="axis:x;spacing:1;inset:1">
+        				
+        				<browserButton name="_pre" resource="./resources/pre.png" y="2">
+        					<handler name="onclick">
+        						if ($debug) Debug.write("PRE");
+        						parent.parent.parent.parent.parent.doPreItem();
+        					</handler>
+        					<labelTooltip labelid="751" />
+        				</browserButton>
+        				
+        				<browserButton name="_post" resource="./resources/next.png" y="2" enabled="false">
+                            <handler name="onclick">
+                                if ($debug) Debug.write("NEXT");
+                                parent.parent.parent.parent.parent.doPostItem();
+                            </handler>
+                            <labelTooltip labelid="752" />
+                        </browserButton>
+                        
+                        <browserButton resource="./resources/refresh.png" y="2">
+                            <handler name="onclick">
+                                if ($debug) Debug.write("RELOAD");
+                                parent.readStart.sendURL();
+                            </handler>
+                            <labelTooltip labelid="753" />
+                        </browserButton>
+                        
+                        <browserButton resource="./resources/home.png" y="2">
+                            <handler name="onclick">
+                                if ($debug) Debug.write("HOME");
+                                parent.url.setAttribute("text","http://www.google.com");
+                                parent.readStart.sendURL();
+                            </handler>
+                            <labelTooltip labelid="754" />
+                        </browserButton>
+                        
+        				<edittext name="url" width="${classroot.width- (5*22) - 8}"> 
+        					<handler name="onkeyup" args="key">
+        						if ((key == 27) || (key == 13)) {
+        							this.parent.readStart.onclick.sendEvent();
+        						}
+        					</handler>
+        				</edittext>
+        				
+        				<browserButton name="readStart" resource="./resources/run.png" 
+        							    y="2">
+        					<handler name="onclick">
+            					this.sendURL();
+        					</handler>
+        					<method name="sendURL">
+        						this.setURL();
+        						
+        						parent.parent.parent.parent.parent.sendBrowserMessageToMembers.objMessage = new Array();
+			                	parent.parent.parent.parent.parent.sendBrowserMessageToMembers.objMessage[0] = "newBrowserURL";
+			                	parent.parent.parent.parent.parent.sendBrowserMessageToMembers.objMessage[1] = parent.url.text;
+			                	parent.parent.parent.parent.parent.sendBrowserMessageToMembers.doCall();
+        					</method>
+        					<method name="setURL">
+        						<![CDATA[
+            						var url = parent.url.getText();
+            						if ((url.indexOf("http://") < 0)
+            								&& (url.indexOf("https://") < 0)) {
+            							url = "http://" + url;
+            						}
+            
+            						parent.parent.parent.parent.parent.htmlviewer.ignoreNextEvent = true;
+            						parent.parent.parent.parent.parent.htmlviewer.setAttribute("src",url);
+            						parent.parent.parent.parent.parent.htmlviewer.setAttribute("visible",true);
+            						
+            						parent.parent.parent.parent.parent.addLocalHistoryPre(url);
+            						
+            						parent.url.setAttribute('text', url);
+            					]]>
+        					</method>
+        					
+        					<method name="setURLWithoutEvent">
+                                <![CDATA[
+                                    var url = parent.url.getText();
+                                    if ((url.indexOf("http://") < 0)
+                                            && (url.indexOf("https://") < 0)) {
+                                        url = "http://" + url;
+                                    }
+            
+                                    parent.parent.parent.parent.parent.htmlviewer.ignoreNextEvent = true;
+                                    parent.parent.parent.parent.parent.htmlviewer.setAttribute("src",url);
+                                    parent.parent.parent.parent.parent.htmlviewer.setAttribute("visible",true);
+                                    
+                                    parent.url.setAttribute('text', url);
+                                ]]>
+                            </method>
+        					
+        				</browserButton> 
+        				
+        			</view>
+        			
+        			<view x="0" resource="./resources/browser_sub_cit.swf" 
+        				  width="${ parent.parent.parent.parent.width-2 }" stretches="width" y="28" />
+        			
+        		</view>
+        		
+            </view>
+        </view>
+        
+		<html name="htmlviewer" x="4" y="${ (canvas.ismoderator) ? 60 : 22 }" width="${ parent.width-8 }" 
+			  height="${ (canvas.ismoderator) ? (parent.height - 90) : (parent.height-52) }" >
+			
+			<attribute name="ignoreNextEvent" value="false" type="boolean" />
+			
+			<handler name="onloading" args="loading">
+				<![CDATA[
+					this.loading = loading;
+					if ($debug) Debug.write("LOADING 1 ",loading,this.src);
+					if ($debug) Debug.write("LOADING 2 ",loading,this);
+					if (canvas.ismoderator) {
+						if (!loading && !this.ignoreNextEvent) {
+							parent.getIFrameLocation();
+							
+							//parent.sendBrowserMessageToMembers.objMessage = new Object();
+		                	//parent.sendBrowserMessageToMembers.objMessage[0] = "newBrowserURL";
+		                	//parent.sendBrowserMessageToMembers.objMessage[1] = this.src;
+		                	//parent.sendBrowserMessageToMembers.doCall();
+						}
+					}
+					
+					if (!loading) {
+						this.ignoreNextEvent = false;
+					}
+				]]>
+			</handler>
+			<handler name="onsrc" args="src">
+				this.src = src;
+				//if ($debug) Debug.write("SRC ",src);
+			</handler>
+		</html>
+		
+		<labelText labelid="1006" y="${ parent.height-22 }" x="2"
+				   visibility="${ (canvas.ismoderator) ? 'visible' : 'hidden' }" />
+		
+        <simpleLabelButton labelid="61" width="100" 
+			   visibility="${ (canvas.ismoderator) ? 'visible' : 'hidden' }" 
+			   x="${ parent.width-105 }" y="${ parent.height-24 }" 
+               onclick="this.parent.doClose();" />
+    		  
+	</class>
+ 	
+</library>
diff --git a/WebContent/src/modules/conference/browser/library.lzx b/WebContent/src/modules/conference/browser/library.lzx
new file mode 100644
index 0000000..d88ffc2
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/library.lzx
@@ -0,0 +1,23 @@
+<?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.
+  
+-->
+<library>
+	<include href="conferenceBrowser.lzx"/>
+</library>
diff --git a/WebContent/src/modules/conference/browser/resources/browser_sub_cit.fla b/WebContent/src/modules/conference/browser/resources/browser_sub_cit.fla
new file mode 100644
index 0000000..c5e5ac6
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/browser_sub_cit.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/browser_sub_cit.swf b/WebContent/src/modules/conference/browser/resources/browser_sub_cit.swf
new file mode 100644
index 0000000..784c5cc
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/browser_sub_cit.swf
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/home.fla b/WebContent/src/modules/conference/browser/resources/home.fla
new file mode 100644
index 0000000..f8d095a
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/home.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/home.png b/WebContent/src/modules/conference/browser/resources/home.png
new file mode 100644
index 0000000..39d1123
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/home.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/next.fla b/WebContent/src/modules/conference/browser/resources/next.fla
new file mode 100644
index 0000000..13c844e
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/next.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/next.png b/WebContent/src/modules/conference/browser/resources/next.png
new file mode 100644
index 0000000..7241532
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/next.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/pre.fla b/WebContent/src/modules/conference/browser/resources/pre.fla
new file mode 100644
index 0000000..74da78f
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/pre.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/pre.png b/WebContent/src/modules/conference/browser/resources/pre.png
new file mode 100644
index 0000000..7e526f5
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/pre.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/read.png b/WebContent/src/modules/conference/browser/resources/read.png
new file mode 100644
index 0000000..b41fa2b
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/read.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/refresh.fla b/WebContent/src/modules/conference/browser/resources/refresh.fla
new file mode 100644
index 0000000..dce3961
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/refresh.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/refresh.png b/WebContent/src/modules/conference/browser/resources/refresh.png
new file mode 100644
index 0000000..b912672
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/refresh.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/run.fla b/WebContent/src/modules/conference/browser/resources/run.fla
new file mode 100644
index 0000000..65d073e
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/run.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/resources/run.png b/WebContent/src/modules/conference/browser/resources/run.png
new file mode 100644
index 0000000..c77b8d9
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/resources/run.png
Binary files differ
diff --git a/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.jsp b/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.jsp
new file mode 100644
index 0000000..3172abe
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.jsp
@@ -0,0 +1,33 @@
+<!--
+  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>
+   <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   
+      <link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/favicon.ico">
+      <title>OpenLaszlo Application</title>
+	<script type="text/javascript" src="<%= request.getContextPath() %>/lps/includes/embed-compressed.js"></script>
+	</head>
+   	<body>
+	    <script type="text/javascript">
+              Lz.swfEmbed({url: 'conferenceBrowser_test.lzx?lzt=swf', bgcolor: '#ffffff', width: '100%', height: '100%', id: 'lzapp', accessible: 'false', wmode: 'transparent'});
+            </script>
+   </body>
+</html>
diff --git a/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.lzx b/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.lzx
new file mode 100644
index 0000000..81eed0e
--- /dev/null
+++ b/WebContent/src/modules/conference/browser/test/conferenceBrowser_test.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<canvas title="Browser Test" debug="true">
+	<include href="../../../../base/"/>
+	<include href="../conferenceBrowser.lzx"/>
+	
+	<conferenceBrowser name="cb" width="400" height6="800"/>
+</canvas>
diff --git a/WebContent/src/modules/conference/commonVideoComponentAdapter.lzx b/WebContent/src/modules/conference/commonVideoComponentAdapter.lzx
new file mode 100644
index 0000000..04ff32f
--- /dev/null
+++ b/WebContent/src/modules/conference/commonVideoComponentAdapter.lzx
@@ -0,0 +1,197 @@
+<?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.
+  
+-->
+<library>
+
+<class name="commonVideoComponentAdapter" extends="node">
+	
+
+    <handler name="oninit">
+    	var t = this;
+        canvas.videoComp_lc.lc_switchMicMuted = function(publicSID, tMute) {
+            if ($debug) Debug.write("lc_switchMicMuted", publicSID, tMute);
+            canvas.thishib.switchMicMuted.setMute(publicSID, tMute);
+        };
+        canvas.videoComp_lc.lc_giveExclusiveAudio = function(publicSID) {
+            if ($debug) Debug.write("lc_giveExclusiveAudio", publicSID);
+            canvas.thishib.giveExclusiveAudio.setExclusiveAudio(publicSID);
+        };
+        canvas.videoComp_lc.as3ConnectionSuccess = function() {
+        	//FIXME: Throws a Null Pointer Exception if the parent view was already destroyed
+        	t.parent.as3ConnectionSuccess();
+        }
+		canvas.videoComp_lc.onInterviewPodCount = function(count) {
+			//if ($debug) Debug.write(":::: onInterviewPodCount", count);
+			if (canvas._drawarea["onInterviewPodCount"]) {
+				canvas._drawarea.onInterviewPodCount(count);
+			}
+		}
+    </handler>
+    
+    <!---
+        Show the popup with the possibility to choose the device settings
+        @param isSyncUpdate show the popup also if the user has clicked the "do not show again" chceckbox
+        @param interviewPodId the view id
+        @param tx x-position
+        @param ty y-position
+        @param twidth width-position
+        @param theight height-position
+     -->
+    <method name="showDevicePopUpInterview" args="isSyncUpdate,interviewPodId,tx,ty,twidth,theight">
+    	if ($debug) Debug.write("showDevicePopUpInterview ",isSyncUpdate,interviewPodId,tx,ty,twidth,theight);
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [isSyncUpdate, true, interviewPodId]);
+    </method>
+    
+    <!---
+        Show the popup with the possibility to choose the device settings
+        @param isSyncUpdate show the popup also if the user has clicked the "do not show again" chceckbox
+     -->
+    <method name="showDevicePopUp" args="isSyncUpdate">
+    	if ($debug) Debug.write("showDevicePopUp ",isSyncUpdate);
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [isSyncUpdate, false, -1]);
+    </method>
+    
+    <!---
+        Invoked after the user enters the room to connect the SWF10 app to the server via rtmp(t/s)
+     -->
+    <method name="reconnectSuccess" args="isInterview">
+    	if ($debug) Debug.write("Send reconnectSuccess to ",canvas.rtmp_lc_name);
+    	canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "reconnectSuccess", [canvas.thishib.src, canvas.publicSID
+    		, hib.userobject, isInterview, canvas.getHttpHost(), canvas.red5httpport]);
+    </method>
+    
+    <handler name="onismoderator" reference="canvas" args="m">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "ismoderatorChanged", [m]);
+    </handler>
+
+    <!---
+        Creates video object
+    -->
+    <method name="createVideo" args="publicSID,displayName,broadcastId,avsettings,interviewPodId,object">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createVideo", [publicSID, displayName, broadcastId, avsettings, interviewPodId, object]);
+    </method>
+
+    <method name="createVideoObject" args="publicSID,isBroadcasting,interviewPodId,object">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createVideoObject", [publicSID, isBroadcasting, interviewPodId,object]);
+    </method>
+
+    <!---
+        invoked whenever a User starts to Stream Video in this Room,
+        interviewPodId has only a meaning in the Room Type Interview
+     -->
+    <method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,vWidth,vHeight">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "startStream", [publicSID,broadcastId,firstname,lastname,interviewPodId,vWidth,vHeight]);
+    </method>
+
+    <!---
+        invoked remotely by Red5-notification
+        shows a green light if somebody is speaking
+        @param string broadcastId broadcastId
+        @param boolean bool show light on/off
+    -->
+    <method name="setSpeakingByPos" args="publicSID,bool">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSpeakingByPos", [publicSID, bool]);
+    </method>
+
+    <!---
+        stops the streaming but does not destroy the view
+        @param int broadcastId broadcastId
+     -->
+    <method name="closeStreamClient" args="publicSID">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeStreamClient", [publicSID]);
+    </method>
+
+    <!---
+        stops the streaming but and destroys the view
+        @param int broadcastId broadcastId
+     -->
+    <method name="disconnectclient" args="publicSID">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "disconnectclient", [publicSID]);
+    </method>
+
+    <method name="resetAllValues">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "resetAllValues",null);
+    </method>
+
+    <!---
+     invoked if another client logs into the room
+    after choosing devices -->
+    <method name="setAVSettingsToClient" args="rcl">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "setAVSettingsToClient", [rcl]);
+    </method>
+
+    <method name="createEditRecordStream" args="syncUpdate"><![CDATA[
+        //this.syncUpdate = syncUpdate;
+        //h.getBroadCastId.doCall();
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [syncUpdate]);
+    ]]></method>
+
+    <method name="removeVideoByUser" args="publicSID">
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "removeVideoByUser", [publicSID]);
+    </method>
+
+    <!--
+        Mutes/unmutes a sound of user's video
+        with the publicSID
+    -->
+    <method name="muteSound" args="publicSID, bool">
+    	if ($debug) Debug.write("muteSound :: ",publicSID,bool);
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "muteSound", [publicSID, bool]);
+    </method>
+
+    <method name="giveExclusiveAudio" args="publicSID">
+    	if ($debug) Debug.write("giveExclusiveAudio :: ",publicSID);
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "giveExclusiveAudio", [publicSID]);
+    </method>
+
+    <!---
+        Updates microphone's state of roomClient
+    -->
+    <method name="updateMuteStatusVideoView" args="roomClient">
+    	if ($debug) Debug.write("updateMuteStatusVideoView :: ",roomClient);
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "updateMuteStatusVideoView", [roomClient]);
+    </method>
+
+    <!---
+        Shows the window with device settings
+    -->
+    <method name="changeDevice">
+    	if ($debug) Debug.write("changeDevice :: ");
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "changeDevice", null);
+    </method>
+
+    <!---
+        Shows the exit dialog
+    -->
+    <method name="exitRoom">
+    	if ($debug) Debug.write("exitRoom :: ");
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "exitRoom", null);
+    </method>
+
+    <!---
+        Shows the close whiteboard dialog
+    -->
+    <method name="closeWhiteboard">
+    	if ($debug) Debug.write("closeWhiteboard :: ");
+        canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeWhiteboard", null);
+    </method>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/commonVideoViewContent.lzx b/WebContent/src/modules/conference/commonVideoViewContent.lzx
new file mode 100644
index 0000000..6f8f018
--- /dev/null
+++ b/WebContent/src/modules/conference/commonVideoViewContent.lzx
@@ -0,0 +1,118 @@
+<?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.
+  
+-->
+<library>
+
+
+<class name="commonVideoViewContent" extends="view">
+
+    <!--
+		This method returns a free position for a new video object
+		@param horizontal offset between two video objects
+	 -->
+    <method name="getVideoObjectFreePos" args="offsetLength,videoWidth,videoHeight">
+        <![CDATA[
+            var newx = 20;
+            var newy = 0;
+            var posFound = false;
+            while (!posFound) {
+                posFound = true;
+                for (var i=0;i<this.subviews.length;i++){
+                    var subview = this.subviews[i];
+                    var left = subview.x;
+                    var right = subview.x + subview.width;
+                    var top = subview.y;
+                    var bottom = subview.y + subview.height;
+
+                    if( !(newx > right
+                        || (newx + videoWidth) < left
+                        || newy > bottom
+                        || (newy + videoHeight) < top ))
+                    {
+                        newx = right + offsetLength;
+                        posFound = false;
+                    }
+                    if ((newx + videoWidth) >= canvas.width) {
+                        newx = 20;
+                        newy += 10;
+                        posFound = false;
+                    }
+                }
+            }
+
+            if ((newy + videoHeight) >= canvas.height) {
+                newy = 0;
+            }
+
+            var result = [newx, newy];
+            return result;
+        ]]>
+    </method>
+
+</class>
+
+<class name="commonVideoViewContentHideWhiteboard" extends="view">
+
+    <!--
+		This method returns a free position for a new video object
+		@param horizontal offset between two video objects
+	 -->
+    <method name="getVideoObjectFreePos" args="offsetLength,videoWidth,videoHeight">
+        <![CDATA[
+            var newx = 20;
+            var newy = 0;
+            var posFound = false;
+            while (!posFound) {
+                posFound = true;
+                for (var i=0;i<this.subviews.length;i++){
+                    var subview = this.subviews[i];
+                    var left = subview.x;
+                    var right = subview.x + subview.width;
+                    var top = subview.y;
+                    var bottom = subview.y + subview.height;
+
+                    if( !(newx > right
+                        || (newx + videoWidth) < left
+                        || newy > bottom
+                        || (newy + videoHeight) < top ))
+                    {
+                        newx = right + offsetLength;
+                        posFound = false;
+                    }
+                    if ((newx + videoWidth) >= this.width) {
+                        newx = 20;
+                        newy += 10;
+                        posFound = false;
+                    }
+                }
+            }
+
+            if ((newy + videoHeight) >= parent.height) {
+                newy = 0;
+            }
+
+            var result = [newx, newy];
+            return result;
+        ]]>
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/conference/conferenceMenubar.lzx b/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
new file mode 100644
index 0000000..81030bc
--- /dev/null
+++ b/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
@@ -0,0 +1,259 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="restrictedConferenceMenubar" extends="conferenceMenubar" viewType="restricted" />
+
+	<class name="interviewConferenceMenubar" extends="conferenceMenubar" viewType="interview"/>
+	
+	<class name="conferenceMenubar" extends="view" height="28" width="${ canvas.width }" 
+						bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" >
+						
+		<attribute name="viewType" value="conference" type="string" />
+						
+	    <attribute name="selected" value="null" />
+    
+	    <method name="sendOpenMenu" args="menuref">
+	    	if (this.selected != null) {
+	    		this.selected.setAttribute("selected",false);
+	    	}
+	    	this.selected = menuref;
+	    	this.selected.setAttribute("selected",true);
+	    </method>
+			
+		<view name="itemlist" layout="axis:x;spacing:0" >
+			
+			<conferenceExitButton name="_exitbtn" 
+				text_y_inset="4" text_fontsize="14" down_y_inset="8" height="28" />
+				
+			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(245) }" 
+						text_y_inset="4" text_fontsize="14" down_y_inset="8"
+						textToolTip="" height="28"
+						visible="${ (classroot.viewType=='interview') ? false : ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }"
+						>
+				<handler name="onclick">
+			    	new lz.conferenceMenuFiles(canvas,{
+			    				x:this.getAttributeRelative("x",canvas),
+			    				y:this.getAttributeRelative("y",canvas)+this.height,
+			    				btnRef:this,
+			    				list:this.list
+			    			});
+			        this.parent.parent.sendOpenMenu(this);
+			    </handler>
+			</baseMenuMeetingsItem>
+			
+			<baseMenuMeetingsItem text="$once{ canvas.getLabelName(635) }" 
+						text_y_inset="4" text_fontsize="14" down_y_inset="8"
+						textToolTip="" height="28"
+						visible="${ canvas.currentRoomObj.hideActionsMenu ? false : ((classroot.viewType=='conference') ? true : (canvas.ismoderator ? true : (canvas.isAllowedToDraw ? true : false ))) }"
+						>
+				<handler name="onclick">
+			    	new lz.conferenceMenuActions(canvas,{
+			    				x:this.getAttributeRelative("x",canvas),
+			    				y:this.getAttributeRelative("y",canvas)+this.height,
+			    				btnRef:this
+			    			});
+			        this.parent.parent.sendOpenMenu(this);
+			    </handler>
+			</baseMenuMeetingsItem>
+			
+		</view>
+	
+	</class> 
+	
+	<class name="conferenceExitButton" extends="view" height="34" width="${ this._ctext.width+36 }" >
+	
+	    <attribute name="text_y_inset" value="6" type="number" />
+	    <attribute name="text_fontsize" value="14" type="number" />
+	    
+	    <attribute name="down_y_inset" value="10" type="number" />
+	    
+	    <handler name="onmouseover">
+            this.bgc.setAttribute('visibility','visible');
+	    </handler>
+	    <handler name="onmouseout">
+            this.bgc.setAttribute('visibility','hidden');
+	    </handler>
+	    
+	    <handler name="oninit">
+			<![CDATA[
+				if (canvas.isRemoteUser()) {
+	            	if ($debug) Debug.write("this mbarcontent ",this);
+	            	if (canvas.destroyExitButton) {
+	                    this.destroy();
+	            	}
+	            }
+            ]]>
+		</handler>
+		<handler name="onclick">
+            canvas._videocontainer._videoviewcontent.exitRoom();
+		</handler>
+	    
+	    <view width="${ parent.width-1 }" bgcolor="0xFFFFFF" opacity="0.4" height="$once{ parent.height - 2}" y="1"
+	        visibility="hidden" name="bgc"/>
+	        
+	    <image src="$once{ canvas.getThemeImage( 'exit_btn_rsc' ) }" y="4" x="4" />
+	    
+	    <view width="1" height="${ parent.height }" y="0" bgcolor="0xEEEEEE" x="${ parent.width-1 }" />
+	    
+	    <labelText labelid="789" name="_ctext" fontstyle="plain" fgcolor="0xFFFFFF"
+	        	fontsize="$once{ parent.text_fontsize }" y="$once{ parent.text_y_inset }" x="30" />
+	
+	    <labelTooltip name="_textToolTip" labelid="309" multiline="false" />
+	    
+	</class>
+	
+	
+	
+	<class name="conferencDropDownMenuItem" extends="view" height="36">
+	
+		<attribute name="isSpacer" value="false" type="boolean" />
+	
+		<attribute name="enabled" type="boolean" setter="this.setEnabled(enabled)" />
+		
+		<method name="setEnabled" args="e">
+			this.enabled = e;
+			if (!this.isinited) {
+				return;
+			}
+			if (this.enabled) {
+				this._ctext.setAttribute("fgcolor",canvas.getThemeColor('menuTextColor'));
+				this._ctextTooltip.setAttribute("fgcolor",canvas.getThemeColor('menuTextColor'));
+			} else {
+				this._ctext.setAttribute("fgcolor",canvas.getThemeColor('menuTextDisabledColor'));
+				this._ctextTooltip.setAttribute("fgcolor",canvas.getThemeColor('menuTextDisabledColor'));
+			}
+			if (this.command) {
+				this.command.enabled = this.enabled;
+			}
+		</method>
+		
+		<attribute name="labelid" type="number"
+                   setter="this.setLabelId( labelid )"   when="once" />
+                   
+		<method name="setLabelId" args="id" >
+            this.labelid = id;
+            if ( this.labelid ) {
+                this._ctext.setAttribute('text', canvas.getLabelName(this.labelid));
+            }
+        </method>
+		
+		<attribute name="command" type="expression"
+                   setter="this.setCommand( command )"   when="once" />
+		
+		<method name="setCommand" args="cmd" >
+            this.command = cmd;
+            if ( this.command ) {
+                this._ctextTooltip.setAttribute('text',canvas.getLabelName(command.tipLabelId));
+            }
+        </method>
+        
+        <handler name="onclick">
+        	if (!this.enabled) {
+        		return;
+        	}
+        	this.command.execute(null);
+        	parent.parent.close();
+        </handler>
+        
+        <handler name="onmouseover">
+	        this._bg.setAttribute("visibility","visible");
+	    </handler>
+	    
+	    <handler name="onmouseout">
+	        this._bg.setAttribute("visibility","hidden");
+	    </handler>
+	
+	    <view name="_bg" visibility="hidden" width="${ parent.width-2 }" y="0" x="1"
+	          bgcolor="0xFFFFFF" opacity="0.5" height="36" />
+	    
+	    <text name="_ctext" fontstyle="bold" fgcolor="0x666666"
+	        	fontsize="14" y="2" x="10" />
+	        	
+	    <text name="_ctextTooltip" fontstyle="plain" fgcolor="0x666666"
+	        	fontsize="10" y="20" x="10" />	
+		
+	</class> 
+	
+	<class name="conferenceMenuFiles" extends="baseDropDownMenuList"
+			height="${ this._content.height+2 }" width="${ this._content.width+2 }">
+			
+		<view name="_content" x="1" y="1" 
+			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
+			
+			<conferencDropDownMenuItem labelid="15" command="cmd_importFile"
+						enabled="${ canvas.ismoderator }" />
+			
+		</view>
+		
+	</class>
+	
+	<class name="conferenceMenuActions" extends="baseDropDownMenuList"
+			height="${ this._content.height+2 }" width="${ this._content.width+2 }">
+			
+		<handler name="oninit">
+	        this.fixWidth();
+		</handler>
+			
+		<view name="_content" x="1" y="1" 
+			layout="axis:y;spacing:1" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" >
+			
+			<conferencDropDownMenuItem labelid="213" command="cmd_invitation" 
+						enabled="${ canvas.timeZonesLoaded &amp;&amp; !canvas.isRemoteUser() &amp;&amp; canvas.ismoderator }" />
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="239" command="cmd_shareDesktop" 
+						enabled="${ classroot.btnRef.classroot.viewType != 'interview' &amp;&amp; canvas.ismoderator }" />			
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="784" command="cmd_applyforMod"
+						enabled="${ !canvas.ismoderator }" />	
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="785" command="cmd_applyforWhiteBoard"
+						enabled="${ !canvas.ismoderator }" />	
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="786" command="cmd_applyforAV"
+						enabled="${ !canvas.ismoderator }" />				
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="24" command="cmd_createPoll" 
+						enabled="${ canvas.ismoderator }" />
+			<horizontalDropDownSpacer />			
+			<conferencDropDownMenuItem labelid="37" command="cmd_pollResults" 
+						enabled="true" />
+			<horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="42" command="cmd_checkPollVoted" 
+						 enabled="${ canvas.user_id != -1 }" />
+			<horizontalDropDownSpacer
+						 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }" />
+            <conferencDropDownMenuItem labelid="1447" command="cmd_showSipDialer" 
+            			 visible="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }"
+            			 enabled="$once{ canvas.RED5_SIP_ENABLE == 'yes' &amp;&amp; canvas.currentRoomObject.sipEnabled }"/>
+            <horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="1126" command="cmd_editWhiteboardDefault" 
+						 enabled="true"/>
+			<!-- Save Whiteboard as Image menues are commented for now
+            <horizontalDropDownSpacer />
+			<conferencDropDownMenuItem labelid="560" command="cmd_exportFileSVG" enabled="true"/>
+			<conferencDropDownMenuItem labelid="561" command="cmd_exportFilePNG" enabled="true"/>
+			<conferencDropDownMenuItem labelid="562" command="cmd_exportFileJPG" enabled="true"/>
+			-->
+		</view>
+		
+	</class>
+</library>
diff --git a/WebContent/src/modules/conference/conference/library.lzx b/WebContent/src/modules/conference/conference/library.lzx
new file mode 100644
index 0000000..bc15f04
--- /dev/null
+++ b/WebContent/src/modules/conference/conference/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="roomListItem.lzx" />
+	<include href="roomListDetails.lzx" />
+    <include href="conferenceMenubar.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/conference/conference/roomListDetails.lzx b/WebContent/src/modules/conference/conference/roomListDetails.lzx
new file mode 100644
index 0000000..1db94ba
--- /dev/null
+++ b/WebContent/src/modules/conference/conference/roomListDetails.lzx
@@ -0,0 +1,171 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="userRoomTabItem" extends="view" 
+	   width="$once{ parent.width }" >
+
+	<attribute name="user_id" value="0" type="number" />
+	<attribute name="username" value="" type="string" />
+	<attribute name="usertime" value="" type="string" />
+	<attribute name="cbtext" value="" type="string" />
+	
+	<handler name="oninit">
+		<![CDATA[
+	        var downloadurl = canvas.getUrl() + 'DownloadHandler?fileName=CHAT'
+	        		+'&moduleName=chat&parentPath=&room_id='
+	        		+'&remoteUserid='+this.user_id
+	        		+'&sid='+canvas.sessionId;
+	        		
+	        if ($debug) Debug.write("downloadurl "+downloadurl);
+	        this._userpic.setAttribute('src',downloadurl);	
+	        
+	        if ($debug) Debug.write("TIME: "+this.usertime);
+	        
+        ]]>
+	</handler>
+	
+	<image name="_userpic" />
+
+	<text text="$once{ parent.username }" x="40"
+		  width="$once{ parent.width - 40 }"
+		  selectable="true" />
+	
+	<text text="$once{ parent.usertime }" x="40" y="20" />
+
+</class>
+
+<class name="roomListDetails" extends="view" >
+
+	<attribute name="roomid" value="0" type="number" />
+	<attribute name="roomname" value="" type="string" />
+	<attribute name="roomcomment" value="" type="string" />
+	<attribute name="currentusers" value="null" />
+	
+	
+	<method name="doinit" args="currentusers,roomid,roomname,roomcomment">
+		<![CDATA[
+			if ($debug) Debug.write("doinit",currentusers,roomid,roomname);
+			this.setAttribute('currentusers',currentusers);
+			this.setAttribute('roomid',roomid);
+			this.setAttribute('roomname',roomname);
+			this.setAttribute('roomcomment',roomcomment);
+			this._roomname.setAttribute('text',canvas.getLabelName(406)+" "+roomname);
+			this._roomcomment.setAttribute('text', roomcomment);
+			this._users.clearList();
+			if (this.currentusers != null) {
+				for (var i = 0;i<this.currentusers.length;i++){
+					var username = this.currentusers[i].firstname + " "
+							+ this.currentusers[i].lastname
+							+ " (" + this.currentusers[i].username + ") ";
+					 new lz.userRoomTabItem(this._users._users._cbtext,{user_id:this.currentusers[i].user_id,username:username,usertime:canvas.getLabelName(408)+parseDateToStringTime(this.currentusers[i].roomEnter)});
+				}
+			}
+			this.bdatum.setAttribute("visibility", "hidden");
+    		this.edatum.setAttribute("visibility", "hidden");
+    		this.l_bdatum.setAttribute("visibility", "hidden");
+    		this.l_edatum.setAttribute("visibility", "hidden");
+    		if (roomid > 0) {
+				this.getAppointmentData.doCall();
+			}
+		]]>
+	</method>
+	
+	<!-- Retrieving Appointmentdata for Meeting -->
+	<netRemoteCallHib name="getAppointmentData" remotecontext="$once{ canvas.thishib }" 
+		funcname="conferenceservice.getAppointMentDataForRoom" >   
+		<netparam><method name="getValue">return parent.parent.roomid;</method></netparam>
+		<handler name="ondata" args="value">	
+		    <![CDATA[
+		    	if ($debug) Debug.write("getAppointmentData: ",value);
+		    	
+		    	if(value!=null){
+		    		
+		    		if ($debug) Debug.write("Appointment Name : " + value.title);
+		    		parent.bdatum.setAttribute('text',""+value.start);
+		    		parent.edatum.setAttribute('text',""+value.end);
+		    		
+		    		
+		    		parent.bdatum.setAttribute("visibility","visible");
+		    		parent.edatum.setAttribute("visibility","visible");
+		    		parent.l_bdatum.setAttribute("visibility","visible");
+		    		parent.l_edatum.setAttribute("visibility","visible");
+		    		
+		    		if ($debug) Debug.write("Appointment Start : " + value.start);
+		    		if ($debug) Debug.write("Appointment End : " + value.end);
+		    		
+		    	} else{
+		    		
+		    		parent.bdatum.setAttribute('text','');
+		    		parent.edatum.setAttribute('text','');
+		    		
+		    		parent.bdatum.setAttribute("visibility", "hidden");
+		    		parent.edatum.setAttribute("visibility", "hidden");
+		    		parent.l_bdatum.setAttribute("visibility", "hidden");
+		    		parent.l_edatum.setAttribute("visibility", "hidden");
+		    		
+		    	}
+		    ]]>	        	          				
+		</handler>	
+	</netRemoteCallHib> 	
+	
+	<netRemoteCallHib name="getRoomClientsListByRoomId" funcname="conferenceservice.getRoomClientsListByRoomId" 
+		remotecontext="$once{ canvas.thishib }" >   
+		<netparam><method name="getValue">return parent.parent.roomid;</method></netparam>
+		<handler name="ondata" args="value">	
+		    <![CDATA[
+		    	if ($debug) Debug.write("getRoomClientsListByRoomId: ",value);
+		    	parent.currentusers = value;
+		    	parent.doinit();
+		    ]]>	        	          				
+		</handler>	
+	</netRemoteCallHib>   	
+	
+	<labelText labelid="404" fontstyle="italic" width="200" />
+	
+	<labelText name="_roomname" labelid="406" y="20" width="200" />
+	
+	<labelText name="l_bdatum" labelid="570" y="40" width="50" visible="false" />
+	<labelText name="bdatum" y="40" x="75" width="100" text="" visible="false" /> 	            	
+
+	<labelText name="l_edatum" labelid="571" y="60" width="50" visible="false" />
+	<labelText name="edatum" y="60" x="75" width="100" text="" visible="false" />
+
+	<labelText name="_roomcomment" x="75" y="${parent.l_edatum.y + (parent.l_edatum.visible ? 30 : 0)}" width="100" text=""/>
+	<labelText labelid="270" y="${parent._roomcomment.y}" width="50" />
+
+	<labelText name="user_label" labelid="407" y="${10 + parent._roomcomment.y + parent._roomcomment.height}" width="200" />
+	<view name="_users" width="300" y="${30 + parent._roomcomment.y + parent._roomcomment.height}"
+				height="${ parent.height - parent._users.y }" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+		<method name="clearList">
+			for (var eg in this._users._cbtext.subviews) 
+				this._users._cbtext.subviews[eg].destroy();
+		</method>
+		<view name="_users" width="299" height="${ parent.height - 1 }" bgcolor="0xFFFFFF" 
+			  x="1" y="1" clip="true" >
+			<view name="_cbtext" width="286" layout="axis:y;spacing:2" />
+			<om_vscrollbar />
+		</view>
+	</view>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/conference/roomListItem.lzx b/WebContent/src/modules/conference/conference/roomListItem.lzx
new file mode 100644
index 0000000..e9776d9
--- /dev/null
+++ b/WebContent/src/modules/conference/conference/roomListItem.lzx
@@ -0,0 +1,206 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="roomListItem" extends="view" bgcolor="$once{ canvas.bgColorMenuItems }" 
+		   height="50" onmouseover="" onmouseout="" width="478" >
+
+		<attribute name="ispublic" value="false" type="boolean" />
+		<attribute name="isaudience" value="false" type="boolean" />
+		<attribute name="obj" value="null" />
+		<attribute name="roomid" value="0" type="number" />
+		<attribute name="starttime" value="" type="string" />
+		<attribute name="roomname" value="" type="string" />
+		<attribute name="roomcomment" value="" type="string" />
+
+		<attribute name="roomClassName" value="conferenceView" type="string" />
+		<attribute name="currentusers" value="null" />
+
+		<attribute name="maxUsers" value="4" type="number" />
+		
+		<attribute name="roomType" value="0" type="number" />
+
+		<attribute name="checkForMaxUsers" value="false" type="boolean" />
+
+		<handler name="oninit">
+		<![CDATA[
+
+		    if (obj != null) {
+    			//if ($debug) Debug.write("obj: ",obj);
+    			if (this.ispublic) {
+    				this.maxUsers = obj.numberOfPartizipants;
+    			} else {
+    				this.maxUsers = obj.room.numberOfPartizipants;
+    			}
+    			this._users.setAttribute('text', canvas.getLabelName(398) + ' '
+    							+ this.currentusers.length + " / " + this.maxUsers);
+    			var tString = canvas.getLabelName(401) + "<br/>";
+    			for (var i = 0; i < this.currentusers.length; i++) {
+    				tString += this.currentusers[i].firstname + " "
+    						+ this.currentusers[i].lastname + " ("
+    						+ this.currentusers[i].username + ") "
+    						+ canvas.getLabelName(399)
+    						+ parseDateToStringTime(this.currentusers[i].roomEnter)
+    						+ " <br/>";
+    			}
+    			this._labeltooltip.setAttribute('text', tString);
+		    }
+		]]>
+		</handler>
+
+		<handler name="onclick">
+			if (obj != null) {
+    			canvas.isConference = !this.isaudience;
+    			if (this.isaudience)
+    				connectedIsAudience = '_' + 'audi';
+    			if (this.ispublic) {
+    				hib.conferencedomain = "public";
+    				hib.currentroomid = this.obj.rooms_id;
+    			} else {
+    				hib.conferencedomain = this.obj.organisation.organisation_id;
+    				hib.currentroomid = this.obj.room.rooms_id;
+    			}
+			}
+			parent.parent.parent.parent.parent._roomlistdetails.doinit(
+    					this.currentusers, this.roomid, this.roomname, this.roomcomment);
+		</handler>
+
+		<method name="checkMaxUsers">
+		<![CDATA[
+			if (this.currentusers == null || this.currentusers.length < this.maxUsers) {
+				this.enterRoom();
+			} else {
+				new lz.labelerrorPopup(canvas,{errorlabelid:99});
+				//new lz.rpcErrorDialog(canvas.main_content._content.inner, {
+				//			errorid : 30
+				//		});
+			}
+		]]>
+		</method>
+		
+		<method name="enterRoom">
+			if (this.obj == null) {
+				this.getRoomByOwnerAndType.doCall();
+			} else {
+				this.initRoom();
+			}
+		</method>
+		
+		<netRemoteCallHib name="getRoomByOwnerAndType" funcname="conferenceservice.getRoomByOwnerAndType"
+            remotecontext="$once{ canvas.thishib }" >
+			<netparam><method name="getValue">return canvas.sessionId;</method></netparam>  
+            <netparam> <method name="getValue">return parent.parent.roomType;</method></netparam>
+            <netparam> <method name="getValue">return parent.parent.roomname;</method></netparam>
+            <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getRoomByOwnerAndType: ", value);
+                if (value != null) {
+                    parent.obj = value;
+                    parent.enterRoom();
+                }
+            ]]>
+            </handler>
+        </netRemoteCallHib>
+
+		<method name="initRoom">
+			if ($debug) Debug.write("roomListItem::initRoom ", this);
+			
+			canvas.isConference = !this.isaudience;
+			if (this.isaudience)
+				connectedIsAudience = '_' + 'audi';
+			if (this.ispublic) {
+				var roomObj = this.obj;
+				hib.conferencedomain = "public";
+				hib.currentroomid = this.obj.rooms_id;
+				//Debug.write("ispublic");
+			} else {
+				var roomObj = this.obj.room;
+				hib.conferencedomain = this.obj.organisation.organisation_id;
+				hib.currentroomid = this.obj.room.rooms_id;
+				//Debug.write("non ispublic");
+			}
+			
+			if (this.roomType == 1) {
+				this.roomClassName = canvas.conferenceRoomModule;
+			} else if (this.roomType == 2) {
+				new lz.labelerrorPopup(canvas,{error:'No RoomType currently available for roomTypeId 2'});
+				this.roomClassName = canvas.restrictedRoomModule;
+			} else if (this.roomType == 3) {
+                this.roomClassName = canvas.restrictedRoomModule;
+            } else if (this.roomType == 4) {
+                this.roomClassName = canvas.interviewRoomModule;
+            } else if (this.roomType == 5) {
+                this.roomClassName = canvas.customRoomModule;
+            } else {
+				if ($debug) Debug.warn("Not known RoomType: ",this.roomType);
+			}
+			//the conferencedomain is no more interesting, swagner 07.10.2009
+			//if ($debug) Debug.write("hib.conferencedomain: ", hib.conferencedomain);
+
+			if ($debug) Debug.write("Test Setup ",this.roomClassName);
+            
+			new lz.testSetup(canvas,{roomClassName:this.roomClassName,roomObj:roomObj});
+			
+		</method>
+
+		<netRemoteCallHib name="getRoomClientsListByRoomId" funcname="conferenceservice.getRoomClientsListByRoomId"
+			remotecontext="$once{ canvas.thishib }" >
+			<netparam> <method name="getValue">return parent.parent.roomid;</method></netparam>
+			<handler name="ondata" args="value">
+			<![CDATA[
+				if ($debug) Debug.write("getRoomClientsListByRoomId: ", value);
+				parent.currentusers = value;
+				parent.oninit.sendEvent();
+				if (parent.checkForMaxUsers) {
+					parent.checkMaxUsers();
+				}
+			]]>
+			</handler>
+		</netRemoteCallHib>
+
+		<labelText text="$once{ parent.roomname }" />
+
+		<labelText name="_users" y="26" />
+		<image name="_r" src="$once{ canvas.getThemeImage('reload_rsc') }" x="130" y="26"
+			onclick="parent.getRoomClientsListByRoomId.doCall()" >
+			<labelTooltip labelid="402" />
+		</image>
+  
+		<method name="checkConditionsWhenButtonClicked" args="_clicked">
+		<![CDATA[
+			if (parent.parent.parent.parent.parent.parent.parent.parent.finishedTabsQuantity < 3) {
+				parent.parent.parent.parent.parent.parent.parent.parent.clickedButton = _clicked;
+			} else {
+				checkForMaxUsers = true;
+				getRoomClientsListByRoomId.doCall();
+			}
+		]]>
+		</method>
+
+		<simpleLabelButton labelid="131" x="364" width="100" height="24" y="24"
+			onclick="parent.checkConditionsWhenButtonClicked(this)">
+		</simpleLabelButton>
+		
+		<labelTooltip multiline="true" name="_labeltooltip" />
+
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx
new file mode 100644
index 0000000..4759d21
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/activityList.lzx
@@ -0,0 +1,582 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="simplebaseItemActivityList" extends="view" height="40" bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+    
+    <attribute name="message" value="" type="string" />
+    
+    <attribute name="rcl" value="null" />
+    
+    <attribute name="tStamp" value="null" />
+    
+    <method name="removeObject">
+        this.sendClearMessage(false);
+    </method>
+    
+    <method name="closeItem">
+        this._doHide.setAttribute('started', true);
+    </method>
+    
+    <method name="destroyItem">
+        this.destroy();
+        parent.scrollToMax();
+    </method>
+    
+    <method name="sendClearMessage" args="bool">
+        canvas.thishib.sendMessageWithClient.sendAdvMessage("hideActivityObj",bool,this.tStamp);
+    </method>
+    
+    <miniIcons resource="allow_deny_icon_rsc" visible="${ canvas.ismoderator }"
+               x="$once{ parent.width - 18 }" y="0">
+        <handler name="onclick">
+            this.parent.removeObject();
+        </handler>
+        <labelTooltip labelid="154" />
+    </miniIcons>   
+    
+    <animator name="_doHide" attribute="opacity" duration="1250" to="0" started="false">
+        <handler name="onstop">
+            parent.destroyItem();
+        </handler>
+    </animator>    
+    
+</class>	
+	
+<class name="baseItemActivityList" extends="view" height="40" bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+	
+	<attribute name="message" value="" type="string" />
+	
+	<attribute name="labelidToolTipOkButton" value="1360" type="number" />
+	<attribute name="labelidToolTipDenyButton" value="1361" type="number" />
+    
+    <attribute name="rcl" value="null" />
+    
+    <attribute name="tStamp" value="null" />
+    
+    <method name="removeObject">
+        this.sendClearMessage(false);
+    </method>
+    
+    <method name="closeItem">
+    	this._doHide.setAttribute('started', true);
+    </method>
+    
+    <method name="destroyItem">
+        this.destroy();
+        parent.scrollToMax();
+    </method>
+    
+    <method name="sendClearMessage" args="bool">
+		canvas.thishib.sendMessageWithClient.sendAdvMessage("hideActivityObj",bool,this.tStamp);
+    </method>
+    
+    <miniIcons resource="allow_ok_icon_rsc" visible="${ canvas.ismoderator }"
+    		   x="$once{ parent.width - 18 }" >
+        <handler name="onclick">
+            this.parent.applyObject();
+        </handler>
+        <labelTooltip labelid="$once{ parent.parent.labelidToolTipOkButton }" />
+    </miniIcons> 
+               
+    <miniIcons resource="allow_deny_icon_rsc" visible="${ canvas.ismoderator }"
+    		   x="$once{ parent.width - 18 }" y="16">
+        <handler name="onclick">
+            this.parent.removeObject();
+        </handler>
+        <labelTooltip labelid="$once{ parent.parent.labelidToolTipDenyButton }" />
+    </miniIcons>   
+    
+    <animator name="_doHide" attribute="opacity" duration="1250" to="0" started="false">
+        <handler name="onstop">
+            parent.destroyItem();
+        </handler>
+    </animator>    
+	
+</class>
+
+<class name="activityListRestrictedRoomAV" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+        canvas.thishib.setBroadCastingFlag.avsettings = "av";
+        canvas.thishib.setBroadCastingFlag.doCall(); 
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="av_allow_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="40"
+               width="$once{ parent.width - 60 }"/>
+               
+</class>
+	
+<class name="activityListRestrictedRoomApplyForMuteOn" extends="baseItemActivityList" 
+	   labelidToolTipOkButton="1400">
+    
+    <method name="applyObject">
+        canvas.thishib.switchMicMuted.setMute(this.rcl.publicSID,true);
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="mute_btn_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="40"
+               width="$once{ parent.width - 60 }"/>
+               
+</class>
+
+<class name="activityListRestrictedRoomApplyForGiveExclusiveAudioOn" extends="baseItemActivityList"
+	   labelidToolTipOkButton="1428">
+
+    <method name="applyObject">
+        canvas.thishib.setCanGiveAudio.sendValue(this.rcl.publicSID,true);
+        this.sendClearMessage(true);
+    </method>
+
+    <view resource="participants_exclusive_audio_rsc" x="2" y="2" />
+
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+
+</class>
+	
+<class name="activityListRestrictedRoomApplyForMuteOff" extends="baseItemActivityList" 
+	   labelidToolTipOkButton="1401">
+	
+    <method name="applyObject">
+    	canvas.thishib.switchMicMuted.setMute(this.rcl.publicSID,false);
+        this.sendClearMessage(true);
+    </method>	
+	
+	<view resource="unmute_btn_rsc" x="2" y="2" />
+	
+	<labelText text="$once{ parent.message }" multiline="true" x="20"
+			   width="$once{ parent.width - 40 }"/>
+               
+</class>	
+
+<class name="activityListRestrictedRoomA" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+        canvas.thishib.setBroadCastingFlag.avsettings = "a";
+        canvas.thishib.setBroadCastingFlag.doCall(); 
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="allow_audio_only_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>  
+    
+<class name="activityListRestrictedRoomV" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+        canvas.thishib.setBroadCastingFlag.avsettings = "v";
+        canvas.thishib.setBroadCastingFlag.doCall(); 
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="allow_video_only_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>   
+
+<class name="activityListRestrictedRoomWhiteboard" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        canvas.thishib.setCanDraw.publicSID = this.rcl.publicSID;
+        canvas.thishib.setCanDraw.canDraw = true;
+        canvas.thishib.setCanDraw.doCall();
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="participants_allow_drawing_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>  
+
+<class name="activityListRestrictedRoomScreen" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        
+        canvas.thishib.setCanShare.publicSID = this.rcl.publicSID;
+        canvas.thishib.setCanShare.canShare = true;
+        canvas.thishib.setCanShare.doCall();
+        
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="screen_allow_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>  
+
+<class name="activityListRestrictedRoomRemote" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        
+        canvas.thishib.setCanRemote.publicSID = this.rcl.publicSID;
+        canvas.thishib.setCanRemote.canRemote = true;
+        canvas.thishib.setCanRemote.doCall();
+
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="remote_allow_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class> 
+
+<class name="activityListMessageRequest" extends="simplebaseItemActivityList">
+    
+    <method name="applyObject">
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="warning_icon_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>  
+
+<class name="activityListRestrictedRoomModeration" extends="baseItemActivityList">
+    
+    <method name="applyObject">
+        canvas.thishib.addModerator.publicSIDOfNewModerator = this.rcl.publicSID;
+        canvas.thishib.addModerator.doCall();
+        this.sendClearMessage(true);
+    </method>   
+    
+    <view resource="participants_isMod_rsc" x="2" y="2" />
+    
+    <labelText text="$once{ parent.message }" multiline="true" x="20"
+               width="$once{ parent.width - 40 }"/>
+               
+</class>  
+
+<class name="activityList" y="${ parent.height - 200 }" x="0"
+	   extends="basePropertyPanelWhiteboard" height="200" 
+         width="$once{ parent.width-10 }" labelid="1363" 
+         visibility="${((canvas.currentRoomObj.hideActivitiesAndActions == true) ? 'hidden':'visible')}">
+    
+    <handler name="oninit">
+        canvas.currentActivityList = this;
+    </handler>
+    
+    <method name="addMessageRequest" args="rcl,message,tStamp">
+        <![CDATA[
+            var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] : " +
+                                   message + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            
+            new lz.activityListMessageRequest(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                        
+    </method>
+    
+    
+    <method name="addModerationRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                                   canvas.getLabelName(693) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(693) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+            
+            new lz.activityListRestrictedRoomModeration(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                        
+    </method>
+    
+    <method name="addScreenRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1070) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1070) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                               
+            new lz.activityListRestrictedRoomScreen(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                      
+    </method>
+    
+    <method name="addRemoteRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1082) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1082) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                               
+            new lz.activityListRestrictedRoomRemote(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                      
+    </method>
+    
+    <method name="applyForMuteOn" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1396) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1399) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                               
+            new lz.activityListRestrictedRoomApplyForMuteOn(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                      
+    </method>
+
+    <method name="applyForGiveExclusiveAudioOn" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1427) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1426) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+
+            new lz.activityListRestrictedRoomApplyForGiveExclusiveAudioOn(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+
+            this._list._list.scrollToMax();
+        ]]>
+    </method>
+    
+    <method name="applyForMuteOff" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1397) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1398) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                               
+            new lz.activityListRestrictedRoomApplyForMuteOff(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                      
+    </method>
+    
+    <method name="addWhiteboardRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(694) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(694) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                               
+            new lz.activityListRestrictedRoomWhiteboard(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();                                        
+        ]]>                      
+    </method>
+    
+    <method name="addAudioRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1080) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1080) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                           
+            new lz.activityListRestrictedRoomA(this._list._list,{
+                                        message:txt,
+                                        width:this._list.width-14,
+                                        rcl:rcl,
+                                        tStamp:tStamp
+                                    });
+                                    
+            this._list._list.scrollToMax();                                    
+       ]]>                  
+    </method>
+    
+    <method name="addVideoRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                           canvas.getLabelName(1081) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {                
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(1081) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+                           
+            new lz.activityListRestrictedRoomV(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();
+        ]]>
+    </method>
+    
+    <method name="addAudioAndVideoRequest" args="rcl,tStamp">
+        <![CDATA[
+            if (rcl.publicSID == canvas.publicSID) {
+                var txt = "<b>"+canvas.getLabelName(1362)+"</b> " +
+                               canvas.getLabelName(695) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            } else {
+                var txt = rcl.firstname + " " + rcl.lastname + " " +
+                                   "[" + rcl.username + "] " +
+                                   canvas.getLabelName(695) + " [" + getStringTimeByTimeStamp(tStamp) + "]";
+            }
+            
+            new lz.activityListRestrictedRoomAV(this._list._list,{
+                                            message:txt,
+                                            width:this._list.width-14,
+                                            rcl:rcl,
+                                            tStamp:tStamp
+                                        });
+                                        
+            this._list._list.scrollToMax();
+        ]]>
+    </method>
+    
+    <method name="hideActivityObj" args="messageObj">
+    	<![CDATA[
+    	
+    	    for (var i=0;i<this._list._list.subviews.length;i++) {
+    	    	
+    	    	if ($debug) Debug.write("hideActivityObj:: ",this._list._list.subviews[i].tStamp,messageObj.message[2]);
+    	    	
+    	    	if (this._list._list.subviews[i].tStamp == messageObj.message[2]) {
+    	    		
+    	    		this._list._list.subviews[i].closeItem();
+    	    		
+    	    		return;
+    	    		
+    	    	}
+    	    	
+    	    }
+    	
+    	]]>
+    </method>
+    
+    <view name="_list" y="21" height="179" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }"
+    	  width="$once{ parent.width }" clip="true">
+        
+        <view name="_list">
+            
+            <method name="scrollToMax">
+                <![CDATA[
+			        if(this.height>parent.height){
+			            parent.myscrollbar.scrolltarget.setAttribute(parent.myscrollbar.scrollattr,(parent.height-this.height));
+			        }
+		        ]]>
+            </method>
+            
+            <simplelayout name="_layout" axis="y" spacing="1" />
+            
+        </view>
+        
+        <om_vscrollbar name="myscrollbar" />
+        
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/library.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/library.lzx
new file mode 100644
index 0000000..4046d92
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- FamFam Icon Set -->
+    <resource name="allow_ok_icon_rsc" src="resources/tick.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="allow_deny_icon_rsc" src="resources/cross.png" />
+  
+    <include href="activityList.lzx" />
+	
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/cross.png b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/cross.png
new file mode 100644
index 0000000..1514d51
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/cross.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/tick.png b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/tick.png
new file mode 100644
index 0000000..a9925a0
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/activitylist/resources/tick.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/appointmentNotificationPopUp.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/appointmentNotificationPopUp.lzx
new file mode 100644
index 0000000..49bbe5e
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/appointmentNotificationPopUp.lzx
@@ -0,0 +1,81 @@
+<?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.
+  
+-->
+<library>
+
+<class name="appointmentNotificationPopUp" extends="guiPresenter" labelid="1144" y="30"
+    isdragable="false" minimizable="false" maximizable="false" fullToolBar="true" 
+    resizeable="false" width="280" height="280" x="$once{ parent.width-this.width-10 }">
+	
+	<attribute name="roomobj" value="null" />
+	
+	<handler name="oninit" >
+		this.getAppointMentAndTimeZones.doCall();
+	</handler>
+	
+	<!-- Retrieving Appointmentdata for Meeting -->
+	<netRemoteCallHib name="getAppointMentAndTimeZones" remotecontext="$once{ canvas.thishib }" funcname="conferenceservice.getAppointMentDataForRoom" >
+		<netparam><method name="getValue">return parent.parent.roomobj.rooms_id;</method></netparam>
+		<handler name="ondata" args="value">	
+		<![CDATA[
+			if ($debug) Debug.write("getAppointMentAndTimeZones 1: ",parent.roomobj.rooms_id);
+			if ($debug) Debug.write("getAppointMentAndTimeZones 2: ",value);
+			
+			if (value != null) {
+				parent._appstart.setAttribute('text', value.start);
+				parent._append.setAttribute('text', value.end);
+				parent._timeZone.setAttribute('text', value.owner.timeZoneId);
+				
+				parent._appName.setAttribute('text', value.title);
+				parent._appDescr._appDescr.setAttribute('text', value.description ? value.description : "");
+				
+				parent._createdby.setAttribute('text', value.owner.firstname + ' ' + value.owner.lastname );
+			}
+		]]>	        	          				
+		</handler>	
+	</netRemoteCallHib> 
+	
+	<labelText name="appName" y="24" labelid="1145" width="50"/>
+	<labelText name="_appName" x="75" y="24" width="200" fontstyle="bold" /> 
+	
+	<labelText name="appDescr" y="46" labelid="1146" width="50"/>
+	<view name="_appDescr" x="75" y="46" width="200" height="100" bgcolor="0xFFFFFF" clip="true">
+		<labelText name="_appDescr" y="24" width="184" multiline="true" /> 
+		<om_vscrollbar />
+	</view>
+	
+	<labelText name="l_sdatum" labelid="1143" y="150" width="50" />
+	<labelText name="_timeZone" x="75" y="150" width="200" resize="false" bgcolor="0xFFFFFF" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"/> 
+	
+	<labelText name="appstartlabel" y="170" labelid="570" width="50"/>
+	<labelText name="_appstart" x="75" y="170" width="200" resize="false" bgcolor="0xFFFFFF" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"/> 
+	
+	<labelText name="l_edatum" labelid="571" y="190" width="50"  />
+	<labelText name="_append" y="190" x="75" width="200" text="" resize="false" bgcolor="0xFFFFFF" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"/> 	 
+	
+	<labelText name="l_createdby" labelid="1147" y="210" width="50"  />
+	<labelText name="_createdby" y="210" x="75" width="200" text="" resize="false" bgcolor="0xFFFFFF" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }"/> 	   
+	
+    <simpleLabelButton labelid="1130" width="100" x="$once{ parent.width-105 }" 
+           y="$once{ parent.height-24 }" onclick="this.parent.close();" />	           	
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
new file mode 100644
index 0000000..e748c92
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
@@ -0,0 +1,227 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="dtmfButton" extends="button" width="20" height="20" >
+    <attribute name="dtmf" value="" type="string"/>
+    <handler name="onclick">
+        callDTMFButton(this,this.text);
+    </handler>
+    <method name="doNextSipNumber">
+        if ($debug) Debug.write("doNextSipNumber ",this.text);
+    </method>
+</class>
+    
+<class name="debugPinCode" extends="labelExplorerBox" title="Enter PIN Code"
+    docking="true" resizeable="false" closable="true" width="100" x="14" height="120">
+    
+    
+    <view y="24">
+        
+        <dtmfButton text="1" x="20" dtmf="1"/> 
+            <dtmfButton text="2" x="40" dtmf="2"/> 
+                <dtmfButton text="3" x="60" dtmf="3"/>
+                
+        <dtmfButton text="4" x="20" y="20" dtmf="4"/> 
+            <dtmfButton text="5" x="40" y="20" dtmf="5"/> 
+                <dtmfButton text="6" x="60" y="20" dtmf="6"/>
+                
+        <dtmfButton text="7" x="20" y="40" dtmf="7"/> 
+            <dtmfButton text="8" x="40" y="40" dtmf="8"/> 
+                <dtmfButton text="9" x="60" y="40" dtmf="9"/>
+                
+        <dtmfButton text="10" x="20" y="60" dtmf="10"/>
+        
+    </view>
+    
+    
+</class>
+
+<class name="baseConferenceRoom" extends="baseContentView" destroyByMethod="true" >
+    
+    <attribute name="roomobj" value="null" />
+    
+    <attribute name="meetingTimer" value="null" />
+    
+	<handler name="oninit">
+	<![CDATA[
+		_mainScrollBar.setAttribute("visibility","hidden");
+		
+		if ($debug) Debug.write("roomobj: ",this.roomobj);
+		
+		canvas.currentRoomObject = this.roomobj;
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name,"setRoomValues", [this.roomobj.roomtype.roomtypes_id,this.roomobj.rooms_id,this.roomobj]);
+		
+		if (this.roomobj.isClosed) {
+			canvas.roomClosed();
+		}
+		
+		if (this.roomobj.waitForRecording) {
+			new lz.labelerrorPopup(canvas, {labelid: 1316, errorlabelid: 1315});
+		}
+		
+		canvas._mainbgcontentNavi.setAttribute('height',0);
+		canvas.setAttribute('naviHeightDelta',28);
+		
+		if (this._chatPanelStrict) {
+			var hideChat = this.roomobj.hideChat != null && this.roomobj.hideChat;
+			this._chatPanelStrict.setAttribute('visible', !hideChat);
+			if (hideChat) {
+				this._chatPanelStrict.setAttribute('height', 28);
+			}
+		}
+		
+		if (this.roomobj.hideTopBar == null || !this.roomobj.hideTopBar) {
+			createMenu();
+			canvas._conferencemenu.setAttribute('visibility','visible');
+		} else {
+			canvas.setAttribute('naviHeight',0);
+			canvas._conferencemenu.setAttribute('visibility','hidden');
+			canvas._mainbgcontentNavi.setAttribute('visibility','hidden');
+		}
+		
+		if ($debug) Debug.write("this.roomobj ",this.roomobj);
+
+		new lz.moderationPanel(canvas._moderatormenu,{
+				name:'_moderationPanel',align:'right',
+				allowUserQuestions:this.roomobj.allowUserQuestions,
+				roomName:this.roomobj.name
+			});
+		if (roomobj.appointment) {
+			canvas.appointmentNotificationPopUp = new lz.appointmentNotificationPopUp(this,{name:'appDetail', roomobj:this.roomobj });
+		} else {
+			if ($debug) Debug.write("no appointed meeting");
+		}
+		
+		if (this.roomobj.isDemoRoom && this.roomobj.demoTime != null) {
+			if ($debug) Debug.warn("THIS IS A DEMO ROOM THAT SHOULD CLOSE AFTER SEC: ",this.roomobj.demoTime);
+			this.meetingTimer = new lz.meetingTimer(canvas,{refObj:this,roomobj:this.roomobj});
+		}
+		
+		canvas.currentBaseConferenceRoom = this;
+		canvas._videocontainer.setAttribute("allowUserQuestions",this.roomobj.allowUserQuestions);
+	]]>
+	</handler>
+    
+	<handler name="onkeydown" reference="lz.Keys" args="keyCode">
+	<![CDATA[
+		if ($debug) Debug.write("onkeydown:: keyCode = ", keyCode);
+		// common keys are processed firstly
+		if (canvas.ARRANGE_WINDOWS_KEY == keyCode) {
+			canvas.sendViaLocalConnection(canvas.vid_lc_name, "arrangeWindows", null);
+			return;
+		}
+		if (canvas.GIVE_EXCLUSIVE_AUDIO_KEY == keyCode) {
+			if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+				canvas.thishib.giveExclusiveAudio.setExclusiveAudio(canvas.publicSID);
+			} else {
+				new lz.rpcErrorDialog(canvas.main_content._content.inner,{errorid:-54});
+			}
+			return;
+		}
+		if (canvas.MUTE_AUDIO_KEY == keyCode) {
+			canvas._videocontainer._videoviewcontent.muteSound(canvas.publicSID, !canvas.micMuted);
+			return;
+		}
+	]]>
+	</handler>
+
+    <screenSharingAdapter name="_screenSharingAdapter" />
+    
+    <baseTabChatPanel name="_chatPanelStrict" labelid="616"
+       height="200" x="${ parent._sidePanel.width }"  
+       y="${ canvas.height - (this.height) - ((canvas.currentRoomObj.hideTopBar) ? 0 : 28) }" 
+       width="${ canvas.width - parent._sidePanel.width }" isopen="${ !canvas.currentRoomObj.chatOpened }" />
+       <!-- isopen need to be reverted, will be toggled -->
+       
+	<handler name="ontabcontentleave">
+		if ($debug) Debug.write("################# ontabcontentleave:",this);
+		
+		this._screenSharingAdapter.closeAllScreenSharings();
+		
+		canvas.currentBaseConferenceRoom = null;
+		
+		//reset the right to draw on WHiteboard as the RoomClient Object will be destroyed also
+		//on server-Side the canDraw status will be false again when you relogin the same room
+		canvas.isAllowedToDraw = true;
+		
+		_mainScrollBar.setAttribute("visibility","visible");
+		
+		//reset rights
+		canvas.isAllowedToGiveExclusiveAudio = false;
+		
+		if (canvas._videocontainer!=null) {
+			canvas._videocontainer.resetAllValues();
+			canvas._videocontainer = null;
+		}
+		if (canvas._chatcontent!=null) {
+			canvas._chatcontent = null;
+		}
+		if (canvas._mymod!=null) {
+			canvas._mymod = null;
+		}
+		
+		if (this.meetingTimer != null) {
+			this.meetingTimer.close();
+		}
+		
+		if (canvas._drawarea.letterObjectIsActive) {
+			canvas._drawarea.currentletterObj.destroy();
+		}
+		
+		if (canvas.currentFileExplorer != null) {
+			canvas.currentFileExplorer = null;
+		}
+		
+		if (canvas.currentActivityList != null) {
+			canvas.currentActivityList = null;
+		}
+		
+		//reset if the user was connected to any slave
+		canvas.isSlaveHosted = false;
+		
+		//@deprecated we will not use old screen sharing implementation
+		//canvas._screens.clearAllSessions();
+		this.logicalRoomLeave.doCall();
+		if ($debug) Debug.write("############ this.logicalRoomLeave ",this.logicalRoomLeave);
+	</handler>
+
+	<netRemoteCallHib name="logicalRoomLeave" funcname="logicalRoomLeave" remotecontext="$once{ canvas.thishib }" >
+		<handler name="ondata" args="value">
+			if ($debug) Debug.write("############# logicalRoomLeave: ",value);
+			//this.parent.destroy();
+			canvas.thishib.reconnectAfterRoomleft = true;
+			canvas.thishib.reconnectedRoomInstance = this.parent;
+			
+			// Reconnect User to default Scope
+			canvas.thishib.userScope = "hibernate";
+			var src = hib.getUrl();
+			canvas.thishib.setAttribute('src',src);
+			canvas.thishib.disconnect();
+			canvas._mainbgcontentNavi.setAttribute('height',canvas.naviHeight);
+			canvas.setAttribute('naviHeightDelta',canvas.naviHeight);
+			canvas._conferencemenu.removeAll();
+			canvas._conferencemenu.setAttribute('visibility','hidden');
+		</handler>
+	</netRemoteCallHib>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/baseRoomInnerList.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/baseRoomInnerList.lzx
new file mode 100644
index 0000000..ed6844b
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/baseRoomInnerList.lzx
@@ -0,0 +1,40 @@
+<?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.
+  
+-->
+<library>
+
+<!--
+
+    This class hold a bunch method that is shared between the 
+    User List of different Room Types
+
+ -->
+
+<class name="baseRoomInnerList" extends="view" >
+	
+    <handler name="oninit">
+        <![CDATA[
+            this.initList();
+        ]]>
+    </handler>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/flexibleConferenceRoom.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/flexibleConferenceRoom.lzx
new file mode 100644
index 0000000..ede5029
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/flexibleConferenceRoom.lzx
@@ -0,0 +1,54 @@
+<?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.
+  
+-->
+<library>
+
+<class name="flexibleConferenceRoom" extends="baseConferenceRoom">
+	<method name="createMenu">
+		new lz.conferenceMenubar(canvas._conferencemenu);
+	</method>
+
+    <conferenceRoomSidebar name="_sidePanel" />
+    
+    <view name="_videoviewcontent_hideWhiteboard" y="0" x="${ parent._sidePanel.width }"
+		  width="${canvas.width-parent._sidePanel.width}" height="${canvas.height-(parent._chatPanelStrict.height) - 
+        ((parent._chatPanelStrict.visibility == 'hidden') ? 5:28) + ((canvas.currentRoomObj.hideTopBar) ? 28:0)}" clip="true" 
+		  visibility="${((canvas.currentRoomObj.hideWhiteboard) ? 'visible':'hidden')}">
+			<view name="_inn" width="${parent.width-10}">				
+				<wrappinglayout axis="x" spacing="10"/>
+			</view>
+			<om_vscrollbar name="_attenddeescrollbar" visibility="visible"></om_vscrollbar>
+	</view>
+    
+    <fixedFileExplorerWhiteboardPanel name="_whiteboard" labelid="615"
+        y="0" x="${ parent._sidePanel.width }" 
+        width="${ canvas.width - parent._sidePanel.width }"
+        height="${ canvas.height - (parent._chatPanelStrict.height) - 
+        ((parent._chatPanelStrict.visible) ? 28 : 6) + ((canvas.currentRoomObj.hideTopBar) ? 28:0)}" />
+    
+    <!--
+        ###############################
+        This is the container for all Videos
+     -->
+    <commonVideoViewContent name="_videoviewcontent" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/innerlistViewEventUserListTable.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/innerlistViewEventUserListTable.lzx
new file mode 100644
index 0000000..72cb59e
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/innerlistViewEventUserListTable.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+
+<class name="innerlistViewEventUserListTable" extends="view" width="258" >
+    <wrappinglayout name="_layout" axis="x" spacing="4"/>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/interviewConferenceRoom.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/interviewConferenceRoom.lzx
new file mode 100644
index 0000000..69e5a40
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/interviewConferenceRoom.lzx
@@ -0,0 +1,46 @@
+<?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.
+  
+-->
+<library>
+
+<class name="interviewConferenceRoom" extends="baseConferenceRoom">
+	<method name="createMenu">
+		new lz.interviewConferenceMenubar(canvas._conferencemenu);
+	</method>
+	
+	<handler name="oninit">
+		canvas.currentRoomObj.hideScreenSharing = true;
+	</handler>
+	
+    <!--
+        User Panel and Participants List
+     -->
+    <interviewRoomSidebar name="_sidePanel" 
+                      listType="eventUserListTableWithNames" />
+    
+    <!--
+        Whiteboard in Interview Room Type those are the Video Pods
+     -->
+    <interviewWhiteboard name="_whiteboardInterview" x="${ parent._sidePanel.width }" 
+    	  width="${ canvas.width - parent._sidePanel.width }" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx
new file mode 100644
index 0000000..18cf2bb
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/library.lzx
@@ -0,0 +1,79 @@
+<?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.
+  
+-->
+<library>
+
+	<resource name="userstatus_multiframe_rsc">
+		<frame src="resources/bullet_ball_glass_green.png"/> <!-- user -->
+		<frame src="resources/bullet_ball_glass_yellow.png"/> <!-- mod -->
+		<frame src="resources/bullet_ball_glass_red.png"/> <!-- whiteboard allow -->
+	</resource>
+	
+	<resource name="chat_message_incoming_rsc" src="resources/ledlightgreen.png" />
+	
+	<!-- FamFam Icon Set -->
+	<resource name="screen_allow_rsc" src="resources/monitor_add.png" />
+	<!-- FamFam Icon Set -->
+    <resource name="screen_deny_rsc" src="resources/monitor_delete.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="remote_allow_rsc" src="resources/mouse_add.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="remote_deny_rsc" src="resources/mouse_delete.png" />
+	
+	<!-- FamFam Icon Set -->
+	<resource name="av_allow_rsc" src="resources/audio_and_video.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="av_deny_rsc" src="resources/audio_and_video_no.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="start_private_chat_rsc" src="resources/page_edit.png" />
+	
+	<!-- APL author sebawagner -->
+	<resource name="kick_user_rsc" src="resources/cancel_icon.png" />
+	
+	<!-- APL author sebawagner -->
+	<resource name="mute_micro_btn_rsc">
+        <frame src="resources/mute_micro.png" />
+        <frame src="resources/mute_micro_red.png" />
+    </resource>
+    
+    <!-- APL author sebawagner -->
+    <resource name="mute_btn_rsc" src="resources/mute_micro.png" />
+    <!-- APL author sebawagner -->
+    <resource name="unmute_btn_rsc" src="resources/mute_micro_red.png" />
+	
+	<!-- APL author sebawagner -->
+	<resource name="sidebar_tab_btn">
+		<frame src="resources/sidebar_close.png" />
+		<frame src="resources/sidebar_open.png" />
+	</resource>
+	
+	<include href="innerlistViewEventUserListTable.lzx" />
+	<include href="moderationMiniIconsEventUserList.lzx" />
+	<include href="activitylist/" />
+	<include href="roomSidebar/" />
+	<include href="appointmentNotificationPopUp.lzx" />
+	<include href="baseRoomInnerList.lzx" />
+    <include href="baseConferenceRoom.lzx" />
+    <include href="flexibleConferenceRoom.lzx" />
+    <include href="restrictedConferenceRoom.lzx" />
+    <include href="interviewConferenceRoom.lzx" />
+    
+    
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx
new file mode 100644
index 0000000..5d76e45
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/moderationMiniIconsEventUserList.lzx
@@ -0,0 +1,296 @@
+<?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.
+  
+-->
+<library>
+
+<class name="moderationMiniIconsEventUserList" extends="view">
+
+    <attribute name="showAvIcons" value="true" type="boolean" />
+	
+    <handler name="oninit">
+    	this.updateIcons();
+    </handler>	
+    
+    <method name="updateIcons">
+        if (canvas.ismoderator) {
+            this._isMod.setAttribute("visibility","visible");
+            this._isModAddbutton.setAttribute("visibility","hidden");
+        } else {
+            this._isMod.setAttribute("visibility","hidden");
+            this._isModAddbutton.setAttribute("visibility","visible");
+        }
+        
+        if (canvas.ismoderator) {
+            this._canDraw.setAttribute("visibility","visible");
+            this._canDraw.isActive = false;
+            //this._canDraw._text.setAttribute("text",canvas.getLabelName(681));
+            this._canDrawModerator.setAttribute("visibility","hidden");
+        } else {
+            if (canvas.isAllowedToDraw) {
+                this._canDraw.setAttribute("visibility","visible");
+                this._canDraw.isActive = true;
+                //this._canDraw._text.setAttribute("text",canvas.getLabelName(612));
+                this._canDrawModerator.setAttribute("visibility","hidden");
+            } else {
+                this._canDraw.setAttribute("visibility","hidden");
+                this._canDrawModerator.setAttribute("visibility","visible");
+            }
+        }
+        
+        if ($debug) Debug.write("canvas.isAllowedToScreenShare :: ",canvas.isAllowedToScreenShare);
+        
+        if (canvas.ismoderator) {
+            this._allowScreen.setAttribute("visibility","visible");
+            this._allowScreen.isActive = false;
+            
+            this._allowRemote.setAttribute("visibility","visible");
+            this._allowRemote.isActive = false;
+
+            this._allowExclusiveAudio.setAttribute("visibility","visible");
+            this._allowExclusiveAudio.isActive = false;
+            
+            //this._canDraw._text.setAttribute("text",canvas.getLabelName(681));
+            this._denyScreen.setAttribute("visibility","hidden");
+            this._denyRemote.setAttribute("visibility","hidden");
+            this._denyExclusiveAudio.setAttribute("visibility","hidden");
+        } else {
+            if (canvas.isAllowedToScreenShare) {
+                this._allowScreen.setAttribute("visibility","visible");
+                this._allowScreen.isActive = true;
+                //this._canDraw._text.setAttribute("text",canvas.getLabelName(612));
+                this._denyScreen.setAttribute("visibility","hidden");
+            } else {
+                this._allowScreen.setAttribute("visibility","hidden");
+                this._denyScreen.setAttribute("visibility","visible");
+            }
+            
+            if (canvas.isAllowedToRemoteControl) {
+            	this._allowRemote.setAttribute("visibility","visible");
+            	this._allowRemote.isActive = true;
+            	this._denyRemote.setAttribute("visibility","hidden");
+            } else {
+            	this._allowRemote.setAttribute("visibility","hidden");
+            	this._denyRemote.setAttribute("visibility","visible");
+            }
+
+            if (canvas.isAllowedToGiveExclusiveAudio) {
+                this._allowExclusiveAudio.setAttribute("visibility","visible");
+            	this._allowExclusiveAudio.isActive = true;
+            	this._denyExclusiveAudio.setAttribute("visibility","hidden");
+            } else {
+                this._allowExclusiveAudio.setAttribute("visibility","hidden");
+            	this._denyExclusiveAudio.setAttribute("visibility","visible");
+            }
+        }
+        
+        if ($debug) Debug.write("+ STATUS ICONS + ",this.showAvIcons,canvas.isBroadCasting);
+        
+        if (this.showAvIcons) {
+	        if (canvas.isBroadCasting) {
+	            this._allowDevice.setAttribute("visibility","hidden");
+	            this._denyDevice.setAttribute("visibility","visible");
+	        } else {
+	            this._allowDevice.setAttribute("visibility","visible");
+	            this._denyDevice.setAttribute("visibility","hidden");
+	        }
+        }
+        
+        
+        if (canvas.micMuted) {
+            this._muteDevice.setAttribute("visibility","hidden");
+            this._unMuteDevice.setAttribute("visibility","visible");
+        } else {
+            this._muteDevice.setAttribute("visibility","visible");
+            this._unMuteDevice.setAttribute("visibility","hidden");
+        }
+        
+        
+    </method>
+    
+    <simplelayout axis="x" spacing="2" />
+
+    <handler name="onMute" reference="canvas.thishib.switchMicMuted" args="event">
+        <![CDATA[
+            if ($debug) Debug.write("onMute ", event.publicSID, event.mute);
+            if(canvas.publicSID == event.publicSID) {
+                canvas.micMuted = event.mute;
+                this.updateIcons();
+            }
+        ]]>
+    </handler>
+	
+    <miniIconsNew name="_isMod" x="0" width="16" innerResource="participants_isMod_rsc" 
+    		   height="16" showhandcursor="false">
+        <handler name="onclick">
+            <![CDATA[
+                //Nothing happens here
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="688" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_isModAddbutton" opacity="0.5" x="0" width="16" innerResource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+                //Apply for Moderation
+                canvas.thishib.applyForModeration.doCall();
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="685" />
+    </miniIconsNew>
+        
+    <miniIconsNew name="_canDraw" x="20" width="16" innerResource="participants_allow_drawing_rsc" 
+               height="16" showhandcursor="false" >
+        <attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+            <![CDATA[
+                //Nothing happens here
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="689" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_canDrawModerator" x="20" width="16" opacity="0.5"
+               innerResource="participants_allow_drawing_rsc" height="16" showhandcursor="true">
+        <handler name="onclick">
+            //Ask for Right to Draw on Whiteboard
+            var tDate = new Date();
+            canvas.thishib.sendMessageWithClient.sendMessage("applyForWhiteboard",tDate.getTime());
+        </handler>
+        <labelTooltip labelid="686" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_allowScreen" x="40" width="16" height="16" 
+               innerResource="screen_allow_rsc" showhandcursor="false">
+        <attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+            <![CDATA[
+                if ($debug) Debug.write("Deny Screen: ",canvas.publicSID);
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1071" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_denyScreen" x="40" width="16" height="16" opacity="0.5"
+               innerResource="screen_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Screen: ",canvas.refObj.publicSID);
+            var tDate = new Date();
+        	canvas.thishib.sendMessageWithClient.sendMessage("applyForScreen",tDate.getTime());
+        </handler>
+        <labelTooltip labelid="1072" />
+    </miniIconsNew>    
+    
+ 	<miniIconsNew name="_allowRemote" x="60" width="16" height="16" 
+               innerResource="remote_allow_rsc" showhandcursor="false">
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+        	<![CDATA[
+                if ($debug) Debug.write("Deny Remote: ",canvas.publicSID);
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1081" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_denyRemote" x="60" width="16" height="16" opacity="0.5"
+               innerResource="remote_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Remote: ",parent.parent.parent.refObj.publicSID);
+            var tDate = new Date();
+            canvas.thishib.sendMessageWithClient.sendMessage("applyForRemote",tDate.getTime());
+        </handler>
+        <labelTooltip labelid="1080" />
+    </miniIconsNew>      
+          
+    
+    <miniIconsNew name="_allowDevice" x="80" width="40" height="16" opacity="0.5" 
+            visible="$once{ parent.showAvIcons }" innerResource="av_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("NOTHING: ",canvas.publicSID);
+            if (canvas.ismoderator) {
+                //Do directly send confirmation to share Audio/Video to SELF! so that all users get
+                //the notification and the broadcasting Bit is set for this User
+                canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+                canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+                canvas.thishib.setBroadCastingFlag.doCall(); 
+            } else {
+                //Apply for Right to Share Audio/Video
+                var tDate = new Date();
+                canvas.thishib.sendMessageWithClient.sendMessage("applyForAV",tDate.getTime());
+            }
+        </handler>
+        <labelTooltip labelid="687" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_denyDevice" x="80" width="40" height="16" 
+            visible="$once{ parent.showAvIcons }" innerResource="av_allow_rsc" showhandcursor="false">
+        <handler name="onclick">
+            if ($debug) Debug.write("DENY: ",canvas.publicSID);
+            //Nothing happens here
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = canvas.publicSID;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip name="_text" labelid="690" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_muteDevice" x="120" width="16" height="16" 
+    		   innerResource="mute_btn_rsc" showhandcursor="true">
+    	<handler name="onclick">
+            canvas._videocontainer._videoviewcontent.muteSound(canvas.publicSID, true);
+    	</handler>
+        <labelTooltip name="_tip" labelid="1403" />
+    </miniIconsNew>
+    
+    <miniIconsNew name="_unMuteDevice" x="120" width="16" height="16" innerResource="unmute_btn_rsc" 
+               showhandcursor="true" >
+    	<handler name="onclick">
+            canvas._videocontainer._videoviewcontent.muteSound(canvas.publicSID, false);
+        </handler>
+        <labelTooltip name="_tip" labelid="1404" />
+    </miniIconsNew>
+
+    <miniIconsNew name="_allowExclusiveAudio" x="60" width="16" height="16"
+               innerResource="participants_exclusive_audio_rsc" showhandcursor="false">
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+        	<![CDATA[
+                if ($debug) Debug.write("Deny Give Exclusive Audio: ",canvas.publicSID);
+                if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+	                canvas.thishib.giveExclusiveAudio.publicSID = canvas.publicSID;
+	                canvas.thishib.giveExclusiveAudio.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1433" />
+    </miniIconsNew>
+
+    <miniIconsNew name="_denyExclusiveAudio" x="60" width="16" height="16" opacity="0.5"
+               innerResource="participants_exclusive_audio_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Give Exclusive Audio: ",canvas.publicSID);
+            var tDate = new Date();
+            canvas.thishib.sendMessageWithClient.sendMessage("applyForGiveExclusiveAudioOn",tDate.getTime());
+        </handler>
+        <labelTooltip labelid="1432" />
+    </miniIconsNew>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.fla
new file mode 100644
index 0000000..2e1e601
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png
new file mode 100644
index 0000000..f35bb10
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.fla
new file mode 100644
index 0000000..a9962f3
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png
new file mode 100644
index 0000000..857db9c
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/audio_and_video_no.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_green.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_green.png
new file mode 100644
index 0000000..bbdcb01
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_green.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_red.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_red.png
new file mode 100644
index 0000000..886c125
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_red.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_yellow.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_yellow.png
new file mode 100644
index 0000000..fbf19db
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/bullet_ball_glass_yellow.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/cancel_icon.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/cancel_icon.png
new file mode 100644
index 0000000..2d26062
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/cancel_icon.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/ledlightgreen.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/ledlightgreen.png
new file mode 100644
index 0000000..abbdd12
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/ledlightgreen.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_add.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_add.png
new file mode 100644
index 0000000..a818066
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_delete.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_delete.png
new file mode 100644
index 0000000..3733256
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/monitor_delete.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_add.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_add.png
new file mode 100644
index 0000000..65bcab5
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_delete.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_delete.png
new file mode 100644
index 0000000..7286566
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mouse_delete.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.fla
new file mode 100644
index 0000000..210ddbf
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.png
new file mode 100644
index 0000000..71efdbe
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.fla
new file mode 100644
index 0000000..287c2a0
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.png
new file mode 100644
index 0000000..29e16b5
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/mute_micro_red.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/page_edit.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/page_edit.png
new file mode 100644
index 0000000..046811e
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/page_edit.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.fla
new file mode 100644
index 0000000..1d5fffd
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.png
new file mode 100644
index 0000000..08020fd
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_close.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.fla b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.fla
new file mode 100644
index 0000000..0fd7f7f
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.png b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.png
new file mode 100644
index 0000000..e778538
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/resources/sidebar_open.png
Binary files differ
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/restrictedConferenceRoom.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/restrictedConferenceRoom.lzx
new file mode 100644
index 0000000..6b2ae94
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/restrictedConferenceRoom.lzx
@@ -0,0 +1,54 @@
+<?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.
+  
+-->
+<library>
+
+<class name="restrictedConferenceRoom" extends="baseConferenceRoom">
+	<method name="createMenu">
+		new lz.restrictedConferenceMenubar(canvas._conferencemenu);
+	</method>
+
+    <restrictedRoomSidebar name="_sidePanel" restricted="true" 
+                      listType="eventUserListTableWithNames" />
+    
+    <view name="_videoviewcontent_hideWhiteboard" y="0" x="${ parent._sidePanel.width }"
+		  width="${canvas.width-parent._sidePanel.width}" height="${canvas.height-(parent._chatPanelStrict.height) - 
+        ((parent._chatPanelStrict.visibility == 'hidden') ? 5:28)}" clip="true" 
+		  visibility="${((canvas.currentRoomObj.hideWhiteboard) ? 'visible':'hidden')}">
+			<view name="_inn" width="${parent.width-10}">				
+				<wrappinglayout axis="x" spacing="10"/>
+			</view>
+			<om_vscrollbar name="_attenddeescrollbar" visibility="visible"></om_vscrollbar>
+	</view>
+    
+    <fixedFileExplorerWhiteboardPanel name="_whiteboard" labelid="615"
+        y="0" x="${ parent._sidePanel.width }" 
+        width="${ canvas.width - parent._sidePanel.width }"
+        height="${ canvas.height - (parent._chatPanelStrict.height) - ((parent._chatPanelStrict.visibility == 'hidden') ? 0:28) }" />
+        
+    <!--
+        ###############################
+        This is the container for all Videos
+     -->
+    <commonVideoViewContent name="_videoviewcontent" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebar.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebar.lzx
new file mode 100644
index 0000000..50c898e
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebar.lzx
@@ -0,0 +1,136 @@
+<?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.
+  
+-->
+<library>
+
+<class name="conferenceRoomSidebar" extends="view" width="280" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" 
+       height="${ canvas.height - ((canvas.currentRoomObj.hideTopBar) ? 0:28) }" y="0" clip="true">
+    
+    <attribute name="selected" value="null" />
+    
+    <attribute name="isOpen" value="true" type="boolean"/>
+    
+    <method name="doSelection" args="itemRef">
+        <![CDATA[
+            if (this.selected != null) {
+                this.selected.deselect();
+            }
+            
+            this.selected = itemRef;
+            this.selected.select();
+          
+            if ($debug) Debug.write("this.selected.name ",this.selected.name);
+            
+            if (this.selected.name == "userTabButton") {
+                if ($debug) Debug.write("-- userTabButton");
+                this._files.setAttribute("visibility","hidden");
+                this._videocontainer._applyAndStatusIcons.setAttribute("visibility","visible");
+                this._videocontainer._participants.setAttribute("visibility","visible");
+            } else if (this.selected.name == "filesTabButton") {
+                if ($debug) Debug.write("-- filesTabButton");
+                this._files.setAttribute("visibility","visible");
+                this._videocontainer._applyAndStatusIcons.setAttribute("visibility","hidden");
+                this._videocontainer._participants.setAttribute("visibility","hidden");
+            }
+        ]]>
+    </method>
+    
+    <method name="toggleStatus">
+        if (this.isOpen) {
+            this._doClose.setAttribute('started', true);
+            this.isOpen = false;
+            this._minimizeSidebar._icon.setAttribute("frame",2);
+            this._minimizeSidebar._icon._labelTooltip.setAttribute("labelid",857);
+        } else {
+            this._doOpen.setAttribute('started', true);
+            this.isOpen = true;
+            this._minimizeSidebar._icon.setAttribute("frame",1);
+            this._minimizeSidebar._icon._labelTooltip.setAttribute("labelid",856);
+        }
+    </method>
+    
+    <view name="borderBarTop" y="0"
+    			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+   	<view name="_tabbarBg" width="${ parent.width }" height="32" y="1" bgcolor="0xFAFAFA" />
+	<view name="borderBarBottom" y="34"
+   			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" /> 
+    
+    <view name="_head" y="1" width="${ parent.width-10 }" height="32"
+    		  layout="axis:x;spacing:2;inset:2" >
+    
+    	<handler name="oninit">
+		<![CDATA[
+    		for (var eg in this.subviews) {
+            	this.subviews[eg].deselect();
+            }
+            if (!canvas.currentRoomObj.hideFilesExplorer && canvas.currentRoomObj.filesOpened) {
+				this.filesTabButton.doSelection();
+			} else {
+				this.userTabButton.doSelection();
+			}
+		]]>
+    	</handler>
+   
+        <tabButtonMain name="userTabButton" height="$once{ parent.height }" width="$once{ (parent.width-6)/2 }"
+                currentIconRsc="users_tab_btn" labelid="613" />
+        
+        <tabButtonMain name="filesTabButton" currentIconRsc="files_tab_btn" height="$once{ parent.height }" 
+                labelid="614" width="$once{ (parent.width-6)/2 }"
+                visible="${(canvas.currentRoomObj.hideFilesExplorer ? false:true)}"/>
+        
+    </view>
+    
+    <fileExplorer name="_files" y="22" width="$once{ parent.width-12 }"
+               height="${ parent.height-222 }" visibility="hidden" />
+    
+    <participants name="_videocontainer" y="36" 
+                  width="$once{ parent.width-10 }" 
+               height="${ parent.height-((canvas.currentRoomObj.hideActivitiesAndActions == true) ? 36:236) }" />
+               
+    <activityList name="_activityList" />
+    
+    <view name="_minimizeSidebar" x="${ parent.width - 10 }" width="10" y="1"
+          				bgcolor="0xE0E1EB" height="${ parent.height-1 }">
+        <handler name="onclick">
+            parent.toggleStatus();
+        </handler>
+        
+        <view width="${ parent.width }" height="$once{ parent.height }" 
+               bgcolor="0xE0E1EB" >
+        </view>
+            
+        <view name="_icon" resource="sidebar_tab_btn" y="0">
+             <handler name="onclick">
+	            parent.parent.toggleStatus();
+	         </handler>
+	         <labelTooltip name="_labelTooltip" labelid="856" />
+        </view>
+        
+    </view>
+    
+    <animator name="_doOpen" attribute="width" to="$once{ parent.width }" 
+              duration="750" started="false" />
+              
+    <animator name="_doClose" attribute="width" to="10" 
+              duration="750" started="false" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebarTabButton.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebarTabButton.lzx
new file mode 100644
index 0000000..537b473
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/conferenceRoomSidebarTabButton.lzx
@@ -0,0 +1,87 @@
+<?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.
+  
+-->
+<library>
+
+<class name="conferenceRoomSidebarTabButton" extends="view" 
+	   width="$once{ (parent.width-2)/2 }" height="36" y="0">
+	
+	<attribute name="labelid" value="0" type="number" />
+	
+	<attribute name="selected" value="false" type="boolean" />
+	
+	<attribute name="textFontSize" value="14" type="number" />
+	
+	<attribute name="currentIconRsc" value="" type="string"/>
+	
+	<handler name="oninit">
+		if (this.selected) {
+			parent.parent.doSelection(this);
+		}
+	</handler>
+	
+	<handler name="onclick">
+		parent.parent.doSelection(this);
+	</handler>
+	
+	<handler name="onmouseover">
+		if (!this.selected) {
+			this._bg1.setAttribute("visibility","visible");
+		}
+	</handler>
+	
+	<handler name="onmouseout">
+        this._bg1.setAttribute("visibility","hidden");
+    </handler>
+	
+	<method name="select">
+		this.selected = true;
+		this._icon.setAttribute("opacity",1);
+        this._text.setAttribute("opacity",1);
+        this._bg1.setAttribute("visibility","hidden");
+		this._bg2.setAttribute("visibility","visible");
+		this._text.setAttribute("fontstyle","bold");
+		this._text.setAttribute("fgcolor","0xFFFFFF");
+	</method>
+     
+    <method name="deselect">
+        this.selected = false;
+        this._icon.setAttribute("opacity",0.5);
+        this._text.setAttribute("opacity",0.5);
+        this._bg2.setAttribute("visibility","hidden");
+        this._text.setAttribute("fontstyle","bold");
+        this._text.setAttribute("fgcolor","0xFFFFFF");
+    </method>       
+    
+    
+    <view name="_bg1" bgcolor="0xFFFFFF" width="$once{ parent.width }" 
+          height="$once{ parent.height }" opacity="0.7" visibility="hidden"/> 
+          
+    <view name="_bg2" bgcolor="0xFFFFFF" width="$once{ parent.width }" 
+          height="$once{ parent.height }" opacity="0.4" visibility="hidden"/>
+    
+    <view x="4" y="6" name="_icon" resource="$once{ parent.currentIconRsc }" />
+                
+    <labelText name="_text" x="28" fontsize="$once{ parent.textFontSize }" valign="middle" 
+               fgcolor="0xFFFFFF" labelid="$once{ parent.labelid }" />
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/interviewRoomSidebar.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/interviewRoomSidebar.lzx
new file mode 100644
index 0000000..84e9f88
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/interviewRoomSidebar.lzx
@@ -0,0 +1,82 @@
+<?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.
+  
+-->
+<library>
+
+<class name="interviewRoomSidebar" extends="view" width="280" 
+       height="${ canvas.height - ((canvas.currentRoomObj.hideTopBar) ? 0:28) }" y="0" clip="true">
+    
+    <attribute name="selected" value="null" />
+    
+    <attribute name="isOpen" value="true" type="boolean"/>
+    
+    <attribute name="restricted" value="true" type="boolean" />
+   
+    <attribute name="listType" value="eventUserListTable" type="string" />
+    
+    <method name="doSelection" args="itemRef">
+        <![CDATA[
+            if (this.selected != null) {
+                this.selected.deselect();
+            }
+            
+            this.selected = itemRef;
+            this.selected.select();
+          
+        ]]>
+    </method>
+    
+    <view name="borderBarTop" y="0"
+    			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+   	<view name="_tabbarBg" width="${ parent.width }" height="32" y="1" bgcolor="0xFAFAFA" />
+	<view name="borderBarBottom" y="34"
+   			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" /> 
+    
+    <view name="_head" y="1" width="${ parent.width-10 }" height="32"
+    		  layout="axis:x;spacing:2;inset:2" >
+    
+    	<handler name="oninit">
+    		for (var eg in this.subviews) {
+            	this.subviews[eg].deselect();
+            }
+            this.userTabButton.doSelection();
+    	</handler>
+        
+        <tabButtonMain name="userTabButton" height="$once{ parent.height }" width="$once{ (parent.width-6)/2 }"
+                currentIconRsc="users_tab_btn" labelid="613" />
+        
+    </view>
+    
+    <interviewUserList name="_videocontainer" y="36"
+			   width="$once{ parent.width-10 }" 
+               height="${ parent.height-((canvas.currentRoomObj.hideActivitiesAndActions == true) ? 36:236) }" />
+               
+    <activityList name="_activityList" />
+    
+    <view name="_minimizeSidebar" x="${ parent.width - 10 }" width="10" y="1"
+    	bgcolor="0xE0E1EB" height="${ parent.height-1 }">
+        
+        <view width="${ parent.width }" height="$once{ parent.height }" 
+               bgcolor="0xE0E1EB" >
+        </view>
+    </view>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/library.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/library.lzx
new file mode 100644
index 0000000..7d1201e
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="conferenceRoomSidebar.lzx" />
+    <include href="interviewRoomSidebar.lzx" />
+    <include href="restrictedRoomSidebar.lzx" />
+    <include href="conferenceRoomSidebarTabButton.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/restrictedRoomSidebar.lzx b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/restrictedRoomSidebar.lzx
new file mode 100644
index 0000000..e740760
--- /dev/null
+++ b/WebContent/src/modules/conference/flexibleConferenceRoom/roomSidebar/restrictedRoomSidebar.lzx
@@ -0,0 +1,148 @@
+<?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.
+  
+-->
+<library>
+
+<class name="restrictedRoomSidebar" extends="view" width="280"
+       height="${ canvas.height - 28 }" y="0" clip="true">
+    
+    <attribute name="selected" value="null" />
+    
+    <attribute name="isOpen" value="true" type="boolean"/>
+    
+    <attribute name="restricted" value="true" type="boolean" />
+   
+    <attribute name="listType" value="eventUserListTable" type="string" />
+    
+    <method name="doSelection" args="itemRef">
+        <![CDATA[
+        	if (itemRef.name == "filesTabButton") {
+            	if (this.restricted) {
+            		if (!canvas.ismoderator && !canvas.isAllowedToDraw) {
+            			//Do not allow
+            			new lz.labelerrorPopup(canvas,{errorlabelid:783});
+            			return;
+            		}
+            	}
+        	}
+            	
+            if (this.selected != null) {
+                this.selected.deselect();
+            }
+            
+            this.selected = itemRef;
+            this.selected.select();
+          
+            if ($debug) Debug.write("this.selected.name ",this.selected.name, this.inited);
+            
+            if (this.selected.name == "userTabButton") {
+                if ($debug) Debug.write("-- userTabButton");
+                this._files.setAttribute("visibility","hidden");
+                this._participants.setAttribute("visibility","visible");
+            } else if (this.selected.name == "filesTabButton") {
+                if ($debug) Debug.write("-- filesTabButton");
+                this._files.setAttribute("visibility","visible");
+                this._participants.setAttribute("visibility","hidden");
+            }
+        ]]>
+    </method>
+    
+    <method name="toggleStatus">
+        if (this.isOpen) {
+            this._doClose.setAttribute('started', true);
+            this.isOpen = false;
+            this._minimizeSidebar._icon.setAttribute("frame",2);
+            this._minimizeSidebar._icon._labelTooltip.setAttribute("labelid",857);
+        } else {
+            this._doOpen.setAttribute('started', true);
+            this.isOpen = true;
+            this._minimizeSidebar._icon.setAttribute("frame",1);
+            this._minimizeSidebar._icon._labelTooltip.setAttribute("labelid",856);
+        }
+    </method>
+    
+    <view name="borderBarTop" y="0"
+    			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+   	<view name="_tabbarBg" width="${ parent.width }" height="32" y="1" bgcolor="0xFAFAFA" />
+	<view name="borderBarBottom" y="34"
+   			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" /> 
+    
+    <view name="_head" y="1" width="${ parent.width-10 }" height="32"
+    		  layout="axis:x;spacing:2;inset:2" >
+    
+    	<handler name="oninit">
+		<![CDATA[
+    		for (var eg in this.subviews) {
+            	this.subviews[eg].deselect();
+            }
+            if (!canvas.currentRoomObj.hideFilesExplorer && canvas.currentRoomObj.filesOpened) {
+				this.filesTabButton.doSelection();
+			} else {
+				this.userTabButton.doSelection();
+			}
+		]]>
+    	</handler>
+   
+        <tabButtonMain name="userTabButton" height="$once{ parent.height }" width="$once{ (parent.width-6)/2 }"
+                currentIconRsc="users_tab_btn" labelid="613" />
+        
+        <tabButtonMain name="filesTabButton" currentIconRsc="files_tab_btn" height="$once{ parent.height }" 
+                labelid="614" width="$once{ (parent.width-6)/2 }"
+                visible="${(canvas.currentRoomObj.hideFilesExplorer ? false:true)}"/>
+        
+    </view>
+    
+    <fileExplorer name="_files" y="22" width="$once{ parent.width-12 }" 
+               height="${ parent.height-222 }" visibility="hidden" />
+    
+    <restrictedUserList name="_participants" y="36" 
+			    width="$once{ parent.width-10 }" 
+			   height="${ parent.height-((canvas.currentRoomObj.hideActivitiesAndActions == true) ? 36:236) }" />
+			   
+    <activityList name="_activityList" />
+    
+    <view name="_minimizeSidebar" x="${ parent.width - 10 }" width="10" y="1"
+          				bgcolor="0xE0E1EB" height="${ parent.height-1 }">
+        <handler name="onclick">
+            parent.toggleStatus();
+        </handler>
+        
+        <view width="${ parent.width }" height="$once{ parent.height }" 
+               bgcolor="0xE0E1EB" >
+        </view>
+            
+        <view name="_icon" resource="sidebar_tab_btn" y="0">
+             <handler name="onclick">
+	            parent.parent.toggleStatus();
+	         </handler>
+	         <labelTooltip name="_labelTooltip" labelid="856" />
+        </view>
+        
+    </view>
+    
+    <animator name="_doOpen" attribute="width" to="$once{ parent.width }" 
+              duration="750" started="false" />
+              
+    <animator name="_doClose" attribute="width" to="10" 
+              duration="750" started="false" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewListInner.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewListInner.lzx
new file mode 100644
index 0000000..941e8a0
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewListInner.lzx
@@ -0,0 +1,292 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="interviewListTable" extends="view" y="60" 
+       height="${ parent.height-64-parent.moderationPanel.height }"
+        bgcolor="0xFFFFFF" x="2" clip="true" width="$once{ parent.width-4 }" >
+        <innerlistViewEventUserListTable name="innerList" />
+    <om_vscrollbar />
+</class>    
+
+<class name="interviewListInner" extends="baseRoomInnerList"  
+       width="$once{ parent.width }" height="${ parent.height }" 
+       bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+    
+    <attribute name="selectedItem" value="null" />
+    
+    <attribute name="sortType" value="alphabetical" type="string" />    
+    
+    <handler name="oninit">
+        <![CDATA[
+            if ($debug) Debug.write("!!!!! interviewListTable oninit: ");
+            this.initList();
+        ]]>
+    </handler>
+    
+    <!-- clip="true" -->
+    
+    <view width="$once{ parent.width-2 }" height="${ parent.height-2 }" 
+        x="1" y="1" bgcolor="white" />
+
+    <method name="addItem" args="object">
+        <![CDATA[
+            if ($debug) Debug.write("interviewListTable addItem: ",object,object.publicSID);
+            var list = this._table.innerList;
+            for (var i = 0; i < list.subviews.length;i++) {
+                if (list.subviews[i].refObj.publicSID == object.publicSID) {
+                    //if ($debug) Debug.warn("Already on List, do not add twice");
+                    return;
+                }
+            }
+            var lastname = object.lastname;
+            if (object.isSuperModerator) {
+                lastname += " *";
+            }
+            
+            new lz.interviewUserListItem(list,{
+                    user_id:object.user_id,
+                    firstname:object.firstname,
+                    isSuperModerator:object.isSuperModerator,
+                    lastname:lastname,
+                    refObj:object,
+                    connectedSince:object.connectedSince,
+                    isMod:object.isMod,
+                    streamid:object.streamid,
+                    username:object.username,
+                    formatedDate:object.formatedDate
+                });
+            
+            this.sortUserList();
+            if (canvas.currentRoomObj.autoVideoSelect) {
+				if (object.publicSID == canvas.publicSID && !object.interviewPodId
+					&& (object.isMod || object.isSuperModerator || object.canDraw))
+				{
+		            for (var ii = 1; ii < 3; ++ii) {
+		            	var obj = getVideoObjectByInterviewPodId(ii);
+		            	if (!obj) {
+	            			var interviewBox = canvas._drawarea._videoviewcontent.searchImmediateSubnodes("name", "interviewVideoBox" + ii);
+	            			//if ($debug) Debug.write("!!!! interviewListInner:: interviewBox = ", ii, interviewBox);
+	           				interviewBox.sendConfirmation(canvas.publicSID);
+		            		break;
+		            	}
+					}
+				}
+			}
+        ]]>
+    </method>
+    
+    <method name="sortUserList">
+        <![CDATA[ 
+        
+           if (this.sortType == "alphabetical") {
+                function sortByName(a,b) {
+                   
+                    if(a.firstname.toLowerCase() < b.firstname.toLowerCase()) return -1;
+                    else if(a.firstname.toLowerCase() > b.firstname.toLowerCase()) return 1;
+                    else return 0;
+                
+                }
+            
+                this._table.innerList.subviews.sort(sortByStreamId);
+                this._table.innerList._layout.subviews.sort(sortByStreamId);
+            } else {
+                function sortByStreamId(a,b) {
+                   
+                    if(Number(a.streamid) == Number(b.streamid)) return 0;
+                    else if(Number(a.streamid) > Number(b.streamid)) return 1;
+                    else return -1;
+                
+                }
+            
+                this._table.innerList.subviews.sort(sortByStreamId);
+                this._table.innerList._layout.subviews.sort(sortByStreamId);
+            }
+            
+            this._table.innerList._layout.update(); 
+        ]]>
+    </method>
+        
+    
+    <method name="initList">
+        new lz.interviewListTable(this,{name:'_table'});
+        this.moderationPanel.bringToFront();
+    </method>
+    
+    <method name="clearList">
+        this._table.destroy();
+        this.initList();
+    </method>
+    
+	<method name="disconnectclient" args="publicSID">
+	<![CDATA[
+		var item = getUserListItemByPublicSID(publicSID);
+		if (item) {
+			item.destroy();
+		}
+	]]>
+	</method>
+    
+    <!--- get a Objects List Item
+        @param string publicSID publicSID
+     -->
+	<method name="getUserListItemByPublicSID" args="publicSID">
+	<![CDATA[
+		for (var i=0;i<this._table.innerList.subviews.length;i++){
+			//if ($debug) Debug.write("getUserListItemByPublicSID : this._table.innerList.subviews[i]",this._table.innerList.subviews[i]);
+			if (this._table.innerList.subviews[i].refObj.publicSID==publicSID){
+				return this._table.innerList.subviews[i];
+			}
+		}
+		return null;
+	]]>
+	</method>
+
+	<method name="getVideoObjectByInterviewPodId" args="interviewPodId">
+	<![CDATA[
+		var list = this._table.innerList.subviews;
+		for (var i = 0; i < list.length; ++i) {
+			//if ($debug) Debug.write("getVideoObjectByInterviewPodId : list[i]", list[i]);
+			if (list[i].refObj.interviewPodId == interviewPodId){
+				if ($debug) Debug.write("getVideoObjectByInterviewPodId : list[i].refObj.interviewPodId", interviewPodId, list[i].refObj.interviewPodId);
+				return list[i];
+			}
+		}
+		return null;
+	]]>
+	</method>
+
+    <method name="selectItem" args="itemObj">
+        <![CDATA[
+        if ($debug) Debug.write("selectItem ",itemObj);
+        
+        if (canvas.ismoderator) {
+            if (this.selectedItem != null && this.selectedItem != itemObj) {
+                this.selectedItem.deselect();
+            }
+            
+            this.selectedItem = itemObj;
+            if (this.selectedItem.isSelected) {
+                this.selectedItem.deselect();
+            } else {
+                this.selectedItem.select();
+            }
+        }
+        ]]>
+    </method>
+
+    <view name="userStatus" layout="axis:y">
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="1" />
+             <labelText x="16" labelid="677" />
+        </view>
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="2" />
+             <labelText x="16" labelid="678" />
+        </view>
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="3" />
+             <labelText x="16" labelid="679" />
+        </view>
+    </view>
+    
+    <moderationMiniIconsInterviewUserList name="_applyAndStatusIcons" 
+                          x="$once{ parent.width-this.width-4 }" y="2" />
+    
+    <!--
+    <eventUserListTable name="_table" /> 
+     -->
+    <view name="moderationPanel" height="0" clip="true" 
+          y="${ parent.height - this.height - 2 }">
+        
+        <handler name="onismoderator" reference="canvas" args="m">
+            if ($debug) Debug.write("###### ismoderator ",m);
+            <![CDATA[
+                //this.isMod = canvas.getIsModeratorByPublicSID(this.refObj.publicSID);
+                this.updateIcons();
+            ]]>
+        </handler>
+        
+        <handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
+            <![CDATA[
+                //search for the user and update its drawStatusIcon
+                var vList = parent._table.innerList.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].refObj.publicSID == drawObject.publicSID) {
+                        vList[i].refObj.canDraw = drawObject.canDraw;
+                        vList[i].updateIconByMod();
+                        break;
+                    }
+                }
+            ]]>
+        </handler>
+        
+        <handler name="onlastBroadCastingUser" reference="canvas" args="userObject">
+            <![CDATA[
+                
+                if (!userObject.isBroadcasting) {
+                    //Stop Broadcasting and close Dialog
+                    //Search, stop and remove video
+                    parent.parent.removeVideoByUser(userObject);
+                }
+                
+                //search for the user and update its drawStatusIcon
+                var vList = parent._table.innerList.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].refObj.publicSID == userObject.publicSID) {
+                        vList[i].refObj.isBroadcasting = userObject.isBroadcasting;
+                        vList[i].updateIconByMod();
+                        break;
+                    }
+                }
+                
+                parent._applyAndStatusIcons.updateIcons();
+            ]]>
+        </handler>
+        
+        <method name="updateIcons">
+            <![CDATA[
+                if (canvas.ismoderator) {
+                    this.showItem.setAttribute('started', true);
+                } else {
+                    this.setAttribute("height",0);
+                }
+                var vList = parent._table.innerList.subviews;
+                
+                for (var i=0;i<vList.length;i++) {
+                    vList[i].updateIconByMod();
+                }
+                parent._applyAndStatusIcons.updateIcons();
+            ]]>
+        </method>
+        
+        <labelText labelid="912" width="270" x="0" multiline="true" y="0" />
+        
+        <animator name="showItem" attribute="height" 
+                  to="60" duration="1000" started="false" />
+    </view>
+
+</class>
+
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewModerationMiniIcons.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewModerationMiniIcons.lzx
new file mode 100644
index 0000000..52de0c2
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewModerationMiniIcons.lzx
@@ -0,0 +1,91 @@
+<?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.
+  
+-->
+<library>
+
+<class name="interviewModerationMiniIcons" extends="view" valign="bottom" height="18">
+	
+	<attribute name="isMod" value="false" type="boolean"/>
+    <attribute name="isSuperModerator" value="false" type="boolean"/>
+	
+	<handler name="oninit">
+		this.isMod = canvas.getIsModeratorByPublicSID(parent.refObj.publicSID);
+		
+		if ($debug) Debug.write("this.isMod ",this.isMod);
+		
+		if (this.isMod) {
+			this._isMod.setAttribute("visibility","visible");
+			this._isModAddbutton.setAttribute("visibility","hidden");
+		} else {
+			this._isMod.setAttribute("visibility","hidden");
+            this._isModAddbutton.setAttribute("visibility","visible");
+		}
+		
+	</handler>
+        
+    <miniIcons name="_isMod" x="0" width="16" resource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+            
+                if (parent.isSuperModerator) {
+                    new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:838});
+                    return;
+                }
+            
+                //if the label is set and this is a Moderator then this user should
+                //allow the click event => the click event will trigger
+                //this user away from beeing able to draw on the whiteboard
+                if (canvas.ismoderator) {
+                    //Do it 
+                    if ($debug) Debug.write("Do Remove It");
+                    if (parent.parent.refObj.publicSID != canvas.publicSID) {
+                        hib.removeModerator.publicSIDOfNewModerator = parent.parent.refObj.publicSID;
+                        hib.removeModerator.doCall();
+                    } else {
+                    	new lz.labelerrorPopup(canvas,{errorlabelid:682});
+                    }
+                    //parent.parent.setCanDraw.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="675" />
+    </miniIcons>
+    
+    <miniIcons name="_isModAddbutton" opacity="0.5" x="0" width="16" resource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+                //if the label is set and this is a Moderator then this user should
+                //allow the click event => the click event will trigger
+                //this user away from beeing able to draw on the whiteboard
+                if (canvas.ismoderator) {
+                    //Do it 
+                    if ($debug) Debug.write("Do Add It");
+                    hib.addModerator.publicSIDOfNewModerator = parent.parent.refObj.publicSID;
+                    hib.addModerator.doCall();
+                    //parent.parent.setCanDraw.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="676" />
+    </miniIcons>
+        
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewUserList.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewUserList.lzx
new file mode 100644
index 0000000..a42e6f1
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewUserList.lzx
@@ -0,0 +1,254 @@
+<?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.
+  
+-->
+<library>
+
+ 
+<class name="interviewUserList" extends="view" width="$once{ parent.width }" 
+       height="${ parent.height-34 }">
+
+    <!--- holds a references to the videoview which is broadcasting -->
+    <attribute name="broadCastViewRef" value="null" />
+    
+    <!--- colors for each user -->
+    <attribute name="colorArray" value="null" />
+
+    <attribute name="showsVideoInSeparateComponent" value="false" type="boolean" />
+    
+    <handler name="oninit">
+        //set modus
+        canvas.thishib.modus = "interview";
+        
+        //set reference, this reference will be cleared at *ontabcontenctleave* event
+        canvas._videocontainer=this;
+        
+        // Reconnect User to its Room Id
+        canvas.thishib.userScope = canvas.thishib.currentroomid;
+        var src = hib.getUrl();
+        
+        if( $debug ) Debug.write("videoContainer: canvas.thishib: ",canvas.thishib.src,canvas.thishib);
+        
+        if (canvas.thishib.src != src) {
+            canvas.thishib.setAttribute('src',src);
+            
+			if (canvas.wicketsid == null){            
+	            canvas.thishib.reconnectionAction = true;
+	            canvas.thishib.reconnectObjRef = this;
+	            canvas.thishib.disconnect();
+            } else {
+            	this.reconnectSuccess();
+            }
+        } else {
+            //The user is already in the correct Scope
+            this.reconnectSuccess();
+        }
+    </handler>
+                  
+    <method name="reconnectSuccess">
+        if ($debug) Debug.warn("User Reloged In ",canvas.becomemoderator);
+        //Send to SWF10 video-container to connect on the conference room url 
+        //and wait for the as3ConnectionSuccess-Event
+        this._videoviewcontent.reconnectSuccess(true);
+    </method>
+    
+    <!---
+        We need to wait till the video-container / as3 app has the connection established
+        otherwise it can happen that the video tries to start playing before the rtmp-connection
+        was established
+     -->
+    <method name="as3ConnectionSuccess">
+        if ($debug) Debug.write("as3ConnectionSuccess continue loading");
+        //set default values and get already availible streams
+        //it can happen that if you click to exit the room the views are not 
+        //not cleaned up yet and you receive this event from the LocalConnection
+        if (this["getRoomModeratorsByRoomId"]) {
+            this.getRoomModeratorsByRoomId.doCall();
+        }
+    </method>
+    
+    <netRemoteCallHib name="getRoomModeratorsByRoomId" funcname="conferenceservice.getRoomModeratorsByRoomId" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>    
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getRoomModeratorsByRoomId: ",value);
+                canvas.becomeSuperModerator = false;
+                
+                parent.setRoomValues.applyDefaultModeration = canvas.becomemoderator;
+                
+                for (var i=0;i<value.length;i++) {
+                    
+                    if (value[i].user.user_id == canvas.user_id) {
+                        parent.setRoomValues.applyDefaultModeration = true;
+                        canvas.becomeSuperModerator = value[i].isSuperModerator;
+                        if ($debug) Debug.info("Make this User to an Moderator");
+                        break;
+                    }
+                    
+                }
+                
+                if ($debug) Debug.write("canvas.becomemoderator: ",canvas.becomemoderator);
+                if ($debug) Debug.write("canvas.becomeSuperModerator: ",canvas.becomeSuperModerator);
+                
+                canvas.currentusercolor = canvas.getColorForUser();
+                
+                var organisation_id = 1;
+            
+                if ($debug) Debug.write(hib.userobject); 
+                if ($debug) Debug.write(hib.currentdomainObj); 
+                
+                if (hib.currentdomainObj != null) {
+                    organisation_id = hib.currentdomainObj.organisation_id
+                }
+                
+                this.parent.setRoomValues.organisation_id = organisation_id;
+                this.parent.setRoomValues.doCall();
+            
+            ]]>
+        </handler>
+    </netRemoteCallHib>     
+
+    <netRemoteCallHib name="setRoomValues" funcname="setRoomValues" remotecontext="$once{ canvas.thishib }" >   
+        <attribute name="applyDefaultModeration" value="false" type="boolean" />
+        <attribute name="organisation_id" value="0" type="number" />
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <netparam><method name="getValue">return parent.applyDefaultModeration;</method></netparam>
+        <netparam><method name="getValue">return canvas.becomeSuperModerator;</method></netparam>
+        <netparam><method name="getValue">return parent.organisation_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentusercolor;</method></netparam>
+        <handler name="ondata" args="roomStatus">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            //if ($debug) Debug.write("setRoomValues1: ",value);
+            //if ($debug) Debug.write("setRoomValues2: ",hib.currentroomid);
+            
+            if (roomStatus.roomFull) {
+                canvas.thishib.showFullMessage = true;
+                canvas.thishib.disconnect();
+            }
+            
+            if (roomStatus.browserStatus.browserInited) {
+                var tObj = new Object();
+                tObj[0] = "newBrowserURL";
+                tObj[1] = roomStatus.browserStatus.currentURL;
+                canvas.startBrowser(tObj);
+            }
+            
+            var value = roomStatus.clientList;
+            
+            for (var i = 0; i < value.length; ++i){
+                if ( value[i].streamid == canvas.streamid ) {
+                    canvas.isAllowedToDraw = value[i].canDraw;
+                }
+
+                this.parent.addItem(value[i].connectedSince,value[i].isMod,value[i].streamid,value[i].username,
+                              '',value[i].formatedDate,value[i].userpos,value[i].usercolor,value[i]);
+            }
+            //this content must be inited _after_ setting the default values
+            canvas.thishib.getCurrentModeratorList.doCall(); 
+            //FIXME Issue-1076
+            canvas.thishib.checkLzRecording.doCall();
+            if (canvas._currentChatPanel.visible) {
+				canvas._currentChatPanel.toggleopen();
+			}
+            ]]>
+        </handler>  
+    </netRemoteCallHib>
+
+    <!-- invoked if another client logs into the room 
+    after choosing devices -->     
+    <method name="setAVSettingsToClient" args="rcl">
+         this._videoviewcontent.setAVSettingsToClient(rcl);
+    </method> 
+    
+    <method name="addItem" args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
+        <![CDATA[
+            if ($debug) Debug.write("initializeStreams addItem: ",connectedSince,object);
+            
+            //Do init only in case this stream is NOT the same as we are
+            if (streamid!=canvas.streamid){
+                //if ($debug) Debug.write("???????? object.isBroadcasting :: ",object.isBroadcasting);
+                this._videoviewcontent.createVideo(object.publicSID, object.firstname+' '+object.lastname, object.broadCastID, object.avsettings, object.interviewPodId, object);
+            }
+           
+            //do add self too
+            this._participants.addItem(object);
+        ]]>
+    </method>
+    
+    <method name="addClientItem" args="connectedSince,isMod,streamid,username,room_id,formatedDate,position,color,object">
+        <![CDATA[
+        if ($debug) Debug.write("### initializeStreams addClientItem: ",connectedSince,isMod,streamid,username,room_id,formatedDate);
+
+        if (canvas.publicSID != object.publicSID){
+            this._videoviewcontent.createVideoObject(object.publicSID, false, object.interviewPodId, object);
+        }
+
+        //Do Add it anyway
+        this._participants.addItem(object);
+        ]]>
+    </method>
+        
+    <!--
+        invoked whenever a User starts to Stream Video in this Room,
+        interviewPodId has only a meaning in the Room Type Interview
+     -->
+    <method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
+        this._videoviewcontent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
+    </method>
+
+    <method name="updateMuteStatusVideoView" args="roomClient">
+        this._videoviewcontent.updateMuteStatusVideoView(roomClient);
+    </method>
+    
+    <method name="setSpeakingByPos" args="publicSID,bool">
+        this._videoviewcontent.setSpeakingByPos(publicSID, bool);
+    </method>  
+    
+    <!--- 
+        stops the streaming but does not destroy the view
+        @param int broadcastId broadcastId
+     -->
+    <method name="closeStreamClient" args="publicSID">
+        this._videoviewcontent.closeStreamClient(publicSID);
+    </method>
+    
+    <method name="removeVideoByUser" args="userObject">
+    	if ($debug) Debug.write("removeVideoByUser ",userObject);
+        this.closeStreamClient(userObject.publicSID);
+    </method>
+    
+    <method name="disconnectclient" args="publicSID">
+        this._videoviewcontent.disconnectclient(publicSID);
+        this._participants.disconnectclient(publicSID);
+    </method>
+    
+    <method name="resetAllValues">
+        this._videoviewcontent.resetAllValues();
+    </method>
+    
+    <interviewListInner name="_participants" />
+    
+    <commonVideoComponentAdapter name="_videoviewcontent"/>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewUserListItem.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewUserListItem.lzx
new file mode 100644
index 0000000..7599685
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewUserListItem.lzx
@@ -0,0 +1,135 @@
+<?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.
+  
+-->
+<library>
+
+<class name="interviewUserListItem" extends="view" showhandcursor="false" 
+	   bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" width="252" height="42">
+	
+	<attribute name="connectedSince" value="" type="string" />
+    <attribute name="isMod" value="" type="string" />
+    <attribute name="streamid" value="" type="string" />
+    <attribute name="username" value="" type="string" />
+    <attribute name="userroom" value="" type="string" />
+    <attribute name="formatedDate" value="" type="string" />
+    <attribute name="firstname" value="" type="string" />
+    <attribute name="lastname" value="" type="string" />
+    <attribute name="user_id" value="0" type="number" />
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="isSuperModerator" value="false" type="boolean"/>
+    
+    <attribute name="isSelected" value="false" type="boolean" />
+    
+	<handler name="oninit">
+        <![CDATA[
+            //This is a workaround cause in LPS-4.2.x immediatelly loading does not work
+            lz.Timer.addTimer( new LzDelegate( this, "fadeText" ), 1000 );
+
+            if (this.isMod) {
+            	this.userStatus.setAttribute("frame",3);
+            }
+               
+            if (canvas.publicSID == this.refObj.publicSID) {
+                //this._userName.setAttribute("fontstyle","bold");
+                this.setAttribute("bgcolor",0x00FF00);
+            }
+            
+            this.updateIconByMod();
+        ]]>
+    </handler>
+    
+    <method name="updateIconByMod">
+    	this.isMod = canvas.getIsModeratorByPublicSID(this.refObj.publicSID);
+    	if (this.isMod) {
+            this.userStatus.setAttribute("frame",3);
+        } else if (this.refObj.canDraw) {
+        	this.userStatus.setAttribute("frame",2);
+        } else {
+        	this.userStatus.setAttribute("frame",1);
+        }
+        
+        if (this.isSelected) {
+        	this._miniIcons.oninit.sendEvent();
+        }
+    </method>
+    
+    <method name="fadeText" args="ignore=null"> 
+        <![CDATA[
+            this._userpic.setAttribute('src', canvas.getPictureUrl(this.refObj.picture_uri, '&moduleName=chat&remoteUserid='+this.user_id)); 
+        ]]>          
+    </method>
+     
+    <handler name="onclick">
+    	parent.parent.parent.selectItem(this);
+    </handler>
+     
+    <method name="select">
+    	if (!this.isSelected) {
+	    	new lz.interviewModerationMiniIcons(this,{name:'_miniIcons',align:'right',
+                isMod:this.isMod,
+                isSuperModerator:this.isSuperModerator});
+	    	this.isSelected = true;
+	    	this._userName.text = "";
+	    	this.showItem.setAttribute('started', true);
+    	}
+    </method>
+    
+    <method name="deselect">
+    	if (this.isSelected) {
+	    	this._miniIcons.destroy();
+	    	this.isSelected = false;
+	    	this._userName.text = this.firstname+' '+this.lastname;
+	    	this.closeItem.setAttribute('started', true);
+    	}
+    </method>
+     
+    <image name="_userpic" stretches="both" x="1" y="1">
+        <handler name="onload">
+            <![CDATA[
+                if (this.height > 38) {
+                    //If bigger then containter then scale it
+                    var width = this.width/(this.height/38);
+                    this.setAttribute('height',38);
+                    this.setAttribute('width',width);
+                }
+            ]]>
+        </handler>
+    </image>
+    
+    <view name="userStatus" align="right" frame="1" 
+    	  resource="userstatus_multiframe_rsc" />
+    
+    <labelText name="_userName" x="41" y="2"
+    		   text="$once{ parent.firstname + ' ' + parent.lastname }" />
+     
+    <animatorgroup name="showItem" started="false" process="simultaneous">
+    	<animator attribute="height" to="62" duration="750" />
+    	<animator attribute="width" to="252" duration="750" />
+    </animatorgroup>
+    
+    <animatorgroup name="closeItem" started="false" process="simultaneous">
+        <animator attribute="height" to="42" duration="750" />
+        <animator attribute="width" to="252" duration="750" />
+    </animatorgroup>
+                 
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewVideoBox.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewVideoBox.lzx
new file mode 100644
index 0000000..3eeec34
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewVideoBox.lzx
@@ -0,0 +1,119 @@
+<?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.
+  
+-->
+<library>
+    
+
+<class name="interviewVideoChooseUser" extends="guiPresenter" resizeable="false"
+    width="220" height="100" closable="true" labelid="910" y="10" minimizable="false">
+    
+    <attribute name="refObj" value="null" />
+    
+    <handler name="oninit">
+        this.getClientListScope.doCall();
+    </handler>
+    
+    <netRemoteCallHib name="getClientListScope" funcname="getClientListScope" 
+                      remotecontext="$once{ canvas.thishib }" >   
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("+++++++++++++++++ getClientListScope : ",value);
+                
+                for (var i = 0; i < value.length; ++i) {
+                    parent._users.addItem(value[i].firstname+','+value[i].lastname+' ['+value[i].username+']',value[i].publicSID);
+                }
+                
+                parent._users.selectItemAt(0);
+            ]]>
+        </handler>  
+    </netRemoteCallHib>
+    
+    <labelText labelid="911" x="2" y="22"/>
+    
+    <resetCombobox name="_users" x="2" y="42" width="$once{ parent.width-4 }"/>
+    
+    <simpleLabelButton labelid="61" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+            this.parent.close();
+        </handler>
+    </simpleLabelButton>    
+    
+    <simpleLabelButton labelid="60" width="100" x="$once{ parent.width - 210 }" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+            var valueCombobox = parent._users.getValue();
+            if (this.parent.refObj.sendConfirmation(valueCombobox)) {
+                this.parent.close();
+            }
+        </handler>
+    </simpleLabelButton>   
+    
+</class>
+ 
+<class name="interviewVideoBox" extends="view" width="322" height="281" bgcolor="0x000000">
+    <attribute name="interviewPodId" value="0" type="number" />
+    
+    <method name="startInterView">
+        if ($debug) Debug.write("startInterView :: ");
+        var tx = this.getAttributeRelative("x",canvas);
+        var ty = this.getAttributeRelative("y",canvas);
+        canvas._videocontainer._videoviewcontent.showDevicePopUpInterview(false,this.interviewPodId,tx,ty,this.width,this.height);
+    </method>
+
+    <method name="sendConfirmation" args="publicSID">
+        if ($debug) Debug.write("sendConfirmation :: ",publicSID);
+        
+        canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = publicSID;
+        canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+        canvas.thishib.setBroadCastingFlag.interviewPodId = this.interviewPodId;
+        canvas.thishib.setBroadCastingFlag.doCall(); 
+        
+        return true;
+    </method>
+    
+    <netRemoteCallHib name="sendMessageWithClientByPublicSID" funcname="sendMessageWithClientByPublicSID" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <attribute name="messageObject" value="null" />
+        <attribute name="publicSID" value="" type="string" />
+        <netparam><method name="getValue">return parent.messageObject;</method></netparam>
+        <netparam><method name="getValue">return parent.publicSID;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("+sendMessageWithClientByPublicSID : ",value);
+                
+            ]]>
+        </handler>  
+    </netRemoteCallHib>
+    
+    <simpleLabelButton labelid="910" height="30" valign="middle" align="center"
+               visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }">
+        <handler name="onclick" args="refObj">
+            new lz.interviewVideoChooseUser(canvas,{
+                           isInterview:true,
+                           x:this.getAttributeRelative("x",canvas)-10,
+                           y:this.getAttributeRelative("y",canvas)-20,
+                           width:this.width+20,
+                           refObj:parent
+                        });
+        </handler>
+    </simpleLabelButton>
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx b/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
new file mode 100644
index 0000000..64f3f53
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/interviewWhiteboard.lzx
@@ -0,0 +1,150 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="interviewWhiteboard" extends="view" clip="true">
+	<attribute name="checkPodsDelegate" value="null"/>
+	        
+	<handler name="oninit">
+	<![CDATA[
+		canvas._drawarea = this;
+		if (checkPodsDelegate == null && !_recStarted.visible) {
+			checkPodsDelegate = new LzDelegate(this, "checkPods");
+			lz.Timer.addTimer(checkPodsDelegate, 1000);
+		}
+		this.reloadStatus();
+	]]>
+	</handler>
+    
+    <handler name="ondestroy">
+		stopPodChecks();
+    </handler>
+    
+    <handler name="onopenWhiteBoard" >
+        if ($debug) Debug.write("-- onOpenWhiteBoard --");
+    </handler>
+    
+	<method name="newInterviewStarting" args="refObj">
+	<![CDATA[
+		this._videoviewcontent["interviewVideoBox"+refObj.interviewPodId].startInterView();
+	]]>
+	</method>
+	
+	<method name="stopPodChecks">
+		if (checkPodsDelegate != null) {
+			lz.Timer.removeTimer(checkPodsDelegate);
+			checkPodsDelegate = null;
+		}
+	</method>
+
+	<method name="onInterviewPodCount" args="count">
+		_interview._start.setAttribute("enabled", count > 0);
+	</method>
+	
+	<method name="checkPods" args="ignore=null">
+		//if ($debug) Debug.write(":: Pods :: check :: ");
+		canvas.sendViaLocalConnection(canvas.vid_lc_name, "getVideoObjectCount", [null]);
+		lz.Timer.resetTimer(checkPodsDelegate, 1000);
+	</method>
+	
+    <method name="reloadStatus">
+        this.getInterviewRecordingStatus.doCall();
+    </method>
+    
+    <!--
+    getInterviewRecordingStatus()
+     -->
+    <netRemoteCallHib name="getInterviewRecordingStatus" funcname="getInterviewRecordingStatus" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getInterviewRecordingStatus: ",value);
+                if (value) {
+                    parent._recStarted.setAttribute("visibility","visible");
+                } else {
+                    parent._recStarted.setAttribute("visibility","hidden");
+                }
+            ]]>
+        </handler>
+    </netRemoteCallHib> 
+    
+    <simplelayout axis="y" spacing="2" />
+    
+    <commonVideoViewContent name="_videoviewcontent" x="40" >
+        <simplelayout axis="x" spacing="2" />
+        
+        <interviewVideoBox name="interviewVideoBox1" interviewPodId="1" />
+        <interviewVideoBox name="interviewVideoBox2" x="324" interviewPodId="2" />
+    </commonVideoViewContent>
+    
+    <view name="_interview" align="center" visible="${ canvas.ismoderator }">
+        <!--
+           public synchronized Boolean startInterviewRecording()
+         -->
+        <netRemoteCallHib name="startInterviewRecording" funcname="startInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    if ($debug) Debug.write("startInterviewRecording: ",value);
+                    if (!value) {
+                        new lz.labelerrorPopup(canvas,{errorlabelid:915});
+                    }
+                ]]>
+            </handler>
+        </netRemoteCallHib>          
+        
+        <netRemoteCallHib name="stopInterviewRecording" funcname="stopInterviewRecording" remotecontext="$once{ canvas.thishib }" >  
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    if ($debug) Debug.write("stopInterviewRecording: ",value);
+                    if (!value) {
+                        new lz.labelerrorPopup(canvas,{errorlabelid:916});
+                    }
+                ]]>
+            </handler>
+        </netRemoteCallHib>  
+        
+        <simplelayout axis="x" spacing="2" />
+        
+        <simpleLabelButton name="_start" labelid="913" height="30" width="200">
+            <handler name="onclick">
+                if ($debug) Debug.write("Start Recording");
+                parent.startInterviewRecording.doCall();
+            </handler>
+            <view x="2" y="4" resource="interview_record_start" />
+        </simpleLabelButton>
+        
+        <simpleLabelButton name="_stop" labelid="914" height="30" width="200">
+            <handler name="onclick">
+                if ($debug) Debug.write("Stop Recording");
+                parent.stopInterviewRecording.doCall();
+            </handler>
+            <view x="2" y="4" resource="interview_record_stop" />
+        </simpleLabelButton>
+        
+    </view>
+    
+    <view name="_recStarted" align="center" visibility="hidden">
+        <labelText labelid="917" />
+    </view>
+        
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/library.lzx b/WebContent/src/modules/conference/interviewuserlist/library.lzx
new file mode 100644
index 0000000..601b2f8
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/library.lzx
@@ -0,0 +1,35 @@
+<?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.
+  
+-->
+<library>
+	
+	<resource name="interview_record_start" src="resources/webstart_play.png" />
+	<resource name="interview_record_stop" src="resources/webstart_stop.png" />
+	
+    <include href="interviewUserList.lzx" />
+    <include href="interviewWhiteboard.lzx" />
+    <include href="interviewVideoBox.lzx" />
+    <include href="interviewModerationMiniIcons.lzx" />
+    <include href="interviewUserListItem.lzx" />
+    <include href="interviewListInner.lzx" />
+    <include href="moderationMiniIconsInterviewUserList.lzx" />
+    
+    
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/moderationMiniIconsInterviewUserList.lzx b/WebContent/src/modules/conference/interviewuserlist/moderationMiniIconsInterviewUserList.lzx
new file mode 100644
index 0000000..fedcea82
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/moderationMiniIconsInterviewUserList.lzx
@@ -0,0 +1,61 @@
+<?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.
+  
+-->
+<library>
+
+<class name="moderationMiniIconsInterviewUserList" extends="view">
+	
+    <handler name="oninit">
+    	this.updateIcons();
+    </handler>	
+    
+    <method name="updateIcons">
+        if (canvas.ismoderator) {
+            this._isMod.setAttribute("visibility","visible");
+            this._isModAddbutton.setAttribute("visibility","hidden");
+        } else {
+            this._isMod.setAttribute("visibility","hidden");
+            this._isModAddbutton.setAttribute("visibility","visible");
+        }
+    </method>
+	
+    <miniIcons name="_isMod" x="0" width="16" resource="participants_isMod_rsc" 
+    		   height="16" showhandcursor="false">
+        <handler name="onclick">
+            <![CDATA[
+                //Nothing happens here
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="688" />
+    </miniIcons>
+    
+    <miniIcons name="_isModAddbutton" opacity="0.5" x="0" width="16" resource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+                //Apply for Moderation
+                canvas.thishib.applyForModeration.doCall();
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="685" />
+    </miniIcons>
+        
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/interviewuserlist/resources/webstart_play.png b/WebContent/src/modules/conference/interviewuserlist/resources/webstart_play.png
new file mode 100644
index 0000000..6d13683
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/resources/webstart_play.png
Binary files differ
diff --git a/WebContent/src/modules/conference/interviewuserlist/resources/webstart_stop.png b/WebContent/src/modules/conference/interviewuserlist/resources/webstart_stop.png
new file mode 100644
index 0000000..8389bf3
--- /dev/null
+++ b/WebContent/src/modules/conference/interviewuserlist/resources/webstart_stop.png
Binary files differ
diff --git a/WebContent/src/modules/conference/library.lzx b/WebContent/src/modules/conference/library.lzx
new file mode 100644
index 0000000..b517cd4
--- /dev/null
+++ b/WebContent/src/modules/conference/library.lzx
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- FamFam Icon Set -->
+    <resource name="resyncuser_rsc" src="resources/arrow_refresh_small.png" />
+    
+    <!-- APL author sebawagner -->
+    <resource name="speaking" src="resources/speaking.png" />
+    
+    <!-- APL author sebawagner -->
+    <resource name="lz_recorder_play" src="resources/webstart_play.png" />
+	
+    <include href="commonVideoViewContent.lzx"/>
+    <include href="commonVideoComponentAdapter.lzx"/>
+    <include href="screenSharingAdapter.lzx" />
+
+	<include href="whiteboard/" /> 
+ 	
+   	<include href="tabcontent/" />
+   	<include href="popups/" />
+   	<include href="moderation/" />
+   	<include href="polls/" />
+   	
+   	<include href="conference/" />
+   	
+    <!-- throws an Exception
+	<include href="browser/"/>  
+     -->
+    <include href="participants/" /> 
+    <include href="interviewuserlist/" /> 
+    
+    <include href="restricted/" />
+    <include href="browser/" />
+    <include href="testsetup/" />
+    <include href="sip/" />
+    
+    <include href="flexibleConferenceRoom/" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/moderation/applyForModeration.lzx b/WebContent/src/modules/conference/moderation/applyForModeration.lzx
new file mode 100644
index 0000000..1ad5de5
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/applyForModeration.lzx
@@ -0,0 +1,161 @@
+<?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.
+  
+-->
+<library>
+
+<class name="userItem" extends="view" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" width="$once{ parent.width }" height="20">
+	<attribute name="streamid" value="0" type="string" />
+	<attribute name="username" value="" type="string" />
+	<attribute name="hasAnswered" value="false" type="boolean" />
+	<attribute name="answer" value="false" type="boolean" />
+	
+	<view name="inner" width="$once{ parent.width-2 }" height="$once{ parent.height-2 }" x="1" y="1"
+		onmouseover="this.setAttribute('bgcolor',canvas.getThemeColor('baseMousecolorizer'))"
+		onmouseout="this.setAttribute('bgcolor',0xFFFFFF)" bgcolor="0xFFFFFF">
+		<labelText text="$once{ parent.parent.streamid }" width="50" />
+		<labelText text="$once{ parent.parent.username }" x="50" width="300" />
+		<labelText name="answer" labelid="88" x="350" width="140" />
+	</view>
+</class>
+    
+<class name="applyForModeration"  extends="labelExplorerBox" labelid="81"
+	width="500" height="250" x="14" closable="true">
+	
+	<attribute name="applymessage" value="null" />
+	
+	<labelText labelid="93" y="30" x="2" />
+
+	<handler name="oninit">
+		canvas.currentModApply = this;
+		this.getClientListScope.doCall();
+		this.applymessage = new Array();
+		this.applymessage[0] = 'applyforMod';
+		this.checkRoomValues.doCall();
+	</handler>
+    
+    <!--
+        This is necessary as in some cases the user should not be allowed 
+        to apply for Moderation at all, this Function checks this
+     -->
+    
+    <netRemoteCallHib name="checkRoomValues" funcname="checkRoomValues" 
+                      remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <handler name="ondata" args="value">
+            if (value) {
+                parent.sendMessageWithClient.doCall();
+            } else {
+                new lz.labelerrorPopup(canvas,{errorlabelid:641});
+                parent.close();
+            }
+        </handler>
+    </netRemoteCallHib>
+	
+	<method name="setUserAnswer" args="value">
+		<![CDATA[
+		if ($debug) Debug.write("*** setUserAnswer: ",value,this.userslist);
+
+		var t = this.userslist.userslist.userslist[value.client.streamid];
+		//Debug.write(" t: ",t);
+		t.hasAnswered = true;
+		var answer = value.message[1];
+		//Debug.write("answer: ",answer);
+		if (answer=='ok'){
+			t.inner.answer.setAttribute('text',canvas.getLabelName(94));
+			t.answer = true;
+		} else {
+			t.inner.answer.setAttribute('text',canvas.getLabelName(95));
+			t.answer = false;
+		}
+		]]>
+		this.checkForUpdates();
+	</method>
+	
+	<method name="rejectUser" args="value">
+		this.userslist.userslist.userslist[value.streamid].destroy();
+		this.checkForUpdates();
+	</method>
+	
+	<method name="checkForUpdates">
+		<![CDATA[
+		var b = true;
+		for (var i=0;i<this.userslist.userslist.userslist.subviews.length;i++){
+			//Debug.write("itemID : ",this.userslist.userslist.userslist.subviews[i]);
+			if (!this.userslist.userslist.userslist.subviews[i].answer){
+				b=false;
+				break;
+			}
+		}
+		if (b) this.applyButton.setAttribute('labelid',96);
+		this.applyButton.setAttribute('enabled',b);
+		]]>
+	</method>
+	
+	<netRemoteCallHib name="getClientListScope" funcname="getClientListScope" remotecontext="$once{ canvas.thishib }" >        
+       	<handler name="ondata" args="value">
+       		<![CDATA[
+           	//The onResult-Handler will be called be the rtmpconnection
+           	//Debug.write("INSTANCE getClientListScope : ",value);
+            for (var eg = 0; eg < value.length; ++eg) {
+				//Debug.write("value: ",eg,value,parent.userslist.userslist.userslist);
+				if (canvas.streamid!=value[eg].streamid) {
+				    new lz.userItem(parent.userslist.userslist.userslist,{name:value[eg].streamid,username:value[eg].username,streamid:value[eg].streamid});
+				}
+				//Debug.write("value: ",eg,value,parent.userslist.userslist.userslist);
+			}
+		    if (parent.userslist.userslist.userslist.subviews.length==0)
+				   parent.applyButton.setAttribute('enabled',true);
+           ]]>
+		</handler>   
+    </netRemoteCallHib> 
+     
+    <netRemoteCallHib name="sendMessageWithClient" funcname="sendMessageWithClient" remotecontext="$once{ canvas.thishib }" >  
+    	<netparam name="vars"><method name="getValue">return parent.parent.applymessage;</method></netparam>
+        <handler name="ondata" args="value">
+        	<![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            //Debug.write("sendMessageWithClient : ",value);
+
+            ]]>
+        </handler>   
+    </netRemoteCallHib>      
+	
+	<view name="userslist" y="60" x="4" height="140" clip="true" width="492" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+		<view name="userslist" y="1" x="1" height="138" clip="true" width="490" bgcolor="0xFFFFFF" >
+			<view name="userslist" layout="axis:y;spacing:2" width="$once{ parent.width }" />
+			<om_vscrollbar />
+		</view>
+	</view>	
+	
+    <simpleLabelButton name="applyButton" labelid="88" width="200" x="80" y="218" enabled="false">
+    	<handler name="onclick">
+    		//hib.setModerator.doCall();
+    		hib.addModerator.publicSIDOfNewModerator = canvas.publicSID;
+    		hib.addModerator.doCall();
+    		this.parent.close();
+    	</handler>
+    </simpleLabelButton>
+    
+    <simpleLabelButton labelid="83" width="200" x="290" y="218" 
+        onclick="this.parent.close();" />
+  
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/moderation/library.lzx b/WebContent/src/modules/conference/moderation/library.lzx
new file mode 100644
index 0000000..1affb90
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/library.lzx
@@ -0,0 +1,32 @@
+<?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.
+  
+-->
+<library>
+
+	<resource name="applyformodicon_rsc" src="resources/user_add.png" />
+	
+	<!--  FamFam Icon Creative Commons -->
+	<resource name="start_screensharing_rsc" src="resources/monitor_go.png" />
+
+   	<include href="applyForModeration.lzx" />
+   	<include href="moderationPanel.lzx" />
+   	<include href="responseForModeration.lzx" />
+	
+</library>
diff --git a/WebContent/src/modules/conference/moderation/moderationPanel.lzx b/WebContent/src/modules/conference/moderation/moderationPanel.lzx
new file mode 100644
index 0000000..90abc25
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/moderationPanel.lzx
@@ -0,0 +1,122 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="errorPopupUserInfo" extends="labelExplorerBox" labelid="204"
+    docking="true" resizeable="false" closable="true" 
+    width="224" x="300" height="230">
+
+    <attribute name="error" value="" type="string" />
+    <attribute name="user" value="null" />
+    
+    <handler name="oninit">
+        <![CDATA[
+            Debug.write(user);
+            var tString = this.error + "<BR/>"
+                    + user.username+"<BR/>" 
+                    + user.firstname + " " + user.lastname + "<BR/>"
+                    + parseDateToStringTime(user.roomEnter);
+            this.textInner._inner.setAttribute('text',tString);
+        ]]>
+    </handler>
+
+    <view name="textInner" y="24" width="218" height="200" x="2" clip="true">
+        <text name="_inner" fontsize="10" fontstyle="bold"
+            multiline="true" width="190" />
+        <om_vscrollbar />
+    </view>
+
+</class>
+
+<class name="moderationPanel" extends="view" layout="axis:x;spacing:2">
+    
+    <attribute name="recordingsName" value="" type="string" />
+    <attribute name="initial" value="true" type="boolean" />
+    <attribute name="recordingUser" value="null" />
+    <attribute name="publishingObj" value="null" />
+    
+    <attribute name="allowUserQuestions" value="true" type="boolean" />
+    <attribute name="roomName" value="" type="string" />
+    
+    <handler name="oninit">
+        <![CDATA[
+	        canvas._mymod = this;
+	        if (this.allowUserQuestions != null && !this.allowUserQuestions) {
+	            this.mod_btn.destroy();
+	        }
+	        this._roomName.setAttribute("text",this.roomName);
+	        if ($debug) Debug.write("moderationPanel.init: ", !canvas.currentRoomObj.hideScreenSharing && (canvas.ismoderator || canvas.becomemoderator || canvas.isAllowedToScreenShare), canvas.currentRoomObj);
+        ]]>
+    </handler>
+    
+    <method name="setMessage">
+        <![CDATA[
+            if ($debug) Debug.write("setMessage: ",this.recordingUser);
+            var tString = "";
+            if (this.recordingUser!=null){
+                tString += canvas.getLabelName(419)
+               		+ " " + this.recordingUser.username
+               		+ " " + this.recordingUser.firstname
+               		+ " " + this.recordingUser.lastname
+               		+ " " + parseDateToStringTime(this.recordingUser.roomEnter) + ";";
+            }
+			if (this.publishingObj != null) {
+            	tString += canvas.getLabelName(1504)
+					+ " " + this.publishingObj.user.username
+					+ " " + this.publishingObj.user.firstname
+					+ " " + this.publishingObj.user.lastname
+					+ " " + this.publishingObj.url + ";";
+            }
+			this._inner.setAttribute('text', tString);
+        ]]>
+    </method>   
+    
+	<method name="checkForApplyScreen" args="record">
+		lz.Browser.loadURL(canvas.getScreenSharingUrl(), '_blank');
+	</method>  
+    
+    <labelText name="_roomName" fgcolor="0xFFFFFF" y="4" fontstyle="bold" fontsize="12" /> 
+    
+    <miniIconsNew name="mod_btn" y="6" innerResource="applyformodicon_rsc" width="16" height="16"
+               visible="${ (canvas.ismoderator) ? false : true  }" showhandcursor="true">
+        <handler name="onclick">
+            //We do only ask the Moderator(s) to change Moderation
+            //new lz.applyForModeration(canvas.main_content._content.inner);
+            canvas.thishib.applyForModeration.doCall();
+        </handler>  
+        <labelTooltip inittwice="true" labelid="906" />      
+    </miniIconsNew>
+    
+    <miniIconsNew name="_doShare" y="6" innerResource="start_screensharing_rsc" width="16" height="16" showhandcursor="true"
+               visible="${ !canvas.currentRoomObj.hideScreenSharing &amp;&amp; (canvas.ismoderator || canvas.becomemoderator || canvas.isAllowedToScreenShare) }" >
+        <handler name="onclick">
+            this.parent.checkForApplyScreen("no");
+        </handler>
+        <labelTooltip labelid="239" />
+    </miniIconsNew>
+    
+    <labelText name="_inner" fgcolor="0xFF3300" y="4" />
+    
+    <view width="2" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/moderation/resources/monitor_go.png b/WebContent/src/modules/conference/moderation/resources/monitor_go.png
new file mode 100644
index 0000000..8af3eda
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/resources/monitor_go.png
Binary files differ
diff --git a/WebContent/src/modules/conference/moderation/resources/user_add.png b/WebContent/src/modules/conference/moderation/resources/user_add.png
new file mode 100644
index 0000000..deae99b
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/resources/user_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/moderation/responseForModeration.lzx b/WebContent/src/modules/conference/moderation/responseForModeration.lzx
new file mode 100644
index 0000000..183cdf7
--- /dev/null
+++ b/WebContent/src/modules/conference/moderation/responseForModeration.lzx
@@ -0,0 +1,95 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="responseForModeration"  extends="labelExplorerBox" labelid="81"
+	width="500" height="250" x="14" closable="true">
+	
+	<attribute name="applymessage" value="null" />
+    <!-- Time till automatically apply for modaration will be accepted -->
+	<attribute name="clientId" value="0" type="string" />
+	
+	<attribute name="userobject" value="null" />
+    
+    <attribute name="userautoTimerDelegate" value="null" />
+    <attribute name="userautoTimerCounter" value="31" type="number" />
+	
+	<handler name="oninit">
+		<![CDATA[
+            var dtString = '';
+            dtString += 'Name: '+userobject['username']+'<BR />';
+            dtString += 'Host: '+userobject['userip']+'<BR />';
+            dtString += 'Time: '+userobject['connectedSince']+'<BR />';
+            
+            this.userToAccept.setAttribute('text',dtString);
+            
+            this.userautoTimerDelegate = new LzDelegate( this, "autoResponse" );
+            lz.Timer.addTimer( this.userautoTimerDelegate, 1000 );            
+		]]>
+	</handler>
+
+    <method name="autoResponse" args="itemObj">
+        this.userautoTimerCounter--;
+        if (this.userautoTimerCounter!=0){
+            this._applyBtn.setAttribute('text',canvas.getLabelName(this._applyBtn.labelid)+" "+this.userautoTimerCounter);
+            lz.Timer.addTimer( this.userautoTimerDelegate, 1000 );
+        } else {
+            this._applyBtn.onclick.sendEvent();
+        }
+    </method>   
+	
+	<labelText labelid="89" y="20" x="2" />
+	
+	<labelText name="userToAccept" y="50" multiline="true" width="200" resize="false" />
+    
+    <simpleLabelButton labelid="90" width="200" x="80" y="218" name="_applyBtn" >
+    	<handler name="onclick">
+			parent.applymessage = new Array();
+			parent.applymessage[0] = 'applyModAnswer';
+			parent.applymessage[1] = 'ok';   
+			parent.sendMessageWithClientById.doCall();		
+    	</handler>
+    </simpleLabelButton>
+    
+    <simpleLabelButton labelid="91" width="200" x="290" y="218" >
+    	<handler name="onclick">
+			parent.applymessage = new Array();
+			parent.applymessage[0] = 'applyModAnswer';
+			parent.applymessage[1] = 'no'; 
+			parent.sendMessageWithClientById.doCall();	
+    	</handler>
+    </simpleLabelButton>
+     
+    <netRemoteCallHib name="sendMessageWithClientById" funcname="sendMessageWithClientById" remotecontext="$once{ canvas.thishib }" >  
+    	<netparam><method name="getValue">return parent.parent.applymessage;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.clientId;</method></netparam>
+        <handler name="ondata" args="value">
+        	<![CDATA[
+	            //The onResult-Handler will be called be the rtmpconnection
+	            //Debug.write("sendMessageWithClientById : ",value);
+				this.parent.close();
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/participants/library.lzx b/WebContent/src/modules/conference/participants/library.lzx
new file mode 100644
index 0000000..5457299
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/library.lzx
@@ -0,0 +1,44 @@
+<?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.
+  
+-->
+<library>
+    
+    <!--  FamFam Icon Creative Commons -->
+    <resource name="right_isactive_rsc" src="resources/accept.png" />
+    
+    <!--  FamFam Icon Creative Commons -->
+    <resource name="right_notactive_rsc" src="resources/delete.png" />
+    
+    <!--  FamFam Icon Creative Commons -->
+    <resource name="participants_isMod_rsc" src="resources/user_add.png" />
+    <!--  FamFam Icon Creative Commons -->
+    <resource name="participants_allow_drawing_rsc" src="resources/pencil_add.png" />
+    
+    <!--  FamFam Icon Creative Commons -->
+    <resource name="participants_deny_drawing_rsc" src="resources/pencil_delete.png" />
+    
+    <!--  APL author sebawagner -->
+    <resource name="participants_exclusive_audio_rsc" src="resources/micro_small.png" />
+    
+    <include href="participantList.lzx" />
+    <include href="participantListItem.lzx" />
+    <include href="participants.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/participants/participantList.lzx b/WebContent/src/modules/conference/participants/participantList.lzx
new file mode 100644
index 0000000..8e1c616
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/participantList.lzx
@@ -0,0 +1,217 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="innerlistViewparticipantsTable" extends="view" width="258" >
+    <simplelayout name="_layout" axis="y" spacing="0" />
+</class>
+    
+<class name="participantsTable" extends="view" height="${ parent.height-20 }" 
+    	bgcolor="0xFFFFFF" x="2" y="6" clip="true" width="$once{ parent.width-4 }" >
+        <innerlistViewparticipantsTable name="innerList" />
+    <om_vscrollbar />
+</class>
+
+<class name="participantList" extends="view"  width="$once{ parent.width }" height="${ parent.height-22 }" 
+       bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" y="22">
+    <!-- clip="true" -->
+    
+    <attribute name="sortType" value="alphabetical" type="string" />    
+    
+    <view width="$once{ parent.width-2 }" height="${ parent.height-2 }" 
+        x="1" y="1" bgcolor="0xFFFFFF" />
+        
+    <handler name="oninit">
+        <![CDATA[
+            var items = this._table.innerList.subnodes;
+            canvas.videoComp_lc.lc_setSoundMuted = function(publicSID,isMuted) {
+                if ($debug) Debug.write("lc_setSoundMuted: publicSID, isMuted",publicSID, isMuted);
+
+                for (var i=1; i<items.length; i++) {
+                    var listItem = items[i];
+                    if (listItem.refObj.publicSID == publicSID) {
+                        var muteView = listItem._miniIcons._mute;
+                        if (isMuted) {
+                            muteView.setAttribute('frame', 2);
+                            muteView._tip.setAttribute('labelid', 1075);
+                        } else {
+                            muteView.setAttribute('frame', 1);
+                            muteView._tip.setAttribute('labelid', 1074);
+                        }
+                        break;
+                    }
+                }
+            };
+        ]]>
+    </handler>
+
+    <method name="addItem" args="object">
+        <![CDATA[
+            if ($debug) Debug.write("participantList addItem: ",object,object.publicSID);
+            
+            for (var i=0;i<this._table.innerList.subviews.length;i++) {
+                if (this._table.innerList.subviews[i].refObj.publicSID == object.publicSID) {
+                    //if ($debug) Debug.warn("Already on List, do not add twice");
+                    return;
+                }
+            }
+            
+            var lastname = object.lastname;
+            
+            if ($debug) Debug.write("object.isSuperModerator ",object.isSuperModerator);
+            
+            if (object.isSuperModerator) {
+                lastname += " *";
+            }
+            
+            new lz.participantListItem(this._table.innerList,{
+                    user_id:object.user_id,
+                    isSuperModerator:object.isSuperModerator,
+                    firstname:object.firstname,
+                    lastname:lastname,
+                    width:this.width-17,
+                    refObj:object,
+                    connectedSince:object.connectedSince,
+                    isMod:object.isMod,
+                    streamid:object.streamid,
+                    username:object.username,
+                    formatedDate:object.formatedDate
+                });
+            
+            this.sortUserList();
+        ]]>
+    </method>
+    
+    <method name="sortUserList">
+        <![CDATA[ 
+        
+            if (this.sortType == "alphabetical") {
+                function sortByName(a,b) {
+                   
+                    if(a.firstname.toLowerCase() < b.firstname.toLowerCase()) return -1;
+                    else if(a.firstname.toLowerCase() > b.firstname.toLowerCase()) return 1;
+                    else return 0;
+                
+                }
+            
+                this._table.innerList.subviews.sort(sortByStreamId);
+                this._table.innerList._layout.subviews.sort(sortByStreamId);
+            } else {
+                function sortByStreamId(a,b) {
+                   
+                    if(Number(a.streamid) == Number(b.streamid)) return 0;
+                    else if(Number(a.streamid) > Number(b.streamid)) return 1;
+                    else return -1;
+                
+                }
+            
+                this._table.innerList.subviews.sort(sortByStreamId);
+                this._table.innerList._layout.subviews.sort(sortByStreamId);
+            }
+            
+            this._table.innerList._layout.update();  
+        ]]>
+    </method>    
+    
+    <method name="clearList">
+        this._table.destroy();
+        new lz.participantsTable(this,{name:'_table'});
+    </method>
+    
+    <method name="disconnectclient" args="publicSID">
+        <![CDATA[
+            for (var i=0;i<this._table.innerList.subviews.length;i++){
+                if (this._table.innerList.subviews[i].refObj.publicSID==publicSID){
+                    var item = this._table.innerList.subviews[i];
+                    item.destroy();
+                    break;
+                }
+            }
+        ]]>
+    </method>
+    
+    <!--- get a Objects List Item
+        @param string publicSID publicSID
+     -->
+	<method name="getUserListItemByPublicSID" args="publicSID">
+	<![CDATA[
+		var v = null;
+		var lst = this._table.innerList;
+		for (var i = 0; i < lst.subviews.length; i++) {
+			if (lst.subviews[i].refObj.publicSID == publicSID) {
+				v = lst.subviews[i];
+				break;
+			}
+		}
+		return v;
+	]]>
+	</method>
+    
+    <participantsTable name="_table" y="20" /> 
+
+    <view name="_miniIcons" x="112" y="0" height="18">
+        
+        <view width="1" height="${ parent.parent.height }" x="0"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_mod" x="2" y="3" resource="participants_isMod_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="608" />
+        </view>
+        
+        <view width="1" height="${ parent.parent.height }" x="20"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_draw" x="22" y="3" resource="participants_allow_drawing_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="609" />
+        </view>
+        
+        <view width="1" height="${ parent.parent.height }" x="40"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_share" x="42" y="3" resource="screen_allow_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="1073" />
+        </view>
+        
+        <view width="1" height="${ parent.parent.height }" x="60"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_remote" x="62" y="3" resource="remote_allow_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="1084" />
+        </view>
+    
+        <view width="1" height="${ parent.parent.height }" x="80"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_exclusive_audio" x="82" y="3" resource="participants_exclusive_audio_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="1423" />
+        </view>
+        
+        <view width="1" height="${ parent.parent.height }" x="100"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+        <view name="_icon_av_allow" x="102" y="3" resource="av_allow_rsc" onclick="" showhandcursor="false">
+            <labelTooltip labelid="610" />
+        </view>
+        
+        <view width="1" height="${ parent.parent.height }" x="142"
+            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
+    </view>
+    
+    <view name="headerDivisionLine" width="${ parent.width }" 
+          bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="1" y="20" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/participants/participantListItem.lzx b/WebContent/src/modules/conference/participants/participantListItem.lzx
new file mode 100644
index 0000000..97f5803
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/participantListItem.lzx
@@ -0,0 +1,626 @@
+<?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.
+  
+-->
+<library>
+    
+<!-- 
+    The Width of each item is set in the participantList-Class
+ -->
+<class name="participantListItem" extends="view" bgcolor="0xDADADA" height="40" 
+       showhandcursor="false">
+    
+    <attribute name="connectedSince" value="" type="string" />
+    <attribute name="isMod" value="" type="string" />
+    <attribute name="streamid" value="" type="string" />
+    <attribute name="username" value="" type="string" />
+    <attribute name="userroom" value="" type="string" />
+    <attribute name="formatedDate" value="" type="string" />
+    <attribute name="firstname" value="" type="string" />
+    <attribute name="lastname" value="" type="string" />
+    <attribute name="user_id" value="0" type="number" />
+    <attribute name="isSuperModerator" value="false" type="boolean"/>
+    <attribute name="refObj" value="null" />
+    
+    <handler name="oninit">
+        <![CDATA[
+            //this._userpic.setAttribute('src',downloadurl); 
+            //This is a workaround cause in LPS-4.2.x immediatelly loading does not work
+            lz.Timer.addTimer( new LzDelegate( this, "fadeText" ), 1000 );
+                    
+            if (canvas.publicSID == this.refObj.publicSID) {
+                this._firstName.setAttribute("fontstyle","bold");
+                this._lastName.setAttribute("fontstyle","bold");
+            }
+            
+            this.updateIcons();
+        ]]>
+    </handler>
+    
+    <method name="fadeText" args="ignore=null"> 
+        <![CDATA[
+        	if ($debug) Debug.write("fadeText :1: ",this.refObj);
+        	if ($debug) Debug.write("fadeText :2: ",this.refObj.picture_uri);
+            this._userpic.setAttribute('src', canvas.getPictureUrl(this.refObj.picture_uri, '&moduleName=chat&remoteUserid='+this.user_id)); 
+        ]]>          
+    </method>
+    
+    <handler name="onismoderator" reference="canvas" args="m">
+        if ($debug) Debug.write("###### ismoderator ",m);
+        <![CDATA[
+            this.isMod = canvas.getIsModeratorByPublicSID(this.refObj.publicSID);
+            this.updateIcons();
+        ]]>
+    </handler>
+    
+    <handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
+        <![CDATA[
+            if (this.refObj.publicSID == drawObject.publicSID) {
+                this.refObj.canDraw = drawObject.canDraw;
+                this.refObj.canShare = drawObject.canShare;
+                this.refObj.canRemote = drawObject.canRemote;
+                this.updateIcons();
+            }
+        ]]>
+    </handler>
+
+    <handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject">
+        <![CDATA[
+            if (this.refObj.publicSID == rclObject.publicSID) {
+                this.refObj.canGiveAudio = rclObject.canGiveAudio;
+                this.updateIcons();
+            }
+        ]]>
+    </handler>
+    
+    <handler name="onmicMutedStatusChangedItem" reference="canvas" args="roomClientObj">
+    	<![CDATA[
+    	    if ($debug) Debug.write("onmicMutedStatusChangedItem :1: ",roomClientObj.publicSID);
+            if (this.refObj.publicSID == roomClientObj.publicSID) {
+            	if ($debug) Debug.write("onmicMutedStatusChangedItem :2: ",roomClientObj.micMuted);
+                this.refObj.micMuted = roomClientObj.micMuted;
+                this.updateIcons();
+            }
+        ]]>
+    </handler>
+
+    <handler name="onMute" reference="canvas.thishib.switchMicMuted" args="event">
+        <![CDATA[
+            if ($debug) Debug.write("onMute ", event.publicSID, event.mute);
+            if(this.refObj.publicSID == event.publicSID) {
+                this.refObj.micMuted = event.mute;
+                this.updateIcons();
+            }
+        ]]>
+    </handler>
+    
+    <!--
+        Set actions to update the User-Rights and Information what he can do
+     -->
+    <method name="updateIcons">
+        <![CDATA[
+        
+            if ($debug) Debug.write("updateByMod,",this.isMod,canvas.streamid);
+        
+            //If this is one Mod he can also draw on the Whitboard
+            if (this.isMod) {
+                
+                
+                this._miniIcons._isMod.setAttribute("visibility","visible");
+                this._miniIcons._isModAddbutton.setAttribute("visibility","hidden");
+                this._miniIcons._canDraw.setAttribute("visibility","visible");
+                //the moderator can never remove the right to draw on the whiteboard for himself
+                this._miniIcons._canDraw.setAttribute("showhandcursor",false);
+                this._miniIcons._canDraw._text.setAttribute("text","");
+                this._miniIcons._canDrawModerator.setAttribute("visibility","hidden");
+                
+                this._miniIcons._allowShare.setAttribute("visibility","visible");
+                this._miniIcons._allowShare.setAttribute("showhandcursor",false);
+                this._miniIcons._allowShare._text.setAttribute("text","");
+                this._miniIcons._denyShare.setAttribute("visibility","hidden");
+                
+                this._miniIcons._allowRemote.setAttribute("visibility","visible");
+                this._miniIcons._allowRemote.setAttribute("showhandcursor",false);
+                this._miniIcons._allowRemote._text.setAttribute("text","");
+                this._miniIcons._denyRemote.setAttribute("visibility","hidden");
+
+                this._miniIcons._allowExclusiveAudio.setAttribute("visibility","visible");
+                this._miniIcons._allowExclusiveAudio.setAttribute("showhandcursor",false);
+                this._miniIcons._allowExclusiveAudio._text.setAttribute("text","");
+                this._miniIcons._denyExclusiveAudio.setAttribute("visibility","hidden");
+                
+                if (canvas.ismoderator) {
+                	this._x._kickUser.setAttribute("visibility","visible");
+                    if (canvas.ismoderator && canvas.publicSID != this.refObj.publicSID) {
+                        this._miniIcons._isMod.setAttribute("showhandcursor",true);
+                        this._miniIcons._isMod._text.setAttribute("text",canvas.getLabelName(675));
+                    } else {
+                        this._miniIcons._isMod._text.setAttribute("text","");
+                        this._miniIcons._isMod.setAttribute("showhandcursor",false);
+                    }
+                } else {
+                	this._x._kickUser.setAttribute("visibility","hidden");
+                    this._miniIcons._isMod._text.setAttribute("text","");
+                    this._miniIcons._isMod.setAttribute("showhandcursor",false);
+                }
+                
+            } else {
+                this._miniIcons._isMod.setAttribute("visibility","hidden");
+                    
+                //if this User is the Moderator he can grant access to whiteboard to anybody
+                if (canvas.ismoderator) {
+                	this._x._kickUser.setAttribute("visibility","visible");
+                    this._miniIcons._isModAddbutton.setAttribute("visibility","visible");
+                    
+                    
+                    this._miniIcons._canDraw._text.setAttribute("text",canvas.getLabelName(612));
+                    if (this.refObj.canDraw) {
+                        //Only in THIS case you can remove the Draw-to-whiteboard right 
+                        this._miniIcons._canDraw.setAttribute("visibility","visible");
+                        this._miniIcons._canDraw.setAttribute("showhandcursor",true);
+                        this._miniIcons._canDrawModerator.setAttribute("visibility","hidden");
+                    } else {
+                        this._miniIcons._canDraw.setAttribute("visibility","hidden");
+                        this._miniIcons._canDraw.setAttribute("showhandcursor",false);
+                        this._miniIcons._canDraw._text.setAttribute("text","");
+                        this._miniIcons._canDrawModerator.setAttribute("visibility","visible");
+                    }
+                    
+                  	this._miniIcons._allowShare._text.setAttribute("text",canvas.getLabelName(1068));
+                    if (this.refObj.canShare) {
+                    	this._miniIcons._allowShare.setAttribute("visibility","visible");
+                        this._miniIcons._allowShare.setAttribute("showhandcursor",true);
+                        this._miniIcons._denyShare.setAttribute("visibility","hidden");
+                    } else {
+                    	this._miniIcons._allowShare.setAttribute("visibility","hidden");
+                        this._miniIcons._allowShare.setAttribute("showhandcursor",false);
+                        this._miniIcons._denyShare.setAttribute("visibility","visible");
+                    }
+                    
+                    this._miniIcons._allowRemote._text.setAttribute("text",canvas.getLabelName(1079));
+                    if (this.refObj.canRemote) {
+                    	this._miniIcons._allowRemote.setAttribute("visibility","visible");
+                        this._miniIcons._allowRemote.setAttribute("showhandcursor",true);
+                        this._miniIcons._denyRemote.setAttribute("visibility","hidden");
+                    } else {
+                    	this._miniIcons._allowRemote.setAttribute("visibility","hidden");
+                        this._miniIcons._allowRemote.setAttribute("showhandcursor",false);
+                        this._miniIcons._denyRemote.setAttribute("visibility","visible");
+                    }
+
+					this._miniIcons._allowExclusiveAudio._text.setAttribute("text",canvas.getLabelName(1425));
+                    if (this.refObj.canGiveAudio) {
+                    	this._miniIcons._allowExclusiveAudio.setAttribute("visibility","visible");
+                        this._miniIcons._allowExclusiveAudio.setAttribute("showhandcursor",true);
+                        this._miniIcons._denyExclusiveAudio.setAttribute("visibility","hidden");
+                    } else {
+                    	this._miniIcons._allowExclusiveAudio.setAttribute("visibility","hidden");
+                        this._miniIcons._allowExclusiveAudio.setAttribute("showhandcursor",false);
+                        this._miniIcons._denyExclusiveAudio.setAttribute("visibility","visible");
+                    }
+                    
+                } else {
+                	this._x._kickUser.setAttribute("visibility","hidden");
+                    this._miniIcons._isModAddbutton.setAttribute("visibility","hidden");
+                    
+                    if (this.refObj.canDraw) {
+                        this._miniIcons._canDraw.setAttribute("visibility","visible");
+                    } else {
+                        this._miniIcons._canDraw.setAttribute("visibility","hidden");
+                    }
+                    
+                    if (this.refObj.canShare) {
+                        this._miniIcons._allowShare.setAttribute("visibility","visible");
+                    } else {
+                        this._miniIcons._allowShare.setAttribute("visibility","hidden");
+                    }
+                    
+                    if (this.refObj.canRemote) {
+                        this._miniIcons._allowRemote.setAttribute("visibility","visible");
+                    } else {
+                        this._miniIcons._allowRemote.setAttribute("visibility","hidden");
+                    }
+
+                    if (this.refObj.canGiveAudio) {
+                    	this._miniIcons._allowExclusiveAudio.setAttribute("visibility","visible");
+                    } else {
+                    	this._miniIcons._allowExclusiveAudio.setAttribute("visibility","hidden");
+                    }
+                    
+                    //No Update action available
+                    this._miniIcons._canDrawModerator.setAttribute("visibility","hidden");
+                    this._miniIcons._denyShare.setAttribute("visibility","hidden");
+                    this._miniIcons._denyRemote.setAttribute("visibility","hidden");
+                    this._miniIcons._denyExclusiveAudio.setAttribute("visibility","hidden");
+                    this._miniIcons._canDraw.setAttribute("showhandcursor",false);
+                    this._miniIcons._canDraw._text.setAttribute("text","");
+                    this._miniIcons._allowRemote._text.setAttribute("text","");
+                    this._miniIcons._allowExclusiveAudio._text.setAttribute("text","");
+                    this._miniIcons._allowShare._text.setAttribute("text","");
+                    
+                }
+                    
+            }
+            
+            if ($debug) Debug.write("onmicMutedStatusChangedItem :3: ",this.refObj.publicSID,this.refObj.micMuted);
+            
+            if (this.refObj.micMuted) {
+            	this._x._mute._text.setAttribute("labelid",1408);
+            	this._x._mute.setAttribute("frame",2);
+            } else {
+            	this._x._mute._text.setAttribute("labelid",1407);
+            	this._x._mute.setAttribute("frame",1);
+            }
+            
+            //this Icon is only available in case its the current User 
+            if (canvas.publicSID == this.refObj.publicSID) {
+                //if ($debug) Debug.write("IS SELF !!!!!!");
+                this._miniIcons._restartDevice.setAttribute("visibility","visible");
+            } else {
+                this._miniIcons._restartDevice.setAttribute("visibility","hidden");
+            }
+        ]]>
+    </method>
+    
+    <!--
+    public Boolean setCanDraw(String SID, String publicSID, boolean canDraw)
+     -->
+     
+    <netRemoteCallHib name="setCanDraw" funcname="whiteboardservice.setCanDraw"
+                       remotecontext="$once{ canvas.thishib }">
+        <netparam><method name="getValue"> return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.refObj.publicSID;</method></netparam>
+        <netparam><method name="getValue">return !parent.parent.refObj.canDraw;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            //Debug.write("whiteboardservice.setCanDraw : ",value);
+            
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+            
+    <netRemoteCallHib name="setCanShare" funcname="whiteboardservice.setCanShare"
+                       remotecontext="$once{ canvas.thishib }">
+        <netparam><method name="getValue"> return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.refObj.publicSID;</method></netparam>
+        <netparam><method name="getValue">return !parent.parent.refObj.canShare;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            //Debug.write("whiteboardservice.setCanShare : ",value);
+            
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="setCanRemote" funcname="whiteboardservice.setCanRemote"
+                   remotecontext="$once{ canvas.thishib }">
+        <attribute name="publicSID" value="" type="string" />
+        <attribute name="canRemote" value="true" type="boolean" />
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.refObj.publicSID;</method></netparam>
+        <netparam><method name="getValue">return !parent.parent.refObj.canRemote;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("whiteboardservice.setCanRemote : ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>
+
+    <netRemoteCallHib name="setCanGiveAudio" funcname="whiteboardservice.setCanGiveAudio"
+                   remotecontext="$once{ canvas.thishib }">
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.refObj.publicSID;</method></netparam>
+        <netparam><method name="getValue">return !parent.parent.refObj.canGiveAudio;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("setCanGiveAudio : ",value);
+            ]]>
+        </handler>
+    </netRemoteCallHib>
+            
+    <handler name="onmouseover">
+        this.setAttribute('bgcolor',canvas.getThemeColor('baseMousecolorizer'));
+    </handler>
+    
+    <handler name="onmouseout">
+        this.setAttribute('bgcolor',0xDADADA);
+    </handler>
+    
+    <image name="_userpic" stretches="both" x="1">
+        <handler name="onload">
+            <![CDATA[
+                if (this.height > 38) {
+                    //If bigger then containter then scale it
+                    var width = this.width/(this.height/38);
+                    this.setAttribute('height',38);
+                    this.setAttribute('width',width);
+                }
+                if (this.width > 38) {
+                    //If bigger then containter then scale it
+                    var height = this.height/(this.width/38);
+                    this.setAttribute('height',height);
+                    this.setAttribute('width',38);
+                }
+            ]]>
+        </handler>
+    </image>
+    
+    <labelText name="_firstName" fontsize="10" x="40" text="${ parent.firstname }" />
+    <labelText name="_lastName" fontsize="10" x="40" y="20" text="${ parent.lastname }" />
+    
+	<miniIcons name="_start_private_chat_rsc" x="114" y = "2" width="16" height="16"
+		resource="start_private_chat_rsc" showhandcursor="true"
+		visible="${ (canvas.currentRoomObj.hideChat == null || !canvas.currentRoomObj.hideChat) &amp;&amp; parent.refObj.publicSID != canvas.publicSID }">
+		
+		<handler name="onclick">
+			var refObj = parent.refObj;
+			if ($debug) Debug.write("Start Private Chat: ", refObj);
+			if (refObj.publicSID == canvas.publicSID) {
+				new lz.labelerrorPopup(canvas.main_content._content.inner
+					, {errorlabelid:1495});
+				return;
+			}
+			canvas._currentChatPanel.addChat(refObj);
+		</handler>
+		<labelTooltip labelid="1493" />
+	</miniIcons>
+    
+    <view name="_x" x="132" y="2">
+	     
+	    <miniIcons name="_mute" x="82" width="16" height="16" resource="mute_micro_btn_rsc" showhandcursor="true" >
+            <handler name="onclick">
+                <![CDATA[
+                    canvas._videocontainer._videoviewcontent.muteSound(parent.parent.refObj.publicSID, !parent.parent.refObj.micMuted);
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" labelid="1407" />
+        </miniIcons>  
+        
+	    <miniIcons name="_kickUser" width="16" height="16" x="100"
+	               resource="kick_user_rsc" showhandcursor="true">
+	        <handler name="onclick">
+	        	
+	        	if (parent.parent.refObj.publicSID == canvas.publicSID) {
+	                new lz.labelerrorPopup(canvas.main_content._content.inner,{
+	                            errorlabelid:1214
+	                        });
+	                return;
+	            }
+	                
+	        	if (parent.isSuperModerator) {
+	                new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:1217});
+	                return;
+	            }
+	        	
+	            if ($debug) Debug.write("USER Kick: ",parent.parent.refObj.publicSID);
+	            new lz.confirmationSingle(canvas.main_content._content.inner,{
+	                                           labelid:1216,labeliderror:1215,
+	                                           refObj:this,showCheckBox:false});
+	            
+	        </handler>
+	        
+	        <method name="sendConfirmation" args="yesno" >
+	            this.kickUserByPublicSID.publicSID = parent.parent.refObj.publicSID;
+	            this.kickUserByPublicSID.doCall();
+	        </method>
+	        
+	        <netRemoteCallHib name="kickUserByPublicSID" funcname="userservice.kickUserByPublicSID" 
+	                          remotecontext="$once{ canvas.thishib }" >    
+	            <attribute name="publicSID" value="" type="string" />  
+	            <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+	            <netparam><method name="getValue"> return parent.publicSID; </method></netparam>
+	            <handler name="ondata" args="value">
+	                if ($debug) Debug.write("kickUserByPublicSID: ",value);
+	                //this.parent.destroy();
+	            </handler>
+	        </netRemoteCallHib> 
+	        
+	        <labelTooltip labelid="1213" />
+	    </miniIcons>   
+    </view>
+    
+    <view name="_miniIcons" x="113" y="22" height="18" >
+        
+        <miniIcons name="_isMod" x="0" width="16" resource="right_isactive_rsc" 
+                   height="16" showhandcursor="false">
+            <handler name="onclick">
+                <![CDATA[
+                
+                    if (parent.parent.isSuperModerator) {
+                        new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:838});
+                        return;
+                    }
+                
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to draw on the whiteboard
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        //Do it 
+                        if ($debug) Debug.write("Do Remove It");
+                        hib.removeModerator.publicSIDOfNewModerator = parent.parent.refObj.publicSID;
+                        hib.removeModerator.doCall();
+                        //parent.parent.setCanDraw.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" />
+        </miniIcons>
+        
+        <miniIcons name="_isModAddbutton" opacity="0.5" x="0" width="16" resource="right_notactive_rsc" 
+                   height="16" showhandcursor="true">
+            <handler name="onclick">
+                <![CDATA[
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to draw on the whiteboard
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        //Do it 
+                        if ($debug) Debug.write("Do Add It");
+                        hib.addModerator.publicSIDOfNewModerator = parent.parent.refObj.publicSID;
+                        hib.addModerator.doCall();
+                        //parent.parent.setCanDraw.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" labelid="676" />
+        </miniIcons>
+            
+        <miniIcons name="_canDraw" x="20" width="16" resource="right_isactive_rsc" 
+                   height="16" showhandcursor="false" >
+            <handler name="onclick">
+                <![CDATA[
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to draw on the whiteboard
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        //Do it 
+                        if ($debug) Debug.write("Do add draw to it");
+                        parent.parent.setCanDraw.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" />
+        </miniIcons>
+        
+        <miniIcons name="_canDrawModerator" x="20" width="16" opacity="0.5"
+                   resource="right_notactive_rsc" height="16" showhandcursor="true">
+            <handler name="onclick">
+                //Do it 
+                if ($debug) Debug.write("Do it");
+                parent.parent.setCanDraw.doCall();
+            </handler>
+            <labelTooltip labelid="611" />
+        </miniIcons>
+        
+        <miniIcons name="_allowShare" x="40" width="16" resource="right_isactive_rsc" 
+                   height="16" showhandcursor="false" >
+            <handler name="onclick">
+                <![CDATA[
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to draw on the whiteboard
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        //Do it 
+                        if ($debug) Debug.write("Do add draw to it");
+                        parent.parent.setCanShare.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" labelid="1068" />
+        </miniIcons>
+        
+        <miniIcons name="_denyShare" x="40" width="16" opacity="0.5"
+                   resource="right_notactive_rsc" height="16" showhandcursor="true">
+            <handler name="onclick">
+                //Do it 
+                if ($debug) Debug.write("Do it");
+                parent.parent.setCanShare.doCall();
+            </handler>
+            <labelTooltip labelid="1067" />
+        </miniIcons>
+        
+        
+        <miniIcons name="_allowRemote" x="60" width="16" resource="right_isactive_rsc" 
+                   height="16" showhandcursor="false" >
+            <handler name="onclick">
+                <![CDATA[
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to draw on the whiteboard
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        //Do it 
+                        if ($debug) Debug.write("Do add draw to it");
+                        parent.parent.setCanRemote.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" labelid="1079" />
+        </miniIcons>
+        
+        <miniIcons name="_denyRemote" x="60" width="16" opacity="0.5"
+                   resource="right_notactive_rsc" height="16" showhandcursor="true">
+            <handler name="onclick">
+                //Do it 
+                if ($debug) Debug.write("Do it");
+                parent.parent.setCanRemote.doCall();
+            </handler>
+            <labelTooltip labelid="1078" />
+        </miniIcons>
+
+        <miniIcons name="_allowExclusiveAudio" x="80" width="16" resource="right_isactive_rsc"
+                   height="16" showhandcursor="false" >
+            <handler name="onclick">
+                <![CDATA[
+                    //if the label is set and this is a Moderator then this user should
+                    //allow the click event => the click event will trigger
+                    //this user away from beeing able to give exclusive audio
+                    if (canvas.ismoderator && this._text.text.length != 0) {
+                        if ($debug) Debug.write("Do it");
+                        parent.parent.setCanGiveAudio.doCall();
+                    }
+                ]]>
+            </handler>
+            <labelTooltip name="_text" text="" labelid="1425" />
+        </miniIcons>
+
+        <miniIcons name="_denyExclusiveAudio" x="80" width="16" opacity="0.5"
+                   resource="right_notactive_rsc" height="16" showhandcursor="true">
+            <handler name="onclick">
+                parent.parent.setCanGiveAudio.doCall();
+            </handler>
+            <labelTooltip labelid="1424" />
+        </miniIcons>
+        
+        
+        <miniIcons name="_restartDevice" x="100" width="16" height="16" resource="resyncuser_rsc" showhandcursor="true">
+            <handler name="onclick">
+                //TODO: local connection call
+                if ($debug) Debug.write("parent.parent.refObj.publicSID: ",parent.parent.refObj.publicSID);
+                canvas._videocontainer._videoviewcontent.showDevicePopUp(true);
+            </handler>
+            <labelTooltip labelid="610" />
+        </miniIcons>
+        
+        <view name="_loudness" x="120" >
+            <view x="0" y="0" name="loudness" resource="speaking" opacity="0.2"
+                  onmouseover="" onmouseout="" >      
+			    <handler name="onclick">
+					<![CDATA[
+				      	if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+				            canvas.thishib.giveExclusiveAudio.setExclusiveAudio(parent.parent.parent.refObj.publicSID);
+				        } else {
+				        	new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:1478});    
+				        }
+					]]>
+				</handler> 
+                <labelTooltip inittwice="true" labelid="372" />
+            </view>
+        </view>    
+    </view>
+    
+    <view name="divisionLine" width="$once{ parent.width }" 
+          bgcolor="0xFFFFFF" height="1" y="39" />
+    
+</class>
+ 
+</library>
diff --git a/WebContent/src/modules/conference/participants/participants.lzx b/WebContent/src/modules/conference/participants/participants.lzx
new file mode 100644
index 0000000..bdd0973
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/participants.lzx
@@ -0,0 +1,301 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="participants" extends="baseRoomInnerList" 
+       height="$once{ parent.height-34 }">
+
+    <!--- holds a references to the videoview which is broadcasting -->
+    <attribute name="broadCastViewRef" value="null" />
+    
+    <handler name="oninit">
+        //set modus
+        canvas.thishib.modus = "conference";
+       
+        //set reference, this reference will be cleared at *ontabcontenctleave* event
+        canvas._videocontainer=this;
+        
+        // Reconnect User to its Room Id
+        canvas.thishib.userScope = canvas.thishib.currentroomid;
+        var src = hib.getUrl();
+        
+        if( $debug ) Debug.write("videoContainer: canvas.thishib: ",canvas.thishib.src,canvas.thishib);
+        
+        if (canvas.thishib.src != src) {
+	        if( $debug ) Debug.write("SRC is WRONG ");
+            canvas.thishib.setAttribute('src',src);
+
+			if (canvas.wicketsid == null){            
+		        if( $debug ) Debug.write("Going to reconnect ");
+	            canvas.thishib.reconnectionAction = true;
+	            canvas.thishib.reconnectObjRef = this;
+	            canvas.thishib.disconnect();
+            } else {
+            	this.reconnectSuccess();
+            }
+        } else {
+            //The user is already in the correct Scope
+            this.reconnectSuccess();
+        }
+    </handler>
+    
+    <method name="initList">
+    	//
+    </method>
+
+    <commonVideoComponentAdapter name="_videoviewcontent" />
+
+    <method name="reconnectSuccess">
+        if ($debug) Debug.write("User Reloged In");
+        //Send to SWF10 video-container to connect on the conference room url
+        //and wait for the as3ConnectionSuccess-Event
+        this._videoviewcontent.reconnectSuccess(false);
+    </method>
+
+    <!---
+        We need to wait till the video-container / as3 app has the connection established
+        otherwise it can happen that the video tries to start playing before the rtmp-connection
+        was established
+     -->
+    <method name="as3ConnectionSuccess">
+    	if ($debug) Debug.write("as3ConnectionSuccess continue loading");
+    	//set default values and get already availible streams
+    	//it can happen that if you click to exit the room the views are not
+    	//not cleaned up yet and you receive this event from the LocalConnection
+    	if (this["getRoomModeratorsByRoomId"]) {
+            this.getRoomModeratorsByRoomId.doCall();
+    	}
+    </method>
+
+
+
+    <!---
+        Returns a list of all moderators of the current room and parses 
+        if the current user should receive the supermoderator flag or not
+     -->
+    <netRemoteCallHib name="getRoomModeratorsByRoomId" funcname="conferenceservice.getRoomModeratorsByRoomId" 
+                      remotecontext="$once{ canvas.thishib }" >  
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>    
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getRoomModeratorsByRoomId: ",value);
+                canvas.becomeSuperModerator = false;
+                
+                parent.setRoomValues.applyDefaultModeration = canvas.becomemoderator;
+                canvas.becomeSuperModerator = canvas.becomemoderator;
+                
+                if (!canvas.becomeSuperModerator) {
+    	            for (var i=0;i<value.length;i++) {
+                        
+                        if (value[i].user.user_id == canvas.user_id) {
+                            parent.setRoomValues.applyDefaultModeration = true;
+                            canvas.becomeSuperModerator = value[i].isSuperModerator;
+                            if ($debug) Debug.info("Make this User to an Moderator");
+                            break;
+                        }
+                        
+                    }
+                }
+	            
+                if ($debug) Debug.write("canvas.becomemoderator: ",canvas.becomemoderator);
+                if ($debug) Debug.write("canvas.becomeSuperModerator: ",canvas.becomeSuperModerator);
+                
+                canvas.currentusercolor = canvas.getColorForUser();
+                
+                var organisation_id = 1;
+            
+                if ($debug) Debug.write(hib.userobject); 
+                if ($debug) Debug.write(hib.currentdomainObj); 
+                
+                if (hib.currentdomainObj != null) {
+                    organisation_id = hib.currentdomainObj.organisation_id
+                }
+                
+                this.parent.setRoomValues.organisation_id = organisation_id;
+                
+                if ($debug) Debug.write("setRoomValues CALL: ");
+                this.parent.setRoomValues.doCall();
+            
+            ]]>
+        </handler>
+    </netRemoteCallHib>     
+
+    <!---
+        Returns a list of all users currently in the conference room
+     -->
+    <netRemoteCallHib name="setRoomValues" funcname="setRoomValues" remotecontext="$once{ canvas.thishib }" >   
+        <attribute name="applyDefaultModeration" value="false" type="boolean" />
+        <attribute name="organisation_id" value="0" type="number" />
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <netparam><method name="getValue">return parent.applyDefaultModeration;</method></netparam>
+        <netparam><method name="getValue">return canvas.becomeSuperModerator;</method></netparam>
+        <netparam><method name="getValue">return parent.organisation_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentusercolor;</method></netparam>
+        <handler name="ondata" args="roomStatus">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("+++++++++++++++++");
+            if ($debug) Debug.write("+++++++++++++++++ setRoomValues1: ",roomStatus);
+            
+            if (roomStatus.roomFull) {
+                canvas.thishib.showFullMessage = true;
+                canvas.thishib.disconnect();
+            }
+            
+            if (roomStatus.browserStatus.browserInited) {
+                var tObj = new Object();
+                tObj[0] = "newBrowserURL";
+                tObj[1] = roomStatus.browserStatus.currentURL;
+                canvas.startBrowser(tObj);
+            }
+            
+            var value = roomStatus.clientList;
+            
+            for (var i = 0; i < value.length; ++i){
+                if ( value[i].streamid == canvas.streamid ) {
+                    canvas.isAllowedToDraw = value[i].canDraw;
+                }
+                //if ($debug) Debug.write("getClientListScope value: ",value[i]);
+                this.parent.addItem(value[i].connectedSince,value[i].isMod,value[i].streamid,value[i].username,
+                              '',value[i].formatedDate,value[i].userpos,value[i].usercolor,value[i]);
+            }
+            
+            //this content must be inited _after_ setting the default values
+            canvas.thishib.getCurrentModeratorList.doCall(); 
+            
+            canvas.thishib.checkLzRecording.doCall();
+            if (canvas._currentChatPanel.visible) {
+				canvas._currentChatPanel.toggleopen();
+			}
+		]]>
+        </handler>  
+    </netRemoteCallHib>
+
+    <!---
+        invoked if another client logs into the room 
+        after choosing devices
+     -->     
+    <method name="setAVSettingsToClient" args="rcl">
+        this._videoviewcontent.setAVSettingsToClient(rcl);
+    </method>
+
+    <method name="receiveExclusiveAudioFlag" args="publicSID">
+    <![CDATA[
+    	if ($debug) Debug.write("receiveExclusiveAudioFlag: ",publicSID);
+        var obj = this._participants.getUserListItemByPublicSID(publicSID);
+
+        for (var i=0; i<obj.parent.subviews.length; i++) {
+            var item = obj.parent.subviews[i];
+            var rcl = new Object();
+
+            rcl.publicSID = item.refObj.publicSID;
+            rcl.micMuted = !(publicSID == item.refObj.publicSID);
+            canvas.setMuteStatus(rcl);
+        }
+    ]]>
+    </method>
+    
+    <method name="addItem" args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
+        <![CDATA[
+            if ($debug) Debug.write("initializeStreams addItem: ",connectedSince,object);
+            
+            //Do init only in case this stream is NOT the same as we are
+            if (streamid!=canvas.streamid){
+            	//if ($debug) Debug.write("???????? object.isBroadcasting :: ",object.isBroadcasting);
+                this._videoviewcontent.createVideo(object.publicSID, object.firstname+' '+object.lastname, object.broadCastID, object.avsettings, -1, object);
+            }
+           
+            //do add self too
+            this._participants.addItem(object);
+        ]]>
+    </method>
+
+    <method name="setSpeakingByPos" args="publicSID,bool">
+    	var tObj = this._participants.getUserListItemByPublicSID(publicSID);
+    	if (tObj != null) {
+    		tObj._miniIcons._loudness.loudness.setAttribute('opacity', bool ? 1 : 0.2);
+        }
+        this._videoviewcontent.setSpeakingByPos(publicSID, bool);
+    </method>
+
+    <method name="closeStreamClient" args="publicSID">
+        this._videoviewcontent.closeStreamClient(publicSID);
+    </method>
+
+    <method name="updateMuteStatusVideoView" args="roomClient">
+        this._videoviewcontent.updateMuteStatusVideoView(roomClient);
+    </method>
+    
+    <method name="disconnectclient" args="publicSID">
+        this._videoviewcontent.disconnectclient(publicSID);
+        this._participants.disconnectclient(publicSID);
+    </method>
+
+    <method name="resetAllValues">
+        this._videoviewcontent.resetAllValues();
+    </method>
+    
+    <!--
+        invoked whenever a User starts to Stream Video in this Room,
+        interviewPodId has only a meaning in the Room Type Interview
+     -->
+    <method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
+        this._videoviewcontent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
+    </method>
+    
+	<method name="addClientItem" args="connectedSince,isMod,streamid,username,room_id,formatedDate,position,color,object">
+	<![CDATA[
+		if ($debug) Debug.write("### initializeStreams addClientItem: ",connectedSince,isMod,streamid,username,room_id,formatedDate);
+		
+		if (canvas.publicSID != object.publicSID){
+		if ($debug) Debug.write("### initializeStreams createVideoObject: ", object);
+			this._videoviewcontent.createVideoObject(object.publicSID, false, -1, object);
+		}
+		
+		//Do Add it anyway
+		this._participants.addItem(object);
+	]]>
+	</method>
+    
+    <moderationMiniIconsEventUserList name="_applyAndStatusIcons" x="2" y="2" >
+        <handler name="onismoderator" reference="canvas" args="m">
+            this.updateIcons();
+        </handler>
+        <handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onlastBroadCastingUser" reference="canvas" args="userObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onmicMutedStatusChangedItem" reference="canvas" args="userObject">
+            this.updateIcons();
+        </handler>
+    </moderationMiniIconsEventUserList>
+    
+    <participantList name="_participants" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/participants/resources/accept.png b/WebContent/src/modules/conference/participants/resources/accept.png
new file mode 100644
index 0000000..89c8129
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/accept.png
Binary files differ
diff --git a/WebContent/src/modules/conference/participants/resources/delete.png b/WebContent/src/modules/conference/participants/resources/delete.png
new file mode 100644
index 0000000..08f2493
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/delete.png
Binary files differ
diff --git a/WebContent/src/modules/conference/participants/resources/micro_small.png b/WebContent/src/modules/conference/participants/resources/micro_small.png
new file mode 100644
index 0000000..215c831
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/micro_small.png
Binary files differ
diff --git a/WebContent/src/modules/conference/participants/resources/pencil_add.png b/WebContent/src/modules/conference/participants/resources/pencil_add.png
new file mode 100644
index 0000000..902bbe6
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/pencil_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/participants/resources/pencil_delete.png b/WebContent/src/modules/conference/participants/resources/pencil_delete.png
new file mode 100644
index 0000000..d8944e6
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/pencil_delete.png
Binary files differ
diff --git a/WebContent/src/modules/conference/participants/resources/user_add.png b/WebContent/src/modules/conference/participants/resources/user_add.png
new file mode 100644
index 0000000..deae99b
--- /dev/null
+++ b/WebContent/src/modules/conference/participants/resources/user_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/polls/answerPoll.lzx b/WebContent/src/modules/conference/polls/answerPoll.lzx
new file mode 100644
index 0000000..781d2b0
--- /dev/null
+++ b/WebContent/src/modules/conference/polls/answerPoll.lzx
@@ -0,0 +1,101 @@
+<?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.
+  
+-->
+<library>
+
+<class name="answerPoll" extends="labelExplorerBox" labelid="18"
+    docking="true" resizeable="false" closable="true" width="500" x="100" height="240">
+    
+	<attribute name="createdBy" type="string" value="" />
+	<attribute name="pollDate" type="string" value="" />
+	<attribute name="pollQuestion" type="string" value="" />
+	<attribute name="pollTypeId" type="string" value="" />
+	<attribute name="roomPollAnswerList" type="string" value="" />
+	<attribute name="roomPollId" type="string" value="" />
+	<attribute name="roomScopeName" type="string" value="" />
+	
+	<labelText y="22" name="head" />
+	<labelText text="$once{ parent.pollQuestion }" y="42" x="0" height="60" width="380" multiline="true" resize="false"/>
+	
+	<handler name="oninit">
+		if ($debug) Debug.write("[answerPoll:oninit] this: ",this);
+		if (this.pollTypeId==1){
+			//Debug.write("Yes/No Question");
+			this.pollboolean.setAttribute('visible',true);
+		} else  if(this.pollTypeId==2) {
+			//Debug.write("Numeric Question");
+			this.pollnumeric.setAttribute('visible',true);
+		}
+		this.head.setAttribute('text',this.createdBy+" "+canvas.getLabelName(36));
+	</handler>
+	
+	<labelText y="102" labelid="33" />
+	
+	<radiogroup name="pollboolean" x="100" y="102" visible="false">
+	  	<labelRadioButton value="1" labelid="34" selected="true" />
+	  	<labelRadioButton value="2" labelid="35" />
+	</radiogroup>
+
+	<resetCombobox name="pollnumeric" visible="false" width="160" x="100" y="102" editable="false" itemclassname="bigTextListItem" >
+		<handler name="oninit">
+			<![CDATA[
+			for (var i=1;i<11;i++){
+				this.addItem(i,i);
+			}
+			this.selectItem('1');
+			]]>
+		</handler>
+	</resetCombobox>
+	
+    <simpleLabelButton labelid="32" width="200" x="80" y="218">
+    	<handler name="onclick">
+    		if (parent.pollTypeId==1){
+    			this.parent.vote.pollvalue = Number(parent.pollboolean.getValue());
+    		} else if (parent.pollTypeId==2){
+    			this.parent.vote.pollvalue = Number(parent.pollnumeric.getValue());
+    		}
+    		this.parent.vote.pollTypesId = parent.pollTypeId;
+    		this.parent.vote.doCall();
+    		
+    	</handler>
+    </simpleLabelButton>
+    
+    <simpleLabelButton labelid="25" width="200" x="290" y="218" 
+        onclick="this.parent.close();" />
+    
+        <netRemoteCallHib name="vote" funcname="pollservice.vote" remotecontext="$once{ canvas.thishib }" >
+            <attribute name="pollvalue" type="number" value="0" />
+            <attribute name="pollTypesId" type="number" value="0" />
+            <netparam><method name="getValue">return parent.pollvalue;</method></netparam>
+            <netparam><method name="getValue">return parent.pollTypesId;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    //Debug.write("vote : ",value);
+                    this.parent.close();
+                ]]>
+            </handler>   
+        </netRemoteCallHib>      
+    
+    
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/polls/createPollWin.lzx b/WebContent/src/modules/conference/polls/createPollWin.lzx
new file mode 100644
index 0000000..fe283c3
--- /dev/null
+++ b/WebContent/src/modules/conference/polls/createPollWin.lzx
@@ -0,0 +1,99 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="bigTextListItem" extends="textlistitem" fontsize="11" />
+
+	<class name="createPollWin" extends="labelExplorerBox" labelid="18"
+		docking="true" resizeable="false" closable="true" width="500" x="100"
+		height="240">
+
+		<labelText fontstyle="bold" labelid="19" y="22" />
+
+		<labelText labelid="1410" y="42" />
+		<customEdittext name="_name" multiline="false" width="390"
+			x="100" y="42" />
+
+		<labelText labelid="20" y="67" />
+		<customEdittext name="_question" multiline="true"
+			width="390" x="100" y="67" height="60" />
+
+		<netRemoteCallHib name="getPollTypeList" funcname="pollservice.getPollTypeList"
+			remotecontext="$once{ canvas.thishib }">
+			<handler name="ondata" args="value">
+			<![CDATA[
+				//The onResult-Handler will be called be the rtmpconnection
+				if ($debug) Debug.write("getPollTypeList : ",value)
+				for (var i = 0; i < value.length; ++i) {
+					this.parent._polltypes.addItem(canvas.getLabelName(value[i].label.fieldvalues_id), value[i].pollTypesId);
+				}
+				this.parent._polltypes.selectItem(value[0].pollTypesId);
+			]]>
+			</handler>
+		</netRemoteCallHib>
+
+		<labelText labelid="21" y="142" />
+		<resetCombobox name="_polltypes" width="160" x="100" y="142"
+			editable="false" itemclassname="bigTextListItem">
+			<handler name="oninit">
+				this.parent.getPollTypeList.doCall();
+			</handler>
+		</resetCombobox>
+
+		<labelText fgcolor="red" labelid="23" y="175" width="480"
+			multiline="true" resize="false" />
+
+		<netRemoteCallHib name="createPoll" funcname="pollservice.createPoll"
+			remotecontext="$once{ canvas.thishib }">
+			<attribute name="pollname" value="" type="string" />
+			<attribute name="pollquestion" value="" type="string" />
+			<attribute name="polltypesid" value="0" type="number" />
+			<netparam><method name="getValue">return parent.pollname;</method></netparam>
+			<netparam><method name="getValue">return parent.pollquestion;</method></netparam>
+			<netparam><method name="getValue">return parent.polltypesid;</method></netparam>
+			<handler name="ondata" args="value">
+				//The onResult-Handler will be called be the rtmpconnection
+				if ($debug) Debug.write("createPoll : ",value);
+				this.parent.close();
+			</handler>
+		</netRemoteCallHib>
+
+		<simpleLabelButton labelid="22" width="100" x="280"
+			y="218">
+			<handler name="onclick">
+				this.parent.createPoll.pollname =
+				this.parent._name.getText();
+				this.parent.createPoll.pollquestion =
+				this.parent._question.getText();
+				this.parent.createPoll.polltypesid =
+				this.parent._polltypes.getValue();
+				//Debug.write("this.parent.createPoll.createPoll:",this.parent.createPoll.createPoll);
+				this.parent.createPoll.doCall();
+			</handler>
+		</simpleLabelButton>
+
+		<simpleLabelButton labelid="25" width="100" x="390"
+			y="218" onclick="this.parent.close();" />
+
+	</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/polls/library.lzx b/WebContent/src/modules/conference/polls/library.lzx
new file mode 100644
index 0000000..0b31a5b
--- /dev/null
+++ b/WebContent/src/modules/conference/polls/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+    
+    <include href="createPollWin.lzx" />
+    <include href="answerPoll.lzx" />
+    <include href="resultPollWin.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/polls/resultPollWin.lzx b/WebContent/src/modules/conference/polls/resultPollWin.lzx
new file mode 100644
index 0000000..b7d95bd
--- /dev/null
+++ b/WebContent/src/modules/conference/polls/resultPollWin.lzx
@@ -0,0 +1,323 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="resultPollWin" extends="labelExplorerBox" labelid="37"
+		docking="true" resizeable="false" closable="true" width="454" x="100"
+		height="454">
+		 
+		<attribute name="roomPoll" value="null" />
+		<attribute name="archPolls" value="null" />
+		<attribute name="resultpollvotes" value="null" />
+ 		<attribute name="displayedPoll" value="null" />
+
+		<handler name="oninit">
+			displayResults(roomPoll);
+		</handler>
+		
+		<method name="displayResults" args="poll">
+		<![CDATA[
+			displayedPoll = poll;
+			this.content.setAttribute("visible", poll != null);
+			if (poll == null) {
+				this.head.setAttribute('text', canvas.getLabelName(41));
+				updateButtons();
+				return;
+			}
+			updateButtons();
+			this.head.setAttribute('text',
+					(canvas.user_id == poll.createdBy.user_id ? canvas
+							.getLabelName(1411) : poll.createdBy.login)
+							+ " " + canvas.getLabelName(36));
+
+			var totalVotes = poll.roomPollAnswerList.length;
+			this.content.question.text.setAttribute('text', poll.pollQuestion);
+			this.content.voteResultNum.setAttribute('text', totalVotes);
+			if (this.resultpollvotes != null) {
+				this.resultpollvotes.destroy();
+			}
+			this.resultpollvotes = new lz.view(this.content, {
+						y : 146,
+						x : 100
+					});
+
+			var isNumeric = poll.pollType.isNumericAnswer;
+			var resArray = new Array(isNumeric ? 10 : 2);
+			for (var i = 0; i < resArray.length; ++i) {
+				resArray[i] = 0;
+			}
+			for (var i = 0; i < totalVotes; ++i) {
+				var idx = isNumeric
+						? poll.roomPollAnswerList[i].pointList - 1
+						: (poll.roomPollAnswerList[i].answer ? 0 : 1);
+				resArray[idx]++;
+			}
+			if (content._chartType.getValue() == 0) {
+				new lz.simplelayout(this.resultpollvotes, {
+							axis : 'y',
+							spacing : 2
+						});
+				for (var i = 0; i < resArray.length; ++i) {
+					var pos = (totalVotes == 0) ? 0 : Math.round(100
+							* resArray[i] / totalVotes);
+					new lz.parentResultPollBalk(this.resultpollvotes, {
+								newX : pos * 2,
+								newPercent : pos + '%',
+								textA : isNumeric ? i + 1 : canvas
+										.getLabelName(i == 0 ? 34 : 35)
+							});
+				}
+			} else {
+
+				if (!isNumeric) {
+					//yes/no
+					new lz.resultPieCharPoll(this.resultpollvotes, {
+								xseries : ["yes", "no"],
+								yseries : resArray,
+								tooltipseries : ["yes ("+resArray[0]+")", "no ("+resArray[1]+")"]
+							});
+				} else {
+
+					if ($debug)
+						Debug.write("tObject 1 ", ["1", "2", "3", "4", "5",
+										"6", "7", "8", "9", "10"]);
+					if ($debug)
+						Debug.write("tObject 2 ", resArray);
+
+					var tooltipseries = new Array(resArray.length);
+					for (var i=0;i<resArray.length;i++) {
+						tooltipseries[i] = "N° "+i+" ("+ resArray[i] +")";
+					}
+						
+					//numeric [1,2,3,4,5,6,7,8,9,10]
+					new lz.resultPieCharPoll(this.resultpollvotes, {
+						xseries : ["1", "2", "3", "4", "5", "6", "7", "8", "9",
+								"10"],
+						yseries : resArray,
+						tooltipseries : tooltipseries
+					});
+				}
+
+			}
+		]]>
+		</method>
+
+		<labelText y="22" name="archPollLbl" labelid="1412" />
+		<resetCombobox name="_archPolls" width="342" x="100" y="22"
+			editable="false" itemclassname="bigTextListItem">
+			
+			<netRemoteCallHib name="getArchivedPollList"
+				funcname="pollservice.getArchivedPollList" remotecontext="$once{ canvas.thishib }">
+				<handler name="ondata" args="value">
+				<![CDATA[
+					parent.removeAll();
+					if ($debug)
+						Debug.write("getArchivedPollList ", value);
+
+					this.parent.parent.archPolls = value;
+					var noArch = (value == null || (value != null && value.length == 0));
+					parent.setAttribute("visible", !noArch);
+					parent.parent.archPollLbl.setAttribute("visible", !noArch);
+					if (noArch) {
+						return;
+					}
+					if (this.parent.parent.roomPoll != null) {
+						this.parent.addItem(
+								this.parent.parent.roomPoll.pollName + "("
+										+ canvas.getLabelName(1413) + ")", -1);
+					}
+					for (var i = 0; i < value.length; ++i) {
+						this.parent.addItem(value[i].pollName, i);
+					}
+					this.parent.selectItem(this.parent.parent.roomPoll == null
+							? 0
+							: -1);
+				]]>
+				</handler>
+			</netRemoteCallHib>
+			
+			<handler name="oninit">
+				this.getArchivedPollList.doCall();
+			</handler>
+			
+			<handler name="onselect" args="sel">
+				if ($debug)
+					Debug.write("onselect ", sel);
+				this.parent.displayResults(sel.value > -1
+						? this.parent.archPolls[sel.value]
+						: this.parent.roomPoll);
+			</handler>
+			
+			<method name="removeAll">
+			<![CDATA[
+				var currentCount = this.cblist.getNumItems();
+				if ($debug) Debug.write("currentCount = ", currentCount);
+				for (var i = 0; i < currentCount; ++i) {
+					this.removeItemAt(0);
+				}
+			]]>
+            </method>
+		</resetCombobox>
+		
+		<labelText x="2" y="42" name="head" fontstyle="bold" />
+
+		<view name="content">
+			
+			<view name="question" x="2" y="62" width="440" height="60" bgcolor="0xFFFFFF">
+				<labelText x="0" y="0" name="text" multiline="true" 
+						   resize="false" width="$once{parent.width-14}" />
+				<om_vscrollbar/>
+			</view>
+            
+			<labelText y="122" labelid="39" />
+			<labelText y="122" x="100" name="voteResultNum" />
+			<resetCombobox name="_chartType" width="302" x="140" y="122" editable="false" >
+				<labeldTextListItem labelid="1414" value="0"/>
+				<labeldTextListItem labelid="1415" value="1" selected="true" />
+				<handler name="onselect" args="sel">
+					if ($debug) Debug.write("onselect ", sel);
+					var val = parent.parent._archPolls.getValue();
+					parent.parent.displayResults(val > -1
+							? parent.parent.archPolls[val]
+							: parent.parent.roomPoll);
+				</handler>
+			</resetCombobox>
+
+			<labelText y="146" labelid="40" x="2" />
+		</view>
+		
+		<method name="updateButtons">
+		<![CDATA[
+			_deletePoll.setAttribute("visible", canvas.ismoderator && displayedPoll != null);
+			var hasArch = _archPolls.cblist.getNumItems() > 0;
+			_closePoll.setAttribute("visible", _deletePoll.visible && (!hasArch || (hasArch && _archPolls.getValue() == -1)));
+		]]>
+		</method>
+		
+		<simpleLabelButton name="_deletePoll" labelid="1420" width="100"
+			x="2" y="$once{ parent.height-22 }"
+            onclick="new lz.confirmDeleteWindow(parent, {refObj: this, labelid: 1420, messagelabelid: 1421});"
+            >
+		    <netRemoteCallHib name="deletePoll" funcname="pollservice.deletePoll" remotecontext="$once{ canvas.thishib }" >   
+		        <netparam><method name="getValue"> var poll = parent.parent.parent.displayedPoll; return poll != null ? poll.roomPollId : -1; </method></netparam> 
+		        <handler name="ondata" args="value">
+				<![CDATA[
+					var p = parent.parent;
+					var archCount = p._archPolls.cblist.getNumItems();
+		        	var hasArch = archCount > 0;
+		        	if (!hasArch || (hasArch && p._archPolls.getValue() == -1)) {
+			        	p.roomPoll = null;
+		        	}
+		        	if (archCount) {
+		        		p.displayResults(null);
+		        	}
+		        	p._archPolls.getArchivedPollList.doCall();
+				]]>
+		        </handler>
+		    </netRemoteCallHib>
+			<method name="confirmDelete">
+				deletePoll.doCall();
+			</method>
+        </simpleLabelButton>
+            
+		<simpleLabelButton name="_closePoll" labelid="1418" width="100"
+			x="104" y="$once{ parent.height-22 }"
+            onclick="new lz.confirmDeleteWindow(parent, {refObj: this, labelid: 1418, confirmlabelid: 85, messagelabelid: 1419});"
+            >
+		    <netRemoteCallHib name="closePoll" funcname="pollservice.closePoll" remotecontext="$once{ canvas.thishib }" >   
+		        <handler name="ondata" args="value">
+		        	parent.parent.roomPoll = null;
+		        	parent.parent._archPolls.getArchivedPollList.doCall();
+		        </handler>
+		    </netRemoteCallHib>
+			<method name="confirmDelete">
+				if ($debug) Debug.write("parent._archPolls.getValue(); ", parent._archPolls.getValue());
+				closePoll.doCall();
+			</method>
+        </simpleLabelButton>
+            
+		<simpleLabelButton labelid="25" width="100" x="$once{ parent.width-102 }"
+            y="$once{ parent.height-22 }" onclick="this.parent.close();" />
+		
+	</class>
+
+	<class name="parentResultPollBalk" extends="view">
+		<attribute name="newX" value="0" type="number" />
+		<attribute name="newPercent" value="0%" type="string" />
+		<attribute name="answer" value="0" type="number" />
+		<attribute name="textA" value="" type="string" />
+		<text text="$once{ parent.textA }" resize="true" />
+		<resultPollBalk x="40" />
+	</class>
+
+	<class name="resultPollBalk" extends="view" bgcolor="black"
+		height="20" width="0">
+		<view bgcolor="red" width="${ parent.width-2 }" height="${ parent.height-2 }"
+			x="1" y="1" />
+		<text text="$once{ parent.parent.newPercent }" resize="true" y="2" />
+		<animator attribute="width" to="$once{ parent.parent.newX }"
+			duration="1000" />
+	</class>
+	
+	<class name="resultPieCharPoll" extends="ompiechart" x="40" width="300" 
+		height="280" style="omchartstyle">
+    
+		<attribute name="xseries" value="null"/>
+		<attribute name="yseries" value="null"/>
+		<attribute name="tooltipseries" value="null"/>
+    
+		<handler name="oninit">
+			this.legendbox.bringToFront();
+		</handler>
+    
+		<!--- get the dataseries -->
+		<method name="getOMDataSeries">
+		<![CDATA[
+			var tObject = new Object();
+
+			tObject.xseries = this.xseries;
+			tObject.yseries = this.yseries;
+			tObject.tooltipseries = this.tooltipseries;
+
+			return tObject;
+		]]>
+		</method>  
+    
+		<strokestyle name="pieslicestyle" strokeColor="0x000000" strokeWidth="1"
+			strokeType="solid" />
+        
+		<omlegend name="legendbox" legendFontsize="14" initstage="late"
+			legendborder="true" >
+        
+			<handler name="onitemmouseover" args="item">
+				var piepiece = parent.plotarea.arrPiePieces[item.identifier];
+				piepiece.renderInnerWedge();
+			</handler>
+
+			<handler name="onitemmouseout" args="item">
+				var piepiece = parent.plotarea.arrPiePieces[item.identifier];
+				piepiece.renderWedge();
+			</handler>
+		</omlegend>
+
+	</class>    
+    
+</library>
diff --git a/WebContent/src/modules/conference/popups/autoLoader.lzx b/WebContent/src/modules/conference/popups/autoLoader.lzx
new file mode 100644
index 0000000..14af187
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/autoLoader.lzx
@@ -0,0 +1,65 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="autoLoader" extends="view" align="center" valign="middle" pixellock="true">
+
+	<attribute name="maxwidth" value="400" type="number" />
+	<attribute name="maxsteps" value="22" type="number" />
+	<attribute name="currentsteps" value="0" type="number" />
+	
+	<!-- 
+	<handler name="oninit">
+		this.setAttribute("y",Math.round(this.y));
+		this.setAttribute("y",Math.round(this.y));
+	</handler>
+	 -->
+	
+	<method name="close">
+		canvas.main_content.setAttribute('visibility','visible');
+		canvas._mainbgcontentNavi.setAttribute('visibility','visible');
+		canvas.thishib.loaderVar = null;
+		this.destroy();
+	</method>
+	
+	<method name="setProgress">
+		this.currentsteps += 1;
+		if($debug) Debug.write("autoLoader/setProgress ===== ",this.currentsteps);
+		var w = Math.round(((this.maxwidth)/this.maxsteps)*this.currentsteps);
+		this.loadingbar.setAttribute('visibility','visible');
+		if($debug) Debug.write("autoLoader/setResourceNumber == ",w);
+		this.loadingbar._loading.setAttribute('width',w);
+	</method>
+    
+    <text fontsize="11" name="error" y="20" fgcolor="0x666666"/>
+    <text fontsize="11" name="_src" y="50" align="center" fgcolor="0x666666" visibility="$once{ ($debug) ? 'visible' : 'hidden' }" />
+    
+    <view name="loadingbar"  height="1" pixellock="true"
+          x="-5" y="40" width="$once{ parent.maxwidth+2 }" visibility="hidden">
+          <view x="1" y="1" width="$once{ parent.width-2 }" height="1" opacity="0.3"
+          		bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" />
+          <view name="_loading" x="1" y="1" width="0" height="1"  pixellock="true" 
+          		bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }"/>
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/chooseNickName.lzx b/WebContent/src/modules/conference/popups/chooseNickName.lzx
new file mode 100644
index 0000000..83ccfa7
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/chooseNickName.lzx
@@ -0,0 +1,94 @@
+<?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.
+  
+-->
+<library>
+ 
+ <class name="chooseNickName" extends="labelExplorerBox" labelid="1287"
+    docking="true" resizeable="false" closable="false" 
+    width="324" x="$once{ parent.width/2 - this.width/2 }" y="100" height="200">
+
+    <handler name="oninit">
+    	<![CDATA[
+    	
+    	   var tFirstname = "Guest"
+    	   var tLastname = "User "+getStringTimeWithSeconds();
+    	
+    	   this.firstName.setAttribute("text",tFirstname);
+    	   this.lastName.setAttribute("text",tLastname);
+    	
+    	]]>
+    </handler>
+
+    <!--
+    public Long setUserNickName(String firstname, String lastname, String email)
+     -->
+    <netRemoteCallHib name="setUserNickName" activeErrorHandler="true" 
+                        funcname="xmlcrm.setUserNickName" remotecontext="$once{ canvas.thishib }">          
+        <netparam><method name="getValue">return parent.parent.firstName.getText();</method></netparam>
+        <netparam><method name="getValue">return parent.parent.lastName.getText();</method></netparam>
+        <netparam><method name="getValue">return parent.parent.mail.getText();</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("setUserNickName -1-: ",value);
+                
+                if (value<0){
+                    
+                } else {
+                    canvas.thishib.getCurrentRoomClient.doCall();
+                    parent.close();
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+
+	<labelText y="26" x="4" labelid="1288" />
+		<customEdittext name="firstName" y="24" x="120" width="200" text="" />
+		
+	<labelText y="56" x="4" labelid="1289" />
+		<customEdittext name="lastName" y="54" x="120" width="200" text="" />
+		
+	<labelText y="86" x="4" labelid="1290" />
+		<customEdittext name="mail" y="84" x="120" width="200" 
+						regexpType="email" text="" />
+
+	<simpleLabelButton name="connect" x="$once{ parent.width-this.width-10 }" 
+					   y="$once{ parent.height-30 }" labelid="1291" width="120" >
+		<handler name="onclick">
+			<![CDATA[
+    			if (parent.firstName.getText().length < 4) {
+    				new lz.labelerrorPopup(canvas,{errorlabelid:1292});
+    				return;
+    			} else if (parent.lastName.getText().length < 4) {
+                    new lz.labelerrorPopup(canvas,{errorlabelid:1292});
+                    return;
+                } else if (parent.mail.getText() == "") {
+                    new lz.labelerrorPopup(canvas,{errorlabelid:1293});
+                    return;
+                }
+            
+                this.parent.setUserNickName.doCall();
+            ]]>    
+		</handler>
+	</simpleLabelButton>
+		
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/confirmationBox.lzx b/WebContent/src/modules/conference/popups/confirmationBox.lzx
new file mode 100644
index 0000000..3d3d256
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/confirmationBox.lzx
@@ -0,0 +1,64 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="confirmationBox" extends="labelExplorerBox" labelid="18"
+    docking="true" resizeable="false" closable="true" width="400" x="100" height="240">
+    
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <attribute name="doAskAgain" value="true" type="boolean" />
+
+	<view x="4" resource="warning_icon_rsc" y="24" />
+
+    <labelText labelid="$once{ parent.labeliderror }" y="24" 
+    		   width="$once{ parent.width - 40 }"
+    	multiline="true" resize="false" x="30" />
+    
+    <labelCheckbox name="holddatainSO" 
+    			   visibility="$once{ (parent.doAskAgain) ? 'visible' : 'hidden' }" 
+    			   labelid="64" x="10" y="220" />
+    
+    <simpleLabelButton labelid="61" width="100" x="70" y="196">
+    	<handler name="onclick">
+    		this.parent.close();
+    	</handler>
+    </simpleLabelButton>    
+    <simpleLabelButton labelid="65" width="100" x="180" y="196">
+    	<handler name="onclick">         
+    		var t = parent.holddatainSO.getValue();
+            this.parent.refObj.sendConfirmation(false,t);
+            this.parent.close();
+    	</handler>
+    </simpleLabelButton>
+    <simpleLabelButton labelid="60" width="100" x="290" y="196">
+    	<handler name="onclick">
+    		var t = parent.holddatainSO.getValue();
+            this.parent.refObj.sendConfirmation(true,t);
+            this.parent.close();
+    	</handler>
+    </simpleLabelButton>  
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/confirmationSingle.lzx b/WebContent/src/modules/conference/popups/confirmationSingle.lzx
new file mode 100644
index 0000000..324ed4f
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/confirmationSingle.lzx
@@ -0,0 +1,146 @@
+<?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.
+  
+-->
+<library>
+
+<class name="confirmationSingle" extends="labelExplorerBox" labelid="832"
+    docking="true" resizeable="false" closable="true" height="140" width="300">
+    
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="refReturnMethod" value="null" />
+    
+    <attribute name="showCheckBox" value="true" type="boolean" />
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <attribute name="doCalcPosition" value="true" type="number" />
+    
+	<attribute name="iconResource" value="warning_popup_icon_rsc" type="string" />
+
+	<image x="4" src="$once{ canvas.getThemeImage(parent.iconResource) }" y="24" />
+
+    <labelText labelid="$once{ parent.labeliderror }" y="24" 
+    		   width="$once{ parent.width - 40 }"
+    	multiline="true" resize="false" x="30" />
+        
+    <handler name="oninit">
+        <![CDATA[
+        
+        	if (!this.doCalcPosition) {
+        		return;
+        	}
+        
+            //Set Position of Confirmation Box as Close as possible to the Mouse
+            var x = parent.getMouse("x");
+            var y = parent.getMouse("y");
+            var newx = x - (this.width/2);
+            var newy = y - (this.height/2);
+            
+            if ($debug) Debug.write("1",x,y,newx,newy);
+            
+            if (newx < 0) {
+                newx = 20;
+            }
+            if (newy < 0) {
+                newy = 20;
+            }
+            
+            //if ($debug) Debug.write("1.1",(this.width + newx + 20),parent.width,this.width);
+            
+            var relativeWidth = parent.width;
+            if (relativeWidth > canvas.width) {
+            	relativeWidth = canvas.width;
+            }
+            
+            if (this.width + newx + 20 > relativeWidth) {
+            	newx = relativeWidth-this.width-20;
+            }
+            
+            if (this.height + newy + 20 > parent.height) {
+            	newy = parent.height-this.height-20;
+            }
+            
+            if ($debug) Debug.write("2",newx,newy);
+            
+            this.setAttribute("x",newx);
+            this.setAttribute("y",newy);
+            
+        ]]>
+    </handler>
+    
+    <labelCheckbox name="holddatainSO" visibility="$once{ (parent.showCheckBox) ? 'visible' : 'hidden' }" 
+                   labelid="64" x="10" y="$once{ parent.height - 46 }" />
+    
+    <simpleLabelButton labelid="61" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		var t = parent.holddatainSO.getValue();
+    		this.parent.close();
+    		if (parent.refReturnMethod == null) {
+    			if ($debug) Debug.write("refObj ",this.parent.refObj);
+    		    this.parent.refObj.sendNoConfirmation();
+    		} else {
+    			this.parent.refObj[parent.refReturnMethod](false,t);
+    		}
+    	</handler>
+    </simpleLabelButton>    
+    <simpleLabelButton labelid="60" width="100" x="$once{ parent.width - 210 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		var t = parent.holddatainSO.getValue();
+    		this.parent.close();
+    		if (parent.refReturnMethod == null) {
+    		    this.parent.refObj.sendConfirmation(true,t);
+    		} else {
+                this.parent.refObj[parent.refReturnMethod](true,t);
+            }
+    	</handler>
+    </simpleLabelButton>    
+</class>
+
+<class name="rememberMessage" extends="labelExplorerBox" labelid="832"
+	   x="$once{ canvas.width/2 - this.width/2 }" y="100"
+	   docking="true" resizeable="false" closable="true" height="140" width="300">
+    
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="showCheckBox" value="true" type="boolean" />
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <view x="4" resource="warning_icon_rsc" y="24" />
+
+    <labelText labelid="$once{ parent.labeliderror }" y="24" 
+               width="$once{ parent.width - 40 }"
+        multiline="true" resize="false" x="30" />
+        
+    <labelCheckbox name="holddatainSO" visibility="$once{ (parent.showCheckBox) ? 'visible' : 'hidden' }" 
+                   labelid="64" x="10" y="$once{ parent.height - 46 }" />
+    
+    <simpleLabelButton labelid="642" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+        	var t = parent.holddatainSO.getValue();
+            this.parent.close();
+            this.parent.refObj.sendConfirmation(t);
+        </handler>
+    </simpleLabelButton>    
+     
+</class>
+	
+</library>
diff --git a/WebContent/src/modules/conference/popups/converterPopup.lzx b/WebContent/src/modules/conference/popups/converterPopup.lzx
new file mode 100644
index 0000000..76178ad
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/converterPopup.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+<class name="converterPopup" extends="labelExplorerBox" labelid="204"
+	docking="true" resizeable="true" closable="true" 
+    width="324" x="200" height="230">
+
+	<attribute name="error" value="null" />
+    
+    <handler name="oninit">
+        this.errorView.errorView.setAttribute('text',this.error);
+    </handler>
+
+	<view y="24" width="${ parent.width - 4 }" height="${ parent.height - 30 }" x="2" clip="true" name="errorView">
+		<text y="30" fontsize="10" fontstyle="bold" name="errorView"
+			multiline="true" width="${ parent.width - 14 }" selectable="true" />
+		<om_vscrollbar />
+	</view>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/editWhiteboardDefault.lzx b/WebContent/src/modules/conference/popups/editWhiteboardDefault.lzx
new file mode 100644
index 0000000..59981ef
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/editWhiteboardDefault.lzx
@@ -0,0 +1,117 @@
+<?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.
+  
+-->
+<library>
+
+<class name="questionCheckbox" extends="view" width="$once{parent.width-4}" >
+	<attribute name="labelid" value="0" type="number" />
+	<attribute name="valBool"  value="false" type="boolean" />
+	<labelCheckbox name="holddatainSO" x="2" y="0" 
+		value="$once{parent.valBool}" text="" />
+    <labelText labelid="$once{ parent.labelid }" width="$once{parent.width-24}"
+    	x="18" multiline="true" resize="false">	
+    	<handler name="onclick">
+    		this.parent.holddatainSO.onclick.sendEvent();
+    	</handler>
+    </labelText>
+</class>
+
+<class name="editWhiteboardDefault" extends="labelExplorerBox" labelid="66"
+    docking="true" resizeable="false" closable="true" width="400" x="100" height="240">
+    
+    <attribute name="refObj" value="null" />
+    
+    <view name="_settings" width="$once{parent.width-4}" height="180" y="24" clip="true">
+		<view name="inner" width="$once{parent.width}" >
+			<simplelayout axis="y" spacing="2" />
+		</view>
+    	<om_vscrollbar />
+    </view>
+    <!-- 
+    63
+     -->
+    
+    <handler name="oninit" >
+		var g = canvas.getUserData();
+         if (g["image"]==null) {
+         	g["image"]=new Array();
+         	g["image"]["clearField"]=false;
+         	g["image"]["askagainclear"]=false;
+         	g["image"]["donotaskagainrdc"]=false;
+         }
+         var t = new lz.questionCheckbox(this._settings.inner,{name:"clearField",labelid:63,valBool:g["image"]["clearField"]});
+         //Debug.write("t: ",t);
+         t = new lz.questionCheckbox(this._settings.inner,{name:"askagainclear",labelid:67,valBool:g["image"]["askagainclear"]});
+		 //Debug.write("t: ",t);
+		
+         if (g["wmlfile"]==null) {
+         	g["wmlfile"]=new Array();
+         	g["wmlfile"]["clearField"]=false;
+         	g["wmlfile"]["askagainclear"]=false;
+         }
+         t = new lz.questionCheckbox(this._settings.inner,{name:"askagainclearwml",labelid:212,valBool:g["wmlfile"]["askagainclear"]});
+         
+         t = new lz.questionCheckbox(this._settings.inner,{name:"donotaskagainrdc",labelid:1127,valBool:g["image"]["donotaskagainrdc"]});
+		 
+         
+		 if (g["doShowUpdateProfileMessage"] == null) {
+		 	new lz.questionCheckbox(this._settings.inner,{name:"doShowUpdateProfileMessage",labelid:1299,valBool:false});
+		 } else {
+		 	new lz.questionCheckbox(this._settings.inner,{name:"doShowUpdateProfileMessage",labelid:1299,valBool:g["doShowUpdateProfileMessage"]});
+		 }
+         
+		 
+		 //Debug.write("t: ",t);
+    </handler>    
+    
+    <method name="storesettings" >
+		var g = canvas.getUserData();
+		
+         if (g["image"]==null) g["image"]=new Array();
+         g["image"]["clearField"]=this._settings.inner.clearField.holddatainSO.getValue();
+         g["image"]["askagainclear"]=this._settings.inner.askagainclear.holddatainSO.getValue();
+         g["image"]["donotaskagainrdc"]=this._settings.inner.donotaskagainrdc.holddatainSO.getValue();
+		
+         if (g["wmlfile"]==null) g["wmlfile"]=new Array();
+		//always true
+         g["wmlfile"]["clearField"]=true;
+         g["wmlfile"]["askagainclear"]=this._settings.inner.askagainclearwml.holddatainSO.getValue();
+		
+         g["doShowUpdateProfileMessage"] = this._settings.inner.doShowUpdateProfileMessage.holddatainSO.getValue();
+         
+	     canvas.setUserData(g);
+    </method>
+    
+    <simpleLabelButton labelid="61" width="100" x="290" y="216">
+    	<handler name="onclick">
+    		this.parent.close();
+    	</handler>
+    </simpleLabelButton> 
+       
+    <simpleLabelButton labelid="60" width="100" x="180" y="216">
+    	<handler name="onclick">
+    		parent.storesettings();
+    		this.parent.close();
+    	</handler>
+    </simpleLabelButton>    
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/errorModeratorPopup.lzx b/WebContent/src/modules/conference/popups/errorModeratorPopup.lzx
new file mode 100644
index 0000000..f62ad33
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/errorModeratorPopup.lzx
@@ -0,0 +1,45 @@
+<?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.
+  
+-->
+<library>
+
+<class name="errorModeratorPopup" extends="labelExplorerBox" labelid="204"
+	docking="true" resizeable="false" closable="true" 
+    width="224" x="300" height="230">
+
+	<attribute name="error" value="" type="string" />
+
+	<view y="24" width="218" height="170" x="2" clip="true">
+		<text y="30" fontsize="10" fontstyle="bold" text="${ parent.parent.error }"
+			multiline="true" width="190" />
+		<om_vscrollbar />
+	</view>
+    
+    <simpleLabelButton x="20" labelid="906" y="200" width="200">
+		<handler name="onclick">
+			//new lz.applyForModeration(canvas.main_content._content.inner);
+			canvas.thishib.applyForModeration.doCall();
+            this.parent.close();
+		</handler>
+    </simpleLabelButton>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/errorPopup.lzx b/WebContent/src/modules/conference/popups/errorPopup.lzx
new file mode 100644
index 0000000..0ecc71c
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/errorPopup.lzx
@@ -0,0 +1,102 @@
+<?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.
+  
+-->
+<library>
+
+<class name="errorPopup" extends="labelExplorerBox" labelid="204"
+	docking="true" resizeable="false" closable="true" y="100"
+    x="$once{ parent.width/2 - this.width/2 }" height="160" width="324">
+
+	<attribute name="error" value="" type="string" />
+	<attribute name="makeModal" value="false" type="boolean" />
+	<attribute name="onCloseFunc" type="object" value="null"/>
+		
+	<handler name="oninit">
+	   if (this.makeModal) {
+	       lz.ModeManager.makeModal(this);
+	   }
+	</handler>
+	
+	<handler name="onclose">
+		if (this.makeModal) {
+			lz.ModeManager.releaseAll();
+		}
+		if (onCloseFunc != null) {
+			onCloseFunc();
+		}
+	</handler>
+
+	<view x="4" resource="warning_icon_rsc" y="24" />
+
+	<view y="24" width="$once{ parent.width - 40 }" height="130" x="30" clip="true">
+		<text fontsize="10" fontstyle="bold" text="${ parent.parent.error }"
+			multiline="true" width="$once{ parent.width - 16 }" selectable="true" />
+	</view>
+    
+    <simpleLabelButton labelid="642" width="100" x="$once{ parent.width-105 }" 
+           y="$once{ parent.height-24 }" 
+           onclick="this.parent.close();" />
+
+</class>
+
+<class name="labelerrorPopup" extends="errorPopup">
+
+    <attribute name="errorlabelid" type="number" setter="setErrorLabelId(errorlabelid)" />
+    <method name="setErrorLabelId" args="errorlabelid" >
+        this.errorlabelid = errorlabelid;
+        this.setAttribute("error",canvas.getLabelName(this.errorlabelid));
+        if ($debug) Debug.write("labelerrorPopup: ",canvas.getLabelName(this.errorlabelid));
+    </method>
+    
+
+</class>
+
+<class name="singletonErrorPopup" extends="errorPopup">
+	<handler name="oninit">
+		lz.singletonErrorPopupHolder.dialogPresent = 1;
+		lz.singletonErrorPopupHolder.dialogObject = this;
+	</handler>
+	
+	<handler name="ondestroy">
+		lz.singletonErrorPopupHolder.dialogPresent = 0;
+		lz.singletonErrorPopupHolder.dialogObject = null;
+	</handler>
+</class>
+
+<class name="singletonErrorPopupHolder">
+	<attribute name="error" type="string" setter="setError(error)"/>
+	<attribute name="dialogPresent" allocation="class" value="0" />
+	<attribute name="dialogObject" allocation="class" />
+	
+	<method name="setError" args="error">
+	
+		if ( lz.singletonErrorPopupHolder.dialogPresent == 0 )
+		{
+			lz.singletonErrorPopupHolder.dialogPresent = 1;
+			lz.singletonErrorPopupHolder.dialogObject = new lz.singletonErrorPopup(canvas,{error:error});
+		}
+		else
+		{
+			lz.singletonErrorPopupHolder.dialogObject.error = error;
+		}
+	</method>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/headerMenu.lzx b/WebContent/src/modules/conference/popups/headerMenu.lzx
new file mode 100644
index 0000000..c3d6932
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/headerMenu.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+<class name="headerMenu" extends="view" layout="axis:x;spacing:4;inset:4" >
+	<text fontsize="11" fontstyle="bold" text="${ canvas.firstName+' '+canvas.lastName }" resize="true" />
+	
+	<labelText labelid="58" fontsize="11" fontstyle="bold" resize="true" />
+	<text fontsize="11" fontstyle="bold" text="${ canvas.currentcourseNameLong }" resize="true" />
+	
+	<labelText labelid="59" fontsize="11" fontstyle="bold" resize="true" />
+	<text fontsize="11" fontstyle="bold" text="${ canvas.currentlanguage }" resize="true" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/incomingScreenSharing.lzx b/WebContent/src/modules/conference/popups/incomingScreenSharing.lzx
new file mode 100644
index 0000000..dae9101
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/incomingScreenSharing.lzx
@@ -0,0 +1,56 @@
+<?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.
+  
+-->
+<library>
+
+<class name="incomingScreenSharing" extends="labelExplorerBox" labelid="643"
+        docking="true" resizeable="false" closable="true" width="260"
+        x="$once{ canvas.width - this.width - 10 }" y="10" height="160">
+    
+    <attribute name="messageObj" value="null" />
+    <attribute name="refObj" value="null" />
+    
+    <handler name="oninit">
+        var tString = canvas.getLabelName(644) + " " 
+                + messageObj.rcl.firstName + " " + messageObj.rcl.lastName;
+        this._text.setAttribute("text",tString);
+    </handler>
+    
+    <labelText name="_text" text="" x="10" y="22"
+            width="$once{ parent.width - 20 }" multiline="true" resize="false"/>
+    
+    <simpleLabelButton labelid="645" width="100" 
+                       x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+            lz.Browser.loadURL(parent.generateFileLink(),'_BLANK');  
+        </handler>
+    </simpleLabelButton>
+    
+    <method name="generateFileLink">
+        <![CDATA[
+            return canvas.getUrl() + 'RtpSharerServlet?publicSID='+this.messageObj.publicSID +
+                    '&room='+this.messageObj.room +
+                    '&room_id='+hib.currentroomid +
+                    '&sid='+canvas.sessionId;  
+        ]]>
+    </method>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/library.lzx b/WebContent/src/modules/conference/popups/library.lzx
new file mode 100644
index 0000000..1da3a8b
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/library.lzx
@@ -0,0 +1,45 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- 
+	FamFam Icon set
+	Creative Commons 3.0
+	 -->
+	<resource name="warning_icon_rsc" src="resources/error.png" />
+    
+    <include href="rpcerrorDialog.lzx" />
+    <include href="errorPopup.lzx" />
+    <include href="messageWin.lzx" />
+    <include href="headerMenu.lzx" />
+    <include href="confirmationBox.lzx" />
+    <include href="editWhiteboardDefault.lzx" />
+	<include href="confirmationSingle.lzx" />
+    <include href="autoLoader.lzx" />
+    <include href="converterPopup.lzx" />
+    <include href="errorModeratorPopup.lzx" />
+    <include href="syncWin.lzx" />
+    <include href="meetingTimer.lzx" />
+    <include href="incomingScreenSharing.lzx" />
+    <include href="redirectBox.lzx" />
+    <include href="chooseNickName.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/popups/meetingTimer.lzx b/WebContent/src/modules/conference/popups/meetingTimer.lzx
new file mode 100644
index 0000000..7f8f8a1
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/meetingTimer.lzx
@@ -0,0 +1,70 @@
+<?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.
+  
+-->
+<library>
+
+<class name="meetingTimer" extends="labelExplorerBox" labelid="638"
+        docking="true" resizeable="false" closable="false" width="260"
+        x="$once{ canvas.width - this.width - 10 }" y="10" height="160">
+    
+    <attribute name="roomobj" value="null" />
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="demoTime" value="0" type="number" />
+    
+    <handler name="oninit">
+        this.dText = canvas.getLabelName(639);
+        this.demoTime = this.roomobj.demoTime;
+        this.fadeText(null);
+    </handler>
+    
+    <method name="fadeText" args="item">
+        <![CDATA[
+            if (this.demoTime > 0) {
+                var min = Math.floor(this.demoTime/60);
+                var restSeconds = this.demoTime - (min * 60);
+                if (restSeconds < 10) {
+                    restSeconds = "0"+restSeconds;
+                }
+                var tString = this.dText + min + "min " + restSeconds + "sec";
+                
+                this._text._text.setAttribute("text",tString);
+                this.demoTime--;
+                lz.Timer.addTimer( new LzDelegate( this, "fadeText" ), 1000 );
+            } else {
+                if ($debug) Debug.write("DEMO IS OVER ");
+                canvas.sendViaLocalConnection(canvas.vid_lc_name, "immediateExitRoom", [true,null]);
+            }
+        ]]>
+    </method>
+    
+    <!--
+    this.roomobj.demoTime
+     -->
+    
+    <view name="_text" x="2" width="$once{ parent.width -4 }" clip="true"
+        y="24" height="$once{ parent.height-25 }">
+        <labelText name="_text" text="" 
+            width="$once{ parent.width }" multiline="true" resize="false"/>
+    </view>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/messageWin.lzx b/WebContent/src/modules/conference/popups/messageWin.lzx
new file mode 100644
index 0000000..3cedb37
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/messageWin.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+<class name="messageWin" extends="labelExplorerBox" labelid="18"
+    docking="true" resizeable="false" closable="true" 
+    width="400" x="100" height="240">
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <view x="2" width="${ parent.width -4 }" clip="true"
+        y="24" height="$once{ parent.height-48 }">
+        <labelText labelid="$once{ parent.parent.labeliderror }" width="400"
+            y="22" multiline="true" resize="false"/>
+        <om_vscrollbar />
+    </view>
+	
+    <simpleLabelButton labelid="25" width="100" x="290" y="$once{ parent.height-22 }" 
+        onclick="this.parent.close();" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/redirectBox.lzx b/WebContent/src/modules/conference/popups/redirectBox.lzx
new file mode 100644
index 0000000..bb7eaf5
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/redirectBox.lzx
@@ -0,0 +1,76 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="redirectBox" extends="labelExplorerBox" labelid="50"
+	   valign="middle" align="center"
+	   docking="true" resizeable="false" closable="false" width="260" height="140">
+    
+    <attribute name="timerDel" value="null" />
+    <attribute name="maxTime" value="5000" type="number" />
+    
+    <attribute name="redirectURL" value="" type="string" />
+    
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+		this.timerDel = new LzDelegate( this, "timeLineAction" );
+		this.timeLineAction();
+	</handler>
+
+	<handler name="onclose">
+		lz.ModeManager.release(this);
+	</handler>	
+		
+    <method name="timeLineAction">
+    	<![CDATA[
+    	
+    		var tString = canvas.getLabelName(1098);
+    		tString += " " + Math.round(this.maxTime/1000) + " sek";
+    		
+    	
+	    	this.messageText.setAttribute("text",tString);
+	    	
+	    	this.maxTime -= 1000;
+	    	
+	    	if (this.maxTime >= 0) {
+	    		
+	    		lz.Timer.addTimer( this.timerDel, 1000 );
+	    		
+	    	} else {
+	    		
+	            if ($debug) Debug.write("this.redirectURL ",this.redirectURL);
+	            redirectToUrl(this.redirectURL, null);
+	    	}
+    	]]>
+    </method>
+    
+    <attribute name="refObj" value="null" />
+    
+
+	<view x="4" resource="warning_icon_rsc" y="24" />
+
+    <labelText name="messageText" text="" y="24" 
+    		   width="$once{ parent.width - 40 }"
+    	multiline="true" resize="false" x="30" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/resources/error.png b/WebContent/src/modules/conference/popups/resources/error.png
new file mode 100644
index 0000000..628cf2d
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/resources/error.png
Binary files differ
diff --git a/WebContent/src/modules/conference/popups/rpcerrorDialog.lzx b/WebContent/src/modules/conference/popups/rpcerrorDialog.lzx
new file mode 100644
index 0000000..ac6c304
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/rpcerrorDialog.lzx
@@ -0,0 +1,172 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="baseErrorDialog" extends="labelExplorerBox" labelid="204"
+    docking="true" resizeable="false" closable="true" width="300" 
+	x="$once{ canvas.width/2-this.width/2 }" height="130">
+	
+	<handler name="oninit">
+        this.bringToFront();
+        lz.Focus.setFocus(this);
+        if (errorid != 0) {
+			this.getErrorByCode.doCall();
+		}
+    </handler>
+	
+    <attribute name="errortext" value="" type="string" />
+    <attribute name="addInfo" value="" type="string" />
+	<attribute name="errorid" value="0" type="number" />
+
+	<netRemoteCallHib name="getErrorByCode" funcname="errorservice.getErrorByCode" remotecontext="$once{ canvas.thishib }" >      
+		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		<netparam><method name="getValue"> return parent.parent.errorid; </method></netparam>
+        <netparam><method name="getValue"> return canvas.thishib.userlang; </method></netparam>
+		<handler name="ondata" args="value">
+			<![CDATA[
+    			if ($debug) Debug.write("getErrorByCode ",value);
+    			//this.parent.destroy();
+    			this.parent.setAttribute('errortext',value.errmessage+" <br/><br/>"+parent.addInfo);
+    			this.parent.setAttribute('title',value.errortype);
+			]]>
+		</handler>
+	</netRemoteCallHib>		
+
+	<view x="4" resource="warning_icon_rsc" y="24" />
+
+	<view y="24" width="$once{ parent.width - 40 }" height="130" x="30" clip="true">
+		<text fontsize="10" fontstyle="bold" text="${ parent.parent.errortext }"
+			multiline="true" width="$once{ parent.width - 16 }" selectable="true" />
+	</view>
+	
+</class>
+	
+<class name="errorDialog" extends="baseErrorDialog">
+
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+	</handler>
+    <handler name="onclose">
+        lz.ModeManager.release(this);
+    </handler>
+	
+</class>
+	
+<class name="contentSaveWindow" extends="baseErrorDialog" labelid="936">
+	
+    <attribute name="saveObj" value="null" />
+    <attribute name="refObj" value="null" />
+    <attribute name="processNextIndex" value="0" type="number" />
+	<attribute name="errorid" value="0" type="number" />
+    
+    <handler name="oninit">
+        this.setAttribute('errorid',1545);
+        this.setAttribute('errortext',canvas.getLabelName(1545));
+        lz.ModeManager.makeModal(this);
+        if ($debug) Debug.write("contentsavewindow_errorid: ",errorid);
+        if ($debug) Debug.write("contentsavewindow_errortext: ",errortext);
+        this.startSave();
+    </handler>
+    
+    <handler name="onclose">
+        lz.ModeManager.release(this);
+    </handler>
+    
+    <method name="startSave">
+    	<![CDATA[
+    	for (var i=0;i<this.saveObj.length;i++){
+    		this.saveObj[i].prepareCall();
+    	}
+    	this.processNext();
+    	]]>
+    </method>
+	
+	<method name="errorByCode" args="eCode">
+		this.errorid = eCode;
+		this.getErrorByCode.doCall();
+	</method>
+    
+    <method name="processNext">
+    	<![CDATA[
+    	//Debug.write("processNext: ",this.saveObj.length,this.processNextIndex);
+    	if (this.saveObj.length>this.processNextIndex){
+    		this.saveObj[this.processNextIndex].returnObj=this;
+    		this.saveObj[this.processNextIndex].doCall();
+    		this.processNextIndex++;
+    	} else {
+    		//Debug.write("update process complete");
+    		this.refObj.onsavecompleted.sendEvent();
+    		this.close();
+    	}
+    	]]>
+    </method>
+	
+	<method name="doCallBack">
+		this.close();
+	</method>
+	
+    <simpleLabelButton name="_btn" labelid="333" width="100" x="$once{ parent.width-104 }" 
+		y="$once{ parent.height-24 }" onclick="parent.doCallBack();" /> 
+	
+</class>
+	
+<class name="rpcErrorDialog" extends="errorDialog" height="250">
+	
+	<method name="doCallBack">
+		this.close();
+	</method>
+	
+	<handler name="onclose">
+		if ( canvas.focusOnItem != null )
+		{
+			lz.Focus.setFocus( canvas.focusOnItem, true );
+		}
+	</handler>
+	
+    <simpleLabelButton name="_btn" labelid="333" width="120" x="$once{ parent.width-124 }" 
+		y="$once{ parent.height-24 }" onclick="parent.doCallBack();" /> 
+	
+</class>
+	
+<class name="callbackRpcErrorDialog" extends="errorDialog"
+	closable="false"  height="250">
+	
+	<attribute name="callBackObject" value="null" />
+	
+	<method name="doCallBack">
+		this.callBackObject.sendCallBack.sendEvent();
+		this.close();
+	</method>
+	
+	<handler name="onclose">
+		if ( canvas.focusOnItem != null )
+		{
+			lz.Focus.setFocus( canvas.focusOnItem, true );
+		}
+	</handler>
+	
+    <simpleLabelButton name="_btn" labelid="333" width="120" x="$once{ parent.width-124 }" 
+		y="$once{ parent.height-24 }" onclick="parent.doCallBack();" /> 
+	
+</class>
+   
+
+</library>
diff --git a/WebContent/src/modules/conference/popups/syncWin.lzx b/WebContent/src/modules/conference/popups/syncWin.lzx
new file mode 100644
index 0000000..dd1b387
--- /dev/null
+++ b/WebContent/src/modules/conference/popups/syncWin.lzx
@@ -0,0 +1,74 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="syncWin" extends="labelText" multiline="true" resize="false" 
+       width="260" align="right" y="${ parent.height - this.height - 10 }" 
+       bgcolor="0xFFFFFF" fgcolor="0xFF3300">
+    
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <handler name="oninit">
+        this.setAttribute('text',canvas.getLabelName(this.labeliderror));
+    </handler>    
+    
+    <method name="close">
+    	this.destroy();
+    </method>
+    
+    <handler name="onclick">
+        this.destroy();
+    </handler>
+    
+    <method name="setMessage" args="mess">
+        this.setAttribute('text',mess);
+    </method>
+    
+</class>
+	
+<!--
+<class name="syncWin" extends="labelExplorerBox" labelid="558"
+        docking="true" resizeable="false" closable="true" width="250"
+        x="$once{ canvas.width/2 - this.width/2 }" height="140">
+    
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+	</handler>
+    
+    <handler name="onclose">
+    	lz.ModeManager.release(this);
+    	canvas.syncWindow = null;
+    </handler>
+    
+    <attribute name="labeliderror" value="0" type="number" />
+    
+    <view x="2" width="$once{ parent.width -4 }" clip="true"
+        y="24" height="$once{ parent.height-25 }">
+        <labelText labelid="$once{ parent.parent.labeliderror }" 
+            width="$once{ parent.width }" multiline="true" resize="false"/>
+    </view>
+
+</class>
+ -->
+
+</library>
diff --git a/WebContent/src/modules/conference/resources/arrow_refresh_small.png b/WebContent/src/modules/conference/resources/arrow_refresh_small.png
new file mode 100644
index 0000000..d3087df
--- /dev/null
+++ b/WebContent/src/modules/conference/resources/arrow_refresh_small.png
Binary files differ
diff --git a/WebContent/src/modules/conference/resources/speaking.png b/WebContent/src/modules/conference/resources/speaking.png
new file mode 100644
index 0000000..2ca21a7
--- /dev/null
+++ b/WebContent/src/modules/conference/resources/speaking.png
Binary files differ
diff --git a/WebContent/src/modules/conference/resources/webstart_play.png b/WebContent/src/modules/conference/resources/webstart_play.png
new file mode 100644
index 0000000..6d13683
--- /dev/null
+++ b/WebContent/src/modules/conference/resources/webstart_play.png
Binary files differ
diff --git a/WebContent/src/modules/conference/restricted/library.lzx b/WebContent/src/modules/conference/restricted/library.lzx
new file mode 100644
index 0000000..598e945
--- /dev/null
+++ b/WebContent/src/modules/conference/restricted/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="restrictedUserList.lzx" />
+    <include href="restrictedUserListItem.lzx" />
+    <include href="restrictedUserListInner.lzx" />
+    <include href="moderationMiniIconRestricted.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx b/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx
new file mode 100644
index 0000000..2db2b8f
--- /dev/null
+++ b/WebContent/src/modules/conference/restricted/moderationMiniIconRestricted.lzx
@@ -0,0 +1,404 @@
+<?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.
+  
+-->
+<library>
+
+<class name="moderationMiniIconRestricted" extends="view" y="20" x="2" height="18">
+	
+	<attribute name="isMod" value="false" type="boolean"/>
+    <attribute name="isSuperModerator" value="false" type="boolean"/>
+	
+	<handler name="oninit">
+	<![CDATA[
+		this.isMod = parent.parent.isMod;
+		this.isSuperModerator = parent.parent.isSuperModerator;
+		
+		if ($debug) Debug.write(" :: moderationMiniIconRestricted :. ",this.isMod);
+		var refObj = parent.parent.refObj;
+		
+		if (this.isMod) {
+			this._isMod.setAttribute("visibility","visible");
+			this._isModAddbutton.setAttribute("visibility","hidden");
+		} else {
+			this._isMod.setAttribute("visibility","hidden");
+            this._isModAddbutton.setAttribute("visibility","visible");
+		}
+		
+		if (this.isMod) {
+			this._canDraw.setAttribute("visibility","visible");
+            this._canDraw.isActive = false;
+            this._canDraw.setAttribute("showhandcursor",false);
+            this._canDraw._text.setAttribute("text",canvas.getLabelName(681));
+            this._canDrawModerator.setAttribute("visibility","hidden");
+		} else {
+			if (refObj != null && refObj.canDraw) {
+                this._canDraw.setAttribute("visibility","visible");
+                this._canDraw.isActive = true;
+                this._canDraw.setAttribute("showhandcursor",true);
+                this._canDraw._text.setAttribute("text",canvas.getLabelName(612));
+                this._canDrawModerator.setAttribute("visibility","hidden");
+            } else {
+                this._canDraw.setAttribute("visibility","hidden");
+                this._canDrawModerator.setAttribute("visibility","visible");
+            }
+		}
+		
+		if (this.isMod) {
+			this._allowScreen.setAttribute("visibility","visible");
+            this._allowScreen.isActive = false;
+            this._allowScreen.setAttribute("showhandcursor",false);
+            this._allowScreen._text.setAttribute("text",canvas.getLabelName(1069));
+            
+            this._allowRemote.setAttribute("visibility","visible");
+            this._allowRemote.isActive = false;
+            this._allowRemote.setAttribute("showhandcursor",false);
+            this._allowRemote._text.setAttribute("text",canvas.getLabelName(1083));
+
+            this._allowExclusiveAudio.setAttribute("visibility","visible");
+            this._allowExclusiveAudio.isActive = false;
+            this._allowExclusiveAudio.setAttribute("showhandcursor",false);
+            this._allowExclusiveAudio._text.setAttribute("text",canvas.getLabelName(1083));
+            
+            this._denyScreen.setAttribute("visibility","hidden");
+            this._denyRemote.setAttribute("visibility","hidden");
+            this._denyExclusiveAudio.setAttribute("visibility","hidden");
+		} else {
+			
+			if ($debug) Debug.write("refObj.canShare :: ", (refObj != null && refObj.canShare));
+		
+			if (refObj != null && refObj.canShare) {
+    			this._allowScreen.setAttribute("visibility","visible");
+                this._allowScreen.isActive = true;
+                this._allowScreen.setAttribute("showhandcursor",true);
+                this._allowScreen._text.setAttribute("text",canvas.getLabelName(1068));
+                this._denyScreen.setAttribute("visibility","hidden");
+			} else {
+				this._allowScreen.setAttribute("visibility","hidden");
+				this._denyScreen.setAttribute("visibility","visible");
+			}
+			
+			if (refObj != null && refObj.canRemote) {
+    			this._allowRemote.setAttribute("visibility","visible");
+                this._allowRemote.isActive = true;
+                this._allowRemote.setAttribute("showhandcursor",true);
+                this._allowRemote._text.setAttribute("text",canvas.getLabelName(1079));
+                this._denyRemote.setAttribute("visibility","hidden");
+			} else {
+				this._allowRemote.setAttribute("visibility","hidden");
+				this._denyRemote.setAttribute("visibility","visible");
+			}
+
+            if (refObj != null && refObj.canGiveAudio) {
+    			this._allowExclusiveAudio.setAttribute("visibility","visible");
+                this._allowExclusiveAudio.isActive = true;
+                this._allowExclusiveAudio.setAttribute("showhandcursor",true);
+                this._allowExclusiveAudio._text.setAttribute("text",canvas.getLabelName(1425));
+                this._denyExclusiveAudio.setAttribute("visibility","hidden");
+            } else {
+				this._allowExclusiveAudio.setAttribute("visibility","hidden");
+				this._denyExclusiveAudio.setAttribute("visibility","visible");
+            }
+		}
+		
+		if (refObj != null && refObj.isBroadcasting) {
+			this._allowDevice.setAttribute("visibility","hidden");
+			this._denyDevice.setAttribute("visibility","visible");
+		} else {
+			this._allowDevice.setAttribute("visibility","visible");
+            this._denyDevice.setAttribute("visibility","hidden");
+		}
+		
+		if ($debug) Debug.write("Set micMuted ", (refObj != null && refObj.micMuted));
+		
+		if (refObj != null && refObj.micMuted) {
+			this._muteDevice.setAttribute("visibility","hidden");
+            this._unMuteDevice.setAttribute("visibility","visible");
+		} else {
+			this._muteDevice.setAttribute("visibility","visible");
+            this._unMuteDevice.setAttribute("visibility","hidden");
+		}
+		
+		this._start_private_chat_rsc.setAttribute('visible'
+			, (canvas.currentRoomObj.hideChat == null || !canvas.currentRoomObj.hideChat)
+				&& (refObj != null && refObj.publicSID != canvas.publicSID));
+	]]>
+	</handler>
+        
+    <miniIcons name="_isMod" x="0" width="16" showhandcursor="true"
+    		   resource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+            
+                if (parent.isSuperModerator) {
+                    new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:838});
+                    return;
+                }
+            
+                //if the label is set and this is a Moderator then this user should
+                //allow the click event => the click event will trigger
+                //this user away from beeing able to draw on the whiteboard
+                if (canvas.ismoderator) {
+                    //Do it 
+                    if ($debug) Debug.write("Do Remove It");
+                    if (parent.parent.parent.refObj.publicSID != canvas.publicSID) {
+                        hib.removeModerator.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+                        hib.removeModerator.doCall();
+                    } else {
+                    	new lz.labelerrorPopup(canvas,{errorlabelid:682});
+                    }
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="675" />
+    </miniIcons>
+    
+    <miniIcons name="_isModAddbutton" opacity="0.5" x="0" showhandcursor="true"
+    		   width="16" resource="participants_isMod_rsc" height="16">
+        <handler name="onclick">
+            <![CDATA[
+                //if the label is set and this is a Moderator then this user should
+                //allow the click event => the click event will trigger
+                //this user away from beeing able to draw on the whiteboard
+                if (canvas.ismoderator) {
+                    //Do it 
+                    if ($debug) Debug.write("Do Add It");
+                    hib.addModerator.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+                    hib.addModerator.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="676" />
+    </miniIcons>
+        
+    <miniIcons name="_canDraw" x="20" width="16" resource="participants_allow_drawing_rsc"
+               height="16" showhandcursor="false" >
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+            <![CDATA[
+                //if the label is set and this is a Moderator then this user should
+                //allow the click event => the click event will trigger
+                //this user away from beeing able to draw on the whiteboard
+                if (canvas.ismoderator && this.isActive) {
+                    //Do it 
+                    if ($debug) Debug.write("Do add draw to it");
+                    canvas.thishib.setCanDraw.publicSID = parent.parent.parent.refObj.publicSID;
+                    canvas.thishib.setCanDraw.canDraw = false;
+                    canvas.thishib.setCanDraw.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="612" />
+    </miniIcons>
+    
+    <miniIcons name="_canDrawModerator" x="20" width="16" opacity="0.5"
+               resource="participants_allow_drawing_rsc" height="16" showhandcursor="true">
+        <handler name="onclick">
+            //Do it 
+            if (canvas.ismoderator) {
+                if ($debug) Debug.write("Do it");
+                canvas.thishib.setCanDraw.publicSID = parent.parent.parent.refObj.publicSID;
+                canvas.thishib.setCanDraw.canDraw = true;
+                canvas.thishib.setCanDraw.doCall();
+            }
+        </handler>
+        <labelTooltip labelid="611" />
+    </miniIcons>
+    
+    <miniIcons name="_allowScreen" x="40" width="16" height="16" 
+               resource="screen_allow_rsc" showhandcursor="true">
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+        	<![CDATA[
+                if ($debug) Debug.write("Deny Screen: ",parent.parent.parent.refObj.publicSID);
+                if (canvas.ismoderator && this.isActive) {
+                	canvas.thishib.setCanShare.publicSID = parent.parent.parent.refObj.publicSID;
+                    canvas.thishib.setCanShare.canShare = false;
+                    canvas.thishib.setCanShare.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1068" />
+    </miniIcons>
+    
+    <miniIcons name="_denyScreen" x="40" width="16" height="16"  opacity="0.5"
+               resource="screen_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Screen: ",parent.parent.parent.refObj.publicSID);
+            if (canvas.ismoderator) {
+                canvas.thishib.setCanShare.publicSID = parent.parent.parent.refObj.publicSID;
+                canvas.thishib.setCanShare.canShare = true;
+                canvas.thishib.setCanShare.doCall();
+            }
+        </handler>
+        <labelTooltip labelid="1067" />
+    </miniIcons>  
+    
+     <miniIcons name="_allowRemote" x="60" width="16" height="16" 
+               resource="remote_allow_rsc" showhandcursor="true">
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+        	<![CDATA[
+                if ($debug) Debug.write("Deny Screen: ",parent.parent.parent.refObj.publicSID);
+                if (canvas.ismoderator && this.isActive) {
+                	canvas.thishib.setCanRemote.publicSID = parent.parent.parent.refObj.publicSID;
+                    canvas.thishib.setCanRemote.canRemote = false;
+                    canvas.thishib.setCanRemote.doCall();
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1079" />
+    </miniIcons>
+    
+    <miniIcons name="_denyRemote" x="60" width="16" height="16"  opacity="0.5"
+               resource="remote_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Screen: ",parent.parent.parent.refObj.publicSID);
+            if (canvas.ismoderator) {
+                canvas.thishib.setCanRemote.publicSID = parent.parent.parent.refObj.publicSID;
+                canvas.thishib.setCanRemote.canRemote = true;
+                canvas.thishib.setCanRemote.doCall();
+            }
+        </handler>
+        <labelTooltip labelid="1078" />
+    </miniIcons>        
+    
+    <miniIcons name="_allowDevice" x="80" width="40" height="16" 
+    		   resource="av_allow_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = true;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip labelid="683" />
+    </miniIcons>
+    
+    <miniIcons name="_denyDevice" x="80" width="40" height="16" resource="av_deny_rsc" 
+   				opacity="0.5" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("ALLOW: ",parent.parent.parent.refObj.publicSID);
+            canvas.thishib.setBroadCastingFlag.publicSIDOfNewModerator = parent.parent.parent.refObj.publicSID;
+            canvas.thishib.setBroadCastingFlag.isAllowedToBroadCastAV = false;
+            canvas.thishib.setBroadCastingFlag.doCall(); 
+        </handler>
+        <labelTooltip labelid="684" />
+    </miniIcons>
+    
+    <miniIcons name="_muteDevice" x="120" width="16" height="16" resource="mute_btn_rsc" 
+    				opacity="0.5" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("mute: ",parent.parent.parent.refObj.publicSID);
+            canvas._videocontainer._videoviewcontent.muteSound(parent.parent.parent.refObj.publicSID, true);
+        </handler>
+        <labelTooltip labelid="1384" />
+    </miniIcons>
+    
+    <miniIcons name="_unMuteDevice" x="120" width="16" height="16" resource="unmute_btn_rsc" 
+    		   showhandcursor="true" visibility="hidden">
+        <handler name="onclick">
+            if ($debug) Debug.write("unmute: ",parent.parent.parent.refObj.publicSID);
+            canvas._videocontainer._videoviewcontent.muteSound(parent.parent.parent.refObj.publicSID, false);
+        </handler>
+        <labelTooltip labelid="1385" />
+    </miniIcons>
+
+    <miniIcons name="_allowExclusiveAudio" x="136" width="16" height="16"
+               resource="participants_exclusive_audio_rsc" showhandcursor="true">
+    	<attribute name="isActive" value="true" type="boolean" />
+        <handler name="onclick">
+        	<![CDATA[
+                if ($debug) Debug.write("Deny Give Exclusive Audio: ",parent.parent.parent.refObj.publicSID);
+                if (canvas.ismoderator && this.isActive) {
+                    canvas.thishib.setCanGiveAudio.sendValue(parent.parent.parent.refObj.publicSID,false);
+                }
+            ]]>
+        </handler>
+        <labelTooltip name="_text" labelid="1425" />
+    </miniIcons>
+
+    <miniIcons name="_denyExclusiveAudio" x="136" width="16" height="16" opacity="0.5"
+               resource="participants_exclusive_audio_rsc" showhandcursor="true">
+        <handler name="onclick">
+            if ($debug) Debug.write("Allow Give Exclusive Audio: ",parent.parent.parent.refObj.publicSID);
+            if (canvas.ismoderator) {
+                canvas.thishib.setCanGiveAudio.sendValue(parent.parent.parent.refObj.publicSID,true);
+            }
+        </handler>
+        <labelTooltip labelid="1424" />
+    </miniIcons>
+    
+	<miniIcons name="_kickUser" x="154" width="16" height="16"
+               resource="kick_user_rsc" showhandcursor="true">
+        <handler name="onclick">
+        	
+        	if (parent.parent.parent.refObj.publicSID == canvas.publicSID) {
+				new lz.labelerrorPopup(canvas.main_content._content.inner,{
+             				errorlabelid:1214
+        				});
+				return;
+			}
+        	
+        	if (parent.isSuperModerator) {
+                new lz.labelerrorPopup(canvas.main_content._content.inner,{errorlabelid:1217});
+                return;
+            }
+        	
+            if ($debug) Debug.write("USER Kick: ",parent.parent.parent.refObj.publicSID);
+            new lz.confirmationSingle(canvas.main_content._content.inner,{
+                                           labelid:1216,labeliderror:1215,
+                                           refObj:this,showCheckBox:false});
+            
+        </handler>
+        
+        <method name="sendConfirmation" args="yesno" >
+            this.kickUserByPublicSID.publicSID = parent.parent.parent.refObj.publicSID;
+            this.kickUserByPublicSID.doCall();
+        </method>
+        
+        <netRemoteCallHib name="kickUserByPublicSID" funcname="userservice.kickUserByPublicSID" 
+                          remotecontext="$once{ canvas.thishib }" >    
+            <attribute name="publicSID" value="" type="string" />  
+            <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+            <netparam><method name="getValue"> return parent.publicSID; </method></netparam>
+            <handler name="ondata" args="value">
+                if ($debug) Debug.write("kickUserByPublicSID: ",value);
+            </handler>
+        </netRemoteCallHib> 
+        
+        <labelTooltip labelid="1213" />
+    </miniIcons>              
+    
+	<miniIcons name="_start_private_chat_rsc" x="172" y="2" width="16" height="16" resource="start_private_chat_rsc" showhandcursor="true">
+		
+		<handler name="onclick">
+			var refObj = parent.parent.parent.refObj;
+			if ($debug) Debug.write("Start Private Chat: ", refObj);
+			if (refObj.publicSID == canvas.publicSID) {
+				new lz.labelerrorPopup(canvas.main_content._content.inner
+					,{errorlabelid:1495});
+				return;
+			}
+			canvas._currentChatPanel.addChat(refObj);
+		</handler>
+		<labelTooltip labelid="1493" />
+	</miniIcons>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/restricted/restrictedUserList.lzx b/WebContent/src/modules/conference/restricted/restrictedUserList.lzx
new file mode 100644
index 0000000..876e124
--- /dev/null
+++ b/WebContent/src/modules/conference/restricted/restrictedUserList.lzx
@@ -0,0 +1,327 @@
+<?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.
+  
+-->
+<library>
+
+ 
+<class name="restrictedUserList" extends="view" width="$once{ parent.width }" 
+       height="${ parent.height-34 }">
+
+    <!--- holds a references to the videoview which is broadcasting -->
+    <attribute name="broadCastViewRef" value="null" />
+    
+    <!--- colors for each user -->
+    <attribute name="colorArray" value="null" />
+    
+    <attribute name="allowUserQuestions" value="true" type="boolean" />
+
+    <attribute name="showsVideoInSeparateComponent" value="true" type="boolean" />
+    
+    <handler name="onallowUserQuestions" args="bool">
+        if (bool != null) {
+            if (!bool) {
+                this._participants._applyAndStatusIcons.destroy();
+            }
+        }
+    </handler>
+    
+    <handler name="oninit">
+        //set modus
+        canvas.thishib.modus = "audience";
+        
+        //set reference, this reference will be cleared at *ontabcontenctleave* event
+        canvas._videocontainer=this;
+        
+        // Reconnect User to its Room Id
+        canvas.thishib.userScope = canvas.thishib.currentroomid;
+        var src = hib.getUrl();
+        
+        if( $debug ) Debug.write("videoContainer: canvas.thishib: ",canvas.thishib.src,canvas.thishib);
+        
+        if (canvas.thishib.src != src) {
+            canvas.thishib.setAttribute('src',src);
+            
+			if (canvas.wicketsid == null){            
+	            canvas.thishib.reconnectionAction = true;
+	            canvas.thishib.reconnectObjRef = this;
+	            canvas.thishib.disconnect();
+            } else {
+            	this.reconnectSuccess();
+            }
+        } else {
+            //The user is already in the correct Scope
+            this.reconnectSuccess();
+        }
+    </handler>
+
+    <commonVideoComponentAdapter name="_videoviewcontent"/>
+
+    <method name="reconnectSuccess">
+        if ($debug) Debug.write("User Reloged In");
+        //Send to SWF10 video-container to connect on the conference room url
+        //and wait for the as3ConnectionSuccess-Event
+        this._videoviewcontent.reconnectSuccess(false);
+    </method>
+
+    <!---
+        We need to wait till the video-container / as3 app has the connection established
+        otherwise it can happen that the video tries to start playing before the rtmp-connection
+        was established
+     -->
+    <method name="as3ConnectionSuccess">
+    	if ($debug) Debug.write("as3ConnectionSuccess continue loading");
+    	//set default values and get already availible streams
+    	//it can happen that if you click to exit the room the views are not
+    	//not cleaned up yet and you receive this event from the LocalConnection
+    	if (this["getRoomModeratorsByRoomId"]) {
+            this.getRoomModeratorsByRoomId.doCall();
+    	}
+    </method>
+
+    <netRemoteCallHib name="getRoomModeratorsByRoomId" funcname="conferenceservice.getRoomModeratorsByRoomId"
+                      remotecontext="$once{ canvas.thishib }" >  
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>    
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getRoomModeratorsByRoomId: ",value);
+                canvas.becomeSuperModerator = false;
+                
+                parent.setRoomValues.applyDefaultModeration = canvas.becomemoderator;
+                canvas.becomeSuperModerator = canvas.becomemoderator;
+                
+                if (!canvas.becomeSuperModerator) {
+                    for (var i=0;i<value.length;i++) {
+                        
+                        if (value[i].user.user_id == canvas.user_id) {
+                            parent.setRoomValues.applyDefaultModeration = true;
+                            canvas.becomeSuperModerator = value[i].isSuperModerator;
+                            if ($debug) Debug.info("Make this User to an Moderator");
+                            break;
+                        }
+                        
+                    }
+                }
+                
+                if ($debug) Debug.write("canvas.becomemoderator: ",canvas.becomemoderator);
+                if ($debug) Debug.write("canvas.becomeSuperModerator: ",canvas.becomeSuperModerator);
+                
+                canvas.currentusercolor = canvas.getColorForUser();
+                
+                var organisation_id = 1;
+            
+                if ($debug) Debug.write(hib.userobject); 
+                if ($debug) Debug.write(hib.currentdomainObj); 
+                
+                if (hib.currentdomainObj != null) {
+                    organisation_id = hib.currentdomainObj.organisation_id
+                }
+                
+                this.parent.setRoomValues.organisation_id = organisation_id;
+                this.parent.setRoomValues.doCall();
+            
+            ]]>
+        </handler>
+    </netRemoteCallHib>     
+
+    <netRemoteCallHib name="setRoomValues" funcname="setRoomValues" remotecontext="$once{ canvas.thishib }" >   
+        <attribute name="applyDefaultModeration" value="false" type="boolean" />
+        <attribute name="organisation_id" value="0" type="number" />
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>
+        <netparam><method name="getValue">return parent.applyDefaultModeration;</method></netparam>
+        <netparam><method name="getValue">return canvas.becomeSuperModerator;</method></netparam>
+        <netparam><method name="getValue">return parent.organisation_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentusercolor;</method></netparam>
+        <handler name="ondata" args="roomStatus">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            //if ($debug) Debug.write("setRoomValues1: ",value);
+            //if ($debug) Debug.write("setRoomValues2: ",hib.currentroomid);
+            
+            //if ($debug) Debug.write("+++++++++++++++++ getClientListScope : ",value);
+            
+            if (roomStatus.roomFull) {
+                canvas.thishib.showFullMessage = true;
+                canvas.thishib.disconnect();
+            }
+            
+            if (roomStatus.browserStatus.browserInited) {
+                var tObj = new Object();
+                tObj[0] = "newBrowserURL";
+                tObj[1] = roomStatus.browserStatus.currentURL;
+                canvas.startBrowser(tObj);
+            }
+            
+            var value = roomStatus.clientList;
+            
+            for (var i = 0; i < value.length; ++i){
+                if ( value[i].streamid == canvas.streamid ) {
+                    value[i].selfItem = true;
+                    canvas.isAllowedToDraw = value[i].canDraw;
+                } else {
+                    value[i].selfItem = false;
+                }
+
+                //value[i].lastname = value[i].lastname + "T: " + t;
+                
+                //if ($debug) Debug.write("getClientListScope value: ",value[i]);
+                this.parent.addItemInitial(value[i].connectedSince,value[i].isMod,value[i].streamid,value[i].username,
+                              '',value[i].formatedDate,value[i].userpos,value[i].usercolor,value[i]);
+            }
+            
+            //this content must be inited _after_ setting the default values
+            canvas.thishib.getCurrentModeratorList.doCall(); 
+            //FIXME Issue-1076
+            canvas.thishib.checkLzRecording.doCall();
+            
+            //Render and Show User-List
+            parent._participants.sortAndRenderList();
+            
+            if (canvas._currentChatPanel.visible) {
+				canvas._currentChatPanel.toggleopen();
+			}
+		]]>
+        </handler>  
+    </netRemoteCallHib>
+
+    <!-- invoked if another client logs into the room 
+    after choosing devices -->     
+    <method name="setAVSettingsToClient" args="rcl">
+        this._videoviewcontent.setAVSettingsToClient(rcl);
+    </method> 
+
+    <method name="addItemInitial" args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
+        <![CDATA[
+            //if ($debug) Debug.write("initializeStreams addItem: ",connectedSince,isMod,streamid,username,formatedDate);
+            
+            //Do init only in case this stream is NOT the same as we are
+            if (streamid!=canvas.streamid){
+                
+                //do add others
+                this._participants.initialAddItem(object);
+                
+                //if ($debug) Debug.write("???????? object.isBroadcasting :: ",object.isBroadcasting);
+                
+                if (object.isBroadcasting) {
+                    this._videoviewcontent.createVideo(object.publicSID, object.firstname+' '+object.lastname, object.broadCastID, object.avsettings, -1, object);
+                } else {
+                    this._videoviewcontent.createVideoObject(object.publicSID, false, -1, object);
+                }
+                
+            } else {
+                //do add self too
+                this._participants.initialAddItem(object);
+            }
+           
+        ]]>
+    </method>
+
+    <method name="receiveExclusiveAudioFlag" args="publicSID">
+    <![CDATA[
+        var vList = this._participants._table.renderList;
+        for (var i=0;i<vList.length;i++) {
+            var item = vList[i];
+            var rcl = new Object();
+
+            rcl.publicSID = item.publicSID;
+            rcl.micMuted = !(publicSID == item.publicSID);
+            canvas.setMuteStatus(rcl);
+        }
+    ]]>
+    </method>
+
+
+    <method name="addItem" args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
+        <![CDATA[
+            if ($debug) Debug.write("initializeStreams addItem: ",connectedSince,isMod,streamid,username,formatedDate);
+            
+            //Do init only in case this stream is NOT the same as we are
+            if (streamid!=canvas.streamid){
+                //if ($debug) Debug.write("???????? object.isBroadcasting :: ",object.isBroadcasting);
+
+                this._videoviewcontent.createVideo(object.publicSID, object.firstname+' '+object.lastname, object.broadCastID, object.avsettings, -1, object);
+
+                //do add others
+                this._participants.addItem(object);
+
+                //return myvideocontainer;
+            } else {
+                //do add self too
+                this._participants.addItem(object);
+            }
+           
+        ]]>
+    </method>
+    
+    <method name="addClientItem" args="connectedSince,isMod,streamid,username,room_id,formatedDate,position,color,object">
+        <![CDATA[
+        if ($debug) Debug.write("### initializeStreams addClientItem: ",connectedSince,isMod,streamid,username,room_id,formatedDate);
+
+        if (canvas.publicSID != object.publicSID){
+            this._videoviewcontent.createVideoObject(object.publicSID, false, -1, object);
+        }
+
+        //Do Add it anyway
+        this._participants.addItem(object);
+        ]]>
+    </method>
+        
+    <!--
+        invoked whenever a User starts to Stream Video in this Room, 
+        interviewPodId has only a meaning in the Room Type Interview
+     -->        
+    <method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
+        this._videoviewcontent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
+    </method>
+
+    <method name="setSpeakingByPos" args="publicSID,bool">
+        this._videoviewcontent.setSpeakingByPos(publicSID, bool);
+    </method>
+
+    <method name="closeStreamClient" args="publicSID">
+        this._videoviewcontent.closeStreamClient(publicSID);
+    </method>
+
+    <method name="resetAllValues">
+        this._videoviewcontent.resetAllValues();
+    </method>
+    
+    <method name="removeVideoByUser" args="userObject">
+        this._videoviewcontent.removeVideoByUser(userObject.publicSID);
+    </method>
+    
+    <!--- 
+        stops the streaming but and destroys the view
+        @param int broadcastId broadcastId
+     -->
+    <method name="disconnectclient" args="publicSID">
+        this._videoviewcontent.disconnectclient(publicSID);
+        this._participants.disconnectclient(publicSID);
+    </method>
+
+    <method name="updateMuteStatusVideoView" args="roomClient">
+        this._videoviewcontent.updateMuteStatusVideoView(roomClient);
+    </method>
+    
+    <restrictedUserListInner name="_participants" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/restricted/restrictedUserListInner.lzx b/WebContent/src/modules/conference/restricted/restrictedUserListInner.lzx
new file mode 100644
index 0000000..fb8abd0
--- /dev/null
+++ b/WebContent/src/modules/conference/restricted/restrictedUserListInner.lzx
@@ -0,0 +1,635 @@
+<?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.
+  
+-->
+<library>
+
+<class name="restrictedUserListInner" extends="baseRoomInnerList"  
+       width="$once{ parent.width }" height="${ parent.height }" >
+    
+    <attribute name="selectedItem" value="null" />
+    
+    <attribute name="listType" value="eventUserListTable" type="string" />
+    
+    <attribute name="sortType" value="alphabetical" type="string" />
+    
+	<handler name="oninit">
+		this.initList();
+	</handler>
+    
+	<method name="initialAddItem" args="object">
+	<![CDATA[
+		if ($debug) Debug.write("restrictedUserListInner::initialAddItem : ",object.publicSID);
+		
+		if (object.isSuperModerator) {
+			object.lastname += " *";
+		}
+		
+		//Add item to list
+		if (this._table.renderList == null) {
+			this._table.renderList = new Array();
+		}
+		//Check for duplicates
+        var list = this._table.renderList;
+        for (var i = 0; i < list.length; ++i) {
+            if (list[i].publicSID == object.publicSID) {
+                //if ($debug) Debug.warn("Already on List, do not add twice");
+                return;
+            }
+        }
+		
+		object.isSelected = false;
+		this._table.renderList.push(object);
+	]]>
+	</method>
+    
+	<method name="addItem" args="object">
+	<![CDATA[
+		initialAddItem(object);
+		if ($debug) Debug.write("restrictedUserListInner::addItem: ", object.publicSID);
+		
+		object.selfItem = canvas.publicSID == object.publicSID;
+		this.sortUserList();
+		
+		this._table.scheduleRenderContent();
+		this.moderationPanel.updateIcons();
+	]]>
+	</method>
+    
+    <method name="sortAndRenderList">
+        this.sortUserList();
+        this._table.renderContent();
+    </method>
+    
+    <method name="sortUserList">
+        <![CDATA[ 
+            if (this.sortType == "alphabetical") {
+                function sortByName(a,b) {
+                    if(a.firstname.toLowerCase() < b.firstname.toLowerCase()) return -1;
+                    else if(a.firstname.toLowerCase() > b.firstname.toLowerCase()) return 1;
+                    else return 0;
+                }
+                this._table.renderList.sort(sortByName);
+            } else {
+                function sortByStreamId(a,b) {
+                    if(Number(a.streamid) == Number(b.streamid)) return 0;
+                    else if(Number(a.streamid) > Number(b.streamid)) return 1;
+                    else return -1;
+                }
+                this._table.renderList.sort(sortByStreamId);
+            }
+        ]]>
+    </method>
+    
+    <method name="initList">
+        if ($debug) Debug.write("initList :: restrictedUserListInner");
+    </method>
+    
+    <method name="clearList">
+        if ($debug) Debug.write("clearList :: restrictedUserListInner");
+    </method>
+    
+    <method name="disconnectclient" args="publicSID">
+        <![CDATA[
+           for (var i=0;i<this._table.renderList.length;i++) {
+               if (this._table.renderList[i].publicSID == publicSID) {
+                   this._table.renderList.splice(i,1);
+                   break;
+               }
+           }
+           this._table.renderContent();
+           this.moderationPanel.updateIcons();
+        ]]>
+    </method>
+    
+	<method name="getUserListItemByPublicSID" args="publicSID">
+	<![CDATA[
+		var v = null;
+		var vList = this._table._innerlist._inn._inn.subviews;
+		for (var i = 0; i < vList.length; ++i) {
+			if (vList[i].refObj.publicSID == publicSID) {
+				v = vList[i];
+				break;
+			}
+		}
+		return v;
+	]]>
+    </method>
+    
+    <view name="userStatus" layout="axis:y">
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="1" />
+             <labelText x="16" labelid="677" />
+        </view>
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="2" />
+             <labelText x="16" labelid="678" />
+        </view>
+        <view>
+             <view resource="userstatus_multiframe_rsc" frame="3" />
+             <labelText x="16" labelid="679" />
+        </view>
+    </view>
+    
+    <moderationMiniIconsEventUserList name="_applyAndStatusIcons" x="$once{ parent.width-this.width-20 }" y="2" >
+        <handler name="onismoderator" reference="canvas" args="m">
+            this.updateIcons();
+        </handler>
+        <handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onlastBroadCastingUser" reference="canvas" args="userObject">
+            this.updateIcons();
+        </handler>
+        <handler name="onmicMutedStatusChangedItem" reference="canvas" args="userObject">
+            this.updateIcons();
+        </handler>
+    </moderationMiniIconsEventUserList>
+    
+    
+    <turnOverListOrderedPaged name="_table" showTopBar="false" x="1"
+             height="${ parent.height-30-parent.moderationPanel.height }" 
+             y="30" itemHeight="40" listLabelId="1001" headerHeight="0"
+             listItemName="restrictedUserListItem" showHScrollbar="hidden"
+             multiselect="false" width="268">
+        
+        <attribute name="currentSelectedIndex" value="null" />
+        
+        <attribute name="resizeDelegate" value="null"/>
+        <attribute name="resizeDelegateStarted" value="false" type="boolean"/>
+        
+        <attribute name="isLoaded" value="false" type="boolean"/>
+        
+        <attribute name="renderDelegate" value="null"/>
+        <attribute name="renderDelegateStarted" value="false" type="boolean"/>
+        
+        <handler name="onheight" args="h">
+        	if (this.isLoaded) {
+        		if ($debug) Debug.write("isLoaded True onheight ",h);
+            	if (!this.resizeDelegateStarted) {
+            		this.resizeDelegateStarted = true;
+            		lz.Timer.addTimer( this.resizeDelegate, 1000 );
+            	} else {
+            		lz.Timer.resetTimer( this.resizeDelegate, 1000 );
+            	}
+        	}
+        </handler>
+        
+        <handler name="oninit">
+        	this.resizeDelegate = new LzDelegate( this, "renderByHeightChange" );
+        	this.renderDelegate = new LzDelegate( this, "renderByNewUser" );
+            this.addHeaderItem(1001,260);
+        </handler>
+        
+        <method name="scheduleRenderContent">
+        	if ($debug) Debug.warn("scheduleRenderContent ");
+        	if (!this.renderDelegateStarted) {
+                this.renderDelegateStarted = true;
+                lz.Timer.addTimer( this.renderDelegate, 1000 );
+            } else {
+            	if ($debug) Debug.warn("More then one user was arriving within 1 Second - Postpone the Rendering to prevent too much reloading");
+                lz.Timer.resetTimer( this.renderDelegate, 1000 );
+            }
+        </method>
+        
+        <method name="renderByNewUser" args="refObj">
+        	this.renderDelegateStarted = false;
+        	this.renderContent();
+        </method>
+        
+        <method name="renderByHeightChange" args="refObj">
+        	
+        	if ($debug) Debug.write("..:: renderByHeightChange ::..",refObj);
+        	
+        	lz.Timer.removeTimer( this.resizeDelegate );
+        	this.resizeDelegateStarted = false;
+        	
+        	this.clearList();
+        	this._innerlist._inn.initItems(this.listItemName);
+        	
+        	this.renderContent();
+        </method>
+        
+        <handler name="onclickedItem" args="refObj">
+            <![CDATA[
+                if ($debug) Debug.write("onclickedItem ",refObj);
+                
+                if (this.currentSelectedIndex != null) {
+                    this.renderList[this.currentSelectedIndex]["isselected"] = false;
+                }
+                
+                this.currentSelectedIndex = refObj.itemId;
+                this.renderList[refObj.itemId]["isselected"] = true;
+                
+                var list = this._innerlist._inn._inn;
+                for (var i=0;i<list.subviews.length;i++){
+                    list.subviews[i].deselect();
+                    list.subviews[i].hideModeratorIcons();
+                }
+                
+                refObj.select();
+                refObj.initModeratorIcons();
+            ]]>
+        </handler>
+        
+        <method name="renderContent">
+            <![CDATA[
+                this.isLoaded = true;
+                var list = this._innerlist._inn._inn;
+                
+                if (this.renderList == null) {
+                	this.renderList = new Array();
+                }
+                //this.renderList = records;
+                var records = this.renderList;
+                this._innerlist._inn.setAttribute("y",0);
+                this._innerlist._inn._inn.setAttribute("height",records.length*this.itemHeight);
+                this._innerlist._inn.resetItems();
+                
+                if ($debug) Debug.write(":: renderContent ::",this.renderList.length,list.subviews.length);
+                
+                this._records.setAttribute("text",records.length);
+                
+                for (var i=0;i<list.subviews.length;i++){
+                    if (records.length > i) {
+                        
+                        list.subviews[i].setAttribute("clickable",true);
+                        list.subviews[i].refObj = records[i];
+                        
+                        if (records[i]["isselected"] && records[i].isselected) {
+                            list.subviews[i].isselected = true;
+                            list.subviews[i].onmouseout.sendEvent();
+                            list.subviews[i].initModeratorIcons();
+                        } else {
+                            list.subviews[i].isselected = false;
+                            list.subviews[i].onmouseout.sendEvent();
+                            list.subviews[i].hideModeratorIcons();
+                        }
+                        
+                        list.subviews[i].setAttribute("user_id",records[i].user_id);
+                        list.subviews[i].setAttribute("firstname",records[i].firstname);
+                        list.subviews[i].setAttribute("isSuperModerator",records[i].isSuperModerator);
+                        list.subviews[i].setAttribute("lastname",records[i].lastname);
+                        list.subviews[i].setAttribute("connectedSince",records[i].connectedSince);
+                        list.subviews[i].setAttribute("canDraw",records[i].canDraw);
+                        list.subviews[i].setAttribute("canShare",records[i].canShare);
+                        list.subviews[i].setAttribute("canRemote",records[i].canRemote);
+                        list.subviews[i].setAttribute("canGiveAudio",records[i].canGiveAudio);
+                        list.subviews[i].setAttribute("micMuted",records[i].micMuted);
+                        list.subviews[i].setAttribute("isMod",records[i].isMod);
+                        list.subviews[i].isBroadcasting = records[i].isBroadcasting;
+                        list.subviews[i].setAttribute("selfItem",records[i].selfItem);
+                        list.subviews[i].streamid = records[i].streamid;
+                        list.subviews[i].setAttribute("username",records[i].username);
+                        list.subviews[i].setAttribute("formatedDate",records[i].formatedDate);
+                        
+                        list.subviews[i].setAttribute("itemId",i);
+                        
+                    } else {
+                        
+                        list.subviews[i].refObj = null;
+                        
+                        list.subviews[i].isselected = false;
+                        list.subviews[i].onmouseout.sendEvent();
+                        list.subviews[i].hideModeratorIcons();
+                        
+                        list.subviews[i].setAttribute("user_id","");
+                        list.subviews[i].setAttribute("firstname","");
+                        list.subviews[i].setAttribute("isSuperModerator","");
+                        list.subviews[i].setAttribute("lastname","");
+                        list.subviews[i].setAttribute("connectedSince","");
+                        list.subviews[i].setAttribute("canDraw",false);
+                        list.subviews[i].setAttribute("canShare",false);
+                        list.subviews[i].setAttribute("canRemote",false);
+                        list.subviews[i].setAttribute("canGiveAudio",false);
+                        list.subviews[i].setAttribute("micMuted",false);
+                        list.subviews[i].setAttribute("isMod",false);
+                        list.subviews[i].isBroadcasting = false;
+                        list.subviews[i].setAttribute("selfItem",false);
+                        list.subviews[i].streamid = "";
+                        list.subviews[i].setAttribute("username","");
+                        list.subviews[i].setAttribute("formatedDate","");
+                        list.subviews[i].setAttribute("itemId","");
+                        
+                        list.subviews[i].setAttribute("clickable",false);
+                    }
+                }
+            ]]>
+        </method>   
+        
+        <handler name="onScrollItem" args="item">
+            <![CDATA[
+                if (this.renderList.length > item.itemId) {
+                    item.setAttribute("clickable",true);
+                    item.refObj = this.renderList[item.itemId];
+                    
+                    if (this.renderList[item.itemId]["isselected"] && this.renderList[item.itemId].isselected) {
+                        item.isselected = true;
+                        item.onmouseout.sendEvent();
+                        item.initModeratorIcons();
+                    } else {
+                        item.isselected = false;
+                        item.onmouseout.sendEvent();
+                        item.hideModeratorIcons();
+                    }
+                    
+                    if ($debug) Debug.write(item.itemId,this.renderList[item.itemId].isMod,this.renderList[item.itemId].publicSID);
+                    
+                    item.setAttribute("user_id",this.renderList[item.itemId].user_id);
+                    item.setAttribute("firstname",this.renderList[item.itemId].firstname);
+                    item.setAttribute("isSuperModerator",this.renderList[item.itemId].isSuperModerator);
+                    item.setAttribute("lastname",this.renderList[item.itemId].lastname);
+                    item.setAttribute("connectedSince",this.renderList[item.itemId].connectedSince);
+                    item.setAttribute("canDraw",this.renderList[item.itemId].canDraw);
+                    item.setAttribute("canShare",this.renderList[item.itemId].canShare);
+                    item.setAttribute("canRemote",this.renderList[item.itemId].canRemote);
+                    item.setAttribute("canGiveAudio",this.renderList[item.itemId].canGiveAudio);
+                    item.setAttribute("micMuted",this.renderList[item.itemId].micMuted);
+                    item.isBroadcasting = this.renderList[item.itemId].isBroadcasting;
+                    item.setAttribute("isMod",this.renderList[item.itemId].isMod);
+                    item.setAttribute("selfItem",this.renderList[item.itemId].selfItem);
+                    item.streamid = this.renderList[item.itemId].streamid;
+                    item.setAttribute("username",this.renderList[item.itemId].username);
+                    item.setAttribute("formatedDate",this.renderList[item.itemId].formatedDate);
+                    
+                    item.setAttribute("itemId",item.itemId);
+                    
+                    item.updateIconByModScroll();
+                        
+                } else {
+                    item.isselected = false;
+                    item.onmouseout.sendEvent();
+                    item.hideModeratorIcons();
+                    
+                    item.refObj = null;
+                    
+                    item.setAttribute("user_id","");
+                    item.setAttribute("firstname","");
+                    item.setAttribute("isSuperModerator","");
+                    item.setAttribute("lastname","");
+                    item.setAttribute("connectedSince","");
+                    item.setAttribute("canDraw",false);
+                    item.setAttribute("canShare",false);
+                    item.setAttribute("canRemote",false);
+                    item.setAttribute("canGiveAudio",false);
+                    item.setAttribute("micMuted",false);
+                    item.setAttribute("isMod",false);
+                    item.isBroadcasting = false;
+                    item.setAttribute("selfItem",false);
+                    item.streamid = ""
+                    item.setAttribute("username","");
+                    item.setAttribute("formatedDate","");
+                    
+                    item.setAttribute("itemId","");
+                    
+                    item.setAttribute("clickable",false);
+                }
+                
+            ]]>
+        </handler>
+        
+    </turnOverListOrderedPaged> 
+       
+    <view name="moderationPanel" clip="true" 
+          height="${ (canvas.ismoderator) ? 40 : 0 }"
+          y="${ parent.height - this.height - 2 }">
+        
+        <handler name="onismoderator" reference="canvas" args="m">
+            if ($debug) Debug.write("###### ismoderator ",m);
+            <![CDATA[
+                this.updateIcons();
+            ]]>
+        </handler>
+        
+        <handler name="onmicMutedStatusChangedItem" reference="canvas" args="roomClientObj">
+        	<![CDATA[
+        	
+        	   if ($debug) Debug.write(" :: onmicMutedStatusChangedItem :: ",roomClientObj.micMuted);
+        	   
+                var vList = parent._table.renderList;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].publicSID == roomClientObj.publicSID) {
+                        parent._table.renderList[i].micMuted = roomClientObj.micMuted;
+                        break;
+                    }
+                }
+        	   
+        	   //search for the user and update its drawStatusIcon
+                var vList = parent._table._innerlist._inn._inn.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].refObj.publicSID == roomClientObj.publicSID) {
+                        vList[i].refObj.micMuted = roomClientObj.micMuted;
+                        vList[i].micMuted = roomClientObj.micMuted;
+                        vList[i].updateModeratorIcons();
+                        break;
+                    }
+                }
+        	   
+                if (parent._applyAndStatusIcons != null) {
+                	parent._applyAndStatusIcons.updateIcons();
+                }
+        	]]>
+        </handler>
+        
+        <handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
+            <![CDATA[
+            
+                if ($debug) Debug.write(" :: ondrawAllowStatus :: ",drawObject.canDraw);
+            
+            	var vList = parent._table.renderList;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].publicSID == drawObject.publicSID) {
+                        parent._table.renderList[i].canDraw = drawObject.canDraw;
+                        parent._table.renderList[i].canShare = drawObject.canShare;
+                        parent._table.renderList[i].canRemote = drawObject.canRemote;
+                        break;
+                    }
+                }
+            
+                //search for the user and update its drawStatusIcon
+                var vList = parent._table._innerlist._inn._inn.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    //vList[i].updateIconByMod();
+                    if (vList[i].refObj.publicSID == drawObject.publicSID) {
+                        vList[i].refObj.canDraw = drawObject.canDraw;
+                        vList[i].canDraw = drawObject.canDraw;
+                        vList[i].canShare = drawObject.canShare;
+                        vList[i].canRemote = drawObject.canRemote;
+                        vList[i].updateIconByModScroll();
+                        vList[i].updateModeratorIcons();
+                        break;
+                    }
+                }
+
+                if (parent._applyAndStatusIcons != null) {
+                	parent._applyAndStatusIcons.updateIcons();
+                }
+            ]]>
+        </handler>
+
+        <handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject">
+            <![CDATA[
+
+                if ($debug) Debug.write(" :: exclusiveAudioAllowStatus :: ",rclObject.canGiveAudio);
+				
+                var vList = parent._table.renderList;
+                for (var i=0;i<vList.length;i++) {
+                    if (vList[i].publicSID == rclObject.publicSID) {
+                        parent._table.renderList[i].canGiveAudio = rclObject.canGiveAudio;
+                        break;
+                    }
+                }
+				
+                //search for the user and update its exclusiveAudioStatusIcon
+                var vList = parent._table._innerlist._inn._inn.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    if (vList[i].refObj.publicSID == rclObject.publicSID) {
+                        vList[i].refObj.canGiveAudio = rclObject.canGiveAudio;
+                        vList[i].canGiveAudio = rclObject.canGiveAudio;
+                        vList[i].updateIconByModScroll();
+                        vList[i].updateModeratorIcons();
+                        break;
+                    }
+                }
+
+                if (parent._applyAndStatusIcons != null) {
+                	parent._applyAndStatusIcons.updateIcons();
+                }
+            ]]>
+        </handler>
+        
+        <handler name="onlastBroadCastingUser" reference="canvas" args="userObject">
+            <![CDATA[
+            
+               if ($debug) Debug.write(" :: onlastBroadCastingUser :: ");
+                
+                if (!userObject.isBroadcasting) {
+                    //Stop Broadcasting and close Dialog
+                    //Search, stop and remove video
+                    parent.parent.removeVideoByUser(userObject);
+                }
+                
+                var vList = parent._table.renderList;
+                for (var i=0;i<vList.length;i++) {
+                    if (vList[i].publicSID == userObject.publicSID) {
+                        parent._table.renderList[i].isBroadcasting = userObject.isBroadcasting;
+                        break;
+                    }
+                }
+                
+                //search for the user and update its drawStatusIcon
+                var vList = parent._table._innerlist._inn._inn.subviews;
+                for (var i=0;i<vList.length;i++) {
+                    if (vList[i].refObj.publicSID == userObject.publicSID) {
+                        vList[i].isBroadcasting = userObject.isBroadcasting;
+                        vList[i].updateModeratorIcons();
+                        break;
+                    }
+                }
+                
+                if (parent._applyAndStatusIcons != null) {
+                	parent._applyAndStatusIcons.updateIcons();
+                }
+            ]]>
+        </handler>
+        
+        <method name="updateIcons">
+            <![CDATA[
+            
+                if ($debug) Debug.write(" :: updateIcons :: ");
+                
+                for (var i=0;i<parent._table.renderList.length;i++) {
+                
+                    for (var k=0;k<canvas.newModeratorList.length;k++) {
+                        
+                        var item = canvas.newModeratorList[k];
+                        
+                        if (parent._table.renderList[i].publicSID == item.publicSID) {
+                            
+                            if (parent._table.renderList[i].isMod == false) {
+                                if ($debug) Debug.info("updateIcons Found RR ",i,item.publicSID);
+                                parent._table.renderList[i].isMod = true;
+                                
+                                var itemView = this.getItemByPublicSID(item.publicSID);
+                                if (itemView != null) {
+                                    itemView.setAttribute("isMod",true);
+                                    itemView.updateModeratorIcons();
+                                }
+                            }
+                            
+                        }
+                        
+                    }
+                    
+                    for (var k=0;k<canvas.removeModeratorList.length;k++) {
+                        
+                        var item = canvas.removeModeratorList[k];
+                        
+                        if (parent._table.renderList[i].publicSID == item.publicSID) {
+                            
+                            if (parent._table.renderList[i].isMod == true) {
+                               if ($debug) Debug.info("RE updateIcons Found RR ",i,item.publicSID);
+                               parent._table.renderList[i].isMod = false;
+                            
+                               var itemView = this.getItemByPublicSID(item.publicSID);
+                               if (itemView != null) {
+                                   itemView.setAttribute("isMod",false);
+                                   itemView.updateModeratorIcons();
+                               }
+                            }
+                            
+                        }
+                        
+                    }
+                
+                }
+                
+                if (parent._applyAndStatusIcons != null) {
+                	parent._applyAndStatusIcons.updateIcons();
+                }
+            ]]>
+        </method>
+        
+        <method name="getItemByPublicSID" args="publicSID">
+            <![CDATA[
+                var vList = parent._table._innerlist._inn._inn.subviews;
+                
+                for (var i=0;i<vList.length;i++) {
+                    if (vList[i].refObj.publicSID == publicSID) {
+                        return vList[i];
+                    }
+                }
+                
+                return null;
+            ]]>
+        </method>
+        
+        <labelText labelid="680" width="270" x="0" multiline="true" y="0" />
+    </view>
+
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/restricted/restrictedUserListItem.lzx b/WebContent/src/modules/conference/restricted/restrictedUserListItem.lzx
new file mode 100644
index 0000000..3d5ce42
--- /dev/null
+++ b/WebContent/src/modules/conference/restricted/restrictedUserListItem.lzx
@@ -0,0 +1,133 @@
+<?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.
+  
+-->
+<library>
+
+<class name="restrictedUserListItem" extends="basePagingListItem" showhandcursor="false" width="254" height="42">
+	
+	<attribute name="connectedSince" value="" type="string" />
+	
+    <attribute name="isMod" value="false" type="boolean" />
+    
+    <attribute name="streamid" value="" type="string" />
+    <attribute name="username" value="" type="string" />
+    <attribute name="userroom" value="" type="string" />
+    <attribute name="formatedDate" value="" type="string" />
+    <attribute name="firstname" value="" type="string" />
+    <attribute name="lastname" value="" type="string" />
+    <attribute name="user_id" value="0" type="number" />
+    <attribute name="refObj" value="null" />
+    
+    <attribute name="isSuperModerator" value="false" type="boolean"/>
+    
+    <attribute name="userpicURL" value="" type="string" />
+    <attribute name="userpicView" value="null" />
+    
+    <attribute name="selfItem" value="false" type="boolean"/>
+    
+    <handler name="onisMod">
+    	<![CDATA[
+        	if (this.isMod) {
+                this._content.userStatus.setAttribute("frame",3);
+            } else if (this.refObj != null && this.refObj.canDraw) {
+                this._content.userStatus.setAttribute("frame",2);
+            } else {
+                this._content.userStatus.setAttribute("frame",1);
+            }
+        ]]>
+    </handler>
+
+    <handler name="onMute" reference="canvas.thishib.switchMicMuted" args="event">
+        <![CDATA[
+            if ($debug) Debug.write("onMute ", event.publicSID, event.mute);
+            if(this.refObj.publicSID == event.publicSID) {
+                this.refObj.micMuted = event.mute;
+                this.updateModeratorIcons();
+            }
+        ]]>
+    </handler>
+
+	<method name="updateIconByMod">
+		if (this.clickable) {
+        	this.isMod = canvas.getIsModeratorByPublicSID(this.refObj.publicSID);
+        	//if ($debug) Debug.write(" :: updateIconByMod :: ",this.isMod)
+        	if (this.isMod) {
+                this._content.userStatus.setAttribute("frame",3);
+            } else if (this.refObj.canDraw) {
+            	this._content.userStatus.setAttribute("frame",2);
+            } else {
+            	this._content.userStatus.setAttribute("frame",1);
+            }
+		}
+    </method>  
+    
+    <method name="updateIconByModScroll">
+    	if (this.clickable) {
+        	if (this.isMod) {
+                this._content.userStatus.setAttribute("frame",3);
+            } else if (this.refObj.canDraw) {
+            	this._content.userStatus.setAttribute("frame",2);
+            } else {
+            	this._content.userStatus.setAttribute("frame",1);
+            }
+    	}
+    </method>  
+    
+    <method name="initModeratorIcons">
+    	//if ($debug) Debug.write(" :1: initModeratorIcons :: ");
+    	if (canvas.ismoderator) {
+    		//if ($debug) Debug.write(" :2: initModeratorIcons :: ");
+			this._content._iconsModerator.setAttribute("visibility","visible");
+			this._content._iconsModerator.oninit.sendEvent();
+    	}
+    </method>
+    
+    <method name="updateModeratorIcons">
+		if (this._content._iconsModerator.visibility == "visible") {
+            this._content._iconsModerator.oninit.sendEvent();
+		}
+    </method>
+    
+    <method name="hideModeratorIcons">
+    	if (this._content._iconsModerator.visibility == "visible") {
+            this._content._iconsModerator.setAttribute("visibility","hidden");
+    	}
+    </method>
+
+	<view name="_content" width="254">
+		<view name="_contentIsCurrent" visible="${ parent.parent.selfItem }" width="254" height="40" bgcolor="0x7CFC00"/>
+          
+    	<labelText name="_userName" x="2" y="2" text="${ parent.parent.firstname+' '+parent.parent.lastname  }" />
+    		   
+		<miniIcons name="_restartDevice" x="220" y="0" width="16" height="16" resource="resyncuser_rsc" showhandcursor="true"
+				visible="${ parent.parent.clickable &amp;&amp; parent.parent.selfItem &amp;&amp; canvas.isBroadCasting }">
+			<handler name="onclick">
+				if ($debug) Debug.write("parent.parent.refObj.publicSID: ",parent.parent.refObj.publicSID);
+				canvas._videocontainer._videoviewcontent.showDevicePopUp(true);
+			</handler>
+			<labelTooltip labelid="610" />
+		</miniIcons>
+		<view name="userStatus" visible="${ parent.parent.clickable }" x="238" frame="1" resource="userstatus_multiframe_rsc" />
+	    	
+	    <moderationMiniIconRestricted name="_iconsModerator" visibility="hidden"/>
+	</view>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/screenSharingAdapter.lzx b/WebContent/src/modules/conference/screenSharingAdapter.lzx
new file mode 100644
index 0000000..2489d15
--- /dev/null
+++ b/WebContent/src/modules/conference/screenSharingAdapter.lzx
@@ -0,0 +1,77 @@
+<?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.
+  
+-->
+<library>
+
+<class name="screenSharingAdapter" extends="node">
+
+	<!---
+		Send via LocalConnection to SWF10 container
+		to show a new screen sharing video
+		@param rcl RoomClient Object
+	 -->
+	<method name="newScreenSharing" args="rcl">
+		//Send via LocalConnection to SWF10 container
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "newScreenSharing", [rcl]);
+	</method>
+	
+	<!---
+        Send via LocalConnection to SWF10 container
+        to show multiple new screen sharing video
+        @param rcl RoomClient Object Map/list
+     -->
+    <method name="newScreenSharings" args="rcls">
+        //Send via LocalConnection to SWF10 container
+        canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "newScreenSharings", [rcls]);
+    </method>
+	
+	<!--- 
+		Send via LocalConnection to SWF10 container 
+		to close a single screen sharing session
+		@param rcl RoomClient Object
+	 -->
+	<method name="closeScreenSharing" args="rcl">
+		//Send via LocalConnection to SWF10 container
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "closeScreenSharing", [rcl]);
+	</method>
+	
+	<!--- 
+		Send via LocalConnection to SWF10 container 
+		to close all screen sharing viewer videos
+	 -->
+	<method name="closeAllScreenSharings" >
+		//Send via LocalConnection to SWF10 container
+		if ($debug) Debug.write("closeAllScreenSharings SEND");
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "closeAllScreenSharings", null);
+	</method>
+	
+	<!--- 
+		Send via LocalConnection to SWF10 container 
+		to update the mouse position of a certain screen sharing
+		@param cursorMap Map Object
+	 -->
+	<method name="updateCursorScreenSharing" args="cursorMap">
+		//Send via LocalConnection to SWF10 container
+		canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "updateCursorScreenSharing", [cursorMap]);
+	</method>
+
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/sip/library.lzx b/WebContent/src/modules/conference/sip/library.lzx
new file mode 100644
index 0000000..dc5077f
--- /dev/null
+++ b/WebContent/src/modules/conference/sip/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+
+-->
+<library>
+
+    <include href="sipDialer.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/conference/sip/sipDialer.lzx b/WebContent/src/modules/conference/sip/sipDialer.lzx
new file mode 100644
index 0000000..1457347
--- /dev/null
+++ b/WebContent/src/modules/conference/sip/sipDialer.lzx
@@ -0,0 +1,108 @@
+<?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.
+
+-->
+<library>
+
+<class name="sipDialer" extends="window" bgcolor="gray" width="200">
+    <simplelayout axis="y" spacing="5"/>
+    <labelText labelid="1003"/>
+    <view name="phoneNumber" width="100%">
+        <inputtext name="input" width="$once{parent.width-parent.del.width}" height="20" bgcolor="white"/>
+        <button name="del" x="$once{parent.input.width}" width="30" height="20" onclick="this.del();">
+            ←
+            <method name="del">
+                var t = parent.input.text;
+                if(t.length != 0) {
+                    t = t.substr(0, t.length - 1);
+                    parent.input.setAttribute('text', t);
+                }
+            </method>
+        </button>
+    </view>
+
+    <view name="dialerButtons" align="center">
+        <vbox spacing="5">
+            <hbox spacing="5">
+                <button onclick="parent.parent.parent.parent.dial('1')" width="40">1</button>
+                <button onclick="parent.parent.parent.parent.dial('2')" width="40">2</button>
+                <button onclick="parent.parent.parent.parent.dial('3')" width="40">3</button>
+            </hbox>
+            <hbox spacing="5">
+                <button onclick="parent.parent.parent.parent.dial('4')" width="40">4</button>
+                <button onclick="parent.parent.parent.parent.dial('5')" width="40">5</button>
+                <button onclick="parent.parent.parent.parent.dial('6')" width="40">6</button>
+            </hbox>
+            <hbox spacing="5">
+                <button onclick="parent.parent.parent.parent.dial('7')" width="40">7</button>
+                <button onclick="parent.parent.parent.parent.dial('8')" width="40">8</button>
+                <button onclick="parent.parent.parent.parent.dial('9')" width="40">9</button>
+            </hbox>
+            <hbox spacing="5">
+                <button onclick="parent.parent.parent.parent.dial('*')" width="40">*</button>
+                <button onclick="parent.parent.parent.parent.dial('0')" width="40">0</button>
+                <button onclick="parent.parent.parent.parent.dial('#')" width="40">#</button>
+            </hbox>
+        </vbox>
+    </view>
+    <hbox spacing="10" align="center">
+        <simpleLabelButton labelid="1448" name="callButton">
+            <handler name="onclick">
+                parent.parent.joinToConfCall.doCall();
+                var g = canvas.getUserData();
+                g["lastsipnumber"] = parent.parent.phoneNumber.input.getText();
+                canvas.setUserData(g);
+            </handler>
+        </simpleLabelButton>
+        <simpleLabelButton labelid="85" name="closeButton">
+            <handler name="onclick">
+                canvas.sipDialer = null;
+                parent.parent.destroy();
+            </handler>
+        </simpleLabelButton>
+    </hbox>
+
+	<handler name="oninit">
+		if(canvas.sipDialer != null) {
+			canvas.sipDialer.destroy();
+		}
+		canvas.setAttribute('sipDialer', this);
+		var lastNum = canvas.getUserData()["lastsipnumber"];
+		if(lastNum != undefined) {
+			this.phoneNumber.input.setAttribute('text', lastNum);
+		}
+		this.bringToFront();
+    </handler>
+
+    <method name="dial" args="digit">
+        this.phoneNumber.input.setAttribute('text', this.phoneNumber.input.text + digit);
+    </method>
+
+    <netRemoteCallHib name="joinToConfCall" funcname="joinToConfCall" remotecontext="$once{ canvas.thishib }">
+        <netparam><method name="getValue">return parent.parent.phoneNumber.input.text</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            if($debug) Debug.write("joinToConfCall : ",value);
+            ]]>
+        </handler>
+    </netRemoteCallHib>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/tabcontent/chat/baseTabChatPanel.lzx b/WebContent/src/modules/conference/tabcontent/chat/baseTabChatPanel.lzx
new file mode 100644
index 0000000..a1a8181
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/baseTabChatPanel.lzx
@@ -0,0 +1,236 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- 
+	#################################################
+	Provides functions to chat and extends the chat with the panel for blinking
+	when new messages arrive when the tab is closed
+	#################################################
+	 -->
+
+	<class name="baseTabChatPanel" extends="basePropertyPanel" >
+
+		<attribute name="fadeDelegate" value="null" />
+		<attribute name="doBlink" value="false" type="boolean" />
+
+		<handler name="oninit">
+			canvas._currentChatPanel = this;
+			this.fadeDelegate = new LzDelegate( this, "showText" );
+		</handler>
+
+        <method name="newprivatechat" args="refObj">
+            this.addChatSync(refObj[1],true);
+        </method>
+        
+        <method name="closeprivatechat" args="value">
+            if ($debug) Debug.write("closeprivatechat _1a_ ",value);
+            var publicSID = value[1];
+            if ($debug) Debug.write("closeprivatechat _1b_ ",publicSID);
+            
+			for (var eg in this.content.chatbar.subviews) {
+				if(typeof this.content.chatbar.subviews[eg].objRef.refObj == 'undefined') {
+					continue;
+				}
+				if ($debug) Debug.write("closeprivatechat _2A_ ",this.content.chatbar.subviews[eg].objRef);
+				if ($debug) Debug.write("closeprivatechat _2B_ ",this.content.chatbar.subviews[eg].objRef.refObj);
+				if ($debug) Debug.write("closeprivatechat _2C_ ",this.content.chatbar.subviews[eg].objRef.refObj.publicSID);
+				    
+				if (this.content.chatbar.subviews[eg].objRef.refObj.publicSID == publicSID ) {
+					this.content.chatbar.removeObjectSynced(this.content.chatbar.subviews[eg]);
+					return;
+				}
+            }
+        </method>
+        
+        <method name="privatechat" args="value,client">
+            if ($debug) Debug.write("privatechat A ",client.publicSID);
+            if ($debug) Debug.write("privatechat B ",value[6]);
+            
+            for (var eg in this.content.subviews) {
+                if (this.content.subviews[eg].refObj != null) {
+                    
+                    if ($debug) Debug.write("privatechat _1_ ",this.content.subviews[eg].refObj);
+                    if ($debug) Debug.write("privatechat _2_ ",this.content.subviews[eg].refObj.publicSID);
+                    
+                    if (this.content.subviews[eg].refObj.publicSID == client.publicSID 
+                            || this.content.subviews[eg].refObj.publicSID == value[6] ) {
+                        this.content.subviews[eg]._chatoutputborder._chatoutput.addChatHistory(value,client);
+                    }
+                }
+            }
+        </method>
+        
+        <method name="addChat" args="refObj">
+            this.addChatSync(refObj,false);
+        </method>
+        
+        <method name="addChatSync" args="refObj,remoteOpen">
+            if (this.content.visibility == "hidden") {
+                this.toggleopen();
+            }
+            
+            for (var eg in this.content.subviews) {
+                if (this.content.subviews[eg].refObj != null) {
+                    if (this.content.subviews[eg].refObj.publicSID == refObj.publicSID) {
+                        new lz.labelerrorPopup(canvas.main_content._content.inner,{
+                                    errorlabelid:1496
+                                });
+                        return;
+                    }
+                }
+            }
+            
+            if ($debug) Debug.write("addChat :: ",refObj);
+            for (var eg in this.content.chatbar.subviews) {
+                this.content.chatbar.subviews[eg].isactive = false;
+                this.content.chatbar.subviews[eg].onmouseout.sendEvent(null);
+                this.content.chatbar.subviews[eg].objRef.setAttribute("visibility","hidden");
+            }
+            
+            var chatTabPrivateRef = new lz.chatTabPrivateChat(this.content,{
+                                                refObj:refObj,
+                                                remoteOpen:remoteOpen
+                                                
+                                            });
+            var tempWidth = this.content.chatbar.getCurrentSize();
+            
+            var tWhiteboardBtn = new lz.chatMiniButton(this.content.chatbar,{
+                                       objRef:chatTabPrivateRef,
+                                       width:tempWidth,
+                                       isactive:true,
+                                       btnName:refObj.firstname+" "+refObj.lastname
+                                    });
+            
+            this.content.chatbar.currentBtn = tWhiteboardBtn;                       
+                                    
+            tWhiteboardBtn.onmouseout.sendEvent(null);
+        </method>
+        
+        <handler name="onisopen" args="o">
+			if ($debug) Debug.write("onisopen",o);
+			if (o) {
+				if ('doInitByOpen' in canvas._chatcontent) {
+					canvas._chatcontent.doInitByOpen();
+				}
+				if (canvas.currentRoomObject != null) {
+					content._content1._chattabbottom.updatefontbuttonvisible();
+				}
+				this.doBlink = false;
+				this._newMessage.setAttribute("visibility","hidden");
+				this._newMessage.setAttribute( "opacity", 0 );
+				this.content.setAttribute("visibility","visible");
+			} else {
+				this.content.setAttribute("visibility","hidden");
+			}
+		</handler>
+
+		<method name="startBlink">
+			if ($debug) Debug.write("startBlink",this.opacity);
+			if (this.isopen) return;
+			if (this.doBlink) {
+				if ($debug) Debug.write("doBlink already started !!!");
+			} else {
+				if ($debug) Debug.write("doBlink");
+				this.doBlink = true;
+				this._newMessage.setAttribute("visibility","visible");
+				lz.Timer.addTimer( this.fadeDelegate , 1000 );
+			}
+		</method>
+
+		<method name="showText" args="refObj">
+			if (this.doBlink) {
+				lz.Timer.addTimer( this.fadeDelegate , 1000 );
+				if (this._newMessage.opacity == 0) {
+					this._newMessage.animate( "opacity", 1.0, 400 );
+				} else {
+					this._newMessage.animate( "opacity", 0, 400 );
+				}
+			} else {
+				this._newMessage.setAttribute("visibility","hidden");
+			}
+		</method>
+
+        <view name="content" visibility="hidden" y="22"
+              height="${ parent.height-22 }" width="${ parent.width }">
+            <chatBarMenu name="chatbar">
+                <attribute name="refObj" value="null" />
+                <attribute name="objMessage" value="null" />
+                <attribute name="publicSID" value="" type="string" />
+                
+                <handler name="oninit">
+                    this.currentBtn = this._button1;
+                </handler>
+                
+                <handler name="onRemoveWindow" args="publicSID">
+                    <![CDATA[
+                    
+                        if ($debug) Debug.write("onRemoveWindow :: ",publicSID);
+                        
+                        this.publicSID = publicSID;
+                    
+                        this.objMessage = new Array();
+                        this.objMessage[0] = 'closeprivatechat';
+                        this.objMessage[1] = canvas.publicSID;
+                        
+                        this.sendMessageWithClientByPublicSID.doCall();
+                    ]]>
+                </handler>
+                
+                <netRemoteCallHib name="sendMessageWithClientByPublicSID" funcname="sendMessageWithClientByPublicSID" 
+                    remotecontext="$once{ canvas.thishib }" > 
+                    <netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam>
+                    <netparam><method name="getValue"> return parent.parent.publicSID; </method></netparam>
+                    <handler name="ondata" args="value">
+                        <![CDATA[
+                            //The onResult-Handler will be called be the rtmpconnection
+                            if ($debug) Debug.write("sendMessageWithClientByPublicSID getValue : ",value);
+                        ]]>
+                    </handler>   
+                </netRemoteCallHib>
+                
+                <chatMiniButton name="_button1" isactive="true" isClosable="false" >
+                    <handler name="oninit">
+                        this.setAttribute("btnName", canvas.getLabelName(1494) + " 1");
+                        this.objRef = parent.parent._content1;
+                        this.onmouseout.sendEvent(this);
+                    </handler>
+                </chatMiniButton>
+                
+            </chatBarMenu>
+            
+            <chatTab name="_content1" />
+            
+        </view>
+			
+		<labelText labelid="1199" x="${ parent.width - this.width }" bgcolor="0xFFFFFF"
+        		   y="2" fontsize="10" fontstyle="bold" fgcolor="0xFF3300" />
+
+		<view name="_newMessage" y="0" x="${ parent.width-this.width }"
+			visibility="hidden">
+			<view x="1" y="2" resource="chat_message_incoming_rsc" />
+			<labelText x="22" y="2" fgcolor="0x008000" fontstyle="bold"
+				labelid="1417" />
+		</view>
+
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/chatOutput.lzx b/WebContent/src/modules/conference/tabcontent/chat/chatOutput.lzx
new file mode 100644
index 0000000..3cc8d14
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/chatOutput.lzx
@@ -0,0 +1,156 @@
+<?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.
+  
+-->
+<library>
+
+
+<!--- chat output specialized for video-conference -->
+<class name="chatOutput" extends="view" height="${ parent.height-1 }" 
+            clip="true" width="${ parent.width-1 }" bgcolor="0xFFFFFF">
+
+    <attribute name="isAlreadyLoaded" value="false" type="boolean"/>
+<!---
+ Invoked from VideoContainer cause domain/room must be set first
+ -->
+    <method name="doInitByOpen">
+        <![CDATA[
+            if (!this.isAlreadyLoaded) {
+            	this.isAlreadyLoaded = true;
+            	this._cbtext.clearChatOutput();
+                this.getRoomChatHistory.doCall();
+            }
+        ]]>
+    </method>
+    
+    <method name="reload">
+        <![CDATA[
+        	this._cbtext.clearChatOutput();
+            this.getRoomChatHistory.doCall();
+        ]]>
+    </method>    
+    
+    <netRemoteCallHib name="getRoomChatHistory" funcname="chatservice.getRoomChatHistory" 
+        remotecontext="$once{ canvas.thishib }" > 
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if($debug) Debug.write("chatOutput/getRoomChatHistory: ",value);
+                for (var i=0;i<value.length;i++){
+                    if($debug) Debug.write(value[i].message,value[i].client);
+                    parent.addChatHistory(value[i].message,value[i].client);
+                }
+            ]]>
+        </handler>   
+    </netRemoteCallHib>
+    
+    <method name="getLog">
+    	<![CDATA[
+    		var tString = "";
+    		
+    		for (var i=0;i<this._cbtext.subviews.length;i++) {
+    			
+    			if (i!=0) {
+    				tString += "<br/>";
+    			}
+    			
+    			tString += this._cbtext.subviews[i].username + ': '
+    					+ this._cbtext.subviews[i].message;
+    			
+    		}
+    		
+    		return tString;
+    	
+    	]]>
+    </method>     
+    
+    <method name="addChatHistory" args="value,client">
+        <![CDATA[
+            //if($debug) Debug.write("chatOutput/addChatHistory: ",value,client);
+            canvas.currentBaseConferenceRoom._chatPanelStrict.startBlink();
+            //is Right To Left ? not checked for the moment
+            if (value[7]){
+                var username = client.firstname+" "+client.lastname;
+            } else {
+                var username = client.firstname+" "+client.lastname;
+            }
+            var messageObj = value[value.length - 1];
+            //var newmessage = "<FONT COLOR='"+value[5]+"' size='11'>"+client.firstname+" "+client.lastname+"</FONT>:<FONT COLOR='0x000000' size='11'>"+value[4]+"</FONT><br />";
+            //Debug.write("newmessage: ",newmessage);
+            //this._cbtext.setAttribute('text',this._cbtext.text+newmessage);
+            var usercolor = value[5];
+            
+            var isDirectLink = null;
+            if (value[8] > 0) {
+            	isDirectLink = false;
+            } else {
+            	isDirectLink = true;
+            }
+            
+            if (canvas.isRemoteUser()) {
+                isDirectLink = true;               	
+            }
+            if ( usercolor==null || usercolor==0 || (usercolor !=null && usercolor.length==0) )usercolor=0xCCCCCC;
+            
+            
+            
+            if ($debug) Debug.write("addChatHistory userID: ",value[8],isDirectLink);
+            
+            new lz.chatTabItemEmoticons(this._cbtext,{
+            			rawMessage: value,
+		                messageObj:messageObj,
+	                    user_id:value[8],
+	                    publicSID:value[6],
+	                    message:value[4],
+	                    picture_uri:client.picture_uri,
+		                usercolor:usercolor,
+		                username:username,
+		                isDirectLink:isDirectLink,
+		                usertime:value[1]
+	                });
+            
+            this.setScrollToMax();              
+        ]]>
+    </method>           
+    
+    <method name="setScrollToMax">
+        <![CDATA[
+        if(_cbtext.height>this.height){
+            myscrollbar.scrolltarget.setAttribute(myscrollbar.scrollattr,(this.height-_cbtext.height));
+        }
+        
+        ]]>
+    </method>
+    
+    <view name="_cbtext" width="${ parent.width }" layout="axis:y;spacing:0" >
+    	<method name="clearChatOutput">
+    		<![CDATA[
+    			while (this.subviews.length>0){
+    				this.subviews[0].destroy();
+    			}
+    		]]>
+    	</method>
+    </view>
+    
+    <om_vscrollbar name="myscrollbar" />
+
+</class>
+    
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/chatTab.lzx b/WebContent/src/modules/conference/tabcontent/chat/chatTab.lzx
new file mode 100644
index 0000000..beb93d3
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/chatTab.lzx
@@ -0,0 +1,93 @@
+<?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.
+  
+-->
+<library>
+
+<!---
+Chat tabpane class. It contains chatOutput-class and catTabBottom-class.
+This is used in the conference.
+-->
+<class name="chatTab" extends="simpleBaseTabpane" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" x="0">
+	<view name="_chatoutputborder" height="${ parent.height-48 }" width="${ parent.width-2 }" 
+				bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+		
+		<chatOutput name="_chatoutput" x="1" y="1" >
+			<handler name="oninit">
+				canvas._chatcontent = this;
+			</handler>
+		</chatOutput>
+	</view>
+	
+	<chatTabBottom name="_chattabbottom" 
+				   y="${ parent.height-46 }" x="0" width="${ parent.width-2 }" />
+				   
+</class>
+
+<class name="chatTabPrivateChat" extends="simpleBaseTabpane" y="22" height="${ parent.height-22 }" 
+                 width="${ parent.width }">
+
+	<attribute name="refObj" value="null"/>
+	<attribute name="objMessage" value="null"/>
+	<attribute name="remoteOpen" value="false" type="boolean"/>
+	
+	<handler name="oninit">
+		<![CDATA[
+			if (this.remoteOpen) {
+				return;
+			}
+			this.objMessage = new Array();
+			this.objMessage[0] = 'newprivatechat';
+			var u = canvas.thishib.userobject;
+			this.objMessage[1] = {
+				publicSID: canvas.publicSID
+				, firstname: u.firstname
+				, lastname: u.lastname
+				};
+			
+			this.sendMessageWithClientByPublicSID.doCall();
+			
+			if (canvas.currentRoomObject != null) {
+				_chattabbottom.updatefontbuttonvisible();
+			}
+		]]>
+	</handler>
+	
+    <netRemoteCallHib name="sendMessageWithClientByPublicSID" funcname="sendMessageWithClientByPublicSID" 
+        remotecontext="$once{ canvas.thishib }" > 
+        <netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam>
+        <netparam><method name="getValue"> return parent.parent.refObj.publicSID; </method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("sendMessageWithClientByPublicSID getValue : ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>
+	
+	<view name="_chatoutputborder" height="${ parent.height-48 }"
+       bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"  width="${ parent.width-2 }">
+		
+		<chatOutput name="_chatoutput" x="1" y="1" />
+	</view>
+	
+	<chatTabBottom name="_chattabbottom" isPrivate="true" 
+				   y="${ parent.height-46 }" x="0" width="${ parent.width-2 }" />
+</class>
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/chatTabBottom.lzx b/WebContent/src/modules/conference/tabcontent/chat/chatTabBottom.lzx
new file mode 100644
index 0000000..451ee05
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/chatTabBottom.lzx
@@ -0,0 +1,203 @@
+<?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.
+  
+-->
+<library>
+
+	<!--- View of the buttom area of chat. It contains buttons of message,emoticons,clear. -->
+	<class name="chatTabBottom" extends="view" height="42">
+		<attribute name="isPrivate" value="false" type="boolean" />
+		
+		<view x="0" y="0" height="20" width="${ parent.width-2 }" name="message"
+			bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+			<method name="getText">
+				return this._ctext.getText();
+			</method>
+			<method name="setText" args="txt">
+				this._ctext.setAttribute('text',txt);
+			</method>
+			<customInputtext name="_ctext" width="${ parent.width-2 }"
+				height="$once{ parent.height-2 }" x="1" y="1" bgcolor="white">
+				<handler name="onkeyup" args="key">
+	                <![CDATA[
+	                var reverse = canvas.reverseAll(parent.getText());
+	                
+	                // parent.setText(reverse);
+	                // 13 is return
+	                if ((key==27) || (key==13)) {
+	                	this.parent._button.onclick.sendEvent();
+	                }
+	                ]]>
+				</handler>
+			</customInputtext>
+
+			<attribute name="objMessage" value="null" />
+			
+			<simpleLabelButton name="_button" labelid="220"
+				height="21" width="80" x="$once{ parent.width-80 }">
+				<handler name="onclick">
+				<![CDATA[
+					var message = this.parent.getText();
+					if (message.length != 0) {
+						parent.objMessage = new Array();
+						var om = parent.objMessage;
+						om[0] = parent.parent.isPrivate ? 'privatechat' : 'chat';
+						//The server side will put time here
+						om[1] = "";
+						//if ($debug) Debug.write("Setting Message");
+						om[2] = 'newtextmessage';
+						om[3] = hib.userobject.login;
+						//if (parent.parent._inverseWording.getValue()) message = canvas.reverseAll(message)
+						om[4] = message;
+						om[5] = canvas.currentusercolor;
+						om[6] = parent.parent.isPrivate ? parent.parent.parent.refObj.publicSID : canvas.publicSID;
+						om[7] = canvas.isrtl;
+						om[8] = hib.userobject.user_id;
+						om[9] = canvas.currentRoomObject.chatModerated && !canvas.ismoderator;
+						if ($debug) Debug.write("send: ", parent.parent.parent);
+						if (parent.parent.isPrivate) {
+							parent.sendMessageWithClientByPublicSID.doCall();
+						} else {
+							hib.sendChatMessageWithClient.sendMessage(om);
+						}
+						this.parent.setText('');
+					}
+				]]>
+				</handler>
+			</simpleLabelButton>
+
+			<netRemoteCallHib name="sendMessageWithClientByPublicSID"
+				funcname="chatservice.sendMessageWithClientByPublicSID" remotecontext="$once{ canvas.thishib }">
+				<netparam><method name="getValue">return parent.parent.objMessage;</method></netparam>
+				<netparam><method name="getValue">return parent.parent.parent.parent.refObj.publicSID;</method></netparam>
+				<handler name="ondata" args="value">
+					//The onResult-Handler will be called be the rtmpconnection
+					if ($debug) Debug.write("chatservice.sendMessageWithClientByPublicSID getValue : ",value);
+				</handler>
+			</netRemoteCallHib>
+		</view>
+
+		<labelCheckbox name="_inverseWording" x="2" y="24"
+			labelid="580">
+			<attribute name="doUpdate" value="false" type="boolean" />
+			<handler name="oninit">
+				var g = canvas.getUserData();
+				var save = g["rtlCheckbox"];
+				//if ($debug) Debug.write("oninit doUpdate",save,g);
+				if(save) {
+					this.doUpdate = false;
+					this.setValue(true);
+				}
+				this.doUpdate = true;
+			</handler>
+			<handler name="onvalue" args="v">
+				if (this.doUpdate) {
+					//if ($debug) Debug.write("onvalue doUpdate",this.getValue());
+					var g = canvas.getUserData();
+					g["rtlCheckbox"]=this.getValue();
+					//if ($debug) Debug.write("onvalue doUpdate",g["rtlCheckbox"]);
+					canvas.setUserData(g);
+				}
+			</handler>
+			<labelTooltip labelid="581" />
+		</labelCheckbox>
+
+		<method name="updatefontbuttonvisible">
+			if ($debug) Debug.write("chatTabBottom updatefontbuttonvisible allowFontStyles",
+						canvas.currentRoomObject.allowFontStyles);
+			_button.fontbutton.setVisible(canvas.currentRoomObject.allowFontStyles == true ||
+			    			   canvas.currentRoomObject.allowFontStyles == null);
+		</method>
+
+		<view name="_button" width="140" y="22" align="right">
+
+			<miniIconsImage name="fontbutton" y="2" x="62" width="16" height="16" 
+				showhandcursor="true" src="$once{ canvas.getThemeImage('font_style') }" >
+        		<handler name="onclick">
+        			var pick = new lz.fontOptions(canvas,{
+						btnRef:this.parent.parent,
+						x:(this.getAttributeRelative('x',canvas)-130),
+						y:(this.getAttributeRelative('y',canvas)-42)
+					});
+					lz.ModeManager.makeModal(pick);   
+        		</handler>
+        		<handler name="onmouseover">
+        			<!-- lost selection workaround -->
+        			parent.parent.message._ctext.saveselection();
+        		</handler>
+        		<labelTooltip labelid="1530" />
+        	</miniIconsImage>
+
+			<miniIcons y="2" x="82" resource="smile_chat_log_rsc"
+				width="16" height="16" showhandcursor="true">
+				<handler name="onclick">
+					var pick = new lz.emotIconsSelector(canvas,{
+						btnRef:this.parent.parent,
+						x:(this.getAttributeRelative('x',canvas)-140),
+						y:(this.getAttributeRelative('y',canvas)-140)
+					});
+					lz.ModeManager.makeModal( pick );
+				</handler>
+				<labelTooltip labelid="445" />
+			</miniIcons>
+
+			<miniIcons y="2" x="102" resource="copy_chat_log_rsc"
+				width="16" height="16" showhandcursor="true" visible="$once{ !parent.parent.isPrivate }">
+				<handler name="onclick">
+                <![CDATA[
+                    var tString = canvas._chatcontent.getLog();
+                    new lz.showChatLog(canvas,{
+                                    error:tString
+                                });
+                ]]>
+				</handler>
+				<labelTooltip labelid="1200" />
+			</miniIcons>
+
+			<miniIconsImage src="$once{ canvas.getThemeImage('button_cancel_rsc') }"
+				y="2" x="122" width="16" height="16" showhandcursor="true"
+				visible="$once{ !parent.parent.isPrivate }">
+				<handler name="onclick">
+					if (!canvas.ismoderator) {
+					//Do not allow
+						new lz.labelerrorPopup(canvas,{errorlabelid:783});
+						return;
+					}
+					parent.clearChat.doCall();
+				</handler>
+				<labelTooltip labelid="442" />
+			</miniIconsImage>
+
+			<view width="1" />
+
+			<netRemoteCallHib name="clearChat" funcname="chatservice.clearChat"
+				remotecontext="$once{ canvas.thishib }">
+				<handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    if ($debug) Debug.write("clearChat : ",value);
+                ]]>
+				</handler>
+			</netRemoteCallHib>
+
+		</view>
+
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/chatTabItem.lzx b/WebContent/src/modules/conference/tabcontent/chat/chatTabItem.lzx
new file mode 100644
index 0000000..a9d61aa
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/chatTabItem.lzx
@@ -0,0 +1,78 @@
+<?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.
+  
+-->
+<library>
+
+
+<class name="chatTabItem" extends="view" 
+	   width="240" >
+
+	<attribute name="user_id" value="0" type="number" />
+	<attribute name="username" value="" type="string" />
+	<attribute name="usertime" value="" type="string" />
+	<attribute name="usercolor" value="0" type="string" />
+	<attribute name="cbtext" value="" type="string" />
+	
+	<handler name="oninit">
+		<![CDATA[
+			if($debug) Debug.write("chatTabItem/WIDTH: "+this.width);
+			if($debug) Debug.write("chatTab Item on init");
+	        var downloadurl = canvas.getUrl() + 'DownloadHandler?fileName=CHAT'
+	        		+'&moduleName=chat&parentPath=&room_id='
+	        		+'&remoteUserid='+this.user_id
+	        		+'&sid='+canvas.sessionId;
+	        //Debug.write("downloadurl "+downloadurl);
+	        this._userpic.setAttribute('src',downloadurl);	
+	        
+	        if(canvas.isrtl == 'true'){
+	        	this.header_user.stAttribute('textalign', 'right');
+	        	this.header_time.setAttribute('align', 'left');
+	        	this.multi.setAttribute('textalign', 'right');
+	        }
+	        
+	        
+	        
+	        
+	        //Debug.write("TIME: "+this.usertime);
+        ]]>
+	</handler>
+	
+	<image name="_userpic" />
+	
+	
+	<text text="$once{ parent.username }" x="40" resize="false" fontsize="10"
+		  width="$once{ parent.width - 40 }" bgcolor="$once{ parent.usercolor }"
+		  selectable="true" name="header_user">
+		  
+	</text>
+	<text text="$once{ parent.usertime }" align="right" fontsize="10" selectable="true" name="header_time" >
+		
+	</text>
+	
+	
+	
+	<text multiline="true" x="40" y="20" fontsize="10" text="$once{ parent.cbtext }"
+		  width="220" selectable="true" name="multi">
+		 
+	</text>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/chatTabItemEmoticons.lzx b/WebContent/src/modules/conference/tabcontent/chat/chatTabItemEmoticons.lzx
new file mode 100644
index 0000000..d3201cf
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/chatTabItemEmoticons.lzx
@@ -0,0 +1,286 @@
+<?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.
+  
+-->
+<library>
+
+
+<class name="chatTabItemEmoticons" extends="view" width="$once{ parent.width }" bgcolor="$once{ this.usercolor }">
+
+	<attribute name="user_id" value="0" type="number" />
+	<attribute name="username" value="" type="string" />
+	<attribute name="usertime" value="" type="string" />
+	<attribute name="usercolor" value="0" type="string" />
+	<attribute name="publicSID" value="" type="string" />
+	<attribute name="messageObj" value="null" />
+	<attribute name="isDirectLink" value="false" type="boolean" />
+	<attribute name="message" value="" type="string" />
+	<attribute name="picture_uri" value="" type="string"/>
+	<attribute name="rawMessage" value="null" />
+	
+	<handler name="oninit">
+		<![CDATA[
+		    if ($debug) Debug.write("this.picture_uri :: ",this.picture_uri);
+            this._userpic.setAttribute('src', canvas.getPictureUrl(this.picture_uri, '&moduleName=chat&remoteUserid='+this.user_id)); 
+	        
+	        if(canvas.isrtl == 'true'){
+	         	if($debug) Debug.write("chatTabItemEmoticons RTL is set");
+	       
+	        	this.header_user.setAttribute('textalign', 'right');
+	        	this.header_time.setAttribute('align', 'left');
+	        	this.header_time.setAttribute('x', '40');
+	        	this.multi.setAttribute('textalign', 'right');
+	        	this.multi.setAttribute('align', 'right');
+	        }
+	        
+	        //Debug.write("TIME: "+this.usertime);
+        ]]>
+	</handler>
+	
+	<view name="bg" width="179" height="$once{ parent.height-1 }" bgcolor="0xFFFFFF" 
+		opacity="0.1">
+	</view>
+	
+	<image name="_userpic" stretches="both" x="1" y="1">
+		<handler name="onload">
+            <![CDATA[
+                if (this.height > 38) {
+                    //If bigger then containter then scale it
+                    var width = this.width/(this.height/38);
+                    this.setAttribute('height',38);
+                    this.setAttribute('width',width);
+                }
+                if (this.width > 38) {
+                	var height = this.height/(this.width/38);
+                	this.setAttribute('height',height);
+                    this.setAttribute('width',38);
+                }
+            ]]>
+        </handler>
+	</image>
+	
+	<text text="$once{ parent.username }" x="40" resize="false" fontsize="11" multiline="true"
+		  width="140" height="$once{ parent.height }"
+		  name="header_user">
+	</text>
+	
+	<state applied="$once{ parent.rawMessage[9] }">
+		<miniIcons resource="allow_ok_icon_rsc" width="16" height="16"
+			y="2" x="$once{ parent.width - 140 }" showhandcursor="true" >
+			<handler name="onclick">
+				this.setAttribute('visible', false);
+				parent.setAttribute('visible', false);
+				parent.rawMessage.length = parent.rawMessage.length - 1;
+				parent.rawMessage[parent.rawMessage.length - 1] = false;
+				//if ($debug) Debug.write("!!!!!!!!!!!!! allow message ", parent, parent.rawMessage);
+				hib.sendChatMessageWithClient.sendMessage(parent.rawMessage);
+			</handler>
+			<labelTooltip labelid="1514" />
+		</miniIcons> 
+	</state>
+	
+	<state applied="$once{ !parent.isDirectLink }">
+	
+	    <miniIconsImage name="add" src="$once{ canvas.getThemeImage('edit_add_rsc') }" width="16" height="16" 
+	                   y="2" x="$once{ parent.width - 122 }" showhandcursor="true">
+	        <handler name="onclick">
+	            if ($debug) Debug.write("Start Conference");
+	            if (hib.userobject.user_id == parent.user_id) {
+	                new lz.labelerrorPopup(canvas,{errorlabelid:1225});
+	                return;
+	            }
+	            parent.requestUserToContactList.doCall();
+	        </handler>
+	        <labelTooltip labelid="1186" />
+	    </miniIconsImage>
+    
+    </state>
+    
+    <!--
+    public Long requestUserToContactList(String SID, Long userToAdd_id, 
+                String domain, String port, String webapp)
+     -->
+    <netRemoteCallHib name="requestUserToContactList" funcname="userservice.requestUserToContactList" 
+                  remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >      
+        <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue"> return parent.parent.user_id; </method></netparam>
+        <netparam><method name="getValue"> return canvas.getHttpHost(); </method></netparam>
+        <netparam><method name="getValue"> return canvas.red5httpport; </method></netparam>
+        <netparam><method name="getValue"> return canvas.httpRootKey; </method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("requestUserToContactList: ",value);
+                if (value > 0) {
+                    new lz.labelerrorPopup(canvas,{labelid:1267,errorlabelid:1266});
+                }
+            ]]>
+        </handler>
+    </netRemoteCallHib>
+    
+	
+	<!-- space between each line of text -->
+	<attribute name="leading" value="5" type="number" />
+	
+	<view name="bg_main" x="180" width="$once{ parent.width - 180 }" height="$once{ parent.height-1 }"  
+		opacity="0.3" bgcolor="0xFFFFFF">
+	</view>
+	
+	<text multiline="true" x="180" width="$once{ parent.width - 306 }" fontsize="11" selectable="true" name="multi" >
+		<handler name="oninit">
+			<![CDATA[
+				
+				if(canvas.isrtl!='true'){
+					this.sprite.__LZtextclip.wordWrap = false;
+					if($debug) Debug.write("New Text");
+					//Debug.write(this.sprite.getTextFormat());
+					tFormat = this.sprite.__LZtextclip.getTextFormat();
+					//Debug.write(this.sprite.__LZtextclip.getTextFormat());
+					tFormat.leading = 4;
+					this.sprite.__LZtextclip.setTextFormat(tFormat);
+					var items = parent.messageObj;
+					var t = "";
+					//items[0] = ["text","hello your are the hero lets check accomodation today i need some input"];
+					for (var i=0;i<items.length;i++) {
+						
+						//if ($debug) Debug.write("Item :0: ",items[i][0]);
+						
+						if (items[i][0]=="text"){
+							//if ($debug) Debug.write("Text :1: ",items[i][1]);
+							
+							t += items[i][1];
+						} else {
+							if (t.length!=0){
+								var tempString = calcLineWidthByTextField(this.width, t,this.fontsize,this.font);
+								var x = tempString[tempString.length-1]["lineWidth"];
+								var y = (tempString.length-1)*(getLineHeight()+parent.leading-1);
+							}else {
+								var x = 0;
+								var y = 0;
+							}
+							t += items[i][2];
+							
+							var swfurl = canvas.getUrl() + 'public/emoticons/'+items[i][1];
+							var m = new lz.chatInnerSmily(parent,{x:x+this.x,y:y+this.y,iconlabel:items[i][3]});
+							
+							//if ($debug) Debug.write("Smily :2: ",swfurl);
+							
+							m.setSource(swfurl);
+						}
+					}
+					//Debug.write("TTTT: ",t);"Verdana"
+					var tString = calcLineWidthByTextField(this.width, t,this.fontsize,this.font);
+					
+					for (var k = 0;k<tString.length;k++){
+						this.setAttribute('text',this.getText()+textObject[k]["text"]+"\r");
+						//if ($debug) Debug.write("text: ",k,textObject[k]["lineWidth"],textObject[k]["text"]);
+					}	
+					
+					//if ($debug) Debug.write("text: ",this.getText());
+					
+					//Debug.write(this.sprite.__LZtextclip.getTextFormat());
+					tFormat.leading = parent.leading;
+					this.sprite.__LZtextclip.setTextFormat(tFormat);
+					//Debug.write(this.sprite.__LZtextclip.textHeight);
+					//Debug.write(getLineHeight());
+					//Debug.write(this.sprite.__LZtextclip.textHeight+12);
+					this.setAttribute('height',this.sprite.__LZtextclip.textHeight+12);
+				}
+				else{
+					var t = "";
+					var items = parent.messageObj;
+					
+					for (var i=0;i<items.length;i++) {
+						if (items[i][0]=="text"){
+							t += items[i][1];
+						} 
+					}
+					
+					this.setAttribute('text',this.getText()+ t);
+				}
+				
+				parent.setAttribute('height',this.height);
+				parent.header_user.setAttribute('height',this.height);
+				parent.bg.setAttribute('height',this.height-1);
+				parent.bg_main.setAttribute('height',this.height-1);
+				
+			]]>
+		</handler>	
+		
+	</text>
+	
+	<state applied="$once{ !parent.isDirectLink }">
+	
+	    <miniIcons name="private_message_add" resource="private_message_add_rsc" width="16" height="16" 
+	                   y="0" x="$once{ parent.width - 104 }" showhandcursor="true">
+	        <handler name="onclick">
+	            if ($debug) Debug.write("Start Conference");
+	            new lz.newPrivateMessage(canvas,{
+	                                x:200,y:120,
+	                                refObj:null,
+	                                minimizable:true,
+	                                maximizable:true,
+	                                userObject:null,
+	                                isdragable:true,
+	                                user_id:parent.user_id,
+	                                width:canvas.width-300,
+	                                height:canvas.height-130
+	                            });
+	        </handler>
+	        <labelTooltip labelid="1253" />
+	    </miniIcons>
+	    
+	    <miniIcons resource="user_profile_rsc" width="16" height="16" 
+	               y="0" x="$once{ parent.width - 84 }" showhandcursor="true">
+	        <handler name="onclick">
+	            if ($debug) Debug.write("Start Conference");
+	            new lz.viewUserProfileWindow(canvas,{
+	                                userId:parent.user_id
+	                            });
+	        </handler>
+	        <labelTooltip labelid="1236" />
+	    </miniIcons>    		  
+			  
+	    <miniIcons y="0" x="$once{ parent.width - 64 }"
+	    		   resource="start_conference2_rsc" width="16" height="16" 
+	               showhandcursor="true">
+	        <handler name="onclick">
+	            if ($debug) Debug.write("Start Conference");
+	            new lz.chatParticipantsInviteConference(canvas,{
+	                            publicSID:parent.publicSID,
+	                            user_id:parent.user_id
+	                        });
+	        </handler>
+	        <labelTooltip labelid="1131" />
+	    </miniIcons>  
+    
+    </state>
+    		  
+	<text text="$once{ parent.usertime+'   ' }" align="right" fgcolor="0xAAAAAA"
+		  fontsize="10" name="header_time" />
+
+</class>						
+
+<class name="chatInnerTextBox" extends="text" resize="true" bgcolor="red" />
+
+<class name="chatInnerSmily" extends="view" onmouseover="" onmouseout="">
+	<attribute name="iconlabel" value="" type="string" />
+	<labelTooltip text="$once{ parent.iconlabel }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/library.lzx b/WebContent/src/modules/conference/tabcontent/chat/library.lzx
new file mode 100644
index 0000000..88b92ed
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/library.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+	
+	<resource name="delete_chat_log_rsc" src="resources/cancel.png" />
+	<resource name="copy_chat_log_rsc" src="resources/edit-copy.png" />
+	<resource name="smile_chat_log_rsc" src="resources/smile.swf" />
+	<resource name="start_conference2_rsc" src="resources/connect.png" />
+	
+	<include href="simpleBaseTabpane.lzx" />
+	<include href="showChatLog.lzx" />
+	<include href="baseTabChatPanel.lzx" />
+	<include href="chatTabItem.lzx" />
+	<include href="chatTabItemEmoticons.lzx" />
+	<include href="chatOutput.lzx" />
+	<include href="chatTabBottom.lzx" />
+	<include href="chatTab.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/cancel.png b/WebContent/src/modules/conference/tabcontent/chat/resources/cancel.png
new file mode 100644
index 0000000..a432b49
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/cancel.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/connect.png b/WebContent/src/modules/conference/tabcontent/chat/resources/connect.png
new file mode 100644
index 0000000..024138e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/connect.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/edit-copy.png b/WebContent/src/modules/conference/tabcontent/chat/resources/edit-copy.png
new file mode 100644
index 0000000..8dd48c4
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/edit-copy.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/font.png b/WebContent/src/modules/conference/tabcontent/chat/resources/font.png
new file mode 100644
index 0000000..fddeb4d
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/font.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/smile.swf b/WebContent/src/modules/conference/tabcontent/chat/resources/smile.swf
new file mode 100644
index 0000000..7578e2e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/smile.swf
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/text_bold.png b/WebContent/src/modules/conference/tabcontent/chat/resources/text_bold.png
new file mode 100644
index 0000000..889ae80
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/text_bold.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/text_color.png b/WebContent/src/modules/conference/tabcontent/chat/resources/text_color.png
new file mode 100644
index 0000000..76fb17b
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/text_color.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/text_hyperlink.png b/WebContent/src/modules/conference/tabcontent/chat/resources/text_hyperlink.png
new file mode 100644
index 0000000..b8edc12
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/text_hyperlink.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/text_italic.png b/WebContent/src/modules/conference/tabcontent/chat/resources/text_italic.png
new file mode 100644
index 0000000..8482ac8
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/text_italic.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/resources/text_underline.png b/WebContent/src/modules/conference/tabcontent/chat/resources/text_underline.png
new file mode 100644
index 0000000..a9468a0
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/resources/text_underline.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/chat/showChatLog.lzx b/WebContent/src/modules/conference/tabcontent/chat/showChatLog.lzx
new file mode 100644
index 0000000..4294a4d
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/showChatLog.lzx
@@ -0,0 +1,44 @@
+<?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.
+  
+-->
+<library>
+
+<!---
+Chat tabpane class. It contains chatOutput-class and catTabBottom-class.
+This is used in the conference.
+-->
+<class name="showChatLog" extends="labelExplorerBox" labelid="1201"
+	    docking="true" resizeable="true" closable="true" width="500" 
+	    x="$once{ parent.width/2 - this.width/2 }" height="240">
+    
+    <attribute name="error" value="" type="string" />
+    
+    <view x="2" width="${ parent.width - 4 }" clip="true"
+        				y="24" height="${ parent.height-50 }">
+        <labelText text="$once{ parent.parent.error }" width="${ parent.width - 18 }"
+        		   multiline="true" resize="false" selectable="true" />
+        <om_vscrollbar />
+    </view>
+	
+    <simpleLabelButton labelid="891" width="100" onclick="this.parent.close();" 
+		   x="${ parent.width-104 }" y="${ parent.height-24 }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/chat/simpleBaseTabpane.lzx b/WebContent/src/modules/conference/tabcontent/chat/simpleBaseTabpane.lzx
new file mode 100644
index 0000000..3e5492a
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/chat/simpleBaseTabpane.lzx
@@ -0,0 +1,29 @@
+<?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.
+  
+-->
+<library>
+
+	<!--- Tabpane. it used by chat. -->
+	<class name="simpleBaseTabpane" extends="view" height="$once{ parent.height-20 }" 
+		   width="$once{ parent.width }" y="24" x="2" >
+		
+	</class>  
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
new file mode 100644
index 0000000..99d73b1
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx
@@ -0,0 +1,257 @@
+<?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.
+  
+-->
+<library>
+
+<class name="dragItemFileExplorer" extends="view">
+	
+	<attribute name="refObj" value="null"/>
+	
+	<attribute name="dragItemResource" value="" type="string"/>
+	
+	<attribute name="overItem" value="null"/>
+	
+	<attribute name="alreadySent" value="false" type="boolean" />
+	
+	<attribute name="fileExplorerItemId" value="0" type="number" />
+	<attribute name="newParentFileExplorerItemId" value="0" type="number" />
+    <attribute name="isOwner" value="false" type="boolean" />
+    <attribute name="moveToHome" value="false" type="boolean" />
+	
+	<handler name="oninit">
+		lz.Track.activate(canvas.currentImagesListdraw.currentTrackGroupName);
+		canvas.currentImagesListdraw.currentDragItem = this;
+		lz.Cursor.showHandCursor(false);
+		lz.ModeManager.globalLockMouseEvents();
+		this.dragger.apply();
+	</handler>
+	
+	<method name="sendOverItem" args="itemRef">
+		<![CDATA[
+    		if (this.refObj != itemRef) {
+    			
+    			if (this.refObj.isFolder) {
+    				if (!itemRef.isTrashCan && !itemRef.isFolder) {
+    					//No Folders to the whiteboard please
+    					return;
+    				}
+    			}
+    			
+        		this.overItem = itemRef;
+        		this._dragIcon.setAttribute("frame",2);
+    		}
+		]]>
+	</method>
+	
+	<method name="sendOutItem" args="itemRef">
+        this.overItem = null;
+        this._dragIcon.setAttribute("frame",1);
+    </method>
+	
+	<handler name="onmouseup" reference="lz.GlobalMouse" args="who">
+        this.close();
+    </handler>
+    
+    <method name="close">
+    <![CDATA[
+    	//This can happen when the confirmation pops up
+    	if (this.alreadySent) {
+    		return;
+    	}
+    	this.alreadySent = true;
+    	if ($debug) Debug.write("close Drag Item");
+    	lz.Cursor.showHandCursor(true);
+    	lz.Track.deactivate(canvas.currentImagesListdraw.currentTrackGroupName);
+    	lz.ModeManager.globalUnlockMouseEvents();
+    	canvas.currentImagesListdraw.currentDragItem = null;
+    	this.dragger.remove();
+    	
+    	if (this.overItem != null) {
+    		
+    		if ($debug) Debug.write("this.overItem ",this.overItem);
+    		
+    		if (this.overItem["isTrashCan"] && this.overItem.isTrashCan) {
+    			if ($debug) Debug.write("SEND TO GARBAGE");
+    			this.fileExplorerItemId = this.refObj.fileExplorerItemId;
+    			new lz.confirmationSingle(canvas,{
+            			   refObj:this,
+            			   labelid:710,
+            			   labeliderror:713,
+            			   showCheckBox:false,
+                           refReturnMethod:"sendConfirmation"
+            			});
+    		} else if (this.overItem["isFolder"] && this.overItem.isFolder){
+    			if ($debug) Debug.write("MOVE ITEM",this.refObj.fileExplorerItemId);
+    			if ($debug) Debug.write("MOVE TO PARENT",this.overItem.fileExplorerItemId);
+    			this.fileExplorerItemId = this.refObj.fileExplorerItemId;
+    			this.newParentFileExplorerItemId = this.overItem.fileExplorerItemId;
+    			if (this.overItem.fileExplorerItemId == 0) {
+    			    this.isOwner = this.overItem.isOwner;
+    			}
+    			
+    			//check if this is a home folder or not
+    			var checkForOwer = this.overItem.checkForIsOwner();
+    			if ($debug) Debug.write("checkForOwer ::",checkForOwer);
+    			this.moveToHome = checkForOwer;
+    			
+    			//check that the file is not moved inside itself
+    			if (this.overItem.checkForIsChild(this.refObj.fileExplorerItemId)) {
+    				new lz.labelerrorPopup(canvas,{errorlabelid:922});
+    				this.destroy();
+    				return;
+    			}
+    			
+    			this.moveFile();
+    		} else {
+    			if ($debug) Debug.warn("Drag to whiteboard !!! ");
+    			if (this.refObj.isVideo) {
+    				this.refObj.playVideo();
+    			} else if (this.refObj.isPresentation) {
+    			    this.refObj.loadDocumentToWhiteboard();
+    			} else if (this.refObj.isImage) {
+    				this.refObj.loadImageToWhiteboard();
+    			} else if (this.refObj.isWmlFile) {
+    				this.refObj.loadWmlFile();
+    			} else {
+    				if ($debug) Debug.warn("Should never happen dragItemFileExplorer unhandled case");
+    			}
+    			this.destroy();
+    		}
+    	} else {
+    		this.destroy();
+    	}
+    ]]>	
+    </method>
+    
+    <method name="sendConfirmation" args="bool,askAgain">
+    	if (bool) {
+    		this.deleteFileOrFolder();
+    	} else {
+    		this.destroy();
+    	}
+    </method>
+    
+    <method name="deleteFileOrFolder">
+        <![CDATA[
+            if ($debug) Debug.write("deleteFileOrFolder HTTP 2: ");
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/deleteFileOrFolderSelf?'
+                            +'SID='+canvas.sessionId
+                            +'&fileExplorerItemId='+this.fileExplorerItemId;
+            
+            this.deleteFileOrFolderSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("deleteFileOrFolderSelf doRequest ",downloadurl);
+            this.deleteFileOrFolderSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="deleteFileOrFolderSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                if ($debug) Debug.write("deleteFileOrFolder: ",d);
+                parent.refObj.parent.parent.doOpen();
+                parent.destroy();
+            ]]>
+        </handler>
+    </dataset>
+    
+    <!--
+    <netRemoteCallHib name="deleteFileOrFolder" funcname="fileservice.deleteFileOrFolder" 
+        remotecontext="$once{ canvas.thishib }" > 
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.fileExplorerItemId;</method></netparam>
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("deleteFileOrFolder: ",value);
+            parent.refObj.parent.parent.doOpen();
+            parent.destroy();
+        </handler>
+    </netRemoteCallHib> 
+     -->
+    
+    <!--
+    public Long moveFileSelf(String SID, Long fileExplorerItemId,
+            Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+            Boolean moveToHome)
+     -->
+     
+    <method name="moveFile">
+        <![CDATA[
+            if ($debug) Debug.write("moveFile HTTP 1: ");
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/moveFileSelfInternal?'
+                            +'SID='+canvas.sessionId
+                            +'&fileExplorerItemId='+this.fileExplorerItemId
+                            +'&newParentFileExplorerItemId='+this.newParentFileExplorerItemId
+                            +'&roomId='+hib.currentroomid
+                            +'&isOwner='+this.isOwner
+                            +'&moveToHome='+this.moveToHome;
+            
+            this.moveFileSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("moveFileSelf doRequest ",downloadurl);
+            this.moveFileSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="moveFileSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                if ($debug) Debug.write("moveFileSelf: ",d);
+                parent.overItem.doOpen();
+                parent.refObj.parent.parent.doOpen();
+                parent.destroy();
+            ]]>
+        </handler>
+    </dataset>
+    
+    <!--
+    <netRemoteCallHib name="moveFile" funcname="fileservice.moveFile" 
+        remotecontext="$once{ canvas.thishib }" > 
+        
+        <attribute name="fileExplorerItemId" value="0" type="number" />
+        
+        
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.fileExplorerItemId;</method></netparam>
+        <netparam><method name="getValue">return parent.newParentFileExplorerItemId;</method></netparam>  
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>         
+        <netparam><method name="getValue">return parent.isOwner;</method></netparam>
+        <netparam><method name="getValue">return parent.moveToHome;</method></netparam>
+          
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("moveFile: ",value);
+            parent.overItem.doOpen();
+            parent.refObj.parent.parent.doOpen();
+            parent.destroy();
+        </handler>
+    </netRemoteCallHib>   
+     -->  
+   
+	<view name="_dragFileSymbol" x="10" y="10"
+		resource="$once{ parent.dragItemResource }" />
+	
+	<view name="_dragIcon" x="18" y="14" 
+		  resource="drag_n_drop_rsc" frame="1" />
+	
+	<dragstate name="dragger"/>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx
new file mode 100644
index 0000000..033f205
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx
@@ -0,0 +1,157 @@
+<?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.
+  
+-->
+<library>
+
+<class name="dynamicFileName" extends="customInputtext" 
+	   fontsize="10" bgcolor="0xFFFFFF">
+	
+	<attribute name="isNew" value="false" type="boolean" />
+	
+	<!-- Only used in case its an update -->
+	<attribute name="fileExplorerItemId" value="0" type="number" />
+	
+	<attribute name="parentFileExplorerItemId" value="0" type="number" />
+	<attribute name="isOwner" value="false" type="boolean" />
+	
+	<attribute name="refObj" value="null" />
+	
+	<handler name="onblur">
+		lz.ModeManager.release(this);
+		if ($debug) Debug.write("Store and Destroy ",this.parentFileExplorerItemId);
+		if (this.isNew) {
+		    this.addFolder();
+		} else {
+			this.updateFileOrFolderName();
+		}
+	</handler>
+	
+	<handler name="onkeydown" args="k">
+		<![CDATA[
+    		if (k == 13 || k == 27) {
+    			this.onblur.sendEvent();
+    		}
+		]]>
+	</handler>
+	
+	<!--
+	public Long addFolderSelf(String SID, Long parentFileExplorerItemId,
+            String fileName, Long room_id, Boolean isOwner)
+     -->
+	
+	<method name="addFolder">
+        <![CDATA[
+            if ($debug) Debug.write("moveFile HTTP 1: ");
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/addFolderSelfInternal?'
+                            +'SID='+canvas.sessionId
+                            +'&parentFileExplorerItemId='+this.parentFileExplorerItemId
+                            +'&fileName='+this.text
+                            +'&roomId='+hib.currentroomid
+                            +'&isOwner='+this.isOwner;
+            
+            this.addFolderSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("addFolderSelf doRequest ",downloadurl);
+            this.addFolderSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="addFolderSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                if ($debug) Debug.write("addFolderSelf: ",d);
+                parent.completed();
+            ]]>
+        </handler>
+    </dataset>
+	
+	<!--
+	<netRemoteCallHib name="addFolder" funcname="fileservice.addFolder" 
+        remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.parentFileExplorerItemId;</method></netparam> 
+        <netparam><method name="getValue">return parent.parent.text;</method></netparam>   
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>  
+        <netparam><method name="getValue">return parent.parent.isOwner;</method></netparam>         
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("addFolder: ",value);
+            parent.completed(value);
+        </handler>
+    </netRemoteCallHib>  
+     -->
+	
+	<!--
+    public Long updateFileOrFolderNameSelf(String SID, Long fileExplorerItemId,
+            String fileName)
+     -->
+    <method name="updateFileOrFolderName">
+        <![CDATA[
+            if ($debug) Debug.write("moveFile HTTP 1: ");
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/updateFileOrFolderNameSelf?'
+                            +'SID='+canvas.sessionId
+                            +'&fileExplorerItemId='+this.fileExplorerItemId
+                            +'&fileName='+this.text;
+            
+            this.updateFileOrFolderNameSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("updateFileOrFolderNameSelf doRequest ",downloadurl);
+            this.updateFileOrFolderNameSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="updateFileOrFolderNameSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                if ($debug) Debug.write("updateFileOrFolderNameSelf: ",d);
+                parent.completedRename();
+            ]]>
+        </handler>
+    </dataset>
+    
+	<!--
+	<netRemoteCallHib name="updateFileOrFolderName" funcname="fileservice.updateFileOrFolderName" 
+        remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.fileExplorerItemId;</method></netparam> 
+        <netparam><method name="getValue">return parent.parent.text;</method></netparam>   
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("updateFileOrFolderName: ",parent.fileExplorerItemId);
+            parent.completedRename();
+        </handler>
+    </netRemoteCallHib>
+     -->
+    
+	<method name="completed">
+		//this.refObj.fileExplorerItemId = fileExplorerItemId;
+		this.refObj.setAttribute("fileName",this.getText());
+		this.refObj.parent.parent.doOpen();
+		this.destroy();
+	</method>
+	
+	<method name="completedRename">
+		this.refObj.setAttribute("fileName",this.getText());
+		this.destroy();
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
new file mode 100644
index 0000000..07e0640
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx
@@ -0,0 +1,622 @@
+<?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.
+  
+-->
+<library>
+
+
+<!-- ###################
+    Class fileExplorer
+ -->
+<class name="fileExplorer" extends="view" >
+    
+    <attribute name="parentFolderId" value="-2" type="number" />
+    
+    <attribute name="_selected" value="null" />
+    
+    <event name="onClose"/>
+    
+    <handler name="oninit">
+    	canvas.currentFileExplorer = this;
+        lz.Track.register(this._trashBar._trashIcon, canvas.currentImagesListdraw.currentTrackGroupName);
+    </handler>
+    
+    <handler name="onvisible">
+    	if ($debug) Debug.write("fileExplorer::onvisible this._selected ",this._selected);
+        //This is thrown whenever an uploaded Document has completed
+        if (this._selected == null) {
+            this.loadFiles();
+        } else {
+        	if (this._selected.isFolder) {
+            	this._selected.refresh();
+        	} else {
+        		this.loadFiles();
+        	}
+        }
+    </handler>
+    
+    <method name="selectItem" args="itemRef">
+        if (this._selected != null) {
+            this._selected.deselectItem();
+        }
+        
+        this._selected = itemRef;
+        this._selected.selectItem();
+        
+        //Set parent folder id for next Folder or uploaded file
+        if (this._selected.fileExplorerItemId == 0) {
+            if (this._selected.isOwner) {
+                this.parentFolderId = -2;
+            } else {
+                this.parentFolderId = 0;
+            }
+        } else {
+            this.parentFolderId = this._selected.fileExplorerItemId;
+        }
+        
+    </method>
+    
+    <method name="addFile">
+    	<![CDATA[
+	    	if ($debug) Debug.write("addFile :: ",this._selected,this.parentFolderId);
+	    	
+	    	if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+	    	
+	    	var isOwner = 0;
+	    	if (this.parentFolderId == -2) {
+	    		isOwner = 1;
+	    	} else {
+	    		//Check if its a subfolder of a Owners Dir
+	    		if (this._selected != null) {
+	    			var checkForOwer = this._selected.checkForIsOwner();
+	    			if ($debug) Debug.write("checkForOwer ::",checkForOwer);
+	    			if (checkForOwer) {
+	    				isOwner = 1;
+	    			}
+	    		}
+	    	}
+	    	
+	    	if ($debug) Debug.write("addFile :: ",isOwner);
+	    	
+	        new lz.uploadWindowExplorer(canvas.main_content._content.inner,{
+	                            x:60,uploadmodule:canvas.uploadmoduleimg,
+	                            parentFolderId:this.parentFolderId,
+	                            isOwner:isOwner,
+	                            fileExplorerRef:this,
+	                            isOnlyImage:true,
+	                            servletName:'file.upload'
+	                        });
+        ]]>
+    </method>
+    
+    <method name="addFolder">
+    	<![CDATA[
+    		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+    
+	        if (this._selected == null) {
+	        	if ($debug) Debug.write("addFolder ::1 ",this._selected);
+	            this._filearea._contentarea.subviews[0].addFolder();
+	        } else {
+	            if (this._selected.isFolder) {
+	            	if ($debug) Debug.write("-1 this._selected.isFolder ",this._selected);
+	                this._selected.addFolder();
+	            } else {
+	            	if ($debug) Debug.write("-2 !this._selected.isFolder ",this._selected);
+	                this._selected.parent.parent.addFolder();
+	            }
+	        }
+	    ]]>
+    </method>
+    
+    <method name="loadWmlFile" args="itemObj">
+		this.selectItem(itemObj);
+		canvas._drawarea.prepareLoadWMLFile(itemObj); 
+		//canvas._drawarea.loadObjectList(itemObj); 
+	</method>
+
+    
+    <method name="loadDocument" args="itemObj">
+        this.selectItem(itemObj);
+        this._documentsTabs.setAttribute("height",20);
+        this._documentsTabs.setAttribute("visibility","visible");
+        this._documentsTabs.hideAll();
+        var t = new lz.presentationPreview(this,{
+                        documentObj:itemObj,
+                        refObjList:this
+                    });
+        //t.sendToBack();
+        //this._bg1.sendToBack();
+        //this._bg2.sendToBack();
+        this._documentsTabs.bringToFront();
+        return t;
+    </method>
+    
+    <method name="playVideo" args="itemObj">
+    	this.selectItem(itemObj);
+    	canvas._drawarea.playVideoSynced(itemObj.fileExplorerItemId,itemObj.fileName,itemObj.flvWidth,itemObj.flvHeight);
+    </method>
+    
+    <method name="loadFiles">
+    	<![CDATA[
+    	    if (this["getFileExplorerByRoomSelf"]) {
+                //this.getFileExplorerByRoom.doCall();
+                var downloadurl = canvas.getUrl()+'services/FileService/getFileExplorerByRoomSelfInternal?'
+                                +'SID='+canvas.sessionId
+                                +'&roomId='+hib.currentroomid;
+                
+                this.getFileExplorerByRoomSelf.setAttribute("src",downloadurl);
+                if ($debug) Debug.write("getFileExplorerByRoomSelf doRequest 1 ",downloadurl);
+                this.getFileExplorerByRoomSelf.doRequest();
+    	    }
+        ]]>
+    </method>
+    
+    <dataset name="getFileExplorerByRoomSelf" type="http" >
+    	<handler name="ondata" args="d">
+    		<![CDATA[
+    			if ($debug) Debug.write("ondata 1 ",this.src);
+                if ($debug) Debug.write("ondata 2 ",d);
+                parent.parseRootItems(parent.parseRootToRoomObject(d));
+            ]]>
+    	</handler>
+    </dataset>
+    
+    <method name="parseParentToRoomObject" args="dObj">
+        <![CDATA[
+            
+            var filesObject = new Array();
+            
+            var tFiles = dObj.childNodes[0].childNodes;
+            
+            if ($debug) Debug.write("parseParentToRoomObject tFiles ",tFiles);
+            
+            for (var i=0;i<tFiles.length;i++) {
+                
+                filesObject.push(this.parseToFileObj(tFiles[i].childNodes));
+                
+            }
+        
+            return filesObject;
+        ]]>
+    </method>
+    
+    <method name="parseRootToRoomObject" args="dObj">
+        <![CDATA[
+            
+            var roomObject = new Object();
+            
+            roomObject.userHome = new Array();
+            roomObject.roomHome = new Array();
+            roomObject.userHomeSize = 0;
+            roomObject.roomHomeSize = 0;
+            
+            var tFiles = dObj.childNodes[0].childNodes[0].childNodes;
+            
+            //if ($debug) Debug.write("tFiles ",tFiles);
+            
+            for (var i=0;i<tFiles.length;i++) {
+                
+                //if ($debug) Debug.write("nodeName",tFiles[i].nodeName);
+                
+                if (tFiles[i].nodeName == "userHomeSize") {
+                    if ($debug) Debug.write("roomHomeSize",tFiles[i].childNodes[0].data);
+                    roomObject.userHomeSize = Number(tFiles[i].childNodes[0].data);
+                } else if (tFiles[i].nodeName == "roomHomeSize") {
+                    if ($debug) Debug.write("roomHomeSize",tFiles[i].childNodes[0].data);
+                    roomObject.roomHomeSize = Number(tFiles[i].childNodes[0].data);
+                } else if (tFiles[i].nodeName == "roomHome") {
+                    roomObject.roomHome.push(this.parseToFileObj(tFiles[i].childNodes));
+                } else if (tFiles[i].nodeName == "userHome") {
+                    roomObject.userHome.push(this.parseToFileObj(tFiles[i].childNodes));
+                }
+                
+            }
+        
+            return roomObject;
+        ]]>
+    </method>
+    
+    <method name="parseToFileObj" args="dObj">
+        <![CDATA[
+        
+            var tFileObj = new Object();
+        
+            var type = "string";
+            
+            for (var i=0;i<dObj.length;i++) {
+                
+                type = "string";
+            
+                switch (dObj[i].nodeName){
+                    case "externalFileId":
+                        type = "int";
+                        break;
+                    case "fileExplorerItemId":
+                        type = "int";
+                        break;
+                    case "fileSize":
+                        type = "int";
+                        break;
+                    case "flvHeight":
+                        type = "int";
+                        break;
+                    case "flvWidth":
+                        type = "int";
+                        break;
+                    case "insertedBy":
+                        type = "int";
+                        break;
+                    case "isChart":
+                        type = "boolean";
+                        break;
+                    case "isFolder":
+                        type = "boolean";
+                        break;
+                    case "isImage":
+                        type = "boolean";
+                        break;
+                    case "isPresentation":
+                        type = "boolean";
+                        break;
+                    case "isStoredWmlFile":
+                        type = "boolean";
+                        break;
+                    case "isVideo":
+                        type = "boolean";
+                        break;
+                    case "ownerId":
+                        type = "int";
+                        break;
+                    case "parentFileExplorerItemId":
+                        type = "int";
+                        break;
+                    case "room_id":
+                        type = "int";
+                        break;
+                    default:
+                        break;
+                }
+                
+                //if ($debug) Debug.write("Obj attr ",dObj[i].nodeName,type);
+                
+                if (dObj[i].childNodes.length > 0) {
+                    switch (type) {
+                        case "int":
+                            tFileObj[dObj[i].nodeName] = Number(dObj[i].childNodes[0].data);
+                            break;
+                        case "boolean":
+                            tFileObj[dObj[i].nodeName] = (dObj[i].childNodes[0].data == "true") ? true : false;
+                            break;
+                        default:
+                            tFileObj[dObj[i].nodeName] = dObj[i].childNodes[0].data;
+                            break;
+                    }
+                } else {
+                    tFileObj[dObj[i].nodeName] = null;
+                }
+                
+                //if ($debug) Debug.write("Obj attr ",dObj[i].nodeName,tFileObj[dObj[i].nodeName]);
+                
+            }
+        
+            return tFileObj;
+            
+        ]]>
+    </method>
+    
+    <!--
+        Parse Items and generate Output
+     --> 
+    <method name="parseRootItems" args="roomObject">
+        <![CDATA[
+            this.clearContent();
+            
+            var homeSizeInMBytes = Math.round( (roomObject.userHomeSize / 1024 / 1024) * 100) / 100;
+            
+            this._userSpace._userHomeSize.setAttribute("text","" + homeSizeInMBytes + " MBytes");
+            
+            var roomHomeSizeInMBytes = Math.round( (roomObject.roomHomeSize / 1024 / 1024) * 100) / 100;
+            
+            this._userSpace._roomHomeSize.setAttribute("text","" + roomHomeSizeInMBytes + " MBytes");
+            
+            var homeIcon = new lz.rootFileExplorerItem(this._filearea._contentarea,{
+                                        open:true,
+                                        fileName:canvas.getLabelName(706),
+                                        name:'_home',
+                                        isRoot:true,
+                                        fileIcon:'file_explorer_folder_home_rsc',
+                                        isOwner:true,
+                                        refObjListRoot:this
+                                    });
+                                    
+            homeIcon.content.setAttribute("visibility","visible");
+            homeIcon.icon_folder_pre.setAttribute("frame",2);
+            homeIcon._folderIcon.setAttribute("frame",2);
+            
+            //Home area
+            for (var i=0; i<roomObject.userHome.length; i++) {
+                var fileExplorerItem = roomObject.userHome[i];
+                //if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem);
+                if (fileExplorerItem.isFolder) {
+                    new lz.folderFileExplorerItem(homeIcon.content,{
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'icon_folder_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isImage) {
+                    new lz.imageFileExplorerItem(homeIcon.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_image_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isPresentation) {
+                    new lz.documentFileExplorerItem(homeIcon.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isPresentation:true,
+                                            fileIcon:'file_explorer_document_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isVideo) {
+                    new lz.videoFileExplorerItem(homeIcon.content,{
+                                            isFolder:false,
+                                            isVideo:true,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_video_rsc',
+                                            flvHeight:fileExplorerItem.flvHeight,
+                                            flvWidth:fileExplorerItem.flvWidth,
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isStoredWmlFile) { 
+                	new lz.wmlFileExplorerItem(homeIcon.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_wml_rsc',
+                                            isWmlFile: true,
+                                            refObjListRoot:this                	
+            							});
+                } else if (fileExplorerItem.isChart) { 
+                  new lz.wmlFileExplorerItem(homeIcon.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_chart_rsc',
+                                            isChart:true,
+                                            refObjListRoot:this                 
+                          });
+
+            	}
+            }
+            //Public - Room Area
+            var roomHome = new lz.rootFileExplorerItem(this._filearea._contentarea,{
+                                        open:true,
+                                        fileName:canvas.getLabelName(707),
+                                        name:'_roomHome',
+                                        isRoot:true,
+                                        fileIcon:'file_explorer_folder_network_rsc',
+                                        refObjListRoot:this
+                                    });
+                                    
+            roomHome.content.setAttribute("visibility","visible");
+            roomHome.icon_folder_pre.setAttribute("frame",2);
+            roomHome._folderIcon.setAttribute("frame",2);
+            
+            //Public area
+            for (var i=0; i<roomObject.roomHome.length; i++) {
+                var fileExplorerItem = roomObject.roomHome[i];
+                //if ($debug) Debug.write("fileExplorerItem.fileExplorerItemId, ",fileExplorerItem.fileExplorerItemId);
+                //if ($debug) Debug.write("fileExplorerItem, ",fileExplorerItem);
+                if (fileExplorerItem.isFolder) {
+                    new lz.folderFileExplorerItem(roomHome.content,{
+                                            fileName:fileExplorerItem.fileName,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileIcon:'icon_folder_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isImage) {
+                    new lz.imageFileExplorerItem(roomHome.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_image_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isPresentation) {
+                    new lz.documentFileExplorerItem(roomHome.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isPresentation:true,
+                                            fileIcon:'file_explorer_document_rsc',
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isVideo) {
+                    new lz.videoFileExplorerItem(roomHome.content,{
+                                            isFolder:false,
+                                            isVideo:true,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_video_rsc',
+                                            flvHeight:fileExplorerItem.flvHeight,
+                                            flvWidth:fileExplorerItem.flvWidth,
+                                            refObjListRoot:this
+                                        });
+                } else if (fileExplorerItem.isStoredWmlFile) { 
+                	new lz.wmlFileExplorerItem(roomHome.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_wml_rsc',
+                                            isWmlFile: true,
+                                            refObjListRoot:this                	
+            							});
+                } else if (fileExplorerItem.isChart) { 
+                  new lz.wmlFileExplorerItem(roomHome.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_chart_rsc',
+                                            isChart:true,
+                                            refObjListRoot:this                 
+                          });
+           		}
+            }
+        ]]>
+    </method>
+    
+    <method name="clearContent">
+        <![CDATA[
+            for (var eg in this._filearea._contentarea.subviews) {
+                this._filearea._contentarea.subviews[eg].destroy();
+            }
+        ]]>
+    </method>
+    
+    <!--
+        Borders
+     -->
+               
+    <view name="_border2" x="0" y="${ 33 + parent._documentsTabs.height }" width="$once{ parent.width }" 
+          height="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />     
+    
+    <!--
+        Documents - Tabbar
+     --> 
+    <documentsTabBar name="_documentsTabs" y="14" width="$once{ parent.width }"
+                    visibility="hidden" />
+    	
+    
+    <!--
+        File Tree Content Tabbar
+     --> 
+     
+    <view name="_fileBar" layout="axis:x" x="0" y="${ 14 + parent._documentsTabs.height }">
+        <baseChooseIconView labelid="702" height="20" width="19" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }"
+                            resourceN="file_explorer_add_file_rsc">
+            <handler name="onclick">
+                if ($debug) Debug.write("Upload File");
+                parent.parent.addFile();
+            </handler>
+        </baseChooseIconView>
+        <baseChooseIconView labelid="703" height="20" width="19" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }"
+                            resourceN="file_explorer_add_folder_rsc" >
+            <handler name="onclick">
+                if ($debug) Debug.write("Add Folder");
+                parent.parent.addFolder();
+            </handler>
+        </baseChooseIconView>
+        <baseChooseIconView labelid="704" height="20" width="19" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }"
+                            resourceN="file_explorer_reload_rsc" >
+            <handler name="onclick">
+                if ($debug) Debug.write("Refresh Folder");
+                parent.parent.loadFiles();
+            </handler>
+        </baseChooseIconView>
+        <view bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="20" width="1" />
+    </view>
+    
+    <!--
+        File Tree Content Trashbar
+     --> 
+     
+    <view name="_trashBar" layout="axis:x" x="$once{ parent.width - 20 }" 
+          y="${ 14 + parent._documentsTabs.height }">
+        <baseChooseIconView name="_trashIcon" labelid="705" height="20" width="19" 
+                         resourceN="file_explorer_trash_rsc" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }">
+            <attribute name="isTrashCan" value="true" type="boolean" />
+            <handler name="onclick">
+                if ($debug) Debug.write("Delete Folder and Files");
+            </handler>
+            <handler name="onmousetrackover">
+                //if ($debug) Debug.write("onmousetrackover");
+                canvas.currentImagesListdraw.currentDragItem.sendOverItem(this);
+                this.onmouseover.sendEvent();
+            </handler>
+            <handler name="onmousetrackout">
+                //if ($debug) Debug.write("onmousetrackout");
+                canvas.currentImagesListdraw.currentDragItem.sendOutItem(this);
+                this.onmouseout.sendEvent();
+            </handler>
+            <handler name="onmousetrackup">
+                if ($debug) Debug.write("onmousetrackup");
+                this.onmouseout.sendEvent();
+            </handler> 
+        </baseChooseIconView>
+        <view bgcolor="0xE0E0E0" height="20" width="1" />
+    </view>
+    
+    <!--
+        File Tree Content
+     --> 
+    
+    <view name="_filearea" x="1" y="${ 34 + parent._documentsTabs.height }" clip="true"
+          height="${ parent.height - 35 - parent._documentsTabs.height - parent._userSpace.height }" 
+          width="$once{ parent.width }">
+        
+        <attribute name="currentTrackGroupName" value="fileExplorer" type="string" />
+        
+        <attribute name="currentDragItem" value="null" />
+        
+        <handler name="oninit">
+            canvas.currentImagesListdraw = this;
+        </handler>
+        
+        <view name="_contentarea" layout="axis:y;inset:1" />
+        
+        <om_vscrollbar name="_scrollbar" />
+        <om_hscrollbar name="_hscrollbar" />
+    </view>
+    
+    <view name="_userSpace" height="40" valign="bottom" width="$once{ parent.width }">
+    	
+    	<labelText name="_userHomeSizeLabel" labelid="923" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" />
+    	
+    	<labelText name="_userHomeSize" align="right" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" />
+    	
+    	<labelText name="_roomHomeSizeLabel" labelid="924" y="20" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" />
+    	
+    	<labelText name="_roomHomeSize" align="right" y="20" fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" />
+    	
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/library.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/library.lzx
new file mode 100644
index 0000000..d7ec4ec
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/library.lzx
@@ -0,0 +1,85 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="presentations/" />
+    <include href="tabbar/" />
+    
+    <include href="treeitems/" />
+    <include href="dynamicFileName.lzx" />
+    <include href="dragItemFileExplorer.lzx" />
+    <include href="fileExplorer.lzx" />
+
+    <resource name="drag_n_drop_rsc">
+    	<!-- APL Author sebawagner --> 
+        <frame src="resources/icon_drag_no.png" />
+        <!-- APL Author sebawagner --> 
+        <frame src="resources/icon_drag_add.png" />
+    </resource>    
+
+    <resource name="icon_folder_pre_rsc">
+    	<!-- APL Author sebawagner --> 
+        <frame src="resources/icon_folder_pre_closed_rsc.png" />
+        <!-- APL Author sebawagner --> 
+        <frame src="resources/icon_folder_pre_open_rsc.png" />
+    </resource>
+    
+    <resource name="icon_folder_rsc">
+    	<!-- FamFam Icon Set -->
+        <frame src="resources/folder.png" />
+        <frame src="resources/folder.png" />
+    </resource>
+    
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_video_rsc" src="resources/film.png" />	
+    <!-- FamFam Icon Set -->
+    <resource name="file_explorer_add_file_rsc" src="resources/add.png" />
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_add_folder_rsc" src="resources/folder_add.png" />
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_reload_rsc" src="resources/arrow_refresh_small.png" />
+    <!-- 
+    WPZOOM Creative Commons Attribution-ShareAlike 3.0 Unported License.
+    http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/
+     -->
+    <resource name="file_explorer_trash_rsc" src="resources/trash.png" />
+    <!-- APL Author sebawagner -->
+    <resource name="file_explorer_close_rsc" src="resources/remove_item.png" />
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_view_tree_rsc" src="resources/folder_explore.png" />   
+    
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_image_rsc" src="resources/photo.png" />
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_document_rsc" src="resources/report.png" />
+    <!-- FamFam Icon Set --> 
+    <resource name="file_explorer_wml_rsc" src="resources/map.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="file_explorer_chart_rsc" src="resources/chart_pie.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="file_explorer_folder_rsc" src="resources/folder.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="file_explorer_folder_network_rsc" src="resources/world_link.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="file_explorer_folder_home_rsc" src="resources/house_link.png" />
+    
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/baseListPresentationItemExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/baseListPresentationItemExplorer.lzx
new file mode 100644
index 0000000..361ca67
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/baseListPresentationItemExplorer.lzx
@@ -0,0 +1,79 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="baseListPresentationItemExplorer" extends="view" height="110" width="$once{ parent.width }" 
+    bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" focusable="true">
+    
+    <attribute name="uploadmodul" value="" type="string"/>
+    <attribute name="selectable" value="true" type="boolean" />
+    <attribute name="isselected" value="false" type="boolean" />
+    <attribute name="isoriginal" value="false" type="boolean" />
+    
+    <attribute name="uploadmoduleimgfolder" value="$once{ canvas.uploadmoduleimgfolder }" type="string" />
+    
+	<method name="formatURL" args="filename">
+	<![CDATA[
+		var downloadurl = canvas.getUrl() + 'DownloadHandler?' +
+			'fileName=' + encodeURIComponent(filename) +
+			'&moduleName=' + this.uploadmodul +
+			'&parentPath=' + encodeURIComponent(this.uploadmoduleimgfolder + '/') +
+			'&room_id=files' +
+			'&sid=' + canvas.sessionId;
+		////Debug.write("downloadurl: ",downloadurl);
+		return downloadurl;
+	]]>
+	</method>    
+
+    <handler name="onmouseover">
+        setCurrentMouseWheelObject(this.parent.parent._scrollbar);
+        if (!this.isselected){
+            this.setAttribute('bgcolor',canvas.getThemeColor('baseMouseOvercolorizer'));
+        }
+    </handler> 
+    <handler name="onmouseout">
+        disableCurrentMouseWheelObject();
+        if (!this.isselected){
+            this.setAttribute('bgcolor',canvas.getThemeColor('mainBackgroundColor'));
+        }
+    </handler>  
+       
+    <handler name="onfocus">
+        this.selectItem();
+    </handler>
+    <handler name="onblur">
+        this.disselectItem();
+    </handler>
+
+    <handler name="onkeyup" args="k"> 
+        //Debug.write("key " + k + " up");
+    </handler>
+    
+    <method name="selectItem">
+        //this.parent.selectItem(this);
+    </method>
+    <method name="disselectItem">
+        //this.parent.selectItem(this);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/imageListInnerTableExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/imageListInnerTableExplorer.lzx
new file mode 100644
index 0000000..43aded1
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/imageListInnerTableExplorer.lzx
@@ -0,0 +1,156 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="imageListInnerTableExplorer" extends="view" width="${ parent.width-2 }" 
+    height="${ parent.height-2 }" 
+	bgcolor="white" x="1" y="1" clip="true">
+    
+    <view name="_listcontent" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" width="$once{ parent.width }" >
+        <simplelayout name="_layout" axis="y" spacing="2" inset="1" />
+        
+        <!--
+	  	<netRemoteCallHib name="deleteFile" funcname="fileservice.deleteFile" remotecontext="$once{ canvas.thishib }" >   
+			<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+	  		<netparam><method name="getValue">return parent.String1;</method></netparam>
+        	<netparam><method name="getValue">return canvas.uploadmoduleimg;</method></netparam>
+			<netparam><method name="getValue">return parent.String2;</method></netparam>
+			<netparam><method name="getValue">return hib.currentroomid;</method></netparam>        	
+	        <handler name="ondata" args="value">	
+	        	//Debug.write("  deleteFile: ",value);  
+				//Debug.write("  deleteFile: ",this.String1);    
+				//Debug.write("  deleteFile: ",this.String2);   
+		  		var tempSendArray = new Array ();
+		  		tempSendArray[0] = 'fileslist';
+		  		var nowTime = new Date();
+		  		var datumsString = nowTime.getHours()+':'+nowTime.getMinutes();
+		  		tempSendArray[1] = datumsString;
+	  			//Debug.write("Setting Message");
+	  			tempSendArray[2] = 'newfile';
+	  			tempSendArray[3] = canvas.currentusename;
+		  		//Debug.write("send: ",tempSendArray);
+		  		canvas.objMessage = tempSendArray;
+		  		hib.sendMessage.doCall();         	          				
+	        </handler>	
+	  	</netRemoteCallHib> 
+	  	 -->	
+		
+		<method name="getconfirmationscode">
+			var g = canvas.getUserData();
+			 if (g["wmlfile"]==null) {
+				 g["wmlfile"]=new Array();
+				 g["wmlfile"]["clearField"]=false;
+				 g["wmlfile"]["askagainclear"]=true;
+				 canvas.setUserData(g);
+			 }
+			 return g["wmlfile"];
+		</method>
+		
+		<method name="resetDefaultConfirmations">
+			var g = canvas.getUserData();
+			 if (g["wmlfile"]==null) g["wmlfile"]=new Array();
+			 g["wmlfile"]["clearField"]=false;
+			 g["wmlfile"]["askagainclear"]=true;
+			 canvas.setUserData(g);
+	
+		</method>	
+		
+		<method name="sendConfirmation" args="yesno,askagain" >
+			
+			//Debug.write("clear yesno,askagain: ",yesno,askagain);
+			//can only be true in this case
+		
+			 var g = canvas.getUserData();
+			 if (g["wmlfile"]==null) g["wmlfile"]=new Array();
+			 g["wmlfile"]["clearField"]=yesno;
+			 g["wmlfile"]["askagainclear"]=!askagain;
+			 canvas.setUserData(g);
+	
+			 if (yesno){
+				 //Debug.write("clear field!!");
+				canvas._drawarea.setModus('plain');
+				this.loadWmlObject.doCall();
+			 }
+		</method>				
+		
+		<method name="loadWmlObjectConfirm">
+			<![CDATA[
+			var storedImageDate = this.getconfirmationscode();
+			//Debug.write(" g[wmlfile] ",storedImageDate);
+			if (storedImageDate["clearField"] && !storedImageDate["askagainclear"]){
+				canvas._drawarea.setModus('plain');
+				this.loadWmlObject.doCall();
+			} else if (!storedImageDate["askagainclear"] && !storedImageDate["clearField"]){
+				//this case will never happen
+				this.loadWmlObject.doCall();
+			} else if (storedImageDate["askagainclear"]){
+				new lz.confirmationSingle(canvas.main_content._content.inner,{labelid:210,labeliderror:211,refObj:this});
+			} else {
+				new lz.confirmationSingle(canvas.main_content._content.inner,{labelid:210,labeliderror:211,refObj:this});
+			}
+			]]>
+		</method>
+		
+	  	<netRemoteCallHib name="loadWmlObject" funcname="fileservice.loadWmlObject" remotecontext="$once{ canvas.thishib }" >   
+			<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+			<netparam><method name="getValue">return hib.currentroomid;</method></netparam>        	
+			  <netparam><method name="getValue">return parent.String1;</method></netparam>
+	        <handler name="ondata" args="value">	
+				<![CDATA[
+					if ($debug) Debug.write("  loadwmlObjectToStage ",value); 
+					canvas._drawarea.loadwmlObjectToStage(value,this.String1,hib.currentroomid,hib.conferencedomain,true,false);
+				]]>       	     				
+	        </handler>	
+	  	</netRemoteCallHib>
+        
+        
+        <method name="loadSWFPresentation" args="url,fileName,moduleName,parentPath,room,domain,slideNumber">
+            if ($debug) Debug.write("loadSWFPresentation");
+            canvas._drawarea.loadSWFPresentationSynced(url,fileName,moduleName,parentPath,room,domain,slideNumber,"");
+        </method>
+        
+        <method name="checkSWFPresentation" args="url,fileName,moduleName,parentPath,room,domain,slideNumber">
+            if ($debug) Debug.write("checkSWFPresentation");
+            return canvas._drawarea.checkSWFPresentation(url,fileName,moduleName,parentPath,room,domain,slideNumber);
+        </method>
+        
+        <method name="checkForOriginal" args="slideNumber">
+            <![CDATA[
+                var tWhiteBoard = false;
+                for (var i=0;i<this.subviews.length;i++){
+                    if (this.subviews[i].isoriginal){
+                        tWhiteBoard = this.subviews[i].checkSWFPresentation(slideNumber);
+                        if (!tWhiteBoard) {
+                            this.subviews[i].addSWFPresentation(slideNumber);
+                            break;
+                        }
+                    }
+                }
+                if ($debug) Debug.write("tWhiteBoard: ",tWhiteBoard);
+            ]]>
+        </method>
+		 	 
+    </view>
+
+    <om_vscrollbar name="_scrollbar" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/library.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/library.lzx
new file mode 100644
index 0000000..c302cc9
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+ 
+	<include href="imageListInnerTableExplorer.lzx" />
+    
+    <include href="baseListPresentationItemExplorer.lzx" />
+    <include href="listPresentationThumbExplorer.lzx" />
+    <include href="listPresentationFilePDFExplorer.lzx" />
+    <include href="listPresentationFileOrigExplorer.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFileOrigExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFileOrigExplorer.lzx
new file mode 100644
index 0000000..da90cb4
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFileOrigExplorer.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="listPresentationFileOrigExplorer" extends="listPresentationFilePDFExplorer">
+    
+    <attribute name="originalName" value="" type="string"/>
+    
+    <view name="_filesave_icon_original" x="120" y="6" resource="_filesave_icon_original_rsc"
+        onmouseover="" onmouseout="">
+        <handler name="onclick">
+            this.parent.loadFileByName(this.parent.originalName.filename);
+        </handler>
+        <labelTooltip labelid="247" />
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFilePDFExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFilePDFExplorer.lzx
new file mode 100644
index 0000000..658ecb7
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationFilePDFExplorer.lzx
@@ -0,0 +1,64 @@
+<?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.
+  
+-->
+<library>
+
+<class name="listPresentationFilePDFExplorer" extends="baseListPresentationItemExplorer" selectable="false">
+    
+    
+    <attribute name="pdfname" value="null" />
+    <attribute name="swfName" value="null" />
+    
+    <attribute name="fileExplorerItemId" value="-1" type="number" />
+    
+    <method name="loadFileByName" args="filename">
+    	<![CDATA[
+    		var lzURLToLoad = this.formatURL(filename)+"&fileExplorerItemId="+this.fileExplorerItemId;
+    		if ($debug) Debug.write("lzURLToLoad ",lzURLToLoad);
+        	lz.Browser.loadURL(lzURLToLoad,'_parent');
+        ]]>
+    </method>
+
+    <handler name="onclick">
+        this.parent.loadSWFPresentation(this.formatURL(this.swfName.filename),this.swfName.filename,this.uploadmodul,this.uploadmoduleimgfolder,'files',hib.conferencedomain,1);
+    </handler>
+    
+    <method name="checkSWFPresentation" args="slideNumber">
+        return this.parent.checkSWFPresentation(this.formatURL(this.swfName.filename),this.swfName.filename,this.uploadmodul,this.uploadmoduleimgfolder,'files',hib.conferencedomain,slideNumber);
+    </method>    
+    
+    <method name="addSWFPresentation" args="slideNumber">
+        this.parent.loadSWFPresentation(this.formatURL(this.swfName.filename),this.swfName.filename,this.uploadmodul,this.uploadmoduleimgfolder,'files',hib.conferencedomain,slideNumber);
+    </method>    
+    
+    <view name="_filesave_icon_pdf" x="150" y="6" resource="_filesave_icon_pdf_rsc">
+        <handler name="onclick">
+            //Debug.write("this.parent.pdfname: ",this.parent.pdfname.filename);
+            //Debug.write("this.parent: ",this.parent);
+            this.parent.loadFileByName(this.parent.pdfname.filename);
+        </handler>
+        <labelTooltip labelid="248" />
+    </view>
+        
+    <labelText name="_Text" y="40" labelid="249" width="240" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationThumbExplorer.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationThumbExplorer.lzx
new file mode 100644
index 0000000..2640814
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/items/listPresentationThumbExplorer.lzx
@@ -0,0 +1,42 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="listPresentationThumbExplorer" extends="baseListPresentationItemExplorer">
+    
+    <attribute name="thumbname" value="" type="string"/>
+    <attribute name="no" value="" type="string"/>
+    
+    <handler name="oninit">
+        this._thumb.setAttribute('src',this.formatURL(this.thumbname));
+    </handler>
+    
+    <handler name="onclick">
+        this.parent.checkForOriginal(Number(no));
+    </handler>    
+    
+    <image name="_thumb" x="10" y="1"/>
+    <text name="_thumbText" x="120" text="$once{ this.parent.no }" fontsize="10"
+        width="240" multiline="true"/>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/library.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/library.lzx
new file mode 100644
index 0000000..9cf7dd1
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="items/" />
+	<include href="presentationFilesList.lzx" />
+    <include href="presentationPreview.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationFilesList.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationFilesList.lzx
new file mode 100644
index 0000000..bddaf0e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationFilesList.lzx
@@ -0,0 +1,98 @@
+<?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.
+  
+-->
+<library>
+<!--  -->
+
+<class name="presentationFilesList" extends="view" 
+       x="0" y="40" height="${ parent.height-40 }" 
+        width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+    
+    <event name="onclose" />
+    
+	<view width="$once{ parent.width-2 }" height="${ parent.height-2 }" 
+		  x="1" y="1" bgcolor="white" />
+
+	<attribute name="uploadmodul" value="$once{ canvas.uploadmoduleimg }" type="string" />
+
+    <method name="addPresentationThumb" args="thumbName,no">
+        new lz.listPresentationThumbExplorer(this._table._listcontent,{isExplorer:true,
+        					uploadmodul:this.uploadmodul,thumbname:thumbName,no:no});
+    </method>
+    
+    <method name="addListpresentationFileOrig" args="originalName,pdfname,swfName,fileExplorerItemId">
+    	if ($debug) Debug.write("addListpresentationFileOrig ",originalName,pdfname,swfName,fileExplorerItemId);
+        new lz.listPresentationFileOrigExplorer(this._table._listcontent,{
+	        				isExplorer:true,
+	        				isoriginal:true,
+	        				uploadmodul:this.uploadmodul,
+	        				originalName:originalName,
+	        				pdfname:pdfname,
+	        				swfName:swfName,
+	        				fileExplorerItemId:fileExplorerItemId
+        				});
+    </method>
+    
+    <method name="addListpresentationFilePDF" args="pdfname,swfName,fileExplorerItemId">
+    	if ($debug) Debug.write("addListpresentationFilePDF ",originalName,pdfname,swfName,fileExplorerItemId);
+        new lz.listPresentationFilePDFExplorer(this._table._listcontent,{
+	        				isExplorer:true,
+	        				isoriginal:true,
+	        				uploadmodul:this.uploadmodul,
+	        				pdfname:pdfname,
+	        				swfName:swfName,
+	        				fileExplorerItemId:fileExplorerItemId
+        				});
+    </method>
+	    
+    <method name="resetList">
+    	this._table.destroy();
+    	new lz.imageListInnerTableExplorer(this,{name:'_table'});
+    	this._hideForNonMods.bringToFront();
+    </method>
+    
+    <method name="highlightItem" args="obj">
+    	<![CDATA[
+    		for (var i=0;i<this._table._listcontent.subviews.length;i++){
+    			if (!this._table._listcontent.subviews[i].isPpt){
+                    //Debug.write("this._table._listcontent.subviews[i]: ",this._table._listcontent.subviews[i]);
+    				this._table._listcontent.subviews[i]._thumbText.setAttribute('text','<font>'+this._table._listcontent.subviews[i].filenamePure+'</font>');
+                }
+    		}
+    		obj._thumbText.setAttribute('text','<font><b>'+obj.filenamePure+'</b></font>');
+    	]]>
+    </method>
+    
+	<imageListInnerTableExplorer name="_table" y="20"
+						 height="${ parent.height-22 }" />
+	
+    <view name="_trashBar" layout="axis:x" x="$once{ parent.width - 20 }" y="0">
+        <baseChooseIconView name="_trashIcon" labelid="718" height="20" width="19" 
+                         resourceN="file_explorer_close_rsc">
+            <handler name="onclick">
+                parent.parent.onclose.sendEvent();
+            </handler>
+        </baseChooseIconView>
+        <view bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" height="20" width="1" />
+    </view>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationPreview.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationPreview.lzx
new file mode 100644
index 0000000..fed200f
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/presentations/presentationPreview.lzx
@@ -0,0 +1,93 @@
+<?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.
+  
+-->
+<library>
+
+<class name="presentationPreview" extends="view" x="1" y="33" clip="true"
+        height="${ parent.height - 34 }" width="$once{ parent.width - 2 }">
+	
+	
+	<attribute name="documentObj" value="null" />
+	<attribute name="refObjList" value="null" />
+	
+	<attribute name="miniButton" value="null" />
+	
+	<handler name="oninit">
+		this.addFolderSequence();
+		if ($debug) Debug.write("presentationPreview 1 ",this.width);
+		if ($debug) Debug.write("presentationPreview 2 ",this.height);
+		this.miniButton = this.refObjList._documentsTabs.addItem(this);
+	</handler>
+	
+	<method name="addFolderSequence">
+        <![CDATA[
+        if ($debug) Debug.write("foldername 1 ",this.documentObj.fileHash);
+        if ($debug) Debug.write("foldername 2 ",this.documentObj.fileExplorerItemId);
+        canvas.uploadmoduleimgfolder = '/'+this.documentObj.fileHash;
+        this.getPresentationPreviewFileExplorer.doCall();
+        ]]>
+    </method>
+    
+    <netRemoteCallHib name="getPresentationPreviewFileExplorer" funcname="fileservice.getPresentationPreviewFileExplorer" 
+        remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue">return parent.parent.documentObj.fileHash;</method></netparam>
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("getPresentationPreviewFileExplorer -1-: ",value);
+            if ($debug) Debug.write("getPresentationPreviewFileExplorer -3-: ",parent.documentObj.fileHash);
+            parent.renderItems(value);
+        </handler>
+    </netRemoteCallHib>     
+    
+    <method name="renderItems" args="presentationObject" >
+        if ($debug) Debug.write("this: ",this);
+        if ($debug) Debug.write("presentationObject: ",presentationObject);
+        <![CDATA[
+            
+            if ($debug) Debug.write("presentationObject: ",presentationObject);
+        
+            if (presentationObject.pdfDocument==null){
+                //Is PDF only
+                //Debug.write("Is PDF only");
+                this._imageslistdraw.addListpresentationFilePDF(presentationObject.originalDocument,presentationObject.swfDocument,this.documentObj.fileExplorerItemId);
+            } else {
+                //Is original Document + PDF-Document
+                //Debug.write("Is original Document + PDF-Document");
+                this._imageslistdraw.addListpresentationFileOrig(presentationObject.originalDocument,presentationObject.pdfDocument,presentationObject.swfDocument,this.documentObj.fileExplorerItemId);
+            }
+        
+            for (var eg=0;eg<presentationObject.thumbs.thumbs.length;eg++){
+                ////Debug.write(presentationObject.thumbs.thumbs[eg].filename);
+                this._imageslistdraw.addPresentationThumb(presentationObject.thumbs.thumbs[eg].filename,(eg+1));
+            }
+        
+        ]]>   
+    </method> 
+    
+    <presentationFilesList name="_imageslistdraw" x="0" y="0" width="$once{ parent.width }"
+    				height="${ parent.height }" >
+    	<handler name="onclose">
+    		parent.miniButton.close();
+    	</handler>
+    </presentationFilesList>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/add.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/add.png
new file mode 100644
index 0000000..6332fef
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/arrow_refresh_small.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/arrow_refresh_small.png
new file mode 100644
index 0000000..d3087df
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/arrow_refresh_small.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/chart_pie.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/chart_pie.png
new file mode 100644
index 0000000..fe00fa0
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/chart_pie.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/film.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/film.png
new file mode 100644
index 0000000..b0ce7bb
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/film.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder.png
new file mode 100644
index 0000000..784e8fa
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_add.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_add.png
new file mode 100644
index 0000000..529fe8f
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_blue_open.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_blue_open.png
new file mode 100644
index 0000000..2c55c56
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_blue_open.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_explore.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_explore.png
new file mode 100644
index 0000000..0ba9391
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/folder_explore.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/house_link.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/house_link.png
new file mode 100644
index 0000000..be2c271
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/house_link.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_add.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_add.png
new file mode 100644
index 0000000..a12ae41
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_no.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_no.png
new file mode 100644
index 0000000..784df30
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_drag_no.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_closed_rsc.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_closed_rsc.png
new file mode 100644
index 0000000..a72275c
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_closed_rsc.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_open_rsc.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_open_rsc.png
new file mode 100644
index 0000000..1e1b042
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/icon_folder_pre_open_rsc.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/map.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/map.png
new file mode 100644
index 0000000..f90ef25
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/map.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/photo.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/photo.png
new file mode 100644
index 0000000..6c2aaaa
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/photo.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/remove_item.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/remove_item.png
new file mode 100644
index 0000000..5031ff4
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/remove_item.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/report.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/report.png
new file mode 100644
index 0000000..779ad58
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/report.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/trash.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/trash.png
new file mode 100644
index 0000000..b92592b
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/trash.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/world_link.png b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/world_link.png
new file mode 100644
index 0000000..b8edc12
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/resources/world_link.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
new file mode 100644
index 0000000..5b4e828
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/baseChooseIconView.lzx
@@ -0,0 +1,52 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseChooseIconView" extends="view" width="24" height="24" 
+       bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"  >
+    
+    <attribute name="resourceN" value="" type="string" />
+    <attribute name="isselected" value="false" type="boolean" />
+    <attribute name="labelid" value="0" type="number" />
+    
+    <handler name="oninit">
+        if (this.isselected){
+            this.onclick.sendEvent();
+        }
+    </handler> 
+    
+    <handler name="onmouseover">
+        this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+    </handler>
+    
+    <handler name="onmouseout">
+        this._bg.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+    </handler>
+    
+    <view name="_bg" x="1" y="1" width="$once{ parent.width-1 }" 
+          height="$once{ parent.height-2 }" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
+    
+    <view x="2" y="2" resource="$once{ parent.resourceN }" />
+             
+    <labelTooltip labelid="$once{ parent.labelid }" inittwice="true" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsLoaderIcon.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsLoaderIcon.lzx
new file mode 100644
index 0000000..60c8787
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsLoaderIcon.lzx
@@ -0,0 +1,71 @@
+<?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.
+  
+-->
+<library>
+
+<class name="documentsLoaderIcon" extends="view" height="20" width="19" 
+       bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"  >
+    
+    <attribute name="resourceN" value="" type="string" />
+    <attribute name="isselected" value="false" type="boolean" />
+    <attribute name="labeltext" value="" type="string" />
+    
+    <attribute name="refObj" value="null" />
+    
+    <method name="hide">
+        this._bg.setAttribute("height",this.height-2);
+        parent.parent.hideSelection(this);
+    </method>
+    
+    <method name="setSelection">
+    	this._bg.setAttribute("height",this.height);
+    </method>
+    
+    <handler name="onclick">
+        parent.parent.sendSelection(this);
+    </handler>
+    
+    <handler name="oninit">
+        if (this.isselected){
+            this.onclick.sendEvent();
+        }
+    </handler> 
+    
+    <method name="close">
+    	parent.parent.close(this);
+    </method>
+    
+    <handler name="onmouseover">
+        this._bg.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+    </handler>
+    
+    <handler name="onmouseout">
+        this._bg.setAttribute("bgcolor",0xFFFFFF);
+    </handler>
+    
+    <view name="_bg" x="1" y="1" width="$once{ parent.width-1 }" 
+          height="$once{ parent.height-2 }" bgcolor="0xFFFFFF" />
+    
+    <view x="2" y="2" resource="$once{ parent.resourceN }" />
+             
+    <labelTooltip text="$once{ parent.labeltext }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsTabBar.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsTabBar.lzx
new file mode 100644
index 0000000..3f4d6fc
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/documentsTabBar.lzx
@@ -0,0 +1,89 @@
+<?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.
+  
+-->
+<library>
+
+<class name="documentsTabBar" extends="view" height="0" y="14" layout="axis:x" >
+    
+    <attribute name="currentItem"/>
+    
+    <method name="sendSelection" args="itemRef">
+        this.hideAll();
+        itemRef.setSelection();
+        if (itemRef.refObj == null) {
+            parent._filearea.setAttribute("visibility","visible");
+            parent._trashBar.setAttribute("visibility","visible");
+            parent._fileBar.setAttribute("visibility","visible");
+            parent._border2.setAttribute("visibility","visible");
+        } else {
+        	//if ($debug) Debug.write(itemRef.refObj);
+            itemRef.refObj.setAttribute("visibility","visible");
+        }
+    </method>
+    
+    <method name="hideSelection" args="itemRef">
+        if (itemRef.refObj == null) {
+            parent._filearea.setAttribute("visibility","hidden");
+            parent._trashBar.setAttribute("visibility","hidden");
+            parent._fileBar.setAttribute("visibility","hidden");
+            parent._border2.setAttribute("visibility","hidden");
+        } else {
+            itemRef.refObj.setAttribute("visibility","hidden");
+        }
+    </method>
+    
+    <method name="close" args="buttonRef">
+    	buttonRef.refObj.destroy();
+    	buttonRef.destroy();
+    	this._content.subviews[this._content.subviews.length-1].onclick.sendEvent();
+    </method>
+    
+    <method name="hideAll">
+        <![CDATA[
+            for (var eg in this._content.subviews) {
+                this._content.subviews[eg].hide();
+            }
+        ]]>
+    </method>
+    
+    <method name="addItem" args="tab">
+        var t = new lz.documentsLoaderIcon(this._content,{
+                   resourceN:tab.documentObj.fileIcon,
+                   refObj:tab,
+                   labeltext:tab.documentObj.fileName
+                });
+        t.onclick.sendEvent();
+        return t;
+    </method>
+    
+    <view name="_border2" x="0" y="19" options="ignorelayout: true"
+          width="$once{ parent.width }" height="2" 
+          bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" /> 
+           
+    <view name="_content" layout="axis:x">  
+        <documentsLoaderIcon name="_explorerTreeView" 
+            resourceN="file_explorer_view_tree_rsc" height="20" width="19" 
+            labeltext="$once{ canvas.getLabelName(717) }" />
+    </view>    
+    <view name="_border" height="20" width="1" 
+        bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/library.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/library.lzx
new file mode 100644
index 0000000..7810c74
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/tabbar/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="baseChooseIconView.lzx" />
+    <include href="documentsLoaderIcon.lzx" />
+    <include href="documentsTabBar.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
new file mode 100644
index 0000000..647c45d
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx
@@ -0,0 +1,579 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseFileExplorerItem" extends="view">
+	
+	<attribute name="refObjListRoot" value="null"/>
+	
+	<attribute name="isRoot" value="false" type="boolean" />
+	
+	<attribute name="fileIcon" type="string" value="string" />
+	
+	<attribute name="open" value="false" type="boolean" />
+	
+	<attribute name="fileExplorerItemId" value="0" type="number" />
+	<attribute name="isOwner" value="false" type="boolean" />
+	
+	<attribute name="isFolder" value="true" type="boolean" />
+	<attribute name="isImage" value="false" type="boolean" />
+	<attribute name="isPresentation" value="false" type="boolean" />
+	<attribute name="isVideo" value="false" type="boolean" />
+	
+	<attribute name="fileName" value="" type="string" />
+	<attribute name="fileHash" value="" type="string" />
+	
+	<attribute name="selected" value="false" type="boolean"/>
+	
+	<attribute name="singleClickDelegate" value="null" />
+	<attribute name="singleClickStarted" value="false" type="boolean" />
+	
+	<attribute name="isMouseDownDragAction" value="false" type="boolean"/>
+	
+	<!-- If this is true, then this item has been drag-n-droped and it makes no 
+	       sense to handle any single or double click event -->
+	<attribute name="mouseDownClickUsed" value="false" type="boolean" />
+	<attribute name="mouseDownClickDelegate" value="null" />
+	
+	<attribute name="isTrashCan" value="false" type="boolean" />
+	
+	<handler name="oninit">
+		this.singleClickDelegate = new LzDelegate( this, "doSingleClick" );
+		this.resetClickDelegate = new LzDelegate( this, "doResetSingleClick" );
+		this.mouseDownClickDelegate = new LzDelegate( this, "doMouseDownClick" );
+		if (this.isFolder) {
+		    lz.Track.register(this._fileName, canvas.currentImagesListdraw.currentTrackGroupName);
+		}
+	</handler>
+	
+	<method name="doOpen">
+		this.open = true;
+		if (this.isFolder) {
+    		this.icon_folder_pre.setAttribute("frame",2);
+    		this.content.setAttribute("visibility","visible");
+			this._folderIcon.setAttribute("frame",2);
+		    this.loadFiles();
+		}
+	</method>
+	
+	<method name="doClose">
+		this.open = false;
+		if (this.isFolder) {
+            this.icon_folder_pre.setAttribute("frame",1);
+            this.content.setAttribute("visibility","hidden");
+            this._folderIcon.setAttribute("frame",1);
+		}
+	</method>
+	
+    <method name="doMouseDownClick" args="itemObj">
+    	<![CDATA[
+			if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+	    	this.mouseDownClickUsed = true;
+	    	if ($debug) Debug.write("mouseDown CLICK Start Drag And Drop");
+	    	new lz.dragItemFileExplorer(canvas,{
+	    		        dragItemResource:this.fileIcon,
+	            	    refObj:this,
+	                    x:canvas.getMouse('x'),
+	                    y:canvas.getMouse('y')
+	            	});
+        ]]>
+    </method>
+    
+    <!--
+    	Check if this is the Owner
+     -->
+    <method name="checkForIsOwner">
+    	if (this.isRoot) {
+    		return this.isOwner;
+    	} else {
+    		return parent.parent.checkForIsOwner();
+    	}
+    </method>
+    
+    <!--
+    	Check if the user tries to move a file in its own tree,
+    	see moveFile
+     -->
+    <method name="checkForIsChild" args="compareFileExplorerItemId">
+    	if (this.isRoot) {
+    		return false;
+    	} else {
+    		if (this.fileExplorerItemId == compareFileExplorerItemId) {
+    			return true;
+    		} else {
+    			return parent.parent.checkForIsChild(compareFileExplorerItemId);
+    		}
+    	}
+    </method>
+    
+    <method name="deleteFile" args="labelid">
+    	<![CDATA[
+			if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+	    	new lz.confirmationSingle(canvas,{
+	                           refObj:this,
+	                           labelid:labelid,
+	                           labeliderror:713,
+	                           showCheckBox:false
+	                        });
+    	]]>
+    </method>
+    
+    <method name="sendConfirmation" args="bool,askAgain">
+        if (bool) {
+            this.deleteFileOrFolder();
+        }
+    </method>
+    
+    <method name="deleteFileOrFolder">
+        <![CDATA[
+			if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+	    	
+            if ($debug) Debug.write("deleteFileOrFolder HTTP 1: ");
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/deleteFileOrFolderSelf?'
+                            +'SID='+canvas.sessionId
+                            +'&fileExplorerItemId='+this.fileExplorerItemId;
+            
+            this.deleteFileOrFolderSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("deleteFileOrFolderSelf doRequest ",downloadurl);
+            this.deleteFileOrFolderSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="deleteFileOrFolderSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                if ($debug) Debug.write("deleteFileOrFolder: ",d);
+                parent.parent.parent.doOpen();
+                parent.refObjListRoot._selected = null;
+                parent.refObjListRoot.parentFolderId = -2;
+            ]]>
+        </handler>
+    </dataset>
+    
+	<method name="doSingleClick" args="itemObj">
+		this.singleClickStarted = false;
+		//Cannot change name for Root Icons
+		if (this.isRoot) {
+            return;
+        }
+		this.addOrUpdateFolderName(this.fileExplorerItemId,false);
+	</method>
+	
+	<method name="doResetSingleClick" args="itmeObj">
+		this.singleClickStarted = false;
+	</method>
+	
+	<method name="addFile">
+		this.refObjListRoot.selectItem(this);
+		this.refObjListRoot.addFile();
+	</method>
+	
+	<method name="addFolder">
+		<![CDATA[
+			if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+	
+			if (this.isFolder) {
+				if ($debug) Debug.write("NEW this.fileExplorerItemId INTO ",this);
+				if ($debug) Debug.write("NEW this.fileExplorerItemId ",this.fileExplorerItemId);
+				if (this["icon_folder_pre"]) {
+	    			this.icon_folder_pre.setAttribute("frame",2);
+	                this.content.setAttribute("visibility","visible");
+	                this._folderIcon.setAttribute("frame",2);
+	        		var t = new lz.folderFileExplorerItem(this.content,{
+	        			            isOwner:this.isOwner,
+	        			            isFolder:true,
+	                    		    fileIcon:'icon_folder_rsc',
+	                                refObjListRoot:this.refObjListRoot,
+	                    		    fileName:canvas.getLabelName(712)
+	                    		});
+	                t.addOrUpdateFolderName(this.fileExplorerItemId,true);
+				}
+			}
+		]]>
+	</method>
+	
+	<method name="refresh">
+		this.doOpen();
+	</method>
+	
+	<method name="playVideo">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+    		return;
+    	}
+		this.refObjListRoot.playVideo(this);
+	]]>
+	</method>
+	
+	<method name="editFolderName">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+    		return;
+    	}
+		this.addOrUpdateFolderName(this.fileExplorerItemId,false);
+	]]>
+	</method>
+	
+	<method name="loadDocument">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+    		return;
+    	}
+		this.refObjListRoot.loadDocument(this);
+	]]>
+	</method>
+	
+	<method name="loadWmlFile">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+    		return;
+    	}
+		this.refObjListRoot.loadWmlFile(this);
+	]]>
+	</method>
+
+	<method name="loadChart">
+	<![CDATA[
+		if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+    		return;
+    	}
+		this.refObjListRoot.loadChart(this);
+	]]>
+	</method>
+	
+	<method name="addOrUpdateFolderName" args="fileExplorerItemId,isNew">
+		<![CDATA[
+			if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+	    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+	    		return;
+	    	}
+		
+    		if ($debug) Debug.write("addOrUpdateFolderName ",fileExplorerItemId);
+    		var tWidth = this._fileName.width;
+    		if (tWidth < 160) {
+    			tWidth = 160;
+    		}
+    		var _y = this._fileName.getAttributeRelative("y",canvas);
+    		var _x = this._fileName.getAttributeRelative("x",canvas);
+    		if (isNew) {
+    			_y = 65; 
+    			_x += 10;
+    		}
+    		
+    		var t = new lz.dynamicFileName(canvas,{
+    			        parentFileExplorerItemId:fileExplorerItemId,
+    			        fileExplorerItemId:this.fileExplorerItemId, //Only used at update Name
+    			        isOwner:this.isOwner,
+    			        text:this.fileName,
+    			        isNew:isNew, //false means its a renaming
+    			        refObj:this,width:tWidth+10,
+            		    x:_x,
+            		    y:_y
+            		});
+            		
+            lz.Focus.setFocus(t,true);
+            lz.ModeManager.makeModal(t);
+            
+        ]]>
+	</method>
+	
+	<method name="toggleOpen" args="setSelection">
+		<![CDATA[
+			if (this.mouseDownClickUsed) {
+				if ($debug) Debug.write("mouseDownClickUsed RESET TO DEFAULT BUT DO NO ACTION Cause its a Drag and Drop Event");
+				this.mouseDownClickUsed = false;
+				return;
+			}
+			
+			if (this.singleClickStarted) {
+	            if ($debug) Debug.write("Is this selected => Double Click !!!");
+	            this.singleClickStarted = false;
+	            lz.Timer.removeTimer( this.singleClickDelegate );
+	            
+	            if (!canvas.isAllowedToDraw && !canvas.ismoderator) {
+		    		new lz.labelerrorPopup(canvas,{errorlabelid:1462});
+		    		return;
+		    	}
+	            
+	            if (this.isVideo) {
+	            	this.playVideo();
+	            } else if (this.isWmlFile){
+					this.loadWmlFile();
+				} else if (this.isFolder) {
+	                this.doSingleClick(null);
+	            } else if (this.isPresentation) {
+	                this.loadDocument();
+	            }
+	        } else {
+	        	
+	        	if (this.isFolder){
+	        		if (!this.open) {
+	        			this.doOpen();
+	        		} else {
+	        			if (setSelection) {
+	            			if (this.selected) {
+	            				if ($debug) Debug.write("Is this selected => Do Edit !!!");
+	            				this.singleClickStarted = true;
+	            			    lz.Timer.addTimer( this.singleClickDelegate, 300 );
+	            			} else {
+	            				
+	            				this.singleClickStarted = true;
+	            				lz.Timer.addTimer( this.resetClickDelegate, 300 );
+	            			}
+	        			} else {
+	        				this.doClose();
+	        			}
+	        		}
+	        	} else {
+	        		if (setSelection) {
+	                    if (this.selected) {
+	                        if ($debug) Debug.write("Is this selected => Do Edit !!!");
+	                        this.singleClickStarted = true;
+	                        lz.Timer.addTimer( this.singleClickDelegate, 300 );
+	                    } else {
+	                        this.singleClickStarted = true;
+	                        lz.Timer.addTimer( this.resetClickDelegate, 300 );
+	                    }
+	                }
+	        	}
+			}
+			
+			if (setSelection) this.refObjListRoot.selectItem(this);
+		]]>
+	</method>
+	
+	<method name="selectItem">
+		this.selected = true;
+		this._fileName.setAttribute("bgcolor",canvas.getThemeColor('baseMousecolorizer'));
+	</method>
+	
+	<method name="deselectItem">
+		this.selected = false;
+		if (this["_fileName"]) {
+            this._fileName.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        } else {
+            if ($debug) Debug.warn("deselectItem:: _fileName is NULL ",this);
+        }
+    </method>
+	
+	<method name="clearContent">
+        <![CDATA[
+            for (var eg in this.content.subviews) {
+                this.content.subviews[eg].destroy();
+            }
+        ]]>
+    </method>
+    
+    <method name="loadFiles">
+    	<![CDATA[
+            //this.getFileExplorerByRoom.doCall();
+            var downloadurl = canvas.getUrl()+'services/FileService/getFileExplorerByParentSelfInternal?'
+                            +'SID='+canvas.sessionId
+                            +'&parentFileExplorerItemId='+this.fileExplorerItemId
+                            +'&roomId='+hib.currentroomid
+                            +'&isOwner='+this.isOwner;
+            
+            this.getFileExplorerByParentSelf.setAttribute("src",downloadurl);
+            if ($debug) Debug.write("getFileExplorerByParentSelf doRequest ",downloadurl);
+            this.getFileExplorerByParentSelf.doRequest();
+        ]]>
+    </method>
+    
+    <dataset name="getFileExplorerByParentSelf" type="http" >
+        <handler name="ondata" args="d">
+            <![CDATA[
+                //if ($debug) Debug.write("ondata ",d);
+                parent.renderFilesAndFolders(canvas.currentFileExplorer.parseParentToRoomObject(d));
+            ]]>
+        </handler>
+    </dataset>
+    
+    <!--
+        parent.parseRootItems(canvas.currentFileExplorer.parseToRoomObject(d));
+	 -->
+	<!--
+	   public List<FileExplorerItem> getFileExplorerByParent(String SID, Long parentFileExplorerItemId, 
+	               Long room_id, Boolean isOwner) {
+	<netRemoteCallHib name="getFileExplorerByParent" funcname="fileservice.getFileExplorerByParent" 
+        remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.fileExplorerItemId;</method></netparam>  
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam>  
+        <netparam><method name="getValue">return parent.parent.isOwner;</method></netparam>         
+        <handler name="ondata" args="value">    
+            if ($debug) Debug.write("getFileExplorerByParent: ",value);
+            parent.renderFilesAndFolders(value);
+        </handler>
+    </netRemoteCallHib> 
+     --> 
+    
+    <method name="renderFilesAndFolders" args="roomHome">
+        <![CDATA[
+            this.clearContent();
+            
+            // Folder area
+            for (var i=0; i<roomHome.length; i++) {
+                var fileExplorerItem = roomHome[i];
+                if (fileExplorerItem.isFolder) {
+                    new lz.folderFileExplorerItem(this.content,{
+                                            fileName:fileExplorerItem.fileName,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileIcon:'icon_folder_rsc',
+                                            refObjListRoot:this.refObjListRoot
+                                        });
+                } else if (fileExplorerItem.isImage) {
+                    new lz.imageFileExplorerItem(this.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_image_rsc',
+                                            refObjListRoot:this.refObjListRoot
+                                        });
+                } else if (fileExplorerItem.isPresentation) {
+                    new lz.documentFileExplorerItem(this.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isPresentation:true,
+                                            fileIcon:'file_explorer_document_rsc',
+                                            refObjListRoot:this.refObjListRoot
+                                        });
+                } else if (fileExplorerItem.isVideo) {
+                    new lz.videoFileExplorerItem(this.content,{
+                                            isFolder:false,
+                                            isVideo:true,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileHash:fileExplorerItem.fileHash,
+                                            isFolder:false,isImage:true,
+                                            fileIcon:'file_explorer_video_rsc',
+                                            flvHeight:fileExplorerItem.flvHeight,
+                                            flvWidth:fileExplorerItem.flvWidth,
+                                            refObjListRoot:this.refObjListRoot
+                                        });
+                } else if (fileExplorerItem.isStoredWmlFile) { 
+                	new lz.wmlFileExplorerItem(this.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_wml_rsc',
+                                            isWmlFile: true,
+                                            refObjListRoot:this.refObjListRoot                	
+            							});
+                } else if (fileExplorerItem.isChart) { 
+                	new lz.chartFileExplorerItem(this.content,{
+                                            isFolder:false,
+                                            fileExplorerItemId:fileExplorerItem.fileExplorerItemId,
+                                            fileName:fileExplorerItem.fileName,
+                                            fileIcon:'file_explorer_chart_rsc',
+                                            refObjListRoot:this.refObjListRoot                	
+            							});
+
+            	}
+            }
+        ]]>
+    </method>
+    
+	
+	<view name="icon_folder_pre" 
+		  visibility="$once{ (parent.isFolder) ? 'visible' : 'hidden' }"
+		  resource="icon_folder_pre_rsc" frame="1" >
+		<handler name="onclick">
+			parent.toggleOpen(false);
+		</handler>
+	</view>
+	
+	<view name="_folderIcon" resource="$once{ parent.fileIcon }" x="16" y="2" >
+		<handler name="onmousedown">
+			if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+			parent.toggleOpen(false);
+		</handler>
+	</view>
+	
+	<method name="getDownloadURL" args="fName, parentPath">
+	<![CDATA[
+		var downloadurl = canvas.getUrl() + 'DownloadHandler?' +
+			'fileName=' + fName +
+			'&moduleName=videoconf1' +
+			'&parentPath=/' + parentPath +
+			'&room_id=files'+
+			'&sid=' + canvas.sessionId +
+			"&fileExplorerItemId=" + this.fileExplorerItemId;
+		if ($debug) Debug.write("formatURL: ", this, downloadurl);
+		return downloadurl;
+	]]>
+	</method>
+
+	<method name="downloadDocumentByName">
+	<![CDATA[
+		var fName = this.fileHash;
+		var pos = this.fileName.lastIndexOf(".");
+		var strlen = this.fileName.length;
+		if (pos != -1 && strlen != pos + 1) {
+			var ext = this.fileName.split(".");
+			var len = ext.length;
+			var extension = ext[len - 1].toLowerCase();
+			fName += "." + extension;
+		}
+		lz.Browser.loadURL(this.getDownloadURL(fName, this.fileHash + '/'), '_parent');
+	]]>
+	</method>
+	
+	<method name="downloadImageByName">
+		lz.Browser.loadURL(this.getDownloadURL(this.fileHash, ''), '_parent');
+	</method>
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/chartFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/chartFileExplorerItem.lzx
new file mode 100644
index 0000000..bd2d17f
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/chartFileExplorerItem.lzx
@@ -0,0 +1,88 @@
+<?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.
+  
+-->
+<library>
+
+  <class name="chartFileExplorerItem" extends="baseFileExplorerItem"
+    isFolder="true">
+
+    <attribute name="isChartFile" type="boolean" value="true" />
+
+    <text name="_fileName" x="36" text="${ parent.fileName }"
+      fontsize="10" resize="true" y="1">
+      <contextmenu>
+
+        <contextmenuitem caption="$once{ canvas.getLabelName(711) }"
+          onselect="parent.parent.parent.editFolderName()" />
+
+        <contextmenuitem caption="$once{ canvas.getLabelName(708) }"
+          separatorbefore="true" onselect="parent.parent.parent.addFile()" />
+
+        <contextmenuitem caption="$once{ canvas.getLabelName(709) }"
+          onselect="parent.parent.parent.addFolder()" />
+
+        <contextmenuitem caption="$once{ canvas.getLabelName(710) }"
+          onselect="parent.parent.parent.deleteFile(719)" />
+
+        <contextmenuitem caption="$once{ canvas.getLabelName(1314) }"
+          onselect="parent.parent.parent.loadChart()" />
+
+      </contextmenu>
+
+      <handler name="onmousetrackover">
+        Debug.write("onmousetrackover");
+        canvas.currentImagesListdraw.currentDragItem.sendOverItem(parent);
+        this.setAttribute("bgcolor",0x93FE92);
+      </handler>
+
+      <handler name="onmousetrackout">
+        Debug.write("onmousetrackout");
+        canvas.currentImagesListdraw.currentDragItem.sendOutItem(parent);
+        this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+      </handler>
+
+      <handler name="onmousetrackup">
+        if ($debug) Debug.write("onmousetrackup");
+        this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+      </handler>
+
+      <handler name="onmousedown">
+        if (parent.isRoot) {
+          return;
+        }
+        lz.Timer.addTimer(parent.mouseDownClickDelegate, 300);
+      </handler>
+      <handler name="onmouseup">
+        if (parent.isRoot) {
+          return;
+        }
+        lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+      </handler>
+      <handler name="onclick">
+        parent.toggleOpen(true);
+      </handler>
+    </text>
+
+    <view name="content" x="12" y="18" layout="axis:y;inset:1"
+      visibility="hidden">
+    </view>
+  </class>
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx
new file mode 100644
index 0000000..3760c1e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx
@@ -0,0 +1,86 @@
+<?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.
+  
+-->
+<library>
+
+ 
+<class name="documentFileExplorerItem" extends="baseFileExplorerItem" isFolder="true">
+	
+	<method name="formatURL" args="filename">
+        <![CDATA[
+            var uploadmoduleimgfolderVar = '/' + this.fileHash;
+            var downloadurl = canvas.getUrl()+'DownloadHandler?' +
+                'fileName=' + encodeURIComponent(this.fileHash + ".swf") +
+                '&moduleName=' + 'videoconf1' + 
+                '&parentPath=' + encodeURIComponent(uploadmoduleimgfolderVar + '/' )+
+                '&room_id=files'+ 
+                '&sid='+canvas.sessionId;
+            ////Debug.write("downloadurl: ",downloadurl);
+            return downloadurl;
+        ]]>
+    </method>    
+    
+	<method name="loadDocumentToWhiteboard">
+		if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		var uploadmoduleimgfolderVar = '/' + this.fileHash;
+            
+            if ($debug) Debug.write("loadDocumentToWhiteboard ",this.fileName);
+            
+    		canvas._drawarea.loadSWFPresentationSynced(this.formatURL(this.fileHash),this.fileHash + ".swf",
+    		              "videoconf1",uploadmoduleimgfolderVar,"files",hib.conferencedomain,1,
+                          this.fileName);
+		} else {
+			new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(721)});
+		}
+	</method>
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+			<contextmenuitem caption="$once{ canvas.getLabelName(711) }" onselect="parent.parent.parent.editFolderName()" />
+			
+            <!-- Load File To Whiteboard missing -->
+			<contextmenuitem name="_openDocument" caption="$once{ canvas.getLabelName(716) }" separatorbefore="true" onselect="parent.parent.parent.loadDocument()" />
+            				 
+            <contextmenuitem caption="$once{ canvas.getLabelName(719) }" onselect="parent.parent.parent.deleteFile(719)" />
+            <contextmenuitem caption="$once{ canvas.getLabelName(867) }" onselect="parent.parent.parent.downloadDocumentByName()" />
+        </contextmenu>
+        
+        <handler name="onmousedown">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx
new file mode 100644
index 0000000..4973ecc
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx
@@ -0,0 +1,83 @@
+<?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.
+  
+-->
+<library>
+
+<class name="folderFileExplorerItem" extends="baseFileExplorerItem" isFolder="true">
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+			
+			<contextmenuitem caption="$once{ canvas.getLabelName(711) }" 
+							 onselect="parent.parent.parent.editFolderName()" />
+			
+            <contextmenuitem caption="$once{ canvas.getLabelName(708) }" 
+            				 separatorbefore="true"
+            				 onselect="parent.parent.parent.addFile()" />
+            				 
+            <contextmenuitem caption="$once{ canvas.getLabelName(709) }" 
+            				 onselect="parent.parent.parent.addFolder()" />
+            				 
+            <contextmenuitem caption="$once{ canvas.getLabelName(710) }" 
+            				 onselect="parent.parent.parent.deleteFile(719)" />
+            				 
+        </contextmenu>
+        
+        <handler name="onmousetrackover">
+            //if ($debug) Debug.write("onmousetrackover");
+            canvas.currentImagesListdraw.currentDragItem.sendOverItem(parent);
+            this.setAttribute("bgcolor",0x93FE92);
+        </handler>
+        
+        <handler name="onmousetrackout">
+            //if ($debug) Debug.write("onmousetrackout");
+            canvas.currentImagesListdraw.currentDragItem.sendOutItem(parent);
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler>
+        
+        <handler name="onmousetrackup">
+            if ($debug) Debug.write("onmousetrackup");
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler> 
+        
+        <handler name="onmousedown">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+	<view name="content" x="12" y="18" layout="axis:y;inset:1" visibility="hidden">
+		
+	</view>
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx
new file mode 100644
index 0000000..c89b673
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx
@@ -0,0 +1,76 @@
+<?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.
+  
+-->
+<library>
+
+<class name="imageFileExplorerItem" extends="baseFileExplorerItem" isFolder="true">
+	
+    <method name="generateFileLink">
+        <![CDATA[
+            return canvas.getUrl()+'DownloadHandler?' +
+            		'fileName='+ this.fileHash + 
+                    '&moduleName='+ "videoconf1" +
+                    '&parentPath='+ '/' +
+                    '&room_id=files' +
+                    '&sid='+canvas.sessionId;
+        ]]>
+    </method>
+    
+	<method name="loadImageToWhiteboard">
+		if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		var mouse_x = canvas._drawarea.getMouse("x");
+    		var mouse_y = canvas._drawarea.getMouse("y");
+    		canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(),mouse_x,mouse_y,
+    		          canvas.getUrl()+'DownloadHandler',
+    		          this.fileHash,"videoconf1","/","files",hib.conferencedomain);
+		} else {
+            new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(721)});
+        }
+	</method>
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+			<contextmenuitem caption="$once{ canvas.getLabelName(711) }" onselect="parent.parent.parent.editFolderName()" />
+            <contextmenuitem caption="$once{ canvas.getLabelName(719) }" onselect="parent.parent.parent.deleteFile(719)" />
+            <contextmenuitem caption="$once{ canvas.getLabelName(867) }" onselect="parent.parent.parent.downloadImageByName()" />
+        </contextmenu>
+        
+        <handler name="onmousedown">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/library.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/library.lzx
new file mode 100644
index 0000000..ad858e9
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/library.lzx
@@ -0,0 +1,31 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="baseFileExplorerItem.lzx" />
+    <include href="folderFileExplorerItem.lzx" />
+    <include href="imageFileExplorerItem.lzx" />
+    <include href="videoFileExplorerItem.lzx" />
+    <include href="documentFileExplorerItem.lzx" />
+    <include href="rootFileExplorerItem.lzx" />
+    <include href="wmlFileExplorerItem.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx
new file mode 100644
index 0000000..4ecb0ef
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx
@@ -0,0 +1,65 @@
+<?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.
+  
+-->
+<library>
+
+<class name="rootFileExplorerItem" extends="baseFileExplorerItem" isFolder="true" isRoot="true">
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+                              				 
+            <contextmenuitem caption="$once{ canvas.getLabelName(708) }" 
+            				 separatorbefore="true"
+            				 onselect="parent.parent.parent.addFile()" />
+            				 
+            <contextmenuitem caption="$once{ canvas.getLabelName(709) }" 
+            				 onselect="parent.parent.parent.addFolder()" />
+            				 
+        </contextmenu>
+        
+        <handler name="onmousetrackover">
+            //if ($debug) Debug.write("onmousetrackover");
+            canvas.currentImagesListdraw.currentDragItem.sendOverItem(parent);
+            this.setAttribute("bgcolor",0x93FE92);
+        </handler>
+        
+        <handler name="onmousetrackout">
+            //if ($debug) Debug.write("onmousetrackout");
+            canvas.currentImagesListdraw.currentDragItem.sendOutItem(parent);
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler>
+        
+        <handler name="onmousetrackup">
+            if ($debug) Debug.write("onmousetrackup");
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler> 
+        
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+	<view name="content" x="12" y="18" layout="axis:y;inset:1" visibility="hidden">
+		
+	</view>
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx
new file mode 100644
index 0000000..72586d3
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx
@@ -0,0 +1,83 @@
+<?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.
+  
+-->
+<library>
+
+<class name="videoFileExplorerItem" extends="baseFileExplorerItem" isFolder="true" isVideo="true">
+	
+    <method name="generateFileLink">
+        <![CDATA[
+            return canvas.getUrl()+'DownloadHandler?' +
+            		'fileName='+ this.fileHash + 
+                    '&moduleName='+ "videoconf1" +
+                    '&parentPath='+ '/' +
+                    '&room_id=files' +
+                    '&sid='+canvas.sessionId;
+        ]]>
+    </method>
+    
+	<method name="loadImageToWhiteboard">
+		if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		var mouse_x = canvas._drawarea.getMouse("x");
+    		var mouse_y = canvas._drawarea.getMouse("y");
+    		canvas._drawarea.parent.parent.clearAreaAndAddImage(this.generateFileLink(),mouse_x,mouse_y,
+    		          canvas.getUrl()+'DownloadHandler',
+    		          this.fileHash,"videoconf1","/","files",hib.conferencedomain);
+		} else {
+            new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(721)});
+        }
+	</method>
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+			
+			<contextmenuitem caption="$once{ canvas.getLabelName(1358) }" 
+							 onselect="parent.parent.parent.playVideo()" />
+			
+			<contextmenuitem caption="$once{ canvas.getLabelName(711) }" 
+							 onselect="parent.parent.parent.editFolderName()" />
+			
+            <contextmenuitem caption="$once{ canvas.getLabelName(719) }" 
+            				 onselect="parent.parent.parent.deleteFile(719)" />
+            				 
+        </contextmenu>
+        
+        <handler name="onmousedown">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx
new file mode 100644
index 0000000..4cf5907
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx
@@ -0,0 +1,82 @@
+<?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.
+  
+-->
+<library>
+
+<class name="wmlFileExplorerItem" extends="baseFileExplorerItem" isFolder="true">
+	
+	<attribute name="isWmlFile" type="boolean" value="true"/>
+	
+	<text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1">
+		<contextmenu>
+			
+			<contextmenuitem caption="$once{ canvas.getLabelName(711) }" 
+							 onselect="parent.parent.parent.editFolderName()" />
+			
+            <contextmenuitem caption="$once{ canvas.getLabelName(719) }" 
+            				 onselect="parent.parent.parent.deleteFile(719)" />
+            	
+            			 
+			<contextmenuitem caption="$once{ canvas.getLabelName(1314) }" 
+							 onselect="parent.parent.parent.loadWmlFile()" />
+            				 
+        </contextmenu>
+        
+        <handler name="onmousetrackover">
+            //if ($debug) Debug.write("onmousetrackover");
+            canvas.currentImagesListdraw.currentDragItem.sendOverItem(parent);
+            this.setAttribute("bgcolor",0x93FE92);
+        </handler>
+        
+        <handler name="onmousetrackout">
+            //if ($debug) Debug.write("onmousetrackout");
+            canvas.currentImagesListdraw.currentDragItem.sendOutItem(parent);
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler>
+        
+        <handler name="onmousetrackup">
+            if ($debug) Debug.write("onmousetrackup");
+            this.setAttribute("bgcolor",canvas.getThemeColor('mainBackgroundColor'));
+        </handler> 
+        
+        <handler name="onmousedown">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.addTimer( parent.mouseDownClickDelegate, 300 );
+        </handler>
+        <handler name="onmouseup">
+        	if (parent.isRoot) {
+                return;
+            }
+            lz.Timer.removeTimer( parent.mouseDownClickDelegate );
+        </handler>
+		<handler name="onclick">
+            parent.toggleOpen(true);
+        </handler>
+	</text>
+	
+	<view name="content" x="12" y="18" layout="axis:y;inset:1" visibility="hidden">
+		
+	</view>
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/library.lzx b/WebContent/src/modules/conference/tabcontent/library.lzx
new file mode 100644
index 0000000..edee094
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/library.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- FamFam Icon Set -->
+	<resource name="messagebox_info_rsc" src="resources/information.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="_filesave_icon_pdf_rsc" src="resources/page_white_acrobat.png" />
+	<!-- APL Author sebawagner -->
+	<resource name="_filesave_icon_original_rsc" src="resources/download.png" />
+
+	<include href="fileexplorer/"/>
+	<include href="chat/" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/tabcontent/resources/download.png b/WebContent/src/modules/conference/tabcontent/resources/download.png
new file mode 100644
index 0000000..0c9013e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/resources/download.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/resources/information.png b/WebContent/src/modules/conference/tabcontent/resources/information.png
new file mode 100644
index 0000000..12cd1ae
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/resources/information.png
Binary files differ
diff --git a/WebContent/src/modules/conference/tabcontent/resources/page_white_acrobat.png b/WebContent/src/modules/conference/tabcontent/resources/page_white_acrobat.png
new file mode 100644
index 0000000..8f8095e
--- /dev/null
+++ b/WebContent/src/modules/conference/tabcontent/resources/page_white_acrobat.png
Binary files differ
diff --git a/WebContent/src/modules/conference/testsetup/library.lzx b/WebContent/src/modules/conference/testsetup/library.lzx
new file mode 100644
index 0000000..93469dd
--- /dev/null
+++ b/WebContent/src/modules/conference/testsetup/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="testSetup.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/testsetup/testSetup.lzx b/WebContent/src/modules/conference/testsetup/testSetup.lzx
new file mode 100644
index 0000000..4f8b109
--- /dev/null
+++ b/WebContent/src/modules/conference/testsetup/testSetup.lzx
@@ -0,0 +1,130 @@
+<?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.
+  
+-->
+<library>
+
+<!-- 
+#########################################
+
+Test the setup values before you enter a room => is moved to the SWF10 app
+
+The only thing remaining here to do, is to load the correct server 
+RTMP-host, RTMP/RTMPT-port for the session
+
+ -->
+ 
+<class name="testSetup" extends="view" 
+    x="$once{ parent.width/2 - 300 }" y="100" 
+    width="600" height="400">
+
+    <attribute name="roomClassName" type="string" value="" />
+    
+    <attribute name="roomObj" value="null"/>
+    
+    <attribute name="forceTest" value="false" type="boolean" />
+    
+    <attribute name="isDirectLink" value="false" type="boolean" />
+    
+    <!--- @keywords private if doJustClose is true the confirmation will be wait and 
+    then the window just closed -->
+    <attribute name="doJustClose" value="false" type="boolean" />
+    
+    <handler name="oninit">
+    	<![CDATA[
+            this.getServerForSession.doCall();
+    	]]>
+    </handler>
+    
+    <!-- 
+    public Server getServerForSession(String SID, long roomId)
+     -->
+   	<netRemoteCallHib name="getServerForSession" funcname="conferenceservice.getServerForSession" remotecontext="$once{ canvas.thishib }" >      
+		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		<netparam><method name="getValue"> return parent.parent.roomObj.rooms_id; </method></netparam>
+		<handler name="ondata" args="value">
+			if ($debug) Debug.write("getServerForSession ",value);
+			//if return value is null, everything stays the same, session is on the current host
+			if (value != null){
+				//is not loaded from public/config.xml from slave as this is variable is empty by default!
+				canvas.slaveRtmphostlocal = value.address;
+				
+				var slaveUrl = value.protocol + "://" + value.address + ":" + value.port + "/" + value.webapp + "/";
+				
+				var d = new Date();
+		        parent.myConfigSet.setAttribute("src", slaveUrl + "public/config.xml?random="+d.getTime());
+		        parent.myConfigSet.doRequest();
+				
+			} else {
+				//Hosted on master
+				canvas.isSlaveHosted = false;
+				this.parent.startConference();
+			}
+		</handler>
+	</netRemoteCallHib>	
+	
+	<!-- get values from public/config.xml from slave -->
+	<dataset type="http" name="myConfigSet" request="false" ondata="parent.parseResultsToSlaveClusterConfig()">
+	    <handler name="ondata">
+	        if ($debug) Debug.write("ondata");
+	    </handler>
+	    <handler name="onerror" args="e">
+	        if ($debug) Debug.write("onerror",e);
+	    </handler>
+	    <handler name="ontimeout" args="e">
+	        if ($debug) Debug.write("ontimeout",e);
+	    </handler>
+	</dataset>
+	
+	<!-- 
+		Parse the results so that the RTMP traffic points to the slave
+		and the HTTP traffic points to the master
+	 -->
+	<method name="parseResultsToSlaveClusterConfig">
+		
+        canvas.slaveRtmpport = Number(this.myConfigSet.getPointer().xpathQuery('config/rtmpport/text()'));  
+        canvas.slaveRtmpsslport = Number(this.myConfigSet.getPointer().xpathQuery('config/rtmpsslport/text()')); 
+        canvas.slaveWebAppRootKey = this.myConfigSet.getPointer().xpathQuery('config/webAppRootKey/text()'); 
+		
+		if ($debug) Debug.write("parseResults: ",canvas.slaveRtmphostlocal,canvas.slaveRtmpport,canvas.slaveRtmpsslport,canvas.slaveWebAppRootKey);
+		
+		//Hosted on slave
+		canvas.isSlaveHosted = true;
+		this.startConference();
+	</method>
+    
+    <method name="startConference">
+    	<![CDATA[
+            clearStageContent();
+            if ($debug) Debug.warn("roomClassname : ", this.roomClassName);
+            if ($debug) Debug.warn("canvas.currentRoomObj will be : ", this.roomObj);
+            canvas.currentRoomObj = this.roomObj;
+            
+            new lz[this.roomClassName](canvas.main_content._content.inner, {
+                        roomobj:this.roomObj
+                    });
+    	
+            this.destroy();
+    	]]>
+    </method>
+
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDraw.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDraw.lzx
new file mode 100644
index 0000000..f67e084
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDraw.lzx
@@ -0,0 +1,1515 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDraw" extends="view" >
+
+	<attribute name="currentlayer" value="null" />
+	<attribute name="layers" value="null" />
+	
+	<attribute name="redolayers" value="null" />
+
+  	<attribute name="mx" type="number" value="0"/>
+  	<attribute name="my" type="number" value="0"/>
+  	<attribute name="prevx" type="number" value="0"/>
+  	<attribute name="prevy" type="number" value="0"/>
+  	
+  	<!--- If true it will try to load the ObjectIdentifier Extension from the Server -->
+  	<attribute name="isRemoteOID" value="false" type="boolean" />
+  	
+  	<attribute name="startx" value="0" type="number" />
+  	<attribute name="starty" value="0" type="number" />
+  	<attribute name="endx" value="0" type="number" />
+  	<attribute name="endy" value="0" type="number" />
+  	
+  	<attribute name="restricted" value="false" type="boolean"/>
+  	
+  	<!-- This Counter just adds, it dosen't shows the absolute number of items
+  		(ask this.layers.length to get the number of drawings) -->
+  	<attribute name="counter" value="0" type="number" />
+  	
+  	<event name="onupdateScale" />
+  	
+  	<attribute name="showGrid" type="boolean" value="false"/>
+  	<attribute name="isSnapToGrid" type="boolean" value="false"/>
+	<attribute name="gridWidth" value="24" type="number" />
+	
+	<attribute name="copyObject" value="null"/>
+	<attribute name="selectedObjects" value="null"/>
+	
+	<attribute name="ObjectByName" value="null" />
+
+  	<method name="getCounter">
+		//Debug.write("### getCounter :",this.counter);
+		var now = new Date();
+		return "_"+now.getTime();
+  	</method>
+  	
+  	<!--
+  	 not needed anymore, Issue 507
+    <netRemoteCallHib name="getOID" funcname="getOID" showLoading="false"
+    				  remotecontext="$once{ canvas.thishib }" > 
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if($debug) Debug.write("getOID: ",value);
+                parent.counter = value;
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     
+     -->
+	
+	<method name="compareAndSetCounter" args="c">
+		<![CDATA[
+			if (c>this.counter) this.counter = c;
+		]]>
+	</method>
+  	
+	<attribute name="mousetracker_del" value="$once{ new LzDelegate(this, 'trackmouse' )}" />
+	
+	<!-- 
+	This is the very basic decision what to do
+	the modus pointer is only  a temp modus which is inited while draging
+	a new selected object
+	 -->
+	<attribute name="drawmodus" value="hand" type="string" />
+	
+	<!-- This List holds all ActionObject
+		currently paintings
+				  letters -->
+	<attribute name="baseactionobjectList" value="null" />
+	<attribute name="baseredoactionobjectList" value="null" />
+	
+	<!-- This List hold a reference to all 
+		Array of Drawing Action, it is needed for coping the view and undo/redo -->
+	<attribute name="basetempactionobjectList" value="null" />
+	
+	<attribute name="basdrawredoView" value="null" />
+	
+	<attribute name="hasprevious" value="false" type="boolean" />
+	<attribute name="hasenext" value="false" type="boolean" />
+	
+	<attribute name="doClearAll" value="false" type="boolean" />
+	<attribute name="doClearSlide" value="false" type="boolean" />
+	
+	<!-- For the dragging resizeing there is a bounding box -->
+	<attribute name="boundingIsActive" value="false" type="boolean" />
+	<attribute name="boundingref" value="null" />
+	
+	<!-- For sending messages in shared modus -->
+	<method name="onsharedMessage" args="action,obj" />
+	
+	<!-- this event must be triggered AFTER
+		the nesseccary room + domain for this conferenceView is set
+		-->
+	<event name="onopenWhiteBoard" />
+	
+	<attribute name="isDragging" value="false" type="boolean"/>
+	
+	<attribute name="last_x" value="0" type="number" />
+	<attribute name="last_y" value="0" type="number" />
+	
+	<!-- ############
+		init
+	 -->
+	<handler name="oninit">
+		if (this.isRemoteOID){
+            //wrong reference, swagner 20.09.2008
+			//this.getOID.doCall();
+		}
+        //Debug.write("********** this oninit: ",this);
+		this.basdrawredoView = new LzView(canvas,{visible:false,y:440});
+		this.layers = new Array();
+		this.last_x = this.x;
+		this.last_y = this.y;
+		this.redolayers = new Array();
+		this.baseactionobjectList = new Array();
+		this.baseredoactionobjectList = new Array();
+	</handler>
+      
+    <method name="clearSlideOnly">
+    	<![CDATA[
+            
+            var itemsToDelete = this.getCurrentSlideAnnotations();
+            
+            this.onsharedMessage('clearSlide',itemsToDelete); 
+            
+            this.clearSlideRemote(itemsToDelete);
+        ]]>
+    </method>  
+            
+	<method name="clearAll">
+		<![CDATA[
+			this.onsharedMessage('clear',null);	
+			this.clearRemote();
+		]]>
+	</method>
+	
+	<method name="getCurrentSlideAnnotations">
+		<![CDATA[
+		
+		    var currentSlideNumber = -1;
+		
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+            	
+            	if (this.baseactionobjectList[i][0] == "swf") {
+            		currentSlideNumber = this.baseactionobjectList[i][8];
+            		break;
+            	}
+            	
+            }
+            
+            var itemsToDelete = new Array();
+            
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+            	
+            	if (this.baseactionobjectList[i][0] == "ellipse" 
+                        || this.baseactionobjectList[i][0] == "drawarrow"
+                        || this.baseactionobjectList[i][0] == "line"
+                        || this.baseactionobjectList[i][0] == "paint"
+                        || this.baseactionobjectList[i][0] == "rectangle"
+                        || this.baseactionobjectList[i][0] == "uline"
+                        || this.baseactionobjectList[i][0] == "image"
+                        || this.baseactionobjectList[i][0] == "clipart"
+                        || this.baseactionobjectList[i][0] == "letter") {
+                        	
+                	var swfObj = this.baseactionobjectList[i][this.baseactionobjectList[i].length-7];
+                	
+                	if (swfObj.slide == currentSlideNumber) {
+                		itemsToDelete.push(this.baseactionobjectList[i][this.baseactionobjectList[i].length-1]);
+                	}
+                	
+                }
+            	
+            }
+            
+            return itemsToDelete;
+		]]>
+	</method>
+	
+	<method name="clearSlideRemote" args="itemsToDelete">
+        <![CDATA[
+        
+            var indexOfItemsToDelete = new Array();
+        
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+                
+            	
+            	for (var k=0;k<itemsToDelete.length;k++) {
+            	
+                    if (this.baseactionobjectList[i][this.baseactionobjectList[i].length-1] == itemsToDelete[k]) {
+                                
+                        indexOfItemsToDelete.push(i);
+                        
+                    }
+                
+            	}
+                
+            }
+            
+            for (var i=indexOfItemsToDelete.length-1;i>=0;i--) {
+                
+                var itemToDelete = this.baseactionobjectList[indexOfItemsToDelete[i]];
+                
+                var refObj = this.getObjectByName(itemToDelete[itemToDelete.length-1]);
+                
+                refObj.destroy();
+                
+                this.baseactionobjectList.splice(indexOfItemsToDelete[i],1);
+                
+            }   
+        ]]>
+    </method>        
+	
+	<method name="clearRemote">
+        <![CDATA[
+        
+            if (this.boundingref!=null) this.boundingref.removeIt();
+            while (this.subviews.length > 1) {
+                this.subviews[1].prepareForDelete.sendEvent();
+                this.subviews[1].destroy();
+            }
+            while (this.basdrawredoView.subviews.length > 0) {
+                this.basdrawredoView.subviews[0].destroy();
+            }   
+            
+            this.setAttribute("x",0);
+            this.setAttribute("y",0);
+            
+            this.getDisplayObject()._xscale = 100;
+            this.getDisplayObject()._yscale = 100;
+            
+            this.onupdateScale.sendEvent(null);
+            
+            parent.parent.zoombox.setWhiteboardValues(true,100);
+            
+            this.layers = new Array();
+            this.redolayers = new Array();
+            this.baseactionobjectList = new Array();
+            this.baseredoactionobjectList = new Array();    
+            this.checkStepLayers(); 
+            this.clearDocumentsBar();
+        ]]>
+    </method>
+	
+	<method name="doAction" args="modi">
+		if (modi=='saveobj'){
+			if (this.sendObject) this.sendObject.sendEvent();
+		} else if (modi=='loadobj'){
+		
+		}
+	</method>
+	
+	<method name="setModusWithUpdate" args="modi">
+		var paintToolBar = this.getPaintToolBar();
+		paintToolBar.updateToolSelection(modi);
+		this.setModus(modi);
+	</method>
+	
+	<method name="setModus" args="modi">
+		<![CDATA[
+		  
+		    if ($debug) Debug.write("setModus AAA: ",this.baseactionobjectList);
+		
+    		//check if previous modi has been txt, which might not be saved to the board yet
+            var previousModus = this.drawmodus;
+    		if ($debug) Debug.write("setModus: ",modi);
+    		if (this.drawmodus=='letter'){
+    			if (this.letterObjectIsActive){
+    				if ($debug) Debug.write("setModus:drawtoArray",modi);
+    				this.currentletterObj.drawtoArray();
+    			}
+    		}
+    		
+    		if (modi != 'print' && modi != 'plain') {
+    		    this.setAttribute('drawmodus',modi);
+    		} else if (modi == 'print') {
+    			var my_pj = new PrintJob();
+                var myResult = my_pj.start();
+                
+                if ($debug) Debug.write("myResult ",myResult);
+                
+                if (myResult) {
+                	
+                	var mc = this.getDisplayObject();
+                	
+                	// boolean to track whether addPage succeeded, change this to a counter
+                    // if more than one call to addPage is possible
+                    var pageAdded:Boolean = false;
+                
+                    // check the user's printer orientation setting
+                    // and add appropriate print area to print job
+                    if (my_pj.orientation == "portrait") {
+                        // Here, the printArea measurements are appropriate for an 8.5" x 11"
+                        // portrait page.
+                        pageAdded = my_pj.addPage(mc._parent,{xMin:0,xMax:600,yMin:0,yMax:800});
+                    } else {
+                        // my_pj.orientation is "landscape".
+                        // Now, the printArea measurements are appropriate for an 11" x 8.5"
+                        // landscape page.
+                        pageAdded = my_pj.addPage(mc._parent,{xMin:0,xMax:750,yMin:0,yMax:600});
+                    }
+                
+                    // send pages from the spooler to the printer
+                    if (pageAdded) {
+                        my_pj.send(); 
+                    }
+
+                	
+                	//if ($debug) Debug.write("mc ",mc);
+                	//if ($debug) Debug.write("mc.name ",mc._name);
+                	
+                    //myResult = my_pj.addPage(mc, null, {printAsBitmap:true}, 1);
+                    //my_pj.send();
+                    delete my_pj;
+                }
+    		}
+    		
+    		if (modi=='plainSlide'){
+    			this.doClearSlide = true;
+                this.doClearAll = false;
+    			new lz.confirmationSingle(canvas.main_content._content.inner,{
+                                           labelid:1339,labeliderror:1359,
+                                           refObj:this,showCheckBox:false});
+    			
+    			this.setAttribute('drawmodus',previousModus);
+    		} else if (modi=='plainConfirm'){
+    			this.doClearSlide = false;
+    			this.doClearAll = true;
+                new lz.confirmationSingle(canvas.main_content._content.inner,{
+                                           labelid:1339,labeliderror:1340,
+                                           refObj:this,showCheckBox:false});
+                //this.clearAll();
+                //if ($debug) Debug.write("clearAll and RESET Modus to",previousModus);
+                this.setAttribute('drawmodus',previousModus);
+            } else if (modi=='plain'){
+                this.clearAll();
+                //if ($debug) Debug.write("clearAll and RESET Modus to",previousModus);
+                this.setAttribute('drawmodus',previousModus);
+            } else if (modi=='hand' || modi=='letter' || modi=='triangle' 
+    			|| modi=='paint' || modi=='line' || modi=='uline' || modi=='clipart' 
+    			|| modi=='rectangle' || modi=='ellipse' || modi=='drawarrow'){
+    			if (this.boundingref!=null) this.boundingref.removeIt();
+    		}
+    		if (modi=='rectangle') {
+    			//Open Up Recording
+    			
+    		}
+		]]>
+	</method>
+	
+	<method name="sendConfirmation" args="yesno" >
+		if (this.doClearSlide) {
+			this.clearSlideOnly();
+		} else if (this.doClearAll) {
+            this.clearAll();
+        }
+    </method>
+    
+    <method name="sendNoConfirmation" args="ref">
+    	//Do nothing
+    </method>
+	
+	<method name="getModusItems" args="modi">
+		<![CDATA[
+		//Debug.write("getModusItems: ",modi,this.baseactionobjectList);
+		if (modi=='pointer'){
+			return this.baseactionobjectList;
+		} else {
+			var tempList = new Array();
+			//Debug.write("this.baseactionobjectList: ",modi);
+			for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+				//Debug.write("this.baseactionobjectList[eg][0]==modi",this.baseactionobjectList[eg][0],modi);
+				if (this.baseactionobjectList[eg][0]==modi) {
+					tempList.push(this.baseactionobjectList[eg]);
+				}
+			}		
+			return tempList;
+		}
+		]]>
+	</method>
+	
+	<method name="getObjectByName" args="objName">
+		if (this[objName]) {
+			return this[objName];
+		}
+		return null;
+	</method>
+	
+	<method name="getBaseObjectByName" args="bName">
+        <![CDATA[
+            //Debug.write("getModusItems: ",modi,this.baseactionobjectList);
+            //Debug.write("this.baseactionobjectList: ",modi);
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                //Debug.write("this.baseactionobjectList[eg][0]==modi",this.baseactionobjectList[eg][0],modi);
+                if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==bName) {
+                    return this.baseactionobjectList[eg];
+                }
+            }       
+            return null;
+        ]]>
+    </method>
+	
+	<method name="deleteItemByName" args="objName">
+        <![CDATA[
+            var newA = this.deleteItemByNameSync(objName);
+            if (newA[0]=='paint') newA[1] = new Array();
+            this.onsharedMessage('delete',newA);    
+        ]]>
+    </method>
+    
+	<method name="deleteItemByNameSync" args="objName">
+    	<![CDATA[
+    	    if ($debug) Debug.write("deleteItemByNameSync :: ",objName);
+    	    this[objName].prepareForDelete.sendEvent();
+    	    this[objName].destroy();
+            if (this.boundingref!=null) this.boundingref.removeIt();
+    		
+    		var pos = -1;
+    		for (var eg=0;eg<this.layers.length;eg++){
+    			if (this.layers[eg]['name']==objName) {
+    				pos = eg;
+    				//Debug.write("Found Object in Layer: ",eg);
+    				this.layers[eg].prepareForDelete.sendEvent();
+    				this.layers[eg].destroy();
+    			}
+    		}	
+    		if (pos!=-1) this.layers.splice(pos, 1);
+    		//get Item Position
+    		pos = -1;
+    		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+    			if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==objName) {
+    				pos = eg;
+    				//Debug.write("Found Object: ",eg);
+    				break;
+    			}
+    		}
+    		
+    		if ($debug) Debug.write("deleteItemByNameSync Found Object: ",eg);
+    		
+    		var newA = this.baseactionobjectList[pos];
+    		
+    		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+    			if (this.baseactionobjectList[eg][0]!="pointerWhiteBoard") {
+		    		if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-8]>newA[newA.length-8]) {
+		    				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-8]-=1;
+					}
+    			}
+    		}
+    		
+    		if (pos!=-1) this.baseactionobjectList.splice(pos, 1);
+    		
+    		//if ($debug) Debug.write("this.baseactionobjectList.length: ",this.baseactionobjectList.length);
+    		//if ($debug) Debug.write("this.layers.length: ",this.layers.length);
+    		
+    		if ($debug) Debug.warn("deleteItemByName :: ",objName);
+    		
+    		this.checkStepLayers();
+    		
+    		if (newA[0] == "swf") {
+                this.doDeleteFromDocumentsBar(objName);
+    		}
+    		
+    		return newA;
+    	]]>
+	</method>
+	
+	<method name="UpdateByObject" args="objRef">
+		<![CDATA[
+		//Debug.write("UpdateByObject : ",objRef,objRef.name);
+		var objName = objRef.name;
+		//for (var eg=0;eg<this.layers.length;eg++){
+		//	if (this.layers[eg]['name']==objName) {
+		//		//Debug.write("Found Object in Layer: ",this.layers[eg]);
+		//	}
+		//}
+		
+		var tx = objRef.x;
+        var ty = objRef.y;
+        
+        if(this.isSnapToGrid){   
+            
+            tx = Math.round(tx/this.gridWidth)*this.gridWidth;
+            ty = Math.round(ty/this.gridWidth)*this.gridWidth;
+            
+        }
+		
+		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+			if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==objName) {
+				//Debug.write("Found Object: ",this.baseactionobjectList[eg]);
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5] = tx;
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4] = ty;
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-3] = objRef.width;
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-2] = objRef.height;
+				var newA = this.baseactionobjectList[eg];
+				if (newA[0]=='paint') newA[1] = new Array();				
+				this.onsharedMessage('size',newA);	
+			    break;
+			}
+		}	
+			
+		]]>
+	</method>
+	
+	<!-- ##############
+		undo/redo
+	 -->
+	
+	<method name="undoredo">
+		<![CDATA[
+		if (this.baseactionobjectList.length>0){
+			if (this.boundingref!=null) this.boundingref.removeIt();
+			var lastActionObject = this.baseactionobjectList.pop();
+			this.deleteItemByNameSync(lastActionObject[lastActionObject.length-1]);
+			this.onsharedMessage('undo',lastActionObject);
+		}
+		]]>
+	</method>
+
+	
+	<method name="checkStepLayers">
+		if (this.layers.length==0){
+			this.setAttribute('hasprevious',false);
+		} else {
+			this.setAttribute('hasprevious',true);
+		}
+		if (this.redolayers.length==0){
+			this.setAttribute('hasenext',false);
+		} else {
+			this.setAttribute('hasenext',true);
+		}	
+		//this.setAttribute('drawmodus',this.getAttribute('drawmodus'));				
+	</method>
+	
+	<method name="onmouseoverMethod">
+		
+	</method>
+	
+	<method name="onmouseoutMethod">
+        
+    </method>
+             
+	<method name="onmousedownMethod" >
+		<![CDATA[
+		if ($debug) Debug.write("onmousedownMethod this.drawmodus: ",this.drawmodus);
+		
+		
+		if(this.selectedObjects != null && this.selectedObjects.length > 0){
+			for (var eg=0;eg<this.selectedObjects.length;eg++){
+				var  objectToUpdate = this.getObjectByName(this.selectedObjects[eg][this.selectedObjects[eg].length-1]);
+	            objectToUpdate.setAttribute('opacity', 1);
+			}
+		}
+		
+		if (canvas.ismoderator || canvas.isAllowedToDraw) {
+			
+			if (this.letterObjectIsActive){
+				this.currentletterObj.drawtoArray();
+				this.setModusWithUpdate("hand");
+				//bool = true;				
+			}
+			
+			if(this.drawmodus=="drag"){
+				this.isDragging = true;
+				this.dragger.apply();
+			} else if(this.drawmodus=="hand"){
+				this.doSetHandBodus();				
+			} else if(this.drawmodus=="paint"){
+				this.startPaint();
+				mousetracker_del.register(lz.Idle,'onidle');
+			} else if(this.drawmodus=="line"){
+				this.startLine(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 			
+				mousetracker_del.register(lz.Idle,'onidle');
+			} else if(this.drawmodus=="uline"){
+				this.startUline(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 			
+				mousetracker_del.register(lz.Idle,'onidle');
+			} else if(this.drawmodus=="drawarrow"){
+				this.startDrawarrowline(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 			
+				mousetracker_del.register(lz.Idle,'onidle');
+			} else if (this.drawmodus == 'rectangle') {
+				this.startRect(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 				
+	            mousetracker_del.register(lz.Idle,'onidle');
+	        } else if (this.drawmodus == 'ellipse') {
+				this.startEllipse(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 				
+	            mousetracker_del.register(lz.Idle,'onidle');
+	        } else if (this.drawmodus == 'letter') {
+                this.startLetter();
+                this.startx = currentlayer.getMouse('x');
+                this.starty = currentlayer.getMouse('y');               
+                mousetracker_del.register(lz.Idle,'onidle');
+            } else if (this.drawmodus == 'clipart') {
+            	this.startDrawClipArt(null);
+                this.startx = currentlayer.getMouse('x');
+                this.starty = currentlayer.getMouse('y');  
+                mousetracker_del.register(lz.Idle,'onidle');
+            } else if (this.drawmodus == 'triangle') {
+				this.startTriangle(null);
+	  	 		this.startx = currentlayer.getMouse('x');
+				this.starty = currentlayer.getMouse('y'); 				
+	            mousetracker_del.register(lz.Idle,'onidle');
+	        }else if (this.drawmodus == 'paste') {
+				//this.startSelect(null);
+	  	 		var paste_x = parent.getMouse('x');
+				var paste_y = parent.getMouse('y'); 				
+	            //mousetracker_del.register(lz.Idle,'onidle');
+	            this.paste(paste_x, paste_y);
+	            
+	            //this.setModus("hand");
+				
+	            if ($debug) Debug.write("paste mouse down ",this);
+	            //if ($debug) Debug.write("onmousedownMethod Unkown Modus ",this.drawmodus);
+	        } else {
+	        	if ($debug) Debug.write("onmousedownMethod Unkown Modus ",this.drawmodus);
+	        }
+            
+            
+        }
+        ]]>
+	</method>
+
+	<method name="onmouseupMethod" >
+        if ($debug) Debug.write("onmouseupMethod this.drawmodus: ",this.drawmodus);
+		<![CDATA[	
+	        if (canvas.ismoderator || canvas.isAllowedToDraw) {
+				//var bool = false;
+				
+	        	if(this.drawmodus=="drag"){
+	        		this.isDragging = false;
+	        		this.dragger.remove();
+	        		
+	        		this.setAttribute("x",Math.round(this.x));
+	        		this.setAttribute("y",Math.round(this.y));
+	        		
+	        		if (this.last_x == this.x && this.last_x == this.x) {
+	        			if ($debug) Debug.write("No Change");
+	        			return;
+	        		}
+	        		
+	        		this.last_x = this.x;
+	        		this.last_y = this.y;
+	        		
+	        		var tArray = new Array();
+		    		tArray[0] = "moveMap";
+		    		tArray[1] = this.x;
+		    		tArray[2] = this.y;
+		    		
+		    		this.onsharedMessage('moveMap',tArray);
+	        		
+	        	} else if(this.drawmodus=="paint"){
+					this.endPaint();
+					mousetracker_del.unregisterAll();
+				} else if(this.drawmodus=="line"){
+					this.endLine();
+					mousetracker_del.unregisterAll();
+				} else if(this.drawmodus=="drawarrow"){
+					this.endDrawarrowline();
+					mousetracker_del.unregisterAll();
+				} else if(this.drawmodus=="uline"){
+					this.endUline();
+					mousetracker_del.unregisterAll();
+				} else if(this.drawmodus=="letter"){
+					//if (!this.letterObjectIsActive && !bool){
+					//	this.currentletterObj = new lz.baseDrawWords(canvas,{refObj:this,x:canvas.getMouse('x'),
+					//		y:canvas.getMouse('y')});
+					//}
+					this.endLetter();
+					mousetracker_del.unregisterAll();
+				} else if (this.drawmodus == 'rectangle') {
+					this.endRect();
+		        	mousetracker_del.unregisterAll();
+		        } else if (this.drawmodus == 'ellipse') {
+					this.endEllipse();
+		        	mousetracker_del.unregisterAll();
+		        } else if (this.drawmodus == 'pointer') {
+		        	this.setAttribute('drawmodus','hand');
+					if (this.boundingIsActive){
+						this.boundingref._innerDrag.onmouseup.sendEvent();
+					}
+		        } else if (this.drawmodus == 'pointerWhiteboard') {
+                    if ($debug) Debug.write("pointerWhiteboard set New Point ");
+                    this.endPointerWhiteBoard();
+                } else if(this.drawmodus=="clipart"){
+                    this.endDrawClipArt();
+                    mousetracker_del.unregisterAll();
+                } else if (this.drawmodus == 'triangle') {
+					this.endTriangle();
+		        	mousetracker_del.unregisterAll();
+		        } else if (this.drawmodus == 'hand') {
+					this.endSelect();
+		        	mousetracker_del.unregisterAll();
+		        }else if (this.drawmodus == 'paste') {
+					//this.setModus("hand");
+					//this.setAttribute('drawmodus','hand');
+					//if ($debug) Debug.write("onmouseupMethod paste ",this.drawmodus);
+		        } else {
+		        	if ($debug) Debug.write("onmouseupMethod Unkown Modus ",this.drawmodus);
+		        }
+	                
+		        ////Debug.write("onmouseup: ",this.letterObjectIsActive,this.currentletterObj);	        
+				this.checkStepLayers();
+	        } else {
+	        	if (!this.restricted) {
+                    this.endPointerWhiteBoard();
+	        	}
+            }
+		]]>
+	</method>  
+    
+    <!--
+    <handler name="onclick" args="obj">
+        //Debug.write("click on whiteBoard ",obj);
+    </handler>
+     -->
+
+  	<method name="trackmouse" args="item">
+    	<![CDATA[
+
+    	this.mx = currentlayer.getMouse('x');
+    	this.my = currentlayer.getMouse('y');   
+	    	    	
+    	if (this.drawmodus=="paint"){	    	
+		    if (mx != prevx || my != prevy) {
+		        if (prevx == null) {
+		            prevx = mx;
+		        }
+		        if (prevy == null) {
+		            prevy = my;
+		        }
+	            var mmx = this.mx;
+	            var mmy = this.my;
+	            var px = this.prevx;
+	            var py = this.prevy;
+
+	            this.drawline(px, py, mmx, mmy);
+	            this.drawlineRegisterPaint(px, py, mmx, mmy);
+	            
+	            this.prevx  = this.mx;
+	            this.prevy = this.my;            
+	        } 
+	    } else if (this.drawmodus=="line"){	 
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startLine(oid_name);
+			this.endx = this.mx;
+			this.endy = this.my;
+            this.drawline(this.startx, this.starty, this.endx, this.endy);
+	    } else if (this.drawmodus=="uline"){
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startUline(oid_name);
+			this.endx = this.mx;
+			this.endy = this.my;
+            this.drawline(this.startx, this.starty, this.endx, this.endy);
+	    } else if (this.drawmodus=="drawarrow"){	
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startDrawarrowline(oid_name);
+			this.endx = this.mx;
+			this.endy = this.my;
+	    } else if (this.drawmodus == 'rectangle') {
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startRect(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawrectangle (this.startx, this.starty, this.mx, this.my);
+		} else if (this.drawmodus == 'triangle') {
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startTriangle(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawtriangle (this.startx, this.starty, this.mx, this.my);
+		} else if (this.drawmodus == 'ellipse') {
+			var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startEllipse(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawellipse (this.startx, this.starty, this.mx, this.my);			
+		} else if (this.drawmodus == 'letter') {
+			var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startLetter(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawletterBoundingBox (this.startx, this.starty, this.mx, this.my);			
+		} else if (this.drawmodus=="clipart"){ 
+            //var oid_name = this.currentlayer.name;
+            //this.currentlayer.destroy();
+            this.trackDrawClipArt();
+            this.endx = this.mx;
+            this.endy = this.my;
+        } else if (this.drawmodus == 'copy') {
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startSelect(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawrectangle (this.startx, this.starty, this.mx, this.my);
+        }else if (this.drawmodus == 'hand') {
+	    	var oid_name = this.currentlayer.name;
+	    	this.currentlayer.destroy();
+	    	this.startSelect(oid_name);
+			// stretchy rect mode
+			this.endx = this.mx;
+			this.endy = this.my;
+			this.drawrectangle (this.startx, this.starty, this.mx, this.my);
+        }
+		
+    	]]>
+    </method>
+	
+	<!-- ####################
+		Handmodus
+	 -->
+	<method name="doSetHandBodus" >
+		<![CDATA[
+		////Debug.write("doSetHandBodus: ");
+		var objList = this.getObjectInBounds(this.getMouse('x'),this.getMouse('y'));
+		if(objList.length==1){
+			this.setAttribute('drawmodus','pointer');
+			////Debug.write(objList[0][objList[0].length-1]);
+			this.doShowObjectBounds(objList[0][objList[0].length-1]);
+		} else if (objList.length>1){
+			this.setAttribute('drawmodus','pointer');
+			////Debug.write(objList[objList.length-1][objList[objList.length-1].length-1]);
+			this.doShowObjectBounds(objList[objList.length-1][objList[objList.length-1].length-1]);
+		} else {
+			this.startSelect(null);
+  	 		this.startx = currentlayer.getMouse('x');
+			this.starty = currentlayer.getMouse('y'); 				
+            mousetracker_del.register(lz.Idle,'onidle');
+            if ($debug) Debug.write("this.startSelect ",this);
+	            
+			this.setModus("hand");
+		}
+		]]>
+	</method>
+	
+    <method name="doShowObjectBounds" args="val">
+    <![CDATA[
+    	if (val !=null && val!=''){
+	    	this.ObjectByName = this.getObjectByName(val);
+	    	//FIXME: Set Corrent Value to Document Toolbar or use another var
+               
+            var boundingDoUpdateOnInit = true;
+            if (this.ObjectByName instanceof lz.swfResourceView){
+                //Debug.write("is swf Presentation");
+                boundingDoUpdateOnInit=false;
+            }
+            
+            //if ($debug) Debug.write("this.ObjectByName ",val,this.ObjectByName);
+                
+	    	var x = this.ObjectByName.x;
+	    	var y = this.ObjectByName.y;
+            //if ($debug) Debug.write("doShowObjectBounds: ",x,y);
+	    	var width = this.ObjectByName.width;
+	    	var height = this.ObjectByName.height;
+	    	if (this.boundingref!=null)this.boundingref.removeIt();
+	    	this.boundingref = new lz.boundingBoxAll(this.parent.parent._drawareaMask._drawarea,{whiteboardRef:this,
+                    objRef:this.ObjectByName,x:x-200,y:y-200,width:width+400,height:height+400,
+                    canBeDragged:boundingDoUpdateOnInit,canBeResized:boundingDoUpdateOnInit,
+                    ex:x,ey:y,ewidth:width,eheight:height,boundingDoUpdateOnInit:boundingDoUpdateOnInit});
+	    	this.setAttribute('boundingIsActive',true);
+        
+            //if (!boundingDoUpdateOnInit) {
+            //    this.boundingref._inner._inner.setAttribute('width',this.ObjectByName._swfView.width);
+            //    this.boundingref._inner._inner.setAttribute('height',this.ObjectByName._swfView.height);
+            //    if ($debug) Debug.write("NEW WIDTH AND HEIGHT OF SWF ",this.ObjectByName._swfView.width,this.ObjectByName._swfView.height);
+            //    this.boundingref._inner.setAttribute('visible',true);
+            //    parent.parent.changeMenu(2,true);
+            //    this.doUpdateDocumentToolBar();
+            //} else {
+            //    parent.parent.changeMenu(1,true);
+            //}
+             
+    	}
+    ]]>
+    </method>   
+    
+    <method name="reselectShowObjectBounds" args="val">
+    <![CDATA[
+        if (val !=null && val!=''){
+            this.ObjectByName = this.getObjectByName(val);
+            //FIXME: Set Corrent Value to Document Toolbar or use another var
+               
+            
+            //if ($debug) Debug.write("this.ObjectByName ",val,this.ObjectByName);
+                
+            var x = this.ObjectByName.x;
+            var y = this.ObjectByName.y;
+            //if ($debug) Debug.write("doShowObjectBounds: ",x,y);
+            var width = this.ObjectByName.width;
+            var height = this.ObjectByName.height;
+            if (this.boundingref!=null)this.boundingref.removeIt();
+            this.boundingref = new lz.boundingBoxAll(this.parent.parent._drawareaMask._drawarea,{
+                                whiteboardRef:this,
+                                objRef:this.ObjectByName,
+                                x:x-200,y:y-200,
+                                width:width+400,height:height+400,
+                                canBeDragged:true,canBeResized:false,
+                                ex:x,ey:y,ewidth:width,eheight:height,
+                                boundingDoUpdateOnInit:false
+                            });
+            this.setAttribute('boundingIsActive',true);
+        
+            //if (!boundingDoUpdateOnInit) {
+            //    this.boundingref._inner._inner.setAttribute('width',this.ObjectByName._swfView.width);
+            //    this.boundingref._inner._inner.setAttribute('height',this.ObjectByName._swfView.height);
+            //    if ($debug) Debug.write("NEW WIDTH AND HEIGHT OF SWF ",this.ObjectByName._swfView.width,this.ObjectByName._swfView.height);
+            //    this.boundingref._inner.setAttribute('visible',true);
+            //    parent.parent.changeMenu(2,true);
+            //    this.doUpdateDocumentToolBar();
+            //} else {
+            //    parent.parent.changeMenu(1,true);
+            //}
+             
+        }
+    ]]>
+    </method>   
+	
+	<method name="updateObjectBounds">
+		if (this.boundingref!=null) this.boundingref.resetValues();
+	</method>
+	
+	<method name="removeObjectBounds">
+		if (this.boundingref!=null) this.boundingref.removeIt();
+	</method>
+    
+	<method name="getObjectInBounds" args="x,y">
+		<![CDATA[
+		var tempList = new Array();
+		if ($debug) Debug.write("getObjectInBounds this.baseactionobjectList1: ",x,y,this.baseactionobjectList);
+		
+		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+			
+			
+			//if ($debug) Debug.write("c1 ",this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5],"<",x);
+            //if ($debug) Debug.write("c2 ",(this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5]+this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-3]),">",x);
+            //if ($debug) Debug.write("c3 ",this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4],"<",y);
+            //if ($debug) Debug.write("c4 ",( this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4]+this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-2] ),">",y);
+        
+			
+			if ( ( this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5]<=x 
+				&& ( (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5]+this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-3]) >=x ) ) 
+				&& ( this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4]<=y 
+				&& ( this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4]+this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-2] )>=y  ) ) {
+					
+				if (this.baseactionobjectList[eg][0] != "mindMapNode"
+				        && this.baseactionobjectList[eg][0] != "mindMapCenter")	{
+    				if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-7] == null) {
+        				tempList.push(this.baseactionobjectList[eg]);
+    		        } else {
+    		        	var swfObject = this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-7];
+    		        	
+    		        	if ($debug) Debug.write("getObjectInBounds :: swfObject ",swfObject.isVisible);
+    		        	
+    		        	if(swfObject.isVisible) {
+    	        	        tempList.push(this.baseactionobjectList[eg]);
+    		        	}
+    		        }
+		        }
+				////Debug.write("found obj: ",this.baseactionobjectList[eg]);
+			}
+		}		
+		return tempList;
+		]]>
+	</method>
+	
+	
+	<method name="getZIndex">
+		<![CDATA[
+			if ($debug) Debug.write("getZIndex ",this.subviews.length-1);
+			return this.subviews.length-1;
+		]]>
+	</method>
+	
+	
+	
+	<!-- ##################
+		SharedModus
+		action => type of action
+		actionObject => necessary information to reproduce the event
+		isWmlLoader => true means this object is loaded through a stored wml-file
+		so do not spread any update-notifications to connected clients for each 
+		object cause the file loading will make a seperate notification
+	 -->
+	<method name="sendWatchObject" args="action,actionObject,isWmlLoader">
+		if ($debug) Debug.write("sendWatchObject: ",action,actionObject);
+		<![CDATA[
+		if (action=='draw' || action=='redo'){
+			var lastactionObject = actionObject;
+			
+			//Redraw the View on the paintarea
+			if (actionObject[0]=='paint'){
+				this.paintactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='line'){
+				this.lineactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='uline'){
+				this.ulineactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='drawarrow'){
+				this.drawarrowlineactionHistory(lastactionObject,this);
+			} else if(action,actionObject[0]=='letter'){
+				this.drawactionHistory(lastactionObject,this);
+			} else if(actionObject[0]=='image'){
+				//Image will send the onwmlLoaderSend later cause it has to be send
+				//once the image has been loaded completely
+				this.addImageToLayerHistorySynced(lastactionObject,this);
+			} else if(actionObject[0]=='swf'){
+				//Image will send the onwmlLoaderSend later cause it has to be send
+				//once the image has been loaded completely
+				this.addSWFToLayerHistorySynced(lastactionObject,this);
+			} else if(actionObject[0]=='rectangle'){
+				this.drawrectangleToHistory(lastactionObject,this);
+			} else if(actionObject[0]=='triangle'){
+				this.drawtriangleToHistory(lastactionObject,this);
+			} else if(actionObject[0]=='ellipse'){
+				this.drawellipseToHistory(lastactionObject,this);
+			} else if(actionObject[0]=='pointerWhiteBoard'){
+                this.drawPointerToHistory(lastactionObject,this);
+            } else if(actionObject[0]=='flv'){
+                this.drawFlvToHistory(lastactionObject,this);
+            } else if(actionObject[0]=='mindMapCenter'){
+                this.drawMindMapCenterToHistory(lastactionObject,this);
+            } else if(actionObject[0]=='mindMapNode'){
+                this.drawMindMapNodeToHistory(lastactionObject,this);
+            } else if(actionObject[0]=='clipart'){
+                this.drawClipArtToHistory(lastactionObject,this);
+            }
+			//set counter to maximum otherwise trouble in naming conventions
+			//the 6th array index count from the end of each object is always the counter of the
+			//object
+			this.compareAndSetCounter(lastactionObject[lastactionObject.length-6]);
+			this.baseactionobjectList.push(lastactionObject);
+			
+			//Send a notifcation for the library loader sothat it can show progress
+			//and Browser does not hangUp and images can be proceed
+			//only send if type ain#t image cause image will send its own one after 
+			// it has been loaded completely
+			if (isWmlLoader && actionObject[0]!='image' && isWmlLoader && actionObject[0]!='swf') {
+				if (this.onwmlLoaderSend) this.onwmlLoaderSend.sendEvent(actionObject[0]);
+			}
+         
+        } else if(action=='clear'){
+            
+            this.clearRemote();
+            
+        } else if(action=='clearSlide'){
+            
+            this.clearSlideRemote(actionObject);
+            
+        } else if(action=='moveMap'){
+			
+			this.setAttribute("x",actionObject[1]);
+			this.setAttribute("y",actionObject[2]);
+			
+        } else if(actionObject[0]=='whiteboardObj'){
+            this.doUpdateFullFitAndZoomRemote(actionObject);
+		} else if(action=='flv'){
+			
+			this.playFLVRemote(actionObject);
+			
+		} else if(action=='addBrainStorming'){
+            
+            this.brainStormingIdeasGathering(actionObject);
+        
+        } else if(action=='addBrainStormingIdeaPhase2'){
+            
+        	//Adding Idea in Phase 2
+            this.addIdeaToPhase2(actionObject);
+        
+        } else if(action=='deleteBrainStorming'){
+			
+			this.brainStormingClose(actionObject);
+			
+		} else if(action=='updateBrainStormingPhase'){
+            
+            this.brainStormingPhase2(actionObject);
+            
+        } else if(action=='updateBrainStormingPhase'){
+            
+            this.brainStormingPhase2(actionObject);
+            
+        } else if(action=='updatePrioBrainStormingIdea'){
+            
+            this.updatePrioBrainStormingIdea(actionObject);
+        
+        } else if(action=='updateTextBrainStormingIdeaColor'){
+            
+            this.updateTextBrainStormingIdeaColor(actionObject);
+        
+        } else if(action=='updateBrainStormingGroupName'){
+            
+            this.updateBrainStormingGroupName(actionObject);
+            
+        } else if(action=='deleteBrainStormingGroup'){
+            
+            this.deleteBrainStormingGroup(actionObject);
+			
+		} else if(action=='deleteBrainStormingIdea'){
+            
+            this.deleteBrainStormingIdea(actionObject);
+			
+		} else if(action=='addBrainStormingGroup'){
+            
+            this.addNewGroupRemote(actionObject,false);
+            
+		} else if(action=='updateGroupBrainStormingIdea'){
+            
+			if (actionObject[3] == "") {
+                this.moveIdeaToResultListRemote(actionObject);
+			} else {
+                this.moveIdeaToGroupRemote(actionObject);
+			}
+			
+		} else if(action=='delete' || action=='undo'){
+			
+			var lastactionObject = actionObject;	
+			this.deleteItemByNameSync(lastactionObject[lastactionObject.length-1]);
+			
+		} else if(action=='size'){
+			
+			var lastactionObject = actionObject;	
+			
+			if (lastactionObject[0] == "clipart") {
+				
+				var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
+                obj.destroy();
+                
+                this.drawClipArtToHistory(lastactionObject,this);
+                
+                for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                    if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==lastactionObject[lastactionObject.length-1]) {
+                        
+                        //if ($debug) Debug.write("Found Object 1: ",this.baseactionobjectList[eg]);
+                        
+                        this.baseactionobjectList[eg] = lastactionObject;
+                        
+                        break;
+                    }
+                }   
+                
+                if (this.boundingIsActive) {
+                    this.reselectShowObjectBounds(lastactionObject[lastactionObject.length-1]);
+                }
+				
+			} else {
+			
+    			var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
+    			
+    			if ($debug) Debug.write("Set Size for Object ",obj);
+    			obj.setAttribute('x',lastactionObject[lastactionObject.length-5]);
+    			obj.setAttribute('y',lastactionObject[lastactionObject.length-4]);
+    			obj.setAttribute('width',lastactionObject[lastactionObject.length-3]);
+    			obj.setAttribute('height',lastactionObject[lastactionObject.length-2]);
+    			
+    			this.updateBaseObjectByName(lastactionObject[lastactionObject.length-1],
+    			                         lastactionObject[lastactionObject.length-5],
+    			                         lastactionObject[lastactionObject.length-4],
+    			                         lastactionObject[lastactionObject.length-3],
+    			                         lastactionObject[lastactionObject.length-2]);
+    			                         
+    			//if ($debug) Debug.write("BaseObject List ?? ",this.baseactionobjectList);
+    			
+                if (this.boundingIsActive) {
+                	this.boundingref.sendRemoteUpdate(obj)
+                }
+            
+			}
+			                         
+		} else if (action=="loadwml"){
+			//Debug.write(actionObject,actionObject["wmlfileName"],actionObject["wmlroom"],actionObject["wmldomain"]);
+			this.remoteWmlLoader(actionObject["wmlfileName"],actionObject["wmlroom"],actionObject["wmldomain"]);
+		} else if (action=="editText"){
+            this.editTextByHistory(actionObject,this);
+		}else if (action=="editTextMindMapFontColor") {
+            this.editTextMindMapFontColor(actionObject,this);
+        } else if (action=="editTextMindMapColor"){
+            this.editTextMindMapColor(actionObject,this);   
+        } else if (action=="editTextMindMapNode"){
+            this.editTextMindMapNode(actionObject,this);
+        } else if (action=="sendItemToFront"){
+            this.bringItemToFrontByName(actionObject[1]);
+        } else if (action=="initgetVars"){
+			//Debug.write("initUser isMod ",canvas.ismoderator,actionObject);
+			if (canvas.ismoderator){
+				//Debug.write("send all whiteBoard objects to new user");
+				var obj = new Array();
+			    obj[0] = 'whiteboard';
+			    obj[1] = 'inituser';
+			    obj[2] = this.baseactionobjectList;
+				this.oninitUser(actionObject,obj);
+			}
+		} else if (action=="swf"){
+			this.remoteObjectUpdate(actionObject);	
+		}
+		]]>
+	</method>
+	
+	
+	<method name="updateBaseObjectByName" args="tName,x,y,width,height">
+		<![CDATA[
+		
+		    
+		
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+            	
+            	if (this.baseactionobjectList[i][this.baseactionobjectList[i].length-1] == tName) {
+            		this.baseactionobjectList[i][this.baseactionobjectList[i].length-5] = x;
+            		this.baseactionobjectList[i][this.baseactionobjectList[i].length-4] = y;
+            		this.baseactionobjectList[i][this.baseactionobjectList[i].length-3] = width;
+            		this.baseactionobjectList[i][this.baseactionobjectList[i].length-2] = height;
+            		return;
+            	}
+            	
+            }
+		    
+            
+            if ($debug) Debug.warn("Could Not Find Item on List ",tName);
+		]]>
+	</method>
+	
+	<method name="sendRecordedObject" args="action,actionObject,isWmlLoader">
+		//Debug.write("sendWatchObject: ",action,actionObject);
+		<![CDATA[
+		if (action=='draw' || action=='redo'){
+			var lastactionObject = actionObject;
+			
+			//Redraw the View on the paintarea
+			if (actionObject[0]=='paint'){
+				this.paintactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='line'){
+				this.lineactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='uline'){
+				this.ulineactionHistory(lastactionObject,this);
+			} else if (actionObject[0]=='drawarrow'){
+				this.drawarrowlineactionHistory(lastactionObject,this);
+			} else if(action,actionObject[0]=='letter'){
+				this.drawactionHistory(lastactionObject,this);
+			} else if(actionObject[0]=='image'){
+				//Image will send the onwmlLoaderSend later cause it has to be send
+				//once the image has been loaded completely
+				this.addImageToLayerHistoryRecorded(lastactionObject,this,isWmlLoader);
+			} else if(actionObject[0]=='swf'){
+				//Image will send the onwmlLoaderSend later cause it has to be send
+				//once the image has been loaded completely
+				this.addSWFToLayerHistoryRecording(lastactionObject,this,isWmlLoader);
+			} else if(actionObject[0]=='rectangle'){
+				this.drawrectangleToHistory(lastactionObject,this);
+			} else if(actionObject[0]=='ellipse'){
+				this.drawellipseToHistory(lastactionObject,this);
+			}
+			//set counter to maximum otherwise trouble in naming conventions
+			//the 6th array index count from the end of each object is always the counter of the
+			//object
+			this.compareAndSetCounter(lastactionObject[lastactionObject.length-6]);
+			this.baseactionobjectList.push(lastactionObject);
+			
+			//Send a notifcation for the library loader sothat it can show progress
+			//and Browser does not hangUp and images can be proceed
+			//only send if type ain#t image cause image will send its own one after 
+			// it has been loaded completely
+			if (isWmlLoader && actionObject[0]!='image' && isWmlLoader && actionObject[0]!='swf') {
+				if (this.onwmlLoaderSend) this.onwmlLoaderSend.sendEvent(actionObject[0]);
+			}
+            
+		} else if(action=='clear'){
+			this.clearAll();
+		} else if(action=='delete' || action=='undo'){
+			var lastactionObject = actionObject;	
+			var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
+			obj.destroy();
+		} else if(action=='size'){
+			var lastactionObject = actionObject;	
+			var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
+			obj.setAttribute('x',lastactionObject[lastactionObject.length-5]);
+			obj.setAttribute('y',lastactionObject[lastactionObject.length-4]);
+			obj.setAttribute('width',lastactionObject[lastactionObject.length-3]);
+			obj.setAttribute('height',lastactionObject[lastactionObject.length-2]);
+		} else if (action=="loadwml"){
+			//Debug.write(actionObject,actionObject["wmlfileName"],actionObject["wmlroom"],actionObject["wmldomain"]);
+			this.remoteWmlLoaderRecording(actionObject["wmlfileName"],actionObject["wmlroom"],actionObject["wmldomain"]);
+		} else if (action=="editText"){
+			this.editTextByHistory(actionObject,this);
+		} else if (action=="initgetVars"){
+			//Debug.write("initUser isMod ",canvas.ismoderator,actionObject);
+			if (canvas.ismoderator){
+				//Debug.write("send all whiteBoard objects to new user");
+				var obj = new Array();
+			    obj[0] = 'whiteboard';
+			    obj[1] = 'inituser';
+			    obj[2] = this.baseactionobjectList;
+				this.oninitUser(actionObject,obj);
+			}
+		} else if (action=="swf"){
+			this.remoteObjectUpdate(actionObject);	
+		}
+		]]>
+	</method>
+	
+  	<method name="getSWFDocumentStatus">
+  		<![CDATA[
+  		
+  		    for (var i=0;i<this.baseactionobjectList.length;i++) {
+  		    	
+  		    	if (this.baseactionobjectList[i][0] == "swf") {
+  		    		
+  		    		var tSWF = new Object();
+  		    		
+  		    		tSWF.name = this.baseactionobjectList[i][this.baseactionobjectList[i].length-1];
+  		    		tSWF.slide = this.baseactionobjectList[i][8];
+  		    		tSWF.isVisible = true;
+  		    		
+  		    		return tSWF;
+  		    	}
+  		    	
+  		    }
+  		    
+  		    return null;
+  		]]>
+  	</method>
+
+    <method name="checkSWFDocumentStatus" args="swfObj">
+        <![CDATA[
+        
+            if (swfObj != null) {
+        
+                var swfBaseObj = this.getBaseObjectByName(swfObj.name);
+                
+                if (swfBaseObj != null) {
+            
+                    if (swfObj.slide == swfBaseObj[8]) {
+                    	return true;
+                    } else {
+                    	return false;
+                    }
+                    
+                }
+            
+            }
+            
+            return true;
+        ]]>
+    </method>
+
+    <method name="doSWFDocumentStatus" args="refObj,swfObj">
+        <![CDATA[
+        
+            if (swfObj != null) {
+        
+                if (swfObj.isVisible) {
+                	
+                	refObj.setAttribute("visibility","visible");
+                	
+                } else {
+                	
+                	refObj.setAttribute("visibility","hidden");
+                	
+                }
+            
+            } else {
+            	
+            	refObj.setAttribute("visibility","visible");
+            	
+            }
+            
+        ]]>
+    </method>
+    
+    <method name="updateObjectsToSlideNumber" args="baseObject">
+    	<![CDATA[
+    	
+            var baseObjectName = baseObject[baseObject.length-1];
+            var slidesNumber = baseObject[8];
+    	   
+            if ($debug) Debug.write("updateObjectsToSlideNumber :: ",baseObjectName,slidesNumber)
+    	
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+    	   	
+                if (this.baseactionobjectList[i][0] == "ellipse" 
+                        || this.baseactionobjectList[i][0] == "drawarrow"
+                        || this.baseactionobjectList[i][0] == "line"
+                        || this.baseactionobjectList[i][0] == "paint"
+                        || this.baseactionobjectList[i][0] == "rectangle"
+                        || this.baseactionobjectList[i][0] == "uline"
+                        || this.baseactionobjectList[i][0] == "image"
+                        || this.baseactionobjectList[i][0] == "clipart"
+                        || this.baseactionobjectList[i][0] == "letter") {
+                	
+                	var swfObj = this.baseactionobjectList[i][this.baseactionobjectList[i].length-7];
+                	if ($debug) Debug.write("swfObj :: ",swfObj);
+                	
+                	if (swfObj != null) {
+                		
+                		if (swfObj.name == baseObjectName) {
+                			
+                			if (swfObj.slide == slidesNumber) {
+                				
+                				swfObj.isVisible = true;
+                				
+                				this.baseactionobjectList[i][this.baseactionobjectList[i].length-7] = swfObj; 
+                				
+                				this[this.baseactionobjectList[i][this.baseactionobjectList[i].length-1]].setAttribute("visibility","visible");
+                				
+                			} else {
+                				
+                				swfObj.isVisible = false;
+                				
+                				this.baseactionobjectList[i][this.baseactionobjectList[i].length-7] = swfObj; 
+                				
+                				this[this.baseactionobjectList[i][this.baseactionobjectList[i].length-1]].setAttribute("visibility","hidden");
+                				
+                			}
+                			
+                		}
+                		
+                	}
+                	
+                }
+    	   	
+            }
+    	
+    	]]>
+    </method>
+    
+    <method name="updateAllObjectsToSlideNumber">
+        <![CDATA[
+        
+            if ($debug) Debug.write(" :: updateAllObjectsToSlideNumber :: ")
+        
+            for (var i=0;i<this.baseactionobjectList.length;i++) {
+            
+                if (this.baseactionobjectList[i][0] == "ellipse" 
+                        || this.baseactionobjectList[i][0] == "drawarrow"
+                        || this.baseactionobjectList[i][0] == "line"
+                        || this.baseactionobjectList[i][0] == "paint"
+                        || this.baseactionobjectList[i][0] == "rectangle"
+                        || this.baseactionobjectList[i][0] == "uline"
+                        || this.baseactionobjectList[i][0] == "image"
+                        || this.baseactionobjectList[i][0] == "letter") {
+                    
+                    var swfObj = this.baseactionobjectList[i][this.baseactionobjectList[i].length-7];
+                    if ($debug) Debug.write("swfObj :: ",swfObj);
+                    
+                    if (swfObj != null) {
+                        
+                            
+                        if (swfObj.isVisible) {
+                            
+                            this[this.baseactionobjectList[i][this.baseactionobjectList[i].length-1]].setAttribute("visibility","visible");
+                            
+                        } else {
+                            
+                            this[this.baseactionobjectList[i][this.baseactionobjectList[i].length-1]].setAttribute("visibility","hidden");
+                            
+                        }
+                            
+                        
+                    }
+                    
+                }
+            
+            }
+        
+        ]]>
+    </method>
+
+    <dragstate name="dragger"/>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDrawImage.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDrawImage.lzx
new file mode 100644
index 0000000..5e883a7
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDrawImage.lzx
@@ -0,0 +1,349 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawImage" extends="baseDrawLetter">
+	
+  	<!-- attribute shows if this image is loaded as part of a wml-file-object
+		if true it will send a onwmlLoaderSend message and NO extra loading bar
+		if false it will show a loading abr for that image
+	-->
+	<attribute name="isWmlLoaderImage" value="false" type="boolean" />
+    
+    <!-- indicates if this client is still loading an old image for the screenViwer -->
+    <attribute name="isScreenImageLoading" value="false" type="boolean" />
+    <attribute name="screenImageRefNumber" value="1" type="number" />
+    <attribute name="screenImageRef1" value="null" />
+    <attribute name="screenImageRef2" value="null" />
+	
+    <event name="setNewScreenUserName" />
+  	
+  	<!-- invoked by clicking on the confirmation dialog after 
+  		clicking on an image in the Library -->
+  	<method name="addNewSyncImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain">
+  		if ($debug) Debug.write("urlname: ",urlname);
+  		var now = new Date();
+  		//This invokes a Method which is in the remoteWhiteboard.lzx
+  		this.startNewObjectSyncProcess.isStarting = true;
+  		this.startNewObjectSyncProcess.uniqueObjectSyncName = fileName + now.getTime();
+  		this.startNewObjectSyncProcess.doCall();
+  		this.addNewImage(urlname,posx,posy,baseurl,fileName,
+  			moduleName,parentPath,room,domain,
+  			this.startNewObjectSyncProcess.uniqueObjectSyncName,false);
+  	</method>
+  	
+  	<!-- standard add Function -->
+  	<method name="addNewImage" args="urlname,posx,posy,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
+  		if ($debug) Debug.write("urlname posx: ",urlname,posx);
+  		this.addImageToLayer(this,'image'+this.getCounter(),urlname,
+  			posx,posy,0,0,
+  			true,
+  			baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync);
+  	</method>
+  	
+	<!--
+		alterModus => this is added by the mod not remotely
+		
+	 -->
+  	<method name="addImageToLayer" args="obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,uniqueObjectSyncName,isLocalSync">
+        <![CDATA[
+			//only show if it is not part of wml-file-object
+			//do not show at all as this is handled via the remote Object
+			//if (!this.isWmlLoaderImage) {
+			//	this.loadimageDataWinRef = new lz.loadWhiteboardWindow(canvas.main_content._content.inner,{refObj:this});
+			//	this.loadimageDataWinRef.setMessage(canvas.getLabelName(this.imageLoadMessageId));
+			//}
+			
+            if ($debug) Debug.write("addImageToLayer ",urlname);
+        	//if ($debug) Debug.write("addImageToLayer ",obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain);
+			//if ($debug) Debug.write("addImageToLayer posx ",posx);
+        	
+	  		if ($debug) Debug.write("addImageToLayer urlname : ", canvas.getUrl() + 'DownloadHandler');
+			var src = canvas.getUrl() + 'DownloadHandler' + '?fileName=' + encodeURIComponent(fileName) + 
+				'&moduleName=' + moduleName +
+				'&parentPath=' + encodeURIComponent(parentPath) +
+				'&room_id=' + room + 
+				'&sid=' + canvas.sessionId;
+	
+	        if ($debug) Debug.write("addImageToLayer -src- ",src);
+		      
+			if ($debug) Debug.write("alterModus: ",alterModus);
+			
+	  		this.currentlayer = new lz.imageForDrawView(obj,{
+	  			src:src,refObj:this,name:nameing,x:posx,y:posy,
+	  			remotewidth:width,remoteheight:height,
+	  			downloadurl:urlname,alterModus:alterModus,
+	  			baseurl:baseurl,fileName:fileName,moduleName:moduleName,
+	  			parentPath:parentPath,room:room,domain:domain,
+	  			uniqueObjectSyncName:uniqueObjectSyncName,
+	  			isLocalSync:isLocalSync});	
+			
+			//this.parent.parent.isloadingImage.sendEvent(this.currentlayer);
+			//this.parent._loading.setAttribute('visible',true);
+			
+			//Add Layer to global Layer  	
+		    return this.currentlayer;
+		]]>
+  	</method>
+  	
+  	<!--
+  	    @deprecated
+  	 -->
+  	<method name="addImageToLayerRecorded" args="obj,nameing,urlname,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain">
+        <![CDATA[
+			//only show if it is not part of wml-file-object
+			if (!this.isWmlLoaderImage) {
+				this.loadimageDataWinRef = new lz.loadWhiteboardWindow(canvas.main_content._content.inner,{refObj:this});
+				this.loadimageDataWinRef.setMessage(canvas.getLabelName(this.imageLoadMessageId));
+			}
+			var src = baseurl+'?fileName='+fileName+'&moduleName='+moduleName+'&parentPath='+parentPath+'&room_id='+room+'&sid='+canvas.sessionId;
+	
+			this.currentlayer = new lz.imageForDrawView(obj,{
+				src:src,refObj:this,name:nameing,x:posx,y:posy,
+				downloadurl:urlname,remotewidth:width,remoteheight:height,
+				alterModus:alterModus,baseurl:baseurl,fileName:fileName,
+				moduleName:moduleName,parentPath:parentPath,
+				room:room,domain:domain,recorderModus:true});
+
+			this.parent.parent.isloadingImage.sendEvent(this.currentlayer);
+			//this.parent._loading.setAttribute('visible',true);
+			//Add Layer to global Layer  	
+		    return this.currentlayer;
+		]]>
+  	</method>
+  	
+  	<method name="incomingScreenSharing" args="value">
+        <![CDATA[
+		//only do if last image has been loading successfully
+            if (!this.isScreenImageLoading){
+                this.isScreenImageLoading = true;
+                var downloadurl = canvas.getUrl() + 'ScreenViewHandler?'
+                    +'fileName='+encodeURIComponent(value.fileName)
+                    +'&room='+hib.currentroomid
+                    +'&domain='+hib.conferencedomain
+                    +'&sid='+canvas.sessionId;
+            
+                //Debug.write("incomingScreenSharing URL: ",downloadurl);
+                if (this.screenImageRefNumber==1){
+                    this.screenImageRef1 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen1',x:0,y:0,downloadurl:downloadurl});
+                    this.screenImageRefNumber = 2;
+                } else if (this.screenImageRefNumber==2){
+                    this.screenImageRef2 = new lz.imageForScreenViewer(this,{visible:false,src:downloadurl,refObj:this,name:'screen2',x:0,y:0,downloadurl:downloadurl});
+                    this.screenImageRefNumber = 1;
+                }
+                this.setNewScreenUserName.sendEvent('Screen of User: '+value.user.firstname+','+value.user.lastname);
+            } else {
+                //Debug.write("frame dropped!");
+                Debug.warn("frame dropped!");
+                (new lz.singletonErrorPopupHolder()).setError(canvas.getLabelName(240));
+            }
+		]]>
+  	</method>   
+    
+    <!--
+    TODO: Make new Base Class including the Screen sharing Functions
+     -->
+    <method name="toggleVisibleScreenSharing">
+        if (this.screenImageRefNumber==1){
+            if (this.screenImageRef1) this.screenImageRef1.destroy();
+            this.screenImageRef2.setAttribute('visible',true);
+        } else if (this.screenImageRefNumber==2){
+            this.screenImageRef1.setAttribute('visible',true);
+            if (this.screenImageRef2) this.screenImageRef2.destroy();
+        }
+        this.isScreenImageLoading = false;
+    </method> 
+	
+	<!--
+		actionObject => attributes neccessary for loading image
+		refObj = drawarea
+		isWmlLoader => (true)is loaded as part of wml-object
+		
+		-->
+		
+	<!-- method adds a new Image to the Layer,
+	but without making an Update-Event, 
+	Image added by remote host -->	
+  	<method name="addImageToLayerHistorySynced" args="actionObject,refObj">
+  		if ($debug) Debug.write("addImageToLayerHistory: ",actionObject,refObj);
+  		//start sync process using the remote uniqueObjectSyncName as identifier
+  		//This invokes a Method which is in the remoteWhiteboard.lzx
+  		this.startNewObjectSyncProcess.isStarting = false;
+  		this.startNewObjectSyncProcess.uniqueObjectSyncName = actionObject[8];
+  		this.startNewObjectSyncProcess.doCall();
+  		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
+		  		actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+		  		actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+		  		false,
+		  		actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+		  		actionObject[6],actionObject[7],actionObject[8],false);
+		  		
+  		this.doSWFDocumentStatus(this.currentlayer,actionObject[actionObject.length-7]);
+  	</method>
+  			
+  	<!--- 
+		invoke by the initial Loading process in remoteWhiteboard.lzx, 
+		does not invoke any Update Handler
+		once this object is loaded, it will throw an Update event of kind
+		addImageToLayerHistoryToLocalLoaded		
+  	 -->
+  	<method name="addImageToLayerHistoryToLocal" args="actionObject,refObj">
+  		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",actionObject,refObj);
+  		this.addImageToLayer(refObj,actionObject[actionObject.length-1],actionObject[1],
+		  		actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+		  		actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+		  		false,
+		  		actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+		  		actionObject[6],actionObject[7],actionObject[8],true);
+  	</method>
+  	
+  	<!-- 
+  		this handler is implemented also in remoteWhiteboard.lzx to sync a Local Object list
+  		but throws NO Update Event, cause its only needed Locally, the whole Sync Process
+  		has a different Sync-Object for Loading the complete Object List from the Sever.
+  		Each Object is loaded Locally, once all Objects are loaded the Complete-Event is broadcasted
+  		to the server, but every Item on the List is only controlled locally
+  	-->
+  	<handler name="addImageToLayerHistoryToLocalLoaded" args="objRef">
+  		if ($debug) Debug.write("addImageToLayerHistoryToLocal: ",objRef);
+		this.syncImageRefObj = objRef;
+		
+		this.registerNewImage(this.syncImageRefObj.src,
+			this.syncImageRefObj.x,this.syncImageRefObj.y,
+			this.syncImageRefObj.width,this.syncImageRefObj.height,
+			this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
+			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
+			this.syncImageRefObj.room,this.syncImageRefObj.domain,
+			false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
+                this.getZIndex());
+  	</handler>
+  	
+  	<!--- @keywords deprecated
+  	TODO: uniqueObjectSyncName missing
+  	 -->
+  	<method name="addImageToLayerHistoryRecorded" args="actionObject,refObj,isWmlLoader">
+		this.isWmlLoaderImage = isWmlLoader;
+  		this.addImageToLayerRecorded(refObj,
+  			actionObject[actionObject.length-1],actionObject[1],
+  			actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+  			actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+  			false,
+  			actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+  			actionObject[6],actionObject[7]);
+  	</method>
+  	
+  	<method name="registerNewImage" args="urlname,posx,posy,width,height,baseurl,fileName,moduleName,parentPath,room,domain,doCallUpdate,uniqueObjectSyncName,swfObj,zIndex">
+		if ($debug) Debug.write("registerNewImage doCallUpdate: ",doCallUpdate);
+		if ($debug) Debug.write("registerNewImage swfObj: ",swfObj);
+		var actionObject = new Array();
+	    actionObject.push('image');
+	    actionObject.push(urlname);
+		actionObject.push(baseurl);
+		actionObject.push(fileName);
+		actionObject.push(moduleName);
+		actionObject.push(parentPath);
+		actionObject.push(room);
+		actionObject.push(domain);
+		actionObject.push(uniqueObjectSyncName);
+		actionObject.push(zIndex);//-8
+		actionObject.push(swfObj);//-7
+		actionObject.push(this.counter);//-6
+	    actionObject.push(posx);//-5
+	    actionObject.push(posy);//-4
+	    actionObject.push(width);//-3
+	    actionObject.push(height);//-2
+	    actionObject.push(this.currentlayer.name);//-1
+	    this.baseactionobjectList.push(actionObject);	
+	    this.checkStepLayers();
+	    if (doCallUpdate) this.onsharedMessage('draw',actionObject);	
+  	</method>
+	
+	<!-- 
+		adds the Image to the Layers and throws a onsharedMessage,
+		this can only happen _after_ loading the Image cause you do not know its 
+		width and height 
+	-->
+	<method name="storeTempValsAndLoadSyncList" args="objRef">
+		if ($debug) Debug.write("storeTempValsAndLoadSyncList: ",objRef);
+		this.syncImageRefObj = objRef;
+		
+		//This invokes a Method which is in the remoteWhiteboard.lzx
+		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
+		this.sendCompletedObjectSyncEvent.doCall();
+		
+		this.registerNewImage(this.syncImageRefObj.src,
+			this.syncImageRefObj.x,this.syncImageRefObj.y,
+			this.syncImageRefObj.width,this.syncImageRefObj.height,
+			this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
+			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
+			this.syncImageRefObj.room,this.syncImageRefObj.domain,
+			true,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
+                this.getZIndex());		
+	
+	</method>
+	
+	<!--- @keywords deprecated
+  	TODO: check Recorder Modus
+  	 -->
+	<method name="storeTempValsAndLoadSyncListRecording" args="objRef">
+		if ($debug) Debug.write("########### storeTempValsAndLoadSyncListRecording: ",objRef);
+		this.syncImageRefObj = objRef;
+		this.doRegisterAfterLoadingOrRecording();
+		this.sendCompleteImageSync();
+	</method>
+	
+	<method name="sendLoadNotificationImage" args="objRef" >
+		if ($debug) Debug.write("sendLoadNotificationImage: ",objRef);
+		this.syncImageRefObj = objRef;
+		this.registerNewImage(this.syncImageRefObj.src,
+			this.syncImageRefObj.x,this.syncImageRefObj.y,
+			this.syncImageRefObj.width,this.syncImageRefObj.height,
+			this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
+			this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
+			this.syncImageRefObj.room,this.syncImageRefObj.domain,
+			false,this.syncImageRefObj.uniqueObjectSyncName,this.getSWFDocumentStatus(),
+                this.getZIndex());	
+		//This invokes a Method which is in the remoteWhiteboard.lzx
+		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
+		this.sendCompletedObjectSyncEvent.doCall();
+	</method>
+    
+    <!--- @keywords deprecated
+    TODO: Check recorder Modus
+     -->
+    <method name="doRegisterAfterLoadingOrRecording">
+    	if ($debug) Debug.write("########### doRegisterAfterLoadingOrRecording");
+		this.imageSyncMessageText = canvas.getLabelName(this.imageSyncMessageId);
+		//now send notifications to connected clients
+		this.setAttribute('drawmodus','image');
+		this.registerNewImage(this.syncImageRefObj.src,
+		              this.syncImageRefObj.x,this.syncImageRefObj.y,
+		              this.syncImageRefObj.width,this.syncImageRefObj.height,
+		              this.syncImageRefObj.baseurl,this.syncImageRefObj.fileName,
+		              this.syncImageRefObj.moduleName,this.syncImageRefObj.parentPath,
+		              this.syncImageRefObj.room,this.syncImageRefObj.domain,
+		              this.getSWFDocumentStatus(),
+                      this.getZIndex());		
+    </method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDrawLetter.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDrawLetter.lzx
new file mode 100644
index 0000000..489d99e
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDrawLetter.lzx
@@ -0,0 +1,322 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="whiteBoardTextField" extends="text" >
+	<handler name="prepareForDelete" args="tRef">
+		//Nothing
+	</handler>
+	<attribute name="typeOfObject" value="text" type="string" />
+	<method name="setTextEncoded" args="tString">
+		<![CDATA[
+		
+		    while (tString.indexOf("<") > 0) {
+		    	tString = tString.replace("<","&#60;");
+		    }
+    		
+		    while (tString.indexOf(">") > 0) {
+                tString = tString.replace(">","&#62;");
+		    }
+    		
+    		this.setAttribute("text",tString);
+		]]>
+	</method>
+</class>
+
+<class name="baseDrawLetter" extends="baseDrawObject">
+
+	<attribute name="currentletterObj" value="null" />
+	
+	<attribute name="letterObjectIsActive" value="false" type="boolean" />
+	
+	<attribute name="edittextLetterObject" value="null" />
+	
+	<attribute name="edittextLetter" value="false" type="boolean" />
+	
+	<method name="letterObjectFree" args="obj">
+		this.setAttribute('letterObjectIsActive',false);
+		if (this.edittextLetter){
+			this.edittextLetter = false;
+			this.setModus('hand');
+		}
+	</method>
+	<method name="letterObjectClose" args="obj">
+		this.setAttribute('letterObjectIsActive',true);
+	</method>
+	
+    <!-- The Color of the letter Object  -->
+  	<attribute name="currentlayerletter" value="0x000000" setter="this.setNewLayerLetter(currentlayerletter)" />
+    
+    <!-- The Size of the Letter Object -->
+  	<attribute name="currentlayersize" value="12" type="number" setter="this.setNewLayerSize(currentlayersize)" />
+  	
+  	<!-- "plain", "bold" , "italic" or "bolditalic". -->
+  	<attribute name="currentlayerstyle" value="plain" type="string" setter="this.setNewLayerStyle(currentlayerstyle)" />
+    
+    <method name="setNewLayerLetter" args="cl">
+        this.currentlayerletter=cl;
+        this.sendNewStyle.sendEvent();
+    </method>
+    
+    <method name="setNewLayerSize" args="cs">
+        this.currentlayersize=cs;
+        this.sendNewStyle.sendEvent();
+    </method>
+    
+    <method name="setNewLayerStyle" args="cs">
+        this.currentlayerstyle=cs;
+        this.sendNewStyle.sendEvent();
+    </method>
+  	
+    <!-- Send Update Events to current Letter Object -->
+    <handler name="sendNewStyle">
+        if (this.letterObjectIsActive){
+            this.currentletterObj.newStyleEvent.sendEvent()
+        }
+    </handler>
+    
+  	<attribute name="italic" value="false" type="boolean" setter="this.setitalic(italic)" />
+  	<attribute name="bold" value="false" type="boolean" setter="this.setbold(bold)" />
+  	<method name="setitalic" args="b">
+  		this.italic = b;
+  		this.doalterStyle();
+  	</method>
+  	<method name="setbold" args="b">
+  		this.bold = b;
+  		this.doalterStyle();
+  	</method>
+  	<method name="doalterStyle">
+  		<![CDATA[
+  		if (this.isinited){
+	  		if (this.bold && this.italic){
+	  			this.setAttribute('currentlayerstyle','bolditalic');
+	  		} else if(!this.bold && this.italic){
+	  			this.setAttribute('currentlayerstyle','italic');
+	  		} else if(this.bold && !this.italic){
+	  			this.setAttribute('currentlayerstyle','bold');
+	  		} else if(!this.bold && !this.italic){
+	  			this.setAttribute('currentlayerstyle','plain');
+	  		}
+	  		//Debug.write("d: ",this.getAttribute('currentlayerstyle'));
+  		}
+  		]]>
+  	</method>
+	
+	<method name="editTextByValues" args="obj,txtName,txt,x,y,width,height">
+		<![CDATA[
+			if (!this.letterObjectIsActive){
+			    //Debug.write("editTextByValues",height); 
+			    this.edittextLetterObject = obj;
+				this.currentletterObj = new lz.baseDrawWords(this,{refObj:this,x:x,y:y,
+					initTextName:txtName,inittext:txt,width:width,height:height});
+				this.edittextLetter = true;
+			}	
+		]]>
+	</method>
+  	
+		<method name="drawTextField" args="textforfield,width,height,x,y" >
+
+			//Debug.write("drawTextField: ",textforfield,width,x,y);
+			var tempO = this.newTextField(this, 'letter' + this.getCounter(),
+					textforfield, width, height, x, y, this.currentlayersize,
+					this.currentlayerletter, this.currentlayerstyle);
+			this.layers.push(tempO);
+			this.drawTextFieldregister(textforfield, width, x, y,
+					this.currentlayersize, this.currentlayerletter,
+					this.currentlayerstyle, tempO.height, this
+							.getSWFDocumentStatus(), this.getZIndex());
+		</method>
+	
+	<!-- editModus -->
+	<method name="setTextFieldByName" args="txtName,textforfield,width,x,y,height" >
+		if ($debug) Debug.write("drawTextFieldByName ",txtName,textforfield,width,x,y);
+		//this.checkForChanges(txtName,textforfield,width,x,y,height);
+		this.edittextLetterObject.setAttribute('text',textforfield);
+		this.edittextLetterObject.setTextEncoded(textforfield);
+		this.edittextLetterObject.setAttribute('width',width);
+		this.edittextLetterObject.setAttribute('height',height);
+		this.edittextLetterObject.setAttribute('visible',true);
+		this.edittextLetterObject.setAttribute('fontsize',this.currentlayersize);
+		this.edittextLetterObject.setAttribute('fgcolor',this.currentlayerletter);
+		this.edittextLetterObject.setAttribute('fontstyle',this.currentlayerstyle);
+		this.updateObjectBounds();
+		this.updateByEditLetterObject();
+		//this.setModus('hand');
+	</method>	
+	
+	<method name="startLetter" args="oid_name">
+		if (oid_name == null) {
+			oid_name = 'letterTemp'+this.getCounter();
+		}		
+    	this.currentlayer = new lz.drawViewNew(this,{name:oid_name,width:this.width+2,height:this.height+2});
+	</method>
+	
+	<method name="drawletterBoundingBox" args="x1,y1,x2,y2">
+   		<![CDATA[
+    		
+    		currentlayer.lineWidth = 1;
+    		currentlayer.beginPath();
+    		currentlayer.moveTo(x1,y1);
+    		currentlayer.lineTo(x1,y2);
+    		currentlayer.lineTo(x2,y2);
+    		currentlayer.lineTo(x2,y1);
+    		currentlayer.lineTo (x1,y1);
+    		currentlayer.closePath();
+    		
+    		currentlayer.strokeStyle = 0x000000;
+    		currentlayer.stroke();
+    		
+    	]]>   
+  	</method>    
+  	
+	<method name="endLetter">
+		<![CDATA[
+			if ($debug) Debug.write("endLetter: ", this.currentlayer);
+			this.currentlayer.destroy();
+			var xProp = 0;
+			var yProp = 0;
+			if (this.startx <= this.endx) {
+				var stx = this.startx;
+			} else {
+				var stx = this.endx;
+			}
+			if (this.starty <= this.endy) {
+				var sty = this.starty;
+			} else {
+				var sty = this.endy;
+			}
+			var width = Math.abs(this.startx - this.endx);
+			var height = Math.abs(this.starty - this.endy);
+			if (width < 20 && height < 20) {
+				width = 160;
+				height = 30;
+			}
+
+			this.currentletterObj = new lz.baseDrawWords(this, {
+						refObj : this,
+						x : xProp + stx,
+						y : yProp + sty,
+						width : width,
+						height : height
+					});
+
+			if ($debug) Debug.write("currentletterObj: ", this.currentletterObj.x, this.currentletterObj.y);
+		]]>
+	</method>
+	
+	
+	<method name="updateByEditLetterObject" >
+		<![CDATA[
+		if ($debug) Debug.write("UpdateByObject : ",this.edittextLetterObject,this.edittextLetterObject.name);
+		var objName = this.edittextLetterObject.name;
+
+		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+			if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==objName) {
+				if ($debug) Debug.write("Found Object: ",this.baseactionobjectList[eg]);
+			    this.baseactionobjectList[eg][1] = this.edittextLetterObject.text;
+			    this.baseactionobjectList[eg][2] = this.edittextLetterObject.fgcolor;
+			    this.baseactionobjectList[eg][3] = this.edittextLetterObject.fontsize;
+			    this.baseactionobjectList[eg][4] = this.edittextLetterObject.fontstyle;			
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5] = this.edittextLetterObject.x
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4] = this.edittextLetterObject.y;
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-3] = this.edittextLetterObject.width;
+				this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-2] = this.edittextLetterObject.height;
+				var newA = this.baseactionobjectList[eg];
+				if (newA[0]=='paint') newA[1] = new Array();				
+				this.onsharedMessage('editText',newA);	
+			    break;
+			}
+		}	
+			
+		]]>
+	</method>	
+	
+	<method name="editTextByHistory" args="actionObject,obj">
+		var editObj = this.getObjectByName(actionObject[actionObject.length-1]);
+		//Debug.write("editTextByHistory: ",editObj,actionObject,actionObject.length);
+		editObj.setAttribute('text',actionObject[1]);
+		editObj.setTextEncoded(actionObject[1]);
+		editObj.setAttribute('width',actionObject[actionObject.length-3]);
+		editObj.setAttribute('height',actionObject[actionObject.length-2]);
+		editObj.setAttribute('fontsize',actionObject[3]);
+		editObj.setAttribute('fgcolor',actionObject[2]);
+		editObj.setAttribute('fontstyle',actionObject[4]);
+	</method>
+	
+	<method name="checkForChanges" args="txtName,textforfield,width,x,y,height">
+		<![CDATA[
+			//Debug.write("checkForChanges: 1 ",txtName,textforfield,width,x,y,height);
+			//Debug.write("checkForChanges: 2 ",this.edittextLetterObject.name,this.edittextLetterObject.text,this.edittextLetterObject.width,this.edittextLetterObject.x,this.edittextLetterObject.y,this.edittextLetterObject.height);
+			//there is always a change
+			
+		]]>
+	</method>	
+	
+	<method name="drawactionHistory" args="actionObject,obj">
+		this.newTextField(obj,actionObject[actionObject.length-1],actionObject[1],
+		              actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+		              actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+		              actionObject[3],actionObject[2],actionObject[4]);
+		              
+		this.doSWFDocumentStatus(this.currentlayer,actionObject[actionObject.length-7]);
+	</method>
+	
+		<method name="newTextField" args="obj,naming,textforfield,width,height,x,y,fontsize,fgcolor,fontstyle">
+			this.currentlayer = new lz.whiteBoardTextField(obj, {
+						name : naming,
+						x : x,
+						y : y,
+						height : height,
+						multiline : true,
+						width : width,
+						text : textforfield,
+						fontsize : fontsize,
+						fgcolor : fgcolor,
+						fontstyle : fontstyle
+					});
+			this.currentlayer.setTextEncoded(textforfield);
+			//Add Layer to global Layer  	
+			return this.currentlayer;
+		</method>
+	
+	<method name="drawTextFieldregister" args="textforfield,width,x,y,fontsize,fgcolor,fontstyle,height,swfObj,zIndex">
+		var actionObject = new Array();
+	    actionObject[0] = "letter";
+	    actionObject[1] = textforfield;
+	    actionObject[2] = fgcolor;
+	    actionObject[3] = fontsize;
+	    actionObject[4] = fontstyle;
+	    actionObject[5] = zIndex;//-8
+	    actionObject[6] = swfObj;//-7
+		actionObject[7] = this.counter;//-6
+	    actionObject[8] = x;//-5
+	    actionObject[9] = y;//-4
+	    actionObject[10] = width;//-3
+	    actionObject[11] = height;//-2
+	    actionObject[12] = this.currentlayer.name;//-1	    	    
+	    this.baseactionobjectList.push(actionObject);	
+	    this.checkStepLayers();
+	    this.onsharedMessage('draw',actionObject);	
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDrawObject.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDrawObject.lzx
new file mode 100644
index 0000000..4e2a238
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDrawObject.lzx
@@ -0,0 +1,862 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawObject" extends="baseDrawPointer">
+    
+    <!-- it uses some of the attribute's defined in baseDrawImage -->
+    <attribute name="newSlideNumber" value="1" type="number" />
+    
+    <attribute name="fullFit" value="true" type="boolean" />
+    
+    <attribute name="modernToolbar" value="false" type="boolean" />
+
+    <!-- 
+    	Invoked by the Library directly
+    	Loads a SWFPresenation to the whiteBoard
+     -->
+    <method name="loadSWFPresentationSynced" args="url,fileName,moduleName,parentPath,room,domain,slideNumber,standardFileName">
+  		var now = new Date();
+  		//This invokes a Method which is in the remoteWhiteboard.lzx
+  		this.startNewObjectSyncProcess.isStarting = true;
+  		this.startNewObjectSyncProcess.uniqueObjectSyncName = fileName + now.getTime();
+  		this.startNewObjectSyncProcess.doCall();
+        //if ($debug) Debug.write("loadSWFPresentationSynced",url,fileName,moduleName,parentPath,room,domain,slideNumber,standardFileName);
+        this.addPresentationToLayer(this,url,'swfpresentationobject'+this.getCounter(),
+        	0,0,0,0,
+        	true,
+        	url,fileName,moduleName,parentPath,room,domain,slideNumber,
+        	100,0,0,0,0,
+        	this.startNewObjectSyncProcess.uniqueObjectSyncName,
+            standardFileName,this.fullFit);
+            
+        
+    </method>
+    
+    <method name="setCurrentScaleByFullFit" args="scaleFactor">
+    	<![CDATA[
+    	
+    		var tScale = Math.round(scaleFactor*100);
+    		
+    		this.getDisplayObject()._xscale = tScale;
+    		this.getDisplayObject()._yscale = tScale;
+    		
+    		this.setAttribute("x",0);
+    		this.setAttribute("y",0);
+    		
+    		//Already send by x,y change
+    		//this.onupdateScale.sendEvent(null);
+    		if ($debug) Debug.write("setCurrentScaleByFullFit -1- ",tScale);
+    		
+    		parent.parent.zoombox.setCurrentScaleByFullFit(tScale);
+    	
+    	]]>
+    </method>
+    
+    <method name="doUpdateFullFit" args="fullFit,zoom">
+    	<![CDATA[
+    	
+            if (canvas.ismoderator) {
+	    		if ($debug) Debug.write("doUpdateFullFit ",fullFit,zoom);
+	    	
+	    		var actionObject = new Array();
+	    		actionObject.push("whiteboardObj");
+	    		actionObject.push(fullFit);
+	    		
+	    		this.doFullFit(fullFit);
+	    		
+	    		actionObject.push(this.getDisplayObject()._xscale);
+	    		
+	    		if ($debug) Debug.write("doUpdateFullFit ",fullFit,this.getDisplayObject()._xscale);
+	    		this.onsharedMessage('whiteboardObj',actionObject);
+    		}	
+    	
+    	]]>
+    </method>
+    
+    <method name="doUpdateZoom" args="fullFit,zoom">
+    	<![CDATA[
+    	
+    		if ($debug) Debug.write("doUpdateZoom ",this.fullFit,zoom);
+    		
+    		this.getDisplayObject()._xscale = zoom;
+    		this.getDisplayObject()._yscale = zoom;
+    		
+    		if ($debug) Debug.write("doUpdateZoom is moderator ", canvas.ismoderator);
+            if (canvas.ismoderator) {
+	    		var actionObject = new Array();
+	    		actionObject.push("whiteboardObj");
+	    		actionObject.push(fullFit);
+	    		actionObject.push(zoom);
+    		
+	    		this.onupdateScale.sendEvent(null);
+	    		this.onsharedMessage('whiteboardObj',actionObject);	
+            }
+    	
+    	]]>
+    </method>
+    
+    <method name="doUpdateFullFitAndZoomRemote" args="actionObject">
+    	<![CDATA[
+    		parent.parent.zoombox.setWhiteboardValues(actionObject[1],actionObject[2]);
+    		if ($debug) Debug.write("doUpdateFullFitAndZoomRemote ",actionObject[1],actionObject[2]);
+
+    		this.doFullFit(actionObject[1]);
+    		
+    		if (!actionObject[1]) {
+	    		this.getDisplayObject()._xscale = actionObject[2];
+	    		this.getDisplayObject()._yscale = actionObject[2];
+	    		this.onupdateScale.sendEvent(null);
+    		}
+    	
+    	]]>
+    </method>
+    
+    <method name="doFullFit" args="v">
+        <![CDATA[
+        	if ($debug) Debug.write("Do Full Fit ? doFullFit: ", v);
+        	if ($debug) Debug.write(this.ObjectByName);
+        
+        	this.fullFit = v;
+        	
+            if (this.ObjectByName && this.ObjectByName.typeOfObject=="swf") {    
+                if (v) {
+                    if ($debug) Debug.write("Do Full Fit !");
+                    this.ObjectByName._swfView.initialLoadFullFit();
+                }
+            }
+            
+        ]]>
+    </method>
+    
+    <method name="checkSWFPresentation" args="url,fileName,moduleName,parentPath,room,domain,slideNumber">
+        //this.addPresentationToLayer(this,url,'swfpresentationobject'+this.getCounter(),0,0,0,0,true,url,fileName,moduleName,parentPath,room,domain,slideNumber);
+        <![CDATA[
+            for (var i=0;i<this.baseactionobjectList.length;i++){
+                if (fileName==this.baseactionobjectList[i][3]){
+                    var whiteBoardName = this.baseactionobjectList[i][this.baseactionobjectList[i].length-1];
+                    //Debug.write("Found File: ",whiteBoardName,this.baseactionobjectList[i]);
+                    //this.baseactionobjectList[i].bringToFront();
+                    this.doShowObjectBounds(whiteBoardName);
+                    this.newSlideNumber = slideNumber;
+                    this.doDocumentAction('setSlideNumber');
+                    return true;
+                }
+            } 
+            return false;
+        ]]>
+    </method>
+    
+	<!--
+		alterModus => this is added by the mod not remotely
+		
+		adds the SWF-Object to the Layer
+	 -->
+  	<method name="addPresentationToLayer" args="obj,urlName,nameing,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber,currentzoom,innerwidth,innerheight,innerx,innery,uniqueObjectSyncName,standardFileName,fullFit">
+        <![CDATA[
+            if ($debug) Debug.write("addPresentationToLayer",standardFileName);
+            //only show if it is not part of wml-file-object
+            //if (!this.isWmlLoaderImage) {
+            //    this.loadimageDataWinRef = new lz.loadWhiteboardWindow(canvas.main_content._content.inner,{refObj:this});
+            //    this.loadimageDataWinRef.setMessage(canvas.getLabelName(this.imageLoadMessageId));
+            //}
+        	//if ($debug) Debug.write("addPresentationToLayer uniqueObjectSyncName:",uniqueObjectSyncName,innerwidth,innerheight);
+            
+            var downloadurl = canvas.getUrl() + 'DownloadHandler?' +
+                    'fileName=' + encodeURIComponent(fileName) +
+                    '&moduleName=' + moduleName + 
+                    '&parentPath=' + encodeURIComponent(parentPath + '/') +
+                    '&room_id='+room + 
+                    '&sid='+canvas.sessionId;
+            
+            //var width= this.width;
+            //var height = this.height-200;
+            ////Debug.write("width:height: ",width,height);
+            
+            this.currentlayer = new lz.swfResourceView(obj,{refObj:this,name:nameing,
+            	x:posx,y:posy,alterModus:alterModus,
+            	baseurl:baseurl,fileName:fileName,moduleName:moduleName,parentPath:parentPath,
+            	room:room,domain:domain,slideNumber:slideNumber,
+            	currentzoom:currentzoom,fullFit:fullFit,
+                standardFileName:standardFileName,
+            	innerwidth:innerwidth,innerheight:innerheight,
+            	innerx:innerx,innery:innery,
+            	uniqueObjectSyncName:uniqueObjectSyncName});
+
+            //this.parent.parent.isloadingImage.sendEvent(this.currentlayer);
+            ////Debug.write("downloadurl. ",downloadurl);
+            this.currentlayer._swfView.setSource(downloadurl);
+            
+            this.addItemToDocumentToolBar();
+            this.doUpdateDocumentToolBar();
+		]]>
+  	</method>
+  	
+  	<!--
+  		TODO: check Recording
+  	
+  	<method name="addPresentationToLayerRecording" args="obj,urlName,nameing,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber,currentzoom,innerwidth,innerheight,innerx,innery">
+        <![CDATA[
+            //Debug.write("addPresentationToLayer",obj,nameing,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber);
+            //only show if it is not part of wml-file-object
+            if (!this.isWmlLoaderImage) {
+                this.loadimageDataWinRef = new lz.loadWhiteboardWindow(canvas.main_content._content.inner,{refObj:this});
+                this.loadimageDataWinRef.setMessage(canvas.getLabelName(this.imageLoadMessageId));
+            }
+            var downloadurl = canvas.getUrl()+'DownloadHandler?' +
+                    'fileName=' + encodeURIComponent(fileName) +
+                    '&moduleName=' + moduleName + 
+                    '&parentPath=' + encodeURIComponent(parentPath) +
+                    '&room_id='+room + 
+                    '&sid='+canvas.sessionId;
+            var width= this.width;
+            var height = this.height;
+            
+            this.currentlayer = new lz.swfResourceView(obj,{refObj:this,name:nameing,
+            	x:posx,y:posy,
+            	alterModus:alterModus,
+            	baseurl:baseurl,fileName:fileName,moduleName:moduleName,
+            	parentPath:parentPath,room:room,domain:domain,
+            	slideNumber:slideNumber,width:width,height:height,
+            	currentzoom:currentzoom,innerwidth:innerwidth,innerheight:innerheight,
+            	innerx:innerx,innery:innery,recorderModus:true});
+
+            this.parent.parent.isloadingImage.sendEvent(this.currentlayer);
+            this.currentlayer._swfView.setSource(downloadurl);
+            
+            //Add Layer to global Layer  	
+            return this.currentlayer;
+		]]>
+  	</method>  	
+    -->
+    
+    <method name="addSWFToLayerHistory" args="actionObject,refObj,isWmlLoader">
+        this.isWmlLoaderImage = isWmlLoader;
+        this.baseactionobjectList.push(actionObject);   
+        this.addPresentationToLayer(refObj,actionObject[1],actionObject[actionObject.length-1],
+            actionObject[actionObject.length-5],actionObject[actionObject.length-4],actionObject[actionObject.length-3],
+            actionObject[actionObject.length-2],false,actionObject[2],actionObject[3],actionObject[4],actionObject[5],
+            actionObject[6],actionObject[7],
+            actionObject[8],actionObject[16],actionObject[11],actionObject[12],actionObject[9],actionObject[10],
+            actionObject[17],actionObject[18],actionObject[19]);
+    </method>
+    
+    <!-- 
+    	Invoked by the remote Host, see sendWatchObject in baseDraw.lzx
+     -->
+    <method name="addSWFToLayerHistorySynced" args="actionObject,refObj">
+        this.baseactionobjectList.push(actionObject);	
+  		this.startNewObjectSyncProcess.isStarting = false;
+  		this.startNewObjectSyncProcess.uniqueObjectSyncName = actionObject[17];
+  		this.startNewObjectSyncProcess.doCall();        
+   		this.addPresentationToLayer(refObj,actionObject[1],actionObject[actionObject.length-1],
+  			actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+  			actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+  			false,
+  			actionObject[2],actionObject[3],actionObject[4],actionObject[5],actionObject[6],
+  			actionObject[7],actionObject[8],actionObject[16],actionObject[11],actionObject[12],
+  			actionObject[9],actionObject[10],actionObject[17],actionObject[18],actionObject[19]);
+  	</method>
+  	
+	<!--- 
+		invoke by the initial Loading process in remoteWhiteboard.lzx, 
+		does not invoke any Update Handler
+		once this object is loaded, it will throw an Update event of kind
+		addSWFToLayerHistoryToLocalLoaded
+  	 -->
+  	<method name="addSWFToLayerHistoryToLocal" args="actionObject,refObj">
+        this.baseactionobjectList.push(actionObject);	
+  		this.addPresentationToLayer(refObj,actionObject[1],actionObject[actionObject.length-1],
+  			actionObject[actionObject.length-5],actionObject[actionObject.length-4],
+  			actionObject[actionObject.length-3],actionObject[actionObject.length-2],
+  			false,
+  			actionObject[2],actionObject[3],actionObject[4],actionObject[5],actionObject[6],
+  			actionObject[7],actionObject[8],actionObject[16],actionObject[11],actionObject[12],
+  			actionObject[9],actionObject[10],actionObject[17],actionObject[18],actionObject[19]);
+  	</method>
+  	
+  	<!--
+  		TODO: Check Recording Process
+  	 
+  	<method name="addSWFToLayerHistoryRecording" args="actionObject,refObj,isWmlLoader">
+		this.isWmlLoaderImage = isWmlLoader;
+        this.baseactionobjectList.push(actionObject);	
+  		this.addPresentationToLayerRecording(refObj,actionObject[1],actionObject[actionObject.length-1],actionObject[actionObject.length-5],actionObject[actionObject.length-4],actionObject[actionObject.length-3],actionObject[actionObject.length-2],false,actionObject[2],actionObject[3],actionObject[4],actionObject[5],actionObject[6],actionObject[7],actionObject[8],actionObject[16],actionObject[11],actionObject[12],actionObject[9],actionObject[10]);
+  	</method>
+    -->
+  	
+  	<method name="registerNewSWF" args="urlname,posx,posy,width,height,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber,innerx,innery,innerwidth,innerheight,zoomlevel,currentzoom,initwidth,initheight,uniquObjectSyncName,doUpdateMessage,standardFileName,fullFit,zIndex">
+		var actionObject = new Array();
+	    actionObject.push('swf');//0
+	    actionObject.push(urlname);//1
+		actionObject.push(baseurl);//2
+		actionObject.push(fileName);//3
+		actionObject.push(moduleName);//4
+		actionObject.push(parentPath);//5
+		actionObject.push(room);//6
+		actionObject.push(domain);//7
+        actionObject.push(slideNumber);//8
+        actionObject.push(innerx);//9
+        actionObject.push(innery);//10
+        actionObject.push(innerwidth);//11
+        actionObject.push(innerheight);//12
+        actionObject.push(zoomlevel);//13
+        actionObject.push(initwidth);//14
+        actionObject.push(initheight);//15
+        actionObject.push(currentzoom);//16
+        actionObject.push(uniquObjectSyncName);//17
+        actionObject.push(standardFileName);//18
+        actionObject.push(fullFit);//19
+        actionObject.push(zIndex);//-8
+        actionObject.push(null);//-7
+		actionObject.push(this.counter);//-6
+	    actionObject.push(posx);//-5
+	    actionObject.push(posy);//-4
+	    actionObject.push(width);//-3
+	    actionObject.push(height);//-2
+	    actionObject.push(this.currentlayer.name);//-1
+	    this.baseactionobjectList.push(actionObject);
+	    this.checkStepLayers();
+	    if (doUpdateMessage) this.onsharedMessage('draw',actionObject);	
+  	</method>    
+    
+	<!--
+		Invoked by the swfResource, if the alterModus = true,
+		throws an Update-Event to all connected Clients
+	 -->
+	<method name="storeTempValsAndLoadSyncListSWF" args="objRef">
+		this.syncImageRefObj = objRef;
+		this.doRegisterNewSwf(true);
+		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
+		this.sendCompletedObjectSyncEvent.doCall();
+	</method>    
+	
+	<!--
+		Invoked by the swfResource, if the alterModus = false,
+		throws NO Update-Event to all connected Clients
+	 -->
+	<method name="sendLoadNotificationSWF" args="objRef" >
+		this.syncImageRefObj = objRef;
+		this.doRegisterNewSwf(false);
+		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
+		this.sendCompletedObjectSyncEvent.doCall();
+	</method>
+	
+	<!-- 
+		TODO: Check Recording
+	-->
+	<method name="storeTempValsAndLoadSyncListSWFRecording" args="objRef">
+		this.syncImageRefObj = objRef;
+		//this.doRegisterNewSwf();
+		//this.sendCompleteSWFSync();
+		//This invokes a Method which is in the remoteWhiteboard.lzx
+		this.sendCompletedObjectSyncEvent.uniqueObjectSyncName = this.syncImageRefObj.uniqueObjectSyncName;
+		this.sendCompletedObjectSyncEvent.doCall();
+	</method>    
+    
+	
+
+	<!-- sending messages/notifications of sync process
+		syncing is now on server side implemented, swagner 12.06.2008
+	<netRemoteCallHib name="sendMessageWithClientSWF" funcname="sendMessageWithClient" remotecontext="$once{ canvas.thishib }" >   
+		<netparam name="vars"><method name="getValue">return parent.parent.imageLoadingCompleteMessage;</method></netparam>
+		<handler name="ondata" args="value">
+			<![CDATA[
+				//The onResult-Handler will be called be the rtmpconnection
+				////Debug.write("getValue : ",value);
+			]]>
+		</handler>   
+	</netRemoteCallHib>     
+     -->
+     
+	<!-- get list of clients before loading image cause
+		we have to show the sync process
+		
+		syncing is now on server side implemented, swagner 12.06.2008
+	
+    <netRemoteCallHib name="getSWFClientListScope" funcname="getClientListScope" remotecontext="$once{ canvas.thishib }" >          
+        <handler name="ondata" args="value">
+        	<![CDATA[
+				//The onResult-Handler will be called by the rtmpconnection
+				////Debug.write("getSWFClientListScope Instance: ",value);
+				parent._loadingUsersImageList = new Array();
+				for (var eg in value){
+					if (canvas.streamid != value[eg].streamid){
+						//Debug.write("parent._loadingUsersImageList value eg ",eg,value[eg]);
+						parent._loadingUsersImageList.push(value[eg]);
+					}
+				}
+				this.parent.doRegisterNewSwf();	
+				this.parent.startSWFsyncCheck();			
+            ]]>
+        </handler>   
+    </netRemoteCallHib>
+    	-->
+    
+    <method name="doRegisterNewSwf" args="doUpdateMessage">
+		//now send notifications to connected clients
+		this.setAttribute('drawmodus','hand');
+        
+		this.registerNewSWF(this.syncImageRefObj.baseurl,this.syncImageRefObj.x,
+                this.syncImageRefObj.y,this.syncImageRefObj._swfView.width,
+                this.syncImageRefObj._swfView.height,this.syncImageRefObj.baseurl,
+                this.syncImageRefObj.fileName,this.syncImageRefObj.moduleName,
+                this.syncImageRefObj.parentPath,this.syncImageRefObj.room,
+                this.syncImageRefObj.domain,this.syncImageRefObj.slideNumber,
+                this.syncImageRefObj._swfView.x,this.syncImageRefObj._swfView.y,
+                this.syncImageRefObj._swfView.width,this.syncImageRefObj._swfView.height,
+                this.syncImageRefObj.zoomlevel,this.syncImageRefObj.currentzoomFactor,
+                this.syncImageRefObj.initwidth,this.syncImageRefObj.initheight,
+                this.syncImageRefObj.uniqueObjectSyncName,doUpdateMessage,
+                this.syncImageRefObj.standardFileName,
+                this.syncImageRefObj.fullFit,
+                this.getZIndex());
+        
+		//set modus to hand so users can directly select that image
+		this.setModus('swf');
+    </method>
+	
+	<!-- after loading the objects check if all connected clients of that conference
+		have loaded the file completely, check it every 1 seconds
+		syncing is now on server side implemented, swagner 12.06.2008
+	<method name="startSWFsyncCheck">
+		<![CDATA[
+			if (this._loadingUsersImageList.length==0){
+				this.sendSyncNotificationSWF();
+			} else {
+				var txt = this.imageSyncMessageText+' '+this._loadingUsersImageList.length;
+				this.loadimageDataWinRef.setMessage(txt);
+				this.loadImageObjectTimer = new LzDelegate( this, "startImgaesyncCheck" );
+				lz.Timer.addTimer( this.loadImageObjectTimer, this.syncImageCheckTime );
+			}
+		]]>
+	</method>	
+	 -->
+
+	<method name="sendSyncNotificationSWF">
+		this.imageLoadingCompleteMessage = new Array();
+		this.imageLoadingCompleteMessage[0] = "whiteboard";
+		this.imageLoadingCompleteMessage[1] = "swfsynccomplete";
+		this.sendMessageWithClientSWF.doCall();
+	</method>	
+
+	<!-- invoked by remote client once he has completely loaded the wml-file 
+		remote client is waiting/still shows loading window untill all clients have 
+		completely loaded the object/moderator sends "synccomplete" message
+		
+		syncing is now on server side implemented, swagner 12.06.2008
+		
+	<method name="sendCompleteSWFLoadedRClient" args="client">
+		<![CDATA[
+			//detect self messageing
+			if (client.streamid!=canvas.streamid){
+				//remove client from sync list
+				for (var i=0;i<this._loadingUsersImageList.length;i++){
+					if (this._loadingUsersImageList[i].streamid==client.streamid){
+						////Debug.write("deleteing client from list: ",this._loadingUsersImageList[i].streamid);
+						this._loadingUsersImageList.splice(i,1);
+					}
+				}
+			}
+		]]>
+	</method>
+	
+	 -->
+	
+	<!-- invoked remotely by Moderator
+		all clients have succeed in loading the image
+		loading win can be closed
+		Alert: This notification will be send from Moderator and received by ALL clients INCLUDING
+		the moderator, so the moderator needs no extra command *close* for loading bar cause he
+		gets its own *sync* complete nofification
+		
+		syncing is now on server side implemented, swagner 12.06.2008
+			
+	<method name="sendCompleteSWFSync" args="client">
+		////Debug.write("sendCompleteSWFSync ",client);
+		this.loadimageDataWinRef.close();
+	</method>  
+     -->
+    
+    <!-- Document actions
+        this.ObjectByName is set by the method doShowObjectBounds of baseDraw and holds a reference to
+        the currently selected object on the whiteboard
+     -->
+    <method name="doDocumentAction" args="action">
+        <![CDATA[
+            if ($debug) Debug.info("doDocumentAction :1: sendCurrentSWFObject ",action);
+            if (this.ObjectByName.typeOfObject=="swf") {
+                if (action=="doc_first"){
+                    this.ObjectByName._swfView.setAttribute('frame',1);
+                } else if (action=="doc_pre"){
+                    if (this.ObjectByName._swfView.frame>1){
+                        this.ObjectByName._swfView.setAttribute('frame',(this.ObjectByName._swfView.frame-1));
+                    }
+                } else if (action=="doc_next"){
+                    if (this.ObjectByName._swfView.frame<this.ObjectByName._swfView.totalframes){
+                        this.ObjectByName._swfView.setAttribute('frame',(this.ObjectByName._swfView.frame+1));
+                    }
+                } else if (action=="doc_last"){
+                    this.ObjectByName._swfView.setAttribute('frame',(this.ObjectByName._swfView.totalframes));
+                } else if (action=="doc_zoom_minus"){
+                	
+                	if ($debug) Debug.write("doc_zoom_minus ");
+                	return;
+                	
+                    this.ObjectByName.currentzoomFactor-=this.ObjectByName.zoomlevel;       
+                    var newwidth = (this.ObjectByName.initwidth/100)*this.ObjectByName.currentzoomFactor;
+                    var newheight = (this.ObjectByName.initheight/100)*this.ObjectByName.currentzoomFactor;
+                    this.ObjectByName._swfView.setAttribute('width',newwidth);
+                    this.ObjectByName._swfView.setAttribute('height',newheight);
+                    this.boundingref.doSetInnerObjectsBounds(newwidth,newheight);
+                } else if (action=="doc_zoom_plus"){
+                	
+                	if ($debug) Debug.write("doc_zoom_plus ");
+                	return;
+                	
+                    this.ObjectByName.currentzoomFactor+=this.ObjectByName.zoomlevel;       
+                    //Debug.write("doc_zoom_plus 1",this.ObjectByName.currentzoomFactor,this.ObjectByName.zoomlevel);
+                    var newwidth = (this.ObjectByName.initwidth/100)*this.ObjectByName.currentzoomFactor;
+                    var newheight = (this.ObjectByName.initheight/100)*this.ObjectByName.currentzoomFactor;
+                    //Debug.write(this.ObjectByName);
+                    //Debug.write("doc_zoom_plus 2",newwidth,newwidth);
+                    this.ObjectByName._swfView.setAttribute('width',newwidth);
+                    this.ObjectByName._swfView.setAttribute('height',newheight);
+                    this.boundingref.doSetInnerObjectsBounds(newwidth,newheight);
+                } else if (action=="setSlideNumber"){
+                    if (this.newSlideNumber>0 && this.newSlideNumber<=this.ObjectByName._swfView.totalframes){
+                    	if ($debug) Debug.warn("Slide New Number ",this.newSlideNumber);
+                        this.ObjectByName._swfView.setAttribute('frame',this.newSlideNumber);
+                    } else {
+                        if ($debug) Debug.warn("Slide Number out of range of that document TotalFrames: ",this.ObjectByName._swfView.totalframes);
+                    }
+                }
+                this.ObjectByName.slideNumber =  this.ObjectByName._swfView.frame;
+                this.doUpdateDocumentToolBar();
+                
+                if ($debug) Debug.info("doDocumentAction :2: sendCurrentSWFObject");
+                
+                this.sendCurrentSWFObject(this.ObjectByName);
+                
+            }
+        ]]>
+    </method>
+    
+    <method name="addItemToDocumentToolBar">
+    	var docToolbar = this.getDocumentToolBar();
+    	docToolbar.addCurrentObject(this.currentlayer);
+    </method>
+    
+    <method name="setCurrentDocumentByToolBar" args="itemRefName">
+        if (this.boundingIsActive){
+        	if (this.boundingref.objRef.name != itemRefName) {
+        		this.boundingref._innerDrag.onmouseup.sendEvent();
+        	}
+        }
+        this.setCurrentDocument();
+    </method>
+    
+    <method name="setCurrentDocument" args="itemRefName">
+    	var t = this.getObjectByName(itemRefName);
+    	if (t==null) {
+    		return;
+    	}
+        this.ObjectByName = t;
+        this.doUpdateDocumentToolBar();
+        
+        if ($debug) Debug.write("setCurrentDocument ",itemRefName,this.ObjectByName);
+        
+        //not needed anymore
+        //this.sendItemToFront(itemRefName);
+        //this.bringItemToFrontByName(itemRefName);
+    </method>
+    
+    <method name="sendItemToFront" args="itemRefName">
+        var actionObject = new Array();
+        actionObject[0] = 'item';
+        actionObject[1] = itemRefName;
+        this.onsharedMessage('sendItemToFront',actionObject);
+    </method>    
+    
+    <method name="bringItemToFrontByName" args="itemRefName">
+        this.ObjectByName = this.getObjectByName(itemRefName);
+        this.ObjectByName.bringToFront();
+    </method>
+    
+    <method name="doUpdateDocumentToolBarByParticipant" args="itemObjName">
+        this.ObjectByName = this.getObjectByName(itemObjName);
+        this.doUpdateDocumentToolBar();
+    </method>
+    
+    <method name="doUpdateDocumentToolBar">
+    	<![CDATA[
+        	if (this.modernToolbar) {
+                //@deprecated
+                //this code is not valdi for the latest dev anymore, only inside for 
+                //backward compatibility
+    	        //this.parent.parent._documentmenu._currentSlideNo.setAttribute('text',this.ObjectByName._swfView.frame);
+    	        //this.parent.parent._documentmenu._totalSlideNo.setAttribute('text',this.ObjectByName._swfView.totalframes);
+    	        //this.parent.parent._documentmenu._zoom.setAttribute('text',this.ObjectByName.currentzoomFactor);
+        	
+            } else {
+                
+        		var docToolbar = this.getDocumentToolBar();
+        		
+                if ($debug) Debug.write("doUpdateDocumentToolBar ",docToolbar.parent.parent.ignoreUpdates);
+                docToolbar.parent.parent.ignoreUpdates = true;
+                
+        		if (this["ObjectByName"] && this.ObjectByName != null && this.ObjectByName._swfView) {
+                    
+                    if ($debug) Debug.warn("doUpdateDocumentToolBar ",this.ObjectByName.fullFit);
+                    
+        			docToolbar._currentSlideNo.setAttribute('text',this.ObjectByName._swfView.frame);
+                    docToolbar._totalSlideNo.setAttribute('text',this.ObjectByName._swfView.totalframes);
+                    //docToolbar._zoom.setAttribute('text',this.ObjectByName.currentzoomFactor);
+                    //docToolbar.parent._fullFit.setValue(this.ObjectByName.fullFit);
+        		} else {
+        			docToolbar._currentSlideNo.setAttribute('text',"0");
+                    docToolbar._totalSlideNo.setAttribute('text',"0");
+                    //docToolbar._zoom.setAttribute('text',"100");
+                    //docToolbar.parent._fullFit.setValue(false);
+        		}
+                
+                docToolbar.parent.parent.ignoreUpdates = false;
+    	        
+        	}
+    	]]>
+    </method>
+    
+    <method name="doDeleteFromDocumentsBar" args="itemRefName">
+    	var docToolbar = this.getDocumentToolBar();
+    	docToolbar.removeDocument(itemRefName);
+    </method>
+    
+    <method name="clearDocumentsBar">
+    	var docToolbar = this.getDocumentToolBar();
+    	docToolbar.clearDocumentsBar();
+    </method>
+    
+    <method name="sendCurrentSWFObject" args="objRef">
+		<![CDATA[
+            if ($debug) Debug.write("sendCurrentSWFObject :: ",objRef,objRef.name);
+            var objName = objRef.name;
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==objName) {
+                    ////Debug.write("Found Object: ",this.baseactionobjectList[eg]);
+                    var sendSlideObjectUpdate = false;
+                    if (this.baseactionobjectList[eg][8] != objRef.slideNumber) {
+                    	sendSlideObjectUpdate = true;
+                    }
+                    this.baseactionobjectList[eg][8] = objRef.slideNumber;
+                    this.baseactionobjectList[eg][9] = objRef._swfView.x;
+                    this.baseactionobjectList[eg][10] = objRef._swfView.y;
+                    this.baseactionobjectList[eg][11] = objRef._swfView.width;
+                    this.baseactionobjectList[eg][12] = objRef._swfView.height;
+                    this.baseactionobjectList[eg][13] = objRef.zoomlevel;
+                    this.baseactionobjectList[eg][16] = objRef.currentzoomFactor;
+                    this.baseactionobjectList[eg][19] = objRef.fullFit;
+                    var newA = this.baseactionobjectList[eg];
+                    if (newA[0]=='paint') newA[1] = new Array();				
+                    this.onsharedMessage('swf',newA);	
+                    if (sendSlideObjectUpdate) {
+                        this.updateObjectsToSlideNumber(this.baseactionobjectList[eg]);
+                    }
+                    break;
+                }
+            }	
+		]]>
+	</method>
+    
+    <method name="remoteObjectUpdate" args="lastactionObject">
+        <![CDATA[
+        
+            var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
+            
+            if ($debug) Debug.write("remoteObjectUpdate :: ",obj.fullFit);
+            obj._swfView.doSendChangeValue = false;
+            var sendSlideObjectUpdate = false;
+            if (obj.slideNumber != lastactionObject[8]) {
+            	sendSlideObjectUpdate = true;
+            }
+			obj.slideNumber = lastactionObject[8];
+			obj._swfView.setAttribute('x',lastactionObject[9]);
+			obj._swfView.setAttribute('y',lastactionObject[10]);
+			obj._swfView.setAttribute('width',lastactionObject[11]);
+            obj._swfView.setAttribute('height',lastactionObject[12]);
+            //obj.zoomlevel = lastactionObject[13];
+            //obj.currentzoomFactor = lastactionObject[16];
+            obj.fullFit = lastactionObject[19];
+            
+            if ($debug) Debug.write("DO initialLoadFullFit ?? ",obj.fullFit);
+            
+            if (obj.fullFit) {
+                if ($debug) Debug.write("DO initialLoadFullFit !! ");
+                obj._swfView.initialLoadFullFit();
+            }
+            
+            obj._swfView.setAttribute('frame',obj.slideNumber);
+            obj._swfView.doSendChangeValue = true;
+            
+            this.doUpdateDocumentToolBarByParticipant(obj.name);
+            
+            this.remoteUpdateBaseObjectList(lastactionObject);
+            
+            if (sendSlideObjectUpdate) {
+                this.updateObjectsToSlideNumber(lastactionObject);
+            }
+        ]]>
+    </method>
+    
+    <method name="remoteUpdateBaseObjectList" args="actionObject">
+		<![CDATA[
+            ////Debug.write("remoteUpdateBaseObjectList : ",actionObject);
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==actionObject[actionObject.length-1]) {
+                    this.baseactionobjectList[eg] = actionObject;
+                    break;
+                }
+            }	
+		]]>
+    </method>
+    
+    
+    
+    
+    
+    <method name="playVideoSynced" args="fileExplorerItemId,fileName,flv_width,flv_height">
+        <![CDATA[
+        
+            if ($debug) Debug.write("playVideoSynced : ",fileExplorerItemId,fileName,flv_width,flv_height);
+        
+            var tName = 'flv'+this.getCounter();
+            
+            this.currentlayer = new lz.whiteboardVideoPlayer(this,{
+                                            name:tName,
+                                            fileExplorerItemId:fileExplorerItemId,
+                                            title:fileName,
+                                            sendInit:true,
+                                            flv_width:flv_width,
+                                            flv_height:flv_height
+                                        });
+                                        
+            this.layers.push(this.currentlayer);  
+        ]]>
+    </method>
+    
+    <method name="sendNewVideoRemote" args="refObj">
+        <![CDATA[
+        
+            if ($debug) Debug.write("sendNewVideoRemote : ",refObj.fileExplorerItemId,refObj.title);
+        
+            this.flvregisterFinal(refObj.name,refObj.x,refObj.y,refObj.width,refObj.height,
+                                                refObj.fileExplorerItemId,refObj.title,
+                                                false, //isPlaying
+                                                refObj.flv_width,
+                                                refObj.flv_height,
+                                                this.getZIndex());
+                        
+            
+        ]]>
+    </method>
+    
+    <method name="flvregisterFinal" args="newName,x,y,width,height,fileExplorerItemId,fileName,isPlaying,flv_width,flv_height,zIndex">
+        var actionObject = new Array();
+        actionObject[0] = 'flv';
+        actionObject[1] = fileExplorerItemId;
+        actionObject[2] = fileName;
+        actionObject[3] = isPlaying;
+        actionObject[4] = flv_width; 
+        actionObject[5] = flv_height;   
+        actionObject[6] = zIndex;//-8
+        actionObject[7] = null;//-7
+        actionObject[8] = this.counter;//-6
+        actionObject[9] = x;//-5
+        actionObject[10] = y;//-4
+        actionObject[11] = width;//-3
+        actionObject[12] = height;//-2
+        actionObject[13] = newName;//-1
+        this.baseactionobjectList.push(actionObject);       
+        this.onsharedMessage('draw',actionObject);
+    </method>     
+    
+    <method name="drawFlvToHistory" args="lastActionObject,parentView">
+        <![CDATA[
+        
+            if ($debug) Debug.write("drawFlvToHistory PLAY :: ",lastActionObject[3]);
+        
+            this.currentlayer = new lz.whiteboardVideoPlayer(this,{
+                                            name:lastActionObject[lastActionObject.length-1],
+                                            fileExplorerItemId:lastActionObject[1],
+                                            title:lastActionObject[2],
+                                            flv_width:lastActionObject[4],
+                                            flv_height:lastActionObject[5]
+                                        });
+               
+            if (lastActionObject[3]) {
+                this.currentlayer.playRemote();
+            }
+                                        
+            this.layers.push(this.currentlayer);  
+            
+        ]]>
+    </method>
+    <!-- 
+     x:lastActionObject[lastActionObject.length-5],
+     y:lastActionObject[lastActionObject.length-4],
+     width:lastActionObject[lastActionObject.length-3],
+     height:lastActionObject[lastActionObject.length-2]
+     -->
+    
+    <method name="playFLV" args="refObj,play">
+        <![CDATA[
+            
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==refObj.name) {
+                    ////Debug.write("Found Object: ",this.baseactionobjectList[eg]);
+                    
+                    this.baseactionobjectList[eg][3] = play;
+                    
+                    if ($debug) Debug.write("playFLV :: ",this.baseactionobjectList[eg]);
+                    this.onsharedMessage('flv',this.baseactionobjectList[eg]);
+                    
+                    break;
+                }
+            }
+            
+        ]]>
+    </method>
+    
+    <method name="playFLVRemote" args="actionObject">
+
+        var tObj = this.getObjectByName(actionObject[actionObject.length-1]);
+        
+        if (actionObject[3]) {
+            tObj.playRemote();
+        }
+        if (!actionObject[3]) {
+            tObj.stopRemote();
+        }
+
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDrawSave.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDrawSave.lzx
new file mode 100644
index 0000000..39b894c
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDrawSave.lzx
@@ -0,0 +1,233 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawSave" extends="baseDrawImage" >
+	
+	<!-- saveing a file to a wml Object -->
+	<attribute name="savefileName" value="savefileName1" type="string" />
+	<attribute name="fileData" value="null" />
+	<attribute name="savefileDataWinRef" value="null" />
+	
+	<!-- loading a file from a wml Object
+	<attribute name="loadfileData" value="null" />
+	<attribute name="loadfileDataIndex" value="0" type="number" />
+	<attribute name="loadfileDataWinRef" value="null" />
+	<attribute name="loadObjectTimer" value="null" />
+	<attribute name="loadmessageId" value="206" type="number" />
+	<attribute name="syncmessageId" value="207" type="number" />
+	<attribute name="_loadmessageTxt" value="" type="string" />
+	<attribute name="_loadingUsers" value="null" />
+	<attribute name="wmlfileName" value="" type="string" />
+	<attribute name="wmlroom" value="" type="string" />
+	<attribute name="wmldomain" value="" type="string" />
+	<attribute name="wmlspreadNews" value="false" type="boolean" />
+	<attribute name="wmlLoadingCompleteMessage" value="null" />
+	<attribute name="synccheckTime" value="1000" type="number" />
+	 -->
+	
+	<!-- loading all stage objects on init -->
+	<attribute name="isInitLoader" value="false" type="boolean" />
+    
+    <!-- Export Image Type -->
+    <attribute name="exportType" value="svg" type="string" />
+    
+	<!-- Vars for storing screenshot
+		removed cause of performance and 
+		no php backend availible anymore -->		
+    <attribute name="MCRef" value="null" />
+    
+    <attribute name="pixelArray" value="null" />
+    <attribute name="snap" value="null" />
+    <attribute name="bpData" value="null" />
+    <attribute name="MatrixValue" value="null" />
+    
+    <attribute name="w" value="0" type="number" />
+    <attribute name="h" value="0" type="number" />
+    
+    <attribute name="a" value="0" type="number" />
+    
+    <attribute name="pixel_del" value="$once{ new LzDelegate(this, 'buildPixelArray' )}" />
+    
+    <attribute name="sendpictureName" value="snapchot.jpg" type="string" />
+    
+    <attribute name="isSendPartArray" value="true" type="boolean" />
+    
+    <attribute name="isRecordingLoad" value="false" type="boolean" />
+    <attribute name="isinitRecordingLoad" value="false" type="boolean" />
+	
+	<!-- Start and Stop Event will be thrown by the loading process -->
+	<event name="onwmlloadStart" />
+	<event name="onwmlloadStop" />
+    
+    <!-- Images will be send in packages 
+    	so timeout is workaround
+     -->
+    <attribute name="sendPartURL" value="http://host/createimagefrombitmap.php" type="string" />
+    
+    <!-- create Image from whole Array
+    	Large Images will not be rendered correctly here cause
+    	there can be a timeout -->
+    <attribute name="sendURL" value="http://host/createimagefrombitmap.php" type="string" />
+    
+    <event name="onprogress" />
+    
+    <method name="catchSnapshot">
+        <![CDATA[
+        this.MCRef = this.getDisplayObject();
+        //Debug.write("this.MCRef: ",this.MCRef);
+        this.snap = new flash.display.BitmapData(this.width, this.height, false, 0 );
+        
+        //Matrix to scale the new image
+        this.MatrixValue = new flash.geom.Matrix();
+        this.MatrixValue.scale(1, 1);
+        //Copy video image
+        this.snap.draw(this.MCRef,  this.MatrixValue); 
+        
+        this.bpData = this.snap.getPixels(this.snap.rectangle);
+        
+        this.w = this.width;
+        this.h = this.height;
+        this.a = 0;
+        this.pixelArray = new Array();
+        
+        //pixel_del.register(lz.Idle,'onidle');
+        this.saveAsImage.doCall();
+        ]]>
+    </method>
+    
+	  	<netRemoteCallHib name="saveAsImage" funcname="fileservice.saveAsImage" remotecontext="$once{ canvas.thishib }" >   
+	  		<netparam><method name="getValue">return parent.parent.bpData;</method></netparam>
+	        <handler name="ondata" args="value">	
+	        	//Debug.write("  saveAsImage: ",value);              	          				
+	        </handler>	
+	  	</netRemoteCallHib>     
+    
+    <method name="buildPixelArray" args="item">
+        <![CDATA[
+        
+        for(var b=0; b<=this.h; b++){
+            var tmp = this.snap.getPixel(a, b);
+            this.pixelArray.push(tmp.toString(16));
+        }
+        var perc =  Math.round((this.a*100)/this.w);
+        if (this.onprogress) this.onprogress.sendEvent(perc);            
+        this.a++
+        if(this.a>this.w){ 
+            //Finish capturing
+            if (this.isSendPartArray){
+            	this.sendPHPData(this.pixelArray, this.h, this.w);
+            } else {
+	            this.sendPHPData(this.pixelArray, this.h, this.w);
+	        }
+            //free memory
+            this.snap.dispose();
+            pixel_del.unregisterAll();
+        }
+        
+        ]]>
+    </method>
+    
+    <method name="sendPHPData" args="pix,pixH,pixW">
+        //Debug.write("### sendPHPData: ",pix,pixH,pixW);
+        <![CDATA[
+	        //Create the LoadVars object and pass data to PHP script
+	        var output = new LoadVars();
+	        output.img = pix.toString();
+	        output.height = pixH;
+	        output.width = pixW;
+	        //The page (and this movie itself) should be in a server to work
+	        output.send(this.sendURL, "output", "POST");
+        ]]> 
+    </method>
+	
+	<!-- saving all object on whiteBoard as wml-file -->
+	
+	<handler name="sendObject">
+		if ($debug) Debug.write("sendObject doSave: ",this.baseactionobjectList);
+		this.fileData = this.baseactionobjectList;
+		this.savefileDataWinRef = new lz.saveAsWmlWindow(canvas.main_content._content.inner,{
+                                                refObj:this});
+	</handler>
+	
+	<method name="confirmSaveAsObject" args="fileName" >
+		this.savefileName = fileName;
+		this.saveAsObject.doCall();
+	</method>
+    
+  	<netRemoteCallHib name="saveAsObject" funcname="fileservice.saveAsObject" remotecontext="$once{ canvas.thishib }" >   
+  		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		<netparam><method name="getValue">return hib.currentroomid;</method></netparam>        				  
+		<netparam><method name="getValue"> return parent.parent.savefileName; </method></netparam>
+		<netparam><method name="getValue"> return parent.parent.fileData;</method></netparam>
+        <handler name="ondata" args="value">	
+			<![CDATA[
+				if ($debug) Debug.write("  saveAsImage: ",value);   
+			    if (value>0){
+					parent.savefileDataWinRef.close();
+					canvas.currentFileExplorer.loadFiles();
+				} else {
+					new lz.rpcErrorDialog(canvas.main_content._content.inner,{errorid:value});
+				}
+			]]>  	          				
+        </handler>	
+  	</netRemoteCallHib>  
+        
+    <method name="confirmSaveAsImageTypeExport" args="fileName,type">
+        this.savefileName = fileName;
+        this.exportType = type;
+        this.fileData = this.baseactionobjectList;
+        this.addPrintList.doCall();
+    </method> 
+     
+    <method name="confirmSaveAsImageExport" args="fileName">
+        this.savefileName = fileName;
+        this.exportType = "svg";
+        this.fileData = this.baseactionobjectList;
+        this.addPrintList.doCall();
+    </method>	
+    
+        <netRemoteCallHib name="addPrintList" funcname="printservice.addPrintList" remotecontext="$once{ canvas.thishib }" > 
+          
+            <netparam><method name="getValue">return canvas.sessionId; </method></netparam>
+            <!--             
+            <netparam><method name="getValue">return parent.parent.savefileName; </method></netparam>
+             -->
+            <netparam><method name="getValue">return parent.parent.fileData;</method></netparam>
+            <netparam><method name="getValue">return parent.parent.width;</method></netparam>
+            <netparam><method name="getValue">return parent.parent.height;</method></netparam>
+            <handler name="ondata" args="value">    
+                <![CDATA[
+                    if ($debug) Debug.write("addPrintList: ",value);   
+                    var downloadurl = canvas.getUrl()+'ExportToImage?' +
+					                    'fileName=' + parent.savefileName +
+					                    '&hash='+value + 
+                                        '&exportType=' + parent.exportType +
+					                    '&sid='+canvas.sessionId;
+                                        
+                    lz.Browser.loadURL(downloadurl,"_BLANK");
+                ]]>                             
+            </handler>  
+        </netRemoteCallHib>     
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/baseDrawWords.lzx b/WebContent/src/modules/conference/whiteboard/base/baseDrawWords.lzx
new file mode 100644
index 0000000..2ea27c3
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/baseDrawWords.lzx
@@ -0,0 +1,197 @@
+<?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.
+  
+-->
+<library>
+
+<class name="styleableInput" extends="customInputtext" x="1" y="1" bgcolor="0xFFFFFF" multiline="true"
+		width="${ parent.width-2 }" height="${ parent.height-2 }" >
+
+	<attribute name="startAdjustHight" value="false" type="boolean" />
+	
+	<attribute name="setFocusOnInit" value="true" type="boolean" />
+	
+	<handler name="oninit">
+		if (this.setFocusOnInit) {
+		    lz.Focus.setFocus(this);	
+		}
+	</handler>
+	<handler name="ontext">
+	<![CDATA[
+		var gh = this.getTextHeight();
+		if (gh>20) {
+			if (gh+this.fontsize > this.height){
+				this.setAttribute("height",(gh+this.fontsize));
+			}
+		}
+	]]>
+	</handler>	
+	<handler name="onkeyup" args="key">
+       <![CDATA[
+       // 13 is return
+       if ((key==27) || (key==13)) {
+       		this.parent.parent.adjustHeight();
+       }
+       ]]>
+    </handler>	
+	<handler name="onheight">
+		if (this.startAdjustHight) this.parent.parent.adjustHeight();
+	</handler>
+	
+	<method name="getURLEncodedText">
+		<![CDATA[
+		
+		    var tString = this.getText();
+		    
+		    //tString = tString.replace("<","&#60;");
+		    //tString = tString.replace(">","&#62;");
+		    
+		    return tString;
+		
+		]]>
+	</method>
+	
+</class>
+
+<class name="baseDrawWords" extends="view" bgcolor="black" 
+	width="120" height="40">
+	
+	<attribute name="refObj" value="null" />
+	
+	<attribute name="inittext" value="" type="string" />
+	<attribute name="initTextName" value="" type="string" />
+
+	<method name="drawtoArray">
+		<![CDATA[
+		if ($debug) Debug.write("drawtoArray");
+		if (this._textview._textview.getURLEncodedText().length!=0 && this.inittext.length==0){
+            
+            //var scale = this.parent._drawarea.width / this.parent._drawarea.initW;
+		    var y = ( this.getAttributeRelative('y',this.refObj)-this.refObj.y+1 );
+            if ($debug) Debug.write("this.refObj.y ",this.refObj.y);
+			if ($debug) Debug.write("this.x-this.refObj.x-this.refObj.parent.x ",y);
+			var x = ( this.getAttributeRelative('x',this.refObj)-this.refObj.x+1 );
+			
+			if(canvas._drawarea.isSnapToGrid){        		
+	    			        	   
+	            x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+		    	y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+            
+            } 
+			
+        	this.refObj.drawTextField(this._textview._textview.getURLEncodedText(),
+                    this._textview._textview.width,
+                    this._textview._textview.height,x,y);
+                    
+        } else if (this._textview._textview.getURLEncodedText().length!=0 && this.inittext.length!=0){
+            
+        	if ($debug) Debug.write("edit modi ",this.initTextName);
+		    var y = (this.getAttributeRelative('y',this.refObj)-this.refObj.y+1);
+			if ($debug) Debug.write("this.x-this.refObj.x-this.refObj.parent.x ",y);
+			var x = (this.getAttributeRelative('x',this.refObj)-this.refObj.x+1);
+            
+			if(canvas._drawarea.isSnapToGrid){        		
+	    			        	   
+	            x = Math.round(x/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+		    	y = Math.round(y/canvas._drawarea.gridWidth)*canvas._drawarea.gridWidth;
+            
+            } 
+			
+        	this.refObj.setTextFieldByName(this.initTextName,
+                this._textview._textview.getURLEncodedText(),
+                this._textview._textview.width,
+                x,y,this._textview._textview.height);
+                
+        } else {
+			if ($debug) Debug.write("text smaller then 0",this._textview._textview.getURLEncodedText());
+			
+			if ($debug) Debug.write("this.gridWidth",canvas._drawarea.gridWidth);
+			if ($debug) Debug.write("this.isSnapToGrid",canvas._drawarea.isSnapToGrid);
+		}
+        this.giveup();
+		]]>
+    </method>
+    
+	<method name="giveup">
+		this.refObj.letterObjectFree(this);
+		this.destroy();
+	</method>
+	    
+	<handler name="oninit">
+		//startAdjustHight is set to true later, cause otherwise update 
+		//Events would set the height to 
+		//text field default height
+		this.refObj.letterObjectClose(this);
+        var t = new lz.styleableInput(this._textview,{
+	                name:'_textview',text:this.inittext,
+	                fontstyle:this.refObj.currentlayerstyle,
+	                fontsize:this.refObj.currentlayersize,
+	                fgcolor:this.refObj.currentlayerletter
+                });
+        //if ( this.inittext.length==0 ) this.setAttribute('height',40);
+		if ( this.inittext.length!=0 ) {
+		    this.refObj.edittextLetterObject.setAttribute('visible',false);
+		    this.refObj.setModus('letter');
+	    }
+		t.startAdjustHight = true;
+	</handler>
+    
+    <handler name="newStyleEvent">
+        this.callNew(this._textview._textview.getText());
+    </handler>
+  
+	<method name="callNew" args="txxt">
+		//if ($debug) Debug.write("callNew height-2 ");
+		
+        var h = this.getHeight();
+        
+        //if ($debug) Debug.write("callNew height-3 ",this);
+        //if ($debug) Debug.write("callNew height-4 ",this.getHeight());
+        
+		this._textview._textview.destroy();
+		var t = new lz.styleableInput(this._textview,{
+			        setFocusOnInit:false,
+                    name:'_textview',text:txxt,
+                    fontstyle:this.refObj.currentlayerstyle,
+                    fontsize:this.refObj.currentlayersize,
+                    fgcolor:this.refObj.currentlayerletter
+                });
+        this.setAttribute("height",h);
+	</method>
+	<method name="adjustHeight">
+		if ($debug) Debug.write("+++ adjustHeight +++");
+		this.setAttribute('height',this._textview._textview.height+2);
+	</method>
+    
+    <method name="_removeResizestateFromThis">
+    	this.rs.remove();
+    </method>
+    
+    <view name="_textview" width="${ parent.width }" height="${ parent.height }" />
+    
+    <resizestate name="rs" >
+    	<text x="2" y="2" text="${ 'w: '+parent.width+' h: '+parent.height }" bgcolor="white"/>
+    </resizestate>
+	<view resource="_boundingBoxPointerUR" x="${ parent.width-this.width }" y="${ parent.height-this.height }" 
+		onmousedown="parent.rs.apply()" onmouseup="parent._removeResizestateFromThis()" >
+		<labelTooltip text="Resize this Object" />
+	</view>    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/drawViewNew.lzx b/WebContent/src/modules/conference/whiteboard/base/drawViewNew.lzx
new file mode 100644
index 0000000..dcfcf88
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/drawViewNew.lzx
@@ -0,0 +1,87 @@
+<?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.
+  
+-->
+<library>
+
+<class name="drawViewInner" extends="drawview" x="0" y="0" >
+	
+</class>
+
+<!--
+    this is the Base Container for all Whiteboard Objects
+ -->
+<class name="drawViewNew" extends="drawview" cachebitmap="false" x="0" y="0" >
+	
+	<attribute name="typeOfObject" value="paint" type="string" />
+
+    <attribute name="initwidth" value="0" type="number" />
+    <attribute name="initheight" value="0" type="number" />
+    
+    <event name="prepareForDelete" />
+    
+    <handler name="oninit">
+        this.initwidth=this.width;
+        this.initheight=this.height;
+    </handler>
+    
+	<handler name="onwidth">
+        <![CDATA[
+	        if (this.isinited) {
+		        if(this.name.indexOf('line')>=0 
+		        	|| this.name.indexOf('uline')>=0 
+		        	|| this.name.indexOf('drawarrow')>=0
+		        	|| this.name.indexOf('paint')>=0) {
+		        	this.getDisplayObject()._xscale = (this.width/this.initwidth)*100;
+		        } else if (this.name.indexOf('rectangle')>=0) {
+	        		parent.redrawRectItemByScaling(this);
+	        	} else if  (this.name.indexOf('ellipse')>=0) {
+	        		parent.redrawEllipseItemByScaling(this);
+	        	}	        	
+	        }
+        ]]>
+    </handler>
+    
+    <handler name="onheight">
+    	<![CDATA[
+	        if (this.isinited) {
+		        if(this.name.indexOf('line')>=0 
+		        	|| this.name.indexOf('uline')>=0 
+		        	|| this.name.indexOf('drawarrow')>=0
+		        	|| this.name.indexOf('paint')>=0) {
+		        	this.getDisplayObject()._yscale = (this.height/this.initheight)*100;  
+		        } else if (this.name.indexOf('rectangle')>=0) {
+	        		parent.redrawRectItemByScaling(this);
+	        	} else if  (this.name.indexOf('ellipse')>=0) {
+	        		parent.redrawEllipseItemByScaling(this);
+	        	}	
+	        }  	
+        ]]>   
+    </handler>
+    <!-- 
+    <dragstate name="dragger" drag_axis="both"
+	    drag_min_x="0"
+	    drag_max_x="$once{parent.width - this.width}"
+	    drag_min_y="0"
+	    drag_max_y="$once{parent.height - this.height}">
+    </dragstate>
+     -->
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/imageForDrawView.lzx b/WebContent/src/modules/conference/whiteboard/base/imageForDrawView.lzx
new file mode 100644
index 0000000..9b6d544
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/imageForDrawView.lzx
@@ -0,0 +1,195 @@
+<?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.
+  
+-->
+<library>
+
+<class name="imageForDrawView" extends="image" stretches="both">
+	
+	<event name="prepareForDelete" />
+	
+	<attribute name="downloadurl" value="" type="string" />
+		
+	<attribute name="alterModus" value="true" type="boolean" />
+	<attribute name="isLocalSync" value="false" type="boolean" />
+	
+	<attribute name="recorderModus" value="false" type="boolean" />
+	
+	<attribute name="baseurl" value="" type="string" />
+	<attribute name="fileName" value="" type="string" />
+	<attribute name="moduleName" value="" type="string" />
+	<attribute name="parentPath" value="" type="string" />
+	<attribute name="room" value="" type="string" />
+	<attribute name="domain" value="" type="string" />
+	
+	<attribute name="remotewidth" value="0" type="number" />
+	<attribute name="remoteheight" value="0" type="number" />
+	
+	<attribute name="typeOfObject" value="image" type="string" />
+	
+	<!-- holds the reference_id to the SyncProcess -->
+	<attribute name="uniqueObjectSyncName" value="" type="string" />
+	
+		<!--
+			if (this.width>this.refObj.width){
+				var height = this.height/(this.width/this.refObj.width)
+				this.setAttribute('width',this.refObj.width);
+				this.setAttribute('height',height);
+				this.setAttribute('x',0);
+			}
+			if (this.height>this.refObj.height){
+				var width = this.width/(this.height/this.refObj.height)
+				this.setAttribute('height',this.refObj.height);
+				this.setAttribute('width',width);
+				this.setAttribute('y',0);
+			}
+			if(this.y+this.height>this.refObj.height){
+				this.setAttribute('y',0);
+			}
+			if(this.x+this.width>this.refObj.width){
+				this.setAttribute('x',0);
+			}	            	
+         -->            
+	<attribute name="refObj" value="null" />
+	<handler name="onload">
+		<![CDATA[
+			//Debug.write("image loaded");
+			//this.refObj.parent._loading.setAttribute('visible',false);
+			
+			if (this.remotewidth != 0 && this.remoteheight != 0){
+				this.setAttribute('width',this.remotewidth);
+				this.setAttribute('height',this.remoteheight);
+			} else {
+				
+				if (this.width>this.refObj.width){
+					var height = this.height/(this.width/this.refObj.width)
+					this.setAttribute('width',this.refObj.width);
+					this.setAttribute('height',height);
+					this.setAttribute('x',0);
+				}
+				
+				if (this.height>this.refObj.height){
+					var width = this.width/(this.height/this.refObj.height)
+					this.setAttribute('height',this.refObj.height);
+					this.setAttribute('width',width);
+					this.setAttribute('y',0);
+				}
+				
+				if(this.y+this.height>this.refObj.height){
+					this.setAttribute('y',0);
+				}
+				
+				if(this.x+this.width>this.refObj.width){
+					this.setAttribute('x',0);
+				}
+				
+			}
+	
+			//only send syncCommand if alterModus is true (meaning that this is the Moderator)
+			//otherwise just send a notification to moderator that this image has been loaded
+			//if this is just a recordContent-modi (recordingsViewer) then there should be no syncing
+			if (this.recorderModus) {
+				this.refObj.storeTempValsAndLoadSyncListRecording(this);
+			} else if (this.alterModus){
+				this.refObj.storeTempValsAndLoadSyncList(this);
+			} else if (this.isLocalSync){
+				this.refObj.addImageToLayerHistoryToLocalLoaded.sendEvent(this);
+			} else {
+				this.refObj.sendLoadNotificationImage(this);
+			}
+			this.refObj.layers.push(this);			
+			
+			this.oninit.sendEvent();
+			
+			//This is not needed anymore as it sync's against the server sid, swagner, 11.06.2008
+			//this.refObj.parent.parent.isloadedImage.sendEvent(this);
+			
+			//send notification to wml-loader
+			//this is send later then in normal objects cause it needs to be send after the image
+			//has been loaded completely
+			//if (this.refObj.isWmlLoaderImage){
+			//	this.refObj.isWmlLoaderImage=false;
+            //    //Debug.write("1 onwmlLoaderSend.sendEvent( image )");
+			//	if (this.refObj.onwmlLoaderSend) this.refObj.onwmlLoaderSend.sendEvent('image');
+			//}
+		]]>
+	</handler>
+	<handler name="onerror" args="error">
+		<![CDATA[
+		//Debug.write("onerror "+error);
+			//only send syncCommand if alterModus is true (meaning that this is the Moderator)
+			//otherwise just send a notification to moderator that this iamge has been loaded
+			if (this.recorderModus) {
+				this.refObj.storeTempValsAndLoadSyncListRecording(this);
+			} else if (this.alterModus){
+				this.refObj.storeTempValsAndLoadSyncList(this);
+			} else if (this.isLocalSync){
+				this.refObj.addImageToLayerHistoryToLocalLoaded.sendEvent(this);
+			} else {
+				this.refObj.sendLoadNotificationImage(this);
+			}
+			this.refObj.layers.push(this);			
+			
+			this.oninit.sendEvent();
+			
+			//This is not needed anymore as it sync's against the server sid, swagner, 11.06.2008
+			this.refObj.parent.parent.isloadedImage.sendEvent(this);
+			
+			//send notification to wml-loader
+			//this is send later then in normal objects cause it needs to be send after the image
+			//has been loaded completely
+			//if (this.refObj.isWmlLoaderImage){
+			//	this.refObj.isWmlLoaderImage=false;
+			//	if (this.refObj.onwmlLoaderSend) this.refObj.onwmlLoaderSend.sendEvent('image');
+			//}
+		]]>
+	</handler>
+	<handler name="ontimeout" args="error">
+		<![CDATA[
+		//Debug.write("ontimeout "+error);
+			//only send syncCommand if alterModus is true (meaning that this is the Moderator)
+			//otherwise just send a notification to moderator that this iamge has been loaded
+			if (this.recorderModus) {
+				this.refObj.storeTempValsAndLoadSyncListRecording(this);
+			} else if (this.alterModus){
+				this.refObj.storeTempValsAndLoadSyncList(this);
+			} else if (this.isLocalSync){
+				this.refObj.addImageToLayerHistoryToLocalLoaded.sendEvent(this);
+			} else {
+				this.refObj.sendLoadNotificationImage(this);
+			}
+			this.refObj.layers.push(this);			
+			
+			this.oninit.sendEvent();
+			
+			//This is not needed anymore as it sync's against the server sid, swagner, 11.06.2008
+			this.refObj.parent.parent.isloadedImage.sendEvent(this);
+			
+			//send notification to wml-loader
+			//this is send later then in normal objects cause it needs to be send after the image
+			//has been loaded completely
+			//if (this.refObj.isWmlLoaderImage){
+			//	this.refObj.isWmlLoaderImage=false;
+			//	if (this.refObj.onwmlLoaderSend) this.refObj.onwmlLoaderSend.sendEvent('image');
+			//}
+		]]>
+	</handler>	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/imageForScreenViewer.lzx b/WebContent/src/modules/conference/whiteboard/base/imageForScreenViewer.lzx
new file mode 100644
index 0000000..7e6d6a3
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/imageForScreenViewer.lzx
@@ -0,0 +1,60 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="imageForScreenViewer" extends="image" stretches="both" x="0" y="0">
+	
+	<attribute name="downloadurl" value="" type="string" />
+		
+	<attribute name="alterModus" value="true" type="boolean" />
+	
+	<attribute name="baseurl" value="" type="string" />
+	<attribute name="fileName" value="" type="string" />
+	<attribute name="moduleName" value="" type="string" />
+	<attribute name="parentPath" value="" type="string" />
+	<attribute name="room" value="" type="string" />
+	<attribute name="domain" value="" type="string" />
+    
+    <attribute name="username" value="" type="string" />
+		
+	<attribute name="refObj" value="null" />
+	<handler name="onload">
+        this.refObj.layers.push(this);	
+        this.refObj.isScreenImageLoading=false;
+	    this.sendToBack();
+        
+        var height = this.height/(this.width/this.parent.width)
+        this.setAttribute('width',this.parent.width);
+        this.setAttribute('height',height);
+        this.setAttribute('x',0);
+            
+        this.refObj.toggleVisibleScreenSharing();
+	</handler>
+	<handler name="onerror" args="error">
+        this.refObj.toggleVisibleScreenSharing();
+	</handler>
+	<handler name="ontimeout" args="error">
+        this.refObj.toggleVisibleScreenSharing();
+	</handler>	
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/library.lzx b/WebContent/src/modules/conference/whiteboard/base/library.lzx
new file mode 100644
index 0000000..ab3ee19
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/library.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="drawViewNew.lzx" />
+	<include href="baseDraw.lzx" />
+    
+    <!-- extends basedraw with drawing Tools -->
+    <include href="tools/" /> 
+    
+	<include href="swfResourceView.lzx" />
+	<include href="baseDrawObject.lzx" />
+	<include href="baseDrawLetter.lzx" />
+	<include href="imageForDrawView.lzx" />
+	<include href="imageForScreenViewer.lzx" />
+	<include href="baseDrawImage.lzx" />
+	<include href="baseDrawSave.lzx" />
+	<include href="baseDrawWords.lzx" />
+	<include href="whiteboardVideoPlayer.lzx" />
+	<include href="remoteWhiteboard.lzx" />
+	<include href="whiteBoardPointer.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/remoteWhiteboard.lzx b/WebContent/src/modules/conference/whiteboard/base/remoteWhiteboard.lzx
new file mode 100644
index 0000000..bb47ca1
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/remoteWhiteboard.lzx
@@ -0,0 +1,336 @@
+<?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.
+  
+-->
+<library>
+
+<class name="remoteWhiteboard" extends="baseDrawSave">
+	
+	<attribute name="loadingObjectListId" value="0" type="number" />
+	<attribute name="loadingObjectList" value="null" />
+	
+	<attribute name="loadObjectDelegate" value="null" />
+	
+	<method name="loadObjectList" args="whiteBoardObject">
+		<![CDATA[
+		
+			if ($debug) Debug.info("loadObjectList :1: ",whiteBoardObject,whiteBoardObject.fullFit,whiteBoardObject.zoom);
+		
+			if (parent.parent["zoombox"]) {
+			    parent.parent.zoombox.setWhiteboardValues(whiteBoardObject.fullFit,whiteBoardObject.zoom);
+			}
+			
+			
+			this.setAttribute("x",whiteBoardObject.x);
+			this.setAttribute("y",whiteBoardObject.y);	
+			this.last_x = this.x;
+			this.last_y = this.y;
+			
+			/*
+			if (whiteBoardObject.brainStorming != null) {
+                this.loadBrainStormingObject(whiteBoardObject.brainStorming);
+            }
+            */
+			
+			this.fullFit = whiteBoardObject.fullFit;
+			
+			this.getDisplayObject()._xscale = whiteBoardObject.zoom;
+    		this.getDisplayObject()._yscale = whiteBoardObject.zoom;
+    		
+    		this.onupdateScale.sendEvent(null);
+			
+			this.loadingObjectList = new Array();
+			
+			for (var eg in whiteBoardObject.roomItems) {
+				this.loadingObjectList.push(whiteBoardObject.roomItems[eg]);
+			}
+			
+			//return;
+			//if ($debug) Debug.write("loadObjectList :2: ",this.loadingObjectList);
+			
+			function sortItemByIndex(a,b){
+                var a1 = a[a.length-8];
+                var b1 = b[b.length-8];
+                //_root.//Debug.write("natcompare: ",a1,b1,natcompare(a1,b1));
+                if(a1==b1){
+                    return 0;
+                } else if(a1>b1){
+                    return 1;
+                } else {
+                    return -1;
+                }
+            }
+            
+            //for (var i=0;i<this.loadingObjectList.length;i++) {
+            //	if ($debug) Debug.write(" 1 ",i,this.loadingObjectList[i][0],this.loadingObjectList[i][this.loadingObjectList[i].length-8]);
+            //}
+            
+            this.loadingObjectList.sort(sortItemByIndex);
+			
+            //for (var i=0;i<this.loadingObjectList.length;i++) {
+            //    if ($debug) Debug.write(" 2 ",i,this.loadingObjectList[i][0],this.loadingObjectList[i][this.loadingObjectList[i].length-8]);
+            //}
+            
+			this.loadingObjectListId = 0;
+			//this.loadObjectDelegate = new LzDelegate( this, "loadRemoteObject" );
+			//if (this.loadingObjectList.length != 0){
+			//	lz.Timer.addTimer( this.loadObjectDelegate, 250 );
+			//}
+			//for (var i=0;i<this.loadingObjectList.length;i++){
+			//	if ($debug) Debug.write("i this.loadingObjectList[i] ",i,this.loadingObjectList[i]);
+			//}
+			
+			if ($debug) Debug.write("Number of Whiteboard Objects ",this.loadingObjectList.length);
+			
+			if (this.loadingObjectList != null && this.loadingObjectList.length != 0){
+				this.startNewSyncprocess.doCall();
+			}
+		]]>
+	</method>
+	
+	<method name="loadSavedObjectList" args="objList">
+        <![CDATA[
+            
+            var tempArray = new Array();            
+            tempArray[0] = "loadSavedWhiteboard";
+            ///tempArray[1] = itemObj;
+            tempArray[1] = objList;
+            hib.sendMessageWithClient.sendMessage("whiteboard", tempArray);
+        
+            this.loadingObjectList = objList;
+            
+            if ($debug) Debug.write("loadObjectList :: ",this.loadingObjectList);
+            
+            function sortItemByIndex(a,b){
+                var a1 = a[a.length-8];
+                var b1 = b[b.length-8];
+                //_root.//Debug.write("natcompare: ",a1,b1,natcompare(a1,b1));
+                if(a1==b1){
+                    return 0;
+                } else if(a1>b1){
+                    return 1;
+                } else {
+                    return -1;
+                }
+            }
+            
+            for (var i=0;i<this.loadingObjectList.length;i++) {
+                if ($debug) Debug.write(" 1 ",i,this.loadingObjectList[i][0],this.loadingObjectList[i][this.loadingObjectList[i].length-8]);
+            }
+            
+            this.loadingObjectList.sort(sortItemByIndex);
+            
+            for (var i=0;i<this.loadingObjectList.length;i++) {
+                if ($debug) Debug.write(" 2 ",i,this.loadingObjectList[i][0],this.loadingObjectList[i][this.loadingObjectList[i].length-8]);
+            }
+            
+            this.loadingObjectListId = 0;
+            //this.loadObjectDelegate = new LzDelegate( this, "loadRemoteObject" );
+            //if (this.loadingObjectList.length != 0){
+            //  lz.Timer.addTimer( this.loadObjectDelegate, 250 );
+            //}
+            //for (var i=0;i<this.loadingObjectList.length;i++){
+            //  if ($debug) Debug.write("i this.loadingObjectList[i] ",i,this.loadingObjectList[i]);
+            //}
+            if (this.loadingObjectList != null && this.loadingObjectList.length != 0){
+                this.startSavedSyncprocess.doCall();
+            }
+            
+        ]]>
+    </method>
+    
+    <method name="prepareLoadWMLFile" args="itemObj">
+        if ($debug) Debug.write("loadWMLFile: ",itemObj);
+        
+        this.loadWMLFile.setAttribute('fileExplorerItemId', itemObj.fileExplorerItemId);
+                  
+        if ($debug) Debug.write("prepareLoadWMLFile 1: ",parent.parent.whiteboardId);
+        
+        this.loadWMLFile.doCall();
+    </method>
+    
+    
+    <netRemoteCallHib name="loadWMLFile" funcname="fileservice.loadWmlObject"
+        remotecontext="$once{ canvas.thishib }" >
+        <attribute name="fileExplorerItemId" type="number" value="0"/>
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return hib.currentroomid;</method></netparam> 
+        <netparam><method name="getValue">return parent.fileExplorerItemId;</method></netparam> 
+        <netparam><method name="getValue">return parent.parent.parent.parent.whiteboardId;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("loadWMLFile: ",value);
+                //canvas._drawarea.clearAll();
+                //parent.loadSavedObjectList(value);
+                
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <method name="loadWmlToWhiteboardById" args="roomItems">
+    	this.clearRemote();
+    	this.loadSavedObjectList(roomItems);
+    </method>
+	
+    <netRemoteCallHib name="startNewSyncprocess" funcname="whiteboardservice.startNewSyncprocess"
+        remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+            	//The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("startNewSyncprocess: ",value);
+            	if (value.publicSID == canvas.publicSID){
+            		if ($debug) Debug.write("currentLoadingItem IS mine");
+                    //TODO: Check usage of currentLoadingItem
+            		//if (value.currentLoadingItem){
+            			parent.startInitialLoadinProcess();
+            		//}
+            	}
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+     <netRemoteCallHib name="startSavedSyncprocess" funcname="whiteboardservice.startNewSyncprocess"
+        remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("startNewSyncprocess: ",value);
+                //if (value.publicSID == canvas.publicSID){
+                    if ($debug) Debug.write("currentLoadingItem IS mine");
+                    //TODO: Check usage of currentLoadingItem
+                    //if (value.currentLoadingItem){
+                        parent.startInitialLoadinProcess();
+                    //}
+                //}
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="sendCompletedSyncEvent" funcname="whiteboardservice.sendCompletedSyncEvent"
+        remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+            	//The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("sendCompletedSyncEvent: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     	
+    
+    <method name="startInitialLoadinProcess">
+		this.loadObjectDelegate = new LzDelegate( this, "loadRemoteObject" );
+		if (this.loadingObjectList.length != 0){
+			lz.Timer.addTimer( this.loadObjectDelegate, 250 );
+		}
+    </method>
+	
+	<method name="loadRemoteObject" args="ref">
+		<![CDATA[
+			this.sendRemoteWatchObject(this.loadingObjectList[this.loadingObjectListId]);
+			this.loadingObjectListId++;
+			if (this.loadingObjectListId < this.loadingObjectList.length){
+				lz.Timer.addTimer( this.loadObjectDelegate, 250 );
+			} else {
+				this.sendCompletedSyncEvent.doCall();
+				this.updateAllObjectsToSlideNumber();
+				this.setModusWithUpdate("hand");
+				this.onupdateScale.sendEvent(null);
+			}
+		]]>
+	</method>
+	
+	<method name="sendRemoteWatchObject" args="actionObject">
+		if ($debug) Debug.write("[sendRemoteWatchObject]: ",actionObject);
+		<![CDATA[
+			
+			//Redraw the View on the paintarea
+			if (actionObject[0]=='paint'){
+				this.paintactionHistory(actionObject,this);
+			} else if (actionObject[0]=='line'){
+				this.lineactionHistory(actionObject,this);
+			} else if (actionObject[0]=='uline'){
+				this.ulineactionHistory(actionObject,this);
+			} else if (actionObject[0]=='drawarrow'){
+				this.drawarrowlineactionHistory(actionObject,this);
+			} else if(actionObject[0]=='letter'){
+				this.drawactionHistory(actionObject,this);
+			} else if(actionObject[0]=='image'){
+				this.addImageToLayerHistoryToLocal(actionObject,this);
+			} else if(actionObject[0]=='swf'){
+				this.addSWFToLayerHistory(actionObject,this,true);
+			} else if(actionObject[0]=='rectangle'){
+				this.drawrectangleToHistory(actionObject,this);
+			} else if(actionObject[0]=='ellipse'){
+				this.drawellipseToHistory(actionObject,this);
+			} else if(actionObject[0]=='flv'){
+                this.drawFlvToHistory(actionObject,this);
+            } else if(actionObject[0]=='mindMapCenter'){
+                this.drawMindMapCenterToHistory(actionObject,this);
+            } else if(actionObject[0]=='mindMapNode'){
+                this.drawMindMapNodeToHistory(actionObject,this);
+            } else if(actionObject[0]=='clipart'){
+                this.drawClipArtToHistory(actionObject,this);
+            }
+			
+			if ($debug) Debug.write("[store actionObject] ",actionObject);
+			
+			this.baseactionobjectList.push(actionObject);
+				
+		]]>
+	</method>	
+	
+	<!-- methods for syncing events -->
+    <netRemoteCallHib name="startNewObjectSyncProcess" funcname="whiteboardservice.startNewObjectSyncProcess"
+        remotecontext="$once{ canvas.thishib }" >
+    	<attribute name="isStarting" value="false" type="boolean" />
+    	<attribute name="uniqueObjectSyncName" value="" type="string" />
+    	<netparam><method name="getValue">return parent.uniqueObjectSyncName;</method></netparam>
+        <netparam><method name="getValue">return parent.isStarting;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            	//The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("startNewImagesSyncprocess: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+    <netRemoteCallHib name="sendCompletedObjectSyncEvent" funcname="whiteboardservice.sendCompletedObjectSyncEvent"
+        remotecontext="$once{ canvas.thishib }" >
+    	<attribute name="uniqueObjectSyncName" value="" type="string" />
+    	<netparam><method name="getValue">return parent.uniqueObjectSyncName;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            	//The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("sendCompletedImagesSyncEvent: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>   
+    
+    
+    <method name="startStreaming" args="messageObj">
+        new lz.incomingScreenSharing(canvas,{messageObj:messageObj});
+    </method>
+    
+    <method name="stopStreaming" args="messageObj">
+        
+    </method>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/swfResourceView.lzx b/WebContent/src/modules/conference/whiteboard/base/swfResourceView.lzx
new file mode 100644
index 0000000..ed48e33
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/swfResourceView.lzx
@@ -0,0 +1,305 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="swfResourceView" extends="view" >
+	
+	<event name="prepareForDelete" />
+    
+    <attribute name="refObj" value="null" />
+	<attribute name="alterModus" value="true" type="boolean" />
+    
+    <attribute name="standardFileName" value="" type="string"/>
+	
+	<attribute name="recorderModus" value="false" type="boolean" />
+    
+    <attribute name="fullFit" value="true" type="boolean" />
+	
+	<attribute name="baseurl" value="" type="string" />
+	<attribute name="fileName" value="" type="string" />
+	<attribute name="moduleName" value="" type="string" />
+	<attribute name="parentPath" value="" type="string" />
+	<attribute name="room" value="" type="string" />
+	<attribute name="domain" value="" type="string" />    
+    <attribute name="slideNumber" value="1" type="number" /> 
+    
+    <attribute name="currentzoomFactor" value="100" type="number" />
+    <attribute name="zoomlevel" value="20" type="number" />
+    <attribute name="initwidth" value="0" type="number" />
+    <attribute name="initheight" value="0" type="number" />
+    
+    <!-- for wml-loaded SWF's
+        attribute only set on init
+     -->
+    <attribute name="innerwidth" value="0" type="number" />
+    <attribute name="innerheight" value="0" type="number" />
+    <attribute name="innerx" value="0" type="number" />
+    <attribute name="innery" value="0" type="number" />
+    <attribute name="currentzoom" value="0" type="number" />
+    
+    <attribute name="typeOfObject" value="swf" type="string" />
+    
+	<!-- holds the reference_id to the SyncProcess -->
+	<attribute name="uniqueObjectSyncName" value="" type="string" />    
+    
+    <view name="_swfView" play="false">
+    	
+    	<!--
+    	<attribute name="timeisInited" value="false" type="boolean" />
+        <attribute name="sendObjectDel" value="null" />
+         -->
+        
+        <!-- Do not send update events in case 
+            this is sync event broadcasted by another user -->
+        <attribute name="doSendChangeValue" value="false" type="boolean" />
+        
+        <handler name="onframe" args="i">
+            ////Debug.write("onframe",i);
+        </handler>
+        
+        <handler name="onplay" args="i">
+            ////Debug.write("onplay",i);
+        </handler>
+        
+        <handler name="onstop" args="i">
+            ////Debug.write("onstop",i);
+        </handler>
+        
+        <!--
+        <handler name="oninit">
+            this.sendObjectDel = new LzDelegate( this, "sendObject" );
+        </handler>
+        
+        <handler name="onx" args="x">
+        	if (!this.doSendChangeValue) {
+        		return;
+        	}
+        	
+            if (!this.timeisInited){
+                this.timeisInited=true;
+                lz.Timer.addTimer( this.sendObjectDel, 250 );
+            } else {
+                lz.Timer.resetTimer( this.sendObjectDel, 250 );
+            }
+        </handler>
+        <handler name="ony" args="y">
+        	if (!this.doSendChangeValue) {
+                return;
+            }
+            
+            if (!this.timeisInited){
+                this.timeisInited=true;
+                lz.Timer.addTimer( this.sendObjectDel, 250 );
+            } else {
+                lz.Timer.resetTimer( this.sendObjectDel, 250 );
+            }
+        </handler>        
+        
+        <method name="sendObject" args="itemRef">
+            if ($debug) Debug.info("sendObject :: sendCurrentSWFObject");
+            this.parent.parent.sendCurrentSWFObject(this.parent);
+            this.timeisInited=false;
+        </method>
+         -->
+        
+        <method name="initialLoadFullFit">
+            <![CDATA[
+            
+            	if ($debug) Debug.write(" -- fullFit -- ",parent.parent.fullFit);
+            
+                if (parent.parent.fullFit) {
+                    
+                    if ($debug) Debug.write(" -- fullFit -2- ",this.width,this.height);
+                    if ($debug) Debug.write(" -- fullFit -3- ",parent.parent.width,parent.parent.height);
+                    
+                    //Scale to container width/height
+                    var xScale = (parent.parent.parent.width-16)/this.width;
+                    var yScale = (parent.parent.parent.height-16)/this.height;
+                    
+                    if ($debug) Debug.write(" -- fullFit -4- ",xScale,yScale);
+                    
+                    if (xScale < yScale) {
+                    	parent.parent.setCurrentScaleByFullFit(xScale);
+                    } else {
+                    	parent.parent.setCurrentScaleByFullFit(yScale);
+                    }
+                    
+                }
+            
+            ]]>
+        </method>
+        
+        <handler name="onload">
+            <![CDATA[
+                if ($debug) Debug.info("onload: ",this.width,this,height);
+                
+                ////Debug.write("onload: ",this.stop);
+                this.stop();
+                this.setAttribute('play',false);             
+                
+                this.parent.initwidth = this.width;
+                this.parent.initheight = this.height;
+                
+                this.setAttribute('frame',parent.slideNumber);
+                
+                //only send syncCommand if alterModus is true (meaning that this is the Moderator)
+                //otherwise just send a notification to moderator that this iamge has been loaded
+                if (this.parent.recorderModus) {
+					this.parent.refObj.storeTempValsAndLoadSyncListSWFRecording(this.parent);
+				} else if (this.parent.alterModus){
+                    
+                    //this code is invoked when the Moderator loads the Document
+                    
+                    this.parent.refObj.storeTempValsAndLoadSyncListSWF(this.parent);
+                    if ($debug) Debug.write("==> doShowObjectBounds MOD ");
+                    
+                    this.initialLoadFullFit();
+                    
+                    this.parent.refObj.doShowObjectBounds(this.parent.name);
+                    this.parent.refObj.doUpdateDocumentToolBar();
+                } else {
+                    
+                    //this code is invoked when any participants syncronizes and loads the document
+                    //because a Moderator has loaded it
+                    
+                    if ($debug) Debug.write("==> doShowObjectBounds Participant ");
+                    
+                    this.initialLoadFullFit();
+                    
+                    this.parent.refObj.sendLoadNotificationSWF(this.parent);
+                    
+                    this.parent.refObj.doUpdateDocumentToolBarByParticipant(this.parent.name);
+                    
+                }
+                
+                if ($debug) Debug.write("swf loaded -2- ",this.parent.refObj.isWmlLoaderImage);
+                if (this.parent.refObj.isWmlLoaderImage){
+                    if ($debug) Debug.write("swf loaded ",this.parent.innerwidth,this.parent.innerheight);
+                	if (this.parent.innerwidth != 0 && this.parent.innerheight != 0) {
+	                    this.setAttribute('width',this.parent.innerwidth);
+	                    this.setAttribute('height',this.parent.innerheight);
+	                    this.setAttribute('x',this.parent.innerx);
+	                    this.setAttribute('y',this.parent.innery);
+                	}
+                    this.parent.currentzoomFactor = this.parent.currentzoom;
+                }
+
+                this.parent.refObj.layers.push(this.parent);			
+                
+                this.doSendChangeValue = true;
+                
+                this.oninit.sendEvent();
+                //this.parent.refObj.parent.parent.isloadedImage.sendEvent(this);
+                
+                //send notification to wml-loader
+                //this is send later then in normal objects cause it needs to be send after the image
+                //has been loaded completely
+                //if (this.parent.refObj.isWmlLoaderImage){
+                //    this.parent.refObj.isWmlLoaderImage=false;
+                //    if (this.parent.refObj.onwmlLoaderSend) this.parent.refObj.onwmlLoaderSend.sendEvent('swf');
+                //}
+            ]]>
+        </handler>
+        <handler name="onerror" args="error">
+            <![CDATA[
+            ////Debug.write("onerror "+error);
+            
+            
+                new lz.errorPopup(canvas,{error:"onerror SWF!! "+error});
+                
+                this.parent.initwidth = this.width;
+                this.parent.initheight = this.height;
+                                
+                //only send syncCommand if alterModus is true (meaning that this is the Moderator)
+                //otherwise just send a notification to moderator that this iamge has been loaded
+                if (this.parent.recorderModus) {
+					this.parent.refObj.storeTempValsAndLoadSyncListSWFRecording(this.parent);
+				} else if (this.parent.alterModus){
+                    this.parent.refObj.storeTempValsAndLoadSyncListSWF(this.parent);
+                } else {
+                    this.parent.refObj.sendLoadNotificationSWF(this.parent);
+                }
+                this.parent.refObj.layers.push(this.parent);			
+                
+                this.oninit.sendEvent();
+                //this.parent.refObj.parent.parent.isloadedImage.sendEvent(this.parent);
+                
+                //send notification to wml-loader
+                //this is send later then in normal objects cause it needs to be send after the image
+                //has been loaded completely
+                //if (this.parent.refObj.isWmlLoaderImage){
+                //    this.parent.refObj.isWmlLoaderImage=false;
+                //    if (this.parent.refObj.onwmlLoaderSend) this.parent.refObj.onwmlLoaderSend.sendEvent('swf');
+                //}
+            ]]>
+        </handler>
+        <handler name="ontimeout" args="error">
+            <![CDATA[
+            ////Debug.write("ontimeout "+error);
+            
+                new lz.errorPopup(canvas,{error:"ontimeout SWF!! "+error});
+                
+                this.parent.initwidth = this.width;
+                this.parent.initheight = this.height;
+                                
+                //only send syncCommand if alterModus is true (meaning that this is the Moderator)
+                //otherwise just send a notification to moderator that this iamge has been loaded
+                if (this.parent.recorderModus) {
+					this.parent.refObj.storeTempValsAndLoadSyncListSWFRecording(this.parent);
+				} else if (this.parent.alterModus){
+                    this.parent.refObj.storeTempValsAndLoadSyncListSWF(this.parent);
+                } else {
+                    this.parent.refObj.sendLoadNotificationSWF(this.parent);
+                }
+                this.parent.refObj.layers.push(this.parent);			
+                
+                this.oninit.sendEvent();
+                //this.parent.refObj.parent.parent.isloadedImage.sendEvent(this.parent);
+                
+                //send notification to wml-loader
+                //this is send later then in normal objects cause it needs to be send after the image
+                //has been loaded completely
+                //if (this.parent.refObj.isWmlLoaderImage){
+                //    this.parent.refObj.isWmlLoaderImage=false;
+                //    if (this.parent.refObj.onwmlLoaderSend) this.parent.refObj.onwmlLoaderSend.sendEvent('swf');
+                //}
+            ]]>
+        </handler> 
+        
+        <handler name="onwidth" args="w">
+            if ($debug) Debug.write("onwidth ",w);
+        </handler>
+        
+        <handler name="onheight" args="h">
+            if ($debug) Debug.write("onheight ",h);
+        </handler>
+        
+    </view>    
+    
+    <!--
+    <om_vscrollbar name="_scrollstv"
+                visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }" /> 
+    <om_hscrollbar name="_scrollsth"
+                visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }" />
+     -->   
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawArrow.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawArrow.lzx
new file mode 100644
index 0000000..a904886
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawArrow.lzx
@@ -0,0 +1,367 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="baseDrawArrow" extends="baseDrawULine" >
+    
+    <!-- for drawing drawarrow -->
+    <attribute name="currentdrawarrowlinestroke" value="0x000000" />
+    <attribute name="currentdrawarrowlinestrokeDis" value="1" type="number" />
+    <attribute name="currentdrawarrowlinestrokeFill" value="0xFF6600" />
+    <attribute name="currentdrawarrowlinestrokeFillDis" value="1" type="number" />
+    
+    <attribute name="currentdrawarrowlinelineWidth" value="4" type="number" />   
+    <attribute name="currentdrawarrowOpacity" value="1" type="number" />
+      
+    <!-- ###########################
+    drawarrow
+     -->
+     
+    
+    <method name="startDrawarrowline" args="oid_name">
+        <![CDATA[
+	        if (oid_name == null) {
+	            oid_name = 'drawarrow'+this.getCounter();
+	        }
+	        
+	        this.currentlayer = new lz.drawViewNew(this,{
+		            name:oid_name,width:this.width,height:this.height,
+		            opacity:this.currentdrawarrowOpacity});
+            
+            var pArrowStart = new flash.geom.Point(this.startx,this.starty);
+            var pArrowEnd = new flash.geom.Point(this.endx,this.endy);
+            
+            //if ($debug) Debug.write("start,end,line",pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth);
+            this.drawArrow(this.currentlayer,pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth,
+                    this.currentdrawarrowlinestrokeDis,this.currentdrawarrowlinestroke,
+                    this.currentdrawarrowlinestrokeFill,this.currentdrawarrowlinestrokeFillDis);
+        ]]>
+    </method> 
+    
+    <method name="endDrawarrowline">
+        <![CDATA[
+            //if ($debug) Debug.write("endDrawarrowline",this.startx,this.starty,this.endx,this.endy);
+	        var tempName = this.currentlayer.name;
+	        //Debug.write("tempName: ",tempName);
+	        this.currentlayer.destroy();
+	        
+	        //GetBounds of that Object
+	        var minx = this.width+2000;
+	        var miny = this.height+2000;
+	        var maxx = -2;
+	        var maxy = -2;
+	
+	        if (this.startx<minx) minx=this.startx;
+	        if (this.endx<minx) minx=this.endx;
+	        
+	        if (this.startx>maxx) maxx=this.startx;
+	        if (this.endx>maxx) maxx=this.endx;
+	        
+	        if (this.starty<miny) miny=this.starty;
+	        if (this.endy<miny) miny=this.endy;
+	        
+	        if (this.starty>maxy) maxy=this.starty;
+	        if (this.endy>maxy) maxy=this.endy;
+	        
+	        var width = maxx-minx;
+	        var height = maxy-miny;
+	        
+	        //if ($debug) Debug.write("minx,miny,width,height: ",minx,miny,width,height);
+            //if ($debug) Debug.write("endDrawarrowline",this.startx,this.starty,this.endx,this.endy);
+            	                
+	        
+            if (minx == this.startx) {
+                var x1 = 0;
+                var x2 = width;
+            } else {
+                var x1 = width;
+                var x2 = 0;
+            }
+            if (miny == this.starty) {
+                var y1 = 0;
+                var y2 = height;
+            } else {
+                var y1 = height;
+                var y2 = 0;
+            }
+            
+            if(this.isSnapToGrid){        	
+	        	minx = Math.round(minx/this.gridWidth)*this.gridWidth;
+			    miny = Math.round(miny/this.gridWidth)*this.gridWidth;
+			    
+			    //x1 = Math.round(x1/this.gridWidth)*this.gridWidth;
+			    //y1 = Math.round(y1/this.gridWidth)*this.gridWidth;
+			    
+			    //x2 = Math.round(x2/this.gridWidth)*this.gridWidth;
+			    //y2 = Math.round(y2/this.gridWidth)*this.gridWidth;
+	        		        	
+        	}
+			                        
+	        this.currentlayer = new lz.drawViewNew(this,{
+	            name:tempName,x:minx,y:miny,width:width,height:height,
+	            opacity:this.currentdrawarrowOpacity});
+	            
+	        var pArrowStart = new flash.geom.Point(x1,y1);
+            var pArrowEnd = new flash.geom.Point(x2,y2);
+            
+            //if ($debug) Debug.write("start,end,line",pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth);
+            this.drawArrow(this.currentlayer,pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth,
+                    this.currentdrawarrowlinestrokeDis,this.currentdrawarrowlinestroke,
+                    this.currentdrawarrowlinestrokeFill,this.currentdrawarrowlinestrokeFillDis);
+	            
+	        //Add Layer to global Layer     
+	        this.layers.push(this.currentlayer);
+	        this.drawarrowlineregisterFinal(this.currentlayer.name,
+                this.currentdrawarrowlinestroke,this.currentdrawarrowlinelineWidth,
+                this.currentdrawarrowlinestrokeFill,this.currentdrawarrowlinestrokeDis,
+                this.currentdrawarrowlinestrokeFillDis,this.currentdrawarrowOpacity,
+                minx,miny,width,height,
+                x1,y1,x2,y2,true,this.getSWFDocumentStatus(),
+                this.getZIndex());
+	        //Debug.write("t: ",t);
+        ]]>
+    </method> 
+       
+    <method name="drawarrowlineregisterFinal" args="newName,stroke,line,fill,strokeDis,fillDis,opacity,x,y,width,height,x1,y1,x2,y2,doCall,swfObj,zIndex">
+        var actionObject = new Array();
+        actionObject[0] = 'drawarrow';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = fill;
+        actionObject[4] = strokeDis;
+        actionObject[5] = fillDis;
+        actionObject[6] = opacity;
+        actionObject[7] = x1;  
+        actionObject[8] = y1;  
+        actionObject[9] = x2;    
+        actionObject[10] = y2;
+        actionObject[11] = zIndex;//-8
+        actionObject[12] = swfObj;//-7
+        actionObject[13] = this.counter;//-6 
+        actionObject[14] = x;//-5
+        actionObject[15] = y;//-4
+        actionObject[16] = width;//-3
+        actionObject[17] = height;//-2
+        actionObject[18] = newName;//-1
+        this.baseactionobjectList.push(actionObject);       
+        if (doCall) this.onsharedMessage('draw',actionObject);
+    </method>  
+    
+    <method name="drawarrowlineactionHistory" args="lastActionObject,parentView">
+        <![CDATA[
+            //Debug.write("## lineactionHistory",parentView," 2 ## NEW x,y ",lastActionObject[lastActionObject.length-5],lastActionObject[lastActionObject.length-4]," width,height: ",lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2]);
+            
+            var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+                name:lastActionObject[lastActionObject.length-1],
+                x:lastActionObject[lastActionObject.length-5],
+                y:lastActionObject[lastActionObject.length-4],
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2],
+                opacity:lastActionObject[6]});
+            
+            var pArrowStart = new flash.geom.Point(lastActionObject[7],lastActionObject[8]);
+            var pArrowEnd = new flash.geom.Point(lastActionObject[9],lastActionObject[10]);
+            
+            //if ($debug) Debug.write("start,end,line",pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth);
+            this.drawArrow(tmpCurrentlayer,pArrowStart,pArrowEnd,lastActionObject[2],
+                    lastActionObject[4],lastActionObject[1],
+                    lastActionObject[3],lastActionObject[5]);
+                
+            //Add Layer to global Layer     
+            this.layers.push(tmpCurrentlayer);
+
+            this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+        ]]>
+    </method>
+    
+    <method name="drawArrow" args="graphics,start,end,thickness,strokeDis,stroke,fill,fillDis">
+        <![CDATA[
+    //(graphics:Graphics,
+    //            start:Point,end:Point,
+    //            style:Object=null):void {
+            
+            if (start.equals(end)) return;
+            
+            
+            var arrowStyle = {'shaftControlPosition':0.5,
+                    'shaftControlSize':0.5,
+                    'headLength':thickness*5, //Pixel Length of arrow head
+                    'headWidth':thickness*5,//Relative width of arrow head
+                    'edgeControlPosition':0.5,
+                    'edgeControlSize':0.5,
+                    'shaftPosition':0,
+                    'shaftThickness':thickness
+                    };
+            
+            var fullVect:Point = end.subtract(start);
+            var halfWidth:Number = (arrowStyle.headWidth != -1) ? arrowStyle.headWidth/2 : arrowStyle.headLength/2; 
+            
+            //Figure out the line start/end points
+            var startNorm = new flash.geom.Point(fullVect.y,-fullVect.x);
+            startNorm.normalize(arrowStyle.shaftThickness/2);
+            var start1 = start.add(startNorm);
+            var start2 = start.subtract(startNorm);
+            var end1 = end.add(startNorm);
+            var end2 = end.subtract(startNorm);
+            
+            //if ($debug) Debug.write("startNorm: ",startNorm.toString());
+            //if ($debug) Debug.write("start1: ",start1.toString());
+            //if ($debug) Debug.write("start2: ",start2.toString());
+            //if ($debug) Debug.write("end1: ",end1.toString());
+            //if ($debug) Debug.write("end2: ",end2.toString());
+            
+            //figure out where the arrow head starts
+            var headPnt = fullVect.clone();
+            //if ($debug) Debug.write("headPnt 1: ",headPnt.toString());
+            //if ($debug) Debug.write("headPnt.length 1: ",headPnt.length);
+            //if ($debug) Debug.write("arrowStyle.headLength 1: ",arrowStyle.headLength);
+            headPnt.normalize(headPnt.length-arrowStyle.headLength);
+            //if ($debug) Debug.write("headPnt 2: ",headPnt.toString());
+            headPnt = headPnt.add(start);
+            //if ($debug) Debug.write("headPnt 3: ",headPnt.toString());
+            
+            //calculate the arrowhead corners
+            var headPntNorm = startNorm.clone();
+            //if ($debug) Debug.write("headPntNorm ^^: ",headPntNorm.toString());
+            //if ($debug) Debug.write("halfWidth ^^: ",halfWidth);
+            headPntNorm.normalize(halfWidth);
+            //if ($debug) Debug.write("headPntNorm: ",headPntNorm.toString());
+            var edge1 = headPnt.add(headPntNorm);
+            var edge2 = headPnt.subtract(headPntNorm);
+            
+            //if ($debug) Debug.write("edge1: ",edge1.toString());
+            //if ($debug) Debug.write("edge2: ",edge2.toString());
+            
+            //Figure out where the arrow connects the the shaft, then calc the intersections
+            var shaftCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("end: ",end.toString());
+            //if ($debug) Debug.write("headPnt",headPnt.toString());
+            //if ($debug) Debug.write("arrowStyle.shaftPosition: ",arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("shaftCenter",shaftCenter.toString());
+            var inter1 = this.getLineIntersection(start1,end1,shaftCenter,edge1);
+            var inter2 = this.getLineIntersection(start2,end2,shaftCenter,edge2);
+            
+            //if ($debug) Debug.write("inter1: ",inter1.toString());
+            //if ($debug) Debug.write("inter2: ",inter2.toString());
+            
+            //Figure out the control points
+            var edgeCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.edgeControlPosition);
+            var edgeNorm = startNorm.clone();
+            edgeNorm.normalize(halfWidth*arrowStyle.edgeControlSize);
+            //if ($debug) Debug.write("halfWidth*arrowStyle.edgeControlSize: "+(halfWidth*arrowStyle.edgeControlSize));
+            //if ($debug) Debug.write("edgeNorm: "+edgeNorm.toString());
+            var edgeCntrl1 = edgeCenter.add(edgeNorm);
+            var edgeCntrl2 = edgeCenter.subtract(edgeNorm);
+
+            //if ($debug) Debug.write("edgeCntrl1: ",edgeCntrl1.toString());
+            //if ($debug) Debug.write("edgeCntrl2: ",edgeCntrl2.toString());
+
+            //if ($debug) Debug.write("moveTo: ",start1.x,start1.y);
+            //if ($debug) Debug.write("lineTo",inter1.x,inter1.y);
+            //if ($debug) Debug.write("lineTo",edge1.x,edge1.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            //if ($debug) Debug.write("lineTo",inter2.x,inter2.y);
+            //if ($debug) Debug.write("lineTo",start2.x,start2.y);
+            //if ($debug) Debug.write("lineTo",start1.x,start1.y);
+            
+            graphics.moveTo(start1.x,start1.y);
+            graphics.lineTo(inter1.x,inter1.y);
+            graphics.lineTo(edge1.x,edge1.y);
+            graphics.quadraticCurveTo(edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            graphics.quadraticCurveTo(edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            graphics.lineTo(inter2.x,inter2.y);
+            graphics.lineTo(start2.x,start2.y);
+            graphics.lineTo(start1.x,start1.y);
+            
+            if (strokeDis!=-1){
+                graphics.strokeStyle = stroke;
+                graphics.stroke();
+            }
+
+            if (fillDis!=-1){
+                graphics.fillStyle = fill;
+                graphics.fill();
+            }
+        ]]>
+    </method>
+    
+    <method name="getLineIntersection" args="a1,a2,b1,b2">
+        <![CDATA[ 
+        
+            //calculate directional constants
+            var k1 = (a2.y-a1.y) / (a2.x-a1.x);
+            var k2 = (b2.y-b1.y) / (b2.x-b1.x);
+            
+            // if the directional constants are equal, the lines are parallel,
+            // meaning there is no intersection point.
+            if( k1 == k2 ) return null;
+            
+            var x = 0;
+            var y = 0;
+            var m1 = 0;
+            var m2 = 0;
+            
+            //if ($debug) Debug.write("k1",k1);
+            //if ($debug) Debug.write("k2",k2);
+            
+            // an infinite directional constant means the line is vertical
+            if( !isFinite(k1) ) {
+                
+                //if ($debug) Debug.write("k1 ^^ 0");
+                //if ($debug) Debug.write("k2",k2,(b2.y-b1.y));
+                //if ($debug) Debug.write("b1.getY(): "+b1.y);
+                //if ($debug) Debug.write("b2.getY(): "+b2.y);
+                // so the intersection must be at the x coordinate of the line
+                x = a1.x;
+                m2 = b1.y - k2 * b1.x;
+                //if ($debug) Debug.write("m2",m2);
+                y = k2 * x + m2;
+                //if ($debug) Debug.write("y",y);
+                
+            // same as above for line 2
+            } else if ( !isFinite(k2) ) {
+                
+                //if ($debug) Debug.write("k2 ^ 0");
+                
+                m1 = a1.y - k1 * a1.x;
+                x = b1.x;
+                y = k1 * x + m1;
+
+            // if neither of the lines are vertical
+            } else {
+                
+                //if ($debug) Debug.write("neither");
+            
+                m1 = a1.y - k1 * a1.x;
+                m2 = b1.y - k2 * b1.x;              
+                x = (m1-m2) / (k2-k1);
+                y = k1 * x + m1;
+                
+            }
+            
+            return new flash.geom.Point(x,y);
+        ]]>
+    </method>    
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawClipArt.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawClipArt.lzx
new file mode 100644
index 0000000..59b71b6
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawClipArt.lzx
@@ -0,0 +1,650 @@
+<?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.
+  
+-->
+<library>
+	
+
+<class name="drawClipArtWhiteBoard" >
+    
+    <attribute name="clipArtEndx" value="0" type="number" />
+    <attribute name="clipArtEndy" value="0" type="number" />
+    
+    <!-- Not needed anymore, use LzView.setColor instead
+    <method name="setTint" args="color, brightness">
+        <![CDATA[
+        if (color != "" && color != null){
+            if (brightness == null) { brightness = 0; }
+            var rgb = color;
+            var red=(rgb >> 16) & 0xFF;
+            var green=(rgb >> 8) & 0xFF;
+            var blue=rgb & 0xFF;
+
+            this.setColorTransform( { ra : red, ga : green, ba : blue,
+                                        rb : 0, gb : 0, bb : 100 } );
+        }
+        ]]>
+    </method>
+     -->
+     
+</class>	
+    
+<class name="baseDrawClipArt" extends="baseDrawArrow" >
+	
+	<attribute name="minClipArtx" value="0" type="number" />
+	<attribute name="maxClipArtx" value="0" type="number" />
+	<attribute name="minClipArty" value="0" type="number" />
+    <attribute name="maxClipArty" value="0" type="number" />
+    <attribute name="deltaClipArtx" value="0" type="number" />
+    <attribute name="deltaClipArty" value="0" type="number" />
+    
+    <attribute name="clipArtEndx" value="0" type="number" />
+    <attribute name="clipArtEndy" value="0" type="number" />
+	
+	<attribute name="currentClipArtRessourceName" value="idea.png" type="string"/>
+	    
+    <method name="startDrawClipArt" args="oid_name">
+        <![CDATA[
+        if (oid_name == null) {
+            oid_name = 'clipart'+this.getCounter();
+        }
+        
+        this.currentlayer = new lz.drawViewNew(this,{
+                                    name:oid_name,width:this.width,height:this.height,
+                                    opacity:this.currentdrawarrowOpacity});
+         
+        this.startx = this.currentlayer.getMouse('x');
+        this.starty = this.currentlayer.getMouse('y');
+                                    
+        var imageurl = canvas.getUrl() + 'public/cliparts/'+this.currentClipArtRessourceName;
+        
+        if ($debug) Debug.write("imageurl :: ",imageurl);
+        
+        new lz.drawClipArtWhiteBoard(this.currentlayer,{
+        	                width:100,height:100,stretches:'both',
+                            x:this.startx,y:this.starty,
+                            //bgcolor:0xFF3300,
+                            resource:imageurl,name:'clipart'});
+
+        this.minClipArtx = this.startx;
+        this.minClipArty = this.starty;
+        this.maxClipArtx = this.startx+100;
+        this.maxClipArty = this.starty+100;
+        this.clipArtEndx = this.maxClipArtx;
+        this.clipArtEndy = this.maxClipArty;
+        this.deltaClipArtx = 0;
+        this.deltaClipArty = 0;
+            
+                            
+        ]]>
+    </method>
+    
+    <method name="setStartPoint" args="sx,sy">
+    	this.startx = sx;
+        this.starty = sy;
+    </method>
+     
+    <method name="trackDrawClipArt">   
+        <![CDATA[
+        //Add Resource
+        //var t = new lz.drawClipArtWhiteBoard(this.currentlayer,{
+        //                    resource:imageurl,x:this.startx,y:this.starty});
+        
+        //Color
+        //t.setTint(this.currentdrawarrowlinestroke,60);
+        //t.setColor(this.currentdrawarrowlinestroke);
+        var tEndX = this.currentlayer.getMouse('x');
+        var tEndY = this.currentlayer.getMouse('y');
+        
+        this.trackDrawClipArtDraw(tEndX,tEndY,this.currentlayer.clipart);
+        
+        ]]>
+    </method>    
+        
+    <method name="trackDrawClipArtDraw" args="tEndX,tEndY,t">   
+        <![CDATA[
+        //Add Resource
+        //var t = new lz.drawClipArtWhiteBoard(this.currentlayer,{
+        //                    resource:imageurl,x:this.startx,y:this.starty});
+        
+        //Color
+        //t.setTint(this.currentdrawarrowlinestroke,60);
+        //t.setColor(this.currentdrawarrowlinestroke);
+        
+        //if ($debug) Debug.write("trackDrawClipArtDraw ",tEndX,tEndY,t);
+        
+        this.clipArtEndx = tEndX;
+        this.clipArtEndy = tEndY;
+        
+        var tx = tEndX-this.startx;
+        var ty = tEndY-this.starty;
+        
+        var gegenkathete = Math.abs(ty);
+        var ankathete = Math.abs(tx); 
+        var hypothenuse = Math.sqrt((ankathete*ankathete)+(gegenkathete*gegenkathete));
+        var sinAlpha = (gegenkathete/hypothenuse);
+        var palpha = Math.asin(sinAlpha);
+        var alpha = palpha/(Math.PI/180);
+        
+        var tLength = Math.sqrt(2)/2*hypothenuse;
+        
+        //if ($debug) Debug.write("tx,ty,alpha,sinAlpha,tLength "+tx+" "+ty+" "+alpha+" "+sinAlpha+" "+tLength);
+        
+        //if ($debug) Debug.write("CALC tx,ty",tx,ty);
+        
+        if (Math.abs(tx) < 2 && Math.abs(ty) < 2) {
+        	
+        	this.minClipArtx = this.startx;
+            this.minClipArty = this.starty;
+            this.maxClipArtx = this.startx+100;
+            this.maxClipArty = this.starty+100;
+            this.clipArtEndx = this.maxClipArtx;
+            this.clipArtEndy = this.maxClipArty;
+            t.setAttribute('rotation',0);
+            
+            this.deltaClipArtx = 0;
+            this.deltaClipArty = 0;
+            
+            //if ($debug) Debug.write(" IS ZERO ",this.startx,this.starty);
+        	
+        } else if (tx>=0 && ty>=0){    
+            t.setAttribute('rotation',(alpha-45));
+            
+            var tRotate = (alpha-45);
+            var pRotate = tRotate * (Math.PI/180);
+            
+            //1. Quadrant  left-down
+            var ankathete_2 = Math.cos(pRotate)*tLength;
+            var gegenkathete_2 = Math.sin(pRotate)*tLength;
+            var tx2 = this.startx+ankathete_2;
+            var ty2 = this.starty+gegenkathete_2;
+            //if ($debug) Debug.write("_1  ",this.startx,this.starty,tx2,ty2);
+            
+            var tRotate2 = 180-(alpha+45);
+            var pRotate2 = tRotate2 * (Math.PI/180);
+            
+            var ankathete_4 = Math.sin(pRotate2)*tLength;
+            var gegenkathete_4 = Math.cos(pRotate2)*tLength;
+            var tx4 = this.startx-gegenkathete_4;
+            var ty4 = this.starty+ankathete_4;
+            
+            this.minClipArtx = tx4;
+            if (this.startx < tx4) {
+            	this.minClipArtx = this.startx;
+            }
+            
+            this.minClipArty = this.starty;
+            if (ty2 < this.starty) {
+            	this.minClipArty = ty2;
+            }
+            
+            this.maxClipArtx = tx2;
+            if (tEndX > tx2) {
+            	this.maxClipArtx = tEndX;
+            }
+            
+            this.maxClipArty = tEndY;
+            if (ty4 > tEndY) {
+            	this.maxClipArty = ty4;
+            }
+            
+            if (gegenkathete_4 > 0) {
+                this.deltaClipArtx = gegenkathete_4;
+                this.deltaClipArty = 0;
+            } else {
+            	this.deltaClipArtx = 0;
+            	this.deltaClipArty = Math.abs(gegenkathete_2);
+            }
+            
+            
+            //if ($debug) Debug.write("_1  ",gegenkathete_4,gegenkathete_2);
+            
+            //if ($debug) Debug.write("_1  ",this.startx,this.starty,tx4,ty4);
+            
+            //if ($debug) Debug.write("_2 ",pRotate2,tRotate2,Math.sin(pRotate2),gegenkathete_4);
+            //if ($debug) Debug.write("_1  ",this.starty,ty4,ankathete_4,"tRotate2,tLength",tRotate2,tLength);
+            
+        } else if (tx<0 && ty>=0){
+            t.setAttribute('rotation',(90+45)-(alpha));
+            
+            var tRotate = (alpha-45);
+            var pRotate = tRotate * (Math.PI/180);
+            
+            //1. Quadrant  left-down
+            var ankathete_2 = Math.cos(pRotate)*tLength;
+            var gegenkathete_2 = Math.sin(pRotate)*tLength;
+            var tx4 = this.startx-ankathete_2;
+            var ty4 = this.starty+gegenkathete_2;
+            
+            //if ($debug) Debug.write("_1  ",this.startx,this.starty,tx4,ty4);
+            
+            var tRotate2 = 180-(alpha+45);
+            var pRotate2 = tRotate2 * (Math.PI/180);
+            
+            var gegenkathete_4 = Math.sin(pRotate2)*tLength;
+            var ankathete_4 = Math.cos(pRotate2)*tLength;
+            var tx2 = this.startx+ankathete_4;
+            var ty2 = this.starty+gegenkathete_4;
+            
+            //if ($debug) Debug.write("_1  x,y",this.startx,this.starty,"tx2,ty2",tx2,ty2,"tx4,ty4",tx4,ty4);
+            
+            this.minClipArtx = tx4;
+            if (tEndX < tx4) {
+                this.minClipArtx = tEndX;
+            }
+            
+            this.minClipArty = this.starty;
+            if (ty4 < this.starty) {
+                this.minClipArty = ty4;
+            }
+            
+            this.maxClipArtx = tx2;
+            if (this.startx > tx2) {
+                this.maxClipArtx = this.startx;
+            }
+            
+            this.maxClipArty = tEndY;
+            if (ty2 > tEndY) {
+                this.maxClipArty = ty2;
+            }
+            
+            if (gegenkathete_2 > 0) {
+                this.deltaClipArtx = ankathete_2;
+                this.deltaClipArty = 0;
+            } else {
+                this.deltaClipArtx = this.maxClipArtx-this.minClipArtx;
+                this.deltaClipArty = Math.abs(gegenkathete_2);
+            }
+            
+        } else if (tx<0 && ty<0){
+            t.setAttribute('rotation',180+(alpha-45));
+            
+            var tRotate = (alpha-45);
+            var pRotate = tRotate * (Math.PI/180);
+            
+            //1. Quadrant  left-down
+            var ankathete_2 = Math.cos(pRotate)*tLength;
+            var gegenkathete_2 = Math.sin(pRotate)*tLength;
+            var tx4 = this.startx-ankathete_2;
+            var ty4 = this.starty-gegenkathete_2;
+            
+            var tRotate2 = 180-(alpha+45);
+            var pRotate2 = tRotate2 * (Math.PI/180);
+            
+            var gegenkathete_4 = Math.sin(pRotate2)*tLength;
+            var ankathete_4 = Math.cos(pRotate2)*tLength;
+            var tx2 = this.startx+ankathete_4;
+            var ty2 = this.starty-gegenkathete_4;
+            
+            this.minClipArtx = tx4;
+            if (tEndX < tx4) {
+                this.minClipArtx = tEndX;
+            }
+            
+            this.minClipArty = tEndY;
+            if (ty2 < tEndY) {
+                this.minClipArty = ty2;
+            }
+            
+            this.maxClipArtx = tx2;
+            if (this.startx > tx2) {
+                this.maxClipArtx = this.startx;
+            }
+            
+            this.maxClipArty = ty4;
+            if (this.starty > ty4) {
+                this.maxClipArty = this.starty;
+            }
+            
+            //if ($debug) Debug.write("_1  ",gegenkathete_2);
+            
+            if (gegenkathete_2 < 0) {
+                this.deltaClipArtx = this.maxClipArtx-this.minClipArtx;
+                this.deltaClipArty = gegenkathete_4;
+            } else {
+                this.deltaClipArtx = ankathete_2;
+                this.deltaClipArty = this.maxClipArty-this.minClipArty;
+            }
+            
+            
+        } else if (tx>0 && ty<=0){
+            t.setAttribute('rotation',((270+45)-alpha));
+            
+            //if ($debug) Debug.write("alpha :: ",alpha);
+            
+            //if ($debug) Debug.write("_1  ",gegenkathete_2);
+            var tRotate = (alpha-45);
+            var pRotate = tRotate * (Math.PI/180);
+            
+            //1. Quadrant  left-down
+            var ankathete_2 = Math.cos(pRotate)*tLength;
+            var gegenkathete_2 = Math.sin(pRotate)*tLength;
+            var tx4 = this.startx+ankathete_2;
+            var ty4 = this.starty-gegenkathete_2;
+            
+            //if ($debug) Debug.write("gegenkathete_2 :: ",gegenkathete_2);
+            
+            var tRotate2 = 180-(alpha+45);
+            var pRotate2 = tRotate2 * (Math.PI/180);
+            
+            var gegenkathete_4 = Math.sin(pRotate2)*tLength;
+            var ankathete_4 = Math.cos(pRotate2)*tLength;
+            var tx2 = this.startx-ankathete_4;
+            var ty2 = this.starty-gegenkathete_4;
+            
+            //if ($debug) Debug.write("ankathete_4 :: ",ankathete_4);
+            
+            this.minClipArtx = tx2;
+            if (this.startx < tx2) {
+                this.minClipArtx = this.startx;
+            }
+            
+            this.minClipArty = tEndY;
+            if (ty2 < tEndY) {
+                this.minClipArty = ty2;
+            }
+            
+            this.maxClipArtx = tEndX;
+            if (tx4 > tEndX) {
+                this.maxClipArtx = tx4;
+            }
+            
+            this.maxClipArty = this.starty;
+            if (ty4 > this.starty) {
+                this.maxClipArty = ty4;
+            }
+            
+            //if ($debug) Debug.write("_1  ",ankathete_4);
+            
+            if (ankathete_4 < 0) {
+                this.deltaClipArtx = 0;
+                this.deltaClipArty = gegenkathete_4;
+            } else {
+                this.deltaClipArtx = ankathete_4;
+                this.deltaClipArty = this.maxClipArty-this.minClipArty;
+                
+                //this.deltaClipArtx = 0;
+                //this.deltaClipArty = 0;
+            }
+            
+        }
+        
+        //if (tx)
+        
+        //Scaling
+        //var basicLength = Math.sqrt((t.width*t.width)+(t.width*t.width));
+        //t.getDisplayObject()._xscale = (hypothenuse/basicLength)*100;
+        //t.getDisplayObject()._yscale = (hypothenuse/basicLength)*100;
+        
+        //if ($debug) Debug.write("hypothenuse "+hypothenuse);
+        
+        
+        
+        t.setAttribute("width",tLength);
+        t.setAttribute("height",tLength);
+
+        //Set previous to null
+        this.prevx = this.currentlayer.getMouse('x');
+        this.prevy = this.currentlayer.getMouse('y');  
+        
+        ]]>
+    </method> 
+    
+    <method name="drawClipArtToHistory" args="lastActionObject,parentView">
+    	<![CDATA[
+    	
+    	   var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+                name:lastActionObject[lastActionObject.length-1],
+                x:lastActionObject[lastActionObject.length-5],
+                y:lastActionObject[lastActionObject.length-4],
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2],
+                opacity:lastActionObject[4]
+                });
+    	
+           new lz.drawClipArtWhiteBoard(tmpCurrentlayer,{
+                                    width:lastActionObject[7],
+                                    height:lastActionObject[8],
+                                    stretches:'both',
+                                    x:lastActionObject[5],
+                                    y:lastActionObject[6],
+                                    rotation:lastActionObject[3],
+                                    resource:lastActionObject[2],
+                                    clipArtEndx:lastActionObject[9],
+                                    clipArtEndy:lastActionObject[10],
+                                    name:'clipart'
+                                });
+             
+            if ($debug) Debug.write("x,y ",tmpCurrentlayer.x,tmpCurrentlayer.y,tmpCurrentlayer.width,tmpCurrentlayer.height);
+                                
+            //Add Layer to global Layer     
+            this.layers.push(tmpCurrentlayer);                                
+              
+            this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+    	]]>
+    </method>
+    
+    <method name="endDrawClipArtDrag" args="cLayer">
+        <![CDATA[
+        
+            var oid_name = cLayer.name;
+            var tSource = cLayer.clipart.resource;
+            var tRotation = cLayer.clipart.rotation;
+            var tX = cLayer.clipart.x;
+            var tY = cLayer.clipart.y;
+            var tWidth = cLayer.clipart.width;
+            var tHeight = cLayer.clipart.height;
+               
+            //if ($debug) Debug.write("END 0 ",tY);
+            
+            cLayer.destroy();
+           
+            //if ($debug) Debug.write("END 1 ",this.minClipArty,this.starty);
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                                        x:this.minClipArtx,
+                                        y:this.minClipArty,
+                                        name:oid_name,
+                                        width:this.maxClipArtx-this.minClipArtx,
+                                        height:this.maxClipArty-this.minClipArty
+                                        //bgcolor:0x0033FF
+                                    });
+            
+            //if ($debug) Debug.write(" IS ZERO END1 ",this.currentlayer.x,this.currentlayer.y);                        
+                                    
+            new lz.drawClipArtWhiteBoard(this.currentlayer,{
+                                    width:tWidth,height:tHeight,
+                                    stretches:'both',
+                                    x:this.deltaClipArtx,
+                                    y:this.deltaClipArty,
+                                    rotation:tRotation,
+                                    resource:tSource,
+                                    clipArtEndx:this.clipArtEndx-this.minClipArtx,
+                                    clipArtEndy:this.clipArtEndy-this.minClipArty,
+                                    name:'clipart'
+                                    //bgcolor:0xFF3300
+                                });
+        
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==oid_name) {
+                    
+                    //if ($debug) Debug.write("Found Object 1: ",this.baseactionobjectList[eg]);
+                    
+                	//actionObject[3] = tRotation;
+        //actionObject[5] = deltaClipArtx;
+        //actionObject[6] = deltaClipArty;
+        //actionObject[7] = deltaClipWidth;
+        //actionObject[8] = deltaClipHeight;
+        //actionObject[9] = deltaClipEndx;
+        //actionObject[10] = deltaClipEndy;
+        //actionObject[14] = x;//-5
+        //actionObject[15] = y;//-4
+        //actionObject[16] = width;//-3
+        //actionObject[17] = height;//-2
+        
+            	    this.baseactionobjectList[eg][3] = tRotation;
+                	this.baseactionobjectList[eg][5] = this.deltaClipArtx;
+                	this.baseactionobjectList[eg][6] = this.deltaClipArty;
+                	this.baseactionobjectList[eg][7] = tWidth;
+                	this.baseactionobjectList[eg][8] = tHeight;
+                	this.baseactionobjectList[eg][9] = this.clipArtEndx-this.minClipArtx;
+                	this.baseactionobjectList[eg][10] = this.clipArtEndy-this.minClipArty;
+                	
+                    this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5] = this.minClipArtx;
+                    this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4] = this.minClipArty;
+                    this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-3] = this.maxClipArtx-this.minClipArtx;
+                    this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-2] = this.maxClipArty-this.minClipArty;
+                    
+                    var newA = this.baseactionobjectList[eg];
+                    
+                    this.onsharedMessage('size',newA);
+                    
+                    break;
+                }
+            }   
+                           
+            //Set previous to null
+            this.prevx = null;
+            this.prevy = null;  
+        
+        ]]>
+    </method>
+    
+    <method name="endDrawClipArt">
+    	<![CDATA[
+    	
+            var oid_name = this.currentlayer.name;
+    	    var tSource = this.currentlayer.clipart.resource;
+    	    var tRotation = this.currentlayer.clipart.rotation;
+    	    var tX = this.currentlayer.clipart.x;
+    	    var tY = this.currentlayer.clipart.y;
+    	    var tWidth = this.currentlayer.clipart.width;
+    	    var tHeight = this.currentlayer.clipart.height;
+    	
+    	    //if ($debug) Debug.write("END 0 ",tY);
+    	    
+    	    this.currentlayer.destroy();
+    	       	        	    
+    	    //if ($debug) Debug.write("END 1 ",this.minClipArty,this.starty);
+    	    
+	     	if(this.isSnapToGrid){        		
+	    		if ($debug) Debug.write("####  this.minClipArtx y ",this.minClipArtx,this.minClipArty);
+	    	
+		    	//this.minClipArtx = Math.round(this.minClipArtx/this.gridWidth)*this.gridWidth;
+		    	//this.minClipArty = Math.round(this.minClipArty/this.gridWidth)*this.gridWidth;
+		    	
+		    	tX = Math.round(tX/this.gridWidth)*this.gridWidth;
+		    	tY = Math.round(tY/this.gridWidth)*this.gridWidth;
+		    	
+		    	this.currentlayer = new lz.drawViewNew(this,{
+    	                                x:tX,
+    	                                y:tY,
+                                        name:oid_name,
+                                        width:this.maxClipArtx-this.minClipArtx,
+                                        height:this.maxClipArty-this.minClipArty
+                                        //bgcolor:0x0033FF
+                                    });
+		    	
+            }else{
+    	    
+	    	    this.currentlayer = new lz.drawViewNew(this,{
+	    	                                x:this.minClipArtx,
+	    	                                y:this.minClipArty,
+	                                        name:oid_name,
+	                                        width:this.maxClipArtx-this.minClipArtx,
+	                                        height:this.maxClipArty-this.minClipArty
+	                                        //bgcolor:0x0033FF
+	                                    });
+            
+            //if ($debug) Debug.write(" IS ZERO END1 ",this.currentlayer.x,this.currentlayer.y);                        
+            }                                                
+            new lz.drawClipArtWhiteBoard(this.currentlayer,{
+                                    width:tWidth,height:tHeight,
+                                    stretches:'both',
+                                    x:this.deltaClipArtx,
+                                    y:this.deltaClipArty,
+                                    rotation:tRotation,
+                                    resource:tSource,
+                                    clipArtEndx:this.clipArtEndx-this.minClipArtx,
+                                    clipArtEndy:this.clipArtEndy-this.minClipArty,
+                                    name:'clipart'
+                                    //bgcolor:0xFF3300
+                                });
+    	
+            //if ($debug) Debug.write(" IS ZERO END2 ",this.deltaClipArtx,this.deltaClipArty);                        
+            
+            //if ($debug) Debug.write("END 2 ",this.currentlayer.y,this.currentlayer.clipart.y);
+            
+    	    this.drawClipArtRegisterFinal(
+    	                   oid_name,
+    	                   tSource,
+    	                   tRotation,
+    	                   1,
+    	                   this.minClipArtx,
+    	                   this.minClipArty,
+    	                   this.maxClipArtx-this.minClipArtx,
+    	                   this.maxClipArty-this.minClipArty,
+    	                   this.deltaClipArtx,
+    	                   this.deltaClipArty,
+    	                   tWidth,
+    	                   tHeight,
+    	                   this.clipArtEndx-this.minClipArtx,
+                           this.clipArtEndy-this.minClipArty,
+    	                   true,
+    	                   this.getSWFDocumentStatus(),
+    	                   this.getZIndex());
+    	     
+            this.layers.push(this.currentlayer);
+            this.checkStepLayers();    	                   
+    	                   
+            //Set previous to null
+            this.prevx = null;
+            this.prevy = null;  
+    	
+    	]]>
+    </method>
+    
+    <method name="drawClipArtRegisterFinal" args="newName,tSource,tRotation,opacity,x,y,width,height,deltaClipArtx,deltaClipArty,deltaClipWidth,deltaClipHeight,deltaClipEndx,deltaClipEndy,doCall,swfObj,zIndex">
+        var actionObject = new Array();
+        actionObject[0] = 'clipart';
+        actionObject[1] = newName;
+        actionObject[2] = tSource;
+        actionObject[3] = tRotation;
+        actionObject[4] = opacity;
+        actionObject[5] = deltaClipArtx;
+        actionObject[6] = deltaClipArty;
+        actionObject[7] = deltaClipWidth;
+        actionObject[8] = deltaClipHeight;
+        actionObject[9] = deltaClipEndx;
+        actionObject[10] = deltaClipEndy;
+        actionObject[11] = zIndex;//-8
+        actionObject[12] = swfObj;//-7
+        actionObject[13] = this.counter;//-6 
+        actionObject[14] = x;//-5
+        actionObject[15] = y;//-4
+        actionObject[16] = width;//-3
+        actionObject[17] = height;//-2
+        actionObject[18] = newName;//-1
+        this.baseactionobjectList.push(actionObject);       
+        if (doCall) this.onsharedMessage('draw',actionObject);
+    </method>      
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawEllipse.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawEllipse.lzx
new file mode 100644
index 0000000..6107959
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawEllipse.lzx
@@ -0,0 +1,215 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawEllipse" extends="baseDrawRect" >
+    
+    <!-- 
+        for drawing ellipse the variable 
+        with *Dis* indicates if the line/fil-color is active (+1/-1)
+     -->
+    <attribute name="currentellipsestroke" value="0xFF6600" />
+    <attribute name="currentellipsestrokeDis" value="1" type="number" />
+    <attribute name="currentellipsestrokeFill" value="0xFFFF33" />
+    <attribute name="currentellipsestrokeFillDis" value="1" type="number" />
+    <attribute name="currentellipselineWidth" value="4" />
+    <attribute name="currentellipseOpacity" value="1" type="number" />
+  
+    <!-- ################
+    Ellipse
+     -->
+    <method name="startEllipse" args="oid_name">
+        //Debug.write("startEllipse");
+        if (oid_name == null) {
+            oid_name = 'ellipse'+this.getCounter();
+        }
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width+2,height:this.height+2,
+            opacity:this.currentellipseOpacity});
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+    </method>    
+    
+    <method name="endEllipse">
+        <![CDATA[
+            ////Debug.write(" this.startx, this.starty , this.endx, this.endy ",this.startx, this.starty , this.endx, this.endy);
+            var tmpName = this.currentlayer.name;
+            this.currentlayer.destroy();
+            var x = this.startx;
+            var width = this.endx - this.startx;
+            if (this.endx<this.startx){
+                x = this.endx;
+                width = Math.abs(width);
+            }
+            var y = this.starty;
+            var height = this.endy - this.starty;
+            if (this.endy<this.starty){
+                y = this.endy;
+                height = Math.abs(height);
+            }
+            
+            if(this.isSnapToGrid){        		
+	    			        	   
+	            x = Math.round(x/this.gridWidth)*this.gridWidth;
+		    	y = Math.round(y/this.gridWidth)*this.gridWidth;
+            
+            } 
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                name:tmpName,x:x,y:y,width:width,height:height,
+                opacity:this.currentellipseOpacity});
+                
+            new lz.drawViewInner(this.currentlayer,{
+                name:'_innerEllipse',x:0,y:0,width:width,height:height});
+                
+            //this.drawellipse(0,0,width,height);
+            //Debug.write("this.currentellipsestroke,this.currentellipselineWidth: ",this.currentellipsestroke,this.currentellipselineWidth);
+            
+            this.drawellipseHistory(this.currentlayer,
+                0,0,width,height,
+                this.currentellipsestroke,this.currentellipselineWidth,
+                this.currentellipsestrokeFill,this.currentellipsestrokeDis,
+                this.currentellipsestrokeFillDis)
+            
+            //Draw On Object    
+                
+            this.drawellipseregisterFinal(this.currentlayer.name,
+                this.currentellipsestroke,this.currentellipselineWidth,
+                this.currentellipsestrokeFill,this.currentellipsestrokeDis,
+                this.currentellipsestrokeFillDis,
+                x,y,width,height,this.getSWFDocumentStatus(),this.getZIndex());
+            this.layers.push(this.currentlayer);
+            this.checkStepLayers();
+        ]]>
+    </method>
+    
+    <method name="drawellipseToHistory"  args="lastActionObject,parentView">
+
+        var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+            name:lastActionObject[lastActionObject.length-1],
+            x:lastActionObject[lastActionObject.length-5],
+            y:lastActionObject[lastActionObject.length-4],
+            width:lastActionObject[lastActionObject.length-3],
+            height:lastActionObject[lastActionObject.length-2],
+            opacity:lastActionObject[6]});
+            
+        new lz.drawViewInner(tmpCurrentlayer,{
+                name:'_innerEllipse',x:0,y:0,
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2]});
+                
+        //Debug.write("lastActionObject[1],lastActionObject[2]: ",lastActionObject[1],lastActionObject[2]);
+        this.drawellipseHistory(tmpCurrentlayer,
+            0,0,lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2],
+            lastActionObject[1],lastActionObject[2],
+            lastActionObject[3],lastActionObject[4],
+            lastActionObject[5]);
+
+        this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+    </method>
+    
+    <method name="redrawEllipseItemByScaling" args="objRef">
+        //if ($debug) Debug.write("redrawRectItemByScaling: "+objRef);
+        this.currentlayer = objRef;
+        this.currentlayer._innerEllipse.destroy();
+        new lz.drawViewInner(this.currentlayer,{
+            name:'_innerEllipse',x:0,y:0,width:objRef.width,height:objRef.height});
+        this.drawellipseHistory(this.currentlayer,0,0,
+            objRef.width,objRef.height,
+            this.currentellipsestroke,this.currentellipselineWidth,
+            this.currentellipsestrokeFill,this.currentellipsestrokeDis,
+            this.currentellipsestrokeFillDis);
+    </method> 
+    
+    <method name="drawellipseHistory" args="parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis">
+        <![CDATA[
+        
+            //Debug.write("stroke,line: ",stroke,line);
+            var rx = (x1+x2)/2;
+            var ry = (y1+y2)/2;
+            var xradius = Math.abs(rx-x1);
+            var yradius = Math.abs(ry-y1);
+            
+            parentObj._innerEllipse.lineWidth = line;
+            parentObj._innerEllipse.oval(rx,ry,xradius,yradius);
+            
+            if (strokeDis!=-1){
+                parentObj._innerEllipse.strokeStyle = stroke;
+                parentObj._innerEllipse.stroke();
+            }
+
+            if (fillDis!=-1){
+                parentObj._innerEllipse.fillStyle = fill;
+                parentObj._innerEllipse.fill();
+            }
+
+        ]]>   
+    </method>   
+     
+    <method name="drawellipse" args="x1,y1,x2,y2">
+        <![CDATA[
+            //Debug.write("stroke,line: ",this.currentellipsestroke,this.currentellipselineWidth);
+            var rx = (x1+x2)/2;
+            var ry = (y1+y2)/2;
+            var xradius = Math.abs(rx-x1);
+            var yradius = Math.abs(ry-y1);
+            
+            currentlayer.lineWidth = this.currentellipselineWidth;
+            currentlayer.oval(rx,ry,xradius,yradius);
+            
+            if (this.currentellipsestrokeDis!=-1){
+                currentlayer.strokeStyle = this.currentellipsestroke;
+                currentlayer.stroke();
+            }
+            
+            if (this.currentellipsestrokeFillDis!=-1){
+                currentlayer.fillStyle = this.currentellipsestrokeFill;
+                currentlayer.fill(); 
+            }
+    
+        ]]>   
+    </method>
+    
+    <method name="drawellipseregisterFinal" args="newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height,swfObj,zIndex" >
+        var actionObject = new Array();
+        actionObject[0] = 'ellipse';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = fill;
+        actionObject[4] = strokeDis;
+        actionObject[5] = fillDis;
+        actionObject[6] = this.currentellipseOpacity;
+        actionObject[7] = zIndex;//-8
+        actionObject[8] = swfObj;//-7
+        actionObject[9] = this.counter;//-6
+        actionObject[10] = x;//-5
+        actionObject[11] = y;//-4
+        actionObject[12] = width;//-3
+        actionObject[13] = height;//-2 
+        actionObject[14] = newName;//-1
+        this.baseactionobjectList.push(actionObject);
+        this.onsharedMessage('draw',actionObject);
+    </method>
+
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawLine.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawLine.lzx
new file mode 100644
index 0000000..ce91a74
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawLine.lzx
@@ -0,0 +1,206 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="baseDrawLine" extends="baseDrawPaint" >
+      
+		<!-- for drawing line -->
+		<attribute name="currentlinestroke" value="0xFF6600" />
+		<attribute name="currentlinelineWidth" value="2" type="number" />   
+		<attribute name="currentlineOpacity" value="1" type="number" />
+        
+		<!-- ###########################
+			Line
+			 -->
+    
+		<method name="startLine" args="oid_name">
+
+			//Debug.write("startLine ",this.startx,this.starty);
+			if (oid_name == null) {
+				oid_name = 'line' + this.getCounter()
+			}
+			this.currentlayer = new lz.drawViewNew(this, {
+						name : oid_name,
+						width : this.width + 2,
+						height : this.height + 2,
+						x : -1,
+						y : -1,
+						opacity : this.currentlineOpacity
+					});
+			this.drawlineOnObject(this.currentlayer, -1, -1, 0, 0);
+			this.drawlineOnObject(this.currentlayer, this.width, this.height,
+					this.width + 1, this.height + 1);
+
+			//Set previous to null
+			this.prevx = null;
+			this.prevy = null;
+
+			currentlayer.strokeStyle = this.currentlinestroke;
+			currentlayer.lineWidth = this.currentlinelineWidth;
+			//currentlayer.fillstyle = '0x000000';
+
+		</method>
+    
+		<method name="endLine">
+        ////Debug.write("endLine",this.startx,this.starty,this.endx,this.endy);
+		<![CDATA[
+			var tempName = this.currentlayer.name;
+			this.currentlayer.destroy();
+
+			//GetBounds of that Object
+			var minx = this.width + 2;
+			var miny = this.height + 2;
+			var maxx = -2;
+			var maxy = -2;
+
+			if (this.startx < minx)
+				minx = this.startx;
+			if (this.endx < minx)
+				minx = this.endx;
+
+			if (this.startx > maxx)
+				maxx = this.startx;
+			if (this.endx > maxx)
+				maxx = this.endx;
+
+			if (this.starty < miny)
+				miny = this.starty;
+			if (this.endy < miny)
+				miny = this.endy;
+
+			if (this.starty > maxy)
+				maxy = this.starty;
+			if (this.endy > maxy)
+				maxy = this.endy;
+
+			var width = maxx - minx;
+			var height = maxy - miny;
+
+			var x1 = this.startx - minx + (this.currentlinelineWidth / 2);
+			var y1 = this.starty - miny + (this.currentlinelineWidth / 2);
+			var x2 = this.endx - minx + (this.currentlinelineWidth / 2);
+			var y2 = this.endy - miny + (this.currentlinelineWidth / 2);
+
+			if (this.isSnapToGrid) {
+
+				xgrid = Math.round((minx - 1 - (this.currentlinelineWidth / 2))
+						/ this.gridWidth)
+						* this.gridWidth;
+				ygrid = Math.round((miny - 1 - (this.currentlinelineWidth / 2))
+						/ this.gridWidth)
+						* this.gridWidth;
+
+				this.currentlayer = new lz.drawViewNew(this, {
+							name : tempName,
+							x : xgrid,
+							y : ygrid,
+							width : (width + this.currentlinelineWidth),
+							height : (height + this.currentlinelineWidth),
+							opacity : this.currentlineOpacity
+						});
+
+			} else {
+
+				this.currentlayer = new lz.drawViewNew(this, {
+							name : tempName,
+							x : (minx - 1 - (this.currentlinelineWidth / 2)),
+							y : (miny - 1 - (this.currentlinelineWidth / 2)),
+							width : (width + this.currentlinelineWidth),
+							height : (height + this.currentlinelineWidth),
+							opacity : this.currentlineOpacity
+						});
+			}
+			//this.currentlayer.fillstyle = '0x000000';
+			this.currentlayer.lineWidth = this.currentlinelineWidth;
+			this.currentlayer.strokeStyle = this.currentlinestroke;
+
+			this.drawline((x1), (y1), (x2), (y2));
+
+			//Add Layer to global Layer     
+			this.layers.push(this.currentlayer);
+
+			this.lineregisterFinal(this.currentlayer.name,
+					this.currentlinestroke, this.currentlinelineWidth,
+					this.currentlineOpacity, this.currentlayer.x,
+					this.currentlayer.y, this.currentlayer.width,
+					this.currentlayer.height, x1, y1, x2, y2, true, this
+							.getSWFDocumentStatus(), this.getZIndex());
+		]]>
+		</method> 
+    
+    
+		<method name="lineregisterFinal" args="newName,stroke,line,opacity,x,y,width,height,x1,y1,x2,y2,doCall,swfObj,zIndex">
+			var actionObject = new Array();
+			actionObject[0] = 'line';
+			actionObject[1] = stroke;
+			actionObject[2] = line;
+			actionObject[3] = opacity;
+			actionObject[4] = x1
+			actionObject[5] = y1;
+			actionObject[6] = x2;
+			actionObject[7] = y2;
+			actionObject[8] = zIndex;//-8
+			actionObject[9] = swfObj;//-7
+			actionObject[10] = this.counter;//-6
+			actionObject[11] = x;//-5
+			actionObject[12] = y;//-4
+			actionObject[13] = width;//-3
+			actionObject[14] = height;//-2
+			actionObject[15] = newName;//-1
+			this.baseactionobjectList.push(actionObject);
+			if (doCall)
+				this.onsharedMessage('draw', actionObject);
+		</method>       
+    
+    
+		<method name="lineactionHistory" args="lastActionObject,parentView">
+		<![CDATA[
+
+			//Debug.write("## lineactionHistory",parentView," 2 ## NEW x,y ",lastActionObject[lastActionObject.length-5],lastActionObject[lastActionObject.length-4]," width,height: ",lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2]);
+
+			var tmpCurrentlayer = new lz.drawViewNew(parentView, {
+						name : lastActionObject[lastActionObject.length - 1],
+						x : lastActionObject[lastActionObject.length - 5],
+						y : lastActionObject[lastActionObject.length - 4],
+						width : lastActionObject[lastActionObject.length - 3],
+						height : lastActionObject[lastActionObject.length - 2],
+						opacity : lastActionObject[3]
+					});
+
+			//this.currentlayer.fillstyle = lastActionObject[1];
+			tmpCurrentlayer.lineWidth = lastActionObject[2];
+			tmpCurrentlayer.strokeStyle = lastActionObject[1];
+
+			this.drawlineOnObject(tmpCurrentlayer, lastActionObject[4],
+					lastActionObject[5], lastActionObject[6],
+					lastActionObject[7]);
+
+			//Add Layer to global Layer     
+			this.layers.push(tmpCurrentlayer);
+
+			this.doSWFDocumentStatus(tmpCurrentlayer,
+					lastActionObject[lastActionObject.length - 7]);
+		]]>
+		</method>
+    
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPaint.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPaint.lzx
new file mode 100644
index 0000000..00af3e9
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPaint.lzx
@@ -0,0 +1,290 @@
+<?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.
+  
+-->
+<library>
+
+	<class name="baseDrawPaint" extends="baseDraw" >
+    
+		<!-- paint -->
+		<attribute name="currentlayerstroke" value="0xFF6600" />
+		<attribute name="currentlayerlineWidth" value="2" type="number" />
+		<attribute name="currentlayerOpacity" value="1" type="number" />
+    
+		<!-- TODO: Check if needed, seems to have no reference -->
+		<attribute name="painttrans" value="false" type="boolean" />
+          
+		<!-- #####################
+				Paint
+			 -->
+    
+		<method name="drawline" args="x1,y1,x2,y2">
+		<![CDATA[
+			currentlayer.beginPath();
+			currentlayer.moveTo(x1, y1);
+			currentlayer.lineTo(x2, y2);
+			currentlayer.stroke();
+		]]>
+		</method>
+    
+		<method name="drawlineOnObject" args="obj,x1,y1,x2,y2">
+		<![CDATA[
+			obj.beginPath();
+			obj.moveTo(x1, y1);
+			obj.lineTo(x2, y2);
+			obj.stroke();
+		]]>
+		</method>
+        
+    
+		<method name="drawlineRegisterPaint" args="x1,y1,x2,y2">
+			var actionObject = new Array();
+			actionObject[0] = 'point';
+			actionObject[1] = x1;
+			actionObject[2] = y1;
+			actionObject[3] = x2;
+			actionObject[4] = y2;
+			this.basetempactionobjectList.push(actionObject);
+		</method> 
+         
+		<method name="startPaint">
+
+			//Debug.write("startPaint ",this.startx,this.starty);
+			this.currentlayer = new lz.drawViewNew(this, {
+						name : 'paint' + this.getCounter(),
+						width : this.width + 2,
+						height : this.height + 2,
+						x : -1,
+						y : -1,
+						opacity : this.currentlayerOpacity
+					});
+			this.drawlineOnObject(this.currentlayer, -1, -1, 0, 0);
+			this.drawlineOnObject(this.currentlayer, this.width, this.height,
+					this.width + 1, this.height + 1);
+
+			this.startx = this.currentlayer.getMouse('x');
+			this.starty = this.currentlayer.getMouse('y');
+
+			//Set previous to null
+			this.prevx = null;
+			this.prevy = null;
+
+			currentlayer.strokeStyle = this.currentlayerstroke;
+			currentlayer.lineWidth = this.currentlayerlineWidth;
+			currentlayer.fillstyle = '0x000000';
+
+			this.basetempactionobjectList = new Array();
+
+			//beginFill( the_colorpicker.selectedColor );
+		</method>
+
+		<method name="endPaint">
+        ////Debug.write("endPaint");
+		<![CDATA[
+			var tempName = this.currentlayer.name;
+			this.currentlayer.destroy();
+
+			//GetBounds of that Object
+			var minx = this.width + 2;
+			var miny = this.height + 2;
+			var maxx = -2;
+			var maxy = -2;
+
+			for (var eg = 0; eg < this.basetempactionobjectList.length; eg++) {
+				////Debug.write(this.basetempactionobjectList[eg][1],this.basetempactionobjectList[eg][3]);
+				if (this.basetempactionobjectList[eg][1] < minx)
+					minx = this.basetempactionobjectList[eg][1];
+				if (this.basetempactionobjectList[eg][3] < minx)
+					minx = this.basetempactionobjectList[eg][3];
+
+				if (this.basetempactionobjectList[eg][1] > maxx)
+					maxx = this.basetempactionobjectList[eg][1];
+				if (this.basetempactionobjectList[eg][3] > maxx)
+					maxx = this.basetempactionobjectList[eg][3];
+
+				if (this.basetempactionobjectList[eg][2] < miny)
+					miny = this.basetempactionobjectList[eg][2];
+				if (this.basetempactionobjectList[eg][4] < miny)
+					miny = this.basetempactionobjectList[eg][4];
+
+				if (this.basetempactionobjectList[eg][2] > maxy)
+					maxy = this.basetempactionobjectList[eg][2];
+				if (this.basetempactionobjectList[eg][4] > maxy)
+					maxy = this.basetempactionobjectList[eg][4];
+			}
+
+			for (var eg = 0; eg < this.basetempactionobjectList.length; eg++) {
+
+				this.basetempactionobjectList[eg][1] -= minx;
+				this.basetempactionobjectList[eg][2] -= miny;
+				this.basetempactionobjectList[eg][3] -= minx;
+				this.basetempactionobjectList[eg][4] -= miny
+
+			}
+
+			var width = maxx - minx;
+			var height = maxy - miny;
+			//if ($debug) Debug.info("## 1 ## NEW x,y ",minx,miny," width,height: ",width,height);
+
+			if (width < 2 && height < 2) {
+
+				//if ($debug) Debug.info("Add minimum size of Painting Line");
+
+				if (this.basetempactionobjectList.length > 0) {
+
+					var lastPoint = this.basetempactionobjectList[this.basetempactionobjectList.length
+							- 1];
+
+					var actionObject = new Array();
+					actionObject[0] = 'point';
+					actionObject[1] = lastPoint[3];
+					actionObject[2] = lastPoint[4];
+					actionObject[3] = lastPoint[3] + 2;
+					actionObject[4] = lastPoint[4] + 2;
+					this.basetempactionobjectList.push(actionObject);
+
+				} else {
+
+					//if ($debug) Debug.info("## 2 ## CURRENT width,height ",this.width,this.height);
+
+					minx = this.startx;
+					miny = this.starty;
+
+					var actionObject = new Array();
+					actionObject[0] = 'point';
+					actionObject[1] = 0;
+					actionObject[2] = 0;
+					actionObject[3] = 2;
+					actionObject[4] = 2;
+					this.basetempactionobjectList.push(actionObject);
+
+					width = 2;
+					height = 2;
+
+				}
+
+			}
+
+			if (this.isSnapToGrid) {
+
+				xgrid = Math.round((minx - 1) / this.gridWidth)
+						* this.gridWidth;
+				ygrid = Math.round((miny - 1) / this.gridWidth)
+						* this.gridWidth;
+
+				this.currentlayer = new lz.drawViewNew(this, {
+							name : tempName,
+							x : xgrid,
+							y : ygrid,
+							width : width,
+							height : height,
+							opacity : this.currentlayerOpacity
+						});
+			} else {
+				this.currentlayer = new lz.drawViewNew(this, {
+							name : tempName,
+							x : minx - 1,
+							y : miny - 1,
+							width : width,
+							height : height,
+							opacity : this.currentlayerOpacity
+						});
+			}
+
+			this.currentlayer.fillstyle = '0x000000';
+			this.currentlayer.lineWidth = this.currentlayerlineWidth;
+			this.currentlayer.strokeStyle = this.currentlayerstroke;
+
+			for (var eg = 0; eg < this.basetempactionobjectList.length; eg++)
+				this.drawline(this.basetempactionobjectList[eg][1],
+						this.basetempactionobjectList[eg][2],
+						this.basetempactionobjectList[eg][3],
+						this.basetempactionobjectList[eg][4]);
+
+			//this.currentlayer.setAttribute('stretches','both');
+
+			//Add Layer to global Layer     
+			this.layers.push(this.currentlayer);
+
+			this.registerFinal(this.getSWFDocumentStatus(), this.getZIndex());
+		]]>
+		</method>    
+
+		<method name="registerFinal" args="swfObj,zIndex">
+			var actionObject = new Array();
+			actionObject[0] = 'paint';
+			actionObject[1] = this.basetempactionobjectList;
+			actionObject[2] = currentlayer.fillstyle;
+			actionObject[3] = currentlayer.lineWidth;
+			actionObject[4] = currentlayer.strokeStyle;
+			actionObject[5] = this.currentlayerOpacity;
+			actionObject[6] = zIndex;//-8
+			actionObject[7] = swfObj;//-7
+			actionObject[8] = this.counter;//-6
+			actionObject[9] = currentlayer.x;//-5
+			actionObject[10] = currentlayer.y;//-4
+			actionObject[11] = currentlayer.width;//-3
+			actionObject[12] = currentlayer.height;//-2
+			actionObject[13] = this.currentlayer.name;//-1
+			if ($debug)
+				Debug.write("registerFinal :: ", actionObject);
+			this.baseactionobjectList.push(actionObject);
+			this.onsharedMessage('draw', actionObject);
+		</method>      
+    
+    
+		<method name="paintactionHistory" args="lastActionObject,parentView">
+		<![CDATA[
+			if ($debug) Debug.write("## paintactionHistory", parentView, " opacity:",
+						lastActionObject[5]);
+
+			var tmpCurrentlayer = new lz.drawViewNew(parentView, {
+						name : lastActionObject[lastActionObject.length - 1],
+						x : lastActionObject[lastActionObject.length - 5],
+						y : lastActionObject[lastActionObject.length - 4],
+						width : lastActionObject[lastActionObject.length - 3],
+						height : lastActionObject[lastActionObject.length - 2],
+						opacity : lastActionObject[5]
+					});
+					
+			if ($debug) ("paintactionHistory 1 ",tmpCurrentlayer.x,tmpCurrentlayer.y,tmpCurrentlayer.opacity);
+
+			tmpCurrentlayer.fillstyle = lastActionObject[2];
+			tmpCurrentlayer.lineWidth = lastActionObject[3];
+			tmpCurrentlayer.strokeStyle = lastActionObject[4];
+			
+			if ($debug) ("paintactionHistory 2 ",tmpCurrentlayer.fillstyle,tmpCurrentlayer.lineWidth,tmpCurrentlayer.strokeStyle);
+
+			for (var eg = 0; eg < lastActionObject[1].length; eg++) {
+				if ($debug) ("paintactionHistory 3 ",lastActionObject[1][eg][1], lastActionObject[1][eg][2],
+										lastActionObject[1][eg][3], lastActionObject[1][eg][4]);
+				this.drawlineOnObject(tmpCurrentlayer,
+						lastActionObject[1][eg][1], lastActionObject[1][eg][2],
+						lastActionObject[1][eg][3], lastActionObject[1][eg][4]);
+			}
+
+			//tmpCurrentlayer.setAttribute('stretches','both');
+			this.doSWFDocumentStatus(tmpCurrentlayer,
+					lastActionObject[lastActionObject.length - 7]);
+		]]>
+		</method>
+    
+	</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPointer.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPointer.lzx
new file mode 100644
index 0000000..e95316d
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawPointer.lzx
@@ -0,0 +1,72 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawPointer" extends="baseDrawEllipse" >
+      
+    <!-- Pointers -->
+    
+    <method name="endPointerWhiteBoard">
+        this.drawPointerWhiteBoardFinal(
+                "pointer"+this.getCounter(),
+                this.getMouse('x'),this.getMouse('y'),
+                0,0
+            )
+    </method>
+
+    <method name="drawPointerToHistory" args="actionObject,parentObj">
+        new lz.whiteBoardPointer(parentObj,{
+            x:actionObject[actionObject.length-5],
+            y:actionObject[actionObject.length-4],
+            userName:actionObject[1]
+        })
+    </method>
+
+    <method name="drawPointerWhiteBoardFinal" args="newName,x,y,width,height" >
+    	var displayedName = canvas.currentuser;
+    	if (canvas.firstName.length > 0) {
+    		displayedName = canvas.firstName;
+    	}
+    	if (canvas.lastName.length > 0) {
+    		if (canvas.firstName.length > 0) {
+    			displayedName += " " + canvas.lastName;
+    		} else {
+    			displayedName = canvas.lastName;
+    		}
+    	}
+    	
+        var actionObject = new Array();
+        actionObject[0] = 'pointerWhiteBoard';
+        actionObject[1] = displayedName;
+        actionObject[2] = this.counter;//-6
+        actionObject[3] = x;//-5
+        actionObject[4] = y;//-4
+        actionObject[5] = width;//-3
+        actionObject[6] = height;//-2
+        actionObject[7] = newName;//-1
+        this.baseactionobjectList.push(actionObject);
+        this.onsharedMessage('draw',actionObject);
+        this.drawPointerToHistory(actionObject,this);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawRect.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
new file mode 100644
index 0000000..c3fcd4e
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawRect.lzx
@@ -0,0 +1,209 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawRect" extends="baseDrawSelect" >
+    
+    <!--  
+        for drawing rectangles the variable 
+        with *Dis* indicates if the line/fil-color is active (+1/-1)
+     -->
+    <attribute name="currentrectanglestroke" value="0xFF6600" />
+    <attribute name="currentrectanglestrokeDis" value="1" type="number" />
+    <attribute name="currentrectanglestrokeFill" value="0xFFFF33" />
+    <attribute name="currentrectanglestrokeFillDis" value="1" type="number" />
+    <attribute name="currentrectangleineWidth" value="4" type="number" />
+    <attribute name="currentrectangleOpacity" value="1" type="number" />
+      
+    <!-- ###########################
+        Rectangle
+     -->
+    
+    <method name="startRect" args="oid_name">
+        if (oid_name == null){
+            oid_name = 'rectangle'+this.getCounter();
+        }
+        //Debug.write("startRect");
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width,height:this.height,
+            opacity:this.currentrectangleOpacity});
+
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+    </method>  
+
+    <method name="endRect">
+        <![CDATA[        
+        
+            ////Debug.write(" this.startx, this.starty , this.endx, this.endy ",this.startx, this.starty , this.endx, this.endy);
+            var tmpName = this.currentlayer.name;
+            this.currentlayer.destroy();
+            var x = this.startx;
+            var width = this.endx - this.startx;
+            if (this.endx<this.startx){
+                x = this.endx;
+                width = Math.abs(width);
+            }
+            var y = this.starty;
+            var height = this.endy - this.starty;
+            if (this.endy<this.starty){
+                y = this.endy;
+                height = Math.abs(height);
+            }
+            
+            if(this.isSnapToGrid){        		
+	    			        	   
+	            x = Math.round(x/this.gridWidth)*this.gridWidth;
+		    	y = Math.round(y/this.gridWidth)*this.gridWidth;
+            
+            } 
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                name:tmpName,x:x,y:y,width:width,height:height,
+                opacity:this.currentrectangleOpacity});
+                
+            new lz.drawViewInner(this.currentlayer,{
+                name:'_innerRect',x:0,y:0,width:width,height:height});
+                
+            this.drawrectangleHistory(this.currentlayer,0,0,width,height,
+                this.currentrectanglestroke,this.currentrectangleineWidth,
+                this.currentrectanglestrokeFill,this.currentrectanglestrokeDis,
+                this.currentrectanglestrokeFillDis);
+            //this.currentlayer.setAttribute('stretches','both');
+            this.drawrectregisterFinal(this.currentlayer.name,this.currentrectanglestroke,
+                this.currentrectangleineWidth,this.currentrectanglestrokeFill,
+                this.currentrectanglestrokeDis,this.currentrectanglestrokeFillDis,
+                x,y,width,height,this.getSWFDocumentStatus(),
+                this.getZIndex());
+            this.layers.push(this.currentlayer);
+            this.checkStepLayers();
+        ]]>
+    </method> 
+    
+    <!--
+        Terminate the usage of this function
+     --> 
+    <method name="drawrectangle" args="x1,y1,x2,y2">
+        <![CDATA[
+            
+            currentlayer.lineWidth = this.currentrectangleineWidth;
+            currentlayer.beginPath();
+            currentlayer.moveTo(x1,y1);
+            currentlayer.lineTo(x1,y2);
+            currentlayer.lineTo(x2,y2);
+            currentlayer.lineTo(x2,y1);
+            currentlayer.lineTo (x1,y1);
+            currentlayer.closePath();
+            
+            if (this.currentrectanglestrokeDis!=-1){
+                currentlayer.strokeStyle = this.currentrectanglestroke;
+                currentlayer.stroke();
+            }
+
+            if (this.currentrectanglestrokeFillDis!=-1){
+                currentlayer.fillStyle = this.currentrectanglestrokeFill;
+                currentlayer.fill();
+            }
+            
+        ]]>   
+    </method>   
+    
+    <method name="redrawRectItemByScaling" args="objRef">
+        //if ($debug) Debug.write("redrawRectItemByScaling: "+objRef);
+        this.currentlayer = objRef;
+        this.currentlayer._innerRect.destroy();
+        new lz.drawViewInner(this.currentlayer,{
+            name:'_innerRect',x:0,y:0,width:objRef.width,height:objRef.height});
+        this.drawrectangleHistory(this.currentlayer,0,0,
+            objRef.width,objRef.height,
+            this.currentrectanglestroke,this.currentrectangleineWidth,
+            this.currentrectanglestrokeFill,this.currentrectanglestrokeDis,
+            this.currentrectanglestrokeFillDis);
+    </method> 
+    
+    <method name="drawrectangleToHistory" args="lastActionObject,parentView">
+        var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+            name:lastActionObject[lastActionObject.length-1],
+            x:lastActionObject[lastActionObject.length-5],
+            y:lastActionObject[lastActionObject.length-4],
+            width:lastActionObject[lastActionObject.length-3],
+            height:lastActionObject[lastActionObject.length-2],
+            opacity:lastActionObject[6]});
+        new lz.drawViewInner(tmpCurrentlayer,{
+                name:'_innerRect',x:0,y:0,
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2]});
+        this.drawrectangleHistory(tmpCurrentlayer,0,0,
+            lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2],
+            lastActionObject[1],lastActionObject[2],lastActionObject[3],lastActionObject[4],lastActionObject[5]);
+            
+        this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+    </method>
+    
+    <method name="drawrectangleHistory" args="parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis">
+        <![CDATA[
+            //Debug.write("drawrectangleHistory",parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis);
+            parentObj._innerRect.lineWidth = line;
+            parentObj._innerRect.beginPath();
+            parentObj._innerRect.moveTo(x1,y1);
+            parentObj._innerRect.lineTo(x1,y2);
+            parentObj._innerRect.lineTo(x2,y2);
+            parentObj._innerRect.lineTo(x2,y1);
+            parentObj._innerRect.lineTo (x1,y1);
+            
+            if (strokeDis!=-1){
+                parentObj._innerRect.strokeStyle = stroke;
+                parentObj._innerRect.stroke();
+            }
+            
+            if (fillDis!=-1){
+                parentObj._innerRect.fillStyle = fill;
+                parentObj._innerRect.fill();
+            }
+            
+        ]]>   
+    </method>  
+    
+    <method name="drawrectregisterFinal" args="newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height,swfObj,zIndex" >
+        Debug.write("drawrectregisterFinal",newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height);
+        var actionObject = new Array();
+        actionObject[0] = 'rectangle';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = fill;
+        actionObject[4] = strokeDis;
+        actionObject[5] = fillDis;
+        actionObject[6] = this.currentrectangleOpacity;
+        actionObject[7] = zIndex;//-8
+        actionObject[8] = swfObj;//-7
+        actionObject[9] = this.counter;//-6
+        actionObject[10] = x;//-5
+        actionObject[11] = y;//-4
+        actionObject[12] = width;//-3
+        actionObject[13] = height;//-2  
+        actionObject[14] = newName;//-1
+        this.baseactionobjectList.push(actionObject);
+        this.onsharedMessage('draw',actionObject);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawSelect.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawSelect.lzx
new file mode 100644
index 0000000..932dded
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawSelect.lzx
@@ -0,0 +1,465 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawSelect" extends="baseDrawTriangle" >
+    
+    <!--  
+        for drawing rectangles the variable 
+        with *Dis* indicates if the line/fil-color is active (+1/-1)
+     -->
+    <attribute name="currentSelectanglestroke" value="0x8e8986" />
+    <attribute name="currentSelectanglestrokeDis" value="1" type="number" />
+    <attribute name="currentSelectanglestrokeFill" value="0x8e8986" />
+    <attribute name="currentSelectanglestrokeFillDis" value="1" type="number" />
+    <attribute name="currentSelectangleineWidth" value="4" type="number" />
+    <attribute name="currentSelectangleOpacity" value="0.2" type="number" />
+    
+    <method name="copyWhiteboardObjects">
+        this.doCopyWhiteboardObjects();
+    </method>
+    
+    <method name="cutWhiteboardObjects">
+    	<![CDATA[
+        	this.doCopyWhiteboardObjects();
+        	for (var eg=0;eg<this.copyObject.length;eg++){                
+                var itemToDelete = this.copyObject[eg][this.copyObject[eg].length-1];
+                this.deleteItemByName(itemToDelete);
+                
+                if ($debug) Debug.write("cut name ", this.copyObject[eg][this.copyObject[eg].length-1]);
+            }
+            
+            //if (this.boundingIsActive){
+            //    this.boundingref._innerDrag.onmouseup.sendEvent();
+            //}
+        ]]>
+    </method>
+    
+    <method name="doCopyWhiteboardObjects">
+        <![CDATA[  
+            if ($debug) Debug.write("tCopyObject :0: ",this.boundingIsActive);
+        
+            if (this.boundingIsActive) {
+            	
+            	this.copyObject = new Array();
+            	
+            	var tObject = new Array();
+                var tCopyObject = this.getBaseObjectByName(this.boundingref.objRef.name);
+                
+                if ($debug) Debug.write("tCopyObject :1: ",this.boundingref.objRef.name);
+                if ($debug) Debug.write("tCopyObject :2: ",tCopyObject);
+                
+                for (var i=0;i<tCopyObject.length;i++) {
+                    var tItemObject = tCopyObject[i];
+                    
+                    if (tItemObject instanceof Array) {
+                        
+                        var storingItemObject = new Array();
+                        
+                        for (var k=0;k<tItemObject.length;k++) {
+                            var kItemObject = tItemObject[k];
+                            
+                            if (kItemObject instanceof Array) {
+                                
+                                var subStoringItemObject = new Array();
+                                
+                                for (var l=0;l<kItemObject.length;l++) {
+                                    var lItemObject = kItemObject[l];
+                                    subStoringItemObject.push(lItemObject);
+                                }
+                                
+                                storingItemObject.push(subStoringItemObject);
+                            } else {
+                                storingItemObject.push(kItemObject);
+                            }
+                            
+                            
+                        }
+                        
+                        tObject[i] = storingItemObject;
+                        
+                    } else {
+                        tObject[i] = tItemObject;
+                    }
+                    
+                }
+                
+                this.copyObject.push(tObject);
+            	
+            } else {
+        
+            	this.copyObject = this.selectedObjects;
+            
+            }
+            
+            if ($debug) Debug.write("to this.copyObject ", this.copyObject);
+            
+        ]]>
+    </method>
+    
+    
+    
+    <method name="paste" args="paste_x, paste_y">
+        <![CDATA[       
+            //if ($debug) Debug.write("paste name ", this.copyObject[eg][this.copyObject[eg].length-1]);
+            if ($debug) Debug.write("paste copyObject", this.copyObject);
+            
+            if(this.isSnapToGrid){ 
+                paste_x = Math.round(paste_x/this.gridWidth)*this.gridWidth;
+                paste_y = Math.round(paste_y/this.gridWidth)*this.gridWidth;
+            }
+            
+            var shift_x = this.width+1;
+            var shift_y = this.height+1;
+            
+            for (var eg=0;eg<this.copyObject.length;eg++){
+            	
+            	var tx = this.copyObject[eg][this.copyObject[eg].length-5];
+            	var ty = this.copyObject[eg][this.copyObject[eg].length-4];  
+            	
+            	if (tx < shift_x) {
+            		shift_x = tx;
+            	}
+            	
+            	if (ty < shift_y) {
+                    shift_y = ty;
+                }
+            	
+            }
+            
+            if ($debug) Debug.write("paste_x,paste_y,shift_x,shift_y", paste_x,paste_y,shift_x,shift_y);
+            
+            for (var eg=0;eg<this.copyObject.length;eg++){
+                
+                //var itemToDelete = this.copyObject[eg][this.copyObject[eg].length-1];
+                //this.deleteItemByName(itemToDelete);
+                
+                //this.baseactionobjectList[eg][10] = this.baseactionobjectList[eg][10] + paste_x;
+                //this.baseactionobjectList[eg][11] = this.baseactionobjectList[eg][11] + paste_y;
+                
+                //this.copyObject[eg][10] = this.copyObject[eg][10] + paste_x -50;
+                //this.copyObject[eg][11] = this.copyObject[eg][11] + paste_y-50;
+                
+                var tempArr = this.copyObject[eg].slice(0);
+                
+                tempArr[tempArr.length-1] += tempArr[0]+this.getCounter(); //Math.round(Math.random()*10000);
+                
+                tempArr[tempArr.length-5] =  paste_x - shift_x + tempArr[tempArr.length-5];
+                tempArr[tempArr.length-4] = paste_y - shift_y + tempArr[tempArr.length-4];               
+                
+                //this.sendWatchObject("draw", this.copyObject[eg], false);
+                
+                if ($debug) Debug.write("paste tempArr :x,y: ", tempArr[tempArr.length-5],tempArr[tempArr.length-4]);
+                
+                this.sendWatchObject("draw", tempArr, false);
+                //this.sendRemoteWatchObject(tempArr);
+                
+                this.onsharedMessage('draw',tempArr);
+                
+                if ($debug) Debug.write("paste name ", this.copyObject[eg]);
+                
+                //if ($debug) Debug.write("paste this.copyObject[eg][10]", this.copyObject[eg][10]);
+                //if ($debug) Debug.write("paste this.copyObject[eg][11] ", this.copyObject[eg][11]);
+                //if ($debug) Debug.write("paste paste_x ", paste_x);
+                //if ($debug) Debug.write("paste paste_y ", paste_y);
+                
+            }
+        ]]>
+    </method>
+    
+      
+    <!-- ###########################
+        Select tool
+     -->
+    
+    <method name="startSelect" args="oid_name">
+        if (oid_name == null){
+            oid_name = 'select'+this.getCounter();
+        }
+        //Debug.write("startselect");
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width,height:this.height,
+            opacity:this.currentSelectangleOpacity});
+        this.currentlayer
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+    </method>  
+
+    <method name="endSelect">
+        <![CDATA[        
+        
+            ////Debug.write(" this.startx, this.starty , this.endx, this.endy ",this.startx, this.starty , this.endx, this.endy);
+            var tmpName = this.currentlayer.name;
+            this.currentlayer.destroy();
+            var x = this.startx;
+            var width = this.endx - this.startx;
+            if (this.endx<this.startx){
+                x = this.endx;
+                width = Math.abs(width);
+            }
+            var y = this.starty;
+            var height = this.endy - this.starty;
+            if (this.endy<this.starty){
+                y = this.endy;
+                height = Math.abs(height);
+            }
+            
+            if (width < 2 && height < 2) {
+            	return;
+            }
+            
+            //if(this.isSnapToGrid){        		
+	    			        	   
+	          //  x = Math.round(x/this.gridWidth)*this.gridWidth;
+		    	//y = Math.round(y/this.gridWidth)*this.gridWidth;
+            
+            //} 
+            
+            if(this.selectedObjects != null && this.selectedObjects.length > 0){
+                for (var eg=0;eg<this.selectedObjects.length;eg++){
+                        
+                    var  objectToUpdate = this.getObjectByName(this.selectedObjects[eg][this.selectedObjects[eg].length-1]);
+                    objectToUpdate.setAttribute('opacity', 1);
+                    
+                }
+            }
+            
+            this.selectedObjects = new Array();
+            
+            for (var eg=0;eg<this.baseactionobjectList.length;eg++){
+                //Debug.write("this.baseactionobjectList[eg][0]==modi",this.baseactionobjectList[eg][0],modi);
+                //if ($debug) Debug.write("############## baseactionobjectList select : ", this.baseactionobjectList[eg]);
+                //if ($debug) Debug.write("############## baseactionobjectList select x: ", this.baseactionobjectList[eg][10]);
+                //if ($debug) Debug.write("############## baseactionobjectList select y: ", this.baseactionobjectList[eg][11]);
+                //if ($debug) Debug.write("############## baseactionobjectList select opacity: ", this.baseactionobjectList[eg][6]);
+                //if ($debug) Debug.write("############## baseactionobjectList select name: ", this.baseactionobjectList[eg][14]);
+                
+                //if ($debug) Debug.write("############## baseactionobjectList select this x: ", x);
+                //if ($debug) Debug.write("############## baseactionobjectList select this y: ", y);
+                
+                //if ($debug) Debug.write("############## baseactionobjectList select this x+width: ", x+width);
+                //if ($debug) Debug.write("############## baseactionobjectList select this y+height: ", y+height);
+                
+                //if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==bName) {
+                    //return this.baseactionobjectList[eg];
+                //}
+                
+                if (
+                    (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5] >= x && this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4] >= y) &&
+                    (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-5] <= x+width && this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-4] <= y+height)
+                   ) {
+                    //return this.baseactionobjectList[eg];
+                    //this.baseactionobjectList[eg][6] = 0.2;
+                    
+                   	var tObject = new Array();
+                   	var tCopyObject = this.baseactionobjectList[eg];
+                   	
+                   	for (var i=0;i<tCopyObject.length;i++) {
+                   		var tItemObject = tCopyObject[i];
+                   		
+                   		if (tItemObject instanceof Array) {
+                   			
+               			    var storingItemObject = new Array();
+                   			
+               			    for (var k=0;k<tItemObject.length;k++) {
+           				        var kItemObject = tItemObject[k];
+           				        
+           				        if (kItemObject instanceof Array) {
+           				        	
+           				        	var subStoringItemObject = new Array();
+           				        	
+           				        	for (var l=0;l<kItemObject.length;l++) {
+           				        		var lItemObject = kItemObject[l];
+           				        		subStoringItemObject.push(lItemObject);
+           				        	}
+           				        	
+           				        	storingItemObject.push(subStoringItemObject);
+           				        } else {
+           				        	storingItemObject.push(kItemObject);
+           				        }
+                   				
+                   				
+                   			}
+                   			
+                   			tObject[i] = storingItemObject;
+                   			
+                   		} else {
+                   			tObject[i] = tItemObject;
+                   		}
+                   		
+                   	}
+                   	
+                   	
+                   	
+                    this.selectedObjects.push(tObject);
+                    
+                    objectToUpdate = this.getObjectByName(this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]);
+                    objectToUpdate.setAttribute('opacity', 0.7);
+                    
+                    //this.baseactionobjectList[eg][14] += '_copy';
+                    //this.sendRemoteWatchObject(this.baseactionobjectList[eg]);
+                    //this.sendRemoteWatchObject(this.baseactionobjectList[eg]);                  
+                    
+                    if ($debug) Debug.write("############## objectToUpdate: ", objectToUpdate);
+                    if ($debug) Debug.write("############## baseactionobjectList select opacity if: ", this.baseactionobjectList[eg][6]);
+                }
+            }  
+            
+            /*
+            if(whiteboardObjects.length > 0){
+            	 = whiteboardObjects;
+            }
+            */
+            
+            if ($debug) Debug.write("############## endSelect this.selectedObjects: ",  this.selectedObjects);
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                name:tmpName,x:x,y:y,width:width,height:height,
+                opacity:this.currentSelectangleOpacity});
+                
+            new lz.drawViewInner(this.currentlayer,{
+                name:'_innerSelect',x:0,y:0,width:width,height:height});
+                
+            //this.drawSelectangleHistory(this.currentlayer,0,0,width,height,
+              //  this.currentSelectanglestroke,this.currentSelectangleineWidth,
+                //this.currentSelectanglestrokeFill,this.currentSelectanglestrokeDis,
+                //this.currentSelectanglestrokeFillDis);
+           
+            //this.drawSelectregisterFinal(this.currentlayer.name,this.currentSelectanglestroke,
+              //  this.currentSelectangleineWidth,this.currentSelectanglestrokeFill,
+                //this.currentSelectanglestrokeDis,this.currentSelectanglestrokeFillDis,
+                //x,y,width,height,this.getSWFDocumentStatus(),
+                //this.getZIndex());
+            //this.layers.push(this.currentlayer);
+            //this.checkStepLayers();
+        ]]>
+    </method> 
+    
+    <!--
+        Terminate the usage of this function
+     --> 
+     <!--
+    <method name="drawSelectangle" args="x1,y1,x2,y2">
+        <![CDATA[
+            
+            currentlayer.lineWidth = this.currentSelectangleineWidth;
+            currentlayer.beginPath();
+            currentlayer.moveTo(x1,y1);
+            currentlayer.lineTo(x1,y2);
+            currentlayer.lineTo(x2,y2);
+            currentlayer.lineTo(x2,y1);
+            currentlayer.lineTo (x1,y1);
+            this.closePath();
+            
+            if (this.currentSelectanglestrokeDis!=-1){
+                currentlayer.strokeStyle = this.currentSelectanglestroke;
+                currentlayer.stroke();
+            }
+
+            if (this.currentSelectanglestrokeFillDis!=-1){
+                currentlayer.fillStyle = this.currentSelectanglestrokeFill;
+                currentlayer.fill();
+            }
+            
+        ]]>   
+    </method>   
+    -->
+    <method name="redrawSelectItemByScaling" args="objRef">
+        //if ($debug) Debug.write("redrawSelectItemByScaling: "+objRef);
+        this.currentlayer = objRef;
+        this.currentlayer._innerSelect.destroy();
+        new lz.drawViewInner(this.currentlayer,{
+            name:'_innerSelect',x:0,y:0,width:objRef.width,height:objRef.height});
+        this.drawSelectangleHistory(this.currentlayer,0,0,
+            objRef.width,objRef.height,
+            this.currentSelectanglestroke,this.currentSelectangleineWidth,
+            this.currentSelectanglestrokeFill,this.currentSelectanglestrokeDis,
+            this.currentSelectanglestrokeFillDis);
+    </method> 
+    
+    <method name="drawSelectangleToHistory" args="lastActionObject,parentView">
+        var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+            name:lastActionObject[lastActionObject.length-1],
+            x:lastActionObject[lastActionObject.length-5],
+            y:lastActionObject[lastActionObject.length-4],
+            width:lastActionObject[lastActionObject.length-3],
+            height:lastActionObject[lastActionObject.length-2],
+            opacity:lastActionObject[6]});
+        new lz.drawViewInner(tmpCurrentlayer,{
+                name:'_innerSelect',x:0,y:0,
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2]});
+        this.drawSelectangleHistory(tmpCurrentlayer,0,0,
+            lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2],
+            lastActionObject[1],lastActionObject[2],lastActionObject[3],lastActionObject[4],lastActionObject[5]);
+            
+        this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+    </method>
+    
+    <method name="drawSelectangleHistory" args="parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis">
+        <![CDATA[
+            //Debug.write("drawSelectangleHistory",parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis);
+            parentObj._innerSelect.lineWidth = line;
+            parentObj._innerSelect.beginPath();
+            parentObj._innerSelect.moveTo(x1,y1);
+            parentObj._innerSelect.lineTo(x1,y2);
+            parentObj._innerSelect.lineTo(x2,y2);
+            parentObj._innerSelect.lineTo(x2,y1);
+            parentObj._innerSelect.lineTo (x1,y1);
+            
+            if (strokeDis!=-1){
+                parentObj._innerSelect.strokeStyle = stroke;
+                parentObj._innerSelect.stroke();
+            }
+            
+            if (fillDis!=-1){
+                parentObj._innerSelect.fillStyle = fill;
+                parentObj._innerSelect.fill();
+            }
+            
+        ]]>   
+    </method>  
+    
+    <method name="drawSelectregisterFinal" args="newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height,swfObj,zIndex" >
+        Debug.write("drawSelectregisterFinal",newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height);
+        var actionObject = new Array();
+        actionObject[0] = 'Selectangle';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = fill;
+        actionObject[4] = strokeDis;
+        actionObject[5] = fillDis;
+        actionObject[6] = this.currentSelectangleOpacity;
+        actionObject[7] = zIndex;//-8
+        actionObject[8] = swfObj;//-7
+        actionObject[9] = this.counter;//-6
+        actionObject[10] = x;//-5
+        actionObject[11] = y;//-4
+        actionObject[12] = width;//-3
+        actionObject[13] = height;//-2  
+        actionObject[14] = newName;//-1
+        this.baseactionobjectList.push(actionObject);
+        this.onsharedMessage('draw',actionObject);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawTriangle.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawTriangle.lzx
new file mode 100644
index 0000000..56baab0
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawTriangle.lzx
@@ -0,0 +1,277 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawTriangle" extends="baseDrawClipArt" >
+    
+    <!--  
+        for drawing rectangles the variable 
+        with *Dis* indicates if the line/fil-color is active (+1/-1)
+     -->
+    <attribute name="currenttrianglestroke" value="0xFF6600" />
+    <attribute name="currenttrianglestrokeDis" value="1" type="number" />
+    <attribute name="currenttrianglestrokeFill" value="0xFFFF33" />
+    <attribute name="currenttrianglestrokeFillDis" value="1" type="number" />
+    <attribute name="currenttriangleineWidth" value="4" type="number" />
+    <attribute name="currenttriangleOpacity" value="1" type="number" />
+     
+      
+    <!-- ###########################
+        triangle
+     -->
+    
+    <method name="startTriangle" args="oid_name">
+        if (oid_name == null){
+            oid_name = 'triangle'+this.getCounter();
+        }
+        //Debug.write("startTriangle");
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width,height:this.height,
+            opacity:this.currenttriangleOpacity});
+        this.currentlayer
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+    </method>  
+
+    <method name="endTriangle">
+        <![CDATA[        	
+        
+            ////Debug.write(" this.startx, this.starty , this.endx, this.endy ",this.startx, this.starty , this.endx, this.endy);
+            var tmpName = this.currentlayer.name;
+            this.currentlayer.destroy();
+            
+            var tTriangle = this.getTrianglePointByRect(this.startx,this.starty,this.endx,this.endy);
+            
+            var max_x = Math.max(this.startx,this.endx,tTriangle.x);
+            var min_x = Math.min(this.startx,this.endx,tTriangle.x);
+            var max_y = Math.max(this.starty,this.endy,tTriangle.y);
+            var min_y = Math.min(this.starty,this.endy,tTriangle.y);
+            
+            
+            var x = min_x;
+            var width = max_x - min_x;
+            var y = min_y;
+            var height = max_y - min_y;
+            
+            var tx1 = this.startx-x;
+            var ty1 = this.starty-y;
+            var tx2 = this.endx-x;
+            var ty2 = this.endy-y;
+            var tx3 = tTriangle.x-x;
+            var ty3 = tTriangle.y-y;
+            
+            if(this.isSnapToGrid){        		
+	    			        	   
+	            x = Math.round(x/this.gridWidth)*this.gridWidth;
+		    	y = Math.round(y/this.gridWidth)*this.gridWidth;
+            
+            } 
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                name:tmpName,x:x,y:y,width:width,height:height,
+                opacity:this.currenttriangleOpacity});
+                
+            new lz.drawViewInner(this.currentlayer,{
+                name:'_innerTriangle',x:0,y:0,width:width,height:height});
+                
+            this.drawtriangleHistory(this.currentlayer,0,0,width,height,
+            	tx1,ty1,tx2,ty2,tx3,ty3,
+                this.currenttrianglestroke,this.currenttriangleineWidth,
+                this.currenttrianglestrokeFill,this.currenttrianglestrokeDis,
+                this.currenttrianglestrokeFillDis);
+            //this.currentlayer.setAttribute('stretches','both');
+            this.drawTriangleregisterFinal(this.currentlayer.name,this.currenttrianglestroke,
+                this.currenttriangleineWidth,this.currenttrianglestrokeFill,
+                this.currenttrianglestrokeDis,this.currenttrianglestrokeFillDis,
+                x,y,width,height,
+                tx1,ty1,tx2,ty2,tx3,ty3,
+                this.getSWFDocumentStatus(),
+                this.getZIndex());
+            this.layers.push(this.currentlayer);
+            this.checkStepLayers();
+            if ($debug) Debug.write("############## this.endx : ", this.endx);
+        ]]>
+    </method> 
+    
+    <method name="getTrianglePointByRect" args="x1,y1,x2,y2">
+    	<![CDATA[
+    		if (x2 >= x1 && y1 >= y2) {
+
+               var a = y1 - y2;
+               var b = x2 - x1;
+               
+               return {'x':x2 + a,'y':y2 + b};
+
+           } else if (x2 >= x1 && y1 <= y2) {
+
+               var a = y2 - y1;
+               var b = x2 - x1;
+
+               return {'x':x2 - a,'y':y2 + b};
+
+           } else if (x2 <= x1 && y1 <= y2) {
+
+               var a = y2 - y1;
+               var b = x1 - x2;
+
+               return {'x':x2 - a,'y':y2 - b};
+               
+           } else if (x2 <= x1 && y1 >= y2) {
+
+               var a = y1 - y2;
+               var b = x1 - x2;
+
+               return {'x':x2 + a,'y':y2 - b};
+               
+           } else {
+
+               if ($debug) Debug.warn("DEFAULT drawtriangle ",x1,y1,x2,y2);
+
+           }
+           
+       ]]>
+    </method>
+    
+    <!--
+        Terminate the usage of this function
+     --> 
+    <method name="drawtriangle" args="x1,y1,x2,y2">
+       <![CDATA[
+
+           var tTriangle = this.getTrianglePointByRect(x1,y1,x2,y2);
+
+		   this.drawtriangleByCord(x1,y1,x2,y2,tTriangle.x,tTriangle.y)
+       ]]>   
+   </method> 
+   
+    <method name="drawtriangleByCord" args="tx1,ty1,tx2,ty2,tx3,ty3">
+       <![CDATA[
+
+		   currentlayer.lineWidth = this.currenttriangleineWidth;
+           currentlayer.beginPath();
+           currentlayer.moveTo(tx1, ty1);
+           currentlayer.lineTo(tx2, ty2);
+           currentlayer.lineTo(tx3, ty3);
+           currentlayer.lineTo(tx1, ty1);
+           currentlayer.closePath();
+
+           if (this.currenttrianglestrokeDis != -1) {
+               currentlayer.strokeStyle = this.currenttrianglestroke;
+               currentlayer.stroke();
+           }
+
+           if (this.currenttrianglestrokeFillDis != -1) {
+               currentlayer.fillStyle = this.currenttrianglestrokeFill;
+               currentlayer.fill();
+           }
+       ]]>   
+   </method> 
+    
+    <method name="redrawTriangleItemByScaling" args="objRef">
+        //if ($debug) Debug.write("redrawTriangleItemByScaling: "+objRef);
+        this.currentlayer = objRef;
+        this.currentlayer._innerTriangle.destroy();
+        new lz.drawViewInner(this.currentlayer,{
+            name:'_innerTriangle',x:0,y:0,width:objRef.width,height:objRef.height});
+        this.drawtriangleHistory(this.currentlayer,0,0,
+            objRef.width,objRef.height,
+            this.currenttrianglestroke,this.currenttriangleineWidth,
+            this.currenttrianglestrokeFill,this.currenttrianglestrokeDis,
+            this.currenttrianglestrokeFillDis);
+    </method> 
+    
+    <method name="drawtriangleToHistory" args="lastActionObject,parentView">
+        var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+            name:lastActionObject[lastActionObject.length-1],
+            x:lastActionObject[lastActionObject.length-5],
+            y:lastActionObject[lastActionObject.length-4],
+            width:lastActionObject[lastActionObject.length-3],
+            height:lastActionObject[lastActionObject.length-2],
+            opacity:lastActionObject[6]});
+        new lz.drawViewInner(tmpCurrentlayer,{
+                name:'_innerTriangle',x:0,y:0,
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2]});
+        this.drawtriangleHistory(tmpCurrentlayer,0,0,
+            lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2],
+            lastActionObject[7],lastActionObject[8], //tx1,ty1
+            lastActionObject[9],lastActionObject[10], //tx2,ty2
+            lastActionObject[11],lastActionObject[12], //tx3,ty3
+            lastActionObject[1],lastActionObject[2],lastActionObject[3],lastActionObject[4],lastActionObject[5]);
+            
+        this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+    </method>
+    
+    <method name="drawtriangleHistory" args="parentObj,x1,y1,x2,y2,tx1,ty1,tx2,ty2,tx3,ty3,stroke,line,fill,strokeDis,fillDis">
+        <![CDATA[
+            //Debug.write("drawtriangleHistory",parentObj,x1,y1,x2,y2,stroke,line,fill,strokeDis,fillDis);
+            parentObj._innerTriangle.lineWidth = line;
+            parentObj._innerTriangle.beginPath();
+            parentObj._innerTriangle.moveTo(tx1,ty1);
+            parentObj._innerTriangle.lineTo(tx2,ty2);
+            parentObj._innerTriangle.lineTo(tx3,ty3);
+            parentObj._innerTriangle.lineTo (tx1,ty1);
+            parentObj._innerTriangle.closePath();
+            
+            if (strokeDis!=-1){
+                parentObj._innerTriangle.strokeStyle = stroke;
+                parentObj._innerTriangle.stroke();
+            }
+            
+            if (fillDis!=-1){
+                parentObj._innerTriangle.fillStyle = fill;
+                parentObj._innerTriangle.fill();
+            }
+            
+        ]]>   
+    </method>  
+    
+    <method name="drawTriangleregisterFinal" args="newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height,tx1,ty1,tx2,ty2,tx3,ty3,swfObj,zIndex" >
+        Debug.write("drawTriangleregisterFinal",newName,stroke,line,fill,strokeDis,fillDis,x,y,width,height);
+        var actionObject = new Array();
+        actionObject[0] = 'triangle';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = fill;
+        actionObject[4] = strokeDis;
+        actionObject[5] = fillDis;
+        actionObject[6] = this.currenttriangleOpacity;
+        actionObject[7] = tx1;
+        actionObject[8] = ty1;
+        actionObject[9] = tx2;
+        actionObject[10] = ty2;
+        actionObject[11] = tx3;
+        actionObject[12] = ty3;
+        actionObject[13] = zIndex;//-8
+        actionObject[14] = swfObj;//-7
+        actionObject[15] = this.counter;//-6
+        actionObject[16] = x;//-5
+        actionObject[17] = y;//-4
+        actionObject[18] = width;//-3
+        actionObject[19] = height;//-2  
+        actionObject[20] = newName;//-1
+        this.baseactionobjectList.push(actionObject);
+        this.onsharedMessage('draw',actionObject);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawULine.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawULine.lzx
new file mode 100644
index 0000000..dfa7e5b
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/baseDrawULine.lzx
@@ -0,0 +1,166 @@
+<?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.
+  
+-->
+<library>
+
+<class name="baseDrawULine" extends="baseDrawLine" >
+    
+    <!-- for drawing uline -->
+    <attribute name="currentulinestroke" value="0xFF6600" />
+    <attribute name="currentulinelineWidth" value="20" type="number" />  
+    <attribute name="currentulineOpacity" value="0.5" type="number" />
+      
+    
+    <!-- ###########################
+    Underline
+     -->
+    <method name="startUline" args="oid_name">
+        if (oid_name == null){
+            oid_name = 'uline'+this.getCounter();
+        }
+        //Debug.write("startUline ",this.startx,this.starty);
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width+2,height:this.height+2,
+            x:-1,y:-1,
+            opacity:this.currentulineOpacity});
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+    
+        //Set previous to null
+        this.prevx = null;
+        this.prevy = null;  
+        
+        currentlayer.strokeStyle = this.currentulinestroke;
+        currentlayer.lineWidth = this.currentulinelineWidth;
+        currentlayer.fillstyle = '0x000000';
+    </method>  
+    
+    <method name="endUline">
+        //Debug.write("endUline",this.startx,this.starty,this.endx,this.endy);
+        <![CDATA[
+            var tempName = this.currentlayer.name;
+            //Debug.write("tempName: ",tempName);
+            this.currentlayer.destroy();
+            
+            //GetBounds of that Object
+            var minx = this.width+2;
+            var miny = this.height+2;
+            var maxx = -2;
+            var maxy = -2;
+    
+            if (this.startx<minx) minx=this.startx;
+            if (this.endx<minx) minx=this.endx;
+            
+            if (this.startx>maxx) maxx=this.startx;
+            if (this.endx>maxx) maxx=this.endx;
+            
+            if (this.starty<miny) miny=this.starty;
+            if (this.endy<miny) miny=this.endy;
+            
+            if (this.starty>maxy) maxy=this.starty;
+            if (this.endy>maxy) maxy=this.endy;
+            
+            var width = maxx-minx;
+            var height = maxy-miny;
+            
+            var x1 = this.startx-minx+(this.currentulinelineWidth/2);
+            var y1 = this.starty-miny+(this.currentulinelineWidth/2);
+            var x2 = this.endx-minx+(this.currentulinelineWidth/2);
+            var y2 = this.endy-miny+(this.currentulinelineWidth/2);
+            
+            //Debug.write("minx,miny,width,height: ",minx,miny,width,height);
+            
+            this.currentlayer = new lz.drawViewNew(this,{
+                name:tempName,x:(minx-1-(this.currentulinelineWidth/2)),
+                y:(miny-1-(this.currentulinelineWidth/2)),
+                width:(width+this.currentulinelineWidth),
+                height:(height+this.currentulinelineWidth),
+                opacity:this.currentulineOpacity});
+                
+            //this.currentlayer.fillstyle = '0x000000';
+            this.currentlayer.lineWidth = this.currentulinelineWidth;
+            this.currentlayer.strokeStyle = this.currentulinestroke;
+    
+            this.drawline((x1),(y1),(x2),(y2));
+    
+            //Add Layer to global Layer     
+            this.layers.push(this.currentlayer);  
+            this.ulineregisterFinal(this.currentlayer.name,this.currentulinestroke,
+                this.currentulinelineWidth,this.currentulineOpacity,
+                this.currentlayer.x,this.currentlayer.y,
+                this.currentlayer.width,this.currentlayer.height,
+                x1,y1,x2,y2,true,this.getSWFDocumentStatus(),
+                this.getZIndex());
+        ]]>
+    </method> 
+    
+    
+    <method name="ulineregisterFinal" args="newName,stroke,line,opacity,x,y,width,height,x1,y1,x2,y2,doCall,swfObj,zIndex">
+        var actionObject = new Array();
+        actionObject[0] = 'uline';
+        actionObject[1] = stroke;
+        actionObject[2] = line;
+        actionObject[3] = opacity;
+        actionObject[4] = x1  
+        actionObject[5] = y1;  
+        actionObject[6] = x2;    
+        actionObject[7] = y2;  
+        actionObject[8] = zIndex;//-8
+        actionObject[9] = swfObj;//-7
+        actionObject[10] = this.counter;//-6 
+        actionObject[11] = x;//-5
+        actionObject[12] = y;//-4
+        actionObject[13] = width;//-3
+        actionObject[14] = height;//-2
+        actionObject[15] = newName;//-1
+        this.baseactionobjectList.push(actionObject);       
+        if (doCall) this.onsharedMessage('draw',actionObject);
+    </method>       
+    
+    
+    <method name="ulineactionHistory" args="lastActionObject,parentView">
+        <![CDATA[
+        //Debug.write("## lineactionHistory",parentView," 2 ## NEW x,y ",lastActionObject[lastActionObject.length-5],lastActionObject[lastActionObject.length-4]," width,height: ",lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2]);
+        
+        var tmpCurrentlayer = new lz.drawViewNew(parentView,{
+                name:lastActionObject[lastActionObject.length-1],
+                x:lastActionObject[lastActionObject.length-5],
+                y:lastActionObject[lastActionObject.length-4],
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2],
+                opacity:lastActionObject[3]});
+            
+            //this.currentlayer.fillstyle = lastActionObject[1];
+            tmpCurrentlayer.lineWidth = lastActionObject[2];
+            tmpCurrentlayer.strokeStyle = lastActionObject[1];
+    
+            this.drawlineOnObject(tmpCurrentlayer, lastActionObject[4],lastActionObject[5],lastActionObject[6],lastActionObject[7]);
+            
+            //Add Layer to global Layer     
+            this.layers.push(tmpCurrentlayer);  
+            
+            this.doSWFDocumentStatus(tmpCurrentlayer,lastActionObject[lastActionObject.length-7]);
+
+        ]]>
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/tools/library.lzx b/WebContent/src/modules/conference/whiteboard/base/tools/library.lzx
new file mode 100644
index 0000000..c84782b
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/tools/library.lzx
@@ -0,0 +1,34 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="baseDrawPaint.lzx" />
+    <include href="baseDrawLine.lzx" />
+    <include href="baseDrawULine.lzx" />
+    <include href="baseDrawClipArt.lzx" />
+    <include href="baseDrawArrow.lzx" />
+    <include href="baseDrawRect.lzx" />
+    <include href="baseDrawEllipse.lzx" />
+    <include href="baseDrawPointer.lzx" />
+    <include href="baseDrawTriangle.lzx" />
+    <include href="baseDrawSelect.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/base/whiteBoardPointer.lzx b/WebContent/src/modules/conference/whiteboard/base/whiteBoardPointer.lzx
new file mode 100644
index 0000000..c95beab
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/whiteBoardPointer.lzx
@@ -0,0 +1,38 @@
+<?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.
+  
+-->
+<library>
+
+    <class name="whiteBoardPointer" extends="view"
+           resource="pointer_whiteboard_rsc" width="20" height="20" >
+        <attribute name="userName" value="" type="string" />
+        <attribute name="fadeDelegate" value="null" />
+        <labelText x="20" text="$once{ parent.userName }" />
+        <handler name="oninit">
+            this.play();
+            this.fadeDelegate = new LzDelegate( this, "fadeText" );
+            lz.Timer.addTimer( this.fadeDelegate, 5000 );
+        </handler>
+        <method name="fadeText" args="itemObj">
+            this.destroy();
+        </method>
+    </class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx b/WebContent/src/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
new file mode 100644
index 0000000..461b341
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
@@ -0,0 +1,344 @@
+<?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.
+  
+-->
+<library>
+
+<class name="whiteboardVideoPlayer" extends="labelExplorerBox" allowDragging="false"
+    docking="false" resizeable="false" closable="false" 
+    x="0" y="0" width="${ parent.width }" height="${ parent.height }">
+	
+	<attribute name="fileExplorerItemId" value="0" type="number" />
+	
+    <attribute name="timerDelegateStarted" value="false" type="boolean" />
+    
+    <attribute name="deltaInSeconds" value="0" type="number" />
+    
+    <attribute name="currentTime" value="0" type="number" /> 	
+    
+    <attribute name="recordingName" value="" type="string" />
+    
+    <attribute name="isLoaded" value="false" type="boolean" />
+	
+	<attribute name="sendInit" value="false" type="boolean" />
+	
+	<attribute name="flv_width" value="0" type="number" /> 
+	
+    <attribute name="flv_height" value="0" type="number" /> 
+    
+    <attribute name="isPaused" value="true" type="boolean" />
+    
+	<handler name="oninit">
+		if ($debug) Debug.write("whiteboardVideoPlayer :: ",this.fileExplorerItemId);
+		
+		this.recordingName = "UPLOADFLV_" + this.fileExplorerItemId + ".flv";
+		calcVideoWidthHeight();
+		this.copyFileToCurrentRoom.doCall();
+		
+		var t = this;
+		canvas.videoComp_lc.stopRecordingStream = function(tName) {
+            if (t.name == tName) {
+            	t.stopStream();
+            }
+        }
+        canvas.videoComp_lc.metaWhiteboardPlaybackStream = function(tName,duration) {
+            if (t.name == tName) {
+                t.deltaInSeconds = duration;
+                t.setDuration();
+            }
+        }
+        canvas.videoComp_lc.updateWhiteboardStreamTime = function(tName,time) {
+            if (t.name == tName) {
+                t.currentTime = time;
+                t.calcProgressBar();
+            }
+        }
+		
+	</handler>
+	
+	<handler name="prepareForDelete" args="tRef">
+		if ($debug) Debug.write("--- prepareForDelete ");
+		this.stopStream();
+	</handler>
+	
+	<handler name="onclose">
+		this.stopStreamPlay();
+	</handler>
+	
+	<handler name="onwidth" args="w">
+		calcVideoWidthHeight();
+	</handler>
+	
+	<handler name="onheight" args="h">
+		calcVideoWidthHeight();
+	</handler>
+	
+	<!--
+	public Long copyFileToCurrentRoom(String SID, Long flvFileExplorerId)
+	 -->
+    <netRemoteCallHib name="copyFileToCurrentRoom" funcname="fileservice.copyFileToCurrentRoom" 
+        remotecontext="$once{ canvas.thishib }" > 
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.fileExplorerItemId;</method></netparam>
+        <handler name="ondata" args="value">
+        	<![CDATA[    
+	            if ($debug) Debug.write("deleteFileOrFolder: ",value);
+	            parent.isLoaded = true;
+	            
+	            var downloadurl = canvas.getUrl()+'DownloadHandler?fileName=UPLOADFLV_'+parent.fileExplorerItemId+'.jpg'
+                                +'&moduleName=lzRecorderApp&parentPath=&room_id='
+                                +'&sid='+canvas.sessionId;
+	            
+                parent._content._preview.imagePreview.setAttribute("src",downloadurl)
+                    
+                parent._content._preview.bringToFront();
+                                
+	            if (parent.sendInit) {
+	                parent.parent.sendNewVideoRemote(parent);
+	            }
+            ]]>
+        </handler>
+    </netRemoteCallHib>
+    
+    <method name="startStreamPlay">
+    	parent.playFLV(this,true);
+    	this.startStream();
+    </method>
+    
+    <method name="stopStreamPlay">
+    	parent.playFLV(this,false);
+    	this.stopStream();
+    </method>
+    
+    <method name="playRemote">
+    	this.startStream();
+    </method>
+    
+    <method name="stopRemote">
+        this.stopStream();
+    </method>
+    
+    <method name="startStream">
+    	<![CDATA[
+	    	if (!this.isLoaded) {
+	    		return;
+	    	}
+	    	
+	    	if ($debug) Debug.write("startStream ",this.recordingName);
+	    	
+	    	if (this.recordingName != "") {
+	    		
+	    		this.isPaused = false;
+	    		
+	    		if (!this.timerDelegateStarted) {
+	    			this.timerDelegateStarted = true;
+	            }
+	            
+	        	if ($debug) Debug.write("PLAY STREAM ",this.recordingName);
+	        	
+	        	var tObjectDimension = calcVideoWidthHeight();
+	        	
+	        	if ($debug) Debug.write("SEND ",this.recordingName,0,tObjectDimension.x,tObjectDimension.y,tObjectDimension.width,tObjectDimension.height);
+	        	
+	            // this._content._videostream.playStream(this.recordingName,0,tObjectDimension.x,tObjectDimension.y,tObjectDimension.width,tObjectDimension.height);
+	            
+	        	var tx = this.getAttributeRelative("x",canvas)+tObjectDimension.x+this._content.x;
+	        	var ty = this.getAttributeRelative("y",canvas)+tObjectDimension.y+this._content.y;
+	        	
+	            canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "playbackWhiteboardVideo", [this.name,this.recordingName,0,tx,ty,tObjectDimension.width,tObjectDimension.height]);
+	    	}
+    	]]>
+    </method>   
+    
+    <!---
+        calculates the new x, y, width and height of the video so that it is 100% 
+        visible in the container
+     -->
+    <method name="calcVideoWidthHeight">
+        <![CDATA[
+        
+            if ($debug) Debug.write("calcVideoWidthHeight ",this.flv_width,this.flv_height);
+        
+            var ratio = this.flv_width / this.flv_height;
+            
+            //max height of container is new height of video;
+            //calc new width and x-position of video
+            var newHeight = this._content.height;
+            var newWidth = ratio * newHeight; 
+            var newx = (this._content.width - newWidth) / 2;
+            var newy = 0;
+            
+            if ($debug) Debug.write("calcVideoWidthHeight",ratio,this._content.width,this._content.height,newWidth,newHeight,newx,newy);
+         
+            if (newWidth > this._content.width) {
+                newWidth = this._content.width;
+                newHeight = newWidth / ratio;
+                newx = 0;
+                newy = (this._content.height - newHeight) / 2;
+            }
+            
+            var t = {'x':newx,'y':newy,'width':newWidth,'height':newHeight};
+            
+            if ($debug) Debug.write("t",t);
+            
+            this._content._preview.setAttribute("x",newx);
+            this._content._preview.setAttribute("y",newy);
+            this._content._preview.setAttribute("width",newWidth);
+            this._content._preview.setAttribute("height",newHeight);
+            
+            return {'x':newx,'y':newy,'width':newWidth,'height':newHeight};
+        ]]>
+    </method>
+    
+    <method name="setDuration">
+    	<![CDATA[
+           if ($debug) Debug.write("setDuration ",this.deltaInSeconds);
+           var tString = "";
+           if (this.deltaInSeconds > 60) {
+               var minutes = Math.floor(this.deltaInSeconds/60);
+               var restSeconds = Math.round(this.deltaInSeconds) - ( minutes * 60 );
+               tString = minutes + " min " + restSeconds + " sec";
+           } else {
+               tString = Math.round(this.deltaInSeconds) + " sec";
+           }
+           this._progress._progressbar._duration.setAttribute("text",tString);
+        ]]>
+    </method>
+    
+    <method name="calcProgressBar">
+    	<![CDATA[
+    	   if ($debug) Debug.write("calcProgressBar ",this.currentTime);
+    	   this._progress._progressbar._pointer.setAttribute("visibility","visible");
+    	   var tString = "";
+    	   if (this.currentTime > 60) {
+    	   	   var minutes = Math.floor(this.currentTime/60);
+    	   	   var restSeconds = Math.round(this.currentTime) - ( minutes * 60 );
+    	   	   tString = minutes + " min " + restSeconds + " sec";
+    	   } else {
+    	   	   tString = Math.round(this.currentTime) + " sec";
+    	   }
+    	   var tNewX = Math.round((this._progress._progressbar.width / this.deltaInSeconds) * this.currentTime);
+    	   this._progress._progressbar._time.setAttribute("text",tString);
+    	   this._progress._progressbar._pointer.setAttribute("x",tNewX);
+    	]]>
+    </method> 
+	
+	<method name="stopStream">
+    	if (this.timerDelegateStarted) {
+    		this.timerDelegateStarted = false;
+        }
+        this._progress._progressbar._time.setAttribute("text","");
+        this._progress._progressbar._pointer.setAttribute("x",0);
+        if ($debug) Debug.write("SEND stopWhiteboardVideo ",this.name);
+        canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "stopWhiteboardVideo",[this.name]);
+        this.isPaused = true;
+    </method>
+    
+    <method name="toggleStream">
+    	if (canvas.ismoderator &amp;&amp; this.isPaused) {
+   			this.startStreamPlay();
+    	}
+    </method>
+	
+	<view name="_content" height="${ parent.height-62 }" bgcolor="0x000000"
+		  y="22" x="1" width="${ parent.width-1 }">
+		
+		<view name="_preview" width="0" height="0" >
+        	<image name="imagePreview" stretches="both"
+        		   width="${parent.width}" height="${parent.height}" />
+            <handler name="onclick">
+            	if ($debug) Debug.write("onclick -- toggleStream");
+                parent.parent.toggleStream();
+            </handler>		   
+            <view width="60" height="40" valign="middle" opacity="0.7"
+            	  align="center" bgcolor="0xFFFFFF">
+            	<view resource="lz_recorder_play" valign="middle" align="center" />
+            </view>
+        </view>
+	
+	</view>
+
+    <view name="_progress" height="18" y="${ parent.height - 40 }" width="${ parent.width-2 }"
+    	                  x="1" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+    	
+    	<view resource="flv_recorder_play_small_rsc" y="1" height="16" width="16"
+    		      bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+    		<handler name="onmouseover">
+                this.setAttribute("bgcolor",0xFFFFFF);
+            </handler>
+            <handler name="onmouseout">
+                this.setAttribute("bgcolor",canvas.getThemeColor('baseMouseOvercolorizer'));
+            </handler>
+    		<handler name="onclick">
+    			if (canvas.ismoderator &amp;&amp; parent.parent.isPaused) {
+    			     parent.parent.startStreamPlay();
+    			}
+    		</handler>
+    		<labelTooltip labelid="875" />
+    	</view>
+    	
+    	<view name="_progressbar" x="16" width="${ parent.width - 32 }" y="1" 
+    		  height="16" bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+    		
+    		<view x="0" width="${ parent.width }" y="0" height="16" bgcolor="0xFFFFFF" opacity="0.5" /> 
+    		
+    		<handler name="onclick">
+    			//parent.parent.seekStream(this.getMouse("x"));
+    		</handler>
+    		
+    		<view name="_pointer" resource="flv_progress_pointer_rsc" visibility="hidden" />
+    		
+    		<text name="_time" resize="true" fontsize="10" />
+    		
+    		<text name="_duration" align="right" resize="true" fontsize="10" />
+    		
+    	</view>
+    	
+    	<view resource="flv_recorder_stop_small_rsc" align="right" y="1" height="16" width="16"
+    		  bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+    		<handler name="onmouseover">
+    			this.setAttribute("bgcolor",0xFFFFFF);
+    		</handler>
+    		<handler name="onmouseout">
+                this.setAttribute("bgcolor",canvas.getThemeColor('baseMouseOvercolorizer'));
+            </handler>
+            <handler name="onclick">
+            	if (canvas.ismoderator) {
+                    parent.parent.stopStreamPlay();
+            	}
+            </handler>
+            <labelTooltip labelid="876" />
+        </view>
+    	
+    </view>	
+    
+    <simpleLabelButton labelid="85" width="100" x="${ parent.width-118 }" 
+    				   y="${ parent.height-20 }" >
+        <handler name="onclick">
+            if (canvas.ismoderator) {
+            	this.parent.stopRemote();
+                this.parent.parent.deleteItemByName(this.parent.name);
+                this.parent.parent.deleteItemByNameSync(this.parent.name);
+            }
+        </handler>
+    </simpleLabelButton>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/basePropertyPanelWhiteboard.lzx b/WebContent/src/modules/conference/whiteboard/basePropertyPanelWhiteboard.lzx
new file mode 100644
index 0000000..9c10d3f
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/basePropertyPanelWhiteboard.lzx
@@ -0,0 +1,80 @@
+<?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.
+  
+-->
+<library>
+
+<class name="basePropertyPanelWhiteboard" extends="view" >
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />		
+	
+	<!--- Title of this window -->
+	<attribute name="title" type="string" value="basePanel" />
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+	
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	
+	<!--- if the box is allowed to be minimized  -->
+	<attribute name="allowToggle" value="true" type="boolean" />	
+		
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute("title",canvas.getLabelName(this.labelid));
+	</method>
+	
+	<method name="toggleopen">
+		if (!this.allowToggle) {
+			return;
+		}
+		////Debug.write("this.isopen",this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){		
+			this.setAttribute('height',this.initheight);
+			this.setAttribute('height',this.initheight);
+		} else {	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+    <handler name="oninit">
+    	this.initheight=this.height;
+    </handler>
+	
+    <view x="0" y="1" width="${ this.parent.width }" height="20" bgcolor="0xE0E1EB" />
+    
+    <view x="0" y="0" width="${ this.parent.width }" height="1" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" />
+    
+    <view x="0" y="19" width="${ this.parent.width }" height="1" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" />
+	
+	<handler name="onclick">
+        this.toggleopen();
+    </handler>
+    
+    <text fontsize="11" height="17" x="2" y="1" text="${ this.parent.title }" 
+						fgcolor="$once{ canvas.getThemeColor('menuTextColor') }" resize="true" fontstyle="bold" />
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx b/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
new file mode 100644
index 0000000..b73230c
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteBoard.lzx
@@ -0,0 +1,595 @@
+<?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.
+  
+-->
+<library>
+
+<!-- 
+############################
+
+    Class newWhiteBoard
+    
+    
+    @keywords deprecated
+    
+ -->
+
+
+<class name="fixedFileExplorerWhiteBoard" extends="view" showhandcursor="false">
+    
+    <attribute name="baseurl" value="" type="string" />
+    <attribute name="fileName" value="" type="string" />
+    <attribute name="moduleName" value="" type="string" />
+    <attribute name="parentPath" value="" type="string" />
+    <attribute name="room" value="" type="string" />
+    <attribute name="domain" value="" type="string" />
+    
+    <attribute name="downloadurl" value="" type="string" />
+    <attribute name="iamgex" value="" type="string" />
+    <attribute name="imagey" value="" type="string" />
+    
+    <attribute name="restricted" value="false" type="boolean" />
+    
+    <event name="onsharedMessage" />
+    
+    <attribute name="sendObject" value="null" />
+    <attribute name="sendObjectToClientID" value="0" type="number"  />
+    
+    <attribute name="confirmdialog" value="null" />
+    
+    <attribute name="documentmenuIsInited" value="false" type="boolean" />
+    
+    <handler name="oninit">
+        if ($debug) Debug.info("Init Whiteboard ",this.restricted);
+    </handler>
+
+    <handler name="ondestroy">
+		//if ($debug) Debug.write("############## fixedFileExplorerWhiteBoard::ondestroy : ", this);
+		this._drawareaMask._drawarea.clearRemote();
+    </handler>
+
+    <method name="sendConfirmation" args="yesno,askagain" >
+        
+        ////Debug.write("clear yesno,askagain: ",yesno,askagain);
+    
+         var g = canvas.getUserData();
+         if (g["image"]==null) g["image"]=new Array();
+         g["image"]["clearField"]=yesno;
+         g["image"]["askagainclear"]=!askagain;
+         canvas.setUserData(g);
+
+         if (yesno){
+            ////Debug.write("clear field!!");
+            canvas._drawarea.setModus('plain');
+            canvas._drawarea.addNewSyncImage(this.downloadurl,this.iamgex,this.imagey,this.baseurl,this.fileName,this.moduleName,this.parentPath,this.room,this.domain);
+         } else {
+            ////Debug.write("don't clear field!!");
+            canvas._drawarea.addNewSyncImage(this.downloadurl,this.iamgex,this.imagey,this.baseurl,this.fileName,this.moduleName,this.parentPath,this.room,this.domain);
+         }
+         this.confirmdialog.close();
+    </method>
+    
+    <method name="getconfirmationscode">
+        var g = canvas.getUserData();
+        if (g["image"]==null) {
+            g["image"]=new Array();
+            g["image"]["clearField"]=false;
+            g["image"]["askagainclear"]=true;
+            canvas.setUserData(g);
+        }
+        return g["image"];
+    </method>
+    
+    <method name="resetDefaultConfirmations">
+        var g = canvas.getUserData();
+        if (g["image"]==null) g["image"]=new Array();
+        g["image"]["clearField"]=false;
+        g["image"]["askagainclear"]=true;
+        canvas.setUserData(g);
+    </method>   
+    
+    <method name="clearAreaAndAddImage" args="downloadurlVal,xVal,yVal,baseurl,fileName,moduleName,parentPath,room,domain">
+        <![CDATA[
+        ////Debug.write("clearAreaAndAddImage: ",downloadurlVal,xVal,yVal,baseurl,fileName,moduleName,parentPath,room,domain);
+        this.downloadurl=downloadurlVal;
+        this.iamgex=xVal;
+        this.imagey=yVal;   
+        this.baseurl=baseurl;
+        this.fileName=fileName;
+        this.moduleName=moduleName;
+        this.parentPath=parentPath;
+        this.room=room;
+        this.domain=domain;
+        var storedImageDate = this.getconfirmationscode();
+        ////Debug.write(" g[image] ",storedImageDate);
+        if (storedImageDate["clearField"] && !storedImageDate["askagainclear"]){
+            canvas._drawarea.setModus('plain');
+            if ($debug) Debug.write(" canvas._drawarea.addNewImage 1 ",this.downloadurl,this.x,this.y);
+            canvas._drawarea.addNewImage(this.downloadurl,this.x,this.y,this.baseurl,this.fileName,this.moduleName,this.parentPath,this.room,this.domain);
+        } else if (!storedImageDate["askagainclear"] && !storedImageDate["clearField"]){
+            canvas._drawarea.addNewImage(this.downloadurl,this.x,this.y,this.baseurl,this.fileName,this.moduleName,this.parentPath,this.room,this.domain);
+            if ($debug) Debug.write(" canvas._drawarea.addNewImage 2 ",this.downloadurl,this.x,this.y);
+        } else if (storedImageDate["askagainclear"]){
+            this.confirmdialog = new lz.confirmationBox(canvas.main_content._content.inner,{labelid:62,labeliderror:63,refObj:this});
+        } else {
+            this.confirmdialog = new lz.confirmationBox(canvas.main_content._content.inner,{labelid:62,labeliderror:63,refObj:this});
+        }
+        ]]> 
+    </method>
+    
+    <event name="isloadingImage" />
+    <event name="isloadedImage" />
+    
+    
+    <text fontsize="11" x="10" y="2" 
+        name="_sharingClientName" fontstyle="bold" />    
+    
+    
+	<method name="checkForApplyScreen">
+		lz.Browser.loadURL(canvas.getScreenSharingUrl(), '_blank');
+	</method> 
+	
+    <!-- 
+        The Content Area    
+     -->
+    <view width="${ parent.parent.width-2 }" 
+          height="${ (canvas.ismoderator) ? (parent.parent.height-42-parent._propertyPanel.height) : ((canvas.isAllowedToDraw) ? (parent.parent.height-42-parent._propertyPanel.height) : (parent.parent.height-42)) }" 
+          y="0" name="_drawareaMask" clip="true" bgcolor="0xFFFFFF" >
+    	
+    	<handler name="oninit">
+            if ($debug) Debug.info("lz.Track.register ",canvas.currentImagesListdraw.currentTrackGroupName);
+            lz.Track.register(this, canvas.currentImagesListdraw.currentTrackGroupName);
+        </handler>
+    	
+    	<handler name="onmousedown">
+            this._drawarea.onmousedownMethod();
+        </handler>
+        
+        <handler name="onmouseup">
+            this._drawarea.onmouseupMethod();
+        </handler>
+        
+        <handler name="onmouseover">
+        	lz.Cursor.restoreCursor();
+        	lz.Cursor.showHandCursor(false);
+            this._drawarea.onmouseoverMethod();
+        </handler>
+        
+        <handler name="onmouseout">
+        	lz.Cursor.showHandCursor(true);
+        	lz.Cursor.unlock();
+            this._drawarea.onmouseoutMethod();
+        </handler>
+        
+        <handler name="onmousetrackover">
+            if ($debug) Debug.write("onmousetrackover");
+            canvas.currentImagesListdraw.currentDragItem.sendOverItem(this);
+            this.setAttribute("bgcolor",0x93FE92);
+        </handler>
+        
+        <handler name="onmousetrackout">
+            if ($debug) Debug.write("onmousetrackout");
+            canvas.currentImagesListdraw.currentDragItem.sendOutItem(this);
+            this.setAttribute("bgcolor",0xFFFFFF);
+        </handler>
+        
+        <handler name="onmousetrackup">
+            if ($debug) Debug.write("onmousetrackup");
+            this.setAttribute("bgcolor",0xFFFFFF);
+        </handler>   
+    	
+    	<remoteWhiteboard y="0" name="_drawarea" isRemoteOID="true" height="${parent.height}" width="${parent.height}"
+                          restricted="$once{ parent.parent.restricted }" >
+    		
+    		<attribute name="sendUpdate" value="true" type="boolean"/>
+    		
+    		<handler name="onx" args="x">
+                if (this.sendUpdate) {
+                    if ($debug) Debug.write("# x",x);
+					if ('scrollContainer' in parent.parent) {
+	                    parent.parent.scrollContainer.calcScrollContent();
+					}
+                }
+            </handler>
+            
+            <handler name="ony" args="y">
+                if (this.sendUpdate) {
+                    if ($debug) Debug.write("# y",y);
+					if ('scrollContainer' in parent.parent) {
+                    	parent.parent.scrollContainer.calcScrollContent();
+					}
+                }
+            </handler>
+            
+            <handler name="onheight" args="h">
+                if ($debug) Debug.write("# height",h);
+                //this.dragger.drag_min_x = parent.width - w;
+				if ('scrollContainer' in parent.parent) {
+	                parent.parent.scrollContainer.calcScrollContent();
+				}
+                parent.parent.zoombox.sendUpdate(null);
+            </handler>
+            
+            <handler name="onwidth" args="w">
+                if ($debug) Debug.write("# width",w);
+                //this.dragger.drag_min_y = parent.height - h;
+				if ('scrollContainer' in parent.parent) {
+	                parent.parent.scrollContainer.calcScrollContent();
+				}
+            </handler>
+            
+            <handler name="onupdateScale" args="tRef">
+                if ($debug) Debug.write("# updateScale",this.getDisplayObject()._xscale);
+				if ('scrollContainer' in parent.parent) {
+	                parent.parent.scrollContainer.calcScrollContent();
+				}
+            </handler>
+    		
+            <attribute name="initH"/>
+            <attribute name="initW"/>
+            <handler name="oninit">
+                canvas._drawarea = this; 
+            </handler>
+            
+            <handler name="onprogress" args="perc">
+                //Debug.write("onprogress: ",perc);
+                this.parent.parent._progress.setProgress(perc);
+            </handler>
+            <!--
+            <handler name="onmousedown" >
+                //Debug.write("onprogress: ",perc);
+            </handler>
+             -->
+            <handler name="ondrawmodus" args="d">
+                this.drawmodus = d;
+                //change Enabled Status of Toolbar Menu Button
+                parent.parent._propertyPanel.loadPanelByModus(this);
+            </handler>
+            <handler name="setNewScreenUserName" args="value">
+                this.parent.parent._sharingClientName.setAttribute('text',value);
+            </handler>
+            <!-- @overwrite -->
+            <method name="onsharedMessage" args="action,obj">
+                
+                if ($debug) Debug.write("###### onsharedMessage",action,obj);
+    
+                var tempSendArray = new Array ();
+                tempSendArray[0] = 'whiteboard';
+                tempSendArray[1] = new Date();
+                tempSendArray[2] = action;
+                tempSendArray[3] = obj;
+                     
+                parent.parent.onsharedMessage.sendEvent(tempSendArray);
+            </method>
+            
+            <handler name="onopenWhiteBoard" >
+                //parent.parent.getRoomItems.doCall();
+            </handler>
+            
+            <!-- clientid  = streamid of the user -->
+            <method name="oninitUser" args="clientid,objectList">
+                this.parent.parent.sendObjectToClientID = clientid;
+                this.parent.parent.sendObject = objectList;
+                this.parent.parent.sendMessageWithClientById.doCall();
+            </method>
+            
+            <handler name="onboundingIsActive" args="b">
+                if ($debug) Debug.write("boundingIsActive: ",b);
+                if (b){
+                    var boundingDoUpdateOnInit = true;
+                    if (this.ObjectByName instanceof lz.swfResourceView){
+                        //Debug.write("is swf Presentation");
+                        boundingDoUpdateOnInit=false;
+                    }
+                    if (!boundingDoUpdateOnInit) {
+                        parent.parent._propertyPanel.setObjectBounds(
+                            this.ObjectByName.x,this.ObjectByName.y,
+                            this.ObjectByName._swfView.width,this.ObjectByName._swfView.height);
+                    } else {
+                        parent.parent._propertyPanel.setObjectBounds(
+                            this.ObjectByName.x,this.ObjectByName.y,
+                            this.ObjectByName.width,this.ObjectByName.height);
+                    }
+                }
+            </handler>
+            
+            <!--  bounding Box (selection Box) -->
+            <handler name="onBoundingBox" args="boundingBoxRef">
+                var boundingDoUpdateOnInit = true;
+                if (boundingBoxRef.objRef instanceof lz.swfResourceView){
+                //Debug.write("is swf Presentation");
+                    boundingDoUpdateOnInit=false;
+                }
+                if (!boundingDoUpdateOnInit) {
+                    parent.parent._propertyPanel.setObjectBounds(
+                    boundingBoxRef.objRef.x,boundingBoxRef.objRef.y,
+                    boundingBoxRef.objRef._swfView.width,boundingBoxRef.objRef._swfView.height);
+                } else {
+                    parent.parent._propertyPanel.setObjectBounds(
+                    boundingBoxRef.objRef.x,boundingBoxRef.objRef.y,
+                    boundingBoxRef.objRef.width,boundingBoxRef.objRef.height);
+                }
+            </handler>
+            
+            <method name="getDocumentToolBar">
+                return parent.parent.panelArea.getDocumentsToolbar();
+            </method>
+            
+            <method name="getPaintToolBar">
+                return parent.parent.panelArea._mainToolsPanel;
+            </method>
+            
+            <view name="_grid" x="-2" y="-2" height="${parent.height}" width="${parent.height}" 
+                  visibility="${ (parent.showGrid) ? 'visible' : 'hidden'}"/>
+        </remoteWhiteboard>   
+    	
+    </view>
+    
+    
+    <view name="scrollContainer" width="${ parent.parent.width-2 }" 
+          visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }"
+          height="${ (canvas.ismoderator) ? (parent.parent.height-42-parent._propertyPanel.height) : ((canvas.isAllowedToDraw) ? (parent.parent.height-33-parent._propertyPanel.height) : (parent.parent.height-33)) }" >
+        
+        <attribute name="sendUpdate" value="true" type="boolean"/>
+        
+        <method name="calcScrollContent">
+            var rHeight = Math.round(parent._drawareaMask._drawarea.height * (parent._drawareaMask._drawarea.getDisplayObject()._xscale / 100));
+            var rWidth = Math.round(parent._drawareaMask._drawarea.width * (parent._drawareaMask._drawarea.getDisplayObject()._yscale / 100));
+            this.sendUpdate = false;
+            this.scrollview.setAttribute("x",parent._drawareaMask._drawarea.x);
+            this.scrollview.setAttribute("y",parent._drawareaMask._drawarea.y);
+            this.scrollview.setAttribute("height", Math.max(rHeight, parent._drawareaMask._drawarea.getDisplayObject()._height));
+            this.scrollview.setAttribute("width", Math.max(rWidth, parent._drawareaMask._drawarea.getDisplayObject()._width));
+            this.sendUpdate = true;
+        </method>
+        
+        <view name="scrollview">
+            
+            <attribute name="timeisInited" value="false" type="boolean" />
+            <attribute name="sendObjectDel" value="null" />
+            
+            <handler name="oninit">
+                this.sendObjectDel = new LzDelegate( this, "sendObject" );
+            </handler>
+            
+            <handler name="onx" args="x">
+                if (parent.sendUpdate) {
+                    if ($debug) Debug.write("# scrollview x",x);
+                    parent.parent._drawareaMask._drawarea.setAttribute("x",x);
+                    
+                    if (!this.timeisInited){
+                        this.timeisInited=true;
+                        lz.Timer.addTimer( this.sendObjectDel, 250 );
+                    } else {
+                        lz.Timer.resetTimer( this.sendObjectDel, 250 );
+                    }
+                }
+            </handler>
+            <handler name="ony" args="y">
+                if (parent.sendUpdate) {
+                    if ($debug) Debug.write("# scrollview y",y);
+                    parent.parent._drawareaMask._drawarea.setAttribute("y",y);
+                    
+                    if (!this.timeisInited){
+                        this.timeisInited=true;
+                        lz.Timer.addTimer( this.sendObjectDel, 250 );
+                    } else {
+                        lz.Timer.resetTimer( this.sendObjectDel, 250 );
+                    }
+                }
+            </handler>
+            
+            <method name="sendObject" args="itemRef">
+                if ($debug) Debug.info("sendObject :: scrollview");
+                
+                var tArray = new Array();
+                tArray[0] = "moveMap";
+                tArray[1] = Math.round(this.x);
+                tArray[2] = Math.round(this.y);
+                
+                this.parent.parent._drawareaMask._drawarea.onsharedMessage('moveMap',tArray);
+                this.timeisInited=false;
+            </method>
+        </view>
+    
+        <om_vscrollbar name="_scrollstv"/> 
+        <om_hscrollbar name="_scrollsth" /> 
+    
+    </view>    
+    
+    
+        <netRemoteCallHib name="sendMessageWithClientById" funcname="sendMessageWithClientById"
+            remotecontext="$once{ canvas.thishib }" >
+            <netparam><method name="getValue">return parent.parent.sendObject;</method></netparam>
+            <netparam><method name="getValue">return parent.parent.sendObjectToClientID;</method></netparam>
+            <handler name="ondata" args="value">
+                <![CDATA[
+                    //The onResult-Handler will be called be the rtmpconnection
+                    //Debug.write("sendMessageWithClientById : ",value);
+                ]]>
+            </handler>   
+        </netRemoteCallHib>     
+    
+    <view name="panelArea" width="${ parent.parent.width }" 
+          height="${ parent.parent.height-42-parent._propertyPanel.height }">
+        
+        <attribute name="objectRef" value="null" />
+        
+        <!--- @deprecated -->
+        <method name="_setSelection" args="obj">
+            parent._drawareaMask._drawarea.removeObjectBounds();
+            if (obj.setSelectionToItem){            
+                if (this.objectRef!=null){
+                    this.objectRef._isselected = false;
+                    this.objectRef._area.setAttribute('bgcolor',0xFFFFFF);
+                }
+                this.objectRef = obj;
+                this.objectRef._isselected = true;
+                this.objectRef._area.setAttribute('bgcolor',canvas.getThemeColor('basebgcolorizer'));
+                parent._drawareaMask._drawarea.setModus(this.objectRef.modi);
+            }
+        </method>
+        
+        <method name="setSelection" args="obj">
+            if ($debug) Debug.write("setSelection ",obj);
+            parent._drawareaMask._drawarea.removeObjectBounds();
+            if (obj.setSelectionToItem){            
+                if (this.objectRef!=null){
+                    this.objectRef._isselected = false;
+                    this.objectRef.setAttribute('enabled',true);
+                }
+                this.objectRef = obj;
+                this.objectRef._isselected = true;
+                this.objectRef.setAttribute('enabled',false);
+            }
+            if (obj.modi=="saveobj"){
+                parent._drawareaMask._drawarea.doAction(obj.modi);
+            } else {
+                parent._drawareaMask._drawarea.setModus(obj.modi);
+            }
+        </method>
+        
+        <method name="setSelectionWithoutEvent" args="obj">
+            if (obj.setSelectionToItem){         
+                if (this.objectRef!=null){
+                    this.objectRef._isselected = false;
+                    this.objectRef.setAttribute('enabled',true);
+                }
+                this.objectRef = obj;
+                this.objectRef._isselected = true;
+                this.objectRef.setAttribute('enabled',false);
+            }
+        </method>
+        
+        <!--
+                                
+         -->
+         
+        <method name="sendNewPropertyHeight" args="objRef">
+            <![CDATA[
+                for (var i=0;i<this.subviews.length;i++) {
+                    if (this.subviews[i].y != 0) {
+                        if (this.subviews[i] instanceof lz.mainToolsTopPanel) {
+                            if (objRef.height<=22){
+                                if (this.subviews[i].y+this.subviews[i].height+5>=parent.parent.height-objRef.initheight-21){
+                                    if ($debug) Debug.write("mainToolsTopPanel");
+                                    this.subviews[i].setAttribute('y',objRef.y-this.subviews[i].height);
+                                }
+                            } else {
+                                if (this.subviews[i].y+this.subviews[i].height+5>=objRef.y){
+                                    if ($debug) Debug.write("mainToolsTopPanel");
+                                    this.subviews[i].setAttribute('y',objRef.y-this.subviews[i].height);
+                                }
+                            }
+                        }   
+                    }
+                }
+            ]]>
+        </method>
+        
+        <method name="getDocumentsToolbar">
+            return parent._propertyPanel._content._documentsPanel;
+        </method>
+        
+        <mainToolsTopPanel x="100" y="0" name="_mainToolsPanel" 
+             visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }"/>
+        
+        <mainToolsLeftPanelPointer y="20" name="_mainToolsLeftPanelPointer" 
+             visible="${ (parent.parent.restricted) ? false : (((canvas.ismoderator) ? false : ((canvas.isAllowedToDraw) ? false : true ))) }"/>
+    </view> 
+    
+    <view name="zoombox" y="0" x="${ parent.parent.width-this.width-14 }" layout="axis:x;spacing:2">
+        
+        <attribute name="ignoreUpdates" value="false" type="boolean" />
+        
+        <handler name="onx" args="x">
+        	if (this._fullFit.getValue()) {
+        		if ($debug) Debug.write("on x sendUpdate ",x);
+        		lz.Timer.addTimer( new LzDelegate( this, "sendUpdate" ), 100 );
+        	}
+        </handler>
+        
+        <method name="sendUpdate" args="refObj">
+            if ($debug) Debug.write("fixedFileExplorer sendUpdate ",refObj);
+        	parent._drawareaMask._drawarea.doFullFit(true);
+        </method>
+        
+        <method name="setWhiteboardValues" args="fullFit,zoom">
+            if ($debug) Debug.write("setWhiteboardValues -1- ",fullFit,zoom);
+            this.ignoreUpdates = true;
+			if ('_zoom' in this) {
+	            this._zoom.setSliderValue(zoom);
+			}
+            this._fullFit.setValue(fullFit);
+            this.ignoreUpdates = false;
+        </method>
+        
+        <method name="setCurrentScaleByFullFit" args="tScale">
+            if ($debug) Debug.write("setCurrentScaleByFullFit -2- ",tScale);
+            this.ignoreUpdates = true;
+			if ('_zoom' in this) {
+	            this._zoom.setSliderValue(tScale);
+			}
+            this.ignoreUpdates = false;
+        </method>
+        
+        <labelCheckbox x="344" name="_fullFit" labelid="847" y="4" fontstyle="bold" bgcolor="0xFFFFFF"
+        		visible="${ ((canvas.becomemoderator) ? true : false ) }">
+            <handler name="onvalue" args="v">
+                if (parent.ignoreUpdates) {
+                    return;
+                }
+                if ($debug) Debug.warn("onvalue Full Fit ",v);
+                
+				if ('_zoom' in parent) {
+                	parent.parent._drawareaMask._drawarea.doUpdateFullFit(v,parent._zoom.initialNumber);
+				}
+            </handler>
+            <labelTooltip labelid="1212" multiline="true" />
+        </labelCheckbox>
+        
+        <changeWidthSlider name="_zoom" initialNumberInit="50" labelid="1328"
+	            boxPosition="down" initialNumber="50" maximum="200">
+            <handler name="oninitialNumber" args="i">
+                if (parent.ignoreUpdates) {
+                    return;
+                }
+                
+                if ($debug) Debug.warn("onvalue Zoom Fit ",this.initialNumber);
+                
+                parent._fullFit.setValue(false);
+				parent.parent._drawareaMask._drawarea.doUpdateZoom(parent._fullFit.getValue(),this.initialNumber);
+            </handler>
+        </changeWidthSlider>
+        
+        <view width="2" />
+        
+    </view>    
+    
+    <propertyPanel name="_propertyPanel" x="0" y="${ parent.parent.height-this.height-42 }" 
+                    visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }">
+        <handler name="onheight" args="h">
+            this.height = h;
+            if ($debug) Debug.write("onheight: ",h);
+            parent.panelArea.sendNewPropertyHeight(this);
+        </handler>
+    </propertyPanel>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx b/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
new file mode 100644
index 0000000..81da29d
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/fixedFileExplorerWhiteboardPanel.lzx
@@ -0,0 +1,350 @@
+<?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.
+  
+-->
+<library>
+
+<class name="multiWhiteboardPanel" extends="fixedFileExplorerWhiteBoard" y="42" x="1">
+	
+	<attribute name="whiteboardId" value="0" type="number" />
+	<attribute name="objWhiteboard" value="null" />
+	<attribute name="objMessage" value="null" />
+	
+    <handler name="onsharedMessage" args="obj">
+        //Debug.write("send: ",obj);
+        this.objWhiteboard = obj;
+        if (this.sendVarsByWhiteboardId != null){
+        	this.sendVarsByWhiteboardId.doCall();
+        }
+    </handler>
+    
+    <netRemoteCallHib name="sendVarsByWhiteboardId" funcname="sendVarsByWhiteboardId" 
+    				  	showLoading="false" remotecontext="$once{ canvas.thishib }" >
+        <netparam><method name="getValue">return parent.parent.objWhiteboard;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.whiteboardId;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+            	//if ($debug) Debug.write("sendVarsByWhiteboardId : ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     
+    
+    <handler name="onvisible" args="v">
+    	<![CDATA[
+	    	if ($debug) Debug.write("onvisible :: ",v);
+    	]]>
+    </handler>
+    
+    <method name="sendActiveWindow">
+    	if ($debug) Debug.warn("sendActiveWindow :: ");
+    	if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		if ($debug) Debug.warn("DO sendActiveWindow :: ");
+    		canvas._drawarea = this._drawareaMask._drawarea;
+    		this.objMessage = new Array();
+    		this.objMessage[0] = "activateWhiteboard";
+    		this.objMessage[1] = this.whiteboardId;
+    		this.sendMessageToMembers.doCall();
+    	}
+    </method>
+    
+    <netRemoteCallHib name="sendMessageToMembers" funcname="sendMessageToMembers" 
+    				  	showLoading="false" remotecontext="$once{ canvas.thishib }" >
+        <netparam><method name="getValue">return parent.parent.objMessage;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("sendMessageToMembers :: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib> 
+    
+</class>
+    
+<class name="fixedFileExplorerWhiteboardPanel" extends="basePropertyPanelWhiteboard" allowToggle="false"
+	   labelid="615" visible="${((canvas.currentRoomObj.hideWhiteboard) ? false:true)}">
+	<attribute name="whiteboardCount" value="0" type="number" />	
+	<!--
+	
+	 -->
+	<handler name="oninit">
+		canvas._drawarea = this;
+	</handler>
+	
+	<handler name="onopenWhiteBoard" >
+        if ($debug) Debug.write(".. onopenWhiteBoard ..");
+        this.loadInitObject()
+    </handler>
+            
+    <!--
+    	##########################################
+    	Add, remove and change Focus of Whiteboard
+    	##########################################
+     -->
+     
+    <method name="addNewItem">
+    	this.getNewWhiteboardId.doCall();
+    </method>
+    
+    <!--
+    public Long getNewWhiteboardId() {
+     -->
+    <netRemoteCallHib name="getNewWhiteboardId" funcname="whiteboardservice.getNewWhiteboardId"
+        remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("############## getNewWhiteboardId : ",value);
+                parent.addNewItemSynced(value);
+                parent.sendNewWindow(value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>       
+    
+    <method name="addNewItemSynced" args="whiteboardId">
+    	for (var eg in this._bar.subviews) {
+    		this._bar.subviews[eg].isactive = false;
+    		this._bar.subviews[eg].onmouseout.sendEvent(null);
+    		this._bar.subviews[eg].objRef.setAttribute("visibility","hidden");
+    	}
+    	
+    	var whiteboard = new lz.multiWhiteboardPanel(this,{
+								    		whiteboardId:whiteboardId
+								    	});
+    	var tempWidth = this._bar.getCurrentSize();
+    	
+    	var whiteboardName = canvas.getLabelName(615) + (whiteboardCount > 0 ? " " + whiteboardCount : "");
+    	whiteboardCount++;
+    	var tWhiteboardBtn = new lz.whiteboardMiniButton(this._bar,{
+                            	   objRef:whiteboard,
+                            	   width:tempWidth,
+                            	   isactive:true,
+                            	   btnName: whiteboardName
+                            	});
+        
+        this._bar.currentBtn = tWhiteboardBtn;                    	
+                            	
+    	tWhiteboardBtn.onmouseout.sendEvent(null);
+        this.addNewItemButton.updatePosition();
+        canvas.whiteboardCount++;
+        return whiteboard;
+    </method>
+    
+    <method name="sendNewWindow" args="whiteboardId">
+    	if ($debug) Debug.warn("sendNewWindow :: ");
+    	if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		if ($debug) Debug.warn("DO sendActiveWindow :: ");
+    		this.objMessage = new Array();
+    		this.objMessage[0] = "newWhiteboard";
+    		this.objMessage[1] = whiteboardId;
+    		this.sendMessageToMembers.doCall();
+    	}
+    </method>
+    
+    <method name="newWhiteboard" args="obj">
+    	if ($debug) Debug.write("newWhiteboard :: ",obj);
+    	this.addNewItemSynced(obj[1]);
+    </method>
+    
+    
+    <!--
+        ##########################################
+        Removal of Whiteboards
+        ##########################################
+     -->
+    <method name="sendRemoveWindow" args="whiteboardId">
+    	if ($debug) Debug.warn("sendRemoveWindow :: ");
+    	if (canvas.ismoderator || canvas.isAllowedToDraw) {
+    		this.deleteWhiteboard.whiteboardId = whiteboardId;
+    		this.deleteWhiteboard.doCall();
+    		if ($debug) Debug.warn("DO sendRemoveWindow :: ");
+    		this.objMessage = new Array();
+    		this.objMessage[0] = "removeWindow";
+    		this.objMessage[1] = whiteboardId;
+    		this.sendMessageToMembers.doCall();
+	        canvas.whiteboardCount--;
+    	}
+    </method>
+    
+    <!--
+    public Boolean deleteWhiteboard(Long whiteBoardId)
+     -->
+    <netRemoteCallHib name="deleteWhiteboard" funcname="whiteboardservice.deleteWhiteboard"
+        remotecontext="$once{ canvas.thishib }" >
+    	<attribute name="whiteboardId" value="0" type="number" />
+        <netparam><method name="getValue">return parent.whiteboardId;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                //The onResult-Handler will be called be the rtmpconnection
+                if ($debug) Debug.write("############## deleteWhiteboard : ", value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>       
+    
+    <method name="removeWindow" args="obj">
+    	if ($debug) Debug.write("removeWindow :: ",obj);
+    	for (var eg in this._bar.subviews) {
+    		
+    		if (this._bar.subviews[eg].objRef.whiteboardId == obj[1]) {
+    			
+    			this._bar.removeObjectSynced(this._bar.subviews[eg]);
+    			return;
+    			
+    		}
+    		
+    	}
+    </method>
+    
+    <netRemoteCallHib name="sendMessageToMembers" funcname="sendMessageToMembers" 
+    				  	showLoading="false" remotecontext="$once{ canvas.thishib }" >
+        <netparam><method name="getValue">return parent.parent.objMessage;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+            //The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("sendMessageToMembers :: ",value);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>     
+    
+    <method name="sendWatchObjectByWhiteboard" args="obj">
+    	if ($debug) Debug.write("sendWatchObjectByWhiteboard :: ",obj);
+    	for (var eg in this.subviews) {
+    		if (obj.id == this.subviews[eg].whiteboardId) {
+    			this.subviews[eg]._drawareaMask._drawarea.sendWatchObject(obj.param[2],obj.param[3],false);
+    			return;
+    		}
+    	}
+    </method>
+    
+    <method name="loadWmlToWhiteboardById" args="obj">
+        if ($debug) Debug.write("loadWmlToWhiteboardById :: ",obj);
+        for (var eg in this.subviews) {
+            if (obj.id == this.subviews[eg].whiteboardId) {
+                this.subviews[eg]._drawareaMask._drawarea.loadWmlToWhiteboardById(obj.roomitems);
+                return;
+            }
+        }
+    </method>
+    
+    <method name="activateWhiteboard" args="obj">
+    	if ($debug) Debug.write("activateWhiteboard :: ",obj);
+    	for (var eg in this._bar.subviews) {
+    		
+    		if (this._bar.subviews[eg].objRef.whiteboardId == obj[1]) {
+    			
+    			this._bar.subviews[eg].activateSynced();
+    			return;
+    			
+    		}
+    		
+    	}
+    </method>
+    
+    <!--
+    	##########################################
+    	StarUp Loading Of Objects
+    	##########################################
+     -->
+    
+    <method name="loadInitObject">
+    	this.getRoomItemsBy.doCall();
+    </method>
+    
+	<netRemoteCallHib name="getRoomItemsBy" funcname="whiteboardservice.getRoomItemsBy"
+        remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+            	//The onResult-Handler will be called be the rtmpconnection
+            	if ($debug) Debug.write("############## getRoomItemsBy : ",value);
+            	parent.loadWhiteboards(value.whiteboardObjects);
+            ]]>
+        </handler>   
+    </netRemoteCallHib>   
+    
+    <method name="loadWhiteboards" args="whiteboardObjects">
+    	<![CDATA[
+    	   if ($debug) Debug.write("whiteboardObjects :: ",whiteboardObjects.length);
+    	   var mainArray = new Array();
+    	   for (var eg in whiteboardObjects) {
+    	   	   mainArray.push(whiteboardObjects[eg]);
+    	   }
+    	   mainArray.reverse();
+    	   
+    	   for (var eg=0;eg<mainArray.length;eg++) {
+    	   	  var whiteBoard = this.addNewItemSynced(mainArray[eg].whiteBoardId);
+    	   	  
+    	   	  whiteBoard._drawareaMask._drawarea.loadObjectList(mainArray[eg]);
+    	   }
+    	]]>
+    </method>
+      
+    
+    <whiteboardBarMenu name="_bar" height="20" y="21">
+    	<attribute name="whiteboardId" value="-1" type="number" />
+    	
+    	<handler name="onsubview" args="newSub">
+    		parent.addNewItemButton.updatePosition();
+    	</handler>
+    	<handler name="onwidth" args="newSub">
+            parent.addNewItemButton.updatePosition();
+        </handler>
+    </whiteboardBarMenu>
+    
+    <view name="addNewItemButton" y="24" 
+    	  visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToDraw) ? true : false )) }"
+    	  >
+    	
+    	<attribute name="whiteboardId" value="-1" type="number" />
+    	
+    	<method name="updatePosition">
+    		if (parent._bar.subviews.length != 0) {
+        		var borderItem = parent._bar.subviews[parent._bar.subviews.length-1];
+        		this.setAttribute("x",borderItem.x + borderItem.width + 2);
+    		} else {
+    			this.setAttribute("x",2);
+    		}
+    	</method>
+    	
+    	<handler name="onmouseover" args="refOb">
+    		this.bg.setAttribute("visibility","visible");
+    	</handler>
+    	
+    	<handler name="onmouseout" args="refOb">
+            this.bg.setAttribute("visibility","hidden");
+        </handler>
+        
+        <handler name="onclick" args="refOb">
+            parent.addNewItem();
+        </handler>
+        
+        <view name="bg" bgcolor="0xEEEEEE" opacity="0.5" 
+        	  width="18" height="18" visibility="hidden" />
+    	
+    	<view resource="add_whiteboard_rsc" y="0" x="0" />
+    	
+    	<labelTooltip labelid="1596" />
+    </view>
+    
+    <view width="${ parent.width }" height="1" y="41"
+    	  bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+    	<attribute name="whiteboardId" value="-1" type="number" />
+    </view>
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/helper/boundingBoxAll.lzx b/WebContent/src/modules/conference/whiteboard/helper/boundingBoxAll.lzx
new file mode 100644
index 0000000..b6d91a0
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/helper/boundingBoxAll.lzx
@@ -0,0 +1,519 @@
+<?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.
+  
+-->
+<library>
+    
+<include href="utils/states/resizestatemin.lzx"/>
+
+<!--
+    The order of views is important in this class
+    otherwise the scrollbar of the swfPresentation would be not visible or partly overlayed
+    
+    
+    this is the selection Box for all Whiteboard Objects
+ -->
+ 
+<class name="boundingBoxAllRotationMarger" extends="view" 
+	   width="24" height="24" resource="bounding_item_rsc">
+	
+	<attribute name="dragStarted" value="false" type="boolean"/>
+	
+	<handler name="onmouseover">
+        lz.Cursor.setCursorGlobal("arrow_rotate_panel_cursor");
+    </handler>
+    <handler name="onmouseout">
+        lz.Cursor.unlock();
+    </handler>
+    
+    <handler name="onx" args="x">
+    	this.doMoveDragPoint();
+    </handler>
+    <handler name="ony" args="y">
+        this.doMoveDragPoint();
+    </handler>
+    
+    <method name="doMoveDragPoint">
+    	if (!this.dragStarted) {
+    		return;
+    	}
+    	parent.doMoveDragPoint(this.x+12,this.y+12);
+    </method>
+    
+    <handler name="onmousedown">
+    	this.dragStarted = true;
+    	parent.doStartDragPoint();
+        this.dragger.apply();
+    </handler>
+    <handler name="onmouseup">
+    	this.dragStarted = false;
+        this.dragger.remove();
+        parent.endDrawClipArtDrag();
+        lz.Cursor.unlock();
+    </handler>
+    
+    <dragstate name="dragger" />  
+    
+</class> 
+    
+<class name="boundingBoxAll" extends="view" focusable="true">
+    
+<!-- 
+	<method name="removeIt">
+		canvas._drawarea.setAttribute('boundingIsActive',true);
+	</method>
+ -->	
+	<method name="removeIt">
+		//Debug.write("removeIt +**********",this.isinited);
+		this.whiteboardRef.setAttribute('boundingIsActive',false);
+		if (this.rs) this.rs.remove();
+		if (this.dragger) this.dragger.remove();
+		this.destroy();
+	</method>
+
+	<attribute name="ex" value="0" type="number" />
+	<attribute name="ey" value="0" type="number" />
+	<attribute name="ewidth" value="0" type="number" />
+	<attribute name="eheight" value="0" type="number" />
+	
+	<attribute name="innerInsetScrollbars" value="0" type="number"/>
+	
+	<attribute name="startdragX" value="0" type="number" />
+	<attribute name="startdragY" value="0" type="number" />
+	<attribute name="startdragWidth" value="0" type="number" />
+	<attribute name="startdragHeight" value="0" type="number" />
+	
+	<attribute name="objRef" value="null" />
+	<attribute name="whiteboardRef" value="null" />
+	<attribute name="doHandlerUpdates" value="false" type="boolean" />	
+    <attribute name="boundingDoUpdateOnInit" value="true" type="boolean" />	 
+    
+    <attribute name="canBeDragged" value="true" type="boolean" />
+    <attribute name="canBeResized" value="true" type="boolean" />
+    
+    <!--- Minimum width for the windowy, default: 60.
+          @keywords final -->
+    <attribute name="minwidth" value="2"/>
+
+    <!--- Minimum height for the window, default: 50.
+          @keywords final -->
+    <attribute name="minheight" value="2"/>    
+	
+	<method name="__LZRemoveItem" args="itemRef">
+		this.whiteboardRef.deleteItemByName(this.objRef.name);
+		//Debug.write("__LZRemoveItem");
+	</method>
+	
+	<handler name="oninit">
+		<![CDATA[
+		    if (!this.boundingDoUpdateOnInit) {
+		    	if ($debug) Debug.write("DESTROY the clickable view");
+		    	//this._innerDrag.destroy();
+		    }
+		    
+		    if (!this.canBeResized) {
+		    	this._gripperNoResize.setAttribute("visibility","visible");
+		    	this._gripperResize.setAttribute("visibility","hidden");
+		    }
+		
+			this.setAttribute('x',this.ex);
+			this.setAttribute('y',this.ey);
+			this.setAttribute('width',this.ewidth);
+			this.setAttribute('height',this.eheight);	
+			this.setStartValues();		
+			if ($debug) Debug.write("Update Property Panel Settings to Object Properties ",this.objRef.name);
+			
+			lz.Focus.setFocus(this, false); 
+			
+			if (this.objRef.typeOfObject == "text") {
+				this._editText.setAttribute("visibility","visible");
+			}
+			
+            //FIXME - Add Ellipse, Line and Free Draw Tool to it
+            if (this.objRef.name.indexOf('rectangle') >= 0){
+				if ($debug) Debug.write("this.objRef._innerRect ",this.objRef._innerRect);
+				
+				if ($debug) Debug.write("strokeStyle: ",this.objRef._innerRect.strokeStyle);
+				if (this.objRef._innerRect.strokeStyle == '#000000') {
+					if ($debug) Debug.write("strokeStyle EMPTY ");
+					this.whiteboardRef.currentrectanglestrokeDis = -1;
+				} else {
+					this.whiteboardRef.currentrectanglestroke = this.objRef._innerRect.strokeStyle;
+					this.whiteboardRef.currentrectanglestrokeDis = 1;
+				}
+				
+				if ($debug) Debug.write("fillStyle: ",this.objRef._innerRect.fillStyle);
+				if (this.objRef._innerRect.fillStyle == '#000000') {
+					if ($debug) Debug.write("fillStyle EMPTY ");
+					this.whiteboardRef.currentrectanglestrokeFillDis = -1;
+				} else {
+					this.whiteboardRef.currentrectanglestrokeFill = this.objRef._innerRect.fillStyle;
+					this.whiteboardRef.currentrectanglestrokeFillDis = 1;
+				}
+				
+				if ($debug) Debug.write("lineWidth: ",this.objRef._innerRect.lineWidth);
+				this.whiteboardRef.currentrectangleineWidth = this.objRef._innerRect.lineWidth;
+				
+			} else if (this.objRef.name.indexOf('swf') >= 0) {
+                this.setAttribute("innerInsetScrollbars",16);
+            } else if (this.objRef.name.indexOf('clipart') >= 0) {
+            	this.canBeResized = false;
+            	this._gripperNoResize.setAttribute("visibility","visible");
+		    	this._gripperResize.setAttribute("visibility","hidden");
+            	
+            	new lz.boundingBoxAllRotationMarger(this,{
+                    	       x:this.objRef.clipart.clipArtEndx-12,
+                    	       y:this.objRef.clipart.clipArtEndy-12
+                        	});
+            	
+            }
+            
+            
+            this.whiteboardRef.parent.parent._propertyPanel.loadPanelByBoundingBox(this.whiteboardRef,this.objRef);
+            
+			this.doUpdateAction();
+		]]>
+	</handler>
+	
+	<method name="doStartDragPoint">
+		this.whiteboardRef.setStartPoint(this.objRef.clipart.x+this.x,this.objRef.clipart.y+this.y);
+	</method>
+	
+	<method name="doMoveDragPoint" args="x,y">
+		this.whiteboardRef.trackDrawClipArtDraw(this.x+x,this.y+y,this.objRef.clipart);
+	</method>
+	
+	<method name="endDrawClipArtDrag">
+        this.whiteboardRef.endDrawClipArtDrag(this.objRef);
+        this.whiteboardRef.reselectShowObjectBounds(this.objRef.name);
+    </method>
+    
+	<!--
+	   Do update the Selection-Box, in case another Moderator or User has moved the Object
+	   while you have it in focus
+	 -->
+    <method name="sendRemoteUpdate" args="obj">
+        <![CDATA[
+           
+           if (this.objRef.name == obj.name) {
+           	   
+           	    this.resetValues();
+           	
+           }
+        
+        ]]>
+    </method>
+    
+	
+	<method name="resetValues">
+		this.ex = this.objRef.x;
+		this.ey = this.objRef.y;
+		this.ewidth = this.objRef.width;
+		this.eheight = this.objRef.height;			
+		this.setAttribute('x',this.objRef.x);
+		this.setAttribute('y',this.objRef.y);
+		this.setAttribute('width',this.objRef.width);
+		this.setAttribute('height',this.objRef.height);	
+		this.setStartValues();	
+	</method>
+
+    <method name="doUpdateAction" >
+    	this.setAttribute('doHandlerUpdates',true);
+    	if (this.boundingDoUpdateOnInit) {
+    	    this._innerDrag.onmousedown.sendEvent();
+    	}
+    </method>
+    
+    <handler name="onheight">
+    	if(this.doHandlerUpdates){
+    		this.objRef.setAttribute('height',this.height);
+    	}
+    </handler>
+    
+    <handler name="onwidth">
+    	if(this.doHandlerUpdates){
+    		this.objRef.setAttribute('width',this.width);
+    	}
+    </handler>
+    
+    <handler name="onx">
+        if(this.doHandlerUpdates){
+            
+            var tx = this.getAttributeRelative('x',objRef);
+        
+            if(this.objRef.parent.isSnapToGrid){   
+                tx = Math.round(tx/this.objRef.parent.gridWidth)*this.objRef.parent.gridWidth;
+                this.setAttribute("x",Math.round(this.x/this.objRef.parent.gridWidth)*this.objRef.parent.gridWidth)
+            }
+            
+            this.objRef.setAttribute('x',tx);
+        }
+    </handler>
+    
+    <handler name="ony">
+        if(this.doHandlerUpdates){
+            
+            var ty = this.getAttributeRelative('y',objRef);
+        
+            if(this.objRef.parent.isSnapToGrid){   
+                ty = Math.round(ty/this.objRef.parent.gridWidth)*this.objRef.parent.gridWidth;
+                this.setAttribute("y",Math.round(this.y/this.objRef.parent.gridWidth)*this.objRef.parent.gridWidth)
+            }
+            
+            this.objRef.setAttribute('y',ty);
+        }
+    </handler>
+    
+    <handler name="onkeydown" args="key">
+        if ($debug) Debug.write("onkeydown ",key);
+
+        //this.objRef.parent.UpdateByObject(this.objRef);
+
+        if (key == 46) {
+        	this.__LZRemoveItem(this.objRef);
+        } else if (key == 40) {
+        	var shiftPressed = lz.Keys.isKeyDown("shift"); 
+        	if ($debug) Debug.write("shiftPressed ",shiftPressed);
+        	this.doHandlerUpdates = true;
+        	this.setAttribute("y",this.y+(shiftPressed ? 20 : 2));
+        	this.doHandlerUpdates = false;
+        	this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+        } else if (key == 38) {
+        	var shiftPressed = lz.Keys.isKeyDown("shift"); 
+        	this.doHandlerUpdates = true;
+        	this.setAttribute("y",this.y-(shiftPressed ? 20 : 2));
+        	this.doHandlerUpdates = false;
+        	this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+        } else if (key == 39) {
+        	var shiftPressed = lz.Keys.isKeyDown("shift"); 
+        	this.doHandlerUpdates = true;
+        	this.setAttribute("x",this.x+(shiftPressed ? 20 : 2));
+        	this.doHandlerUpdates = false;
+        	this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+        } else if (key == 37) {
+        	var shiftPressed = lz.Keys.isKeyDown("shift"); 
+        	this.doHandlerUpdates = true;
+        	this.setAttribute("x",this.x-(shiftPressed ? 20 : 2));
+        	this.doHandlerUpdates = false;
+        	this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+        }
+    </handler>
+	
+	<method name="setStartValues">
+		this.startdragX = this.x;
+		this.startdragY = this.y;
+		this.startdragWidth = this.width;
+		this.startdragHeight = this.height;			
+	</method>
+
+    <method name="_applyResizestateFromThis">
+    	lz.Focus.setFocus(this, true); 
+    	if ($debug) Debug.write("Apply resize State");
+    	if (!this.canBeResized) {
+            return;
+        }
+		this.setStartValues();		
+		this.rs.apply()
+	</method>
+    
+    <method name="_removeResizestateFromThis">
+		<![CDATA[
+		if (!this.canBeResized) {
+            return;
+        }
+    	this.rs.remove();
+		
+		if (this.startdragX != this.x || this.startdragY != this.y || this.startdragWidth != this.width || this.startdragHeight != this.height){
+			//Debug.write("value changed 1");
+			this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+		}
+		if (parent.onBoundingBox) parent.onBoundingBox.sendEvent(this);
+			
+		]]>
+    </method>
+	
+	<method name="_applyDragstateFromThis">
+		lz.Focus.setFocus(this, true); 
+		if (!this.canBeDragged) {
+			return;
+		}
+		this.setStartValues();
+		this.dragger.apply()
+	</method>	
+    
+    <method name="_removeDragstateFromThis">
+		<![CDATA[
+		if (!this.canBeDragged) {
+            return;
+        }
+    	this.dragger.remove();
+		
+    	if (this.startdragX != this.x || this.startdragY != this.y || this.startdragWidth != this.width || this.startdragHeight != this.height){
+			//Debug.write("value changed 2");
+			this.objRef.parent.UpdateByObject(this.objRef);
+			this.setStartValues();
+		}
+		if (parent.onBoundingBox) parent.onBoundingBox.sendEvent(this);
+		
+		]]>			
+    </method>
+
+    <method name="doSetInnerObjectsBounds" args="w,h">
+        this._inner._inner.setAttribute('width',w);
+        this._inner._inner.setAttribute('height',h);
+    </method>
+    
+    <method name="applyScrollbarToObject">
+        <![CDATA[
+            //if ($debug) Debug.write("-- applyScrollbarToObject --",this.objRef.typeOfObject);
+	        if (this.objRef.typeOfObject == 'swf'){
+	            if (canvas.ismoderator || canvas.isAllowedToDraw) {
+                    //if ($debug) Debug.write("-- setCurrentMouseWheelObject --",this.objRef._scrollstv);
+                    //setCurrentMouseWheelObject(this.objRef._scrollstv);
+                }
+	        }
+        ]]>
+    </method>
+    
+    <method name="removeScrollbarToObject">
+        if (this.objRef.typeOfObject == 'swf'){
+            //Well disable, you can always disable without any problem
+            //and in case you do exactly switch the moderation now
+            //it will remove it in any case
+            disableCurrentMouseWheelObject();
+        }
+    </method>
+        
+    <resizestatemin name="rs"> 	
+    	<text x="2" y="2" text="${ 'w: '+parent.width+' h: '+parent.height }" bgcolor="white"/>
+    </resizestatemin>
+    
+   	<dragstate name="dragger">    
+		<text x="2" y="2" text="${ 'x: '+parent.getAttributeRelative('x',parent.objRef)+' y: '+parent.getAttributeRelative('y',parent.objRef) }" bgcolor="white"/>   	
+   	</dragstate>
+	
+	<view name="_innerDrag" width="${ parent.width-parent.innerInsetScrollbars }" 
+		  height="${ parent.height-parent.innerInsetScrollbars }" 
+		  onmouseover="parent.applyScrollbarToObject()" 
+          onmouseout="parent.removeScrollbarToObject()"
+		  onmousedown="parent._applyDragstateFromThis()" 
+    	  onmouseup="parent._removeDragstateFromThis()">
+    	
+    	<contextmenu>
+			<contextmenuitem caption="$once{ canvas.getLabelName(80) }" 
+							 onselect="parent.parent.parent.__LZRemoveItem()" />
+        </contextmenu>
+		 
+		<handler name="ondblclick">
+
+			//Debug.write("ondblclick: ",this.parent.objRef.typeOfObject);
+			if (this.parent.objRef.typeOfObject == "text") {
+				var x = this.parent.objRef.x; //this.parent.objRef.getAttributeRelative('x', canvas);
+				var y = this.parent.objRef.y; //this.parent.objRef.getAttributeRelative('y', canvas);
+				//Debug.write("x,y ",x,y);
+				this.parent.whiteboardRef
+						.editTextByValues(this.parent.objRef,
+								this.parent.objRef.name,
+								this.parent.objRef.text, x, y,
+								this.parent.objRef.width,
+								this.parent.objRef.height);
+			}
+		</handler>	
+		
+		<handler name="onmouseover">
+			if (this.parent.objRef.typeOfObject != "swf") {
+	           lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
+			}
+		</handler>
+		
+		<handler name="onmouseout">
+			lz.Cursor.unlock();
+		</handler>
+		
+		
+	</view>
+	
+	<image src="$once{ canvas.getThemeImage('bounding_box_textedit_item_rsc') }" y="2"  width="16" height="16" stretches="both"
+				name="_editText" visibility="hidden" x="${ parent.width-this.width-parent.innerInsetScrollbars-18 }" >
+		<handler name="onclick">
+			this.parent.whiteboardRef
+						.editTextByValues(this.parent.objRef,
+								this.parent.objRef.name,
+								this.parent.objRef.text, 
+								this.parent.x, 
+								this.parent.y,
+								this.parent.objRef.width,
+								this.parent.objRef.height);
+		</handler>
+		<handler name="onmouseover">
+	        lz.Cursor.restoreCursor();
+	        lz.Cursor.showHandCursor(true);
+	    </handler>
+	    <handler name="onmouseout">
+	    	lz.Cursor.showHandCursor(false);
+	        lz.Cursor.unlock();
+	    </handler>
+    
+		<labelTooltip labelid="1463" />
+	</image>	
+	
+	<image src="$once{ canvas.getThemeImage('bounding_box_delete_item_rsc') }" y="2"  width="16" height="16"
+					x="${ parent.width-this.width-parent.innerInsetScrollbars-2 }" stretches="both">
+		<handler name="onclick">
+			//Debug.write("this.parent.objRef.name: ",this.parent.objRef.name);
+			//this.parent.whiteboardRef.deleteItemByName(this.parent.objRef.name);
+			parent.__LZRemoveItem(this.parent.objRef);
+		</handler>
+		<handler name="onmouseover">
+	        lz.Cursor.restoreCursor();
+	        lz.Cursor.showHandCursor(true);
+	    </handler>
+	    <handler name="onmouseout">
+	    	lz.Cursor.showHandCursor(false);
+	        lz.Cursor.unlock();
+	    </handler>
+    
+		<labelTooltip labelid="80" />
+	</image>	    
+    
+    <view resource="_boundingBoxPointerTL" x="0" y="0" />
+    <view resource="_boundingBoxPointerTR" x="${ parent.width-this.width }" y="0" />
+    <view name="_gripperResize" visibility="visible"
+        resource="_boundingBoxPointerUR" x="${ parent.width-this.width }" y="${ parent.height-this.height }" 
+        onmousedown="parent._applyResizestateFromThis()" onmouseup="parent._removeResizestateFromThis()" >
+    	<handler name="onmouseover">
+	        lz.Cursor.setCursorGlobal("arrow_resize_panel_cursor");
+	    </handler>
+	    <handler name="onmouseout">
+	        lz.Cursor.unlock();
+	    </handler>
+        <labelTooltip labelid="252" />
+    </view>
+    <view name="_gripperNoResize" visibility="hidden" 
+        resource="_boundingBoxPointerURNoGripper" x="${ parent.width-this.width }" y="${ parent.height-this.height }" />
+    <view resource="_boundingBoxPointerUL" x="0" y="${ parent.height-this.height }" />
+
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/helper/library.lzx b/WebContent/src/modules/conference/whiteboard/helper/library.lzx
new file mode 100644
index 0000000..04b6215
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/helper/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- APL author sebawagner -->
+	<resource name="bounding_item_rsc" src="resources/bounding_item.png" />
+
+    <include href="boundingBoxAll.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.fla b/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.fla
new file mode 100644
index 0000000..23ecab3
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.png b/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.png
new file mode 100644
index 0000000..638f9d4
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/helper/resources/bounding_item.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/library.lzx b/WebContent/src/modules/conference/whiteboard/library.lzx
new file mode 100644
index 0000000..95beb27
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/library.lzx
@@ -0,0 +1,56 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- APL author sebawagner -->
+	<resource name="_boundingBoxPointerTR" src="resources/boundingBoxTR.png" />
+	<!-- APL author sebawagner -->
+	<resource name="_boundingBoxPointerTL" src="resources/boundingBoxTL.png" />
+	<!-- APL author sebawagner -->
+	<resource name="_boundingBoxPointerUR" src="resources/boundingBoxUR.png" />
+	<!-- APL author sebawagner -->
+	<resource name="_boundingBoxPointerURNoGripper" src="resources/boundingBoxULNoGripper.png" />
+	<!-- APL author sebawagner -->
+	<resource name="_boundingBoxPointerUL" src="resources/boundingBoxUL.png" />
+	<!-- APL author sebawagner -->
+	<resource name="pointer_whiteboard_rsc" src="resources/pointer.swf" />
+	<!-- FamFam Icon Set -->
+	<resource name="bold" src="resources/text_bold.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="italic" src="resources/text_italic.png" />
+	<!-- FamFam Icon Set -->
+	<resource name="add_whiteboard_rsc" src="resources/add.png" />
+	
+	<include href="incubator/lzcombobox.lzx"/> 
+	<include href="base/" />
+	<include href="windows/" />
+	<include href="helper/" />
+	
+	<include href="panels/" />
+	
+	<include href="basePropertyPanelWhiteboard.lzx" />
+    <include href="fixedFileExplorerWhiteBoard.lzx" />
+    <include href="fixedFileExplorerWhiteboardPanel.lzx" />
+    <include href="whiteboardMiniButton.lzx" />
+    <include href="whiteboardBarMenu.lzx" />
+
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/library.lzx b/WebContent/src/modules/conference/whiteboard/panels/library.lzx
new file mode 100644
index 0000000..7c30379
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="maintoolspanel/" />
+	<include href="propertypanel" />
+	
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/library.lzx b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/library.lzx
new file mode 100644
index 0000000..b18b8fa
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/library.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+	
+	<!--  APL author sebawagner -->
+    <resource name="sub_menu_tools_panel_rsc" src="resources/sub_menu.png" />
+    <!--  APL author sebawagner -->
+    <resource name="sub_menu_top_grip_colored_rsc" src="resources/sub_menu_top_grip.swf" />	
+    
+    <!--
+        How to create image map:
+        $imageMagick/montage *.png -tile 20x -geometry 22x22+2+2 all_images.jpg
+     -->
+
+	<include href="mainToolsPanelItem.lzx" />  
+	<include href="mainToolsPanel.lzx" />  
+	<include href="subMenuIconToolsToUpload.lzx" />
+	
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
new file mode 100644
index 0000000..8188076
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanel.lzx
@@ -0,0 +1,253 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="verticalMenuIconBar" extends="view" y="22" x="4" clickable="true">
+	<simplelayout axis="y" spacing="2" />
+	<mainToolsPanelItem name="plain" modi="plainConfirm" labelid="69" resourceItem="plain" setSelectionToItem="false" />
+	<mainToolsPanelItem name="plainSlide" modi="plainSlide" labelid="1005" resourceItem="plainSlides" setSelectionToItem="false" />
+	
+	<!--
+	<mainToolsPanelItem name="drag" modi="drag" labelid="1113" resourceItem="arrow_draw_panel_tool_cursor" />
+	 -->
+
+	<mainToolsPanelItem name="saveobj" modi="saveobj" labelid="197" resourceItem="saveobj" setSelectionToItem="false" />
+	
+	<mainToolsHPanelSeperator>
+        <attribute name="modi" value="" type="string"/>
+    </mainToolsHPanelSeperator>
+	<redoUndoToolsPanelItem name="revert" doredo="false" labelid="70" resourceItem="revert" />
+	<mainToolsHPanelSeperator>
+		<attribute name="modi" value="" type="string"/>
+	</mainToolsHPanelSeperator>
+	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true" 
+						resourceItem="menupointer_rsc" />
+    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" 
+                        labelid="557" x_insetResource="1" y_insetResource="1"
+                        resourceItem="pointer_whiteboard_menu_rsc" />
+	<mainToolsPanelItem name="letter" modi="letter" labelid="73" resourceItem="letter" />
+	<mainToolsPanelItem name="paint" modi="paint" labelid="74" resourceItem="paint" />
+	<mainToolsPanelItem name="line" modi="line" labelid="75" resourceItem="line_rsc" />
+	<mainToolsPanelItem name="uline" modi="uline" labelid="76" resourceItem="uline_rsc" />
+	<mainToolsPanelItem name="rectangle" modi="rectangle" labelid="77" resourceItem="rectangle" />
+	<mainToolsPanelItem name="ellipse" modi="ellipse" labelid="78" resourceItem="ellipse" />
+	<mainToolsPanelItem name="drawarrow" modi="drawarrow" labelid="79" resourceItem="drawarrowicon_rsc" />
+
+    <mainToolsPanelItem name="clipart" modi="clipart" labelid="1323" >
+        
+        <handler name="oninit">
+            this._bgIcon.setAttribute("visibility","hidden");
+            var imageurl = canvas.getUrl() + 'public/cliparts/thumb/'
+                                           + canvas._drawarea.currentClipArtRessourceName;
+            
+            this._rscIcon.setSource(imageurl);
+        </handler>
+        
+        <!--
+        <view x="$once{ parent.x_insetResource }" y="$once{ parent.x_insetResource }" 
+              height="18" width="18" stretches="both" name="_bgIconIcon" />      
+         -->
+              
+        <view resource="sub_menu_tools_panel_rsc"
+              x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
+            <handler name="onclick">
+            	<![CDATA[
+                if ($debug) Debug.write("Show Sub Menu");
+                new lz.subMenuIconToolsToUpload(canvas,{
+                                x:500,
+                                y:82,
+                                refToolbar:parent
+                            });
+                ]]>
+            </handler>
+            <labelTooltip labelid="1335" />
+        </view>
+        
+    </mainToolsPanelItem>
+
+</class>
+
+<class name="horizontalMenuIconBar" extends="view" y="22" x="4" clickable="true">
+	<simplelayout axis="x" spacing="2" />
+	<mainToolsPanelItem name="plain" modi="plainConfirm" labelid="69" resourceItem="plain" setSelectionToItem="false" />
+	<mainToolsPanelItem name="plainSlide" modi="plainSlide" labelid="1005" resourceItem="plainSlides" setSelectionToItem="false" />
+	<!--
+	<mainToolsPanelItem name="drag" modi="drag" labelid="1113" resourceItem="arrow_draw_panel_tool_cursor" />
+     -->
+	<mainToolsPanelItem name="saveobj" modi="saveobj" labelid="197" resourceItem="saveobj" setSelectionToItem="false" />
+	
+	<mainToolsVPanelSeperator>
+        <attribute name="modi" value="" type="string"/>
+    </mainToolsVPanelSeperator>
+	<redoUndoToolsPanelItem name="revert" doredo="false" labelid="70" resourceItem="revert" />
+	<mainToolsVPanelSeperator>
+        <attribute name="modi" value="" type="string"/>
+    </mainToolsVPanelSeperator>	
+	<mainToolsPanelItem name="hand" modi="hand" labelid="72" _isselected="true" 
+						resourceItem="menupointer_rsc" />
+    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" 
+                        labelid="557" resourceItem="pointer_whiteboard_menu_rsc" />
+	<mainToolsPanelItem name="letter" modi="letter" labelid="73" resourceItem="letter" />
+	<mainToolsPanelItem name="paint" modi="paint" labelid="74" resourceItem="paint" />
+	<mainToolsPanelItem name="line" modi="line" labelid="75" resourceItem="line_rsc" />
+	<mainToolsPanelItem name="uline" modi="uline" labelid="76" resourceItem="uline_rsc" />
+	<mainToolsPanelItem name="rectangle" modi="rectangle" labelid="77" resourceItem="rectangle" />
+	<mainToolsPanelItem name="ellipse" modi="ellipse" labelid="78" resourceItem="ellipse" />
+	<mainToolsPanelItem name="drawarrow" modi="drawarrow" labelid="79" resourceItem="drawarrowicon_rsc" />
+	<mainToolsPanelItem name="clipart" modi="clipart" labelid="1323" >
+        
+        <handler name="oninit">
+            if (this["_bgIcon"]) {
+        	   this._bgIcon.setAttribute("visibility","hidden");
+        	}
+            var imageurl = canvas.getUrl() + 'public/cliparts/thumb/'
+                                           + canvas._drawarea.currentClipArtRessourceName;
+            
+            this._rscIcon.setSource(imageurl);
+        </handler>
+        
+        <view x="$once{ parent.x_insetResource }" y="$once{ parent.x_insetResource }" 
+              height="18" width="18" stretches="both" name="_bgIconIcon" />      
+        
+        <view resource="sub_menu_tools_panel_rsc"
+              x="$once{ parent.width - 10 }" y="$once{ parent.height - 10 }">
+            <handler name="onclick">
+                if ($debug) Debug.write("Show Sub Menu");
+                new lz.subMenuIconToolsToUpload(canvas,{
+                                x:500,
+                                y:82,
+                                refToolbar:parent
+                            });
+            </handler>
+            <labelTooltip labelid="1335" />
+        </view>
+        
+    </mainToolsPanelItem>
+</class>
+
+
+<class name="mainToolsTopPanel" extends="baseTopPanel" 
+	   width="420" height="33" title="" docking="true"
+	   activationClassBounding="mainToolsLeftPanel"
+	   activationVClassBounding="mainToolsTopPanel"
+	   leftClassPanel="mainToolsLeftPanel"
+	   topClassPanel="mainToolsTopPanel"
+	   bottomClassPanel="mainToolsTopPanel"
+	   rightClassPanel="mainToolsLeftPanel"
+	   verticalClassActive="true"
+	   hWidth="33" hHeight="420">
+	
+    <method name="updateToolSelection" args="modi">
+    	<![CDATA[
+            if ($debug) Debug.write("-updateToolSelection-  ",modi);
+            
+            for (var i=0;i<this._tools.subviews.length;i++){
+                
+            	if (this._tools.subviews[i].modi == modi) {
+            		
+            		this._tools.subviews[i].setSelectionWithoutEvent();
+            		return;
+            	}
+            	
+            }
+            
+        ]]>
+    </method>
+    
+	<horizontalMenuIconBar name="_tools" x="20" y="4" />
+</class>	
+	
+<class name="mainToolsLeftPanel" extends="baseLeftPanel" 
+	   width="33" height="420" title="" docking="true"
+	   activationClassBounding="mainToolsLeftPanel"
+	   activationVClassBounding="mainToolsTopPanel"
+	   topClassPanel="mainToolsTopPanel"
+	   bottomClassPanel="mainToolsTopPanel"
+	   leftClassPanel="mainToolsLeftPanel"
+	   rightClassPanel="mainToolsLeftPanel"
+	   verticalClassActive="false"
+	   vWidth="420" vHeight="33">
+	
+    <method name="updateToolSelection" args="modi">
+        <![CDATA[
+            if ($debug) Debug.write("-updateToolSelection-  ",modi);
+            
+            for (var i=0;i<this._tools.subviews.length;i++){
+                
+                if (this._tools.subviews[i].modi == modi) {
+                    
+                    this._tools.subviews[i].setSelectionWithoutEvent();
+                    return;
+                }
+                
+            }
+            
+        ]]>
+    </method>	
+	
+	<verticalMenuIconBar name="_tools" x="3" y="20" />
+</class>
+
+<!-- ################
+    Non Moderator Tools
+-->
+
+<class name="verticalMenuIconBarPointer" extends="view" y="22" x="4" clickable="true">
+    <simplelayout axis="y" spacing="2" />
+    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557" 
+                        resourceItem="pointer_whiteboard_menu_rsc" />
+</class>
+
+<class name="horizontalMenuIconBarPointer" extends="view" y="22" x="4" clickable="true">
+    <simplelayout axis="x" spacing="2" />
+    <mainToolsPanelItem name="pointerWhiteboard" modi="pointerWhiteboard" labelid="557" 
+                        resourceItem="pointer_whiteboard_menu_rsc" />
+</class>
+
+<class name="mainToolsTopPanelPointer" extends="baseTopPanel" 
+       width="52" height="32" title="" docking="true"
+       activationClassBounding="mainToolsLeftPanelPointer"
+       activationVClassBounding="mainToolsTopPanelPointer"
+       leftClassPanel="mainToolsLeftPanelPointer"
+       topClassPanel="mainToolsTopPanelPointer"
+       bottomClassPanel="mainToolsTopPanelPointer"
+       rightClassPanel="mainToolsLeftPanelPointer"
+       verticalClassActive="true"
+       hWidth="32" hHeight="52">
+    
+    <horizontalMenuIconBarPointer x="20" y="4" />
+</class>    
+
+<class name="mainToolsLeftPanelPointer" extends="baseLeftPanel" 
+       width="32" height="52" title="" docking="true"
+       activationClassBounding="mainToolsLeftPanelPointer"
+       activationVClassBounding="mainToolsTopPanelPointer"
+       topClassPanel="mainToolsTopPanelPointer"
+       bottomClassPanel="mainToolsTopPanelPointer"
+       leftClassPanel="mainToolsLeftPanelPointer"
+       rightClassPanel="mainToolsLeftPanelPointer"
+       verticalClassActive="false"
+       vWidth="52" vHeight="32">
+    
+    <verticalMenuIconBarPointer x="2" y="20" />
+</class>	
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
new file mode 100644
index 0000000..565c710
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/mainToolsPanelItem.lzx
@@ -0,0 +1,65 @@
+<?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.
+  
+-->
+<library>
+ 
+<class name="mainToolsPanelItem" extends="blueButton" 
+	   width="26" height="26">
+	
+	<attribute name="modi" value="" type="string" />
+	<attribute name="labelid" value="0" type="number" />
+	
+	<attribute name="setSelectionToItem" value="true" type="boolean" />
+	<attribute name="_isselected" value="false" type="boolean" />
+	
+	<handler name="oninit">
+		if (this._isselected) parent.parent.parent.setSelection(this);
+	</handler>
+	
+	<method name="setSelectionWithoutEvent">
+        parent.parent.parent.setSelectionWithoutEvent(this);
+    </method>
+	
+	<handler name="onmouseup">
+		//if ($debug) Debug.write("parent.parent.parent",parent.parent.parent);
+		parent.parent.parent.setSelection(this);
+	</handler>
+	<labelTooltip name="__labeltooltip" labelid="$once{ parent.labelid }" />
+</class>
+
+<class name="redoUndoToolsPanelItem" extends="mainToolsPanelItem" setSelectionToItem="false">
+	<attribute name="doredo" value="true" type="boolean" />
+	<handler name="onclick">	  
+          if(this.doredo){
+            this.parent.parent.parent.parent._drawareaMask._drawarea.doredo();
+          } else {
+            this.parent.parent.parent.parent._drawareaMask._drawarea.undoredo();
+          }
+        </handler>
+</class>
+
+<class name="mainToolsHPanelSeperator" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
+	   width="26" height="1" ></class>
+	   
+<class name="mainToolsVPanelSeperator" extends="view" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }"
+	   width="1" height="26" ></class>
+
+    
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.fla b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.fla
new file mode 100644
index 0000000..cb6f4f5
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.png b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.png
new file mode 100644
index 0000000..e189bc9
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.fla b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.fla
new file mode 100644
index 0000000..64344b2
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.swf b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.swf
new file mode 100644
index 0000000..01de566
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/resources/sub_menu_top_grip.swf
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/subMenuIconToolsToUpload.lzx b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/subMenuIconToolsToUpload.lzx
new file mode 100644
index 0000000..e154f51
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/maintoolspanel/subMenuIconToolsToUpload.lzx
@@ -0,0 +1,354 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="miniIconSmybolExtraIcons" extends="view" width="22" height="22">
+	
+	<attribute name="modi" value="" type="string"/>
+	
+	<handler name="onclick">
+		parent.sendNewIcon(this,"");
+	</handler>
+	
+	<handler name="ondblclick">
+		parent.sendNewIcon(this,"");
+		parent.chooseSelect();
+	</handler>
+	
+	<labelTooltip text="$once{ parent.modi }" />
+	
+</class>
+
+<class name="miniIconSmybolExtraIconsImageMap" extends="view" >
+    
+    <handler name="onclick">
+        parent.parent.sendImageMapNewIcon(this);
+    </handler>
+    
+    <handler name="ondblclick">
+        parent.parent.sendImageMapNewIcon(this);
+        parent.chooseSelect();
+    </handler>
+    
+    <handler name="onmouseover" args="tObj">
+    	parent.onmouseover.sendEvent(tObj);
+    </handler>
+    
+    <handler name="onmouseout" args="tObj">
+    	parent.onmouseout.sendEvent(tObj);
+	</handler>
+    
+</class>
+
+<class name="miniIconSmybolExtraIconsSeparator" extends="view" width="$once{ parent.width }" 
+	   height="22">
+	
+	<attribute name="title" type="string" value="title" />
+	
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<method name="toggleopen">
+		this.setAttribute("isopen",!this.isopen);
+	</method>
+	
+	<handler name="onclick">
+		this.toggleopen();
+	</handler>
+	
+	<view width="${ this.parent.parent.width }" y="0" stretches="width"
+                resource="presenter_thumb_rsc" >
+        <handler name="oninit">
+            <![CDATA[
+                this.setTintRGB(canvas.getThemeColor('basebgcolorizer'),90);
+            ]]>
+        </handler>
+        <method name="setTintRGB" args="color, brightness">
+            <![CDATA[
+            if (color != "" && color != null){
+                
+                if (brightness == null) { brightness = 0; }
+                var rgb = color;
+                var red=(rgb >> 16) & 0xFF;
+                var green=(rgb >> 8) & 0xFF;
+                var blue=rgb & 0xFF;
+    
+                this.setColorTransform( { ra : red, ga : green, ba : blue,
+                                            rb : 0, gb : 0, bb : 0 } );
+                                            
+                if($debug) Debug.write("explorerBox/setTintRGB",this);
+                if($debug) Debug.write("explorerBox/setTintRGB", { ra : red, ga : green, ba : blue, rb : 0, gb : 0, bb : 0 } );
+            }
+            ]]>
+        </method>            
+    </view>	
+    
+    <view visible="${ !this.parent.isopen }" x="2" y="2" resource="conferenceBox_button_min_small_rsc" />
+    <view visible="${ this.parent.isopen }" x="2" y="2" resource="conferenceBox_button_max_small_rsc" />
+
+    <text fontsize="11" height="17" x="16" y="1" text="${ this.parent.title }" 
+            fgcolor="0xFFFFFF" resize="true" />
+            
+</class>
+
+<class name="miniIconSmybolExtraIconsContainer" extends="text" width="$once{ parent.width }">
+	
+	<attribute name="fName" value="" type="string"/>
+	<attribute name="folderName" value="" type="string"/>
+	<attribute name="iconList" value="null"/>
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<method name="sendNewIcon" args="tObj">
+        parent.sendNewIcon(tObj,this.folderName);
+    </method>
+    
+    <method name="calcImageMapNewIcon">
+    	var tX = Math.floor(this._content.getMouse('x')/26);
+    	var tY = Math.floor(this._content.getMouse('y')/26);
+    	
+    	var tNumber = tX + (tY * 20);
+    	
+    	if (tNumber > this.iconList.length) {
+    		return "";
+    	}
+    	
+    	return this.iconList[tNumber];
+    </method>
+    
+    <method name="sendImageMapNewIcon">
+        var tObj = new Object();
+        tObj["modi"] = this.calcImageMapNewIcon();
+        if (tObj["modi"] == "") {
+        	return;
+        }
+        this._content.clearToolTipReference();
+        parent.sendNewIcon(tObj,this.folderName);
+    </method>
+    
+    <method name="chooseSelect">
+    	this._content.clearToolTipReference();
+        parent.chooseSelect();
+    </method>
+
+	
+	<miniIconSmybolExtraIconsSeparator title="$once{ parent.fName }" isopen="$once{ parent.isopen }">
+		<handler name="onisopen" args="o">
+			if (o) {
+				parent._content.setAttribute("visibility","visible");
+			} else {
+				parent._content.setAttribute("visibility","hidden");
+			}
+		</handler>
+	</miniIconSmybolExtraIconsSeparator>
+	
+	<view name="_content" y="22" width="$once{ parent.width }">
+		
+		<attribute name="calcItem" value="false" type="boolean" />
+		
+		<attribute name="toolTipReference" value="null" />
+		
+		<method name="clearToolTipReference">
+			if (this.toolTipReference != null) {
+				this.toolTipReference.destroy();
+				this.toolTipReference = null;
+			}
+		</method>
+		
+		<handler name="onmouseover">
+			this.stillDownDelegate = new LzDelegate( this, "stillDownEventGenerator" );
+			this.calcItem = true;
+			this.toolTipReference = new lz.toolTipCustomPic(canvas);
+			lz.Timer.addTimer( this.stillDownDelegate, 100 );
+		</handler>
+		
+		<method name="stillDownEventGenerator" args="ignore" >
+			if (!this.calcItem) {
+				return;
+			}
+			var tString = parent.calcImageMapNewIcon();
+			this.toolTipReference.setAttribute("x", this.getAttributeRelative("x",canvas)+this.getMouse("x")+20);
+			this.toolTipReference.setAttribute("y", this.getAttributeRelative("y",canvas)+this.getMouse("y")+20);
+			this.toolTipReference.setAttribute("text", tString);
+			lz.Timer.removeTimer( this.stillDownDelegate );
+			lz.Timer.addTimer( this.stillDownDelegate, 100 );
+		</method>
+		
+		<handler name="onmouseout">
+			this.clearToolTipReference();
+			lz.Timer.removeTimer( this.stillDownDelegate );
+            this.calcItem = false;
+        </handler>
+		
+		<method name="sendNewIcon" args="tObj">
+            parent.sendNewIcon(tObj);
+        </method>
+        
+        <method name="chooseSelect">
+            parent.chooseSelect();
+        </method>
+
+	</view>
+	
+</class>
+
+<class name="toolTipCustomPic" extends="text" bgcolor="0xFFFFFF">
+	
+</class>
+	
+	
+<class name="subMenuIconToolsToUpload" extends="guiPresenter" labelid="1335" 
+    minimizable="false" maximizable="false" fullToolBar="true" 
+    resizeable="false" width="340" height="280" >
+	
+	<attribute name="currentSelected" value="null" />
+	<attribute name="refToolbar" value="null" />
+	
+	<handler name="oninit">
+		lz.ModeManager.makeModal(this);
+	</handler>
+	
+    <handler name="onclose">
+    	lz.ModeManager.release(this);
+    </handler>
+    
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+           if ( eventStr == "onmousedown"  ){
+               if ( view != null ) {
+                  if ( !view.childOf(this) ) {
+                       this.close();
+                  }
+               } else {
+                   this.close();
+               }
+           }
+           if (view && view.childOf(this)) {
+               if (view[ eventStr ]) {
+                   view[ eventStr ].sendEvent( view );
+               }
+               return false;
+           }
+          return true;
+       ]]> 
+    </method>  
+    
+    <method name="sendNewIcon" args="refObj,folderName">
+    	if ($debug) Debug.write("sendNewIcon :: ",refObj.modi);
+    	this.currentSelected = refObj;
+    	
+    	if (folderName != "") {
+    		folderName += "/";
+    	}
+    	
+    	var imageurl = canvas.getUrl() + 'public/cliparts/thumb/'+refObj.modi;
+    	
+        if ($debug) Debug.write("this.refToolbar :: ",this.refToolbar);        
+                                        
+    	this.refToolbar._rscIcon.setSource(imageurl);
+    	
+    	this.refToolbar.parent.parent.parent.setSelection(this.refToolbar);
+    	
+    	canvas._drawarea.currentClipArtRessourceName = folderName + refObj.modi;
+    	
+    	this.close();
+    </method>
+    
+    <method name="chooseSelect">
+    	if ($debug) Debug.write("chooseSelect :: ",this.currentSelected);
+    	this.close();
+    </method>
+    
+    <!--
+    <view resource="sub_menu_top_grip_colored_rsc" y="-14">
+    </view>
+     -->
+    
+    <view x="1" y="22" width="$once{ parent.width-4 }" clip="true" showhandcursor="false"
+    	  height="$once{ parent.height - 23 }" clickable="true">
+    	
+    	<view width="$once{ parent.width-15 }" x="1">
+    		
+    		<handler name="oninit">
+    			this.getClipArtIcons.doCall();
+    		</handler>
+    		
+		    <method name="sendNewIcon" args="tObj,folderName">
+                parent.parent.sendNewIcon(tObj,folderName);
+            </method>
+            
+            <method name="chooseSelect">
+                parent.parent.chooseSelect();
+            </method>
+
+    		
+    		<attribute name="currentContainer" value="null" />
+    		
+    		<!--
+    		getClipArtIcons()
+    		 -->
+            <netRemoteCallHib name="getClipArtIcons" funcname="whiteboardservice.getClipArtIcons"
+                remotecontext="$once{ canvas.thishib }" >
+                <handler name="ondata" args="value">
+                    <![CDATA[
+                        //The onResult-Handler will be called be the rtmpconnection
+                        //if ($debug) Debug.write("############## getClipArtIcons : ",value);
+                        parent.loadIconThumbs(value.generalList,"");
+                    ]]>
+                </handler>   
+            </netRemoteCallHib> 
+            
+            <method name="loadIconThumbs" args="list,folderName">
+            	<![CDATA[
+            	
+                    var imageurl = canvas.getUrl() + 'public/cliparts/thumb/';
+                    
+                    //if ($debug) Debug.write("imageurl :: ",imageurl);            	
+                        	
+                    for (var i=0;i<list.length;i++) {
+                    	
+                    	//if ($debug) Debug.write("list[i].indexOf() ",list[i],list[i].indexOf("."));
+                    	
+                    	if (list[i].indexOf(".") > 1 ) {
+                    	
+                            var iconresourceName = imageurl + list[i];
+                          
+                            new lz.miniIconSmybolExtraIcons(this,{
+                                          modi:list[i],
+                                          resource:iconresourceName,
+                                          stretches:'both'
+                                      });
+                                  
+                    	}
+                      
+                    }
+                
+                ]]>
+            </method>    		 
+    		
+    		<wrappinglayout axis="x" spacing="2" xinset="2" />
+    	</view> 
+    	
+    	<om_vscrollbar />
+    </view>
+    
+</class>
+	
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
new file mode 100644
index 0000000..5fa1425
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/drawDocumentPanelItem.lzx
@@ -0,0 +1,44 @@
+<?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.
+  
+-->
+<library>
+    
+	<class name="drawDocumentPanelItem" extends="blueButton" 
+		   width="26" height="26" 
+		   x_insetResource="2" y_insetResource="2"
+		   width_insetResource="22" height_insetResource="22">
+		
+		<attribute name="modi" value="" type="string" />
+		<attribute name="labelid" value="0" type="number" />
+		
+		<handler name="onclick">
+			//if ($debug) Debug.write("parent.parent.parent.parent: ",parent.parent.parent.parent);
+			if (parent.parent.parent.ignoreUpdates) {
+	            return;
+	        }
+	        parent.parent.parent.parent._drawareaMask._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
+	        parent.parent.parent.parent._drawareaMask._drawarea.doDocumentAction(this.modi);
+		</handler>
+		
+		<labelTooltip name="__labeltooltip" labelid="$once{ parent.labelid }" />
+	    
+	</class>    
+
+</library>
\ No newline at end of file
diff --git a/WebContent/src/modules/conference/whiteboard/panels/propertypanel/library.lzx b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/library.lzx
new file mode 100644
index 0000000..4bb685a
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- APL Author sebawagner -->
+	<resource name="_button_rsc_letter_rsc" src="resources/button_rsc.swf" />
+	
+	<include href="propertyPanelLetterButton.lzx" />  
+	<include href="drawDocumentPanelItem.lzx" />  
+	<include href="propertyPanel.lzx" />  
+	
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
new file mode 100644
index 0000000..162dfbf
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanel.lzx
@@ -0,0 +1,355 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="propertyPanel" extends="basePropertyPanel" 
+	   width="${ parent.parent.width-1 }" height="80" labelid="843" >
+	
+	<attribute name="ignoreUpdates" value="false" type="boolean" />
+    
+	<method name="setObjectBounds" args="x,y,width,height">
+		if ($debug) Debug.write("setObjectBounds: ",x,y,width,height);
+		this._content._xvalue.setAttribute('text',x);
+		this._content._yvalue.setAttribute('text',y);
+		this._content._widthvalue.setAttribute('text',width);
+		this._content._heightvalue.setAttribute('text',height);
+	</method>
+	
+	<method name="onUpdateBoundByText">
+		if (canvas._drawarea.boundingref!=null){
+			if ($debug) Debug.write("onUpdateBoundByText boundingref: ",canvas._drawarea.boundingref);
+			canvas._drawarea.boundingref.setAttribute('x',Number(this._content._xvalue.getText()));
+			canvas._drawarea.boundingref.setAttribute('y',Number(this._content._yvalue.getText()));
+			canvas._drawarea.boundingref.setAttribute('width',Number(this._content._widthvalue.getText()));
+			canvas._drawarea.boundingref.setAttribute('height',Number(this._content._heightvalue.getText()));
+		}
+	</method>
+	
+	<method name="loadPanelByModus" args="drawArea">
+		if ($debug) Debug.write("loadPanelByModus drawmodus: ",drawArea.drawmodus);
+		this.ignoreUpdates = true;
+		if (drawArea.drawmodus == 'paint') {
+			this._content.lineColorChoose.setSelectedColor(drawArea.currentlayerstroke);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentlayerlineWidth);
+			this._content.fillColorChoose.setEnabled(false);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentlayerOpacity*100);
+		} else if (drawArea.drawmodus == 'line') {
+			this._content.lineColorChoose.setSelectedColor(drawArea.currentlinestroke);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentlinelineWidth);
+			this._content.fillColorChoose.setEnabled(false);
+			this._content.changeOpacitySlider.setEnabled(false);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentlineOpacity*100);
+		} else if (drawArea.drawmodus == 'uline') {
+			this._content.lineColorChoose.setSelectedColor(drawArea.currentulinestroke);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentulinelineWidth);
+			this._content.fillColorChoose.setEnabled(false);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentulineOpacity*100);
+		} else if (drawArea.drawmodus == 'drawarrow') {
+			this._content.lineColorChoose.setSelectedColorWithDis(drawArea.currentdrawarrowlinestroke,
+                drawArea.currentdrawarrowlinestrokeDis);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentdrawarrowlinelineWidth);
+			this._content.fillColorChoose.setSelectedColorWithDis(drawArea.currentdrawarrowlinestrokeFill,
+                drawArea.currentdrawarrowlinestrokeFillDis);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentdrawarrowOpacity*100);
+		} else if (drawArea.drawmodus == 'rectangle') {
+			this._content.lineColorChoose.setSelectedColorWithDis(drawArea.currentrectanglestroke,
+				drawArea.currentrectanglestrokeDis);
+			this._content.fillColorChoose.setSelectedColorWithDis(drawArea.currentrectanglestrokeFill,
+				drawArea.currentrectanglestrokeFillDis);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentrectangleineWidth);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentrectangleOpacity*100);
+		} else if (drawArea.drawmodus == 'ellipse') {
+			this._content.lineColorChoose.setSelectedColorWithDis(drawArea.currentellipsestroke,
+				drawArea.currentellipsestrokeDis);
+			this._content.fillColorChoose.setSelectedColorWithDis(drawArea.currentellipsestrokeFill,
+				drawArea.currentellipsestrokeFillDis);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentellipselineWidth);
+			this._content.changeOpacitySlider.setSliderValue(drawArea.currentellipseOpacity*100);
+		} else if (drawArea.drawmodus == 'letter') {
+			this._content.lineColorChoose.setSelectedColor(drawArea.currentlayerletter);
+			this._content.fillColorChoose.setEnabled(false);
+			if ($debug) Debug.write("drawArea.currentlayersize ",drawArea.currentlayersize);
+			this._content.changeWidthSlider.setSliderValue(drawArea.currentlayersize);
+			this._content.changeOpacitySlider.setEnabled(false);
+			this._content._italic.setValue(canvas._drawarea.italic);
+			this._content._bold.setValue(canvas._drawarea.bold);
+		} else {
+			if ($debug) Debug.warn("Not known drawmodus",drawArea.drawmodus);
+			this._content.lineColorChoose.setEnabled(false);
+			this._content.changeWidthSlider.setEnabled(false);
+			this._content.fillColorChoose.setEnabled(false);
+			this._content.changeOpacitySlider.setEnabled(false);
+		}
+		
+		if (drawArea.drawmodus == 'letter'){
+            this._content._italic.setAttribute('enabled',true);
+            this._content._bold.setAttribute('enabled',true);           
+        } else {
+            this._content._italic.setAttribute('enabled',false);
+            this._content._bold.setAttribute('enabled',false);
+        }
+		
+		this.ignoreUpdates = false;
+	</method>
+	
+	<method name="loadPanelByBoundingBox" args="drawArea,objRef">
+		if ($debug) Debug.write("loadPanelByBoundingBox objRef: ",objRef);
+		
+        this.loadPanelByModus(drawArea);
+        
+        this.ignoreUpdates = true;
+        
+        if (objRef.name.indexOf('swf') >= 0) {
+            
+            this._content._documentsPanel._currentSlideNo.setAttribute("text",objRef.slideNumber);
+            //this._content._documentsPanel._zoom.setAttribute("text",objRef.currentzoomFactor);
+            //this._content._fullFit.setValue(objRef.fullFit);
+            
+        }
+		
+		this.ignoreUpdates = false;
+	</method>
+		
+	<method name="updateProperties">
+		if (!this.ignoreUpdates){
+			if (canvas._drawarea.drawmodus == 'paint'){
+				canvas._drawarea.currentlayerstroke = this._content.lineColorChoose.selectedColor;
+				canvas._drawarea.currentlayerlineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentlayerOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'line'){
+				canvas._drawarea.currentlinestroke = this._content.lineColorChoose.selectedColor;
+				canvas._drawarea.currentlinelineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentlineOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'uline'){
+				canvas._drawarea.currentulinestroke = this._content.lineColorChoose.selectedColor;
+				canvas._drawarea.currentulinelineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentulineOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'drawarrow'){
+				canvas._drawarea.currentdrawarrowlinestroke = this._content.lineColorChoose.selectedColor;
+                canvas._drawarea.currentdrawarrowlinestrokeDis = this._content.lineColorChoose.selectedColorDis;
+                canvas._drawarea.currentdrawarrowlinestrokeFill = this._content.fillColorChoose.selectedColor;
+                canvas._drawarea.currentdrawarrowlinestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
+                canvas._drawarea.currentdrawarrowlinelineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentdrawarrowOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'rectangle'){
+				canvas._drawarea.currentrectanglestroke = this._content.lineColorChoose.selectedColor;
+				canvas._drawarea.currentrectanglestrokeDis = this._content.lineColorChoose.selectedColorDis;
+				canvas._drawarea.currentrectanglestrokeFill = this._content.fillColorChoose.selectedColor;
+				canvas._drawarea.currentrectanglestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
+				canvas._drawarea.currentrectangleineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentrectangleOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'ellipse'){
+				canvas._drawarea.currentellipsestroke = this._content.lineColorChoose.selectedColor;
+				canvas._drawarea.currentellipsestrokeDis = this._content.lineColorChoose.selectedColorDis;
+				canvas._drawarea.currentellipsestrokeFill = this._content.fillColorChoose.selectedColor;
+				canvas._drawarea.currentellipsestrokeFillDis = this._content.fillColorChoose.selectedColorDis;
+				canvas._drawarea.currentellipselineWidth = this._content.changeWidthSlider.initialNumber;
+				canvas._drawarea.currentellipseOpacity = this._content.changeOpacitySlider.initialNumber/100;
+			} else if (canvas._drawarea.drawmodus == 'letter'){
+				canvas._drawarea.setAttribute('currentlayerletter',this._content.lineColorChoose.selectedColor);
+				canvas._drawarea.setAttribute('currentlayersize',this._content.changeWidthSlider.initialNumber);
+				canvas._drawarea.italic = this._content._italic.getValue();
+				canvas._drawarea.bold = this._content._bold.getValue();
+				canvas._drawarea.doalterStyle();
+			} else {
+				if ($debug) Debug.warn("Not known drawmodus",canvas._drawarea.drawmodus);
+			}
+		}
+	</method>
+
+	<view name="_content" visible="${this.parent.isopen}" >
+		
+		<labelTextWidthTooltip name="_xvalueLabel" x="4" y="24"
+			labelid="545" labelLabelid="546"  /> 
+		<customEdittext name="_xvalue" x="24" y="24" regexpType="number" 
+			width="40" text="0" height="24"
+			onafterCheck="parent.parent.onUpdateBoundByText()" />
+		
+		<labelTextWidthTooltip name="_yvalueLabel" x="4" y="52"
+			labelid="547" labelLabelid="548"  /> 
+		<customEdittext name="_yvalue" x="24" y="52" regexpType="number"
+			width="40" text="0" height="24"
+			onafterCheck="parent.parent.onUpdateBoundByText()" />
+		
+		<labelTextWidthTooltip name="_widthvalueLabel" x="68" y="24"
+			labelid="549" labelLabelid="550" /> 
+		<customEdittext name="_widthvalue" x="88" y="24" regexpType="number" 
+			width="40" text="0" height="24"
+			onafterCheck="parent.parent.onUpdateBoundByText()" />
+		
+		<labelTextWidthTooltip name="_heightvalueLabel" x="68" y="52"
+			labelid="551" labelLabelid="552" /> 
+		<customEdittext name="_heightvalue" x="88" y="52" regexpType="number"
+			width="40" text="0" height="24"
+			onafterCheck="parent.parent.onUpdateBoundByText()" />
+			
+			
+		<lineColorChoose x="132" y="24" name="lineColorChoose" boxPosition="up" >
+			<handler name="onselectedColor" args="sel">
+				if ($debug) Debug.write("lineColorChoose sel: ",sel);
+				parent.parent.updateProperties();			
+			</handler>
+		</lineColorChoose>
+		
+		<fillColorChoose x="132" y="52" name="fillColorChoose" boxPosition="up" >
+			<handler name="onselectedColor" args="sel">
+				if ($debug) Debug.write("fillColorChoose sel: ",sel);
+				parent.parent.updateProperties();	
+			</handler>
+		</fillColorChoose>
+		
+		<changeWidthSlider x="222" y="24" name="changeWidthSlider" boxPosition="up" 
+			initialNumber="2" >
+			<handler name="oninitialNumber" args="i">
+				//this.parent.parent.parent._drawareaMask._drawarea.setAttribute('currentlayersize',i);
+				if ($debug) Debug.write("changeWidthSlider oninitialNumber sel: ",i);
+				parent.parent.updateProperties();	
+			</handler>
+		</changeWidthSlider> 
+		
+		<changeWidthSlider x="222" y="52" name="changeOpacitySlider" labelid="553" boxPosition="up"
+			initialNumber="100" >
+			<handler name="oninitialNumber" args="i">
+				//this.parent.parent.parent._drawareaMask._drawarea.setAttribute('currentlayersize',i);
+				if ($debug) Debug.write("changeOpacitySlider oninitialNumber sel: ",i);
+				parent.parent.updateProperties();	
+			</handler>
+		</changeWidthSlider> 
+
+	    <propertyPanelLetterButton name="_italic" x="286" y="24" labelid="86"
+                                   itemResourceName="italic" />
+	    
+	    <propertyPanelLetterButton name="_bold" x="312" y="24" labelid="87"
+                                   itemResourceName="bold" />
+		
+		<view name="_delemiter" width="2" bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" 
+			  height="$once{ parent.height - this.y - 4 }" y="20" x="338"/>
+		
+		<labelText labelid="721" y="26" x="344" />
+		
+		<resetCombobox name="currentDocument" width="300" height="24" fontsize="11"
+                           editable="false" shownitems="7" x="480" y="24">
+            <attribute name="sendSelection" value="true" type="boolean"/>
+            <handler name="onselect" args="sel">
+                if (this.sendSelection) {
+                    parent.parent.parent._drawareaMask._drawarea.setCurrentDocument(sel.value);
+                }
+            </handler>
+        </resetCombobox>
+        <!--
+	    <labelCheckbox x="344" y="54" name="_fullFit" labelid="847" >
+            <handler name="onvalue" args="v">
+                if (parent.parent.ignoreUpdates) {
+                    return;
+                }
+                if ($debug) Debug.write("onvalue Full Fit ",v);
+                
+                parent.parent.parent._drawareaMask._drawarea.doFullFit(v);
+            </handler>
+            <labelTooltip labelid="1212" multiline="true" />
+	    </labelCheckbox> 
+	     -->       
+		
+		<view name="_documentsPanel" x="480" y="52" layout="axis:x;spacing:2">
+			
+			<handler name="oninit">
+                //if ($debug) Debug.write("oninit: ",this);
+                this._currentSlideNo.setAttribute('text',canvas.currentSlideNo);
+                this._totalSlideNo.setAttribute('text',canvas.currentSlideTotal);
+                //this._zoom.setAttribute('text',canvas.currentSlideZoom);
+            </handler>
+            <handler name="preclose">
+                //if ($debug) Debug.write("onclose: ",this);
+                canvas.currentSlideNo = Number(this._currentSlideNo.getText());
+                canvas.currentSlideTotal = Number(this._totalSlideNo.getText());
+                //canvas.currentSlideZoom = Number(this._zoom.getText());
+            </handler>
+			
+			<method name="addCurrentObject" args="itemObj">
+                //if ($debug) Debug.write("addCurrentObject ",itemObj.fileName,itemObj.name);
+                var docName = itemObj.standardFileName;
+		        if (docName.length == 0) {
+		            docName = itemObj.fileName;
+		        }
+		        
+		        parent.currentDocument.addItem(docName,itemObj.name);
+                parent.currentDocument.sendSelection = false;
+                parent.currentDocument.selectItem(itemObj.name);
+                parent.currentDocument.sendSelection = true;
+                
+                parent._clickLayer.setAttribute("visibility","hidden");
+            </method>
+            
+            <method name="removeDocument" args="refItemName">
+            	
+            	if ($debug) Debug.warn("removeDocument ",refItemName);
+            	
+                parent.currentDocument.removeItem(refItemName);
+                if (parent.currentDocument.getNumItems() != 0) {
+                    parent.currentDocument.selectItemAt(0);
+                    parent._clickLayer.setAttribute("visibility","hidden");
+                } else {
+                	parent.currentDocument.clearSelection(); 
+                	parent._clickLayer.setAttribute("visibility","visible");
+                }
+            </method>
+            
+            <method name="clearDocumentsBar">
+                parent.currentDocument.reset();
+                parent._clickLayer.setAttribute("visibility","visible");
+            </method>
+            
+            <drawDocumentPanelItem name="b3" modi="doc_first" resourceItem="doc_first" 
+                labelid="255" />        
+            <drawDocumentPanelItem name="b4" modi="doc_pre" resourceItem="doc_pre" 
+                labelid="256" />            
+            <drawDocumentPanelItem name="b5" modi="doc_next" resourceItem="doc_next" 
+                labelid="257" />        
+            <drawDocumentPanelItem name="b6" modi="doc_last" resourceItem="doc_last" 
+                labelid="258" />        
+        
+            <customEdittext name="_currentSlideNo" width="40" height="24" regexpType="number" >
+                <handler name="onblur">
+                    if (parent.parent.parent.ignoreUpdates) {
+                    	if ($debug) Debug.write("ignoreUpdates -- ");
+                        return;
+                    }
+                    parent.parent.parent.parent._drawareaMask._drawarea.setCurrentDocumentByToolBar(parent.parent.currentDocument.getValue());
+                    parent.parent.parent.parent._drawareaMask._drawarea.newSlideNumber = Number(this.getText());
+                    parent.parent.parent.parent._drawareaMask._drawarea.doDocumentAction("setSlideNumber");         
+                </handler>
+            </customEdittext>    
+            <labelText y="6" labelid="254" />     
+            <labelText name="_totalSlideNo" y="6" width="40" />  
+            
+		</view>
+		
+		<!-- 340 -->
+		<view name="_clickLayer" clickable="true" opacity="0.75" x="340"
+			  width="460" height="$once{ parent.height - this.y }" 
+			  y="20" showhandcursor="false" bgcolor="0xFFFFFF" />
+		
+	</view>
+
+</class>
+     
+    
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanelLetterButton.lzx b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanelLetterButton.lzx
new file mode 100644
index 0000000..0cdf38b
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/propertyPanelLetterButton.lzx
@@ -0,0 +1,68 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="propertyPanelLetterButton" extends="view" resource="_button_rsc_letter_rsc"  
+	   x="312" y="24" height="23" width="24" 
+	bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" >
+	<attribute name="itemResourceName" value="" type="string" />
+	<attribute name="currentVal" value="false" type="boolean" />
+	
+    <attribute name="labelid" value="87" type="number"/>
+    
+	<attribute name="enabled" value="false" type="boolean"/>
+	
+	<handler name="onmouseover">
+		this.setAttribute('bgcolor',0xFFFFFF);
+	</handler>
+	<handler name="onmouseout">
+		this.updateByVal();
+	</handler>
+    <handler name="onclick">
+    	this.currentVal = !this.currentVal;
+    	this.updateByVal();
+        parent.parent.updateProperties();	
+    </handler>
+    <method name="getValue">
+    	return this.currentVal;
+    </method>
+    <method name="setValue" args="bool">
+    	this.currentVal = bool;
+    	this.updateByVal();
+    </method>
+    <method name="updateByVal">
+		if (this.currentVal){
+    		this.setAttribute('bgcolor',canvas.getThemeColor('basebgcolorizer'));
+    	} else {
+    		this.setAttribute('bgcolor',canvas.getThemeColor('baseMousecolorizer'));
+    	}    	
+    </method>
+    <view x="2" y="2" resource="$once{ parent.itemResourceName }" />
+    
+    <view name="_clickEnabled" width="$once{ parent.width }" height="$once{ parent.height }" 
+    	  visibility="${ (parent.enabled) ? 'hidden' : 'visible' }"
+    	  opacity="0.5" bgcolor="0xFFFFFF" clickable="true" showhandcursor="false" />
+    
+    <labelTooltip x="2" y="2" labelid="$once{ parent.labelid }" />
+    
+</class>
+    
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/panels/propertypanel/resources/button_rsc.swf b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/resources/button_rsc.swf
new file mode 100644
index 0000000..027e6d0
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/panels/propertypanel/resources/button_rsc.swf
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/add.png b/WebContent/src/modules/conference/whiteboard/resources/add.png
new file mode 100644
index 0000000..6332fef
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/add.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBox.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBox.png
new file mode 100644
index 0000000..1c4b812
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBox.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTL.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTL.png
new file mode 100644
index 0000000..1c4b812
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTL.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTR.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTR.png
new file mode 100644
index 0000000..0ae7230
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxTR.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUL.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUL.png
new file mode 100644
index 0000000..68f95ad
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUL.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxULNoGripper.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxULNoGripper.png
new file mode 100644
index 0000000..fd428c9
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxULNoGripper.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.fla b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.fla
new file mode 100644
index 0000000..516062b
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.png b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.png
new file mode 100644
index 0000000..61a2482
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/boundingBoxUR.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/pointer.fla b/WebContent/src/modules/conference/whiteboard/resources/pointer.fla
new file mode 100644
index 0000000..96068e9
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/pointer.fla
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/pointer.swf b/WebContent/src/modules/conference/whiteboard/resources/pointer.swf
new file mode 100644
index 0000000..97742bb
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/pointer.swf
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/text_bold.png b/WebContent/src/modules/conference/whiteboard/resources/text_bold.png
new file mode 100644
index 0000000..889ae80
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/text_bold.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/resources/text_italic.png b/WebContent/src/modules/conference/whiteboard/resources/text_italic.png
new file mode 100644
index 0000000..8482ac8
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/resources/text_italic.png
Binary files differ
diff --git a/WebContent/src/modules/conference/whiteboard/whiteboardBarMenu.lzx b/WebContent/src/modules/conference/whiteboard/whiteboardBarMenu.lzx
new file mode 100644
index 0000000..5760a69
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/whiteboardBarMenu.lzx
@@ -0,0 +1,105 @@
+<?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.
+  
+-->
+<library>
+
+<class name="whiteboardBarMenu" extends="view" width="${ parent.width }" x="0" y="21" 
+    height="20" layout="axis:x;spacing:1;inset:2" bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }">
+    
+    <attribute name="staticwidth" type="number" value="120" />
+    <attribute name="currentBtn" value="null" />
+    
+    <method name="getCurrentSize">
+        <![CDATA[
+            if ( ((this.subviews.length+1)*(this.staticwidth+1)) <= this.width) {
+                return this.staticwidth;
+            } else {
+                var newwidth = Math.round((this.width-this.subviews.length)/(this.subviews.length+1));
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',newwidth);
+                }
+                return newwidth;
+            }   
+        ]]>
+    </method>
+    
+    <handler name="onwidth">
+        <![CDATA[
+            if ( ((this.subviews.length)*(this.staticwidth+1)) <= this.width) {
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',this.staticwidth);
+                }
+            } else {
+                var newwidth = Math.round((this.width-this.subviews.length)/(this.subviews.length));
+                for (var i=0;i<this.subviews.length;i++) {
+                    this.subviews[i].setAttribute('width',newwidth);
+                }
+            } 
+        ]]>
+    </handler>
+    
+    <method name="removeObject" args="btn">
+    	var whiteboardId = btn.objRef.whiteboardId;
+    	this.removeObjectSynced(btn);
+    	parent.sendRemoveWindow(whiteboardId);
+    </method>
+    
+    <method name="removeObjectSynced" args="btn">
+    <![CDATA[
+    	var removeCurrent = false;
+    	if (this.currentBtn == btn){
+    		removeCurrent = true;
+    	}
+    	btn.objRef.destroy();
+        btn.destroy();
+        if (this.subviews.length != 0 && removeCurrent) {
+        	this.sendActiveWindowSynced(this.subviews[this.subviews.length-1]);
+        }
+        parent.addNewItemButton.updatePosition();
+    ]]>
+    </method>
+
+    
+    <method name="sendActiveWindow" args="btn,win">
+        if ($debug) Debug.write("sendActiveWindow: ",btn,win);
+        this.sendActiveWindowSynced(btn);
+        this.currentBtn.objRef.sendActiveWindow();
+    </method>
+    
+    <method name="sendActiveWindowSynced" args="btn">
+    	<![CDATA[
+            if (this.currentBtn != null){
+                this.currentBtn.isactive=false;
+                if (this.currentBtn._minimizebtn_mo != null) this.currentBtn._minimizebtn_mo.setAttribute('visibility','hidden');
+                if (this.currentBtn._minimizebtn_dn != null) this.currentBtn._minimizebtn_dn.setAttribute('visibility','hidden');
+            }
+            this.currentBtn = btn;
+            this.currentBtn.objRef.setAttribute("visibility","visible");
+        	this.currentBtn.objRef.bringToFront();
+            ////if ($debug)  //Debug.write("sendActiveWindow2: ",this.currentBtn);
+            this.currentBtn._minimizebtn_mo.setAttribute('visibility','hidden');
+            this.currentBtn._minimizebtn_dn.setAttribute('visibility','visible');
+            this.currentBtn.isactive=true;
+        ]]>
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/whiteboardMiniButton.lzx b/WebContent/src/modules/conference/whiteboard/whiteboardMiniButton.lzx
new file mode 100644
index 0000000..adee5e0
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/whiteboardMiniButton.lzx
@@ -0,0 +1,166 @@
+<?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.
+  
+-->
+<library>
+
+<class name="whiteboardMiniButton" extends="view" width="250" height="18" y="2"
+    bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+     
+    <attribute name="btnName" value="" type="string" />
+    <attribute name="objRef" value="null" />
+
+    <attribute name="zielx" value="200" type="number" />
+    <attribute name="zielwidth" value="100" type="number" />    
+    
+    <attribute name="isactive" value="true" type="boolean" />
+    
+    <attribute name="isHidden" value="false" type="boolean" />
+    
+    <handler name="oninit">
+        this.calcTextWidth();
+        parent.onwidth.sendEvent();
+    </handler>
+    
+    <handler name="onwidth">
+        if (this.isinited){
+            this.calcTextWidth();
+        }
+    </handler>
+    
+    <method name="disableItem">
+        //if ($debug) Debug.write("disableItem :: set visibility to hidden");
+        this.isHidden = true;
+        this.setAttribute("visibility","hidden");
+        //this.destroy();
+    </method>
+    
+    <method name="enableItem">
+        this.setAttribute("visibility","visible");
+        this.isHidden = false;
+    </method>
+    
+    <method name="calcTextWidth">
+        <![CDATA[
+            if (this.isHidden) {
+                return;
+            }
+            ////////if ($debug)  //Debug.write(this,this._text,this._text.getTextWidth());
+            if (this._text.getTextWidth()>(this.width-24)) {
+                this._long.setAttribute('visibility','visible');
+                this._text.setAttribute('width',this.width-26);
+            } else {
+                this._long.setAttribute('visibility','hidden');
+                this._text.setAttribute('width',this.width-18);
+            }
+        ]]>        
+    </method>
+        
+    <handler name="onclick">
+        if (this.isHidden) {
+            return;
+        }
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+        if ($debug) Debug.write(" :: onclick :: ");
+        this.sendActiveWindow(this.objRef);
+    </handler>
+    
+    <handler name="onmouseover">
+        if (this.isHidden) {
+            return;
+        }
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+    </handler>
+    <handler name="onmouseout">
+        if (this.isHidden) {
+            return;
+        }
+        if (this.isactive) {
+            this._minimizebtn_mo.setAttribute('visibility','hidden');
+            this._minimizebtn_dn.setAttribute('visibility','visible');
+        } else {
+            this._minimizebtn_mo.setAttribute('visibility','hidden');
+            this._minimizebtn_dn.setAttribute('visibility','hidden');
+        }        
+    </handler>
+    <handler name="onmousedown">
+        if (this.isHidden) {
+            return;
+        }        
+        this._minimizebtn_mo.setAttribute('visibility','hidden');
+        this._minimizebtn_dn.setAttribute('visibility','visible');
+    </handler>
+    <handler name="onmouseup">
+        if (this.isHidden) {
+            return;
+        }        
+        this._minimizebtn_mo.setAttribute('visibility','visible');
+        this._minimizebtn_dn.setAttribute('visibility','hidden');
+    </handler>
+    
+    <method name="sendActiveWindow" args="win">
+        this.parent.sendActiveWindow(this,win);
+    </method>    
+
+	<method name="activateSynced">
+		this.parent.sendActiveWindowSynced(this);
+	</method>
+    
+    <view name="_minimizebtn_mo" width="${ parent.width-2 }" height="16"
+        bgcolor="white" opacity="0.3" visibility="hidden" x="1" y="1" />
+
+    <view name="_minimizebtn_dn" width="${ parent.width-2 }" height="16"
+        bgcolor="black" opacity="0.3" visibility="hidden" x="1" y="1" />
+    
+
+    <text text="${ parent.btnName }" fgcolor="0xFFFFFF" resize="false" 
+        x="1" fontsize="10" name="_text" />
+    
+        <view y="1" x="${ parent.width-18 }" name="_close"
+            resource="btn_presenter_close"
+            opacity="${ ((canvas.ismoderator) ? 1 : ((canvas.isAllowedToDraw) ? 1 : 0.5 )) }" 
+            onmouseover="this.setAttribute('frame',2)"
+            onmouseout="this.setAttribute('frame',1)"
+            onmousedown="this.setAttribute('frame',3)"
+            onmouseup="this.setAttribute('frame',1)" >
+            <handler name="onclick">
+	            <![CDATA[
+	                this.setAttribute('frame',2);
+	                canvas._videocontainer._videoviewcontent.closeWhiteboard();
+	                var t = this;
+                    canvas.videoComp_lc.closeWhiteboard = function(confirm) {
+                        if ($debug) Debug.write("confirm closeWhiteboard:", confirm);
+                        if (confirm) {
+                            t.parent.parent.removeObject(t.parent);
+                        }
+                    }
+                ]]>
+            </handler>
+            <labelTooltip labelid="1364" />
+        </view>  
+        
+    <text y="1" name="_long" text="..." fgcolor="0xFFFFFF"
+        x="${ parent.width-28 }" fontsize="10" />
+
+    <labelTooltip text="${ parent.btnName }" />
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/windows/library.lzx b/WebContent/src/modules/conference/whiteboard/windows/library.lzx
new file mode 100644
index 0000000..1002108
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/windows/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="saveAsWmlWindow.lzx" />
+	<include href="loadWhiteboardWindow.lzx" />
+	
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx b/WebContent/src/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
new file mode 100644
index 0000000..c2da202
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/windows/loadWhiteboardWindow.lzx
@@ -0,0 +1,43 @@
+<?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.
+  
+-->
+<library>
+
+<class name="loadWhiteboardWindow" extends="labelText" multiline="true" resize="false" 
+	   width="260" align="right" y="${ parent.height - this.height - 10 }" 
+	   bgcolor="0xFFFFFF" fgcolor="0xFF3300">
+    
+    <attribute name="refObj" value="null" />
+    
+    <handler name="onclick">
+    	this.destroy();
+    </handler>
+    
+    <method name="close">
+        this.destroy();
+    </method>    
+    
+    <method name="setMessage" args="mess">
+        this.setAttribute('text',mess);
+    </method>
+    
+</class>
+
+</library>
diff --git a/WebContent/src/modules/conference/whiteboard/windows/saveAsWmlWindow.lzx b/WebContent/src/modules/conference/whiteboard/windows/saveAsWmlWindow.lzx
new file mode 100644
index 0000000..823c9cf
--- /dev/null
+++ b/WebContent/src/modules/conference/whiteboard/windows/saveAsWmlWindow.lzx
@@ -0,0 +1,92 @@
+<?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.
+  
+-->
+<library>
+
+<class name="saveAsWmlWindow" extends="labelExplorerBox" labelid="199"
+    docking="true" closable="true" width="260" x="200" y="0" height="220">
+    
+    <attribute name="refObj" value="null" />
+    
+    <handler name="oninit">
+    	lz.ModeManager.makeModal(this);
+    </handler>
+    
+    <handler name="onclose">
+    	lz.ModeManager.release(this);
+    </handler>
+    
+    <labelText y="22" labelid="201" width="200" />
+    <customEdittext name="_savefileName1" y="42" x="4" width="240" text="filename" />
+    
+    <!--
+    <labelText x="4" y="72" labelid="561" width="200" fgcolor="0x0000FF">
+        <handler name="onclick">
+            this.parent.refObj.confirmSaveAsImageTypeExport(this.parent._savefileName1.getText(),"png");
+            this.parent.close();
+        </handler>
+    </labelText>
+    
+    <labelText x="4" y="92" labelid="562" width="200" fgcolor="0x0000FF">
+        <handler name="onclick">
+            this.parent.refObj.confirmSaveAsImageTypeExport(this.parent._savefileName1.getText(),"jpg");
+            this.parent.close();
+        </handler>
+    </labelText>
+    
+    <labelText x="4" y="112" labelid="563" width="200" fgcolor="0x0000FF">
+        <handler name="onclick">
+            this.parent.refObj.confirmSaveAsImageTypeExport(this.parent._savefileName1.getText(),"pdf");
+            this.parent.close();
+        </handler>
+    </labelText>
+    
+    <labelText x="4" y="132" labelid="560" width="200" fgcolor="0x0000FF">
+        <handler name="onclick">
+            this.parent.refObj.confirmSaveAsImageExport(this.parent._savefileName1.getText());
+            this.parent.close();
+        </handler>
+    </labelText>
+    
+    <labelText x="4" y="152" labelid="564" width="200" fgcolor="0x0000FF">
+        <handler name="onclick">
+            this.parent.refObj.confirmSaveAsImageTypeExport(this.parent._savefileName1.getText(),"tif");
+            this.parent.close();
+        </handler>
+    </labelText>
+     -->
+    
+	<simpleLabelButton name="_confirm" x="40" y="190" 
+			labelid="203" width="100" height="20">
+		<handler name="onclick">
+			this.parent.refObj.confirmSaveAsObject(this.parent._savefileName1.getText());
+		</handler>
+	</simpleLabelButton>	
+    
+	<simpleLabelButton name="_cancel" x="150" y="190" 
+			labelid="202" width="100" height="20">
+		<handler name="onclick">
+			this.parent.close();
+		</handler>
+	</simpleLabelButton>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/dashboard/library.lzx b/WebContent/src/modules/dashboard/library.lzx
new file mode 100644
index 0000000..76f3047
--- /dev/null
+++ b/WebContent/src/modules/dashboard/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="tabButtonMain.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/dashboard/tabButtonMain.lzx b/WebContent/src/modules/dashboard/tabButtonMain.lzx
new file mode 100644
index 0000000..08ae57f
--- /dev/null
+++ b/WebContent/src/modules/dashboard/tabButtonMain.lzx
@@ -0,0 +1,117 @@
+<?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.
+  
+-->
+<library>
+
+<class name="tabButtonMain" extends="view" focusable="true"
+	   width="$once{ (parent.width-2)/2 }" height="36" y="2">
+	
+	<attribute name="labelid" value="0" type="number" />
+	
+	<attribute name="selected" value="false" type="boolean" />
+	
+	<attribute name="textFontSize" value="14" type="number" />
+	
+	<attribute name="currentIconRsc" value="" type="string"/>
+	
+	<attribute name="showIcon" value="true" type="boolean" />
+	
+	<handler name="oninit">
+		if (this.selected) {
+			this.doSelection();
+		}
+	</handler>
+	
+	<handler name="onclick">
+		this.doSelection();
+	</handler>
+	
+	<method name="doSelection">
+		parent.parent.doSelection(this);
+	</method>
+	
+	<handler name="onmouseover">
+		if (!this.selected) {
+			this._bg2.setAttribute("visibility","visible");
+		}
+	</handler>
+	
+	<handler name="onmouseout">
+		if (!this.selected) {
+        	this._bg2.setAttribute("visibility","hidden");
+        }
+    </handler>
+	
+	<method name="select">
+		this.selected = true;
+		if (this.showIcon) this._icon.setAttribute("opacity",1);
+        this._selectedView.setAttribute("visibility","visible");
+        this._deselectedView.setAttribute("visibility","hidden");
+		this._bg2.setAttribute("visibility","hidden");
+		this._text.setAttribute("fontstyle","bold");
+		this._text.setAttribute("y",6);
+		if (this.showIcon) this._icon.setAttribute("y",6);
+		this._text.setAttribute("fgcolor",canvas.getThemeColor('menuTextColor'));
+	</method>
+     
+    <method name="deselect">
+        this.selected = false;
+        if (this.showIcon) this._icon.setAttribute("opacity",0.5);
+        this._selectedView.setAttribute("visibility","hidden");
+        this._deselectedView.setAttribute("visibility","visible");
+        this._text.setAttribute("y",8);
+        if (this.showIcon) this._icon.setAttribute("y",8);
+        this._text.setAttribute("fontstyle","plain");
+        this._text.setAttribute("fgcolor",canvas.getThemeColor('menuTextDisabledColor'));
+    </method>       
+    
+    <view name="_selectedView" bgcolor="$once{ canvas.getThemeColor('menuBackgroundColor') }" width="$once{ parent.width }" 
+            height="$once{ parent.height }" visibility="visible">
+        <view name="borderRight" width="1" x="0"
+        			bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="$once{ parent.height }" />  
+        <view name="borderTop" width="$once{ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+        <view name="borderLeft" width="1" x="$once{ parent.width-1 }"
+        			bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="$once{ parent.height }" />  
+    </view>
+    
+    <view name="_deselectedView" bgcolor="0xFAFAFA" 
+    		width="$once{ parent.width }" y="2"
+            height="$once{ parent.height-3 }" visibility="visible">
+        <view name="borderRight" width="1" x="0"
+        			bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="$once{ parent.height }" />  
+        <view name="borderTop" width="$once{ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
+        <view name="borderLeft" width="1" x="$once{ parent.width-1 }"
+        			bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="$once{ parent.height }" />  
+    </view>       
+          
+    <view name="_bg2" bgcolor="0xFFFFFF" width="$once{ parent.width-2 }" y="3" x="1"
+          height="$once{ parent.height-4 }" opacity="1" visibility="hidden"/>
+    
+    <state applied="$once{ parent.showIcon }" >
+	    <image x="6" y="6" name="_icon" src="$once{ canvas.getThemeImage( parent.currentIconRsc ) }" 
+    				width="20" height="20" stretches="both" />
+    </state>
+                
+    <labelText name="_text" x="$once{ (parent.showIcon) ? 28 : 6 }" fontsize="$once{ parent.textFontSize }" 
+    		valign="middle" fgcolor="0xFFFFFF" labelid="$once{ parent.labelid }" />
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/invitation/autoloaderBarOnly.lzx b/WebContent/src/modules/invitation/autoloaderBarOnly.lzx
new file mode 100644
index 0000000..7222483
--- /dev/null
+++ b/WebContent/src/modules/invitation/autoloaderBarOnly.lzx
@@ -0,0 +1,141 @@
+<?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.
+  
+-->
+<library>
+
+<class name="autoloaderBarOnly" extends="view" x="400" valign="middle" pixellock="true">
+
+	<attribute name="maxwidth" value="400" type="number" />
+	<attribute name="maxsteps" value="22" type="number" />
+	<attribute name="currentsteps" value="0" type="number" />
+	
+	<method name="close">
+		canvas.thishib.loaderVar = null;
+		this.destroy();
+	</method>
+	
+	<method name="setProgress">
+		this.currentsteps += 1;
+		if($debug) Debug.write("autoLoader/setProgress ===== ",this.currentsteps);
+		var w = Math.round(((this.maxwidth)/this.maxsteps)*this.currentsteps);
+		this.loadingbar.setAttribute('visibility','visible');
+		if($debug) Debug.write("autoLoader/setResourceNumber == ",w);
+		this.loadingbar._loading.setAttribute('width',w);
+	</method>
+      
+    <view name="loadingbar"  height="1" pixellock="true"
+          x="-5" y="40" width="$once{ parent.maxwidth+2 }" visibility="hidden">
+          <view x="1" y="1" width="$once{ parent.width-2 }" height="1" opacity="0.3"
+          		bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }" />
+          <view name="_loading" x="1" y="1" width="0" height="1"  pixellock="true" 
+          		bgcolor="$once{ canvas.getThemeColor('styleMenuBarBaseColor') }"/>
+    </view>  
+          
+    <netRemoteCallHib name="getLanguageByIdAndMax" funcname="languageservice.getLanguageByIdAndMax" 
+		remotecontext="$once{ canvas.thishib }" >
+    	<attribute name="start" value="0" type="number" />
+    	<attribute name="step" value="100" type="number" /> 
+    	<attribute name="max" value="1600" type="number" />    
+        <netparam><method name="getValue">return canvas.thishib.userlang;</method></netparam> 
+        <netparam><method name="getValue">return parent.start;</method></netparam> 
+        <netparam><method name="getValue">return parent.step;</method></netparam> 
+        <handler name="ondata" args="value">
+        	<![CDATA[
+        		//if ($debug) Debug.write("getLanguageByIdAndMax: ",value);
+        		setLabelObjectByHundred(this.start,value);
+	            //The onResult-Handler will be called be the rtmpconnection
+	            if (this.start <= max){
+	            	this.start += this.step;
+					canvas.thishib.loaderVar.setProgress();
+					this.doCall();
+	            } else {
+            		parent.setProgress();
+		            canvas.thishib.getTimeZones.doCall();
+		            parent.getUserSalutations.doCall();
+				}
+			]]>
+        </handler>  
+    </netRemoteCallHib>	 
+    
+    <netRemoteCallHib name="getUserSalutations" funcname="userservice.getUserSalutations" 
+		remotecontext="$once{ canvas.thishib }" >  
+		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue"> return hib.userlang; </method></netparam> 
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("getUserSalutations ",value);
+            canvas.salutationsInitValues = value;
+            parent.setProgress();
+            parent.getRoomTypes.doCall();
+        </handler>  
+    </netRemoteCallHib>   
+    
+    <netRemoteCallHib name="getRoomTypes" funcname="conferenceservice.getRoomTypes" 
+		remotecontext="$once{ canvas.thishib }" >  
+		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("getRoomTypes ",value);
+            canvas.roomTypesInitValues = value;
+            parent.setProgress();
+            parent.setUsernameAndSession.doCall();
+        </handler>  
+    </netRemoteCallHib>    	 
+	 
+    <netRemoteCallHib name="setUsernameAndSession" funcname="setUsernameAndSession" remotecontext="$once{ canvas.thishib }" >   
+        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+        <netparam><method name="getValue">return canvas.user_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentuser;</method></netparam>
+        <netparam><method name="getValue">return canvas.firstName;</method></netparam>
+        <netparam><method name="getValue">return canvas.lastName;</method></netparam>      
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("setUsername: value, ",canvas.thishib.currentInvitation.room.roomtype.roomtypes_id);
+            clearStageContent();		
+            parent.close();
+            
+			if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==1){
+				
+				new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.conferenceRoomModule,roomObj:canvas.thishib.currentInvitation.room});
+				
+			} else if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==2){
+				
+				new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.restrictedRoomModule,roomObj:canvas.thishib.currentInvitation.room});
+				new lz.labelerrorPopup(canvas,{error:'No RoomType currently available for roomTypeId 2'});
+				
+			} else if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==3){
+				
+				new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.restrictedRoomModule,roomObj:canvas.thishib.currentInvitation.room});
+				
+			} else if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==4){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.interviewRoomModule,roomObj:canvas.thishib.currentInvitation.room});
+                
+            } else if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==5){
+                
+                new lz.testSetup(canvas,{isDirectLink:true,roomClassName:canvas.customRoomModule,roomObj:canvas.thishib.currentInvitation.room});
+                
+            }                 
+        </handler>  
+    </netRemoteCallHib>     
+          
+</class>
+
+</library>
diff --git a/WebContent/src/modules/invitation/invitationQuickLoader.lzx b/WebContent/src/modules/invitation/invitationQuickLoader.lzx
new file mode 100644
index 0000000..8ebf2c0
--- /dev/null
+++ b/WebContent/src/modules/invitation/invitationQuickLoader.lzx
@@ -0,0 +1,195 @@
+<?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.
+  
+-->
+<library>
+	<!---
+	-->
+	<!-- label: data loading, please wait -->
+	<class name="invitationQuickLoader" extends="labelExplorerBox" labelid="230"
+			docking="true" resizeable="false" closable="false" width="324" 
+			x="$once{ canvas.width/2 - this.width/2 }" y="0" height="120">
+		 
+		<attribute name="userlang" value="1" type="number" />
+		
+		<handler name="oninit">
+			this.setRoomValues();
+			if (canvas.thishib.currentInvitation.passwordProtected){
+				if ($debug) Debug.write("Is Password Protected");
+				this.pass_label.setAttribute('visibility','visible');
+				this._password.setAttribute('visibility','visible');
+				this.invitation_pass.setAttribute('visibility','visible');
+			} else {
+				this.showLoginStep();
+                if ($debug) Debug.write("invitationQuickLoader:oninit userlang = [",userlang,"]; canvas.lang = [",canvas.language_id,"]");
+                if (canvas.language_id > 0) {
+                    this.isRoomFull.doCall();
+                } else {
+                    this.showLoginStep();
+                }
+			}
+		</handler>
+		
+		<method name="showLoginStep">
+			this.pass_label.setAttribute('visibility','hidden');
+			this._password.setAttribute('visibility','hidden');
+			this.invitation_pass.setAttribute('visibility','hidden');		
+			this.labellanguages.setAttribute('visibility','visible');
+			this.languages.setAttribute('visibility','visible');
+			this.connect.setAttribute('visibility','visible');
+		</method>
+		
+		<method name="checkPWD">
+			this.checkInvitationPass.doCall();
+		</method>
+		
+		<netRemoteCallHib name="isRoomFull" funcname="conferenceservice.isRoomFull" 
+							remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >  	
+        	<netparam name="pass"><method name="getValue">return canvas.thishib.currentInvitation.room.rooms_id;</method></netparam>
+        	<handler name="ondata" args="value">
+        		<![CDATA[
+            		//The onResult-Handler will be called be the rtmpconnection
+            		if ($debug) Debug.write(canvas.thishib.currentInvitation.room.rooms_id);
+					if ($debug) Debug.write("isRoomFull: ",value);
+					
+					if (value) {
+						new lz.labelerrorPopup(canvas,{errorlabelid:618});
+						parent.close();
+					} else {
+						parent.login();
+					}
+            	]]>
+        	</handler>   
+    	</netRemoteCallHib> 
+		
+		<netRemoteCallHib name="checkInvitationPass" funcname="invitationservice.checkInvitationPass" 
+							remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >  	
+	      	<netparam name="invitationHash"><method name="getValue">return canvas.invitationHash;</method></netparam>
+        	<netparam name="pass"><method name="getValue">return parent.parent._password.getText();</method></netparam>
+	        	
+        	<handler name="ondata" args="value">
+        		<![CDATA[
+            		//The onResult-Handler will be called be the rtmpconnection
+				if ($debug) Debug.write("checkInvitationPass : ",value);
+				if (value<0){
+				} else {
+					parent.showLoginStep();
+				}
+            ]]>
+        	</handler>   
+    	</netRemoteCallHib>  	
+	    
+		<method name="setRoomValues">
+			if (canvas.thishib.currentInvitation.room.roomtype.roomtypes_id==1){
+	    		canvas.isConference = true;
+	    	} else {
+	    		canvas.isConference = false;
+		    }
+	    	var roomObj = canvas.thishib.currentInvitation.room;
+        	hib.currentroomid = roomObj.rooms_id;
+        	
+		</method>
+		
+		<method name="login">
+		<![CDATA[
+			this.userlang = Number(this.languages.getValue());
+			this.labellanguages.setAttribute('visibility','hidden');
+			this.languages.setAttribute('visibility','hidden');
+			this.connect.setAttribute('visibility','hidden');
+			this.labelloading.setAttribute('visibility','visible');
+			
+			parent.userlang = Number(this.userlang);
+			
+			var invitee = canvas.thishib.currentInvitation.invitee;
+			var email = invitee.adresses.email;
+			var fName = invitee.firstname == null ? "" : invitee.firstname;
+			var lName = invitee.lastname == null || invitee.lastname == "" ? email : invitee.lastname;
+			//if ($debug) Debug.write("!!!!!!!!!!! invitee :: ", invitee);
+			
+			canvas.setAttribute('currentuser', email);
+			canvas.setAttribute('user_id', -invitee.user_id);
+			canvas.setAttribute('firstName', fName);
+			canvas.setAttribute('lastName', lName);
+			canvas.setAttribute('mail', email);
+			canvas.setAttribute('lastLogin', invitee.lastlogin);
+			canvas.setAttribute('official_code','');
+			canvas.setAttribute('picture_uri', invitee.pictureuri);
+			canvas.setAttribute('language', invitee.language_id);
+			
+			hib.userobject = invitee;
+			hib.userobject.firstname = fName;
+			hib.userobject.lastname = lName;
+			
+			hib.userlang = Number(this.userlang);
+			canvas.thishib.loaderVar = new lz.autoloaderBarOnly(canvas);
+			canvas.thishib.loaderVar.setProgress();
+			this.close();
+			//if (canvas.language == canvas.thishib.userlang && canvas.thishib.initlanguageLoaded) { TODO  canvas.language seems to be dropped
+			if (canvas.language_id == canvas.thishib.userlang && canvas.thishib.initlanguageLoaded) {
+				if (!canvas.timeZonesLoaded) {
+					canvas.thishib.loaderVar.getTimeZones.doCall();
+				}
+				canvas.thishib.loaderVar.getUserSalutations.doCall();
+			} else {
+				canvas.thishib.loaderVar.getLanguageByIdAndMax.doCall();
+			}
+		]]>         
+		</method>
+		 
+		<!-- label: password -->
+	    	<labelText name="pass_label" labelid="536" visibility="hidden" width="200" y="30" resize="false" x="10" />  
+		<customEdittext name="_password" password="true" visibility="hidden" width="170" y="30" x="120" />
+		
+		<!-- label: Check password -->
+	 	<simpleLabelButton name="invitation_pass" y="80" x="120" text="start" visibility="hidden" labelid="537"
+	 					   	width="170" height="20" onclick="parent.checkPWD();" />
+		
+		<!-- label: language -->
+		<labelText name="labellanguages" labelid="227" visibility="hidden" width="200" y="30" resize="false" x="10" />     
+		<resetCombobox name="languages" width="170" y="30" x="120" visibility="hidden" editable="false">
+	      	<netRemoteCallHib name="getLanguages" funcname="languageservice.getLanguages" remotecontext="$once{ canvas.thishib }" >      
+	            <handler name="oninit">
+                 	this.doCall();
+	            </handler>
+	            <handler name="ondata" args="value">
+	            	//The onResult-Handler will be called be the rtmpconnection
+                  	<![CDATA[
+                        var selVal = canvas.language_id;
+                        var found = false;
+                  		for (var i=0;i<value.length;i++){
+	                  		this.parent.addItem(value[i].name,value[i].language_id);
+                            if (value[i].language_id == selVal) {
+                                found = true;
+                            }
+		                }
+                		this.parent.selectItem((found) ? selVal : value[0].language_id);
+		            ]]>
+				</handler>  
+			</netRemoteCallHib>
+		</resetCombobox>		 
+
+		<!-- label: loading -->	
+		<labelText name="labelloading" y="30" x="10" fontstyle="bold" labelid="229" visibility="hidden" />
+		
+		<!-- label: enter -->
+		<simpleLabelButton name="connect" y="80" x="120" text="start" 
+						   visibility="hidden" labelid="228" width="170" height="20" 
+						   onclick="parent.isRoomFull.doCall();" />
+	</class>
+</library>
diff --git a/WebContent/src/modules/invitation/inviteMainWindow.lzx b/WebContent/src/modules/invitation/inviteMainWindow.lzx
new file mode 100644
index 0000000..e32ee88
--- /dev/null
+++ b/WebContent/src/modules/invitation/inviteMainWindow.lzx
@@ -0,0 +1,333 @@
+<?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.
+  
+-->
+<library>
+	<!---
+		This class shows a invitation window with clicking button which is located in video and audio panel.
+	-->
+	<!-- placeholder
+		label: send invitation
+	-->
+	<class name="inviteMainWindow" extends="labelExplorerBox" labelid="214" 
+			docking="true" closable="false" width="464" x="200" y="100" height="465">
+		
+		<attribute name="roomType" value="conference" type="string" />
+		<attribute name="baseUrl" value="" type="string" />
+		<attribute name="currentHash" value="" type="string" />
+		<attribute name="display" value="false" type="boolean" />
+		<attribute name="addTimezoneItemsDelegate" value="null"/>
+		<attribute name="firstname" value="null"/>
+		<attribute name="lastname" value="null"/>
+		<attribute name="email" value="null"/>
+    	
+		<handler name="oninit">
+		<![CDATA[
+    		this.setAttribute('visibility', 'hidden');
+			this.baseUrl = canvas.getAppBaseUrl();
+			if( $debug ) Debug.write("this.baseUrl: ", this.baseUrl);
+			if (addTimezoneItemsDelegate == null) {
+				addTimezoneItemsDelegate = new LzDelegate(this, "addTimezoneItems");
+				lz.Timer.addTimer(addTimezoneItemsDelegate, 2000);
+			}
+		]]>
+		</handler>
+		
+		<method name="addTimezoneItems" args="ignore=null">
+		<![CDATA[
+			var itemCount = _timeZone.cblist.getNumItems();
+			if ( itemCount < canvas.timeZones.length) {
+				for (var i = itemCount; i < Math.min(itemCount + 30, canvas.timeZones.length); ++i) {
+					_timeZone.addItem(canvas.timeZones[i], canvas.timeZones[i]);
+				}
+			} else {
+				lz.Timer.removeTimer(addTimezoneItemsDelegate);
+				addTimezoneItemsDelegate = null;
+				canvas.setAttribute("timeZonesLoaded", true);
+			}
+			if ($debug) Debug.write(":: addTimezoneItems :: ", itemCount);
+			lz.Timer.resetTimer(addTimezoneItemsDelegate, 500);
+		]]>
+		</method>
+
+        <handler name="onvisible" args="v">
+    	<![CDATA[
+    		if (v) {
+			    this.setOffset(canvas.stdTimeOffset);
+				this._recipient.setAttribute('text', '');
+				this._message.setAttribute('text', '');
+				this._password.setAttribute('text', '');
+				this._ispasswordProtected.setValue(false);
+				this._timeFrom.setAttribute('text', getStringTime());
+				this._timeTo.setAttribute('text', getStringTime());
+				this.firstname = "";
+				this.lastname = "";
+				this.email = "";
+				this.display = false;
+				lz.ModeManager.makeModal(this);
+				if (!canvas.isConference){
+					this.roomType = "restricted"; //FIXME
+				}
+                for (var eg in this.subviews) {
+                    this.subviews[eg].setAttribute('enabled', true);
+                }
+                _password.setAttribute('enabled', _ispasswordProtected.value);
+                var period = _valid.value == 2;
+                _valid_from.setAttribute('enabled', period);
+                _timeFrom.setAttribute('enabled', period);
+                _valid_to.setAttribute('enabled', period);
+                _timeTo.setAttribute('enabled', period);
+                _timeZone.setAttribute('enabled', period);
+                _url.setAttribute('enabled', false);
+			} else {
+	    		lz.ModeManager.release(this);
+			}
+    	]]>
+	    </handler>
+        
+		<method name="setOffset" args="std_time_offset">
+		<![CDATA[
+			var std_time_offset = Math.round(std_time_offset);
+			var timeZoneJavaFormat = "Etc/GMT";
+			if (std_time_offset > 0) {
+				timeZoneJavaFormat += "-"+std_time_offset;
+			} else {
+				timeZoneJavaFormat += "+"+std_time_offset;
+			}
+			
+			if ($debug) Debug.write("timeZoneJavaFormat :: ",timeZoneJavaFormat);
+			
+			var tItem =  this._timeZone.getItem(timeZoneJavaFormat);
+			if (tItem != null) {
+				this._timeZone.selectItem(timeZoneJavaFormat);
+			} else {
+				this._timeZone.selectItemAt(0);
+			}
+			this._languages.selectItem(canvas.language_id);
+		]]>
+		</method> 
+		
+		<!-- label: recipient -->
+		<labelTextWidthTooltip name="_recepientLbl" y="24" width="120" labelid="216" labelLabelid="1597"  />
+		<customEdittext name="_recipient" width="340" x="120" y="22" regexpLabelid="1597">
+			<handler name="onblur">
+			<![CDATA[
+				var addr = parent.replaceAll(parent.replaceAll(getText(), "'", ""), "\"", "");
+				if ($debug) Debug.write("addr: ", addr);
+				parent.firstname = "";
+				parent.lastname = "";
+				var idx1 = addr.indexOf("<"), idx2 = addr.indexOf(">");
+				if (idx1 > -1 && idx2 > -1 && idx2 > idx1) {
+					parent.email = parent.trim(addr.substring(idx1 + 1, idx2));
+					var s = parent.trim(addr.substring(0, idx1));
+					var idx = s.indexOf(" ");
+					if (idx > -1) {
+						parent.firstname = s.substring(0, idx);
+						parent.lastname = s.substring(idx + 1);
+					} else {
+						parent.firstname = s;
+					}
+				} else {
+					parent.email = addr;
+				}
+				if ($debug) Debug.write("[first, last, email]: ", getText(), idx1, idx2, parent.firstname, parent.lastname, parent.email);
+				this.regExpCheckId = canvas.doRegExpCheck(parent.email, this.emailRegEx);
+				if(this.callDelegate == null) {
+					this.callDelegate = new LzDelegate(this, "checkRegExpResult");
+				}
+				lz.Timer.resetTimer(this.callDelegate, 50);
+			]]>
+			</handler>
+			<handler name="onafterCheck">
+				if (!isvalidInput) {
+					parent.email = null;
+					parent.firstname = null;
+					parent.lastname = null;
+				}
+			</handler>
+		</customEdittext>
+		
+		<method name="trim" args="s">
+		<![CDATA[
+			var str = "" + s, begin = 0, end = str.length - 1;
+			while (begin <= end && str.charCodeAt(begin) == 32) { ++begin; }
+			while (end > begin && str.charCodeAt(end) == 32) { --end; }
+			return str.substr(begin, end - begin + 1);
+		]]>
+		</method>
+		
+		<method name="replaceAll" args="s,f,r">
+		<![CDATA[
+			var str = s;
+			while (str.indexOf(f) > -1) { str = str.replace(f, r); }
+			return str;
+		]]>
+		</method>
+	
+		<!-- label: subject -->
+		<labelText labelid="215" y="52" width="120" />
+		<customEdittext name="_subject" labelid="532" width="340" enabled="false" x="120" y="52" />	
+		
+		<!-- label: message -->
+		<labelText labelid="217" y="82" width="120" />
+		<customScrollEdittext name="_message" width="340" x="120" y="82" height="100" />	
+		
+							  
+		<!-- label: password protected -->
+		<labelCheckbox name="_ispasswordProtected" y="192" fontsize="11" x="4" labelid="524"  />
+			
+		<!-- label: password -->
+		<labelText labelid="525" y="220" x="4" fgcolor="${ ((!parent._ispasswordProtected.value) ? 0xCCCCCC : 0x000000 ) }" />
+		<customEdittext name="_password" enabled="${ parent._ispasswordProtected.value }" password="true"
+						width="340" x="120" y="218" />
+		
+		<!-- label: validity period -->
+		<labelText labelid="526" y="252" width="120" />
+	
+		<radiogroup name="_valid" x="120" y="256" layout="class:simplelayout; axis:x">
+			<!-- label: endless -->
+	            <labelRadioButton value="1" labelid="527" fontsize="11" />
+			<!-- label: period -->
+	            <labelRadioButton value="2" labelid="528" fontsize="11" />
+			<!-- label: one-time -->
+	        	<labelRadioButton value="3" labelid="529" fontsize="11" />
+		</radiogroup>
+
+		<!-- label: valid from -->		
+		<labelText x="4" labelid="530" y="284" fgcolor="${ ((parent._valid.value==2) ? 0x000000 : 0xCCCCCC ) }" />
+		<dateField x="120" y="282" name="_valid_from" setDefaultToday="true" enabled="${ parent._valid.value == 2 }" />
+		<customEdittext name="_timeFrom" enabled="${ parent._valid.value == 2 }"
+					width="50" x="232" y="282" text="$once{ getStringTime() }" regexpType="time" />	   
+		
+		<!-- label: valid to -->			
+		<labelText x="4" labelid="531" y="314" fgcolor="${ ((parent._valid.value==2) ? 0x000000 : 0xCCCCCC ) }" />
+		<dateField x="120" y="314" name="_valid_to" setDefaultToday="true" additionalDay="1" enabled="${ (parent._valid.value == 2) }" />		
+		<customEdittext name="_timeTo" enabled="${ parent._valid.value == 2 }"
+						width="50" x="232" y="314" text="$once{ getStringTime() }" regexpType="time" />				   
+
+		<labelText labelid="1143" width="200" y="344" fgcolor="${ ((parent._valid.value==2) ? 0x000000 : 0xCCCCCC ) }"  x="4" />
+		<resetCombobox name="_timeZone" editable="false" y="344" width="270" x="120"
+				enabled="${ parent._valid.value == 2 }" fontsize="11" style="componentStyle"/>
+         
+		<labelText labelid="59" width="200" y="374" x="4" />
+        <resetCombobox name="_languages" editable="false" y="374" width="270" x="120" fontsize="11" style="componentStyle">
+            <labeldTextListItem datapath="languagesSet:/item" text="$path{ 'name/text()' }" value="$path{ 'language_id/text()' }"/>
+        </resetCombobox>
+
+		<customEdittext name="_url" enabled="false" width="$once{ parent.width - 10 }" x="5" y="405" text=""/>
+		
+		<simpleLabelButton name="generate" labelid="1526" x="$once{ parent.width-440 }" width="170" y="$once{ parent.height-26 }">
+			<handler name="onclick">
+			<![CDATA[
+				if (parent.email == null) {
+					return;
+				}
+        		parent.display = true;
+				parent.sendInvitationHash.doCall();
+			]]>
+			</handler>
+		</simpleLabelButton>
+		
+        <!-- label: send -->
+		<simpleLabelButton name="send" labelid="218" x="$once{ parent.width-260 }" width="120" y="$once{ parent.height-26 }">
+			<handler name="onclick">
+			<![CDATA[
+				if (parent.email == null) {
+					return;
+				}
+                for (var eg in this.parent.subviews) {
+                    this.parent.subviews[eg].setAttribute('enabled', false);
+                }
+                if (parent.display) {
+                    parent.sendInvitationByHash.doCall();
+                } else {
+                    parent.sendInvitationHash.doCall();
+                }
+				]]>
+			</handler>
+		</simpleLabelButton>
+	
+		<!-- label: cancel -->
+		<simpleLabelButton labelid="219" x="$once{ parent.width-130 }" width="120" y="$once{ parent.height-26 }">
+			<handler name="onclick">
+	    		parent.setAttribute('visibility', 'hidden');
+			</handler>
+		</simpleLabelButton>
+	   
+		<netRemoteCallHib name="sendInvitationByHash" funcname="invitationservice.sendInvitationByHash" remotecontext="$once{ canvas.thishib }" >
+			<netparam name="SID"><method name="getValue">return canvas.sessionId;</method></netparam>
+			<netparam name="invitationHash"><method name="getValue">return this.parent.parent.currentHash;</method></netparam>
+			<netparam name="message"><method name="getValue">return this.parent.parent._message.getText();</method></netparam>
+			<netparam name="subject"><method name="getValue">return this.parent.parent._subject.getText();</method></netparam>
+			<netparam name="language_id"><method name="getValue">return parent.parent._languages.getValue();</method></netparam>
+			<handler name="ondata" args="value">
+			<![CDATA[
+				if (value != null) {
+		    		parent.setAttribute('visibility', 'hidden');
+				} else {
+					new lz.errorPopup(canvas.main_content._content.inner,{error:value});
+				}
+			]]>
+			</handler>   
+		</netRemoteCallHib>
+			
+		<netRemoteCallHib name="sendInvitationHash" funcname="invitationservice.sendInvitationHash" remotecontext="$once{ canvas.thishib }" >
+			<netparam name="sid"><method name="getValue">return canvas.sessionId;</method></netparam>
+			<netparam name="firstname"><method name="getValue">return parent.parent.firstname</method></netparam>
+			<netparam name="lastname"><method name="getValue">return parent.parent.lastname</method></netparam>
+			<netparam name="message"><method name="getValue">return this.parent.parent._message.getText();</method></netparam>
+			<netparam name="email"><method name="getValue">return parent.parent.email;</method></netparam>
+			<netparam name="subject"><method name="getValue">return this.parent.parent._subject.getText();</method></netparam>
+			<netparam name="roomid"><method name="getValue">return hib.currentroomid;</method></netparam>
+			<netparam name="conferencedomain"><method name="getValue">return hib.conferencedomain;</method></netparam>
+			<netparam name="ispasswordProtected"><method name="getValue">return parent.parent._ispasswordProtected.value;</method></netparam>
+			<netparam name="password"><method name="getValue">return parent.parent._password.getText();</method></netparam>
+			<netparam name="valid"><method name="getValue">return parent.parent._valid.value;</method></netparam>
+			<netparam name="validFromDate"><method name="getValue">return parent.parent._valid_from.getText();</method></netparam>
+			<netparam name="validFromTime"><method name="getValue">return parent.parent._timeFrom.getText();</method></netparam>
+			<netparam name="validToDate"><method name="getValue">return parent.parent._valid_to.getText();</method></netparam>
+			<netparam name="validToTime"><method name="getValue">return parent.parent._timeTo.getText();</method></netparam>
+			<netparam name="language_id"><method name="getValue">return parent.parent._languages.getValue();</method></netparam>
+			<netparam name="jNameTimeZone"><method name="getValue">return parent.parent._timeZone.getValue();</method></netparam>
+			<netparam name="sendMail"><method name="getValue">return !parent.parent.display;</method></netparam>
+			
+			<handler name="ondata" args="value">
+			<![CDATA[
+				//The onResult-Handler will be called be the rtmpconnection
+				if ($debug) Debug.write("sendInvitationHash : ",value);
+				if ($debug) Debug.write("sendInvitationHash : ", (typeof value));
+				if (typeof value == "object") {
+					if (parent.display) {
+						parent.send.setAttribute('enabled', true);
+						parent._message.setAttribute('enabled', true);
+						parent._subject.setAttribute('enabled', true);
+						parent._languages.setAttribute('enabled', true);
+						parent.currentHash = value.hash;
+						parent._url.setAttribute('text', parent.baseUrl + "?invitationHash=" + parent.currentHash + "&language=" + parent._languages.getValue());
+					} else {
+			    		parent.setAttribute('visibility', 'hidden');
+					}
+				} else {
+					new lz.errorPopup(canvas.main_content._content.inner,{error:value});
+				}
+			]]>
+			</handler>
+		</netRemoteCallHib>
+	</class>
+</library>
diff --git a/WebContent/src/modules/invitation/library.lzx b/WebContent/src/modules/invitation/library.lzx
new file mode 100644
index 0000000..df5c4ee
--- /dev/null
+++ b/WebContent/src/modules/invitation/library.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="autoloaderBarOnly.lzx" />
+	<include href="invitationQuickLoader.lzx" />
+	<include href="inviteMainWindow.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/library.lzx b/WebContent/src/modules/library.lzx
new file mode 100644
index 0000000..dd6fe01
--- /dev/null
+++ b/WebContent/src/modules/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="conference/" />
+	<include href="chat/" />
+	<include href="settings/" />
+	<include href="invitation/" />
+	<include href="dashboard/" />
+    <include href="sipintegration/" />
+	<include href="lzrecordcontent" />
+</library>
diff --git a/WebContent/src/modules/lzrecordcontent/library.lzx b/WebContent/src/modules/lzrecordcontent/library.lzx
new file mode 100644
index 0000000..eb17847
--- /dev/null
+++ b/WebContent/src/modules/lzrecordcontent/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+	<!-- APL author sebawagner -->
+	<resource name="flv_recorder_play_small_rsc" src="resources/webstart_play_small.png" />
+	<resource name="flv_progress_pointer_rsc" src="resources/progress_pointer.swf" />
+	<resource name="flv_recorder_stop_small_rsc" src="resources/webstart_stop_small.png" />
+</library>
diff --git a/WebContent/src/modules/lzrecordcontent/resources/progress_pointer.swf b/WebContent/src/modules/lzrecordcontent/resources/progress_pointer.swf
new file mode 100644
index 0000000..06eeb13
--- /dev/null
+++ b/WebContent/src/modules/lzrecordcontent/resources/progress_pointer.swf
Binary files differ
diff --git a/WebContent/src/modules/lzrecordcontent/resources/webstart_play_small.png b/WebContent/src/modules/lzrecordcontent/resources/webstart_play_small.png
new file mode 100644
index 0000000..a9a33ed
--- /dev/null
+++ b/WebContent/src/modules/lzrecordcontent/resources/webstart_play_small.png
Binary files differ
diff --git a/WebContent/src/modules/lzrecordcontent/resources/webstart_stop_small.png b/WebContent/src/modules/lzrecordcontent/resources/webstart_stop_small.png
new file mode 100644
index 0000000..6388bd8
--- /dev/null
+++ b/WebContent/src/modules/lzrecordcontent/resources/webstart_stop_small.png
Binary files differ
diff --git a/WebContent/src/modules/settings/library.lzx b/WebContent/src/modules/settings/library.lzx
new file mode 100644
index 0000000..3b48897
--- /dev/null
+++ b/WebContent/src/modules/settings/library.lzx
@@ -0,0 +1,72 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- APL Author sebawagner -->
+	<resource name="image_loading_placeholder_rsc" 
+			  src="resources/loading_symbol.swf" />
+	
+	<!-- APL Author sebawagner -->
+	<resource name="private_message_select_part_rsc" 
+			  src="resources/select_part.png" />	
+		
+	<!-- FamFam Icon Set -->
+	<resource name="private_message_send_rsc" 
+			  src="resources/email_go.png" />	 
+		
+	<!-- FamFam Icon Set -->
+	<resource name="private_message_add_rsc" 
+			  src="resources/email_add.png" />	
+		
+	<!-- FamFam Icon Set -->	  
+	<resource name="private_message_trash_rsc" 
+			  src="resources/email_delete.png" />	
+	
+	<!-- FamFam Icon Set -->
+	<resource name="private_message_folder_add_rsc" 
+			  src="resources/folder_add.png" />		
+	
+	<!-- FamFam Icon Set -->	  
+	<resource name="private_message_folder_rsc" 
+			  src="resources/folder.png" />	
+		
+	<!-- FamFam Icon Set -->	  
+	<resource name="private_message_inbox_rsc" 
+			  src="resources/basket_put.png" />	
+		
+	<!-- FamFam Icon Set -->	  
+	<resource name="user_contact_calendar_add_rsc" 
+              src="resources/calendar_add.png" />  
+	
+	<!-- FamFam Icon Set -->		  
+	<resource name="user_contact_calendar_delete_rsc" 
+              src="resources/calendar_delete.png" /> 
+      
+    <!-- FamFam Icon Set -->	        
+    <resource name="user_contact_calendar_system_undo_rsc" 
+              src="resources/arrow_undo.png" />   
+   
+    <include href="privatemessages/" />
+    <include href="usercontacts/" />
+    
+    <include href="viewUserProfile.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/settings/privatemessages/library.lzx b/WebContent/src/modules/settings/privatemessages/library.lzx
new file mode 100644
index 0000000..c8cf80f
--- /dev/null
+++ b/WebContent/src/modules/settings/privatemessages/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="newPrivateMessage.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx b/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx
new file mode 100644
index 0000000..82f5413
--- /dev/null
+++ b/WebContent/src/modules/settings/privatemessages/newPrivateMessage.lzx
@@ -0,0 +1,466 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="newPrivateMessage" extends="guiPresenter" labelid="1209" isdragable="false" 
+    minimizable="false" maximizable="false" fullToolBar="true" 
+    resizeable="false" width="250" height="154" >
+	
+	<attribute name="refObj" value="null"/>
+	
+	<attribute name="userObject" value="null" />
+	
+	<attribute name="user_id" value="0" type="number"/>
+	
+	<attribute name="parentMessageId" value="0" type="number" />
+	
+	<attribute name="receipents" value="null" />
+	
+	<attribute name="saveRefObj" value="null" />
+	
+	<handler name="oninit">
+		<![CDATA[
+			if (this.userObject != null) {
+				
+				var tString = this.userObject.firstname + ' ' + this.userObject.lastname  + ' ' 
+							+ '<' + this.userObject.adresses.email + '>';
+				
+				this._to.sendUpdateText = false;
+				this._to.setAttribute("text",tString);
+				this._to.sendUpdateText = true;
+			} else if (this.user_id != 0) {
+				this.getUserById.doCall();
+			}
+		]]>
+	</handler>
+	
+	<netRemoteCallHib name="getUserById" funcname="userservice.getUserById" remotecontext="$once{ canvas.thishib }" > 
+        <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue">return parent.parent.user_id;</method></netparam>
+        <handler name="ondata" args="value">
+       	<![CDATA[
+            if($debug) Debug.write("[admin]userValueForm/getUserById: ",value.lastname);
+            parent.userObject = value;
+            var tString = value.firstname + ' ' + value.lastname  + ' ' 
+                            + '<' + value.adresses.email + '>';
+                
+            parent._to.sendUpdateText = false;
+            parent._to.setAttribute("text",tString);
+            parent._to.sendUpdateText = true;
+        ]]>
+        </handler>
+    </netRemoteCallHib>
+	
+	<handler name="onclose">
+		if (this.refObj != null) {
+		    this.refObj.newMessageActive = false;
+		}
+	</handler>
+	
+	<method name="send">
+		<![CDATA[
+		
+			var tAString = this._to.getText().split(",");
+			
+			this.receipents = new Array();
+			
+			for (var i=0;i<tAString.length;i++) {
+				
+				var sString = tAString[i];
+				
+				var t1 = sString.indexOf("<");
+				var t2 = sString.indexOf(">");
+				
+				if ($debug) Debug.write("++ ",i,sString,t1,t2);
+				
+				var email = sString;
+				if (t1 > -1 && t2 > -1) {
+					email = sString.substring(t1 + 1, t2);
+				}
+				
+				if ($debug) Debug.write("++ ",email);
+				
+				this.receipents.push(email);
+				
+			}
+			
+			if ($debug) Debug.write("receipents :: ",this.receipents);
+			if ($debug) Debug.write("receipents :: ",this._richText.getText());
+			if ($debug) Debug.write("composeMail, parentId :: ",this.parentMessageId);
+		
+			this.composeMail.doCall();
+		]]>
+	</method>
+	
+	<!--
+	public Long composeMail(String SID, Map receipents, String subject, String message, Boolean bookedRoom, 
+    		Date validFromDate, String validFromTime, Date validToDate, String validToTime,
+    		Long parentMessageId, Long roomtype_id)
+	 -->
+	<netRemoteCallHib name="composeMail" funcname="userservice.composeMail" remotecontext="$once{ canvas.thishib }" >    
+    		
+    		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
+		    <netparam><method name="getValue">return parent.parent.receipents</method></netparam>
+            <netparam><method name="getValue">return parent.parent._subject.getText();</method></netparam>
+            <netparam><method name="getValue">return parent.parent._richText.getText();</method></netparam>
+            <netparam><method name="getValue">return parent.parent._bookRoom.getValue();</method></netparam>
+            <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent._valid_from.getDate());</method></netparam>
+            <netparam><method name="getValue">return parent.parent._timeFrom.getText();</method></netparam>
+            <netparam><method name="getValue">return parseDateToStringTimeSeconds(parent.parent._valid_to.getDate());</method></netparam>
+            <netparam><method name="getValue">return parent.parent._timeTo.getText();</method></netparam>
+            <netparam><method name="getValue">return parent.parent.parentMessageId;</method></netparam>
+            <netparam><method name="getValue">return Number(parent.parent._roomtype.getValue());</method></netparam>
+            <!--String domain, String port, String webapp-->
+            <netparam><method name="getValue"> return canvas.getHttpHost(); </method></netparam>
+            <netparam><method name="getValue"> return canvas.red5httpport; </method></netparam>
+            <netparam><method name="getValue"> return canvas.httpRootKey; </method></netparam>
+            <handler name="ondata" args="value">
+            	<![CDATA[
+                	//The onResult-Handler will be called be the rtmpconnection
+			if ($debug) Debug.write("composeMail : ",value);
+			if (parent.saveRefObj != null) {
+				parent.saveRefObj.saveNotification(parent._bookRoom.getValue());
+			}
+			parent.close();
+           ]]>
+		</handler>   
+	</netRemoteCallHib>	
+	
+	<labelText name="_labelTo" x="2" labelid="1210" y="24"/>
+	
+	<customScrollEdittext name="_to" y="22" x="80" width="$once{ parent.width-82 }" 
+						  text="" height="60">
+		
+		<attribute name="sendUpdateText" value="true" type="boolean"/>
+		<attribute name="sendSingleUpdateText" value="true" type="boolean"/>
+		
+		<handler name="oninit">
+			this.closeDelegate = new LzDelegate( this, "onblurFunction" );
+			this._list.refObj = this;
+			this._list.setAttribute("width",this.width);
+		</handler>
+		
+		<handler name="ontextChange" args="t">
+			<![CDATA[
+				if ($debug) Debug.write("-- ontextChange ",this.sendUpdateText,t);
+				
+				if (!this.sendUpdateText) {
+					return;
+				}
+				
+				var tAString = t.split(",");
+				
+				var tString = tAString[tAString.length-1];
+				
+				if ($debug) Debug.write("-1- tString ",tString);
+				
+				tString = tString.split(' ').join('');
+				
+				if ($debug) Debug.write("-2- tString ",tString);
+				
+				if (tString != "") {
+					
+					this.startSearch(tString);
+					
+				}
+				
+			]]>
+		</handler>
+		
+		<method name="addText" args="txt">
+			<![CDATA[
+			
+				if ($debug) Debug.write("-- addText ",txt);
+				
+				var t = this.getText();
+				var tAString = t.split(",");
+				
+				var nString = "";
+				
+				if ($debug) Debug.write("-- tAString.length ",tAString.length);
+				
+				for (var i=0; i<tAString.length-1; i++) {
+					if (i!=0) {
+						nString += ", ";
+					}
+					nString += tAString[i];
+					if ($debug) Debug.write("-- nString 1 ",nString);
+				}
+				
+				if ($debug) Debug.write("-- nString 2 ",nString);
+				
+				if (nString != "") {
+					nString += ", "
+				}
+				
+				nString += txt;
+				
+				if ($debug) Debug.write("-- nString 3 ",nString);
+				
+				this.sendUpdateText = false;
+				this.setAttribute("text",nString);
+				this.sendUpdateText = true;
+			
+			]]>
+		</method>
+		
+		<handler name="onblur">
+			<![CDATA[
+			
+				if (!this.sendUpdateText) {
+					return;
+				}
+				
+				lz.Timer.addTimer( this.closeDelegate, 10 );
+				
+			]]>
+		</handler>				
+				
+		<method name="onblurFunction" args="refObj" >
+			<![CDATA[
+				if ($debug) Debug.write("-- onblur");
+				
+				if (!this.sendSingleUpdateText) {
+					this.sendSingleUpdateText = true;
+					return;
+				}
+				
+				if (this._list.visibility == "visible") {
+					this._list.setAttribute("visibility","hidden");
+				}
+				
+				var t = this.getText();
+				var tAString = t.split(", ");
+				
+				var lastString = tAString[tAString.length-1];
+				
+				var lastChar = lastString.charAt(lastString.length-1);
+
+				if (lastChar != ">") {
+					var nString = "";
+					
+					for (var i=0;i<tAString.length-1;i++) {
+						if (i!=0) {
+							nString += ",";
+						}
+						nString += tAString[i];
+					}
+					
+					this.sendUpdateText = false;
+					this.setAttribute("text",nString);
+					this.sendUpdateText = true;
+					
+				}
+				
+			]]>
+		</method>
+		
+		<method name="startSearch" args="tString">
+			<![CDATA[
+			
+				if ($debug) Debug.write("startSearch :: ",tString);
+				var tResultA = new Array();
+				
+				for (var i=0; i<canvas.userContacts.length; i++) {
+					
+					if (canvas.userContacts[i].contact.firstname.startsWith(tString) 
+						|| canvas.userContacts[i].contact.lastname.startsWith(tString) 
+						|| canvas.userContacts[i].contact.adresses.email.startsWith(tString) ) {
+					
+						tResultA.push(canvas.userContacts[i]);
+							
+					}
+					
+				}
+				
+				if (tResultA.length > 0) {
+					this._list.removeAllItems();
+					
+					for (var k=0;k<tResultA.length;k++) {
+						
+						this._list.addItem(tResultA[k].contact.firstname +' '+ tResultA[k].contact.lastname + ' &#60;' + tResultA[k].contact.adresses.email + '&#62;', tResultA[k].contact.firstname +' '+ tResultA[k].contact.lastname + ' <' + tResultA[k].contact.adresses.email + '>'); 
+						
+					}
+					
+					
+				} else {
+					
+					this._list.removeAllItems();
+					
+					this._list.addItem("No Contact Found","0");
+					
+				}
+				
+				this.sendUpdateText = false;
+				this._list.sendUpdateAttr = false;
+				this._list.selectItemAt(0);
+				this._list.sendUpdateAttr = true;
+				
+				//lz.Focus.setFocus(this._list, true);
+				this.sendUpdateText = true;
+				
+				//this._list.setHilite(this._list.getItemAt(0));
+				this._list.setAttribute("visibility","visible");
+				
+				if ($debug) Debug.write("LIST :1: ",this._list.sendUpdateAttr);
+			
+			]]>
+		</method>
+		<floatinglist name="_list" width="100" 
+					  attach="bottom" visibility="hidden">
+			<attribute name="sendUpdateAttr" value="true" type="boolean"/>
+			<attribute name="refObj" value="null"/>
+			<handler name="onfocus">
+				if ($debug) Debug.write("onfocus");
+				this.refObj.sendSingleUpdateText = false;
+			</handler>
+			<handler name="onselect" args="sel">
+				if ($debug) Debug.write("onselect :1: ",this.sendUpdateAttr);
+				if (this.sendUpdateAttr) {
+					if ($debug) Debug.write("onselect :2: ",sel.value);
+					if (sel.value != "0") {
+						if ($debug) Debug.write("this.parent :: ",this.parent);
+						this.refObj.addText(sel.value);
+						this.setAttribute("visibility","hidden");
+					}
+				}
+			</handler>
+            <textlistitem text="one"/>
+            <textlistitem text="two"/>
+        </floatinglist>
+	</customScrollEdittext>
+	
+	<labelText name="_labelSubject" x="2" labelid="1211" y="86"/>
+	
+	<customEdittext name="_subject" y="84" x="80" width="$once{ parent.width-82 }" />
+
+	<customScrollEdittext name="_richText" y="108" clip="true" x="1"
+		width="$once{ parent.width-2 }" height="$once{ parent.height-225 }">
+		
+	</customScrollEdittext> 	
+	
+	<labelCheckbox name="_bookRoom" labelid="1218"
+				   width="270" y="$once{ parent.height-120 }" x="4">
+		<handler name="onvalue" args="v">
+			if ($debug) Debug.write("onvalue ",v);
+			if (parent._hideRoomConfig != null) {
+				parent._hideRoomConfig.setAttribute("visibility", v ? "hidden" : "visible");
+			}
+		</handler>
+	</labelCheckbox>
+	
+	<view name="_roomConfigBG" width="290" height="76" bgcolor="0xDDDDDD" 
+		   opacity="0.1" y="$once{ parent.height-104 }" x="2">
+	</view>
+	
+	<labelText labelid="194" width="200" y="$once{ parent.height-100 }" resize="false" x="4"/>  
+    <resetCombobox name="_roomtype" width="164" y="$once{ parent.height-100 }" x="120" editable="false" fontsize="11">
+        <handler name="oninit" >
+        <![CDATA[
+            for (var i=0;i<canvas.roomTypesInitValues.length;i++){
+                this.addItem(canvas.roomTypesInitValues[i].label.value,canvas.roomTypesInitValues[i].roomtypes_id);
+            }
+            this.selectItemAt(0);
+        ]]>
+        </handler> 
+    </resetCombobox> 
+        
+	<labelText labelid="1219" width="200" y="$once{ parent.height-76 }" resize="false" x="4"/>  
+	<dateField x="120" y="$once{ parent.height-76 }" name="_valid_from" 
+			   setDefaultToday="true" additionalDay="1" />		
+	<customEdittext name="_timeFrom" 
+					width="50" x="232" y="$once{ parent.height-76 }" 
+					regexpType="time">
+		<handler name="oninit">
+			<![CDATA[
+				var tDate = new Date();
+				var hour = tDate.getHours();
+				if (hour < 10) {
+					hour = "0"+hour;
+				}
+				
+				var minutes = tDate.getMinutes();
+				if (minutes < 15) {
+					minutes = "00";
+				} else if (minutes < 30) {
+					minutes = "15";
+				} else if (minutes < 45) {
+					minutes = "30";
+				} else {
+					minutes = "45";
+				}
+				
+				var hour2 = tDate.getHours()+1;
+				if (hour2 < 10) {
+					hour2 = "0"+hour2;
+				} else if (hour2 > 25) {
+					hour2 = 24;
+				}
+				
+				this.setAttribute("text",hour+":"+minutes);
+				parent._timeTo.setAttribute("text",hour2+":"+minutes);
+			]]>
+		</handler>
+	</customEdittext>
+        
+    <labelText labelid="1220" width="200" y="$once{ parent.height-52 }" resize="false" x="4"/>  
+	<dateField x="120" y="$once{ parent.height-52 }" name="_valid_to" 
+			   setDefaultToday="true" additionalDay="1" />		
+	<customEdittext name="_timeTo" 
+					width="50" x="232" y="$once{ parent.height-52 }" 
+					regexpType="time">
+	</customEdittext>
+	
+	<!-- allowUserQuestions Description -->          
+    <view resource="messagebox_info_rsc" x="302" y="$once{ parent.height-96 }" />
+    
+    <labelText labelid="1221" x="324" y="$once{ parent.height-96 }" fontstyle="italic"
+               multiline="true" width="$once{ parent.width-332 }" /> 
+	
+	<view name="_hideRoomConfig" width="290" height="76" bgcolor="0xFFFFFF" 
+		   opacity="0.6" y="$once{ parent.height-104 }" x="2">
+		<handler name="onclick">
+			parent._bookRoom.setValue(true);
+		</handler>
+	</view>
+		   
+	<!-- label: send -->
+	<simpleLabelButton labelid="218" x="$once{ parent.width-260 }" width="120" y="$once{ parent.height-26 }">
+		<handler name="onclick">
+			<![CDATA[
+                parent.baseUrl = canvas.getAppBaseUrl();
+				
+				parent.send();
+			]]>
+		</handler>
+	</simpleLabelButton>
+
+	<!-- label: cancel -->
+	<simpleLabelButton labelid="219" x="$once{ parent.width-130 }" width="120" y="$once{ parent.height-26 }">
+		<handler name="onclick">
+			parent.close();
+		</handler>
+	</simpleLabelButton>
+	   		   
+						  
+</class>	
+	
+</library>
diff --git a/WebContent/src/modules/settings/resources/arrow_undo.png b/WebContent/src/modules/settings/resources/arrow_undo.png
new file mode 100644
index 0000000..6972c5e
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/arrow_undo.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/basket_delete.png b/WebContent/src/modules/settings/resources/basket_delete.png
new file mode 100644
index 0000000..1349974
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/basket_delete.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/basket_put.png b/WebContent/src/modules/settings/resources/basket_put.png
new file mode 100644
index 0000000..be62faa
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/basket_put.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/calendar_add.png b/WebContent/src/modules/settings/resources/calendar_add.png
new file mode 100644
index 0000000..17679db
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/calendar_add.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/calendar_delete.png b/WebContent/src/modules/settings/resources/calendar_delete.png
new file mode 100644
index 0000000..69a3b10
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/calendar_delete.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/email_add.png b/WebContent/src/modules/settings/resources/email_add.png
new file mode 100644
index 0000000..6c93368
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/email_add.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/email_delete.png b/WebContent/src/modules/settings/resources/email_delete.png
new file mode 100644
index 0000000..a9932b1
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/email_delete.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/email_go.png b/WebContent/src/modules/settings/resources/email_go.png
new file mode 100644
index 0000000..4a6c5d3
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/email_go.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/folder.png b/WebContent/src/modules/settings/resources/folder.png
new file mode 100644
index 0000000..784e8fa
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/folder.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/folder_add.png b/WebContent/src/modules/settings/resources/folder_add.png
new file mode 100644
index 0000000..529fe8f
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/folder_add.png
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/loading_symbol.fla b/WebContent/src/modules/settings/resources/loading_symbol.fla
new file mode 100644
index 0000000..59efc05
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/loading_symbol.fla
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/loading_symbol.swf b/WebContent/src/modules/settings/resources/loading_symbol.swf
new file mode 100644
index 0000000..703fae7
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/loading_symbol.swf
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/select_part.fla b/WebContent/src/modules/settings/resources/select_part.fla
new file mode 100644
index 0000000..57b97e3
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/select_part.fla
Binary files differ
diff --git a/WebContent/src/modules/settings/resources/select_part.png b/WebContent/src/modules/settings/resources/select_part.png
new file mode 100644
index 0000000..fbd6488
--- /dev/null
+++ b/WebContent/src/modules/settings/resources/select_part.png
Binary files differ
diff --git a/WebContent/src/modules/settings/usercontacts/library.lzx b/WebContent/src/modules/settings/usercontacts/library.lzx
new file mode 100644
index 0000000..80e47c5
--- /dev/null
+++ b/WebContent/src/modules/settings/usercontacts/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="userContacts.lzx" />
+
+</library>
diff --git a/WebContent/src/modules/settings/usercontacts/userContacts.lzx b/WebContent/src/modules/settings/usercontacts/userContacts.lzx
new file mode 100644
index 0000000..9e25868
--- /dev/null
+++ b/WebContent/src/modules/settings/usercontacts/userContacts.lzx
@@ -0,0 +1,530 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="userContacts" extends="view" height="${ parent.height }"
+	   width="276" x="$once{ canvas.width-this.width + 2 }">
+	
+	<method name="reload">
+		this._pendingContacts._table.getPendingUserContacts.doCall();
+		this._availableContacts._table.getUserContacts.doCall();
+	</method>
+	
+	<!--
+	public Long changePendingStatusUserContacts(
+		String SID, Long userContactId, Boolean pending) {
+	 -->
+	<view name="_pendingContacts" height="$once{ parent.height/2 }" >
+		
+		<!--
+		public List<UserContacts> getPendingUserContacts(String SID)
+		 -->
+		<handler name="oninit">
+			this._table.getPendingUserContacts.doCall();
+		</handler> 
+	    		 
+		
+		<labelText name="_labelPendingUsers" x="2" labelid="1189" fontstyle="bold" />
+		
+		<turnOverListOrderedPaged name="_table" showTopBar="false" x="2" 
+					  height="$once{ parent.height }" 
+		             y="0" itemHeight="40" listLabelId="1184" headerHeight="22" 
+		             listItemName="pendingContactsListItem" menuBarXIndent="100"
+		             multiselect="false" width="270">
+			
+			<netRemoteCallHib name="getPendingUserContacts" funcname="userservice.getPendingUserContacts" 
+					  remotecontext="$once{ canvas.thishib }" >      
+				<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		    	<handler name="ondata" args="value">
+		    		<![CDATA[
+			    		if ($debug) Debug.write("getPendingUserContacts: ",value);
+			    		
+			    		this.parent.initValues(value.length);
+			    		
+			    		if (value.length == 0) {
+			    			parent.parent.setAttribute("height",20);
+			    			parent.setAttribute("visibility","hidden");
+			    		}
+			    		
+			    		this.parent.parent._labelPendingUsers.setAttribute("text",canvas.getLabelName(this.parent.parent._labelPendingUsers.labelid)+' <i>( '+value.length+' </i>)');  
+			    		
+			    		var tResult = new Array();
+			    		for (var t=0;t<value.length;t++) {
+			    			for (var i=0;i<canvas.salutationsInitValues.length;i++){
+			    				if (canvas.salutationsInitValues[i].salutations_id == value[t].owner.salutations_id) {
+					                value[t].owner["title"] = canvas.salutationsInitValues[i].label.value;
+					                break;
+			    				}
+				            }
+			    			tResult.push(value[t]);
+			    		}
+			    		
+			    		this.parent.renderContent(tResult);
+			    		
+		    		]]>
+		    	</handler>
+		    </netRemoteCallHib>	
+		
+			<handler name="oninit">
+	            this.addHeaderItem(1180,190);
+	            this.addHeaderItem(1185,60);
+	        </handler>
+	        
+	        <handler name="onclickedItem" args="refObj">
+	            <![CDATA[
+	            
+	                if ($debug) Debug.write("onclickedItem ",refObj.refObj.userContactId);
+	                
+	            ]]>
+	        </handler>
+	        
+	        <method name="setPendingStatus" args="userContactId,pending">
+	            <![CDATA[
+	            
+	                if ($debug) Debug.write("setPendingStatus ",userContactId,pending);
+	                
+	                this.changePendingStatusUserContacts.pending = pending;
+	                this.changePendingStatusUserContacts.userContactId = userContactId;
+	                this.changePendingStatusUserContacts.doCall();
+	            ]]>
+	        </method>
+	        
+	        <!--
+			public Long changePendingStatusUserContacts(String SID, Long userContactId, Boolean pending)
+			 -->
+		    <netRemoteCallHib name="changePendingStatusUserContacts" funcname="userservice.changePendingStatusUserContacts" 
+						  remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >      
+				<attribute name="userContactId" value="0" type="number" />
+				<attribute name="pending" value="true" type="boolean" />
+				<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+				<netparam><method name="getValue"> return parent.userContactId; </method></netparam>
+		    	<netparam><method name="getValue"> return parent.pending; </method></netparam>
+		    	<handler name="ondata" args="value">
+		    		<![CDATA[
+			    		if ($debug) Debug.write("changePendingStatusUserContacts: ",value);
+			    		parent.parent.parent.reload();
+		    		]]>
+		    	</handler>
+		    </netRemoteCallHib>	
+	        
+	        <method name="updatePendingStatus" args="itemId">
+	        	this.renderList[itemId]["pending"] = true;
+	        </method>
+	        
+	        <method name="renderContent" args="rList">
+	            <![CDATA[
+	            
+	            	this.renderList = rList;
+	            
+	                this.isLoaded = true;
+	                var list = this._innerlist._inn._inn;
+	                
+	                if (this.renderList == null) {
+	                	this.renderList = new Array();
+	                }
+	                //this.renderList = records;
+	                var records = this.renderList;
+	                this._innerlist._inn.setAttribute("y",0);
+	                this._innerlist._inn._inn.setAttribute("height",records.length*this.itemHeight);
+	                this._innerlist._inn.resetItems();
+	                
+	                if ($debug) Debug.write(":: renderContent ::",this.renderList.length,list.subviews.length);
+	                
+	                this._records.setAttribute("text",records.length);
+	                
+	                for (var i=0;i<list.subviews.length;i++){
+	                    
+	                    //if (i % 2 == 0) {
+	                    //    list.subviews[i].setIsSecond(true);
+	                    //} else {
+	                    //    list.subviews[i].setIsSecond(false);
+	                    //}
+	                    
+	                    if (records.length > i) {
+	                    	
+	                    	//if ($debug) Debug.write("Render Item ",records[i]);
+	                        
+	                        list.subviews[i].setAttribute("clickable",true);
+	                        list.subviews[i].refObj = records[i];
+	                        
+	                        if (records[i]["isselected"] && records[i].isselected) {
+	                            list.subviews[i].isselected = true;
+	                        } else {
+	                            list.subviews[i].isselected = false;
+	                        }
+	                        
+	                        list.subviews[i].setAttribute("username",records[i].owner.title + ' ' + records[i].owner.firstname+' '+records[i].owner.lastname);
+	                        
+	                        list.subviews[i].setAttribute("itemId",i);
+	                        
+	                    } else {
+	                        
+	                        list.subviews[i].refObj = null;
+	                        
+	                        list.subviews[i].isselected = false;
+	                        list.subviews[i].onmouseout.sendEvent();
+	                        
+	                        list.subviews[i].setAttribute("username",'');
+	                        
+	                        list.subviews[i].setAttribute("itemId","");
+	                        
+	                        list.subviews[i].setAttribute("clickable",false);
+	                        
+	                    }
+	                    
+	                }
+	                
+	                
+	                this.sendInitialWidthUpdate();
+	                
+	            ]]>
+	        </method>   
+		        
+	        <handler name="onScrollItem" args="item">
+	            <![CDATA[
+	                if (this.renderList.length > item.itemId) {
+	                    item.setAttribute("clickable",true);
+	                    item.refObj = this.renderList[item.itemId];
+	                    
+	                    //if (item.itemId % 2 == 0) {
+	                    //    item.setIsSecond(true);
+	                    //} else {
+	                    //    item.setIsSecond(false);
+	                    //}
+	                    
+	                    if (this.renderList[item.itemId]["isselected"] && this.renderList[item.itemId].isselected) {
+	                        item.isselected = true;
+	                        item.onmouseout.sendEvent();
+	                    } else {
+	                        item.isselected = false;
+	                        item.onmouseout.sendEvent();
+	                    }
+	                    
+	                    //if ($debug) Debug.write(item.itemId);
+	                    
+	                    item.setAttribute("username",this.renderList[item.itemId].owner.title + ' ' + this.renderList[item.itemId].owner.firstname+' '+this.renderList[item.itemId].owner.lastname);
+	                        
+	                    item.setAttribute("itemId",item.itemId);
+	                    
+	                } else {
+	                    
+	                    //if (item.itemId % 2 == 0) {
+	                    //    item.setIsSecond(true);
+	                    //} else {
+	                    //    item.setIsSecond(false);
+	                    //}
+	                    
+	                    item.isselected = false;
+	                    item.onmouseout.sendEvent();
+	                    
+	                    item.refObj = null;
+	                    
+	                    item.setAttribute("username","");
+	                    
+	                    item.setAttribute("itemId","");
+	                    
+	                    item.setAttribute("clickable",false);
+	                }
+	                
+	            ]]>
+	        </handler>
+	        
+			
+		</turnOverListOrderedPaged>
+		
+	</view> 
+	
+	<view name="_availableContacts" y="${ parent._pendingContacts.height + 2 }"
+		  height="${ parent.height - parent._pendingContacts.height - 4 }">
+		
+		
+		<!--
+		public List<UserContacts> getPendingUserContacts(String SID)
+		 -->
+		<handler name="oninit">
+			this._table.getUserContacts.doCall();
+		</handler> 
+		
+		<handler name="onheight" args="h">
+			this._table.renderByHeightChange();
+		</handler>
+	    		 
+		
+		<labelText name="_labelPendingUsers" x="2" labelid="1188" fontstyle="bold" />
+		
+		<turnOverListOrderedPaged name="_table" showTopBar="false" x="2" height="${ parent.height }" 
+		             y="0" itemHeight="40" listLabelId="1184" headerHeight="22" 
+		             listItemName="contactsListItem" menuBarXIndent="100"
+		             multiselect="false" width="270">
+			
+	        <method name="renderByHeightChange" >
+        	
+	        	this.clearList();
+	        	this._innerlist._inn.initItems(this.listItemName);
+	        	
+	        	this.renderContent(this.renderList);
+	        </method>
+			
+			<netRemoteCallHib name="getUserContacts" funcname="userservice.getUserContacts" 
+					  remotecontext="$once{ canvas.thishib }" >      
+				<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		    	<handler name="ondata" args="value">
+		    		<![CDATA[
+			    		if ($debug) Debug.write("getUserContacts: ",value);
+			    		
+			    		canvas.userContacts = value;
+			    		
+			    		this.parent.initValues(value.length);
+			    		
+			    		this.parent.parent._labelPendingUsers.setAttribute("text",canvas.getLabelName(this.parent.parent._labelPendingUsers.labelid)+' <i>( '+value.length+' </i>)')
+			    		
+			    		var tResult = new Array();
+			    		for (var t=0;t<value.length;t++) {
+			    			value[t].contact["shareCalendar"] = value[t].shareCalendar;
+			    			value[t].contact["pending"] = value[t].pending;
+			    			value[t].contact["userContactId"] = value[t].userContactId;
+			    			for (var i=0;i<canvas.salutationsInitValues.length;i++){
+			    				if (canvas.salutationsInitValues[i].salutations_id == value[t].contact.salutations_id) {
+					                value[t].contact["title"] = canvas.salutationsInitValues[i].label.value;
+					                break;
+			    				}
+				            }
+			    			tResult.push(value[t].contact);
+			    		}
+			    		
+			    		this.parent.renderContent(tResult);
+			    		
+		    		]]>
+		    	</handler>
+		    </netRemoteCallHib>	
+		
+			<handler name="oninit">
+	            this.addHeaderItem(1180,170);
+	            this.addHeaderItem(1185,80);
+	        </handler>
+	        
+	        <handler name="onclickedItem" args="refObj">
+	            <![CDATA[
+	            
+	                if ($debug) Debug.write("onclickedItem ",refObj.refObj.userContactId);
+	                
+	            ]]>
+	        </handler>
+	        
+	        <method name="addMessage" args="userObject">
+	        	parent.parent.parent._privateMessages.newMessage(userObject);
+	        </method>
+	        
+	        <method name="removeContactUserMethod" args="userContactId">
+	            <![CDATA[
+	            
+	                if ($debug) Debug.write("removeUser ",userContactId,pending);
+	                
+	                this.removeContactUser.userContactId = userContactId;
+	                this.removeContactUser.doCall();
+	            ]]>
+	        </method>
+	        
+	        <!--
+			public Integer removeContactUser(String SID, Long userContactId)
+			 -->
+		    <netRemoteCallHib name="removeContactUser" funcname="userservice.removeContactUser" 
+						  remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >      
+				<attribute name="userContactId" value="0" type="number" />
+				<attribute name="pending" value="true" type="boolean" />
+				<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+				<netparam><method name="getValue"> return parent.userContactId; </method></netparam>
+		    	<handler name="ondata" args="value">
+		    		<![CDATA[
+			    		if ($debug) Debug.write("removeContactUser: ",value);
+			    		parent.parent.parent.reload();
+		    		]]>
+		    	</handler>
+		    </netRemoteCallHib>	
+		    
+		    <method name="setCalendarSharing" args="userContactId,doShare">
+                <![CDATA[
+                
+                    if ($debug) Debug.write("setPendingStatus ",userContactId,doShare);
+                    
+                    this.shareCalendarUserContact.doShare = doShare;
+                    this.shareCalendarUserContact.userContactId = userContactId;
+                    this.shareCalendarUserContact.doCall();
+                ]]>
+            </method>
+            
+            <!--
+            public void shareCalendarUserContact(String SID, Long userContactId, Boolean shareCalendar)
+             -->
+            <netRemoteCallHib name="shareCalendarUserContact" funcname="userservice.shareCalendarUserContact" 
+                          remotecontext="$once{ canvas.thishib }"  >      
+                <attribute name="userContactId" value="0" type="number" />
+                <attribute name="doShare" value="true" type="boolean" />
+                <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+                <netparam><method name="getValue"> return parent.userContactId; </method></netparam>
+                <netparam><method name="getValue"> return parent.doShare; </method></netparam>
+                <handler name="ondata" args="value">
+                    <![CDATA[
+                        if ($debug) Debug.write("changePendingStatusUserContacts: ",value);
+                        parent.parent.parent.reload();
+                    ]]>
+                </handler>
+            </netRemoteCallHib> 
+	        
+	        <method name="renderContent" args="rList">
+	            <![CDATA[
+	            
+	            	this.renderList = rList;
+	            
+	                this.isLoaded = true;
+	                var list = this._innerlist._inn._inn;
+	                
+	                if (this.renderList == null) {
+	                	this.renderList = new Array();
+	                }
+	                //this.renderList = records;
+	                var records = this.renderList;
+	                this._innerlist._inn.setAttribute("y",0);
+	                this._innerlist._inn._inn.setAttribute("height",records.length*this.itemHeight);
+	                this._innerlist._inn.resetItems();
+	                
+	                if ($debug) Debug.write(":: renderContent ::",this.renderList.length,list.subviews.length);
+	                
+	                this._records.setAttribute("text",records.length);
+	                
+	                for (var i=0;i<list.subviews.length;i++){
+	                    
+	                    //if (i % 2 == 0) {
+	                    //    list.subviews[i].setIsSecond(true);
+	                    //} else {
+	                    //    list.subviews[i].setIsSecond(false);
+	                    //}
+	                    
+	                    if (records.length > i) {
+	                    	
+	                    	//if ($debug) Debug.write("Render Item ",records[i]);
+	                        
+	                        list.subviews[i].setAttribute("clickable",true);
+	                        list.subviews[i].refObj = records[i];
+	                        
+	                        if (records[i]["isselected"] && records[i].isselected) {
+	                            list.subviews[i].isselected = true;
+	                        } else {
+	                            list.subviews[i].isselected = false;
+	                        }
+	                        
+	                        var shareCalendar = records[i].shareCalendar;
+                            if (shareCalendar == null) {
+                                shareCalendar = false;
+                            }
+                        
+	                        list.subviews[i].setAttribute("shareCalendar",shareCalendar);
+	                        list.subviews[i].setAttribute("username",records[i].title + ' ' + records[i].firstname+' '+records[i].lastname);
+	                        
+	                        list.subviews[i].setAttribute("itemId",i);
+	                        
+	                    } else {
+	                        
+	                        list.subviews[i].refObj = null;
+	                        
+	                        list.subviews[i].isselected = false;
+	                        list.subviews[i].onmouseout.sendEvent();
+	                        
+	                        list.subviews[i].setAttribute("shareCalendar",false);
+	                        list.subviews[i].setAttribute("username",'');
+	                        
+	                        list.subviews[i].setAttribute("itemId","");
+	                        
+	                        list.subviews[i].setAttribute("clickable",false);
+	                        
+	                    }
+	                    
+	                }
+	                
+	                
+	                this.sendInitialWidthUpdate();
+	                
+	            ]]>
+	        </method>   
+		        
+	        <handler name="onScrollItem" args="item">
+	            <![CDATA[
+	                if (this.renderList.length > item.itemId) {
+	                    item.setAttribute("clickable",true);
+	                    item.refObj = this.renderList[item.itemId];
+	                    
+	                    //if (item.itemId % 2 == 0) {
+	                    //    item.setIsSecond(true);
+	                    //} else {
+	                    //    item.setIsSecond(false);
+	                    //}
+	                    
+	                    if (this.renderList[item.itemId]["isselected"] && this.renderList[item.itemId].isselected) {
+	                        item.isselected = true;
+	                        item.onmouseout.sendEvent();
+	                    } else {
+	                        item.isselected = false;
+	                        item.onmouseout.sendEvent();
+	                    }
+	                    
+	                    //if ($debug) Debug.write(item.itemId);
+	                    var shareCalendar = this.renderList[item.itemId].shareCalendar;
+	                    if (shareCalendar == null) {
+	                    	shareCalendar = false;
+	                    }
+	                    
+	                    item.setAttribute("shareCalendar",shareCalendar);
+	                    item.setAttribute("username",this.renderList[item.itemId].title + ' ' + this.renderList[item.itemId].firstname+' '+this.renderList[item.itemId].lastname);
+	                        
+	                    item.setAttribute("itemId",item.itemId);
+	                    
+	                } else {
+	                    
+	                    //if (item.itemId % 2 == 0) {
+	                    //    item.setIsSecond(true);
+	                    //} else {
+	                    //    item.setIsSecond(false);
+	                    //}
+	                    
+	                    item.isselected = false;
+	                    item.onmouseout.sendEvent();
+	                    
+	                    item.refObj = null;
+	                    
+	                    item.setAttribute("shareCalendar",false);
+	                    item.setAttribute("username","");
+	                    
+	                    item.setAttribute("itemId","");
+	                    
+	                    item.setAttribute("clickable",false);
+	                }
+	                
+	            ]]>
+	        </handler>
+	        
+			
+		</turnOverListOrderedPaged>
+		
+	</view>
+	
+</class>
+
+</library>
diff --git a/WebContent/src/modules/settings/viewUserProfile.lzx b/WebContent/src/modules/settings/viewUserProfile.lzx
new file mode 100644
index 0000000..9a76378
--- /dev/null
+++ b/WebContent/src/modules/settings/viewUserProfile.lzx
@@ -0,0 +1,291 @@
+<?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.
+  
+-->
+<library>
+	
+<class name="viewUserProfileWindow" extends="guiPresenter" labelid="1235" isdragable="true" 
+    minimizable="true" maximizable="false" fullToolBar="true" y="100" x="$once{ (parent.width-this.width)/2 }"
+    resizeable="false" width="470" height="$once{ parent.height-this.y-10 }" >
+	
+	<attribute name="userId" value="0" type="number"/>
+	
+	<handler name="oninit">
+		this.getUserById.doCall();
+	</handler>
+	
+	<!--
+	public Users getUserById(String SID, long user_id)
+	 -->
+	<netRemoteCallHib name="getUserById" funcname="userservice.getUserById" 
+			  remotecontext="$once{ canvas.thishib }" >      
+		<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+		<netparam><method name="getValue"> return parent.parent.userId; </method></netparam>
+    	<handler name="ondata" args="value">
+   		<![CDATA[
+    		parent.setAttribute("title",parent.title+" "+value.firstname+" "+value.lastname);
+    		this.parent.viewUserProfile.viewUserProfile.initFields(value);
+   		]]>
+    	</handler>
+    </netRemoteCallHib>	
+	
+    <!--
+    public Long requestUserToContactList(String SID, Long userToAdd_id, 
+                String domain, String port, String webapp)
+     -->
+    <netRemoteCallHib name="requestUserToContactList" funcname="userservice.requestUserToContactList" 
+                  remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >      
+        <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue"> return parent.parent.viewUserProfile.viewUserProfile.userObject.user_id; </method></netparam>
+        <netparam><method name="getValue"> return canvas.getHttpHost(); </method></netparam>
+        <netparam><method name="getValue"> return canvas.red5httpport; </method></netparam>
+        <netparam><method name="getValue"> return canvas.httpRootKey; </method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("requestUserToContactList: ",value);
+                if (value > 0) {
+                    new lz.labelerrorPopup(canvas,{labelid:1267,errorlabelid:1266});
+                }
+            ]]>
+        </handler>
+    </netRemoteCallHib> 
+	
+	<view name="viewUserProfile" y="24" height="$once{ parent.height-60 }" 
+		  width="$once{ parent.width-2 }" clip="true">
+		
+		<viewUserProfile name="viewUserProfile" />
+		
+		<om_vscrollbar />
+		
+	</view>
+	
+	<simpleLabelButton labelid="1253" width="190" x="5" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+            new lz.newPrivateMessage(canvas,{
+                                x:200,y:120,
+                                refObj:null,
+                                minimizable:true,
+                                maximizable:true,
+                                isdragable:true,
+                                userObject:null,
+                                user_id:parent.viewUserProfile.viewUserProfile.userObject.user_id,
+                                width:canvas.width-300,
+                                height:canvas.height-130
+                            });
+        </handler>
+    </simpleLabelButton>  
+	
+	<simpleLabelButton labelid="1186" width="160" x="$once{ parent.width - 270 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		if (hib.userobject.user_id == parent.viewUserProfile.viewUserProfile.userObject.user_id) {
+                new lz.labelerrorPopup(canvas,{errorlabelid:1225});
+                return;
+            }
+            parent.requestUserToContactList.doCall();
+    	</handler>
+    </simpleLabelButton>   
+	
+    <simpleLabelButton labelid="61" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		this.parent.close();
+    	</handler>
+    </simpleLabelButton>
+	
+</class>	
+	
+<!--- User Profile Setting Panel -->
+<class name="viewUserProfile" extends="view" >
+	
+	<attribute name="userObject" value="null" />
+			
+	<method name="initFields" args="obj">
+    	<![CDATA[
+    	    this.userObject = obj;
+	        this._userpic.setAttribute('src', canvas.getPictureUrl(obj.pictureuri
+				, '&moduleName=remoteuserprofile&remoteUserid='+obj.user_id));
+	        
+	        var tUserName = "<u><FONT color='#0000CC'><a href='asfunction:_root.searchUsers,"+ this.removeWhitespace(obj.firstname) +"'>" + this.removeWhitespace(obj.firstname) + "</a></FONT></u>";
+    			
+	        tUserName += " <u><FONT color='#0000CC'><a href='asfunction:_root.searchUsers,"+ this.removeWhitespace(obj.lastname) +"'>" + this.removeWhitespace(obj.lastname) + "</a></FONT></u>";
+
+    		this.timezone.setAttribute("text",this.userObject.timeZoneId);
+    	
+    		this.username.setAttribute("text",tUserName);
+    		
+    		this.memberSince.setAttribute("text",parseDateToString(this.userObject.starttime));
+    		
+    		var aOfferings = obj.userOffers.split(",");
+    		
+    		var tOfferings = "";
+    		
+    		for (var t=0;t<aOfferings.length;t++) {
+    			
+    			tOfferings += "<u><FONT color='#0000CC'><a href='asfunction:_root.searchOffers,"+ this.removeWhitespace(aOfferings[t]) +"'>" + this.removeWhitespace(aOfferings[t]) + "</a></FONT></u>";
+    			
+    			if (t+1 < aOfferings.length) {
+    				tOfferings += ", ";
+    			}
+    		}
+    		
+    		this.userOffers._text.setAttribute("text",tOfferings);
+    		
+    		
+    		var aSearchs = obj.userSearchs.split(",");
+    		
+    		var tSearchs = "";
+    		
+    		for (var t=0;t<aSearchs.length;t++) {
+    			
+    			tSearchs += "<u><FONT color='#0000CC'><a href='asfunction:_root.searchInterest,"+ this.removeWhitespace(aSearchs[t]) +"'>" + this.removeWhitespace(aSearchs[t]) + "</a></FONT></u>";
+    			
+    			if (t+1 < aSearchs.length) {
+    				tSearchs += ", ";
+    			}
+    		}
+    		
+    		this.userSearchs._text.setAttribute("text",tSearchs);
+    		
+    		if (hib.userobject.user_id == this.userObject.user_id) {
+    			//Self always show
+    			this.showUserContactData();
+    		} else if (obj.showContactData) {
+    			this.showUserContactData();
+    		}  else if (obj.showContactDataToContacts) {
+                this.checkUserIsInContactList.doCall();
+            } else {
+    			this.userContactData.setAttribute("text",canvas.getLabelName(1268));
+    		}
+    		
+    	
+    	]]>
+	</method>
+	
+	<!--
+	public Boolean checkUserIsInContactList(String SID, Long user_id)
+	 -->
+	<netRemoteCallHib name="checkUserIsInContactList" funcname="userservice.checkUserIsInContactList" 
+              remotecontext="$once{ canvas.thishib }" >      
+        <netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
+        <netparam><method name="getValue"> return parent.parent.userObject.user_id; </method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("checkUserIsInContactList: ",value);
+                
+                if (value){
+                    parent.showUserContactData();
+                } else {
+                    parent.userContactData.setAttribute("text",canvas.getLabelName(1269));
+                }
+                
+            ]]>
+        </handler>
+    </netRemoteCallHib> 
+
+	<method name="showUserContactData">
+		<![CDATA[
+		
+			var tString = canvas.getNotNullString(this.userObject.adresses.street) + " " + canvas.getNotNullString(this.userObject.adresses.additionalname) + "<br/>";
+			tString += canvas.getNotNullString(this.userObject.adresses.zip) + " " + canvas.getNotNullString(this.userObject.adresses.town) + "<br/>";
+			tString += canvas.getNotNullString(this.userObject.adresses.states.name) + "<br/><br/>";
+			tString += canvas.getNotNullString(this.userObject.adresses.email) + "<br/>";
+			tString += canvas.getNotNullString(this.userObject.adresses.phone) + "<br/><br/>";
+			tString += canvas.getNotNullString(this.userObject.adresses.comment) + "<br/>";
+
+			this.userContactData.setAttribute("text",tString);
+
+		]]>
+	</method>
+	
+	<method name="removeWhitespace" args="str">
+		<![CDATA[
+		
+			//if ($debug) Debug.write("removeWhitespace 1 ",str);
+			//if ($debug) Debug.write("removeWhitespace 2 ",str.length);
+		
+			var tResultingString = "";
+			
+			for (var i=0;i<str.length;i++) {
+				
+				var tChar = str.substring(i,i+1);
+				
+				if (tChar != " ") {
+					tResultingString = str.substring(i,str.length);
+					break;
+				}
+				
+			}
+			
+			for (var i=tResultingString.length;i>0;i--) {
+				
+				var tChar = tResultingString.substring(i-1,i);
+				
+				if (tChar != " ") {
+					tResultingString = tResultingString.substring(0,i);
+					break;
+				}
+				
+			}
+			
+			
+			return tResultingString;
+			
+		
+		]]>
+	</method>
+	
+	<image y="10" x="10" name="_userpic" />
+	
+	<view x="180" width="260" y="10" height="120" bgcolor="0xFFFFFF" />
+	
+	<labelText name="usernameLabel" x="180" y="10" labelid="1164" />
+	<labelText name="username" x="260" y="10" />
+	
+	<labelText name="timezoneLabel" x="180" y="30" labelid="1165" />
+	<labelText name="timezone" x="260" y="30" />
+	
+	<labelText name="memberSinceLabel" x="180" y="50" labelid="1296" />
+    <labelText name="memberSince" x="260" y="50" />
+	
+	<labelText name="userFields" x="10" y="140" labelid="1166" fontstyle="bold" />
+	
+	<labelText name="userOffersLabel" x="10" y="160" labelid="1162" />
+	
+	<view name="userOffers" x="120" y="160" height="100" width="320" clip="true" bgcolor="0xFFFFFF">
+		<labelText name="_text" multiline="true" width="$once{ parent.width- 16 }" />
+		<om_vscrollbar />
+	</view>
+	
+	<labelText name="userSearchsLabel" x="10" y="270" labelid="1163" />
+	
+	<view name="userSearchs" x="120" y="270" height="100" width="320" clip="true" bgcolor="0xFFFFFF">
+		<labelText name="_text" multiline="true" width="$once{ parent.width- 16 }" />
+		<om_vscrollbar />
+	</view>
+	
+	<labelText name="userContact" x="10" y="380" labelid="1167" fontstyle="bold" />
+	
+	<labelText x="10" y="400" labelid="1270" />
+	
+	<labelText name="userContactData" x="120" y="400" multiline="true" width="320" 
+			   selectable="true" bgcolor="0xFFFFFF" resize="false" />
+	    	
+</class>
+
+
+</library>
diff --git a/WebContent/src/modules/sipintegration/library.lzx b/WebContent/src/modules/sipintegration/library.lzx
new file mode 100644
index 0000000..a0c1e01
--- /dev/null
+++ b/WebContent/src/modules/sipintegration/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+	
+    <include href="sipLoader.lzx" />
+    
+</library>
diff --git a/WebContent/src/modules/sipintegration/sipLoader.lzx b/WebContent/src/modules/sipintegration/sipLoader.lzx
new file mode 100644
index 0000000..e948029
--- /dev/null
+++ b/WebContent/src/modules/sipintegration/sipLoader.lzx
@@ -0,0 +1,34 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="sipLoader" extends="view" bgcolor="0xFFFFFF"
+	   align="center" valign="middle" 
+	   width="${ this._label.width + 50 }" height="40">
+
+    <view resource="warning_icon_rsc" x="10" y="10" />
+
+    <labelText labelid="900" name="_label"
+    		   fontsize="11" y="10" x="40" />
+    
+</class>
+
+</library>
diff --git a/WebContent/src/plugins/library.lzx b/WebContent/src/plugins/library.lzx
new file mode 100644
index 0000000..417d2c6
--- /dev/null
+++ b/WebContent/src/plugins/library.lzx
@@ -0,0 +1,29 @@
+<?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.
+  
+-->
+<library>
+
+    <!-- Add the Folder and Entry for your Plugin here -->
+
+    <!--
+    <include href="livewall/"/>
+     -->
+	
+</library>
diff --git a/WebContent/src/resources/library.lzx b/WebContent/src/resources/library.lzx
new file mode 100644
index 0000000..37cd9c5
--- /dev/null
+++ b/WebContent/src/resources/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+
+<!-- FamFam Icon Set -->
+<resource name="user_moderator_list_apply_rsc" src="tick.png" />
+
+<!-- add for calendar -->
+<!-- FamFam Icon Set -->
+<resource name="user_profile_rsc" src="user.png" />
+
+</library>
diff --git a/WebContent/src/resources/tick.png b/WebContent/src/resources/tick.png
new file mode 100644
index 0000000..a9925a0
--- /dev/null
+++ b/WebContent/src/resources/tick.png
Binary files differ
diff --git a/WebContent/src/resources/user.png b/WebContent/src/resources/user.png
new file mode 100644
index 0000000..79f35cc
--- /dev/null
+++ b/WebContent/src/resources/user.png
Binary files differ
diff --git a/WebContent/src/rest/rest-testclient.lzx b/WebContent/src/rest/rest-testclient.lzx
new file mode 100644
index 0000000..2702425
--- /dev/null
+++ b/WebContent/src/rest/rest-testclient.lzx
@@ -0,0 +1,69 @@
+<?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.
+  
+-->
+<canvas debug="true" height="100%" title="REST Test-Application">
+	
+<debug width="450" x="460" y="600" height="100" />
+  
+<include href="incubator/lzcombobox.lzx" />
+
+<attribute name="_baseUrlRestTestGate" value="" type="string" />
+
+<method name="setBaseUrlGateway" args="txt">
+	if ($debug) Debug.write("setBaseUrlGateway: ",txt);
+	this.setAttribute("_baseUrlRestTestGate",txt);
+	var tString1 = txt+"/AddressBookService/findEntry";
+	if ($debug) Debug.write("tString1: ",tString1);
+	this.dset.setSrc(tString1);
+	this.dset.setQueryType("POST");
+	this.dset.setQueryParam("param1","awe");
+	this.dset.doRequest();
+	if ($debug) Debug.write("dset: ",this.dset);
+</method>
+
+<dataset name="dset" request="false" type="post" ondata="Debug.write('ondata: ',val,this.data,this)" >
+</dataset>
+
+<datapointer xpath="dset:/">
+	<handler name="ondata">
+		Debug.write('ondata: ',this);
+	</handler>
+</datapointer>
+
+<view layout="axis:y;spacing:4" width="450" x="0">
+	<text fontstyle="bold" text="Connection - Settings (user for both BroadCasting and Subscribing)" />
+	<view width="450">
+		<text text="BaseURL:" />
+		<edittext align="right" width="350" id="url" text="http://127.0.0.1:5080/openmeetings/services" />
+	</view>
+	<button align="right" width="200" text="connectRtmpConnection" 
+			onclick="canvas.setBaseUrlGateway(url.text)" />
+</view>
+
+
+<!-- some description -->
+<text fontstyle="italic" y="0" width="450" multiline="true" x="450">
+	Test-Client for Testing the WebService-Gateway (Axis2)<br/>
+	This uses the REST-Gateway, not the SOAP Gateway as OpenLaszlo does not<br/>
+	Understand/speak SOAP 1.2<br/>
+</text>
+
+
+</canvas>
diff --git a/WebContent/src/rest/rest-testclient.lzx.lzr=swf8.swf b/WebContent/src/rest/rest-testclient.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..e617ce9
--- /dev/null
+++ b/WebContent/src/rest/rest-testclient.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/subscribe.lzx.lzr=swf8.swf b/WebContent/src/subscribe.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..13e11e1
--- /dev/null
+++ b/WebContent/src/subscribe.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test-setup.lzx.lzr=swf8.swf b/WebContent/src/test-setup.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..4998ea1
--- /dev/null
+++ b/WebContent/src/test-setup.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/Tutorat.swf b/WebContent/src/test/Tutorat.swf
new file mode 100644
index 0000000..317e163
--- /dev/null
+++ b/WebContent/src/test/Tutorat.swf
Binary files differ
diff --git a/WebContent/src/test/backup_whiteboard/baseDrawArrow.lzx b/WebContent/src/test/backup_whiteboard/baseDrawArrow.lzx
new file mode 100644
index 0000000..baafd01
--- /dev/null
+++ b/WebContent/src/test/backup_whiteboard/baseDrawArrow.lzx
@@ -0,0 +1,611 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="baseDrawArrow" extends="baseDrawULine" >
+    
+    <!-- for drawing drawarrow -->
+    <attribute name="currentdrawarrowlinestroke" value="0x000000" />
+    <attribute name="currentdrawarrowlinestrokeDis" value="1" type="number" />
+    <attribute name="currentdrawarrowlinestrokeFill" value="0xFF6600" />
+    <attribute name="currentdrawarrowlinestrokeFillDis" value="1" type="number" />
+    
+    <attribute name="currentdrawarrowlinelineWidth" value="4" type="number" />   
+    <attribute name="currentdrawarrowOpacity" value="1" type="number" />
+      
+    <!-- ###########################
+    drawarrow
+     -->
+     
+    
+    <method name="startDrawarrowline" args="oid_name">
+        <![CDATA[
+	        if (oid_name == null) {
+	            oid_name = 'drawarrow'+this.getCounter();
+	        }
+	        
+	        this.currentlayer = new lz.drawViewNew(this,{
+		            name:oid_name,width:this.width,height:this.height,
+		            opacity:this.currentdrawarrowOpacity});
+            
+            var pArrowStart = new flash.geom.Point(this.startx,this.starty);
+            var pArrowEnd = new flash.geom.Point(this.endx,this.endy);
+            
+            if ($debug) Debug.write("start,end,line",pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth);
+            this.drawArrow(this.currentlayer,pArrowStart,pArrowEnd,this.currentdrawarrowlinelineWidth);
+        ]]>
+    </method> 
+    
+    <method name="endDrawarrowline">
+        //Debug.write("endDrawarrowline",this.startx,this.starty,this.endx,this.endy);
+        <![CDATA[
+        var tempName = this.currentlayer.name;
+        //Debug.write("tempName: ",tempName);
+        this.currentlayer.destroy();
+        
+        //GetBounds of that Object
+        var minx = this.width+2;
+        var miny = this.height+2;
+        var maxx = -2;
+        var maxy = -2;
+
+        if (this.startx<minx) minx=this.startx;
+        if (this.endx<minx) minx=this.endx;
+        
+        if (this.startx>maxx) maxx=this.startx;
+        if (this.endx>maxx) maxx=this.endx;
+        
+        if (this.starty<miny) miny=this.starty;
+        if (this.endy<miny) miny=this.endy;
+        
+        if (this.starty>maxy) maxy=this.starty;
+        if (this.endy>maxy) maxy=this.endy;
+        
+        var width = maxx-minx;
+        var height = maxy-miny;
+        
+        //Debug.write("minx,miny,width,height: ",minx,miny,width,height);
+
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:tempName,x:minx,y:miny,width:width,height:height,
+            opacity:this.currentdrawarrowOpacity});
+            
+        this.currentlayer.fillstyle = '0x000000';
+        this.currentlayer.lineWidth = this.currentdrawarrowlinelineWidth;
+        this.currentlayer.strokeStyle = this.currentdrawarrowlinestroke;
+        
+        //Debug.write("this.currentlayer: ",this.currentlayer);
+
+        var t = new lz.drawArrowWhiteBoard(this.currentlayer,{x:0,y:0});
+
+        //Color
+        //t.setTint(this.currentdrawarrowlinestroke,60);
+        t.setColor(this.currentdrawarrowlinestroke);
+        
+        var tx = this.endx-this.startx;
+        var ty = this.endy-this.starty;
+
+        var gegenkathete = Math.abs(ty);
+        var ankathete = Math.abs(tx); 
+        var hypothenuse = Math.sqrt((ankathete*ankathete)+(gegenkathete*gegenkathete));
+        var sinAlpha = (gegenkathete/hypothenuse);
+        var alpha = Math.asin(sinAlpha);
+        alpha = alpha/(Math.PI/180);
+            
+        var newx = 0;
+        var newy = 0;
+        if (tx>=0 && ty>=0){    
+            t.setAttribute('rotation',(alpha-45));
+        } else if (tx<0 && ty>=0){
+            newx = width;
+            t.setAttribute('rotation',(45+90-alpha));
+        } else if (tx<0 && ty<0){
+            newy = height;
+            newx = width;
+            t.setAttribute('rotation',(alpha+45+90));
+        } else if (tx>0 && ty<=0){
+            newy = height;
+            t.setAttribute('rotation',(45-alpha-90));
+        }
+        
+        t.setAttribute('x',newx);
+        t.setAttribute('y',newy);
+        
+        //Scaling
+        var basicLength = Math.sqrt((t.width*t.width)+(t.width*t.width));
+        t.getDisplayObject()._xscale = (hypothenuse/basicLength)*100;
+        t.getDisplayObject()._yscale = (hypothenuse/basicLength)*100;
+        
+
+        //Set previous to null
+        this.prevx = null;
+        this.prevy = null;  
+        
+        //Add Layer to global Layer     
+        this.layers.push(this.currentlayer);  
+        ]]>
+        this.drawarrowlineregisterFinal();
+        this.currentlayer = new LzView();
+        //Debug.write("t: ",t);
+    </method> 
+       
+    
+    
+    <method name="drawArrow" args="graphics,start,end,thickness">
+        <![CDATA[
+    //(graphics:Graphics,
+    //            start:Point,end:Point,
+    //            style:Object=null):void {
+            
+            if (start.equals(end)) return;
+            
+            
+            var arrowStyle = {'shaftControlPosition':0.5,
+                    'shaftControlSize':0.5,
+                    'headLength':thickness*5, //Pixel Length of arrow head
+                    'headWidth':thickness*5,//Relative width of arrow head
+                    'edgeControlPosition':0.5,
+                    'edgeControlSize':0.5,
+                    'shaftPosition':0,
+                    'shaftThickness':thickness
+                    };
+            
+            var fullVect:Point = end.subtract(start);
+            var halfWidth:Number = (arrowStyle.headWidth != -1) ? arrowStyle.headWidth/2 : arrowStyle.headLength/2; 
+            
+            //Figure out the line start/end points
+            var startNorm = new flash.geom.Point(fullVect.y,-fullVect.x);
+            startNorm.normalize(arrowStyle.shaftThickness/2);
+            var start1 = start.add(startNorm);
+            var start2 = start.subtract(startNorm);
+            var end1 = end.add(startNorm);
+            var end2 = end.subtract(startNorm);
+            
+            //if ($debug) Debug.write("startNorm: ",startNorm.toString());
+            //if ($debug) Debug.write("start1: ",start1.toString());
+            //if ($debug) Debug.write("start2: ",start2.toString());
+            //if ($debug) Debug.write("end1: ",end1.toString());
+            //if ($debug) Debug.write("end2: ",end2.toString());
+            
+            //figure out where the arrow head starts
+            var headPnt = fullVect.clone();
+            //if ($debug) Debug.write("headPnt 1: ",headPnt.toString());
+            //if ($debug) Debug.write("headPnt.length 1: ",headPnt.length);
+            //if ($debug) Debug.write("arrowStyle.headLength 1: ",arrowStyle.headLength);
+            headPnt.normalize(headPnt.length-arrowStyle.headLength);
+            //if ($debug) Debug.write("headPnt 2: ",headPnt.toString());
+            headPnt = headPnt.add(start);
+            //if ($debug) Debug.write("headPnt 3: ",headPnt.toString());
+            
+            //calculate the arrowhead corners
+            var headPntNorm = startNorm.clone();
+            //if ($debug) Debug.write("headPntNorm ^^: ",headPntNorm.toString());
+            //if ($debug) Debug.write("halfWidth ^^: ",halfWidth);
+            headPntNorm.normalize(halfWidth);
+            //if ($debug) Debug.write("headPntNorm: ",headPntNorm.toString());
+            var edge1 = headPnt.add(headPntNorm);
+            var edge2 = headPnt.subtract(headPntNorm);
+            
+            //if ($debug) Debug.write("edge1: ",edge1.toString());
+            //if ($debug) Debug.write("edge2: ",edge2.toString());
+            
+            //Figure out where the arrow connects the the shaft, then calc the intersections
+            var shaftCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("end: ",end.toString());
+            //if ($debug) Debug.write("headPnt",headPnt.toString());
+            //if ($debug) Debug.write("arrowStyle.shaftPosition: ",arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("shaftCenter",shaftCenter.toString());
+            var inter1 = this.getLineIntersection(start1,end1,shaftCenter,edge1);
+            var inter2 = this.getLineIntersection(start2,end2,shaftCenter,edge2);
+            
+            //if ($debug) Debug.write("inter1: ",inter1.toString());
+            //if ($debug) Debug.write("inter2: ",inter2.toString());
+            
+            //Figure out the control points
+            var edgeCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.edgeControlPosition);
+            var edgeNorm = startNorm.clone();
+            edgeNorm.normalize(halfWidth*arrowStyle.edgeControlSize);
+            //if ($debug) Debug.write("halfWidth*arrowStyle.edgeControlSize: "+(halfWidth*arrowStyle.edgeControlSize));
+            //if ($debug) Debug.write("edgeNorm: "+edgeNorm.toString());
+            var edgeCntrl1 = edgeCenter.add(edgeNorm);
+            var edgeCntrl2 = edgeCenter.subtract(edgeNorm);
+
+            //if ($debug) Debug.write("edgeCntrl1: ",edgeCntrl1.toString());
+            //if ($debug) Debug.write("edgeCntrl2: ",edgeCntrl2.toString());
+
+            //if ($debug) Debug.write("moveTo: ",start1.x,start1.y);
+            //if ($debug) Debug.write("lineTo",inter1.x,inter1.y);
+            //if ($debug) Debug.write("lineTo",edge1.x,edge1.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            //if ($debug) Debug.write("lineTo",inter2.x,inter2.y);
+            //if ($debug) Debug.write("lineTo",start2.x,start2.y);
+            //if ($debug) Debug.write("lineTo",start1.x,start1.y);
+            
+            graphics.moveTo(start1.x,start1.y);
+            graphics.lineTo(inter1.x,inter1.y);
+            graphics.lineTo(edge1.x,edge1.y);
+            graphics.quadraticCurveTo(edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            graphics.quadraticCurveTo(edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            graphics.lineTo(inter2.x,inter2.y);
+            graphics.lineTo(start2.x,start2.y);
+            graphics.lineTo(start1.x,start1.y);
+            
+            if (this.currentdrawarrowlinestrokeDis!=-1){
+                graphics.strokeStyle = this.currentdrawarrowlinestroke;
+                graphics.stroke();
+            }
+
+            if (this.currentdrawarrowlinestrokeFillDis!=-1){
+                graphics.fillStyle = this.currentdrawarrowlinestrokeFill;
+                graphics.fill();
+            }
+        ]]>
+    </method>
+    
+    <method name="getLineIntersection" args="a1,a2,b1,b2">
+        <![CDATA[ 
+        
+            //calculate directional constants
+            var k1 = (a2.y-a1.y) / (a2.x-a1.x);
+            var k2 = (b2.y-b1.y) / (b2.x-b1.x);
+            
+            // if the directional constants are equal, the lines are parallel,
+            // meaning there is no intersection point.
+            if( k1 == k2 ) return null;
+            
+            var x = 0;
+            var y = 0;
+            var m1 = 0;
+            var m2 = 0;
+            
+            //if ($debug) Debug.write("k1",k1);
+            //if ($debug) Debug.write("k2",k2);
+            
+            // an infinite directional constant means the line is vertical
+            if( !isFinite(k1) ) {
+                
+                //if ($debug) Debug.write("k1 ^^ 0");
+                //if ($debug) Debug.write("k2",k2,(b2.y-b1.y));
+                //if ($debug) Debug.write("b1.getY(): "+b1.y);
+                //if ($debug) Debug.write("b2.getY(): "+b2.y);
+                // so the intersection must be at the x coordinate of the line
+                x = a1.x;
+                m2 = b1.y - k2 * b1.x;
+                //if ($debug) Debug.write("m2",m2);
+                y = k2 * x + m2;
+                //if ($debug) Debug.write("y",y);
+                
+            // same as above for line 2
+            } else if ( !isFinite(k2) ) {
+                
+                //if ($debug) Debug.write("k2 ^ 0");
+                
+                m1 = a1.y - k1 * a1.x;
+                x = b1.x;
+                y = k1 * x + m1;
+
+            // if neither of the lines are vertical
+            } else {
+                
+                //if ($debug) Debug.write("neither");
+            
+                m1 = a1.y - k1 * a1.x;
+                m2 = b1.y - k2 * b1.x;              
+                x = (m1-m2) / (k2-k1);
+                y = k1 * x + m1;
+                
+            }
+            
+            return new flash.geom.Point(x,y);
+        ]]>
+    </method>    
+    
+     
+    
+    
+    <method name="drawarrowlineregisterFinal">
+        var actionObject = new Array();
+        actionObject[0] = 'drawarrow';
+        actionObject[1] = currentlayer.fillstyle;
+        actionObject[2] = currentlayer.lineWidth;
+        actionObject[3] = currentlayer.strokeStyle;
+        actionObject[4] = this.startx;  
+        actionObject[5] = this.starty;  
+        actionObject[6] = this.endx;    
+        actionObject[7] = this.endy;
+        actionObject[8] = this.currentdrawarrowOpacity;
+        actionObject[9] = this.counter;   
+        actionObject[10] = currentlayer.x;
+        actionObject[11] = currentlayer.y;
+        actionObject[12] = currentlayer.width;
+        actionObject[13] = currentlayer.height;  
+        actionObject[14] = this.currentlayer.name;
+        this.baseactionobjectList.push(actionObject);       
+        this.onsharedMessage('draw',actionObject);
+    </method>       
+    
+    
+    <method name="drawarrowlineactionHistory" args="lastActionObject,parentView">
+        <![CDATA[
+            //Debug.write("## lineactionHistory",parentView," 2 ## NEW x,y ",lastActionObject[lastActionObject.length-5],lastActionObject[lastActionObject.length-4]," width,height: ",lastActionObject[lastActionObject.length-3],lastActionObject[lastActionObject.length-2]);
+            
+            this.currentlayer = new lz.drawViewNew(parentView,{
+                name:lastActionObject[lastActionObject.length-1],
+                x:lastActionObject[lastActionObject.length-5],
+                y:lastActionObject[lastActionObject.length-4],
+                width:lastActionObject[lastActionObject.length-3],
+                height:lastActionObject[lastActionObject.length-2],
+                opacity:lastActionObject[8]});
+            
+            var t = new lz.drawArrowWhiteBoard(this.currentlayer,{x:0,y:0});
+            
+            //t.setTint(lastActionObject[3],60);
+            t.setColor(lastActionObject[3]);
+            
+            var tx = lastActionObject[6]-lastActionObject[4];
+            var ty = lastActionObject[7]-lastActionObject[5];
+    
+            var gegenkathete = Math.abs(ty);
+            var ankathete = Math.abs(tx); 
+            var hypothenuse = Math.sqrt((ankathete*ankathete)+(gegenkathete*gegenkathete));
+            var sinAlpha = (gegenkathete/hypothenuse);
+            var alpha = Math.asin(sinAlpha);
+            var alpha = alpha/(Math.PI/180);
+                
+            var newx = 0;
+            var newy = 0;
+            if (tx>=0 && ty>=0){    
+                t.setAttribute('rotation',(alpha-45));
+            } else if (tx<0 && ty>=0){
+                newx = lastActionObject[lastActionObject.length-3];
+                t.setAttribute('rotation',(45+90-alpha));
+            } else if (tx<0 && ty<0){
+                newy = lastActionObject[lastActionObject.length-2];
+                newx = lastActionObject[lastActionObject.length-3];
+                t.setAttribute('rotation',(alpha+45+90));
+            } else if (tx>0 && ty<=0){
+                newy = lastActionObject[lastActionObject.length-2];
+                t.setAttribute('rotation',(45-alpha-90));
+            }
+            
+            t.setAttribute('x',newx);
+            t.setAttribute('y',newy);
+            
+            //Scaling
+            var basicLength = Math.sqrt((t.width*t.width)+(t.width*t.width));
+            t.getDisplayObject()._xscale = (hypothenuse/basicLength)*100;
+            t.getDisplayObject()._yscale = (hypothenuse/basicLength)*100;
+            
+            this.currentlayer.fillstyle = lastActionObject[1];
+            this.currentlayer.lineWidth = lastActionObject[2];
+            this.currentlayer.strokeStyle = lastActionObject[3];
+
+        ]]>
+    </method>
+    
+    
+    
+    
+    
+    
+    <!--
+        @keywords deprecated
+     -->
+    <method name="_startDrawarrowline" args="oid_name">
+        <![CDATA[
+        if (oid_name == null) {
+            oid_name = 'drawarrow'+this.getCounter();
+        }
+        
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width,height:this.height,
+            opacity:this.currentdrawarrowOpacity});
+            
+        this.drawlineOnObject(this.currentlayer,-1,-1,0,0);
+        this.drawlineOnObject(this.currentlayer,this.width,this.height,this.width+1,this.height+1);
+        
+        //Add Resource
+        var t = new lz.drawArrowWhiteBoard(this.currentlayer,{x:this.startx,y:this.starty});
+        
+        //Color
+        //t.setTint(this.currentdrawarrowlinestroke,60);
+        t.setColor(this.currentdrawarrowlinestroke);
+        
+        var tx = this.currentlayer.getMouse('x')-this.startx;
+        var ty = this.currentlayer.getMouse('y')-this.starty;
+
+        var gegenkathete = Math.abs(ty);
+        var ankathete = Math.abs(tx); 
+        var hypothenuse = Math.sqrt((ankathete*ankathete)+(gegenkathete*gegenkathete));
+        var sinAlpha = (gegenkathete/hypothenuse);
+        var alpha = Math.asin(sinAlpha);
+        alpha = alpha/(Math.PI/180);
+            
+        if (tx>=0 && ty>=0){    
+            t.setAttribute('rotation',(alpha-45));
+        } else if (tx<0 && ty>=0){
+            t.setAttribute('rotation',(45+90-alpha));
+        } else if (tx<0 && ty<0){
+            t.setAttribute('rotation',(alpha+45+90));
+        } else if (tx>0 && ty<=0){
+            t.setAttribute('rotation',(45-alpha-90));
+        }
+        
+        //Scaling
+        var basicLength = Math.sqrt((t.width*t.width)+(t.width*t.width));
+        t.getDisplayObject()._xscale = (hypothenuse/basicLength)*100;
+        t.getDisplayObject()._yscale = (hypothenuse/basicLength)*100;
+        
+
+        //Set previous to null
+        this.prevx = null;
+        this.prevy = null;  
+        
+        currentlayer.strokeStyle = this.currentdrawarrowlinestroke;
+        currentlayer.lineWidth = this.currentdrawarrowlinelineWidth;
+        currentlayer.fillstyle = '0x000000';
+        ]]>
+    </method> 
+    
+    <!--
+        @keywords deprecated
+     -->
+    <method name="__startDrawarrowline" args="oid_name">
+        <![CDATA[
+        if (oid_name == null) {
+            oid_name = 'drawarrow'+this.getCounter();
+        }
+        
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:oid_name,width:this.width+2,height:this.height+2,
+            opacity:this.currentdrawarrowOpacity});
+            
+        var distance_x = Math.abs(this.startx - this.endx);
+        var distance_y = Math.abs(this.starty - this.endy);
+        
+        var point_distance_x = Math.round( distance_x/10 );
+        var point_distance_y = Math.round( distance_y/10 );
+        
+        if (this.startx <= this.endx && this.starty >= this.endy) {
+            
+            currentlayer.lineWidth = this.currentrectangleineWidth;
+            currentlayer.beginPath();
+            currentlayer.moveTo(this.startx,this.starty); //1
+            currentlayer.lineTo(this.startx-point_distance_x,this.starty-point_distance_y); //2
+            currentlayer.lineTo(this.endx-point_distance_x*3,this.endy+point_distance_y); //3
+            currentlayer.lineTo(this.endx-point_distance_x*4,this.endy); //4
+            currentlayer.lineTo(this.endx,this.endy); //5
+            currentlayer.lineTo(this.endx,this.endy+point_distance_y*4); //6
+            currentlayer.lineTo(this.endx-point_distance_x,this.endy+point_distance_y*3); //7
+            currentlayer.lineTo(this.startx+point_distance_x,this.starty+point_distance_y); //8
+            currentlayer.lineTo(this.startx,this.starty); //9
+            this.closePath();
+            
+            currentlayer.strokeStyle = 0x000000;
+            currentlayer.stroke();
+
+            currentlayer.fillStyle = this.currentdrawarrowlinelineWidth;
+            currentlayer.fill();
+            
+        }
+        
+        ]]>
+    </method>
+    <!--
+        @keywords deprecated
+     -->
+    <method name="_endDrawarrowline">
+        //Debug.write("endDrawarrowline",this.startx,this.starty,this.endx,this.endy);
+        <![CDATA[
+        var tempName = this.currentlayer.name;
+        //Debug.write("tempName: ",tempName);
+        this.currentlayer.destroy();
+        
+        //GetBounds of that Object
+        var minx = this.width+2;
+        var miny = this.height+2;
+        var maxx = -2;
+        var maxy = -2;
+
+        if (this.startx<minx) minx=this.startx;
+        if (this.endx<minx) minx=this.endx;
+        
+        if (this.startx>maxx) maxx=this.startx;
+        if (this.endx>maxx) maxx=this.endx;
+        
+        if (this.starty<miny) miny=this.starty;
+        if (this.endy<miny) miny=this.endy;
+        
+        if (this.starty>maxy) maxy=this.starty;
+        if (this.endy>maxy) maxy=this.endy;
+        
+        var width = maxx-minx;
+        var height = maxy-miny;
+        
+        //Debug.write("minx,miny,width,height: ",minx,miny,width,height);
+
+        this.currentlayer = new lz.drawViewNew(this,{
+            name:tempName,x:minx-1,y:miny-1,width:width,height:height,
+            opacity:this.currentdrawarrowOpacity});
+            
+        this.currentlayer.fillstyle = '0x000000';
+        this.currentlayer.lineWidth = this.currentdrawarrowlinelineWidth;
+        this.currentlayer.strokeStyle = this.currentdrawarrowlinestroke;
+        
+        //Debug.write("this.currentlayer: ",this.currentlayer);
+
+        var t = new lz.drawArrowWhiteBoard(this.currentlayer,{x:0,y:0});
+
+        //Color
+        //t.setTint(this.currentdrawarrowlinestroke,60);
+        t.setColor(this.currentdrawarrowlinestroke);
+        
+        var tx = this.endx-this.startx;
+        var ty = this.endy-this.starty;
+
+        var gegenkathete = Math.abs(ty);
+        var ankathete = Math.abs(tx); 
+        var hypothenuse = Math.sqrt((ankathete*ankathete)+(gegenkathete*gegenkathete));
+        var sinAlpha = (gegenkathete/hypothenuse);
+        var alpha = Math.asin(sinAlpha);
+        alpha = alpha/(Math.PI/180);
+            
+        var newx = 0;
+        var newy = 0;
+        if (tx>=0 && ty>=0){    
+            t.setAttribute('rotation',(alpha-45));
+        } else if (tx<0 && ty>=0){
+            newx = width;
+            t.setAttribute('rotation',(45+90-alpha));
+        } else if (tx<0 && ty<0){
+            newy = height;
+            newx = width;
+            t.setAttribute('rotation',(alpha+45+90));
+        } else if (tx>0 && ty<=0){
+            newy = height;
+            t.setAttribute('rotation',(45-alpha-90));
+        }
+        
+        t.setAttribute('x',newx);
+        t.setAttribute('y',newy);
+        
+        //Scaling
+        var basicLength = Math.sqrt((t.width*t.width)+(t.width*t.width));
+        t.getDisplayObject()._xscale = (hypothenuse/basicLength)*100;
+        t.getDisplayObject()._yscale = (hypothenuse/basicLength)*100;
+        
+
+        //Set previous to null
+        this.prevx = null;
+        this.prevy = null;  
+        
+        //Add Layer to global Layer     
+        this.layers.push(this.currentlayer);  
+        ]]>
+        this.drawarrowlineregisterFinal();
+        this.currentlayer = new LzView();
+        //Debug.write("t: ",t);
+    </method> 
+    
+</class>
+
+</library>
diff --git a/WebContent/src/test/content/audioTest.lzx b/WebContent/src/test/content/audioTest.lzx
new file mode 100644
index 0000000..511582c
--- /dev/null
+++ b/WebContent/src/test/content/audioTest.lzx
@@ -0,0 +1,140 @@
+<?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.
+  
+-->
+<library>
+<!--
+	exmple class definition
+	
+	as soon as you see possibility try to make usage of classes
+	
+	in general: 
+	usage of layout is nice but it needs more views just for layouting.
+	in a simple scenario thats okay,
+	but in the openmeetings app itself most of the views are set *absolute* by x and y
+	cause this reduces the total amount of views
+	instancing (=making views dynamically like we do) is time critical .. if you create or destroy too many
+	views at one time the browser hangs and cpu will be at 100%
+	so in the openmeetings app try to use as less views as possible
+	use at less constraints as possible
+	use $once{ .. } instead of ${ .. } or use setters and getters
+	don't use canvas.setAttribute('myvar','foo') just use canvas.myvar='foo' 
+	whenever it is not necessary (it will throw some 
+	events which are useless if you don't have any constraints pointing to 'myvar' and which will cost 
+	performance)
+	
+	 
+	
+ -->
+
+	<!-- define resources once at one place instead of
+		linking with the path every time you want it
+		-->
+<resource name="_btn_play_rsc" src="../resources/play.png" />
+<resource name="_btn_stop_rsc" src="../resources/stop.png" />
+<resource name="_btn_volume_rsc" src="../resources/mix_volume.png" />
+<resource name="_btn_audio_scrubtrack_rsc" src="../resources/audio_scrubtrack.png" />
+<resource name="_btn_audio_scrubber_rsc" src="../resources/audio_scrubber.png" />
+	
+<class name="audioTest" extends="view" play="false" y="40">
+	
+	<!-- please write layout definition always on 
+		top or on bottom of the view content
+		or write it directly into the view definition -->
+	<simplelayout axis="y" spacing="5"/>
+	
+	   <view id="audioplayer" play="false" y="40" resource="http:resources/Star_in_the_east_solfege.mp3" 
+		   oninit="this.stop();">
+		   
+		   <!-- follow a structure by defining view contents:
+			   1.) define attributes
+			   2.) define handlers (event handlers oninit for example if not already in view definition)
+			   3.) define methods
+			   4.) define layout (if not already in view definition)
+			   5.) define content 
+			   -->
+		   
+		   <!-- comment about this attribute and don't forget type definition in attribute's:
+			   this attribute is volume-level -->
+			<attribute name="vol" value="100" type="number" />
+		   
+		    <simplelayout axis="x" spacing="10"/>
+		   
+			<view>
+				<simplelayout axis="x" spacing="-1"/>
+				<button width="40" onclick="audioplayer.stop()">
+					<view resource="_btn_stop_rsc" y="6" align="center"/>
+				</button>
+				<button width="40" onclick="audioplayer.play()">
+					<view resource="_btn_play_rsc" y="5" align="center"/>
+				</button>
+			</view>	 
+		          
+			<view>
+				<simplelayout axis="x" spacing="-1"/>
+				<button width="40" text="-"
+					onclick="audioplayer.setVolume( audioplayer.getVolume() -10)">
+					<view resource="_btn_volume_rsc" y="5" align="right"/>
+				</button>
+				<button width="40" text="+" 
+					onclick="audioplayer.setVolume( audioplayer.getVolume() +10)">
+					<view resource="_btn_volume_rsc" y="5" align="right"/>
+				</button>
+			</view>
+					        
+			
+			<view name="background" bgcolor="black" width="202" height="15" 
+					y="50" options="ignorelayout;">
+				<view name="loadbar" resource="_btn_audio_scrubtrack_rsc" 
+						width="${audioplayer.loadperc * 200}">
+					<view name="playbar" resource="_btn_audio_scrubber_rsc" 
+							y="1" x="${Math.round(180 * audioplayer.frame/audioplayer.totalframes)}"/>
+				</view>
+			</view>
+		   
+		</view>
+		
+		<!--
+			think about contraints ... if they really need to be updated always
+			${ canvas.myvar } => value will be updated every time 
+								myvar changes by canvas.setAttribute('myvar','foo')
+								normally this is not needed
+								high performance/cpu usage
+			$once{ canvas.myvar } => value will be only set once .. oninit of this attribute/view
+									lower perfomance/cpu usage 
+			try to use $once whenever possible
+			-->
+		<text text="$once{mess.listen_sound}" multiline="true" width="${this.parent.width - 20}" />
+
+		<view>
+			
+			<simplelayout axis="x" spacing="10"/>
+			
+			<button text="$once{ mess.no }">					                
+			</button>
+			<button text="$once{ mess.yes }">					                
+			</button>
+			
+		</view>
+	
+	<nextButton nextTabpane="$once{ this.parent.parent.parent.microTab }" text="$once{mess.next}" />
+	
+</class>
+
+</library>
diff --git a/WebContent/src/test/content/library.lzx b/WebContent/src/test/content/library.lzx
new file mode 100644
index 0000000..46f0847
--- /dev/null
+++ b/WebContent/src/test/content/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+    
+    <include href="audioTest.lzx" />
+
+</library>
diff --git a/WebContent/src/test/html.lzx b/WebContent/src/test/html.lzx
new file mode 100644
index 0000000..2418fef
--- /dev/null
+++ b/WebContent/src/test/html.lzx
@@ -0,0 +1,62 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+
+                <edittext name="url" width="400"> 
+                    <handler name="onkeyup" args="key">
+                        if ((key == 27) || (key == 13)) {
+                            this.parent.readStart.onclick.sendEvent();
+                        }
+                    </handler>
+                </edittext>
+                
+                <button name="readStart" width="200" x="400" text="LOAD"
+                                y="2">
+                    <handler name="onclick">
+                        <![CDATA[
+                            var url = parent.url.getText();
+                            if ((url.indexOf("http://") < 0)
+                                    && (url.indexOf("https://") < 0)) {
+                                url = "http://" + url;
+                            }
+    
+                            parent.htmlviewer.setAttribute("src",url);
+                            parent.htmlviewer.setAttribute("visible",true);
+    
+                        ]]>
+                    </handler>
+                </button>
+                
+        <html name="htmlviewer" x="4" y="60" width="600" height="500" bgcolor="0xCCCCCC" >
+            <handler name="onloading" args="loading">
+                this.loading = loading;
+                if ($debug) Debug.write("LOADING ",loading);
+            </handler>
+            <handler name="onsrc" args="src">
+                this.src = src;
+                if ($debug) Debug.write("SRC ",loading);
+            </handler>
+        </html>
+	
+</canvas>
diff --git a/WebContent/src/test/html.lzx.swf8.swf b/WebContent/src/test/html.lzx.swf8.swf
new file mode 100644
index 0000000..2263944
--- /dev/null
+++ b/WebContent/src/test/html.lzx.swf8.swf
Binary files differ
diff --git a/WebContent/src/test/html.lzx.swf9.swf b/WebContent/src/test/html.lzx.swf9.swf
new file mode 100644
index 0000000..22d8cd7
--- /dev/null
+++ b/WebContent/src/test/html.lzx.swf9.swf
Binary files differ
diff --git a/WebContent/src/test/iFrame.lzx b/WebContent/src/test/iFrame.lzx
new file mode 100644
index 0000000..cdabb9b
--- /dev/null
+++ b/WebContent/src/test/iFrame.lzx
@@ -0,0 +1,245 @@
+<?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.
+  
+-->
+
+<!-- 
+
+Requirements :
+the html must contain the following in the HEAD :
+
+			function createIFrame(n,id,src,x,y,w,h){
+				var newChild = document.createElement('iframe');
+				newChild.style.visibility='hidden';
+				newChild.style.position='absolute';
+				newChild.style.top='0px';
+				newChild.id=id;
+				newChild.name=n;
+				newChild.src=src;
+				newChild.style.border='0px';
+				newChild.style.left=x+"px";
+				newChild.style.top=y+"px";
+				newChild.width=w+"px";
+				newChild.height=h+"px";
+				document.body.appendChild(newChild);
+			}
+			function centerIframe(iid,x,y,w,h) {
+				var frameRef=document.getElementById(iid);
+				frameRef.style.left=x+"px";
+				frameRef.style.top=y+"px";
+				frameRef.width=w+"px";
+				frameRef.height=h+"px";
+			}
+			function hideIFrame(){
+			    document.getElementById("ifrm1_id").style.visibility="hidden";
+			}
+			function showIFrame(){
+			    document.getElementById("ifrm1_id").style.visibility="visible";
+			}
+
+Attributes :
+ - isrc         : url for the iframeView
+ - iname        : name for the iframeView
+ - iid          : id for the iframeView
+ - callbackTimerDelay           : optional
+ - createIFrame_callbackCounter : optional
+ - createIFrame_callbackMax     : optional
+
+Exemple :
+
+      <canvas debug="true" >
+        
+        <include href="library/iFrame.lzx" />
+        
+        
+        <window id="w" x="100" y="50" width="350" height="250" resizable="true" >
+        
+          <handler name="oninit">
+            new LzDelegate(ifrm,"centerIframe",this,"onx");
+            new LzDelegate(ifrm,"centerIframe",this,"ony");
+          </handler>
+          
+          <iframeView name="ifrm"
+            width = "${immediateparent.width  }"
+            height= "${immediateparent.height }"
+            isrc  = "http://www.google.fr/"
+            iid   = "myIframeId"
+            iname = "myIfrName"
+          />
+          
+        </window>
+          
+        
+      </canvas>
+
+-->
+
+<library>
+
+  <class name="iframeView" extends="view" >
+  
+    <attribute name="isrc" type="string" setter="setIsrc(isrc)"/>
+    <attribute name="iname" type="string" />
+    <attribute name="iid" type="string" />
+    
+    <method name="display">
+      var s = "javascript:document.getElementById('"
+                        + iid 
+                        + "').style.visibility='visible'";
+      lz.Browser.loadJS(s);
+    </method>
+    
+    <method name="hide">
+      var s = "javascript:document.getElementById('"
+                        + iid 
+                        + "').style.visibility='hidden'";
+      //Debug.write("on hide l'iframe",iid," :",s);
+      lz.Browser.loadJS(s);
+    </method>    
+    
+    <method name="setIsrc" args="s">
+      if (!this.isinited || this.isrc== null) {                      //catch the case where this.time is being 
+        this.isrc = s;                                               //initialized during object instantiation
+        return;
+      }      
+      var s = "javascript:document.getElementById('"
+                        + iid 
+                        + "').src='"
+                        + s
+                        + "'";
+      lz.Browser.loadJS(s);
+    </method>
+    
+    <handler name="oninit" >
+      // First initialize the iFrame loading detection mechanism :
+      //initCreateIFrameDone();
+      // Now creating the iframeView :
+      //createIFrame();
+    </handler>
+
+    <method name="createIFrame" >
+    	//Debug.write("create IFRAME !!!!!!!!!!!!!!");
+      var s = "javascript:createIFrame('"
+                        + iname  + "','"
+                        + iid + "','"
+                        + isrc + "','"
+                        + this.getAttributeRelative("x",canvas)      + "','"
+                        + this.getAttributeRelative("y",canvas)      + "','"
+                        + (width +1) + "','"
+                        + (height+1)
+                        + "')";
+      // the browser must also tell our laszlo when the iframeView has been loaded :
+      s = s + ";document.getElementById('"
+                        + iid 
+                        + "').style.visibility='visible'";
+      s = s + ";lzSetCanvasAttribute('" + createIFrameDone_attr + "', true)";
+      ////Debug.write("Calling createIFrame ; loadJS : " + s);//
+      lz.Browser.loadJS(s);
+      // initializing the scheduled check of this iFrame's load state
+      if(typeof this.createIFrame_callbackDelegate == 'undefined') {
+         this.createIFrame_callbackDelegate = new LzDelegate( this, "createIFrame_callback" );
+      }
+      lz.Timer.resetTimer( this.createIFrame_callbackDelegate, callbackTimerDelay );
+    </method>
+    
+    <!-- Iframe load state detection state and initialization -->
+    <attribute name="createIFrameDone_attr" type="string"/><!-- is initialized in oninit() -->
+    <method name="initCreateIFrameDone">
+      // Initializes the iFrame loading detection mechanism.
+      // computing and setting the name of this iframeView's own
+      // load state attribute on the canvas :
+      this.createIFrameDone_attr = 'iFrame.createIFrameDone_' + this.iid;
+      // initializing this iframeView's own load state on the canvas :
+      canvas.setAttribute(createIFrameDone_attr, false);
+      ////Debug.write('createIFrameDone_attr='+this.createIFrameDone_attr);//
+      ////Debug.write('createIFrameDone='+this.createIFrameDone+canvas.getAttribute(createIFrameDone_attr));//
+	</method>
+	
+    <!-- IFrame load state scheduled check -->
+    <attribute name="callbackTimerDelay" type="number" value="100" />
+    <attribute name="createIFrame_callbackCounter" type="number" value="0" />
+    <attribute name="createIFrame_callbackMax" type="number" value="1000" />
+    <method name="createIFrame_callback">
+      ////Debug.write("createIFrame_callback : createIFrame_done=" + canvas.getAttribute(createIFrameDone_attr));//
+      if(!canvas.getAttribute(createIFrameDone_attr)) {
+         if (this.createIFrame_callbackCounter * callbackTimerDelay &lt; createIFrame_callbackMax) {
+            this.createIFrame_callbackCounter = this.createIFrame_callbackCounter + 1;
+            lz.Timer.resetTimer( this.createIFrame_callbackDelegate, callbackTimerDelay );
+         }
+      } else {
+         // creating iframeView moves listeners :
+         //Debug.write('createListeners');//
+         createListeners();
+         // now let's make sure the iframeView has been toggled by moving it
+         if (this.iFrameJsStack == 'javascript:') {
+            ////Debug.write('createListeners.move');//
+            // there's no javascript stack yet, so let's simply move the iframeView :
+            centerIframe();
+         } else {
+            ////Debug.write('createListeners.stacked '+this.iFrameJsStack);//
+            // some javascript has been scheduled to be loaded, so let's do it :
+            lz.Browser.loadJS(this.iFrameJsStack);
+         }
+      }
+    </method>
+    
+    <!-- Stackable javascript execution mechanisme -->
+    <attribute name="iFrameJsStack" type="string" value="javascript:" />
+    <method name="executeJs" args="s">
+      ////Debug.write("executeJs", s);//
+      if (canvas.getAttribute(createIFrameDone_attr)) {
+         ////Debug.write("executeJs.direct", s);//
+         lz.Browser.loadJS(s); // iframeView is loaded, so direct execution
+      } else {
+         ////Debug.write("executeJs.stacked", s);//
+         // else the iframeView has not yet been loaded, so let's stack it :
+         this.iFrameJsStack = this.iFrameJsStack + ';' + s ;
+      }
+    </method>
+	
+    <method name="createListeners" >
+      this.myDelx = new LzDelegate(this, "centerIframe", this, "onx");
+      this.myDely = new LzDelegate(this, "centerIframe", this, "ony");
+      this.myDelw = new LzDelegate(this, "centerIframe", this, "onwidth");
+      this.myDelh = new LzDelegate(this, "centerIframe", this, "onheight");
+    </method>
+    
+    <method  name="centerIframe">
+      // we use a timer in order to avoid too many js call (slow)
+      //Debug.write("centerIframe request");
+      if(typeof this.centerIframe_Delegate == 'undefined') {
+         this.centerIframe_Delegate = new LzDelegate( this, "centerIframe_jsCall" );
+      }
+      lz.Timer.resetTimer( this.centerIframe_Delegate, 20 );
+    </method>
+    
+    <method  name="centerIframe_jsCall">
+      var s = "javascript:centerIframe('"
+            + this.iid   + "','"
+            + this.getAttributeRelative("x",canvas)      + "','"
+            + this.getAttributeRelative("y",canvas)      + "','"
+            + (width +1) + "','"
+            + (height+1) + "')";
+      this.executeJs(s); // using the stackable js exec mechanism
+    </method>
+    
+  </class>
+
+</library>
+ 
diff --git a/WebContent/src/test/images/maindebug.lzx b/WebContent/src/test/images/maindebug.lzx
new file mode 100644
index 0000000..62b4f0d
--- /dev/null
+++ b/WebContent/src/test/images/maindebug.lzx
@@ -0,0 +1,85 @@
+<?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.
+  
+-->
+<canvas debug="true" width="100%" height="100%" title="Geo Map Portal">
+    
+    <debug fontsize="11" oninit="Debug.showInternalProperties = true" />
+
+<handler name="oninit">
+    <![CDATA[
+    
+        LzLoadQueue.maxOpen = 100;
+
+    
+	    //
+        var url = new Array();
+	    
+	    
+        
+        url[5] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSide.jpg";
+		url[4] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSideBig.jpg";
+		url[3] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/VideoClass.png";
+		url[2] = "http://openmeetings.googlecode.com/svn/docs/LanguageNavigationErrors.png";
+		url[1] = "http://openmeetings.googlecode.com/svn/docs/OpenMeetingsSOAPGateway.png";
+		url[0] = "http://openmeetings.googlecode.com/svn/docs/OpenmeetingsAllTables.png";
+        url[6] = "http://openmeetings.googlecode.com/svn/docs/SOAPFlowDirectLogin.png";
+        url[7] = "http://openmeetings.googlecode.com/svn/docs/UserDiagram.png";
+        url[8] = "http://openmeetings.googlecode.com/svn/docs/UserGroupsOrganizationsAndRooms.png";
+        url[9] = "http://openmeetings.googlecode.com/svn/docs/architecture.jpg";
+        url[10] = "http://openmeetings.googlecode.com/svn/docs/moodle_plugin_audience.png";
+        url[11] = "http://openmeetings.googlecode.com/svn/docs/moodle_plugin_conference.png";
+        url[12] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard.PNG";
+        url[13] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard2.PNG";
+        url[14] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard3.PNG";
+        url[15] = "http://openmeetings.googlecode.com/svn/docs/test_application_audio_video.png";
+        
+        
+        
+        
+        for (var i=0;i<16;i++) {
+            var d = new Date();
+            new layerImage(canvas.myView,{srcImage:url[i]+"?time="+i+d.getTime()});
+        }
+        
+        
+        for (var i=0;i<40;i++) {
+            var d = new Date();
+            new layerImage(canvas.myView,{srcImage:"http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSideBig.jpg?time="+i+d.getTime()});
+        }
+
+    ]]>
+</handler>
+
+<class name="layerImage" extends="image">
+    <attribute name="layerid" value="0" type="number" />
+    <attribute name="type" value="" type="string" />
+    <attribute name="isLayerImage" value="true" type="boolean" />
+    <attribute name="srcImage" value="" type="string" setter="this.setImageSource(srcImage)" />
+    <method name="setImageSource" args="srcImage">
+        if ($debug) Debug.write("setImageSource",srcImage);
+        //var mcRef = this.getDisplayObject();
+        //mcRef.loadMovie(srcImage);
+        this.setSource(srcImage);
+    </method>
+</class>  
+
+<view name="myView" />
+  
+</canvas>
diff --git a/WebContent/src/test/images/maindebugTimer.lzx b/WebContent/src/test/images/maindebugTimer.lzx
new file mode 100644
index 0000000..95abcee
--- /dev/null
+++ b/WebContent/src/test/images/maindebugTimer.lzx
@@ -0,0 +1,94 @@
+<?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.
+  
+-->
+<canvas debug="true" width="100%" height="100%" title="Geo Map Portal">
+    
+    <debug fontsize="11" oninit="Debug.showInternalProperties = true" />
+
+<attribute name="url" value="" type="string" />
+<attribute name="currentIndex" value="0" type="number" />
+
+<handler name="oninit">
+    <![CDATA[
+    
+	    LzLoadQueue.maxOpen = 100;
+	    
+	    this.url = new Array();
+	    
+	    this.url[5] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSide.jpg";
+	    this.url[4] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSideBig.jpg";
+	    this.url[3] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/VideoClass.png";
+	    this.url[2] = "http://openmeetings.googlecode.com/svn/docs/LanguageNavigationErrors.png";
+	    this.url[1] = "http://openmeetings.googlecode.com/svn/docs/OpenMeetingsSOAPGateway.png";
+	    this.url[0] = "http://openmeetings.googlecode.com/svn/docs/OpenmeetingsAllTables.png";
+	    this.url[6] = "http://openmeetings.googlecode.com/svn/docs/SOAPFlowDirectLogin.png";
+	    this.url[7] = "http://openmeetings.googlecode.com/svn/docs/UserDiagram.png";
+	    this.url[8] = "http://openmeetings.googlecode.com/svn/docs/UserGroupsOrganizationsAndRooms.png";
+	    this.url[9] = "http://openmeetings.googlecode.com/svn/docs/architecture.jpg";
+	    this.url[10] = "http://openmeetings.googlecode.com/svn/docs/moodle_plugin_audience.png";
+	    this.url[11] = "http://openmeetings.googlecode.com/svn/docs/moodle_plugin_conference.png";
+	    this.url[12] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard.PNG";
+	    this.url[13] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard2.PNG";
+	    this.url[14] = "http://openmeetings.googlecode.com/svn/docs/newWhiteBoard3.PNG";
+	    this.url[15] = "http://openmeetings.googlecode.com/svn/docs/test_application_audio_video.png";
+	    this.url[16] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSideBig.jpg";
+	    
+	    for (var k = 16;k<40;k++) {
+            this.url[k] = "http://openmeetings.googlecode.com/svn/docs/uml/images/openmeetings/diagram/ModerationChangeClientSideBig.jpg";
+        }
+	    
+	    this.fadeDelegate = new LzDelegate( this, "sendImage" );
+	    LzTimer.addTimer( this.fadeDelegate, 50 );
+        
+    ]]>
+</handler>
+
+<method name="sendImage">
+    <![CDATA[
+    
+        var d = new Date();
+        
+        new layerImage(canvas.myView,{srcImage:this.url[this.currentIndex]+"?time="+d.getTime()});
+        
+        this.currentIndex ++;
+        
+        if (this.currentIndex < 40) {
+            LzTimer.addTimer( this.fadeDelegate, 50 );
+        }
+
+    ]]>
+</method>
+
+<class name="layerImage" extends="image">
+    <attribute name="layerid" value="0" type="number" />
+    <attribute name="type" value="" type="string" />
+    <attribute name="isLayerImage" value="true" type="boolean" />
+    <attribute name="srcImage" value="" type="string" setter="this.setImageSource(srcImage)" />
+    <method name="setImageSource" args="srcImage">
+        if ($debug) Debug.write("setImageSource",srcImage);
+        //var mcRef = this.getDisplayObject();
+        //mcRef.loadMovie(srcImage);
+        this.setSource(srcImage);
+    </method>
+</class>  
+
+<view name="myView" />
+  
+</canvas>
diff --git a/WebContent/src/test/lang/en.lzx b/WebContent/src/test/lang/en.lzx
new file mode 100644
index 0000000..28d7146
--- /dev/null
+++ b/WebContent/src/test/lang/en.lzx
@@ -0,0 +1,46 @@
+<?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.
+  
+-->
+<library>
+<script>
+<![CDATA[
+
+var mess = {};
+
+mess.home = "Home";
+mess.welcome = "Welcome !<br />We now determine if your configuration is good to have the best experience with OpenMeetings.";
+mess.sound = "Sound";
+mess.micro = "Micro";
+mess.webcam = "Webcam";
+mess.bandwidth = "Bandwidth";
+mess.latency = "Latency";
+mess.synthesis = "Synthesis";
+mess.next = "Next >";
+mess.listen_sound = "Do you hear the voice ?";
+mess.yes = "Yes";
+mess.no = "No";
+mess.microRecord = "Record your voice and click on \"Play\" button to hear if your micro works.";
+mess.webcamText = "Your webcam :";
+mess.bandwidthText = "We are testing the capacity of your Internet connexion.";
+mess.latencyText = "We are testing the delay between your computer and our server.";
+mess.synthesisText = "Your results :";
+]]>
+</script>
+</library>
diff --git a/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arial.ttf b/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arial.ttf
new file mode 100644
index 0000000..ff0815c
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arial.ttf
Binary files differ
diff --git a/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arialbd.ttf b/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arialbd.ttf
new file mode 100644
index 0000000..d0d857e
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/fonts/hebrew/arialbd.ttf
Binary files differ
diff --git a/WebContent/src/test/lazslo-rtltext/resources.lzx b/WebContent/src/test/lazslo-rtltext/resources.lzx
new file mode 100644
index 0000000..c39f8ed
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/resources.lzx
@@ -0,0 +1,35 @@
+<!--
+  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.
+  
+-->
+<library>
+    
+    <!-- Fonts -->
+    <font name="default">
+      <face src="fonts/hebrew/arial.ttf"/>
+      <face src="fonts/hebrew/arialbd.ttf" style="bold"/>
+	</font>
+
+</library>
+<!--                                                                       -->
+<!-- Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.        -->
+<!-- Use is subject to license terms.                                      -->
+<!--                                                                       -->
+<!--                                                                       -->
+<!-- Laszlo Presentation Server version 3.0b1 001227                     -->
+<!--                                                                       -->
diff --git a/WebContent/src/test/lazslo-rtltext/rtlText.lzx b/WebContent/src/test/lazslo-rtltext/rtlText.lzx
new file mode 100644
index 0000000..caf1e73
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/rtlText.lzx
@@ -0,0 +1,82 @@
+<!--
+  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.
+  
+-->
+<library>
+
+	<!-- CLASS: rtlText ============================================ --> 
+	<!-- use this on dynamic data text tags. -->
+	<class name="rtlText" extends="text">
+		
+		<!-- ATTRIBUTES -->
+		<!-- text alignment: default is right -->
+    <attribute name="textAlign" value="right" type="string" /> 
+    
+    <method name="getTextAlign">    
+    	return this.textAlign;
+    </method>
+    
+    <method name="setTextAlign">
+    	switch ( this.getTextAlign() ) {
+				case "left" :
+					this.setX( 0 );
+				break;
+				case "center" :
+					this.setX( this.parent.width / 2 - this.getTextWidth() / 2 );
+				break;
+				case "right" :
+					this.setX( this.parent.width - this.getTextWidth() );
+				break;
+			}
+    </method>
+    
+    <method name="isLTR" args="c">
+		<![CDATA[
+			return ( c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 );
+		]]>
+	</method>
+    
+    <method name="isHEB" args="c">
+		<![CDATA[
+			return ( c >= 224 && c <= 250 );
+		]]>
+	</method>
+    
+    <method name="reverseWords" args="str">
+		<![CDATA[
+			if ( str == "" || str == null ) return ""; // undefined
+			// first char indicates the main directive of str (rtl/ltr)
+			if ( isLTR( str.charCodeAt( 0 ) ) ) return str; // english or number
+			var words_arr = str.split( "" ); // an array of chars
+			for ( var i = 0, str = ""; i < words_arr.length; i++ ) // reverse their order
+				str += words_arr[ words_arr.length - i - 1 ];
+			return str;
+		]]>
+	</method>
+		
+	<method name="applyData" args="rtl_str">
+		this.setAttribute('text', reverseWords( rtl_str ) );
+	</method>
+	
+	<handler name="ontext">
+		setTextAlign();
+	</handler>
+		
+	</class>
+
+</library>
diff --git a/WebContent/src/test/lazslo-rtltext/rtldata.xml b/WebContent/src/test/lazslo-rtltext/rtldata.xml
new file mode 100644
index 0000000..1d2f7d4
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/rtldata.xml
@@ -0,0 +1,56 @@
+<!--
+  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.
+  
+-->
+<!-- Persons Data -->
+<dataset name="personsData">
+	<myXML>
+    <person>
+        <name>אריאל שרון</name>
+        <title>ראש הממשלה</title>
+    </person>
+    <person>
+        <name>גל פרידמן</name>
+        <title>מדליסט אולימפי</title>
+    </person>
+     <person>
+        <name>פיני גרשון</name>
+        <title>מאמן מכבי תל-אביב</title>
+    </person>
+    <person>
+        <name>שרי אריסון</name>
+        <title>מיליארדרית</title>
+    </person>
+    <person>
+        <name>שלמה ארצי</name>
+        <title>זמר</title>
+    </person>
+    <person>
+        <name>מיקי ברקוביץ</name>
+        <title>כדורסלן עבר</title>
+    </person>
+    <person>
+        <name>יוסי בניון</name>
+        <title>שחקן כדורגל</title>
+    </person>
+   <person>
+        <name>ביל גייטס</name>
+        <title>בעל חברת מיקרוסופט</title>
+    </person>
+	</myXML>
+</dataset>
diff --git a/WebContent/src/test/lazslo-rtltext/test.lzx b/WebContent/src/test/lazslo-rtltext/test.lzx
new file mode 100644
index 0000000..572932d
--- /dev/null
+++ b/WebContent/src/test/lazslo-rtltext/test.lzx
@@ -0,0 +1,42 @@
+<!--
+  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.
+  
+-->
+<canvas debug="false">     
+
+	<!-- DATASETS -->
+	<include href="rtldata.xml"/>
+
+	<!-- RESOURCES [FONTS] -->
+  <include href="resources.lzx"/> 
+
+	<!-- RTLTEXT CLASS DEFINITION -->
+  <include href="rtlText.lzx"/> 
+
+	
+	<view x="200" y="20">
+    <simplelayout axis="y" />
+    <view datapath="personsData:/myXML[1]/person" width="300" bgcolor="#cccccc">
+      <simplelayout axis="y" />
+    	<rtlText name="txtName" textAlign="center" fontsize="10" font="default" fontstyle="bold" datapath="name/text()"/>
+    	<rtlText name="txtTitle" fontsize="10" font="default" datapath="title/text()"/> 
+    	<text></text>
+    </view>
+  </view>
+
+</canvas>
diff --git a/WebContent/src/test/lib/library.lzx b/WebContent/src/test/lib/library.lzx
new file mode 100644
index 0000000..3f4ad02
--- /dev/null
+++ b/WebContent/src/test/lib/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+    
+    <include href="nextButton.lzx" />
+
+</library>
diff --git a/WebContent/src/test/lib/nextButton.lzx b/WebContent/src/test/lib/nextButton.lzx
new file mode 100644
index 0000000..2885230
--- /dev/null
+++ b/WebContent/src/test/lib/nextButton.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+
+<class name="nextButton" extends="button" onclick="changeNextTabpane()">
+    
+    <attribute name="align" value="right" />
+    <attribute name="isdefault" value="true" />
+
+	<attribute name="nextTabpane" required="true" />
+
+    <method name="changeNextTabpane">
+      var object = this.getAttribute('nextTabpane');
+      object.setAttribute("selected","true");
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/src/test/main.lzx b/WebContent/src/test/main.lzx
new file mode 100644
index 0000000..42784da
--- /dev/null
+++ b/WebContent/src/test/main.lzx
@@ -0,0 +1,128 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+
+<include href="lang/en.lzx"/>
+
+<include href="lib/"/>
+<include href="content/"/>
+
+            <tabs name="mainTabs">
+               <tabpane selected="true" text="${mess.home}">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.welcome}" multiline="true" width="${this.parent.width - 20}" />
+                    <nextButton nextTabpane="${this.parent.parent.soundTab}" text="${mess.next}" />
+                </tabpane>
+
+                <tabpane text="${mess.sound}" name="soundTab" onselect="//Debug.write('focus'); audioplayer.play();">
+					
+					<!-- define content areas which are 
+						kind of component in classes -->
+					 <audioTest name="_audiotest" />
+					
+                </tabpane>                
+                
+                <tabpane text="${mess.micro}" name="microTab">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.microRecord}" multiline="true" width="${this.parent.width - 20}" />
+					        <view>
+					            <simplelayout axis="x" spacing="-1"/>
+					           <button width="40" onclick="audioplayer.stop()">
+					                <view resource="resources/play.png" y="6" align="center"/>
+					            </button>
+					            <button width="40" onclick="audioplayer.play()">
+					                <view resource="resources/record.png" y="5" align="center"/>
+					            </button>
+					        </view>
+					        
+					        <view>
+					            <simplelayout axis="x" spacing="-1"/>
+					            <button width="40" onclick="audioplayer.setVolume( audioplayer.getVolume() -10)">
+					                    -<view resource="resources/mix_volume.png" y="5" align="right"/>
+					                </button>
+					            <button width="40" onclick="audioplayer.setVolume( audioplayer.getVolume() +10)">
+					                    +<view resource="resources/mix_volume.png" y="5" align="right"/>
+					                </button>
+					        </view>
+                    <nextButton nextTabpane="${this.parent.parent.webcamTab}" text="${mess.next}" />
+                </tabpane>                
+
+                <tabpane text="${mess.webcam}" name="webcamTab">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.webcamText}" multiline="true" width="${this.parent.width - 20}" />
+		<view id="v1" layout="axis:y; spacing:4">
+			<videoview id="live" type="rtmp" stream="$once{canvas.s1}" width="240" height="160">
+				<camera id="cam" show="true" fps="20" width="240" height="160" 
+																picturequality="0"/>
+				<microphone id="mic" capturing="false"/>
+				
+			</videoview>
+		</view>                    
+                    <nextButton nextTabpane="${this.parent.parent.messTab}" text="${mess.next}" />
+                </tabpane>                
+
+                <tabpane text="${mess.bandwidth}" name="messTab">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.bandwidthText}" multiline="true" width="${this.parent.width - 20}" />
+                    <nextButton nextTabpane="${this.parent.parent.latencyTab}" text="${mess.next}" />
+                </tabpane>                
+
+                <tabpane text="${mess.latency}" name="latencyTab">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.latencyText}" multiline="true" width="${this.parent.width - 20}" />
+                    <nextButton nextTabpane="${this.parent.parent.synthesisTab}" text="${mess.next}" />
+                </tabpane>                
+
+                <tabpane text="${mess.synthesis}" name="synthesisTab">
+					<simplelayout axis="y" spacing="5"/>
+                    <text text="${mess.synthesisText}" multiline="true" width="${this.parent.width - 20}" />
+                </tabpane>                
+            </tabs>
+
+	
+	<rtmpconnection src="rtmp://192.168.0.1/'+canvas.webAppRootKey+'/test" autoconnect="true"/>
+	<mediastream name="s1" type="rtmp"/>
+	<mediastream name="s2" type="rtmp"/>
+	<simplelayout/>
+
+<!--	
+	<text multiline="true" width="100%"> Instructions:
+		<br/> 1. Either run a flash media server on localhost (127.0.0.1), or ssh tunnel to a
+		media server at a known host
+		<br/> 2. Press the broadcast button. (Grant camera access permission if needed.) The
+		button should change to say "stop broadcasting"
+		<br/> 3. Press the receive button. You should be receiving audio and video from
+		yourself and the button should say "stop receiving."
+		<br/> 4. Try out the audio and video mute buttons. The video mute should freeze the
+		received picture. The audio mute should silence the received sound.
+		<br/> 5. Press the receive button. The received video should freeze and the button
+		should say "stop receiving".
+		<br/> 6. Press the receive button again. The video should resume and the button should
+		say "receiving".
+		<br/> 7. Press the broadcast button. The received video should freeze and the button
+		should say "broadcast".<br/> <br/> The indicator below shows the status of the video
+		connection.
+		</text>
+-->	
+</canvas>
diff --git a/WebContent/src/test/page/main.lzx b/WebContent/src/test/page/main.lzx
new file mode 100644
index 0000000..e05088f
--- /dev/null
+++ b/WebContent/src/test/page/main.lzx
@@ -0,0 +1,35 @@
+<?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.
+  
+-->
+<canvas debug="true" width="100%" height="100%" 
+		fontsize="14" title="OpenMeetings - Computer testing">
+
+    <image name="_image" src="Добрыйдень.jpg" />
+    
+    <button text="loadImage2">
+    	<handler name="onclick">
+    		<![CDATA[
+    		   
+    	    ]]>
+    	</handler>
+    </button>
+    
+
+</canvas>
diff --git a/WebContent/src/test/page/main.lzx.swf8.swf b/WebContent/src/test/page/main.lzx.swf8.swf
new file mode 100644
index 0000000..cfd7b01
--- /dev/null
+++ b/WebContent/src/test/page/main.lzx.swf8.swf
Binary files differ
diff --git a/WebContent/src/test/page/test.jpg b/WebContent/src/test/page/test.jpg
new file mode 100644
index 0000000..51d5e80
--- /dev/null
+++ b/WebContent/src/test/page/test.jpg
Binary files differ
diff --git a/WebContent/src/test/regexp.jsp b/WebContent/src/test/regexp.jsp
new file mode 100644
index 0000000..031b348
--- /dev/null
+++ b/WebContent/src/test/regexp.jsp
@@ -0,0 +1,92 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="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.
+  
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title>OpenMeetings</title>
+	<script type="text/javascript" src="swfobject.js"></script>
+	<style type="text/css">
+		
+		/* hide from ie on mac \*/
+		html {
+			height: 100%;
+			overflow: hidden;
+		}
+		
+		#flashcontent {
+			height: 100%;
+		}
+		/* end hide */
+	
+		body {
+			height: 100%;
+			margin: 0;
+			padding: 0;
+			background-color: #ffffff;
+		}
+	
+	</style>
+	<link rel="shortcut icon" href="favicon.ico"> 
+	<script type="text/javascript">
+		function reMatch(str, reg){
+			var s = unescape(str);
+			var re = new RegExp(eval(unescape(reg)));
+			return s.replace(re,unescape(rep));
+		}
+	</script>
+</head>
+<body onLoad="focusSWF()">
+
+
+	<div id="flashcontent">
+		<strong>You need to upgrade your Flash Player</strong>
+		This is replaced by the Flash content. 
+		Place your alternate content here and users without the Flash plugin or with 
+		Javascript turned off will see this. Content here allows you to leave out <code>noscript</code> 
+		tags.
+	</div>
+	
+	<script type="text/javascript">
+		// <![CDATA[
+		
+		var so = new SWFObject("test-regExp2.lzx?lzt=swf&lzr=swf8", "lzapp", "100%", "100%", "8", "#ffffff");
+		so.addParam("quality", "high");
+		so.addParam("id", "lzapp");
+		so.addParam("allowScriptAccess", "always");
+		so.addParam("scale", "noscale");
+		so.write("flashcontent");
+		
+		function focusSWF(){
+		
+		    if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
+		    }else {
+		        document.getElementById('lzapp').focus();
+		    }
+		}   		
+		
+		// ]]>
+	</script>	
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/WebContent/src/test/resources/audio_scrubber.png b/WebContent/src/test/resources/audio_scrubber.png
new file mode 100644
index 0000000..b51da01
--- /dev/null
+++ b/WebContent/src/test/resources/audio_scrubber.png
Binary files differ
diff --git a/WebContent/src/test/resources/audio_scrubtrack.png b/WebContent/src/test/resources/audio_scrubtrack.png
new file mode 100644
index 0000000..1e7029b
--- /dev/null
+++ b/WebContent/src/test/resources/audio_scrubtrack.png
Binary files differ
diff --git a/WebContent/src/test/resources/mix_volume.png b/WebContent/src/test/resources/mix_volume.png
new file mode 100644
index 0000000..a010125
--- /dev/null
+++ b/WebContent/src/test/resources/mix_volume.png
Binary files differ
diff --git a/WebContent/src/test/resources/next.png b/WebContent/src/test/resources/next.png
new file mode 100644
index 0000000..95fc568
--- /dev/null
+++ b/WebContent/src/test/resources/next.png
Binary files differ
diff --git a/WebContent/src/test/resources/play.png b/WebContent/src/test/resources/play.png
new file mode 100644
index 0000000..b41fa2b
--- /dev/null
+++ b/WebContent/src/test/resources/play.png
Binary files differ
diff --git a/WebContent/src/test/resources/record.png b/WebContent/src/test/resources/record.png
new file mode 100644
index 0000000..d1eb150
--- /dev/null
+++ b/WebContent/src/test/resources/record.png
Binary files differ
diff --git a/WebContent/src/test/resources/stop.png b/WebContent/src/test/resources/stop.png
new file mode 100644
index 0000000..682c322
--- /dev/null
+++ b/WebContent/src/test/resources/stop.png
Binary files differ
diff --git a/WebContent/src/test/scrolledittext.lzx b/WebContent/src/test/scrolledittext.lzx
new file mode 100644
index 0000000..bc64ac5
--- /dev/null
+++ b/WebContent/src/test/scrolledittext.lzx
@@ -0,0 +1,170 @@
+<!--
+  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.
+  
+-->
+<library>
+
+    <include href="incubator/baseedittext.lzx" />
+    <include href="lz/vscrollbar.lzx"/>
+
+    <!--- Implements visual baseedittext with scrollbar. -->
+    <class name="scrolledittext" extends="baseedittext" 
+           multiline="true" clip="true" height="100">
+
+        <attribute name="border" value="0" />
+        
+        <view name="_face" bgcolor="0xffffff" 
+              width="${parent.width-parent.border*2}" 
+              height="${parent.height-parent.border*2}" 
+              x="${parent.border}" y="${parent.border}"/>
+
+        <_newinternalinputtext name="inp" 
+            x="${parent.border}" 
+            y="${parent.border}" 
+            height="${parent.height - parent.border * 2}" 
+            width="${parent.width - parent.vscrollwidth - parent.border*2}"
+            scrollevents="true">
+            <!-- Supplied by lztext now
+                attribute name="lineheight"
+                       value="${this.getTextHeight()/this.getMaxScroll()}"/-->
+            <attribute name="maxtextheight"
+                       value="${this.lineheight * this.maxscroll}"/>
+            <attribute name="maxheight" 
+                       value="${this.height + this.maxtextheight}"/>
+            <attribute name="pos" value="0" type="number"/>
+            
+            <setter name="pos" args="p">
+                if (this.inited) {
+                    var scroll = 1 - Math.floor(p / this.lineheight);
+                    if (scroll !== this.scroll) {
+                        this.setAttribute('scroll', scroll);
+                        //Debug.info('pos', p, this.scroll)
+                    }
+                    this.pos = p;
+                    if (this.onpos) this.onpos.sendEvent(p);
+                }
+            </setter>
+            
+            <handler name="onscroll" args="IGNORE_THIS_ARG">
+                this.setAttribute('pos', -this.lineheight * (this.scroll - 1));
+            </handler>
+        </_newinternalinputtext>
+
+        <!--- Width to give for scrollbar
+              @keywords private -->
+        <attribute name="vscrollwidth" value="0"/>
+        
+        <method name="setvscrollwidthfromvisibility" args="v">
+            this.setAttribute("vscrollwidth", (v ? this._vs.width : 0));
+        </method>
+        
+<!--
+        <om_vscrollbar name="_vs" axis="y" scrollattr="pos"
+            scrolltarget="parent.inp"
+            x="${parent.width - this.width - parent.border + 1}" 
+            stepsize="${parent.inp.lineheight}" 
+            scrollmax="${parent.inp.scrollheight}">
+        </om_vscrollbar>
+-->
+
+        <!--- Name of class to instantiate for vertical scroll bar.
+              @keywords public -->
+        <attribute name="vscrollbarclassname" type="string" value="vscrollbar"/>
+        
+        <!--- Our vertical scrollbar
+              @keywords private -->
+        <attribute name="_vs" value="null"/>
+        
+        <!--- @keywords private -->
+        <method name="ensurevscrollbar">
+            if (this['_vs'] == null) {
+                var classname = this.vscrollbarclassname;
+                if (classname == "") {
+                    classname = "vscrollbar";
+                }
+                if ($debug) {
+                    if (typeof(lz[classname]) == "undefined") {
+                        Debug.warn("scrollbarclassname undefined", this);
+                    }
+                }
+                if(typeof(lz[classname]) != "undefined"){
+                    this._vs = new lz[classname](this, 
+                                                 { axis: "y",
+                                                   scrollattr: "pos",
+                                                   scrollmax: "0",
+                                                   scrolltarget: this.inp});
+                                                   
+                    var xDel = new lz.Delegate(this, 'updateX');
+                    xDel.register(this['_vs'], 'onwidth');
+                    xDel.register(this, 'onwidth');
+                    xDel.register(this, 'onborder');
+                    
+                    new lz.Delegate(this, 'updateScrollMax', this.inp, 'onscrollheight');
+                    new lz.Delegate(this, 'updateStepSize', this.inp, 'onlineheight');
+                    // call once manually
+                    this.updateX();
+                    this.updateStepSize();
+                }
+
+            }
+        </method>
+        
+        <method name="updateX" args="IGNORE_THIS_ARG = null">
+            if(this['_vs']){
+                this._vs.setAttribute("x", this.width - this._vs.width );
+            }
+        </method>
+        
+        <method name="updateStepSize" args="IGNORE_THIS_ARG = null">
+            if(this['_vs']){
+                this._vs.setAttribute("stepsize", this.inp.lineheight);
+            }
+        </method>
+        
+        <method name="updateScrollMax" args="IGNORE_THIS_ARG = null">
+            if(this['_vs']){
+                this._vs.setAttribute("scrollmax", this.inp.scrollheight);
+            }
+        </method>
+        
+        <method name="init">
+            super.init();
+            this.ensurevscrollbar();
+            setvscrollwidthfromvisibility(this['_vs'] ? this._vs.visible : false);
+            this.myDel = new lz.Delegate(this, "setvscrollwidthfromvisibility", this['_vs'], "onvisible");
+        </method>
+
+ <!--- Overrides a parent method which calculates y position for text
+            in a way that doesn't make sense for this class. We just trap the 
+            call and do nothing. This field is positioned in y by the constraint
+            y=${parent.border}
+            Note: although this method is a no-op, it still has to be declared,
+            so the parent class's method does not get called on instances of 
+            this class. 
+        -->
+        <method name="_placeTextY">
+        </method>
+
+    </class>
+
+</library>
+<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
+* Copyright 2006-2009 Laszlo Systems, Inc. All Rights Reserved.               *
+* Use is subject to license terms.                                            *
+* X_LZ_COPYRIGHT_END ****************************************************** -->
+<!-- @LZX_VERSION@                                                         -->
diff --git a/WebContent/src/test/simplebroadcast.lzx b/WebContent/src/test/simplebroadcast.lzx
new file mode 100644
index 0000000..fadcf2e
--- /dev/null
+++ b/WebContent/src/test/simplebroadcast.lzx
@@ -0,0 +1,96 @@
+<?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.
+  
+-->
+<canvas debug="true" width="1000" height="700">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+	
+	<rtmpconnection src="rtmp://macbook/'+canvas.webAppRootKey+'/hibernate" autoconnect="true"/>
+	<mediastream name="s1" type="rtmp"/>
+	<mediastream name="s2" type="rtmp"/>
+	<simplelayout/>
+	
+	<text multiline="true" width="100%"> Instructions:
+		<br/> 1. Either run a flash media server on localhost (127.0.0.1), or ssh tunnel to a
+		media server at a known host
+		<br/> 2. Press the broadcast button. (Grant camera access permission if needed.) The
+		button should change to say "stop broadcasting"
+		<br/> 3. Press the receive button. You should be receiving audio and video from
+		yourself and the button should say "stop receiving."
+		<br/> 4. Try out the audio and video mute buttons. The video mute should freeze the
+		received picture. The audio mute should silence the received sound.
+		<br/> 5. Press the receive button. The received video should freeze and the button
+		should say "stop receiving".
+		<br/> 6. Press the receive button again. The video should resume and the button should
+		say "receiving".
+		<br/> 7. Press the broadcast button. The received video should freeze and the button
+		should say "broadcast".<br/> <br/> The indicator below shows the status of the video
+		connection.
+		</text>
+	<rtmpstatus/>
+	<view layout="axis:x; inset:10; spacing:10">
+		<view id="v1" layout="axis:y; spacing:4">
+			<videoview id="live" type="rtmp" stream="$once{canvas.s1}" width="240" height="160">
+				<camera id="cam" show="false" fps="20" width="240" height="160" 
+																picturequality="0"/>
+				<microphone id="mic" capturing="false"/>
+				
+			</videoview>
+			<edittext name="username">YourName</edittext>
+			<button text="broadcast">
+				<attribute name="text"
+					value="${(s1.broadcasting == false) ? 'broadcast' : 'stop broadcasting'}"/>
+				<handler name="onclick">
+					<![CDATA[
+                    if (cam.show == false) {
+                        live.stream.setAttribute('url', parent.username.text);
+                        live.stream.broadcast();
+							cam.setAttribute('show', true);
+                    } else {
+                        live.stream.stop();
+                        cam.setAttribute('show', false);
+                    }
+                  ]]>
+				</handler>
+			</button>
+			
+			<checkbox onvalue="s1.setAttribute('muteaudio', value)">Mute
+				Audio</checkbox>
+			<checkbox onvalue="s1.setAttribute('mutevideo', value)">Mute
+				Video</checkbox>
+			<button text="checkValues">
+				<handler name="onclick">
+					//Debug.write("this: ",live);
+					//Debug.write("this: ",cam);
+					//Debug.write("this: ",cam._dev);
+					//Debug.write("this: ",mic._dev);
+				</handler>
+			</button>
+		</view>
+		<view id="v2" layout="axis:y; spacing:4">
+			<videoview name="vid" type="rtmp" stream="$once{canvas.s2}"/>
+			<edittext name="username">YourName</edittext>
+			<button text="${s2.playing ? 'stop receiving' : 'receive'}"
+				onclick="s2.setAttribute('url', parent.username.text);
+                         if (s2.playing) s2.stop(); else s2.play();"/>
+		</view>
+	</view>
+	
+</canvas>
diff --git a/WebContent/src/test/simpletestedittext.lzx b/WebContent/src/test/simpletestedittext.lzx
new file mode 100644
index 0000000..ee80f95
--- /dev/null
+++ b/WebContent/src/test/simpletestedittext.lzx
@@ -0,0 +1,40 @@
+<?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.
+  
+-->
+<canvas height="400" debug="true">
+ 
+     <button text="Show then Fade" onclick="canvas.showText()" />
+     <text name="myText" opacity="0.0" bgcolor="#CCCCCC">The Invisible Man</text>
+     <simplelayout axis="y" spacing="10" />
+	
+	<attribute name="fadeDelegate" value="null" />
+ 
+     <method name="showText">
+         this.myText.setAttribute( "opacity", 1.0 );
+         this.fadeDelegate = new LzDelegate( this, "fadeText" );
+         lz.Timer.addTimer( this.fadeDelegate, 3000 );
+     </method>
+ 
+     <method name="fadeText">
+		 //Debug.write("fadeText: ",lz.Timer.countTimers(this.fadeDelegate));
+         this.myText.animate( "opacity", 0.0, 1000 );
+     </method>
+ 
+ </canvas>
diff --git a/WebContent/src/test/simpletestvalidBox.lzx b/WebContent/src/test/simpletestvalidBox.lzx
new file mode 100644
index 0000000..e23ddfb
--- /dev/null
+++ b/WebContent/src/test/simpletestvalidBox.lzx
@@ -0,0 +1,810 @@
+<?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.
+  
+-->
+<canvas height="400" debug="true">
+	
+<include href="lz/textlistitem.lzx" />
+	
+<script>
+<![CDATA[
+	
+String.prototype.startsWith = function(prefix) {
+    return (this.indexOf(prefix) === 0);
+};	
+	
+]]>
+</script>
+	
+<attribute name="statesInitValues" value="null" />
+	
+<handler name="oninit">
+	<![CDATA[
+		var tChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+		var tCharsSmall = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
+		
+		this.statesInitValues = new Array();
+		var m = 0;
+		while (m<20){
+			for (var i = 0;i<26;i++){
+				for (var r=0;r<3;r++){
+					var t = new Array();
+					t["state_id"] = i*r;
+					t["name"] = tChars.charAt(i)+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100));
+					this.statesInitValues.push(t);
+				}
+			}
+			m++;
+		}
+		//Debug.write(this.statesInitValues);
+		
+		this._validbox.addItem("Da","1");
+		this._validbox.selectItem("1",true);
+	]]>
+</handler>
+	
+<method name="validateCountry" args="str">
+	//Debug.write("validateCountry: ",str);
+	<![CDATA[
+		if (str.length!=0){
+			var a = new Array();
+			for (var i=0;i<canvas.statesInitValues.length;i++){
+				if (canvas.statesInitValues[i].name.startsWith(str))a.push(canvas.statesInitValues[i]);
+				//this.addItem(canvas.statesInitValues[i].name,canvas.statesInitValues[i].state_id);
+			}
+			return a;
+		}
+	]]>	
+</method>	
+	
+
+    <include href="base/baseformitem.lzx" />
+    <include href="lz/list.lzx" />
+    <include href="lz/floatinglist.lzx" />
+	
+	<include href="lz/combobox.lzx" />
+
+    <!--- A dropdown list of selectable items. -->
+    <class name="baseValidCombobox" extends="baseformitem" focusable="false" width="100">
+        <!--- @keywords private -->
+        <attribute name="defaultplacement"  value="cblist" type="string"/>
+
+        <!-- attributes -->
+        <!--- The value of the combobox. -->
+        <attribute name="value" value="${cblist.value}"/>
+
+        <!--- Indicates whether or not the popup list is showing.  -->
+        <attribute name="isopen"       value="false"  setter="this.setOpen(isopen)" />
+
+        <!--- The border size ( in pixels ) of the popup list.  -->
+        <attribute name="bordersize"   value="1" />
+
+        <!--- The spacing size ( in pixels ) between items in the pop-up list.  -->
+        <attribute name="spacing"   value="0" />
+
+        <!--- The text that appears in the text field when no item is selected. -->
+        <attribute name="defaulttext"  value="" type="string" />
+
+        <!--- The number of the item that is initially selected. This overrides
+              the value defined in the defaulttext attribute -->
+        <attribute name="defaultselection"  value="null" type="number"  setter="this.setDefaultSelection( defaultselection )"/>
+
+        <!--- This event is sent when the default selection is set.  -->
+        <event name="ondefaultselection" />
+
+        <!--- The class that is used to create an item in the list when
+              itemdatapath is assigned. -->
+        <attribute name="itemclassname" setter="this.setItemclassname(itemclassname)"  value="" type="string" />
+
+        <!--- Sets the height of the combobox to show 'n' items. -->
+        <attribute name="shownitems"   value="-1" />
+
+        <!--- @keywords private  -->
+        <attribute name="mousedownintext" value="false"/>
+
+        <!--- @keywords private  -->
+        <attribute name="initcomplete" value="0" />
+
+        <!--- Whether a scrollbar should automatically show up when there are more
+              items than shownitems. -->
+        <attribute name="autoscrollbar" value="true"/>
+
+        <!--- The initial selected item. -->
+        <attribute name="selected" value="null"/>
+
+        <!--- This event is triggered whenever the user makes a selection. It
+              may be used as a script in the combobox tag or as an event method.
+              -->
+        <event name="onselect"/>
+
+        <!--- One of "lazy", "resize", "pooling", "none". -->
+        <attribute name="dataoption" value="none" type="string"/>
+
+        <!--- The vertical offset of the floatinglist attached to this
+              combobox. -->
+        <attribute name="attachoffset" value="-1" type="number"/>
+
+        <!--- the x position of the text. default: 2 -->
+        <attribute name="text_x" value="2" type="number"/>
+
+        <!--- the y position of the text. default: 2 -->
+        <attribute name="text_y" value="2" type="number"/>
+
+        <!--- the width the text. default: combowidth - 19 -->
+        <attribute name="text_width" value="${this.width - 19}" type="number"/>
+
+        <!--- The minimum width this component is allowed to be.
+              Defaults to 50 pixels.
+              @keywords defaultsetter -->
+        <attribute name="min_width" value="50" type="number" />
+        
+        <!--- The method to be called for validating -->
+        <attribute name="validate_method" value="null" />
+
+        <!--- Since we are not focusable, defer to the inputtext's next selection,
+              so that when floatinglist is tabbed out of, we can provide a next
+              selection since we are it's owner
+              @keywords private -->
+        <method name="getNextSelection">
+            // must ensure the floatinglist is closed so that if it is being tabbed from,
+            // we can change the focus. (focus is normally not allowed to escape from
+            // a modal view).
+            this.setOpen(false);
+            return lz.Focus.getNext(interior.cbtext);
+        </method>
+
+        <!--- since we are not focusable, this provides an api for asking what child to send focus
+              to, as is the case when floatinglist is shift-tabbed back to us.
+              @keywords private -->
+        <method name="resolveSelection">
+            // must ensure the floatinglist is closed so that if it is being tabbed from,
+            // we can change the focus. (focus is normally not allowed to escape from
+            // a modal view).
+            this.setOpen(false);
+            return interior.cbtext;
+        </method>
+
+        <view name="bkgnd" width="100%" focusable="false">
+        <!--- subclasses defined the 'look' by placing views here -->
+        </view>
+
+        <view name="interior"
+            x="$once{classroot.text_x}"
+            y="$once{classroot.text_y}"
+            width="${classroot.text_width}"
+             height="${classroot.height - 2*classroot.bordersize - 2}"
+             focusable="false">
+            <!--- @keywords private -->
+            <attribute name="_dsblfield" value="null"/>
+
+            <method name="setupText" >
+                var txt = classroot.cblist.getText();
+                if ( !txt ) {
+                    if ( classroot.defaultselection ) {
+                        if ( classroot.cblist._contentview != null ) {
+                            classroot.cblist.selectItemAt( classroot.defaultselection );
+                            txt = classroot.cblist.getText();
+                        }
+                    } else {
+                        txt = classroot.defaulttext;
+                    }
+                }
+                if (this.cbtext) this.cbtext.setAttribute('text', txt );
+                if (this._dsblfield) this._dsblfield.setAttribute('text', txt );
+                parent._applystyle( parent.style );
+            </method>
+
+                <view name="editbkgnd" bgcolor="white" width="100%" height="100%" />
+                <inputtext x="2" y="1" name="cbtext" width="$once{parent.width - 4}">
+                    <attribute name="text" type="string" />
+					
+					<attribute name="initSelect" value="false" type="boolean" />
+					
+                    <attribute name="timerDelegate" value="null"/>
+                    <attribute name="typetime" type="number" value="4000"/>
+					<attribute name="timerIsInited" value="false" type="boolean"/>
+
+                    <!-- arrow down and up both popup floatinglist, and pass the key event to it -->
+                    <handler name="onkeydown" args="key">
+                        <![CDATA[
+						//Debug.write("onkeydown: ",key);
+                        // 38 is up-arrow
+                        // 40 is down-arrow
+                        // 32 is space
+                        // 13 is return
+                            if ((key==38) || (key==40)) {
+                                if (!classroot.isopen) {
+                                    classroot.setOpen(true, true); // open, withKey
+                                }
+    
+                                // pass the key event on to the floatinglist
+                                classroot.cblist.onkeydown.sendEvent(key);
+                            } else {
+                                //Debug.write("onkeydown txt: ",this.getText());
+                                if (!this.initSelect){
+                                    ////Debug.write("onvalue: ",txt,this);
+                                    if (!this.timerIsInited){
+                                        this.timerIsInited = true;
+                                        this.timerDelegate = new LzDelegate( this, "validatedText" );
+                                        //Debug.write("+++++++++++++++++ addTimer");
+                                        //Debug.write("+++++++++++++++++ removeTimer ",lz.Timer.countTimers());
+                                        lz.Timer.addTimer( this.timerDelegate, this.typetime );
+                                    } else {
+                                        //Debug.write("############### resetTimer NO ADDING ");
+                                        //Debug.write("############### removeTimer ",lz.Timer.countTimers());
+                                        //lz.Timer.removeTimer( this.timerDelegate );
+                                    }
+                                } else {
+                                    this.initSelect = false;
+                                }
+                            }
+                        ]]>
+                    </handler>
+
+                    <!-- pass up to component level so focus rect will be visible, and subclassers can catch -->
+                    <handler name="onfocus" args="v">
+                        if ( classroot['onfocus'] ) classroot.onfocus.sendEvent(v);
+                    </handler>
+                    <!-- pass up to component level so subclassers can catch -->
+                    <handler name="onblur" args="v">
+                        this.initSelect=true;
+                        classroot.setAttribute('text', this.getText() );
+                        if ( classroot['onblur'] ) classroot.onblur.sendEvent(v);
+                    </handler>
+                    <!-- pass up to component level so subclassers can catch -->
+                    <handler name="onkeyup" args="kc">
+                        if ( classroot['onkeyup'] ) classroot.onkeyup.sendEvent(kc);
+                    </handler>
+                    <!-- pass up to component level so subclassers can catch -->
+                    <handler name="onkeydown" args="kc">
+                        if ( classroot['onkeydown'] ) classroot.onkeydown.sendEvent(kc);
+                    </handler>
+
+                    <method name="getFocusRect"  >
+                        return classroot.getFocusRect();
+                    </method>
+
+					<method name="validatedText">
+						<![CDATA[
+                            //Debug.write("validatedText: ",this.getText());
+                            //this.reset();
+                            if (!this.initSelect){
+                                var t = classroot.validate_method(this.getText());
+                                //Debug.write('t: ',t.length);
+                                //this.parent._cblist.setAttribute('visible',true);
+                                classroot.cblist.removeAllItems();
+                                for (var i=0;i<t.length;i++){
+                                    classroot.cblist.addItem(t[i].name,t[i].state_id);
+                                }
+                                //Debug.write("############### removeTimer ",lz.Timer.countTimers());
+                                for (var eg in lz.Timer){
+                                    //Debug.write("############### lz.Timer ",eg,lz.Timer[eg]);
+                                }
+                                for (var eg in lz.Timer.timerList){
+                                    //Debug.write("############### lz.Timer.timerList ",eg,lz.Timer.timerList[eg]);
+                                }
+
+                                ////Debug.write("validateText: ",this.getText());
+                                //if (!classroot.isopen) {
+                                //    classroot.setOpen(true, true); // open, withKey
+                                //}
+                                this.timerIsInited = false;
+                            } else {
+                                this.initSelect=false;
+                                this.timerIsInited = false;
+                            }
+						]]>
+					</method>					
+
+                </inputtext>
+
+        </view>
+
+        <floatinglist name="cblist"
+                      width="${owner.width - 1}"
+                      bordersize="${this.owner.bordersize}"
+                      spacing="${this.owner.spacing}"
+                      visible="false"
+                      shownitems="${this.owner.shownitems}"
+                      attach="bottom"
+                      attachoffset="${this.owner.attachoffset}"
+                      multiselect="false"
+                      autoscrollbar="${owner.autoscrollbar}"
+                      defaultselection="${owner.defaultselection ?
+                                          owner.defaultselection : (owner.defaulttext == '' ?
+                                                                    0 : null) }">
+            <!-- create a blank datapath so that it can be assigned a datapointer when combobox is assigned data -->
+               <datapath>
+                   <attribute name="datacontrolsvisibility" value="false" />
+               </datapath>
+
+            <handler name="onconstruct">
+                this.dataoption = owner.dataoption;
+            </handler>
+
+            <method name="_dokeyup" args="kc"
+                    event="onkeyup">
+                if (kc == 27) {  // escape needs to close floating list
+                    this.owner.setOpen(false);
+                }
+            </method>
+            <method name="removeAllItems" args="index"> 
+                for (var eg in _contentview.subviews){
+                    _removeitem(_contentview.subviews[eg]); 
+                } 
+            </method>			
+        </floatinglist>
+
+
+        <!--- Sets the number of the item that is initially selected. This overrides
+              the value defined in the defaulttext attribute.
+              @param Number ds: the number of items to initally select. -->
+        <method name="setDefaultSelection" args="ds" >
+            this.defaultselection = ds;
+            if ( ds == null ) return;
+            if ( defaulttext != "" ) {
+                this.defaulttext = "";
+                //Debug.write("defaultselection overrides defaulttext",this);
+            }
+            if ( this.ondefaultselection ) this.ondefaultselection.sendEvent();
+        </method>
+
+        <!--- @keywords private -->
+        <handler name="ondata" args="d">
+            this.cblist.datapath.setPointer( d );
+        </handler>
+
+        <!--- @keywords private -->
+        <event name="onitemclassname"/>
+
+        <!--- Sets the type of list items which will be created in floatinglist
+              when necessary.
+              @param String icn: the class name to use to create items with. -->
+        <method name="setItemclassname" args="icn" >
+            this.itemclassname = icn; // before anything is inited capture value
+            if ( this.isinited ) { // view is now inited so check classname with cblist
+
+               if (icn != "") {
+                  // then force this classname as the classname for cblist
+                  cblist.setAttribute('itemclassname',this.itemclassname);
+                } else {
+                  //use the default subview as the classname
+                  this.itemclassname = cblist.itemclassname;
+                }
+            }
+            if (this.onitemclassname) this.onitemclassname.sendEvent();
+        </method>
+
+        <!--- @keywords private -->
+        <event name="ontext"/>
+
+        <!--- @keywords private -->
+        <method name="determinePlacement" args="newsub, placement, iargs" >
+            if (placement == 'cblist') 
+                return this.cblist.determinePlacement(newsub, placement, iargs);
+            else 
+                return super.determinePlacement(newsub, placement, iargs);
+        </method>
+
+        <!--- @keywords private -->
+        <method name="init" >
+            this._initcomplete = true;
+			
+            super.init();
+
+            // reassign classname now that the instance is inited
+            this.setItemclassname(this.itemclassname);
+            cblist.setVisible(false);
+         </method>
+
+        <!--- @keywords private -->
+        <handler name="onblur" >
+           if ( lz.Focus.getFocus() != this.interior.cbtext )
+                this.setOpen(false);
+        </handler>
+
+        <!--- @keywords private -->
+        <method name="getFocusRect"  >
+           var fx = this.getAttributeRelative('x',canvas);
+           var fy = this.getAttributeRelative('y',canvas);
+           var fw = this.getAttributeRelative('width',canvas);
+           var fh = this.getAttributeRelative('height',canvas);
+           return [fx,fy,fw,fh];
+        </method>
+
+        <!--- Selects a specific item in the list.
+              @param Object item: the item to select. -->
+        <method name="select" args="item" >
+           this.cblist.select(item);
+        </method>
+
+        <!--- @keywords private -->
+        <attribute name="_fixseldel" value="$once{new LzDelegate(this, 'fixSelection')}"/>
+        <!--- @keywords private -->
+        <method name="fixSelection">
+            this.interior.cbtext.setSelection(_fixseldel.start, _fixseldel.end);
+        </method>
+
+        <!--- this method listens for the onselect event from the floating list
+              and then resends the onselect event to itself so that developers can easily
+              reference that without knowing the internals of combobox
+              @keywords private -->
+        <handler name="onselect" reference="this.cblist"  args="v" > 
+			<![CDATA[
+				this.interior.cbtext.initSelect=true;
+				this.setOpen(false);
+	
+				// anItem has been selected so update the input text field
+				this.selected = v;
+				if (v) this.setAttribute('text',v.text);
+				if (lz.Focus.getFocus() == this.interior.cbtext) {
+					_fixseldel.start = 0;
+					_fixseldel.end = v.text.length;
+					lz.Idle.callOnIdle( _fixseldel );
+	
+				}
+	
+				// resend the event so that developers can write thier own
+				// onselect methods without having to know the internals of
+				// this class.
+				if ( this.onselect ) this.onselect.sendEvent(v);
+            ]]>
+        </handler>
+
+        <!--- @keywords private -->
+        <method name="passModeEvent" args="eventStr,view" > <![CDATA[
+            // Once a view has been made modal, this method
+            // gets called ONLY when a user clicks on a view 'outside'
+            // the contents of this view, or clicks on a inputtext view anywhere
+            // on the screen even for a subview within this view.
+            if ( eventStr == "onmousedown"  ){
+                // first, we only care about the mousedown event.
+                // if the user has pressed the mouse down on a textfield
+                // within the component, then we will not know this unless
+                // we test it to see if it is a subview of this component.
+
+                if ( view != null ) { // view is a clickable view
+                    // view is not LITERALLY part of the class heirarchy but
+                    // it maybe part of the floatingview of this component, and if so
+                    // then treat it as if it were a child of the class.
+
+                   if ( !view.childOf(this.cblist) ) {
+                        // view is outside of combobox so close the combbobox
+                        this.setOpen(false);
+
+                   } else {
+                        // view is a child of cblist, so don't do anything.
+                   }
+
+                } else {
+                    this.setOpen(false);
+                }
+            }
+            // if we're inside a modal dialog, need to propagate event manually
+            // since floating list is a child of the canvas
+            if (view && view.childOf(this.cblist)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+           // since a combox is not strictly modal, always return
+           // true to pass the event to the object (oustide combobox)
+           // that was clicked on
+           return true;
+        ]]> </method>
+
+        <!--- Toggles the open/close state of the popup list.
+            @param Boolean withkey: (optional) if true this is triggered by
+                  keyboard and focus indicators will be turned on;
+                  if false, this is triggered by mouse action and focus
+                  indicators will be turned off;
+                  if parameter is ommitted no change in focus indicator
+        -->
+        <method name="toggle" args="withkey">
+            this.setOpen(!this.isopen, withkey)
+        </method>
+
+        <!--- Sets the open/close state of the popup list.
+              @param Boolean open: true to open the list, else false to
+              close.
+              @param Boolean withkey: (optional) if true this is triggered by
+                    keyboard and focus indicators will be turned on;
+                    if false, this is triggered by mouse action and focus
+                    indicators will be turned off;
+                    if parameter is ommitted no change in focus indicator
+          -->
+        <method name="setOpen" args="open, withkey" >
+            if (!this.isinited) {
+                this.isopen = open;
+                return;
+            }
+            if (open) { // open combox
+                if (this.isopen) return; // tends to get called more than once, esp when
+                lz.ModeManager.makeModal( this );
+
+                this.cblist.bringToFront();
+                this.cblist.setVisible(true);
+                lz.Focus.setFocus(this.cblist, withkey);
+
+                this.isopen = true;
+                if (this['onisopen']) this.onisopen.sendEvent(true);
+            } else { // close combox
+                if (!this['isopen']) return;
+                this.isopen = false;
+
+                lz.ModeManager.release( this );
+                this.cblist.setVisible(false);
+                if (this['onisopen']) this.onisopen.sendEvent(false);
+                if ( lz.Focus.getFocus() == this.cblist ) {
+                    lz.Focus.setFocus(interior.cbtext, withkey);
+                }
+            }
+        </method>
+
+        <!--- @keywords private -->
+        <method name="applyData" args="d">
+            this.setAttribute('text', d );
+        </method>
+
+
+        <!--- Get the value for the combobox.
+              @return Object: the value selected or the value in the text
+              field, if no value was found. -->
+        <method name="getValue">
+           var rv;
+           var ra = this.cblist.getValue(); // an array of values
+           if (ra==null) {
+               rv  = this.interior.cbtext.getText();
+           } else {
+               rv = ra;
+           }
+           return rv;
+        </method>
+
+        <!--- Sets the displayed text.
+              @param String t: the text to display. -->
+        <method name="setText" args="t">
+            this.text = t;
+            this.interior.cbtext.setAttribute('text', t );
+            if (!this._enabled) interior._dsblfield.setAttribute('text', t );
+            if ( this.ontext ) this.ontext.sendEvent( t );
+        </method>
+
+        <!--- Get the displayed text.
+              @return String: the displayed text. -->
+        <method name="getText">
+           return this.interior.cbtext.getText();
+        </method>
+
+        <!--- Returns current selection.
+              @return Object: null if no selection, an item if single select
+              (default), or an array of items if multiselect. -->
+        <method name="getSelection">
+            return this.cblist.getSelection();
+        </method>
+
+        <!--- Add the specified item to list to the end of the list.
+              @param String txt: the text for the item.
+              @param Object val: the value for the item. -->
+        <method name="addItem" args="txt, val" >
+            this.cblist.addItem(txt,val);
+        </method>
+
+        <!--- Find a particular item by value. This method is not available with
+              dataoption="lazy" or dataoption="resize" (use data APIs instead).
+              @param Object value: the value for the item to get.
+              @return Object: the item found, or null, if not.
+              -->
+        <method name="getItem" args="value">
+            return this.cblist.getItem(value);
+        </method>
+
+        <!--- Find a particular item by its index. This method not available
+              with dataoption="lazy" or dataoption="resize"
+              (use data APIs instead).
+              @param Number index: the index for the item to get.
+              @return Object: the item found, or null, if not. -->
+        <method name="getItemAt" args="index">
+            return this.cblist.getItemAt(index);
+        </method>
+
+        <!--- Find the first item with the specified value and remove it from
+              the list.
+              @param Object value: the value of the item to remove. -->
+        <method name="removeItem" args="value" >
+            this.cblist.removeItem(value);
+        </method>
+
+        <!--- Remove an item by index (0 based count). This method is not
+            available with dataoption="lazy" or dataoption="resize"
+            (use data APIs instead).
+              @param Number index: the index of the item to remove. -->
+        <method name="removeItemAt" args="index" >
+            this.cblist.removeItemAt(index);
+        </method>
+
+        <!--- Select an item by value. This method is not available with
+              dataoption="lazy" or dataoption="resize".
+              @param Object value: the value of the item to select.
+			  initSelect = true will NOT throw a validating event -->
+        <method name="selectItem" args="value,initSelect">
+			if (initSelect) this.interior.cbtext.initSelect=true;
+            this.cblist.selectItem(value);
+        </method>
+
+        <!--- Select an item by index (0 based count).
+              @param Number index: the index of the item to select. -->
+        <method name="selectItemAt" args="index">
+            this.cblist.selectItemAt(index);
+        </method>
+
+        <!--- Clear the current selection in the list and sets the displayed
+            text to an empty string -->
+        <method name="clearSelection" >
+            this.cblist.clearSelection();
+            this.setAttribute('text',"");
+        </method>
+
+        <!--- @keywords private -->
+        <method name="_applystyle" args="s">
+            if (this.style != null) {
+                interior.editbkgnd.setAttribute("bgcolor", s.textfieldcolor);
+                interior.cbtext.setAttribute('bgcolor',s.textfieldcolor);
+                setTint(bkgnd, s.basecolor);
+           }
+        </method>
+
+        <!--- @keywords private -->
+        <method name="_showEnabled">
+           interior.cbtext.setVisible(this._enabled);
+            if (!this._enabled) {
+                if (interior._dsblfield == null) {
+                    var t = new LzText(interior,
+                        { name: '_dsblfield', x: 2, y: 1,
+                          width:interior.width, height:interior.height,
+                            fgcolor:this['style'] ? this.style.textdisabledcolor : null});
+                } else {
+                   interior._dsblfield.setVisible(true);
+                }
+                interior._dsblfield.setAttribute('text',this.getText());
+            } else {
+                if (interior._dsblfield) interior._dsblfield.setVisible(false);
+            }
+        </method>
+
+        <method name="setWidth" args="w">
+            super.setWidth(Math.max(w,this.min_width));
+        </method>
+    </class>
+
+
+    <!--- A dropdown list of selectable items. Can either be editable or
+          not. -->
+    <class name="validBox" extends="baseValidCombobox">
+		
+        <view name="lft" resource="lzcombobox_lft_rsc" placement="bkgnd"/>
+        <view name="mid" resource="lzcombobox_mid_rsc" stretches="width" placement="bkgnd"/>
+        <basebutton name="rgt" resource="lzcombobox_rgt_rsc" styleable="true"
+                placement="bkgnd" onclick="classroot.toggle(false)" />
+		
+        <stableborderlayout axis="x" placement="bkgnd"/>
+		
+               <!--- @keywords private -->
+        <method name="_showEnabled">
+           super._showEnabled();
+           if (_enabled) {
+				this.bkgnd.lft.setAttribute('frame', 1 );
+				this.bkgnd.mid.setAttribute('frame', 1 );
+            } else {
+				this.bkgnd.lft.setAttribute('frame', 3 );
+				this.bkgnd.mid.setAttribute('frame', 3 );
+            }
+        </method>
+
+    </class>		
+ <!--
+		<edittext name="state" width="270" y="20" x="120" fontsize="11">
+			
+			<attribute name="timerDelegate" value="null"/>
+			<attribute name="typetime" type="number" value="500"/>
+			<attribute name="timerIsInited" value="false" type="boolean"/>
+			
+			<attribute name="formervalue" value="" type="string"/>
+			<attribute name="startValidate" value="false" type="boolean"/>
+			
+			<method name="getValue"> return this.id; </method>
+			<method name="setValued" args="txt,id"> 
+				//Debug.write("setValue:",txt,id); 
+				this.id = id; this.setAttribute('text',txt); 
+			</method>
+			
+			<handler name="onfocus"> //Debug.write("onfocus ",this.getText());
+				this.startValidate = true; this.formervalue = this.getText();
+				</handler>
+			<handler name="onvalue" args="txt">
+				<![CDATA[
+				//Debug.write("onvalue: ",txt,this.startValidate);
+				if (!this.timerIsInited && this.startValidate){
+					this.timerIsInited = true;
+					this.timerDelegate = new LzDelegate( this, "validatedText" );
+					//Debug.write("############### addTimer");
+					lz.Timer.addTimer( this.timerDelegate, this.typetime );
+				} else {
+					lz.Timer.resetTimer( this.timerDelegate, this.typetime );
+				}
+				]]>
+			</handler>
+			<method name="validatedText">
+				<![CDATA[
+					//Debug.write("validatedText: ",this.getText());
+					//this.reset();
+					var t = canvas.validateCountry(this.getText());
+					//Debug.write('t: ',t.length);
+					this._cblist.setAttribute('visible',true);
+					this._cblist.removeAllItems();
+					for (var i=0;i<t.length;i++){
+						this._cblist.addItem(t[i].name,t[i].state_id);
+					}
+					lz.Timer.removeTimer(this.timerDelegate);
+					this.timerIsInited = false;
+					//Debug.write("validateText: ",this.getText());
+
+				]]>
+			</method>
+			<handler name="onblur" args="b"> //Debug.write("onblur: ",b);
+				<![CDATA[
+					if (b!=this._cblist){
+						var t = canvas.validateCountry(this.getText());
+						//Debug.write('t: ',t.length);
+						this._cblist.removeAllItems();
+						for (var i=0;i<t.length;i++){
+							this._cblist.addItem(t[i].name,t[i].state_id);
+						}
+						this.startValidate = false;
+						//this._cblist.setAttribute('visible',false);
+					} else {
+						//Debug.write("is this._cblist");
+					}
+				]]>
+				</handler>
+			
+			<floatinglist width="${ this.owner.width }" attach="bottom"
+				name="_cblist" visible="false" autoscrollbar="true" shownitems="7"
+				scrollbarclassname="scrollbarValidBox" >
+				<method name="removeAllItems" args="index"> 
+					for (var eg in _contentview.subviews){
+						_removeitem(_contentview.subviews[eg]); 
+					} 
+				</method>
+				<handler name="onselect" args="item"> 
+					//Debug.write("onselect:",item); 
+					//this.owner. 
+					this.setAttribute('visible',false);
+					lz.Focus.setFocus(this.owner); 
+				</handler>
+			</floatinglist>
+			
+		</edittext>
+  -->
+	
+	<validBox y="20" width="270" name="_validbox" 
+        shownitems="7" validate_method="$once{ canvas.validateCountry }" />
+    
+ </canvas>
diff --git a/WebContent/src/test/simpletestvalidText.lzx b/WebContent/src/test/simpletestvalidText.lzx
new file mode 100644
index 0000000..a71f716
--- /dev/null
+++ b/WebContent/src/test/simpletestvalidText.lzx
@@ -0,0 +1,290 @@
+<?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.
+  
+-->
+<canvas height="400" debug="true">
+	
+<include href="lz/textlistitem.lzx" />
+<include href="lz/edittext.lzx" />
+<include href="lz/button.lzx" />
+	
+<script>
+<![CDATA[
+	
+String.prototype.startsWith = function(prefix) {
+    return (this.indexOf(prefix) === 0);
+};	
+	
+]]>
+</script>
+	
+<attribute name="statesInitValues" value="null" />
+	
+<handler name="oninit">
+	<![CDATA[
+		var tChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+		var tCharsSmall = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
+		
+		this.statesInitValues = new Array();
+		var m = 0;
+		while (m<20){
+			for (var i = 0;i<26;i++){
+				for (var r=0;r<3;r++){
+					var t = new Array();
+					t["state_id"] = i*r;
+					t["name"] = tChars.charAt(i)+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100))+tCharsSmall.charAt(( Math.random()*100));
+					this.statesInitValues.push(t);
+				}
+			}
+			m++;
+		}
+		//Debug.write(this.statesInitValues);
+		
+		this._validbox.addAndSelectItem("Da","1");
+	]]>
+</handler>
+	
+<method name="validateCountry" args="str">
+	//Debug.write("validateCountry: ",str);
+	<![CDATA[
+		if (str.length!=0){
+			var a = new Array();
+			for (var i=0;i<canvas.statesInitValues.length;i++){
+				if (canvas.statesInitValues[i].name.startsWith(str))a.push(canvas.statesInitValues[i]);
+				//this.addItem(canvas.statesInitValues[i].name,canvas.statesInitValues[i].state_id);
+			}
+			return a;
+		}
+	]]>	
+</method>	
+	
+
+    <class name="validText" extends="edittext">
+        
+        <!--- The method to be called for validating -->
+        <attribute name="validate_method" value="null" />
+        
+        <!--- the id-attribute of the resultset -->
+        <attribute name="resultId" value="id" type="string" />
+        <!--- the name-attribute of the resultset -->
+        <attribute name="resultName" value="name" type="string" />        
+					
+        <attribute name="initSelect" value="false" type="boolean" />
+					
+        <attribute name="timerDelegate" value="null"/>
+        <attribute name="typetime" type="number" value="500"/>
+        <attribute name="timerIsInited" value="false" type="boolean"/>
+        
+        <!--- items to be shown in the floatinglist -->
+        <attribute name="shownitems" value="7" type="number" />          
+        <attribute name="spacing" value="1" type="number" />  
+        <!--- The vertical offset of the floatinglist attached to this
+              combobox. -->
+        <attribute name="attachoffset" value="-1" type="number"/>
+        <!--- Whether a scrollbar should automatically show up when there are more
+              items than shownitems. -->
+        <attribute name="autoscrollbar" value="true"/>   
+
+        <!--- The border size ( in pixels ) of the popup list.  -->
+        <attribute name="bordersize"   value="1" />      
+        
+        <attribute name="currentValue" type="string" value="" />
+        
+        <!--- refernce to the current selected item -->
+        <attribute name="_selected" value="null" />    
+        
+        <method name="addAndSelectItem" args="txt,id">
+            this.cblist.addItem(txt,id);
+            this.currentValue = id;
+            this.setAttribute('text',txt);
+        </method>    
+        
+        <method name="setSelection" args="obj">
+            this._selected = obj;
+            this.currentValue = obj.value;
+            this.setAttribute('text',obj.text);
+            this.setOpen(false,true);
+            this.onselect.sendEvent();
+        </method>    
+        
+        <handler name="onselect" args="obj" />
+        
+        <method name="getValue">
+            return this.currentValue;
+        </method>
+
+                    <!-- arrow down and up both popup floatinglist, and pass the key event to it -->
+        <handler name="onkeydown" args="key">
+            <![CDATA[
+                //Debug.write("onkeydown: ",key);
+                // 38 is up-arrow
+                // 40 is down-arrow
+                // 32 is space
+                // 13 is return
+                if ((key==38) || (key==40)) {
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    } else {
+                        lz.Focus.setFocus(this.cblist, true);
+                    }
+                    // pass the key event on to the floatinglist
+                    this.cblist.onkeydown.sendEvent(key);
+                } else if (key==27){
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    } else {
+                        lz.Focus.setFocus(this.cblist, true);
+                    }
+                    this.cblist.onkeydown.sendEvent(key);
+                } else if (key!=13 && key!=9){
+                    //Don't handle Enter and Tab Events cause it will open the listItems
+                    ////Debug.write("onkeydown txt: ",this.getText());
+                    if (!this.initSelect){
+                        ////Debug.write("onvalue: ",txt,this);
+                        if (!this.timerIsInited){
+                            this.timerIsInited = true;
+                            this.timerDelegate = new LzDelegate( this, "validatedText" );
+                            ////Debug.write("+++++++++++++++++ addTimer");
+                            //Debug.write("+++++++++++++++++ removeTimer ",lz.Timer.countTimers());
+                            lz.Timer.addTimer( this.timerDelegate, this.typetime );
+                        } else {
+                            ////Debug.write("############### resetTimer NO ADDING ");
+                            //Debug.write("############### resetTimer ",lz.Timer.countTimers());
+                            lz.Timer.resetTimer( this.timerDelegate, this.typetime );
+                        }
+                    } else {
+                        this.initSelect = false;
+                    }
+                }
+            ]]>
+        </handler>
+        
+        <method name="validatedText">
+            <![CDATA[
+                ////Debug.write("validatedText: ",this.getText());
+                //this.reset();
+                if (!this.initSelect){
+                    var t = this.validate_method(this.getText());
+                    ////Debug.write('t: ',t.length);
+                    //this.parent._cblist.setAttribute('visible',true);
+                    this.cblist.removeAllItems();
+                    for (var i=0;i<t.length;i++){
+                        ////Debug.write(t[i][this.resultName],t[i][this.resultId]);
+                        this.cblist.addItem(t[i][this.resultName],t[i][this.resultId]);
+                    }                
+
+                    ////Debug.write("validateText: ",this.getText());
+                    if (!this.isopen) {
+                        this.setOpen(true, true); // open, withKey
+                    }
+                    this.timerIsInited = false;
+                } else {
+                    this.initSelect=false;
+                    this.timerIsInited = false;
+                }
+            ]]>
+        </method>	
+        
+        <attribute name="isopen" value="false" type="boolean" setter="this.setOpen(isopen)" />
+        
+        <handler name="onisopen" args="bool" />
+        
+        <method name="setOpen" args="open, withkey" >
+            if (!this.isinited) {
+                this.isopen = open;
+                return;
+            }
+            if (open) { // open combox
+                if (this.isopen) return; // tends to get called more than once, esp when
+
+                this.cblist.bringToFront();
+                this.cblist.setVisible(true);
+
+                this.isopen = true;
+                if (this['onisopen']) this.onisopen.sendEvent(true);
+            } else { // close combox
+                if (!this['isopen']) return;
+                this.isopen = false;
+
+                this.cblist.setVisible(false);
+                if (this['onisopen']) this.onisopen.sendEvent(false);
+                if ( lz.Focus.getFocus() == this.cblist ) {
+                    lz.Focus.setFocus(this, withkey);
+                }
+            }
+        </method>           
+
+        <floatinglist name="cblist"
+                      width="${owner.width - 1}"
+                      bordersize="${this.owner.bordersize}"
+                      spacing="${this.owner.spacing}"
+                      visible="false"
+                      shownitems="${this.owner.shownitems}"
+                      attach="bottom"
+                      attachoffset="${this.owner.attachoffset}"
+                      multiselect="false"
+                      autoscrollbar="${owner.autoscrollbar}" >
+
+            <method name="_dokeyup" args="kc"
+                    event="onkeyup">
+                if (kc == 27) {  // escape needs to close floating list
+                    this.owner.setOpen(false);
+                }
+            </method>
+            <method name="removeAllItems" args="index"> 
+                for (var eg in _contentview.subviews){
+                    _removeitem(_contentview.subviews[eg]); 
+                } 
+            </method>	
+            <handler name="onselect" args="obj">
+                ////Debug.write("obj: ",obj);
+                this.owner.setSelection(obj);
+            </handler>	            	
+        </floatinglist>        
+        
+         <handler name="onclick" reference="lz.GlobalMouse" args="who">
+           <![CDATA[ 
+               //need to use lz.GlobalMouse, since we don't get clicks if we're
+               //checked. NB that lz.GlobalMouse sends its events before the view
+               //receives the events, so we can just unlock it here, and the
+               //checkbox can do its normal onclick handling.
+               //Debug.write("onclick lz.GlobalMouse",lz.GlobalMouse,who);
+               //if (who != this.cblist && who.childOf(this.cblist)){
+               //    this.setOpen(false,false);
+               //} 
+               // LPP-3165
+           ]]>
+         </handler>        
+
+    </class>
+	
+
+	<validText y="20" width="270" name="_validbox" 
+        shownitems="7" validate_method="$once{ canvas.validateCountry }" 
+        resultId="state_id" resultName="name" />
+    
+    <button x="300" y="20" text="getValues">
+        <handler name="onclick">
+            //Debug.write(parent._validbox.getValue());
+            //Debug.write(parent._validbox.getText());
+            //Debug.write(parent._validbox._selected);
+        </handler>
+    </button>
+    
+ </canvas>
diff --git a/WebContent/src/test/simpletimertest.lzx b/WebContent/src/test/simpletimertest.lzx
new file mode 100644
index 0000000..521baba
--- /dev/null
+++ b/WebContent/src/test/simpletimertest.lzx
@@ -0,0 +1,58 @@
+<?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.
+  
+-->
+<canvas height="400" debug="true">
+    
+    <include href="lz/button.lzx" />
+ 
+    <simplelayout axis="y" spacing="10" />
+
+    <text name="myText" opacity="0.0" bgcolor="#CCCCCC">The Invisible Man</text>
+     
+     
+    <edittext >
+        <attribute name="timerDelegate" value="null"/>
+        <attribute name="typetime" type="number" value="2000"/>
+        <attribute name="timerIsInited" value="false" type="boolean"/>
+     
+        <handler name="onvalue">
+            //Debug.write("onvalue");
+            if (!this.timerIsInited){
+                this.timerIsInited = true;
+                canvas.myText.setAttribute( "opacity", 1.0 );
+                this.timerDelegate = new LzDelegate( this, "fadeText" );
+                //Debug.write("+++++++++++++++++ addTimer");
+                lz.Timer.addTimer( this.timerDelegate, this.typetime );
+            } else {
+                //Debug.write("############### resetTimer NO ADDING ");
+                lz.Timer.resetTimer( this.timerDelegate, this.typetime );
+            }
+        </handler>
+     
+        <method name="fadeText">
+            this.timerIsInited = false;
+            //Debug.write("fadeText ");
+            canvas.myText.animate( "opacity", 0.0, 1000 );
+        </method>
+    </edittext>
+    
+    
+ 
+ </canvas>
diff --git a/WebContent/src/test/swf/Google.swf b/WebContent/src/test/swf/Google.swf
new file mode 100644
index 0000000..061e1d3
--- /dev/null
+++ b/WebContent/src/test/swf/Google.swf
Binary files differ
diff --git a/WebContent/src/test/swf/main.lzx b/WebContent/src/test/swf/main.lzx
new file mode 100644
index 0000000..2ee557a
--- /dev/null
+++ b/WebContent/src/test/swf/main.lzx
@@ -0,0 +1,72 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+
+<button text="load SWF">
+    <handler name="onclick">
+        <![CDATA[
+	        if ($debug) Debug.write("load SWF");
+	        //parent.myView._swfView.setAttribute("src","Google.swf");
+	        parent.myView._swfView.setSource("http://localhost:5080/openmeetings/DownloadHandler?fileName=Google.swf&moduleName=videoconf1&parentPath=/Google&room_id=1&sid=a498726852b649da3cce4a5ee9cb3a9b");
+	        //parent.myView._swfView.setSource("http://localhost:5080/openmeetings/Google.swf");
+        ]]>
+    </handler>
+</button>
+
+<view name="myView" y="20">
+    <!--
+    play="false" stretches="both"
+     -->
+    <view name="_swfView" >
+        <handler name="onframe" args="i">
+            ////Debug.write("onframe",i);
+        </handler>
+        
+        <handler name="onplay" args="i">
+            ////Debug.write("onplay",i);
+        </handler>
+        
+        <handler name="onstop" args="i">
+            ////Debug.write("onstop",i);
+        </handler>
+        
+        <handler name="onload">
+            <![CDATA[
+                Debug.write("onload: ",this);
+            ]]>
+        </handler>
+        <handler name="onerror" args="error">
+            <![CDATA[
+                Debug.write("onerror "+error);
+            ]]>
+        </handler>
+        <handler name="ontimeout" args="error">
+            <![CDATA[
+                Debug.write("ontimeout "+error);
+            ]]>
+        </handler> 
+    </view>
+</view>
+
+</canvas>
diff --git a/WebContent/src/test/swf/main.lzx.lzr=swf8.swf b/WebContent/src/test/swf/main.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..e766630
--- /dev/null
+++ b/WebContent/src/test/swf/main.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/test-arrow.lzx b/WebContent/src/test/test-arrow.lzx
new file mode 100644
index 0000000..6bcd29b
--- /dev/null
+++ b/WebContent/src/test/test-arrow.lzx
@@ -0,0 +1,285 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="500" height="100%" >
+	
+	<debug oninit="Debug.showInternalProperties = true"/>
+	
+<class name="drawViewNew" extends="drawview" cachebitmap="false" x="-1" y="-1" >
+    
+</class>
+
+<drawview>
+    
+    <handler name="onconstruct">
+        <![CDATA[
+            //var pStart = {'x':100,'y':100};
+            //var pEnd = {'x':200,'y':200};
+            
+            var p = new flash.geom.Point(100,100);
+            var pEnd = new flash.geom.Point(100,200);
+            if ($debug) Debug.write("p",p);
+            
+            var normalizedPoint = new flash.geom.Point(-2, 4);
+			if ($debug) Debug.write(normalizedPoint.length); // 5
+			if ($debug) Debug.write(normalizedPoint.toString()); // (x=3, y=4)
+			normalizedPoint.normalize(10);
+			if ($debug) Debug.write(normalizedPoint.length); // 10
+			if ($debug) Debug.write(normalizedPoint.toString()); // (x=6, y=8)
+            
+            
+            var normalizedPoint = new flash.geom.Point(2, -4);
+            if ($debug) Debug.write(normalizedPoint.length); // 5
+            if ($debug) Debug.write(normalizedPoint.toString()); // (x=3, y=4)
+            normalizedPoint.normalize(10);
+            if ($debug) Debug.write(normalizedPoint.length); // 10
+            if ($debug) Debug.write(normalizedPoint.toString()); // (x=6, y=8)
+            
+            //normalizedPoint.normalize(5);
+            //if ($debug) Debug.write(normalizedPoint.length); // 10
+            //if ($debug) Debug.write(normalizedPoint.toString()); // (x=3, y=4)
+
+            if ($debug) Debug.write("##################");
+            
+            var pArrowStart = new flash.geom.Point(100,100);
+	        var pArrowEnd = new flash.geom.Point(200,100);
+	        
+	        var obj = new lz.drawViewNew(canvas);
+	        
+	        this.drawArrow(obj,pArrowStart,pArrowEnd,4);
+        ]]>
+    </handler>
+    
+    <method name="test">
+        var p1 = p.normalize(1);
+        if ($debug) Debug.write("p1",p1);
+        
+        var p11 = flash.geom.Point.interpolate(p,pEnd,0.5);
+        if ($debug) Debug.write("p11",p11);
+        
+        
+        var p12 = pEnd.subtract(p);
+        if ($debug) Debug.write("p12",p12);
+        
+        
+        var pArrowStart = new flash.geom.Point(100,100);
+        var pArrowEnd = new flash.geom.Point(200,200);
+        
+        var obj = new lz.drawViewNew(canvas);
+        
+        this.drawArrow(obj,pArrowStart,pArrowEnd,4);
+        
+        pArrowStart = new flash.geom.Point(300,300);
+        pArrowEnd = new flash.geom.Point(200,200);
+        obj = new lz.drawViewNew(canvas);
+        this.drawArrow(obj,pArrowStart,pArrowEnd,20);
+        
+        pArrowStart = new flash.geom.Point(600,300);
+        pArrowEnd = new flash.geom.Point(200,100);
+        obj = new lz.drawViewNew(canvas);
+        this.drawArrow(obj,pArrowStart,pArrowEnd,20);
+        
+        var p1 = new flash.geom.Point(-60, -100);
+        var p2 = new flash.geom.Point(20, 50);
+        var f = 0.5;
+        
+        var p3 = flash.geom.Point.interpolate(p1,p2,f);
+        if ($debug) Debug.write("p3",p3);
+    </method>
+    
+    <method name="drawArrow" args="graphics,start,end,thickness">
+        <![CDATA[
+    //(graphics:Graphics,
+    //            start:Point,end:Point,
+    //            style:Object=null):void {
+            
+            if (start.equals(end)) return;
+            
+            
+            var arrowStyle = {'shaftControlPosition':0.5,
+                    'shaftControlSize':0.5,
+                    'headLength':thickness*5, //Pixel Length of arrow head
+                    'headWidth':thickness*5,//Relative width of arrow head
+                    'edgeControlPosition':0.5,
+                    'edgeControlSize':0.5,
+                    'shaftPosition':0,
+                    'shaftThickness':thickness
+                    };
+            
+            var fullVect:Point = end.subtract(start);
+            var halfWidth:Number = (arrowStyle.headWidth != -1) ? arrowStyle.headWidth/2 : arrowStyle.headLength/2; 
+            
+            //Figure out the line start/end points
+            var startNorm = new flash.geom.Point(fullVect.y,-fullVect.x);
+            startNorm.normalize(arrowStyle.shaftThickness/2);
+            var start1 = start.add(startNorm);
+            var start2 = start.subtract(startNorm);
+            var end1 = end.add(startNorm);
+            var end2 = end.subtract(startNorm);
+            
+            //if ($debug) Debug.write("startNorm: ",startNorm.toString());
+            //if ($debug) Debug.write("start1: ",start1.toString());
+            //if ($debug) Debug.write("start2: ",start2.toString());
+            //if ($debug) Debug.write("end1: ",end1.toString());
+            //if ($debug) Debug.write("end2: ",end2.toString());
+            
+            //figure out where the arrow head starts
+            var headPnt = fullVect.clone();
+            //if ($debug) Debug.write("headPnt 1: ",headPnt.toString());
+            //if ($debug) Debug.write("headPnt.length 1: ",headPnt.length);
+            //if ($debug) Debug.write("arrowStyle.headLength 1: ",arrowStyle.headLength);
+            headPnt.normalize(headPnt.length-arrowStyle.headLength);
+            //if ($debug) Debug.write("headPnt 2: ",headPnt.toString());
+            headPnt = headPnt.add(start);
+            //if ($debug) Debug.write("headPnt 3: ",headPnt.toString());
+            
+            //calculate the arrowhead corners
+            var headPntNorm = startNorm.clone();
+            //if ($debug) Debug.write("headPntNorm ^^: ",headPntNorm.toString());
+            //if ($debug) Debug.write("halfWidth ^^: ",halfWidth);
+            headPntNorm.normalize(halfWidth);
+            //if ($debug) Debug.write("headPntNorm: ",headPntNorm.toString());
+            var edge1 = headPnt.add(headPntNorm);
+            var edge2 = headPnt.subtract(headPntNorm);
+            
+            //if ($debug) Debug.write("edge1: ",edge1.toString());
+            //if ($debug) Debug.write("edge2: ",edge2.toString());
+            
+            //Figure out where the arrow connects the the shaft, then calc the intersections
+            var shaftCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("end: ",end.toString());
+            //if ($debug) Debug.write("headPnt",headPnt.toString());
+            //if ($debug) Debug.write("arrowStyle.shaftPosition: ",arrowStyle.shaftPosition);
+            //if ($debug) Debug.write("shaftCenter",shaftCenter.toString());
+            var inter1 = this.getLineIntersection(start1,end1,shaftCenter,edge1);
+            var inter2 = this.getLineIntersection(start2,end2,shaftCenter,edge2);
+            
+            //if ($debug) Debug.write("inter1: ",inter1.toString());
+            //if ($debug) Debug.write("inter2: ",inter2.toString());
+            
+            //Figure out the control points
+            var edgeCenter = flash.geom.Point.interpolate(end,headPnt,arrowStyle.edgeControlPosition);
+            var edgeNorm = startNorm.clone();
+            edgeNorm.normalize(halfWidth*arrowStyle.edgeControlSize);
+            //if ($debug) Debug.write("halfWidth*arrowStyle.edgeControlSize: "+(halfWidth*arrowStyle.edgeControlSize));
+            //if ($debug) Debug.write("edgeNorm: "+edgeNorm.toString());
+            var edgeCntrl1 = edgeCenter.add(edgeNorm);
+            var edgeCntrl2 = edgeCenter.subtract(edgeNorm);
+
+            //if ($debug) Debug.write("edgeCntrl1: ",edgeCntrl1.toString());
+            //if ($debug) Debug.write("edgeCntrl2: ",edgeCntrl2.toString());
+
+            //if ($debug) Debug.write("moveTo: ",start1.x,start1.y);
+            //if ($debug) Debug.write("lineTo",inter1.x,inter1.y);
+            //if ($debug) Debug.write("lineTo",edge1.x,edge1.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            //if ($debug) Debug.write("quadraticCurveTo",edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            //if ($debug) Debug.write("lineTo",inter2.x,inter2.y);
+            //if ($debug) Debug.write("lineTo",start2.x,start2.y);
+            //if ($debug) Debug.write("lineTo",start1.x,start1.y);
+            
+            graphics.moveTo(start1.x,start1.y);
+            graphics.lineTo(inter1.x,inter1.y);
+            graphics.lineTo(edge1.x,edge1.y);
+            graphics.quadraticCurveTo(edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+            graphics.quadraticCurveTo(edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+            graphics.lineTo(inter2.x,inter2.y);
+            graphics.lineTo(start2.x,start2.y);
+            graphics.lineTo(start1.x,start1.y);
+            
+            graphics.strokeStyle = 0x000000;
+            graphics.stroke();
+
+            graphics.fillStyle = 0x000000;
+            graphics.fill();
+        ]]>
+    </method>
+    
+    <method name="getLineIntersection" args="a1,a2,b1,b2">
+        <![CDATA[ 
+        
+            //calculate directional constants
+            var k1 = (a2.y-a1.y) / (a2.x-a1.x);
+            var k2 = (b2.y-b1.y) / (b2.x-b1.x);
+            
+            // if the directional constants are equal, the lines are parallel,
+            // meaning there is no intersection point.
+            if( k1 == k2 ) return null;
+            
+            var x = 0;
+            var y = 0;
+            var m1 = 0;
+            var m2 = 0;
+            
+            //if ($debug) Debug.write("k1",k1);
+            //if ($debug) Debug.write("k2",k2);
+            
+            // an infinite directional constant means the line is vertical
+            if( !isFinite(k1) ) {
+                
+                //if ($debug) Debug.write("k1 ^^ 0");
+                //if ($debug) Debug.write("k2",k2,(b2.y-b1.y));
+                //if ($debug) Debug.write("b1.getY(): "+b1.y);
+                //if ($debug) Debug.write("b2.getY(): "+b2.y);
+                // so the intersection must be at the x coordinate of the line
+                x = a1.x;
+                m2 = b1.y - k2 * b1.x;
+                //if ($debug) Debug.write("m2",m2);
+                y = k2 * x + m2;
+                //if ($debug) Debug.write("y",y);
+                
+            // same as above for line 2
+            } else if ( !isFinite(k2) ) {
+                
+                //if ($debug) Debug.write("k2 ^ 0");
+                
+                m1 = a1.y - k1 * a1.x;
+                x = b1.x;
+                y = k1 * x + m1;
+
+            // if neither of the lines are vertical
+            } else {
+                
+                //if ($debug) Debug.write("neither");
+            
+                m1 = a1.y - k1 * a1.x;
+                m2 = b1.y - k2 * b1.x;              
+                x = (m1-m2) / (k2-k1);
+                y = k1 * x + m1;
+                
+            }
+            
+            return new flash.geom.Point(x,y);
+        ]]>
+    </method>
+    
+    <method name="intermediatePoint" args="p1,p2,f">
+        <![CDATA[
+            
+            var d = Math.sqrt( Math.abs(p1.x - p2.x)^2 + Math.abs(p2.y - p2.y)^2 );
+        
+        ]]>
+    </method>
+    
+</drawview>
+  
+    
+</canvas>
diff --git a/WebContent/src/test/test-baseDraw.lzx b/WebContent/src/test/test-baseDraw.lzx
new file mode 100644
index 0000000..e62cae6
--- /dev/null
+++ b/WebContent/src/test/test-baseDraw.lzx
@@ -0,0 +1,39 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" >
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+	
+<drawview x="0" y="0" width="100" height="100">
+	
+	<handler name="onwidth">
+		Debug.write(this.isinited);
+	</handler>
+	
+	<handler name="onheight">
+		Debug.write(this.isinited);
+	</handler>
+	
+</drawview>
+  
+    
+</canvas>
diff --git a/WebContent/src/test/test-drawview.lzx b/WebContent/src/test/test-drawview.lzx
new file mode 100644
index 0000000..d447b49
--- /dev/null
+++ b/WebContent/src/test/test-drawview.lzx
@@ -0,0 +1,56 @@
+<!--
+  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.
+  
+-->
+<canvas debug="true" width="1000" height="800">
+
+    <debug x="250" height="500" /> 
+
+    <drawview width="200" height="100">
+        
+        <handler name="oninit">
+            this.drawBody(this,0,0,this.width,this.height,0xff3300,2);
+        </handler>
+        
+        <handler name="onclick">
+            this.drawBody(this,0,0,this.width,this.height,0xff3300,2);
+        </handler>
+        
+        <method name="drawBody" args="targetObj,x1,y1,x2,y2,fill,lineWidth">
+        <![CDATA[
+            
+            if ($debug) Debug.write("drawBody: ",targetObj,lineWidth);
+        
+            targetObj.lineWidth = lineWidth;
+            targetObj.beginPath();
+            targetObj.moveTo(x1,y1);
+            targetObj.lineTo(x1,y2);
+            targetObj.lineTo(x2,y2);
+            targetObj.lineTo(x2,y1);
+            targetObj.lineTo (x1,y1);
+            targetObj.closePath();
+
+            targetObj.fillStyle = fill;
+            targetObj.fill();
+            
+        ]]>   
+    </method>   
+        
+    </drawview>
+
+</canvas>
diff --git a/WebContent/src/test/test-menubar.lzx b/WebContent/src/test/test-menubar.lzx
new file mode 100644
index 0000000..083ecdf
--- /dev/null
+++ b/WebContent/src/test/test-menubar.lzx
@@ -0,0 +1,75 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+    
+    <!-- private class for conferenceMenubar class -->
+    <class name="_labelMenuItem" extends="menuitem" text="labelmenulabelmenulabelmenu">
+        <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+        <method name="setLabelId" args="_labelid" >
+            this.labelid = _labelid;
+            this.setAttribute('text',"text "+this.labelid);
+        </method>
+    </class>    
+        
+    <!-- private class for conferenceMenubar class -->
+    <class name="_labelMenu" extends="menu" text="labelmenulabelmenulabelmenu">
+        <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+        <method name="setLabelId" args="_labelid" >
+            this.labelid = _labelid;
+            this.setAttribute('text',"text "+this.labelid);
+        </method>
+    </class>  
+    
+    <class name="conferenceMenubar" extends="menubar" height="28" >
+       <!-- exit room -->
+        <_labelMenu labelid="308" width="250">
+            <_labelMenuItem labelid="309" />
+        </_labelMenu>
+        <!-- moderator menu -->
+        <_labelMenu labelid="301" width="250">
+            <_labelMenuItem labelid="302" />
+        </_labelMenu>
+        <!-- file menu -->
+        <_labelMenu labelid="245" width="250">
+            <_labelMenuItem labelid="15" />
+        </_labelMenu>    
+       <!-- setteings menu --> 
+        <_labelMenu labelid="305" width="250">
+            <_labelMenuItem labelid="306" />
+            <_labelMenuItem labelid="307" />
+        </_labelMenu>   
+        <!-- poll memu -->     
+        <_labelMenu labelid="303" width="250">
+            <_labelMenuItem width="250" labelid="24" />
+            <_labelMenuItem width="250" labelid="37" />
+            <_labelMenuItem width="250" labelid="42" />
+        </_labelMenu>    
+    </class>    
+    
+    
+    <handler name="oninit">
+        new lz.conferenceMenubar(canvas);
+    </handler>
+    
+</canvas>
diff --git a/WebContent/src/test/test-regExp.lzx b/WebContent/src/test/test-regExp.lzx
new file mode 100644
index 0000000..088728e
--- /dev/null
+++ b/WebContent/src/test/test-regExp.lzx
@@ -0,0 +1,90 @@
+<!--
+  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.
+  
+-->
+<canvas debug="true" >
+  
+
+      <script when="immediate" >        
+        class LzRegExp extends Instance{
+          static var regexp_cnt = 0;
+          
+          static function initialize(){
+
+              /* if this was in the html-wrapper, would early instantiations be successful? */
+              lz.Browser.loadJS( "window.__lzregexp={};" + 
+                "window.__createRegExp=function(id,re,mod){window.__lzregexp[id]=new RegExp(re,mod);return true};" +
+                "window.__testRegExp=function(id,s){return window.__lzregexp[id].test(s)};" +
+                "window.__execRegExp=function(id,s){return window.__lzregexp[id].exec(s)};" +
+                "window.__deleteRegExp=function(id){delete window.__lzregexp[id]};" 
+              );
+
+          }
+          
+          function initialize( regexp, mod ){
+            super.initialize( this, arguments );
+
+              this.regexp_id = LzRegExp.regexp_cnt++;
+              this.__isready = true;
+              
+              var me = this;
+              lz.Browser.callJS( "window.__createRegExp", function(res){me.__isready = res == true}, this.regexp_id, regexp, mod );
+
+          }
+          
+          function test( s ){
+              if( this.__isready ){
+                return flash.external.ExternalInterface.call.apply( flash.external.ExternalInterface, ["window.__testRegExp", this.regexp_id, s] );
+              } else {
+                Debug.format( "called %w too early", arguments.callee.name );
+              }
+          }
+          
+          function exec( s ){
+              if( this.__isready ){
+                return flash.external.ExternalInterface.call.apply( flash.external.ExternalInterface, ["window.__execRegExp", this.regexp_id, s] );
+              } else {
+                Debug.format( "called %w too early", arguments.callee.name );
+              }
+          }
+          
+          function destroy(){
+            lz.Browser.callJS( "window.__deleteRegExp", null, this.regexp_id );
+          }
+        }
+      </script>
+
+  <button name="btn" text="test" />
+  
+  <handler name="oninit" reference="canvas" method="testRegExp" />
+  <handler name="onclick" reference="btn" method="testRegExp" />
+  
+  <method name="testRegExp" >
+    var regexp = new LzRegExp( ".ello" );
+    Debug.write( regexp.test( "Hello" ) );
+    Debug.write( regexp.test( "Hallo" ) );
+    regexp.destroy();
+
+    global.regexpflag = global["regexpflag"] == true;
+    if( !global.regexpflag ){
+      global.regexpflag = true;
+      lz.Timer.addTimer( new LzDelegate( canvas, "testRegExp" ), 500 );
+    }
+  </method>
+  
+</canvas>
diff --git a/WebContent/src/test/test-regExp.lzx.lzr=swf8.swf b/WebContent/src/test/test-regExp.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..df4a310
--- /dev/null
+++ b/WebContent/src/test/test-regExp.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/test-regExp2.lzx b/WebContent/src/test/test-regExp2.lzx
new file mode 100644
index 0000000..efedaf0
--- /dev/null
+++ b/WebContent/src/test/test-regExp2.lzx
@@ -0,0 +1,77 @@
+<!--
+  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.
+  
+-->
+<canvas debug="true" >
+  <script>
+    _browserjavascriptcallback = "";
+  </script>
+  
+     <attribute name="lzappId" type="string" value="lzapp" />
+     <attribute name="timer" type="number" value="10" />
+     <attribute name="prevalue" type="string" value="_browserjavascriptcallbackprevalue" />
+     <attribute name="value" />
+     
+     <handler name="onvalue" args="v">
+     	if ($debug) Debug.write("onvalue: ",v);
+     	
+     </handler>
+     
+	<edittext name="_hand" />
+  
+  <button name="btn" y="20" text="test" onclick="canvas.testRegExp()" />
+
+  <method name="testRegExp2">
+  	<![CDATA[
+  		var regExp = "[0-9]*";
+  		
+    	var fieldValue = this._hand.getText();
+  	    
+    	var returnValue = flash.external.ExternalInterface.call("replace",fieldValue,escape(regExp),escape);
+    	if ($debug) Debug.write("returnValue: ",returnValue);
+	]]>
+ </method>
+ 
+ <method name="testRegExp" >
+ 	<![CDATA[
+	var fieldValue = "9";
+	var regExp = "[0-9]*";
+    var regex = "/^"+regExp+"$/";
+    var script = "( !( (\""+ fieldValue +"\".replace("+ regex +" ,\"\").length == 0) && ( "+ regex +".test(\""+ fieldValue +"\")) ) ) ";
+  
+	var t = script.split("'").join("\\'");
+	var s = "document.getElementById('"+ lzappId + "').SetVariable('_browserjavascriptcallback', escape((" + t + ")));"
+
+	
+		lz.Browser.loadJS(s);
+		
+		if(typeof this.callDelegate == 'undefined')
+		this.callDelegate = new LzDelegate( this, "callback" );
+		lz.Timer.resetTimer( this.callDelegate, timer );
+		]]>
+   </method>
+
+ <method name="callback">
+	if(unescape(_browserjavascriptcallback) == this.prevalue)
+	lz.Timer.resetTimer( this.callDelegate, timer );
+	else
+	setAttribute("value", unescape(_browserjavascriptcallback));
+ </method>
+
+
+</canvas>
diff --git a/WebContent/src/test/test-regExp2.lzx.lzr=swf8.swf b/WebContent/src/test/test-regExp2.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..4d97d95
--- /dev/null
+++ b/WebContent/src/test/test-regExp2.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/test-regexp.html b/WebContent/src/test/test-regexp.html
new file mode 100644
index 0000000..26f4890
--- /dev/null
+++ b/WebContent/src/test/test-regexp.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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>
+<head>
+	<link rel="shortcut icon" href="favicon.ico" > 
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<title>vMapPortal</title>
+	<script type="text/javascript" src="swfobject.js"></script>
+	<style type="text/css">
+		
+		/* hide from ie on mac \*/
+		html {
+			height: 100%;
+			overflow: hidden;
+		}
+		
+		#flashcontent {
+			height: 100%;
+		}
+		/* end hide */
+	
+		body {
+			height: 100%;
+			margin: 0;
+			padding: 0;
+			background-color: #ffffff;
+		}
+	
+	</style>
+</head>
+<body onLoad="focusSWF()">
+
+
+	<div id="flashcontent">
+		<strong>You need to upgrade your Flash Player</strong>
+		This is replaced by the Flash content. 
+		Place your alternate content here and users without the Flash plugin or with 
+		Javascript turned off will see this. Content here allows you to leave out <code>noscript</code> 
+		tags.
+	</div>
+	
+	<script type="text/javascript">
+		// <![CDATA[
+		
+		var so = new SWFObject("portal.swf", "lzapp", "100%", "100%", "8", "#ffffff");
+		so.addParam("quality", "high");
+		so.addParam("id", "lzapp");
+		so.addParam("allowScriptAccess", "always");
+		so.addParam("scale", "noscale");
+		so.write("flashcontent");
+		
+		function focusSWF(){
+		
+		    if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
+		    }else {
+		        document.getElementById('lzapp').focus();
+		    }
+		}   		
+		
+		// ]]>
+	</script>	
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/WebContent/src/test/test-scrollEdittext.lzx b/WebContent/src/test/test-scrollEdittext.lzx
new file mode 100644
index 0000000..0f820f1
--- /dev/null
+++ b/WebContent/src/test/test-scrollEdittext.lzx
@@ -0,0 +1,37 @@
+<!--
+  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.
+  
+-->
+<canvas debug="true" width="1000" height="800">
+
+    <debug x="250" height="500" /> 
+
+    <include href="scrolledittext.lzx"/>
+
+    <scrolledittext name="_scrolledittext" y="130" x="120" width="270" height="120"
+                                  text="" />
+                                  
+                                  
+    <view width="200" height="100" y="300" x="100" bgcolor="0xFFFFFF">
+        <inputtext multiline="true" width="${ parent.width - 14 }">
+            
+        </inputtext>
+        <om_vscrollbar />
+    </view>
+
+</canvas>
diff --git a/WebContent/src/test/test-setup.lzx b/WebContent/src/test/test-setup.lzx
new file mode 100644
index 0000000..60ecfab
--- /dev/null
+++ b/WebContent/src/test/test-setup.lzx
@@ -0,0 +1,564 @@
+<?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. -->
+<canvas debug="true" height="100%" title="Audio-Video Test-Application">
+
+	<debug width="450" x="460" y="600" height="100" />
+
+	<switch>
+		<when property="$as3">
+			<passthrough>
+			    import flash.events.*;
+	            import flash.net.*;
+	            import flash.media.*
+			</passthrough>
+		</when>
+	</switch>
+	
+	<class name="myListItem" extends="textlistitem">
+	</class>
+
+	<!--- NetConnection -->
+	<attribute name="_nc" value="null" />
+
+	<!--- NetStream -->
+	<attribute name="_nsBroadCast" value="null" />
+	<attribute name="_nsPlay" value="null" />
+
+	<!--- devices - Reference -->
+	<attribute name="_camera" value="null" />
+	<attribute name="_micro" value="null" />
+
+	<method name="connectRtmpConnection">
+		this._nc = new NetConnection();
+		this._nc.proxyType = "best";
+		Debug.write("connectRtmpConnection URL:",url.getText());
+		this._nc.connect(url.getText());
+		
+		this._nc.addEventListener(NetStatusEvent.NET_STATUS, _onStatus);
+		var clientObj = {};
+   		clientObj.setId = this.setId;
+   		
+   		this._nc.client = clientObj;
+    		
+		//this._nc.onStatus = function(info){
+		//Debug.write(info.code,info);
+		//}
+	</method>
+	
+	<method name="setId" args="tId">
+		if ($debug) Debug.write("setId ", tId);
+	</method>
+	
+    <method name="_onStatus" args="stats"><![CDATA[
+        if ($debug) {
+            Debug.write("devrtmpconnection", this, "_onStatus", stats.info.code);
+        }
+      ]]>
+    </method>
+
+	<method name="startBroadCast">
+	<![CDATA[
+	    if ($debug) Debug.write("startBroadCast 1");
+	    if (this._camera != null) {
+		  this._camera = Camera.getCamera(camDevices.getValue());
+		}
+		if ($debug) Debug.write("startBroadCast 2");
+		//sets the Mode
+		//see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#setMode%28%29
+		if (this._camera != null) this._camera.setMode(Number(streamwidth.getText()),Number(streamheight.getText()),Number(streamfps.getText()),streamfavorarea.getValue());	
+		if ($debug) Debug.write("startBroadCast 3");
+		//sets the Quality
+		//see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#setQuality%28%29
+		if (this._camera != null) this._camera.setQuality(Number(streambandwidth.getText()),Number(streamquality.getText()));	
+		if ($debug) Debug.write("startBroadCast 4");
+		if (useEnhancedMicrophone.getValue()) {
+			this._micro = Microphone.getEnhancedMicrophone(micDevices.getValue());
+			
+			if ($debug) Debug.write(this._micro.enhancedOptions);
+			
+		} else {
+			this._micro = Microphone.getMicrophone(micDevices.getValue());
+		}
+		if ($debug) Debug.write("startBroadCast 5");
+		this._micro.codec = SoundCodec.NELLYMOSER;
+		if ($debug) Debug.write("startBroadCast 6");
+		//sets the Microphone Rate in Khz
+		//see:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Microphone.html#rate
+		this._micro.rate = Number(streamrate.getText());
+		if ($debug) Debug.write("startBroadCast 7");
+		this._micro.gain = 50;
+		if ($debug) Debug.write("startBroadCast 8");
+		//sets wether useEchoSupression should be used or not
+		//http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Microphone.html#useEchoSuppression
+		this._micro.setUseEchoSuppression(streamuseEchoSuppression.getValue());
+		if ($debug) Debug.write("startBroadCast 9");
+		//attaches the Camera to the View
+		if (this._camera != null) broadCastVideo.attachVideo(this._camera);
+		if ($debug) Debug.write("startBroadCast 10");
+		this._nsBroadCast =  new NetStream(this._nc);
+		//see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
+        //according to the docs the construct to catch event has to be implemented like this.
+        var t = this;
+		var clientObject = new Object();
+		if ($debug) Debug.write("startBroadCast 11");
+		clientObject.onMetaData = function(metadata:Object):void {
+			t.onMetaData(metadata);
+		};
+		clientObject.onPlayStatus = function(metadata:Object):void {
+			t.onPlayStatus(metadata);
+		};
+		clientObject.onCuePoint = function(metadata:Object):void {
+			t.onCuePoint(metadata);
+		};
+		clientObject.ioError = function(error:Object):void {
+			t.ioError(error);
+		};
+		clientObject.netStatus = function(status:Object):void {
+			t.netStatus(status);
+		};
+		clientObject.asyncError = function(error:Object):void {
+			t.asyncError(error);
+		};
+		if ($debug) Debug.write("startBroadCast 12");
+		this._nsBroadCast.client = clientObject;
+		//this is a workaround, attaching the event to the client object does not work
+		this._nsBroadCast.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus2);
+	    if ($debug) Debug.write("startBroadCast 13");
+		if (this._camera != null) this._nsBroadCast.attachCamera(this._camera);
+	    this._nsBroadCast.attachAudio(this._micro);
+	    if ($debug) Debug.write("startBroadCast 14");
+	    this._nsBroadCast.publish(streamname.getText(),"live");
+	    if ($debug) Debug.write("startBroadCast 15");
+    ]]>
+	</method>
+	
+	<method name="onNetStatus2" args="evt">
+		if($debug) Debug.write("netStream_onNetStatus: " , evt.info.code, evt.target);
+	</method>
+	
+	<method name="asyncError" args="error">
+		if($debug) Debug.write("simpleNetStream asyncError",error);
+	</method>
+	
+	<method name="netStatus" args="status">
+		if($debug) Debug.write("simpleNetStream netStatus",status);
+	</method>
+	
+	<method name="ioError" args="error">
+		if($debug) Debug.write("simpleNetStream ioError",error);
+	</method>
+
+    <method name="onCuePoint" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onCuePoint",info);
+    ]]></method>
+
+    <method name="onPlayStatus" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onPlayStatus",info);
+    ]]></method>
+
+    <method name="onMetaData" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onMetaData",info);
+    ]]></method>
+
+	<method name="stopBroadCast">
+		this._nsBroadCast.publish(false);
+		broadCastVideo.attachVideo(null);
+		broadCastVideo.stopIt();
+		this._nsBroadCast.close();
+	</method>
+
+
+	<method name="playBroadCast">
+	<![CDATA[
+		//attaches the Camera to the View
+	
+		this._nsPlay =  new NetStream(this._nc);
+		//see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
+        //according to the docs the construct to catch event has to be implemented like this.
+        var t = this;
+		var clientObject = new Object();
+		clientObject.onMetaData = function(metadata:Object):void {
+			t.onMetaData(metadata);
+		};
+		clientObject.onPlayStatus = function(metadata:Object):void {
+			t.onPlayStatus(metadata);
+		};
+		clientObject.onCuePoint = function(metadata:Object):void {
+			t.onCuePoint(metadata);
+		};
+		clientObject.ioError = function(error:Object):void {
+			t.ioError(error);
+		};
+		clientObject.netStatus = function(status:Object):void {
+			t.netStatus(status);
+		};
+		clientObject.asyncError = function(error:Object):void {
+			t.asyncError(error);
+		};
+		this._nsPlay.client = clientObject;
+		//this is a workaround, attaching the event to the client object does not work
+		this._nsPlay.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus2);
+	
+	    //sets the Buffer for the Playing
+	    //see: http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002567.html#wp393038
+	    //this._nsPlay.setBufferTime(Number(this.streambuffer.getText())); 
+	    //=> disabled, cause this leads to Buffer-Full-Buffer-Empty-Events after re-syncing
+		playVideo.attachVideo(this._nsPlay);
+	    
+	    this._nsPlay.play(streamname.getText(),-1);
+    ]]>
+	</method>
+
+	<method name="stopPlayBroadCast">
+		this._nsPlay.pause();
+		this._nsPlay.close();
+		playVideo.attachVideo(null);
+		playVideo.stopIt();
+	</method>
+
+	<view layout="axis:y;spacing:4" width="450" x="0">
+		<text fontstyle="bold"
+			text="Connection - Settings (user for both BroadCasting and Subscribing)" />
+		<view width="450">
+			<text text="URL:" />
+			<edittext align="right" width="350" id="url"
+				text="rtmp://127.0.0.1:1935/openmeetings/testscope" />
+		</view>
+		<button align="right" width="200" text="connectRtmpConnection"
+			onclick="canvas.connectRtmpConnection()" />
+	</view>
+	<!-- some description -->
+	<text fontstyle="italic" y="0" width="450" multiline="true" x="450">
+		You can test all Settings of Audio and Video Streamings which are currently used in OpenMeetings here. <br /> 
+		Change the URL so that 127.0.0.1 points to your Red5-Installation! <br />
+		You first need to <b>connect</b> to a stream before you start to <b>broadcast</b>!<br />
+		You first need <b>broadcast</b> a stream with a name before you try to <b>subscribe</b> to it!<br />
+		If somebody already uses that streamname you get an NetStream *Bad.StreamName*, you can take an StreamName you like, but of course you have to tell the *player* that it will need to use that StreamName!
+		<br />
+	</text>
+
+	<checkbox name="modus" y="120"
+		text="Event Modus (320x240) or Conference Modus (128x96)" value="true">
+		<handler name="onvalue" args="v">
+			if (canvas.isinited) {
+				if (v){
+					broadCastVideo.setAttribute('width',320);
+					broadCastVideo.setAttribute('height',240);
+					broadCastVideo.applySizeToVid();
+					playVideo.setAttribute('width',320);
+					playVideo.setAttribute('height',240);
+					playVideo.applySizeToVid();
+				} else {
+					broadCastVideo.setAttribute('width',128);
+					broadCastVideo.setAttribute('height',96);
+					broadCastVideo.applySizeToVid();
+					playVideo.setAttribute('width',128);
+					playVideo.setAttribute('height',96);
+					playVideo.applySizeToVid();
+				}
+			}
+		</handler>
+	</checkbox>
+
+	<view bgcolor="black" width="${ canvas.width }" height="2" y="140" />
+
+	<!-- two columns left BroadCast, right Subscribe a Stream -->
+	<view y="144" height="$once{ canvas.height-this.y }" clip="true">
+		<!--- ScrollArea -->
+		<view layout="axis:x;spacing:10">
+			<!--- BroadCasting Area -->
+			<view layout="axis:y;spacing:4" width="450">
+
+				<!--- Video Area -->
+				<view id="broadCastVideo" bgcolor="black" width="320" height="240">
+				
+					<passthrough when="$as3">
+				        import flash.media.*;
+				        import flash.net.NetConnection;
+				        import flash.net.NetStream;
+				    </passthrough>
+				    
+				    <attribute name="__LZvideo" value="null" />
+								
+					<method name="init"><![CDATA[
+				        super.init();
+				        var mc = new Video(this.width, this.height);
+				        this.sprite.addChild(mc);
+				        this.__LZvideo = mc;
+				        this.applySizeToVid();
+				    ]]></method>
+					<method name="applySizeToVid">
+						if (this.__LZvideo == null) {
+							return;
+						}
+						var vid = this._getflashvideo();
+						vid.width = this.width;
+						vid.height = this.height;
+					</method>
+					<method name="_getflashvideo">
+						<![CDATA[
+				            //Debug.write("_getflashvideo()");
+				            return this.__LZvideo;
+				        ]]>
+				    </method>
+					<method name="stopIt">
+						if (this.__LZvideo == null) {
+							return;
+						}
+						var vid = this._getflashvideo();
+				    	vid.attachNetStream(null);
+						this.__LZvideo.clear();
+					</method>
+					<!--- shows the Video (can be a Cam-Instance or a NetStream) in the 
+						View -->
+					<method name="attachVideo" args="video">
+						if (this.__LZvideo == null) {
+							return;
+						}
+						var vid = this._getflashvideo();
+						vid.attachCamera(video);
+					</method>
+				</view>
+
+				<text fontstyle="bold" text="BroadCast - Settings" />
+				<view width="450">
+					<text text="StreamName (BroadCast):" />
+					<edittext align="right" width="150" id="streamname" text="stream1" />
+				</view>
+
+				<button align="right" width="200" text="startBroadCast"
+					onclick="canvas.startBroadCast()" />
+				<button align="right" width="200" text="stopBroadCast"
+					onclick="canvas.stopBroadCast()" />
+
+				<text fontstyle="bold" text="Video and Audio - Settings for Broad-Casting" />
+
+				<!--- Settings -->
+				<view width="450">
+					<text text="Camera:" />
+					<combobox align="right" width="350" id="camDevices"
+						editable="false" itemclassname="myListItem">
+						<switch>
+				            <when property="$as3">
+				                <passthrough>
+				                    import flash.media.Camera;
+				                </passthrough>
+				            </when>
+				        </switch>
+						<handler name="oninit">
+						<![CDATA[
+							//Get all availible Cam's
+							var tw = Camera.names;
+							var r = "";
+							for (var eg=0;eg<tw.length;eg++){
+								this.addItem(tw[eg],eg);
+								r=eg;
+							}
+							this.selectItem(String(r));  
+						]]>
+						</handler>
+					</combobox>
+				</view>
+				<!--- Width -->
+				<view width="450">
+					<text text="Width:" />
+					<edittext align="right" width="150" id="streamwidth"
+						text="$ { broadCastVideo.width }" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						width:Number [optional] - The requested capture width, in pixels. The default value is 160.
+					</text>
+				</view>
+				<!--- Height -->
+				<view width="450">
+					<text text="Height:" />
+					<edittext align="right" width="150" id="streamheight"
+						text="$ { broadCastVideo.height }" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						height:Number [optional] - The requested capture height, in pixels. The default value is 120.
+					</text>
+				</view>
+				<!-- Frames Per Second -->
+				<view width="450">
+					<text text="FPS:" />
+					<edittext align="right" width="150" id="streamfps" text="30" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						fps:Number [optional] - The requested rate at which the camera should capture data, in frames per second. The default value is 15.
+					</text>
+				</view>
+				<!--- FavorArea -->
+				<view width="450">
+					<checkbox id="streamfavorarea" text="Favorarea" value="true" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						favorArea:Boolean [optional] - A Boolean value that specifies how to manipulate the width, height, and frame rate if the camera does
+						not have a native mode that meets the specified requirements. The default value is true, which means that maintaining capture size
+						is favored; using this parameter selects the mode that most closely matches width and height values, even if doing so
+						adversely affects performance by reducing the frame rate. To maximize frame rate at the expense of camera height and width,
+						pass false for the favorArea parameter.
+					</text>
+				</view>
+				<!--- Bandwidth -->
+				<view width="450">
+					<text text="Bandwidth:" />
+					<edittext align="right" width="150" id="streambandwidth"
+						text="0" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						bandwidth:Number [optional] - An integer that specifies the maximum amount of bandwidth that the current outgoing video feed
+						can use, in bytes per second. To specify that Flash video can use as much bandwidth as needed to maintain the value of frameQuality, pass 0 for bandwidth.
+					</text>
+				</view>
+				<!--- Quality -->
+				<view width="450">
+					<text text="Quality:" />
+					<edittext align="right" width="150" id="streamquality"
+						text="90" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						quality:Number [optional] - An integer that specifies the required level of picture quality, as determined by the amount of
+						compression being applied to each video frame. Acceptable values range from 1 (lowest quality, maximum compression) to 100 (highest
+						quality, no compression). To specify that picture quality can vary as needed to avoid exceeding bandwidth, pass 0 for quality. The
+						default value is 0.
+					</text>
+				</view>
+				<!--- Choose Microphone -->
+				<view width="450">
+					<text text="Microphone:" />
+					<combobox align="right" width="350" id="micDevices"
+						editable="false" itemclassname="myListItem">
+						<switch>
+				            <when property="$as3">
+				                <passthrough>
+				                    import flash.media.Microphone;
+				                </passthrough>
+				            </when>
+				        </switch>
+						<handler name="oninit">
+						<![CDATA[
+							//Get all availible Cam's
+							var tw = Microphone.names;
+							var r = "";
+							for (var eg=0;eg<tw.length;eg++){
+								this.addItem(tw[eg],eg);
+								r=eg;
+							}
+							this.selectItem(String(r));  
+						]]>
+						</handler>
+					</combobox>
+				</view>
+				<!--- Audio-Rate -->
+				<view width="450">
+					<text text="Rate:" />
+					<edittext align="right" width="150" id="streamrate" text="22" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						rate:Number - The rate at which the microphone should capture sound, in kHz. Acceptable values are 5, 8, 11, 22, and 44. The
+						default value is 8 kHz if your sound capture device supports this value. Otherwise, the default value is the next available capture
+						level above 8 kHz that your sound capture device supports, usually 11 kHz.
+					</text>
+				</view>
+				<!--- useEchoSupression -->
+				<view width="450">
+					<checkbox id="streamuseEchoSuppression" text="useEchoSuppression"
+						value="true" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						public useEchoSuppression : Boolean [read-only] Property (read-only); a Boolean value of true if echo suppression is enabled, false
+						otherwise. The default value is false unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.
+						<br/><br/>
+						Echo suppression is an effort to reduce the effects of audio feedback, which is caused when sound going out the speaker is picked up by the microphone on the same system. (This is different from acoustic echo cancellation, which completely removes the feedback. The setUseEchoSuppression() method is ignored when you call the getEnhancedMicrophone() method to use acoustic echo cancellation.)
+					</text>
+				</view>
+				
+				<!--- enhanced Microphone -->
+				<view width="450">
+					<checkbox id="useEnhancedMicrophone" text="Use Enhanced Microphone"
+						value="true" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+					To use acoustic echo cancellation, set this value to true.
+					</text>
+				</view>
+			</view>
+
+			<!--- Play Area -->
+			<view layout="axis:y;spacing:4" width="450">
+
+				<!--- Video Output -->
+				<view id="playVideo" bgcolor="black" width="320" height="240">
+				
+					<passthrough when="$as3">
+				        import flash.media.*;
+				        import flash.net.NetConnection;
+				        import flash.net.NetStream;
+				    </passthrough>
+				
+					<method name="init"><![CDATA[
+				        super.init();
+				        var mc = new Video(this.width, this.height);
+				        this.sprite.addChild(mc);
+				        this.__LZvideo = mc;
+				        this.applySizeToVid();
+				    ]]></method>
+					<method name="applySizeToVid">
+						if (this.__LZvideo == null) {
+							return;
+						}
+						var vid = this._getflashvideo();
+						vid.width = this.width;
+						vid.height = this.height;
+					</method>
+					<method name="_getflashvideo">
+						<![CDATA[
+				            //Debug.write("_getflashvideo()");
+				            return this.__LZvideo;
+				        ]]>
+				    </method>
+					<method name="stopIt">
+						if (this.__LZvideo == null) {
+							return;
+						}
+						var vid = this._getflashvideo();
+				    	vid.attachNetStream(null);
+						this.__LZvideo.clear();
+					</method>
+					<!--- shows the Video (can be a Cam-Instance or a NetStream) in the 
+						View -->
+					<method name="attachVideo" args="video">
+						var vid = this._getflashvideo();
+						vid.attachNetStream(video);
+					</method>
+				</view>
+
+				<view height="20" />
+				<text fontstyle="bold"
+					text="Play-Broadcast(Subscribe to a Live Stream) - Settings" />
+				<view width="450">
+					<text text="StreamName (Play):" />
+					<edittext align="right" width="150" id="streamname2" text="stream1" />
+				</view>
+				<!--- Buffer Time -->
+				<view width="450">
+					<text text="BufferTime:" />
+					<edittext align="right" width="150" id="streambuffer"
+						text="0.3" />
+					<text fontstyle="italic" y="26" width="450" multiline="true">
+						public bufferTime : Number [read-only] The number of seconds assigned to the buffer by
+						NetStream.setBufferTime(). The default value is .1(one-tenth of a second). To determine the number of seconds currently in the
+						buffer, use NetStream.bufferLength.
+					</text>
+				</view>
+				<button align="right" width="200" text="playBroadCast"
+					onclick="canvas.playBroadCast()" />
+				<button align="right" width="200" text="stopPlayBroadCast"
+					onclick="canvas.stopPlayBroadCast()" />
+			</view>
+		</view>
+		<vscrollbar />
+	</view>
+
+</canvas>
diff --git a/WebContent/src/test/test-setup.lzx.swf11.swf b/WebContent/src/test/test-setup.lzx.swf11.swf
new file mode 100644
index 0000000..5f8a758
--- /dev/null
+++ b/WebContent/src/test/test-setup.lzx.swf11.swf
Binary files differ
diff --git a/WebContent/src/test/test-soap.lzx b/WebContent/src/test/test-soap.lzx
new file mode 100644
index 0000000..d7778e3
--- /dev/null
+++ b/WebContent/src/test/test-soap.lzx
@@ -0,0 +1,51 @@
+<!--
+  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.
+  
+-->
+<canvas debug="true" height="400" width="530">
+
+    <debug x="10" y="190" width="510" height="200"/>
+
+    <soap name="fileService" wsdl="http://localhost:5080/openmeetings/services/FileService?wsdl">
+        <handler name="onload">
+            Debug.write('fileService soap service loaded');
+        </handler>
+
+        <handler name="onerror" args="error">
+            Debug.write('error:', error);
+        </handler>
+
+        <!-- See RPC chapter for details on remotecall and how dataobject is
+             used to data bind to RPC operation results. --> 
+        <remotecall name="ping" funcname="ping">
+        	<param value="1"/>
+            <handler name="ondata" args="value">
+                Debug.write('result:\n', value);
+            </handler>
+        </remotecall>
+    </soap>
+
+    <view x="10" y="10" layout="spacing: 5">
+        <view layout="axis: x; spacing: 5">
+            <edittext id="s" text="SOAP"/>
+            <button text="search" onclick="Debug.write('Invoking search...'); fileService.ping.invoke()"/>
+        </view>
+
+    </view>
+
+</canvas>
diff --git a/WebContent/src/test/testLPP4154.lzx b/WebContent/src/test/testLPP4154.lzx
new file mode 100644
index 0000000..4ca73f3
--- /dev/null
+++ b/WebContent/src/test/testLPP4154.lzx
@@ -0,0 +1,62 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+    
+<class name="swfResourceView" extends="view" play="false" y="40">
+        
+        <handler name="onload">
+            //Debug.write("Resource loaded: ",this);
+            this.stop();
+            this.setAttribute('play',false);
+        </handler>
+        
+        <handler name="onclick">
+            //Debug.write("onclick: ",this.sprite);
+            //Debug.write("onclick: ",this.sprite.getDisplayObject());
+        </handler>        
+        
+        <handler name="onframe" args="i">
+            ////Debug.write("onframe",i);
+        </handler>
+        
+        <handler name="onplay" args="i">
+            //Debug.write("onplay",i);
+        </handler>
+        
+        <handler name="onstop" args="i">
+            //Debug.write("onstop",i);
+        </handler>        
+        
+</class>    
+    
+<button text="setSource" onclick="xyz.setSource('Tutorat.swf')" >
+    <handler name="onclick">
+        var tempView = new lz.swfResourceView(canvas,{id:'xyz'});
+        tempView.setSource('Tutorat.swf');
+    </handler>
+</button>
+
+  
+    
+</canvas>
diff --git a/WebContent/src/test/testLineWidth.lzx b/WebContent/src/test/testLineWidth.lzx
new file mode 100644
index 0000000..0142622
--- /dev/null
+++ b/WebContent/src/test/testLineWidth.lzx
@@ -0,0 +1,129 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - Computer testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+	
+<!--
+	Tests for calculating the linewidth in a multinline Textbox for each line
+	the meaning of several vars can be seen here:
+	http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm
+ -->	
+    
+<script>
+<![CDATA[
+
+	var maxsize = 220;
+	var textFieldtext = "";
+	var startIndex = 0;
+	var currentLine = 0;
+	var textObject = null;
+	var myTextFormat = null;
+	var lineHeight = 0;
+	
+	function calcLineWidthByTextField(maxsizeText,textForCalcing,fontsize, fontname){
+		
+		maxsize = maxsizeText;
+		startIndex = 0;
+		textObject = new Array();
+		
+		textFieldtext = textForCalcing;
+		myTextFormat = new TextFormat();
+		myTextFormat.size = fontsize;
+		myTextFormat.font = fontname;
+		
+		var metrics = myTextFormat.getTextExtent(textFieldtext, 100000);
+		Debug.write(metrics);
+		lineHeight = metrics.ascent+metrics.descent;
+		Debug.write(lineHeight);		
+		
+		measureLine();
+		
+		for (var k = 0;k<textObject.length;k++){
+			var metrics = myTextFormat.getTextExtent(textObject[k]["text"], 100000);
+			textObject[k]["lineWidth"] = metrics.width;
+			//Debug.write("text: ",metrics,k,textObject[k]["lineWidth"],textObject[k]["text"]);
+		}
+		
+		return textObject;
+	}
+	
+	function measureLine(){		
+		//Debug.write("restString: ",textFieldtext);
+		for (var i=textFieldtext.length;i>0;i--){
+			var testTxt = textFieldtext.slice(startIndex, i);
+			var metrics = myTextFormat.getTextExtent(testTxt, 100000);
+			//Debug.write("metrics: ",testTxt,startIndex,metrics.width);
+			if (metrics.width<=maxsize){
+
+				testTxt = textFieldtext.slice(startIndex, i-1);
+				textObject[currentLine] = new Array();
+				textObject[currentLine]["text"] = testTxt;
+				textFieldtext = textFieldtext.slice(i-1, textFieldtext.length);
+				
+				if (textFieldtext.length==1){
+					textObject[currentLine]["text"]+=textFieldtext;
+					return;
+				} else {
+					currentLine+=1;
+					return measureLine();
+				}
+			}
+		}		
+	}
+	
+	
+	
+	//function getLineWidth()
+]]>
+</script>
+
+<text multiline="true" x="40" y="20" width="220" selectable="true" >
+	<handler name="oninit">
+		<![CDATA[
+			this.sprite.__LZtextclip.wordWrap = false;
+			Debug.write(this.sprite.__LZtextclip);
+			var items = new Array();
+			var t = "";
+			//items[0] = ["text","hello your are the hero lets check accomodation today i need some input"];
+			items[0] = ["text","hello "];
+			items[0] = ["text","der hat drei ecken      und warum ist meni hut der knut      ?? warumST"]; 
+			for (var i=0;i<items.length;i++) {
+				if (items[i][0]=="text"){
+					t += items[i][1];
+				} else {
+					var tempString = calcLineWidthByTextField(this.width, t,this.fontsize,"Verdana");
+					tempString[tempString.length-1]["lineWidth"];
+				}
+			}
+			var tString = calcLineWidthByTextField(this.width, t,this.fontsize,"Verdana");
+			for (var k = 0;k<tString.length;k++){
+				this.setAttribute('text',this.getText()+textObject[k]["text"]+"\r");
+				Debug.write("line,width,text: ",k,textObject[k]["lineWidth"],textObject[k]["text"]);
+			}			
+			
+		]]>
+	</handler>
+</text>
+  
+    
+</canvas>
diff --git a/WebContent/src/test/testLineWidth.lzx.lzr=swf8.swf b/WebContent/src/test/testLineWidth.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..ccb5224
--- /dev/null
+++ b/WebContent/src/test/testLineWidth.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/testLoadSWF.lzx.lzr=swf8.swf b/WebContent/src/test/testLoadSWF.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..0700cc8
--- /dev/null
+++ b/WebContent/src/test/testLoadSWF.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test/test_main.lzx b/WebContent/src/test/test_main.lzx
new file mode 100644
index 0000000..25e9ff8
--- /dev/null
+++ b/WebContent/src/test/test_main.lzx
@@ -0,0 +1,27 @@
+<?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.
+  
+-->
+<canvas>
+
+<text>Hello World</text>
+
+</canvas>
+
+
diff --git a/WebContent/src/test/test_onclick.lzx b/WebContent/src/test/test_onclick.lzx
new file mode 100644
index 0000000..fc93ebd
--- /dev/null
+++ b/WebContent/src/test/test_onclick.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<canvas debug="true" width="1000" height="700">
+
+    <class name="myView" extends="drawview" bgcolor="red" clip="true" 
+        width="200" height="200" 
+        onclick="//Debug.write('onclick',this)" 
+        onmouseup="//Debug.write('onmouseup',this)" />
+    
+<myView />
+    
+</canvas>
diff --git a/WebContent/src/test/test_upload.lzx b/WebContent/src/test/test_upload.lzx
new file mode 100644
index 0000000..8a62e2a
--- /dev/null
+++ b/WebContent/src/test/test_upload.lzx
@@ -0,0 +1,29 @@
+<?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.
+  
+-->
+<canvas debug="true" width="1000" height="700">
+
+<include href="oslmon/" />
+    
+    <handler name="oninit">
+        new lz.uploadWindow(canvas);
+    </handler>
+
+</canvas>
diff --git a/WebContent/src/test/testswf/test.pdf b/WebContent/src/test/testswf/test.pdf
new file mode 100644
index 0000000..234b7bb
--- /dev/null
+++ b/WebContent/src/test/testswf/test.pdf
Binary files differ
diff --git a/WebContent/src/test/testswf/test.swf b/WebContent/src/test/testswf/test.swf
new file mode 100644
index 0000000..d4e1894
--- /dev/null
+++ b/WebContent/src/test/testswf/test.swf
Binary files differ
diff --git a/WebContent/src/test/testswf/testLoadSWF.lzx b/WebContent/src/test/testswf/testLoadSWF.lzx
new file mode 100644
index 0000000..1dab29f
--- /dev/null
+++ b/WebContent/src/test/testswf/testLoadSWF.lzx
@@ -0,0 +1,48 @@
+<?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.
+  
+-->
+
+<canvas debug="true" width="100%" height="100%" fontsize="14" title="OpenMeetings - SWF testing">
+	
+	<debug fontsize="14" oninit="Debug.showInternalProperties = true"/>
+	
+<view layout="axis:x;spacing:2">
+	<button name="_btn">
+		<handler name="onclick">
+			canvas._swfview.setAttribute('frame',canvas._swfview.frame+1);
+			//var mc = canvas._swfview.getDisplayObject();
+			//Debug.write(canvas._swfview);
+			//Debug.write(mc);
+			//mc._frame = 4;
+			//mc.play();
+		</handler>
+	</button>
+</view>
+	
+<view name="_swfview" y="20">
+	<handler name="oninit">
+		<![CDATA[
+			this.setSource("test.swf");
+		]]>
+	</handler>
+</view>
+  
+    
+</canvas>
diff --git a/WebContent/src/test/testswf/testLoadSWF.lzx.lzr=swf8.swf b/WebContent/src/test/testswf/testLoadSWF.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..5a03b59
--- /dev/null
+++ b/WebContent/src/test/testswf/testLoadSWF.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/src/test_main.lzx.lzr=swf8.swf b/WebContent/src/test_main.lzx.lzr=swf8.swf
new file mode 100644
index 0000000..ed0ab9e
--- /dev/null
+++ b/WebContent/src/test_main.lzx.lzr=swf8.swf
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/library.lzx b/WebContent/swf10/audioVideoTest/library.lzx
new file mode 100644
index 0000000..5b64b48
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/library.lzx
@@ -0,0 +1,36 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- APL author sebawagner -->
+	<resource name="level_meter_rsc" src="resources/level_meter.png" />
+	<!-- APL author sebawagner -->
+    <resource name="test_setup_record_rsc" src="resources/webstart_record.png" />
+    <!-- APL author sebawagner -->
+    <resource name="test_setup_play_rsc" src="resources/run.png" />
+    <!-- APL author sebawagner -->
+    <resource name="test_setup_stop_rsc" src="resources/stop.png" />
+    <!-- FamFam Icon Set -->
+    <resource name="test_setup_info_rsc" src="resources/information.png" />
+    
+    <include href="testingApplication.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/audioVideoTest/resources/information.png b/WebContent/swf10/audioVideoTest/resources/information.png
new file mode 100644
index 0000000..12cd1ae
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/information.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/level_meter.fla b/WebContent/swf10/audioVideoTest/resources/level_meter.fla
new file mode 100644
index 0000000..4e1a8c8
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/level_meter.fla
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/level_meter.png b/WebContent/swf10/audioVideoTest/resources/level_meter.png
new file mode 100644
index 0000000..78192ef
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/level_meter.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/record.fla b/WebContent/swf10/audioVideoTest/resources/record.fla
new file mode 100644
index 0000000..870b264
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/record.fla
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/record.png b/WebContent/swf10/audioVideoTest/resources/record.png
new file mode 100644
index 0000000..99109da
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/record.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/run.png b/WebContent/swf10/audioVideoTest/resources/run.png
new file mode 100644
index 0000000..c77b8d9
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/run.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/stop.fla b/WebContent/swf10/audioVideoTest/resources/stop.fla
new file mode 100644
index 0000000..44a29f1
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/stop.fla
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/stop.png b/WebContent/swf10/audioVideoTest/resources/stop.png
new file mode 100644
index 0000000..5b1adf3
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/stop.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/webstart_record.fla b/WebContent/swf10/audioVideoTest/resources/webstart_record.fla
new file mode 100644
index 0000000..475f9dc
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/webstart_record.fla
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/resources/webstart_record.png b/WebContent/swf10/audioVideoTest/resources/webstart_record.png
new file mode 100644
index 0000000..d94b7f5
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/resources/webstart_record.png
Binary files differ
diff --git a/WebContent/swf10/audioVideoTest/testingApplication.lzx b/WebContent/swf10/audioVideoTest/testingApplication.lzx
new file mode 100644
index 0000000..bc986ad
--- /dev/null
+++ b/WebContent/swf10/audioVideoTest/testingApplication.lzx
@@ -0,0 +1,417 @@
+<?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.
+  
+-->
+<library>
+
+<!-- 
+#########################################
+
+Test the setup values before you enter a room
+
+ -->
+ 
+<class name="testingApplication" extends="view" width="600" height="400">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.media.Camera;
+                import flash.media.Microphone;
+                import flash.net.SharedObject;
+                import flash.media.SoundCodec;
+            </passthrough>
+        </when>
+    </switch>
+	
+	<attribute name="lastRecorded" value="" type="string" />
+	
+	<attribute name="isRunning" value="false" type="boolean" />
+	
+	<attribute name="recordingsCounter" value="5" type="number" />
+	
+	<attribute name="timerIsRunning" value="false" type="boolean" />
+	
+	<attribute name="counterDelegate" value="null" />
+	
+	<handler name="oninit">
+		this.counterDelegate = new LzDelegate( this, "count" );
+	</handler>
+	
+	<method name="startTimer">
+		this.timerIsRunning = true;
+		this.timerWasUnmutedTheFirstTime = true;
+		lz.Timer.addTimer( this.counterDelegate, 1000 );
+	</method>
+	
+	<method name="count" args="calleeObj">
+		if (this.recordingsCounter != 0){
+			this.recordingsCounter -= 1;
+			lz.Timer.addTimer( this.counterDelegate, 1000 );
+			
+			this._text._info.setAttribute("text",""+this.recordingsCounter+" sec");
+			
+		} else {
+			this._text.setAttribute("visibility","hidden");
+			this.doStop();
+			this.timerIsRunning = false;
+			this.doPlay();
+		}
+	</method>
+	
+	<method name="startTimerToCount">
+		if (!this.timerIsRunning) {
+			this.startTimer();
+		}
+	</method>
+	
+	<method name="storeSettings">
+        <![CDATA[
+            if ($debug) Debug.write("storeSettings ");
+            var t:SharedObject = SharedObject.getLocal('userdata');
+            var g = t.data;
+            if (g==null) g = new Array();
+            g["cam"] = this.availibleCams.getValue();
+            g["mic"] = this.availibleMics.getValue();
+            t.flush();
+        ]]>
+    </method>   
+	
+	<method name="doninitalize">
+        <![CDATA[
+        
+            this._btnStartRecording.setAttribute("enabled",false);
+            
+            this.recordingsCounter = 5;
+            
+            this._text.setAttribute("visibility","visible");
+            this._text._info.setAttribute("text","5 sec");
+        
+            this.isRunning = true;
+            
+            var valCam = this.availibleCams.getValue();
+            var valMic = this.availibleCams.getValue();
+            
+            var videoview = this._publisher._chatvideoinner._videostream;
+            if ($debug) Debug.write("videoview: ",videoview);
+            if ($debug) Debug.write(valCam,valMic);
+            
+            var _micro = null;
+            var _camera = null;
+            if (valMic != null) {
+                 _micro = Microphone.getMicrophone(valMic);
+                 if (_micro != null) {
+                     _micro.codec = SoundCodec.NELLYMOSER;
+                     _micro.framesPerPacket = 1;
+                     _micro.setSilenceLevel(0, 2000);
+                     _micro.gain = 50;
+                     // this has no effect if enhanced microphone is obtained
+                    //Microphone setUseEchoSupression(bool)
+                    _micro.setUseEchoSuppression(true);
+                }
+            }
+            if (valCam != null) {
+                _camera = Camera.getCamera(valCam);
+            }
+            
+            if ($debug) Debug.write("_camera.setMode: ",videoview.width,videoview.height,canvas.framesPerSecond,true);
+
+            //Microphone.set
+            if ($debug) Debug.write("canvas.microphoneRateBest: ",canvas.microphoneRateBest);
+            if (_camera != null) {
+                if ($debug) Debug.write("_camera.setQuality BEST: ",this.isInterview,(canvas.bandwidthNeededBest*2),canvas.camQualityBest);
+                if (this.isInterview) {
+                    _camera.setMode(videoview.width,videoview.height,24,true);
+                    if ($debug) Debug.warn("IS INTERVIEW ");
+                    _camera.setQuality(0,98);
+                } else {
+                    _camera.setMode(videoview.width,videoview.height,canvas.framesPerSecond,true);
+                    if ($debug) Debug.warn("IS NO INTERVIEW ");
+                    _camera.setQuality(canvas.bandwidthNeededBest,canvas.camQualityBest);
+                }
+            }
+            
+            //The First start-timer message will come from the Flash Object
+            
+            if ($debug) Debug.warn("_camera.muted ",_camera.muted);
+            if ($debug) Debug.warn("_micro.muted ",_micro.muted);
+            
+            if (!_camera.muted) {
+                this.startTimer();
+            }
+
+            //start recording of client stream
+            
+            var t = new Date();
+            this.lastRecorded = "TEST_SETUP_"+t.getTime();
+            
+            this._publisher.setAttribute("visibility","visible");
+            this._viewer.setAttribute("visibility","hidden");
+            
+            videoview.record(this.lastRecorded,_camera,_micro);
+        ]]>
+    </method>
+    
+    <method name="doPlay">
+    	<![CDATA[
+    	
+    	   if (this.lastRecorded == "") {
+    	   	   //Error - nothing recorded yet
+    	   	   if ($debug) Debug.warn("Nothing to Play");
+    	   } else {
+    	   	   
+    	   	   this._play.setAttribute("visibility","visible");
+    	   	
+    	   	   this._publisher.setAttribute("visibility","hidden");
+               this._viewer.setAttribute("visibility","visible");
+               
+               var videoview = this._viewer._chatvideoinner._videostream;
+               
+               videoview.justPlayStream(this.lastRecorded+".flv",0);
+                
+    	   }
+    	
+    	]]>
+    </method>
+    
+    <method name="doStop">
+    	if (this.isRunning) {
+    		this.isRunning = false;
+    		
+    		var videoview = this._publisher._chatvideoinner._videostream;
+    		
+    		this._btnStartRecording.setAttribute("enabled",true);
+    		
+    		videoview._stop();
+    		
+    		this.doPlay();
+    	}
+    	
+    	var videoviewViewer = this._viewer._chatvideoinner._videostream;
+        videoviewViewer._stop();
+    </method>
+	
+	<labelText fontstyle="bold" labelid="758"
+			   width="$once{ parent.width-2 }" height="30" multiline="true" /> 
+	
+	<labelText name="availibleCamsLabel" labelid="52" fontsize="11" x="2" y="40" />
+
+    <resetCombobox fontsize="11" name="availibleCams" x="10" y="60" width="260" editable="false">
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.media.Camera;
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+        <handler name="oninit">
+            <![CDATA[
+                //Get all availible Cam's
+                var tw = Camera.names;
+                var r = "";
+                for (var eg=0;eg<tw.length;eg++){
+                    this.addItem(tw[eg],eg);
+                    r=eg;
+                }
+                var t:SharedObject = SharedObject.getLocal('userdata');
+                var g = t.data;
+                var cam;
+                if (g != null){
+                    cam = g["cam"];
+                    if (cam == 'undefined') {
+                        cam = r;
+                    }
+                } else {
+                    cam = r;
+                }
+                this.selectItem(String(cam));
+            ]]>
+        </handler>
+    </resetCombobox>
+    
+    <labelText name="availibleMicsLabel" labelid="53" fontsize="11" x="2" y="84" />
+
+    <resetCombobox fontsize="11" name="availibleMics"  x="10" y="104" width="260" editable="false">
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.media.Microphone;
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+        <handler name="oninit">
+            <![CDATA[
+                //Get all availible Mic's
+                var tw = Microphone.names;
+                var r = "";
+                for (var eg=0;eg<tw.length;eg++){
+                    r=eg;
+                    this.addItem(tw[eg],eg);
+                }
+
+                var t:SharedObject = SharedObject.getLocal('userdata');
+                var g = t.data;
+                var mic;
+                if (g != null){
+                if ($debug) Debug.write("Select mic 4: ",mic);
+                    mic = g["mic"];
+                    if (mic == 'undefined') {
+                    if ($debug) Debug.write("Select mic 3: ",mic);
+                        mic = r;
+                    }
+                } else {
+                if ($debug) Debug.write("Select mic 2: ",mic);
+                    mic = r;
+                }
+                if ($debug) Debug.write("Select mic 1: ",mic);
+                
+                this.selectItem(String(mic));
+            ]]>
+        </handler>
+    </resetCombobox>
+    
+    
+    <simpleLabelButton name="_btnStartRecording" labelid="775" 
+    				   width="170" x="100" y="150" height="28">
+    	<handler name="onclick">
+            parent._level_meter.startLevel();
+            parent.doninitalize();
+        </handler>
+        <view resource="test_setup_record_rsc" x="2" y="2" />
+    </simpleLabelButton>
+    
+	
+	<videoObjectTestBroadcast name="_publisher" x="340" y="40" width="240" height="180">
+		<handler name="sendCameraStatus" args="camStatus">
+            if ($debug) Debug.write("sendCameraStatus -1- ",camStatus);
+            if (camStatus == "Camera.Unmuted") {
+            	parent.startTimerToCount();
+            }
+        </handler>
+        
+        <handler name="sendMicroStatus" args="micStatus">
+            if ($debug) Debug.write("sendMicroStatus -1- ",micStatus);
+            if (micStatus == "Microphone.Unmuted") {
+                parent.startTimerToCount();
+            }
+        </handler>
+	</videoObjectTestBroadcast>
+	
+	<videoObjectPlayTestBroadcast name="_viewer" x="340" y="40" 
+								  width="240" height="180" visibility="hidden" />
+								  
+	<view name="_text" x="340" y="40" width="240" height="180" visibility="hidden">
+		<text name="_info" resize="true" bgcolor="0xFFFFFF" align="right"
+			  fontsize="12" fontstyle="bold" />
+	</view>
+	
+	<!--
+	<simpleLabelRoundButtonIcon name="_start" y="190" x="350" 
+				ressourceIcon="test_setup_record_rsc"
+				width="70" tlabelid="763" >
+		<handler name="onclick">
+			parent._level_meter.startLevel();
+			parent.doninitalize();
+		</handler>
+	</simpleLabelRoundButtonIcon>
+	
+	<simpleLabelRoundButtonIcon name="_stop" y="190" x="425" 
+				ressourceIcon="test_setup_stop_rsc"
+				width="70" tlabelid="766" >
+        <handler name="onclick">
+        	parent._level_meter.resetNewLevel();
+            parent.doStop();
+        </handler>
+    </simpleLabelRoundButtonIcon>
+    
+	<simpleLabelRoundButtonIcon name="_play" y="190" x="500" 
+				ressourceIcon="test_setup_play_rsc"
+				width="70" tlabelid="764" 
+				enabled="false">
+        <handler name="onclick">
+            parent.doPlay();
+        </handler>
+    </simpleLabelRoundButtonIcon>
+     -->
+     
+     <!-- ressourceIcon="test_setup_play_rsc" -->
+    <simpleLabelButton name="_play" y="190" x="490" visibility="hidden"
+                width="86" labelid="764" >
+        <handler name="onclick">
+            parent.doPlay();
+        </handler>
+    </simpleLabelButton>
+     
+    <labelText labelid="767" x="340" y="224" />
+    
+    <view name="_level_meter" x="340" y="244" width="240" height="20" clip="true" bgcolor="0x000000">
+    	
+    	 <!--- Level delegate, used to track level changes. 
+              @keywords private -->
+        <attribute name="_leveldel" value="$once{new LzDelegate(this, '_updateLevel')}"/>
+    	
+    	<method name="_updateLevel" args="no">
+    		<![CDATA[
+    		    //if ($debug) Debug.write("_updateLevel",no,parent._publisher._chatvideoinner._videostream.micro);
+    		    //if ($debug) Debug.write("_updateLevel",parent._publisher._chatvideoinner._videostream.micro);
+    		    //if ($debug) Debug.write("_updateLevel",parent._publisher._chatvideoinner._videostream.micro.activityLevel);
+    		    if (parent._publisher._chatvideoinner._videostream.micro == null)
+    		    {
+    		    	return;
+    		    }
+    		    this.setNewLevel(parent._publisher._chatvideoinner._videostream.micro.activityLevel);
+    		]]>
+    	</method>
+    	
+    	<method name="startLevel">
+    		this._leveldel.register(lz.Idle, "onidle");
+    	</method>
+    	
+    	<method name="resetNewLevel">
+    		this._leveldel.unregisterAll();
+    		this.setNewLevel(0);
+    	</method>
+    	
+    	<method name="setNewLevel" args="no">
+    		<![CDATA[
+    		
+                var newLevel = (238/100) * no;
+            
+                this._over.setAttribute("width",238-newLevel);
+                this._over.setAttribute("x",1+(newLevel));
+                
+            ]]>
+    	</method>
+    	
+    	<view name="_bg" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+    	<view name="_grip" resource="level_meter_rsc" x="1" y="1" />
+    	<view name="_over" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+    </view>
+    
+    <view y="292" resource="test_setup_info_rsc" x="16" />
+    
+    <labelText fontstyle="bold" labelid="765" x="39" y="290"
+               width="$once{ parent.width-50 }" multiline="true" />
+    
+</class>
+	
+</library>
+ 
diff --git a/WebContent/swf10/base/components/button/library.lzx b/WebContent/swf10/base/components/button/library.lzx
new file mode 100644
index 0000000..74f686a
--- /dev/null
+++ b/WebContent/swf10/base/components/button/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="simpleLabelButton.lzx" />
+
+</library>
diff --git a/WebContent/swf10/base/components/button/simpleLabelButton.lzx b/WebContent/swf10/base/components/button/simpleLabelButton.lzx
new file mode 100644
index 0000000..183ad5e
--- /dev/null
+++ b/WebContent/swf10/base/components/button/simpleLabelButton.lzx
@@ -0,0 +1,34 @@
+<?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.
+  
+-->
+<library>
+
+<class name="simpleLabelButton" extends="button" fontstyle="bold"
+	   fontsize="11" height="20" style="componentStyle">
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/explorer/explorerBox.lzx b/WebContent/swf10/base/components/explorer/explorerBox.lzx
new file mode 100644
index 0000000..6c9aaf3
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/explorerBox.lzx
@@ -0,0 +1,400 @@
+<?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.
+  
+-->
+<library>
+
+<class name="explorerBox" extends="view" width="250" y="100" visibility="hidden"
+    height="400" bgcolor="0x000088" 
+	onmousedown="this._startDragState(this)" onmouseup="this._removeDragState(this)" >
+
+    <switch>
+	  <when property="$as3">
+		<passthrough>
+		  import flash.filters.DropShadowFilter;
+		</passthrough>
+	  </when>
+	</switch>
+
+    <handler name="oninit">
+    	//if($debug) Debug.write("explorerBox/oninit showWindowEffect? ",canvas.showWindowEffect);
+    	if (canvas.showWindowEffect=="y"){
+    		//if($debug) Debug.write("explorerBox/showWindowEffect == YES");
+    		new lz.boxInitEffect(parent,{x:this.x+(this.width/2)-50,y:this.y+(this.height/2)-10,zielx:this.x,ziely:this.y,zielwidth:this.width,zielheight:this.height,objRef:this});
+    	} else {
+    		this.sendAnniComplete();
+    	}
+    </handler>
+    
+    <method name="sendAnniComplete">
+    	//if($debug) Debug.write("sendAnniComplete");
+    	this.setAttribute('visibility','visible');
+    	this.setShadow(true);
+    </method>
+
+    <method name="setShadow" args="bool">
+        this.hasshadow = bool;
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+            //Debug.write(this.normalMC);
+            ////Debug.write("this.normalMC: ",this.normalMC);
+            ////Debug.write("this: ",this);
+           	this.displacementMap = new DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>	
+          
+	<!--- The Title of this Box -->
+	<attribute name="title" value="defaulttitle" type="string" />
+	
+	<!--- if this Box should be closeable -->
+	<attribute name="closable" value="false" type="boolean" />
+    
+    <!--- if this Box should be resizeable  -->
+    <attribute name="resizeable" value="false" type="boolean" />
+	
+	<!--- Can this Box be docked to others and 
+			the width/height of parent compoent barrier -->
+	<attribute name="docking" value="false" type="boolean" />
+	
+	<!--- Hard to explain but its clear if you play around 
+		with that. Its the number of minimum pixels before 
+		the "docking" effect will be there -->
+	<attribute name="dockingbarrier" value="15" type="number" />
+	
+	<!--- the Event will be thrown if you close the Box -->
+	<event name="onclose" />
+	
+	<!---@keywords private the list of connected views -->
+	<attribute name="dockinglist" value="null" />
+	
+	<!--- @keywords private temp-older of x-distance to docked-Box  -->
+	<attribute name="tempXdistance" value="0" type="number" />
+
+	<!--- @keywords private temp-older of y-distance to docked-Box  -->
+	<attribute name="tempYdistance" value="0" type="number" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="isopen" value="true" type="boolean" />
+	
+	<!--- @keywords private is the Box minimized  -->
+	<attribute name="open" value="true" type="boolean" />	
+	
+	<!--- @keywords private  -->
+	<attribute name="initheight" value="0" type="number" />
+	
+	<!--- @keywords private store initial height so toggleopen can reset height  -->
+	<handler name="oninit">
+		this.initheight=this.height;
+		////Debug.write("this.isopen: ",this.isopen);
+		if (!this.open) toggleopen();
+	</handler>
+	
+	<method name="close">
+		if (this.onclose) this.onclose.sendEvent();
+		this.doDestroy();
+	</method>
+	
+	<method name="toggleopen">
+		////Debug.write("this.isopen",this.isopen);
+		this.setAttribute('isopen',!this.isopen);
+		if (this.isopen){
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					////Debug.write("open new y",this.y+this.initheight);
+					this.dockinglist[eg].toggleOpenByParent(this.initheight-22);
+					this.dockinglist[eg].setAttribute('y',this.y+this.initheight);
+					
+				}
+			}			
+			this.setAttribute('height',this.initheight);
+		} else {
+			_calcdockingList();
+			for (var eg in this.dockinglist){
+				if(this.dockinglist[eg].docking){
+					////Debug.write("this.dockinglist[eg]: ",this.dockinglist[eg].title);
+					this.dockinglist[eg].toggleOpenByParent(-(this.initheight-22));
+					this.dockinglist[eg].setAttribute('y',this.y+22);
+				}
+			}	
+			this.setAttribute('height',22);		
+		}
+	</method>
+	
+	<method name="toggleOpenByParent" args="changeY">
+		////Debug.write("+++++ toggleOpenByParent +++++ changeY: ",this.title,changeY);
+		var tempList=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+				////Debug.write("found some: ",this.parent.subviews[eg].title);
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+					
+				if (proof) tempList.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("tempList.length: ",tempList.length);
+		if (tempList.length!=0){
+			for (var eg in tempList){
+				if(tempList[eg].docking){
+					////Debug.write("toggleOpenByParent 1 [eg],changeY: ",tempList[eg].title,changeY);
+					tempList[eg].toggleOpenByParent(changeY);
+					tempList[eg].setAttribute('y',tempList[eg].y+changeY);
+				}
+			}	
+		}
+		
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="_removeDragState" args="obj">
+		//It's important to remove the dragger and do docking stuff before you check for conencted Boxes
+		dragger.remove();
+		if (obj==this){
+			if (docking) arrangePosition();
+		} else {
+			if (docking) _lookforParentOnly(obj);
+		}
+			
+		//check for connected Boxes
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._removeDragState(this);
+			}
+		}
+
+	</method>
+
+	
+	<!--- @keywords private
+		the arg obj is needed because the dragging can be called by the Box itself
+		or by a Box which is connected to this Box!  -->
+	<method name="_startDragState" args="obj">
+		this.bringToFront();
+		_calcdockingList();
+		for (var eg in this.dockinglist){
+			if(this.dockinglist[eg].docking){
+				this.dockinglist[eg]._startDragState(this);
+			}
+		}
+		//store position cause it wasn't dragged by itself
+		if (obj!=this){
+			storeAdjustmentToParent(obj.x,obj.y);
+		}
+		dragger.apply();
+	</method>
+	
+	<!--- Calc the List of Boxes which will be dragged and setposition if this Box
+		will be dragged,docked or minimized/maximized  -->
+	<method name="_calcdockingList">
+		//Clear list of conencted Boxes
+		this.dockinglist=new Array();
+		<![CDATA[
+		//check for dockable stuff which is connected to this Box
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				var proof=false;
+
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < 1 ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -1 ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					proof=true;
+				}
+
+				if (proof) this.dockinglist.push(this.parent.subviews[eg]);
+			}
+		}
+		]]>
+		////Debug.write("this.dockinglist.length:",this.dockinglist.length);
+	</method>
+	
+	<!--- @keywords private  -->
+	<method name="arrangePosition">
+		//do the magic
+		//the idea is: look for all on the view container one level above this one
+		//and look for the width/height and 0/0 and look for "dockable" stuff there
+		var newx=this.x;
+		var newy=this.y;
+	  
+		<![CDATA[
+				
+		for (var eg in this.parent.subviews){
+			//check that you do not calc with yourself
+			if (this.parent.subviews[eg]!=this && this.parent.subviews[eg].docking){
+				// there are 4 cases which have to be proofed to check every possible situation
+				//left box-border
+				if ( ( ((this.x+this.width)-this.parent.subviews[eg].x) < this.dockingbarrier ) && ( ((this.x+this.width)-this.parent.subviews[eg].x) > -this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x - this.width );
+				}
+				//right box-border
+				if ( ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)<this.dockingbarrier ) && ( ((this.parent.subviews[eg].x+this.parent.subviews[eg].width)-this.x)>-this.dockingbarrier ) &&  ( (this.y+this.height) > this.parent.subviews[eg].y ) &&  ( this.y < (this.parent.subviews[eg].y+this.parent.subviews[eg].height) ) ){
+					newx= ( this.parent.subviews[eg].x + this.parent.subviews[eg].width );
+				}
+				//top box-border
+				if  ( ( ((this.y+this.height)-this.parent.subviews[eg].y) < this.dockingbarrier ) && ( ((this.y+this.height)-this.parent.subviews[eg].y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y-this.height;
+				}
+				//bottom box-border
+				if ( ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) < this.dockingbarrier ) && ( ((this.parent.subviews[eg].y+this.parent.subviews[eg].height)-this.y) > -this.dockingbarrier ) && ( (this.x+this.width) > this.parent.subviews[eg].x )  && ( this.x < (this.parent.subviews[eg].x+this.parent.subviews[eg].width) ) ){
+					newy = this.parent.subviews[eg].y+this.parent.subviews[eg].height;
+				}
+			}
+		}
+		
+		//Check for Borders
+		//should be done _after_ checking for other dockable stuff so it gets 
+		//priority to dock against the border of parent view
+		if (this.x<this.dockingbarrier){
+			newx=0;
+		}
+		if (this.y<this.dockingbarrier){
+			newy=0;
+		}
+		if ( (this.parent.width-(this.x+this.width))<this.dockingbarrier){
+			newx=this.parent.width-this.width;
+		}
+		if ( (this.parent.height-(this.y+this.height))<this.dockingbarrier){
+			newy=this.parent.height-this.height;
+		}
+		
+		//set position
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<method name="storeAdjustmentToParent" args="objX,objY">
+		this.tempXdistance=objX-this.x;
+		this.tempYdistance=objY-this.y;
+	</method>
+	
+	<!--- @keywords private 
+		this method is needed because if the dragging end and
+		it was not dragged _itself_ it was draged just because a connected
+		dockable Box was dragged than it could be that the connected
+		Box was forced to dock against something different onmouseup
+		so you have to rearrange the old "adjustment"	-->
+	<method name="_lookforParentOnly" args="obj">
+		<![CDATA[		
+		var newx=obj.x-tempXdistance;
+		var newy=obj.y-tempYdistance;
+		
+		this.setAttribute('x',newx);
+		this.setAttribute('y',newy);
+		]]>
+	</method>
+	
+	<dragstate name="dragger" />
+    
+    <animator attribute="y" to="20" duration="1000" started="false" />
+        
+    <animator name="doOut" attribute="y" to="-500" duration="1000" started="false" onstop="parent.doDestroy()" />    
+    
+    <method name="doDestroy">
+        this.destroy();
+    </method>
+	
+	<view width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" 
+		  x="1" y="1" bgcolor="$once{ canvas.getThemeColor('mainBackgroundColor') }" />
+	<view x="1" y="1" width="${ this.parent.width-2 }" height="20" >
+		
+		<gradientview x="0" width="${ this.parent.width }" height="20"
+				colorFrom="$once{ canvas.getThemeColor('baseMousecolorizer') }"
+				colorTo="0x000088" >
+		</gradientview>
+		
+        <text fontsize="10" height="17" x="6" y="1" text="${ this.parent.parent.title }" 
+			fgcolor="0xFFFFFF" resize="true" fontstyle="bold" />
+	
+		<view visible="${ this.parent.parent.closable }" x="${ this.parent.parent.width-20 }" 
+			y="2" resource="btn_presenter_close"
+                onmouseover="this.setAttribute('frame',2)"
+                onmouseout="this.setAttribute('frame',1)"
+                onmousedown="this.setAttribute('frame',3)"
+                onmouseup="this.setAttribute('frame',1)" >
+			<handler name="onclick">
+				this.parent.parent.close();
+			</handler>									
+		</view>
+		<!-- 
+		<view visible="${ !this.parent.parent.isopen }" x="2" y="3" resource="explorer_button_min_rsc">
+			<handler name="onmouseover">
+				this.setAttribute('frame',2);
+			</handler>
+			<handler name="onmouseout">
+				this.setAttribute('frame',1);
+			</handler>
+			<handler name="onmousedown">
+				this.setAttribute('frame',3);
+			</handler>	
+			<handler name="onmouseup">
+				this.setAttribute('frame',1);
+				this.parent.parent.toggleopen();
+			</handler>									
+		</view>
+		<view visible="${ this.parent.parent.isopen }" x="2" y="3" resource="explorer_button_max_rsc">
+			<handler name="onmouseover">
+				this.setAttribute('frame',2);
+			</handler>
+			<handler name="onmouseout">
+				this.setAttribute('frame',1);
+			</handler>
+			<handler name="onmousedown">
+				this.setAttribute('frame',3);
+			</handler>	
+			<handler name="onmouseup">
+				this.setAttribute('frame',1);
+				this.parent.parent.toggleopen();
+			</handler>									
+		</view>
+		 -->
+	</view>
+    <handler name="onaddsubview" args="v">
+		////Debug.write("onaddsubview",v);
+		if (v.parent.subviews.length>2) this._resizeview.bringToFront();
+    </handler>
+    <view visible="${ this.parent.resizeable }" name="_resizeview" 
+    	  x="${ this.parent.width - 17 }" y="${ this.parent.height - 17 }" 
+        resource="explorer_resize_rsc" cursor="explorer_resizemouse_rsc" 
+        onmousedown="this.parent.rs.apply()"
+        onmouseup="this.parent.rs.remove()" >
+    	<handler name="oninit">
+    		//if ($debug) Debug.write("setTint");
+    		//TODO: Fix this, does not work at the moment
+    		//http://code.google.com/p/openmeetings/issues/detail?id=470
+    		this.setColor(canvas.getThemeColor('baseMousecolorizer'));
+    	</handler>  	
+    </view>
+    <resizestate name="rs"/>
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/explorer/labelexplorerBox.lzx b/WebContent/swf10/base/components/explorer/labelexplorerBox.lzx
new file mode 100644
index 0000000..e0670ac
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/labelexplorerBox.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelExplorerBox" extends="explorerBox" >
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.title=canvas.getLabelName(this.labelid);
+	</method>
+	
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/explorer/library.lzx b/WebContent/swf10/base/components/explorer/library.lzx
new file mode 100644
index 0000000..c16ca18
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/library.lzx
@@ -0,0 +1,31 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="incubator/gradientview.lzx" /> 
+
+	<include href="resources/" />
+	
+	<include href="explorerBox.lzx" />
+	<include href="labelexplorerBox.lzx" />
+
+    
+</library>
diff --git a/WebContent/swf10/base/components/explorer/resources/close_dn.png b/WebContent/swf10/base/components/explorer/resources/close_dn.png
new file mode 100644
index 0000000..57fcf20
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/close_dn.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/close_mo.png b/WebContent/swf10/base/components/explorer/resources/close_mo.png
new file mode 100644
index 0000000..b9d0f94
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/close_mo.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/close_up.png b/WebContent/swf10/base/components/explorer/resources/close_up.png
new file mode 100644
index 0000000..79d3b72
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/close_up.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_dn.png b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_dn.png
new file mode 100644
index 0000000..e5ae343
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_dn.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_mo.png b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_mo.png
new file mode 100644
index 0000000..093a0b0
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_mo.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_no.png b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_no.png
new file mode 100644
index 0000000..fca6ec8
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_maximize_no.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_dn.png b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_dn.png
new file mode 100644
index 0000000..e05de83
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_dn.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_mo.png b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_mo.png
new file mode 100644
index 0000000..faba70d
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_mo.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_no.png b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_no.png
new file mode 100644
index 0000000..b4dafa3
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorbar_minimize_no.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/explorerbar.png b/WebContent/swf10/base/components/explorer/resources/explorerbar.png
new file mode 100644
index 0000000..4cb2d59
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/explorerbar.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/library.lzx b/WebContent/swf10/base/components/explorer/resources/library.lzx
new file mode 100644
index 0000000..2c123a6
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/library.lzx
@@ -0,0 +1,60 @@
+<?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.
+  
+-->
+<library>
+
+<!-- APL author sebawagner -->
+<resource src="explorerbar.png" name="explorer_thumb_rsc" />
+
+<!-- APL author sebawagner -->
+<resource name="explorer_button_min_rsc" >
+	<frame src="explorbar_minimize_no.png" />
+	<frame src="explorbar_minimize_mo.png" />
+	<frame src="explorbar_minimize_dn.png" />
+</resource>
+
+<!-- APL author sebawagner -->
+<resource name="explorer_button_max_rsc" >
+	<frame src="explorbar_maximize_no.png" />
+	<frame src="explorbar_maximize_mo.png" />
+	<frame src="explorbar_maximize_dn.png" />
+</resource>
+
+<!-- APL author sebawagner -->
+<resource name="explorer_resize_rsc" src="resizer.swf" />
+
+<!-- APL author sebawagner -->
+<resource name="btn_presenter_minimize" src="minimize_up.png" />
+<!-- APL author sebawagner -->
+<resource name="btn_presenter_maximize" src="maximize_up.png" />
+<!-- APL author sebawagner -->
+<resource name="btn_presenter_maximize2" src="maximize2_up.png" />
+
+<!-- APL author sebawagner -->
+<resource name="btn_presenter_close">
+    <frame src="close_up.png" />
+    <frame src="close_mo.png" />
+    <frame src="close_dn.png" />
+</resource> 
+
+<!-- APL author sebawagner -->
+<resource name="explorer_resizemouse_rsc" src="resizemouse.png" />
+
+</library>
diff --git a/WebContent/swf10/base/components/explorer/resources/maximize2_up.png b/WebContent/swf10/base/components/explorer/resources/maximize2_up.png
new file mode 100644
index 0000000..1edd23b
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/maximize2_up.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/maximize_up.png b/WebContent/swf10/base/components/explorer/resources/maximize_up.png
new file mode 100644
index 0000000..778c05c
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/maximize_up.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/minimize_up.png b/WebContent/swf10/base/components/explorer/resources/minimize_up.png
new file mode 100644
index 0000000..1637298
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/minimize_up.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/resizemouse.png b/WebContent/swf10/base/components/explorer/resources/resizemouse.png
new file mode 100644
index 0000000..be3164f
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/resizemouse.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/resizer.fla b/WebContent/swf10/base/components/explorer/resources/resizer.fla
new file mode 100644
index 0000000..07de957
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/resizer.fla
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/resizer.png b/WebContent/swf10/base/components/explorer/resources/resizer.png
new file mode 100644
index 0000000..2c951fe
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/resizer.png
Binary files differ
diff --git a/WebContent/swf10/base/components/explorer/resources/resizer.swf b/WebContent/swf10/base/components/explorer/resources/resizer.swf
new file mode 100644
index 0000000..2e5d0da
--- /dev/null
+++ b/WebContent/swf10/base/components/explorer/resources/resizer.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/labelCheckbox.lzx b/WebContent/swf10/base/components/labelCheckbox.lzx
new file mode 100644
index 0000000..8660ce8
--- /dev/null
+++ b/WebContent/swf10/base/components/labelCheckbox.lzx
@@ -0,0 +1,31 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelCheckbox" extends="checkbox" style="componentStyle" fontsize="11" >
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/base/components/library.lzx b/WebContent/swf10/base/components/library.lzx
new file mode 100644
index 0000000..b79c839
--- /dev/null
+++ b/WebContent/swf10/base/components/library.lzx
@@ -0,0 +1,33 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="resetCombobox.lzx" />
+    <include href="miniIconsPresenter.lzx" />
+    <include href="labelCheckbox.lzx" />
+    
+    <include href="text/" />
+    <include href="scrollbars/" />
+    <include href="lps/" />
+    <include href="button/" />
+    <include href="explorer/" /> 
+      
+</library>
diff --git a/WebContent/swf10/base/components/lps/basePropertySelector.lzx b/WebContent/swf10/base/components/lps/basePropertySelector.lzx
new file mode 100644
index 0000000..2d9a099
--- /dev/null
+++ b/WebContent/swf10/base/components/lps/basePropertySelector.lzx
@@ -0,0 +1,48 @@
+<!--
+  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.
+  
+-->
+<library>
+	
+<class name="hidePropertyView" extends="view"
+	   width="$once{ parent.width }" height="$once{ parent.height }"
+	   opacity="0.7" bgcolor="0xFFFFFF" />
+
+<class name="basePropertySelector" extends="view">
+	
+	<!--- position of the SliderWin or ColorPicker -->
+	<attribute name="boxPosition" value="down" type="string" />
+	
+	<attribute name="isEnabled" value="true" type="boolean" />
+	<attribute name="enabledView" value="null" />
+	
+	<method name="setEnabled" args="b">
+		this.setAttribute('isEnabled',b);
+		if (this.enabledView != null) {
+			this.enabledView.destroy();
+			this.enabledView = null;
+		}
+		if (!b) {
+			this.enabledView = new lz.hidePropertyView(this);
+		} 
+	</method>
+    
+    
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/lps/changeWidthSlider.lzx b/WebContent/swf10/base/components/lps/changeWidthSlider.lzx
new file mode 100644
index 0000000..dfa746a
--- /dev/null
+++ b/WebContent/swf10/base/components/lps/changeWidthSlider.lzx
@@ -0,0 +1,168 @@
+<?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.
+  
+-->
+<library>  
+
+<class name="changeWidthSlider" extends="basePropertySelector" bgcolor="0xFFFFFF" width="60" height="24">
+
+    <attribute name="numberAlign" value="right" type="string"/>
+    <attribute name="minimum" type="number" value="1" />
+    <attribute name="maximum" type="number" value="100" />
+    <attribute name="step" value="1" type="number"/>
+    <attribute name="initialNumberInit" value="1" type="number"/>
+    <attribute name="initialNumber" value="3" type="number"/>
+    
+    <attribute name="boxPosition" value="down" type="string"/>
+    
+    <attribute name="labelid" value="429" type="number"/>
+    
+    <event name="onplus" />
+    <event name="onminus" />
+    
+    <handler name="oninit">
+        this.initialNumberInit=initialNumber;
+    </handler>
+    
+    <method name="getValue">
+        return this.initialNumber;
+    </method>
+    
+    <method name="setSliderValue" args="v">
+    	this.initialNumber = v;
+    	this.numericValue.setAttribute('tempValue',this.initialNumber);
+    	this.numericValue.setAttribute('text',this.initialNumber);
+    	if ($debug) Debug.write("setSliderValue ",v);
+    	this.setEnabled(true);
+    </method>
+
+    <edittext name="numericValue" width="34" height="24" text="$once{ parent.initialNumber }" >
+        <attribute name="tempValue" value="$once{ parent.initialNumber }" type="number" />
+        <handler name="onfocus">
+            this.tempValue = Number(this.getText());
+        </handler>            
+        <handler name="onblur">
+            <![CDATA[
+                var t = parseInt(this.getText());
+                if (isNaN(t) || t > this.parent.maximum || t < this.parent.minimum){
+                    t = this.tempValue;
+                    this.setAttribute('text',t);
+                    lz.Focus.setFocus(this);
+                } else {
+                    this.tempValue = t;
+                    parent.setAttribute('initialNumber',t);
+                }
+            ]]>
+        </handler>
+    </edittext>
+
+
+    <button name="arrowView" x="36" width="24" y="1" height="23" >
+        <view name="arrow_down_slider" resource="arrow_down_slider_rsc" 
+            x="4" y="3" />
+            <handler name="onclick">
+            	if (this.parent.boxPosition=="up"){
+            		var pick = new lz.changeWidthSliderWin(canvas,{
+					            			initialNumber:parent.numericValue.tempValue,
+					            			btnRef:this.parent,x:(parent.getAttributeRelative('x',canvas)),
+					            			maxvalue:parent.maximum,
+					            			y:(parent.getAttributeRelative('y',canvas)-140+parent.height)
+				            			});
+            	} else {
+            		var pick = new lz.changeWidthSliderWin(canvas,{
+					            			initialNumber:parent.numericValue.tempValue,
+					            			btnRef:this.parent,x:(parent.getAttributeRelative('x',canvas)),
+					            			maxvalue:parent.maximum,
+					            			y:(parent.getAttributeRelative('y',canvas))
+				            			});
+            	}
+                lz.ModeManager.makeModal( pick );
+            </handler>
+        <labelTooltip labelid="$once{ parent.parent.labelid }" />
+    </button>
+    
+</class>
+    
+<class name="closableView" extends="view">
+    <method name="close">
+        lz.ModeManager.release(this);
+        this.destroy();
+    </method>
+</class>    
+    
+<class name="changeWidthSliderWin" extends="closableView" bgcolor="white" 
+    clickable="true" width="58" height="140" >
+    
+    <attribute name="btnRef" value="null" />
+    <attribute name="initialNumber" value="3" type="number"/>
+    <attribute name="maxvalue" value="100" type="number" />
+    
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" > 
+        <![CDATA[
+            if ( eventStr == "onmousedown"  ){
+                if ( view != null ) {
+                   if ( !view.childOf(this) ) {
+                        this.close();
+                   }
+                } else {
+                    this.close();
+                }
+            }
+            if (view && view.childOf(this)) {
+                if (view[ eventStr ]) {
+                    view[ eventStr ].sendEvent( view );
+                }
+                return false;
+            }
+            return true;
+        ]]> 
+    </method>
+
+    <view bgcolor="$once{ canvas.getThemeColor('baseMousecolorizer') }" width="58" height="138" x="1" y="1" />
+    
+    <vslider name="_slider" height="120" y="10" x="10" minvalue="1" maxvalue="$once{ parent.maxvalue }" 
+        initvalue="$once{ parent.initialNumber }" showrange="false" showvalue="true">
+        <handler name="onvalue" args="v">
+            //if ($debug) Debug.write("onvalue",v);
+            parent.btnRef.numericValue.tempValue = Number(v);
+            parent.btnRef.numericValue.setAttribute('text',v);
+            parent.btnRef.setAttribute('initialNumber',v);
+        </handler>
+        <handler name="onvalueChosenFinal">
+            parent.close();
+        </handler>        
+    </vslider>
+    
+    <view name="_close" x="$once{ parent.width-this.width-2 }" y="2"
+        resource="btn_presenter_close"
+        onmouseover="this.setAttribute('frame',2)"
+        onmouseout="this.setAttribute('frame',1)"
+        onmousedown="this.setAttribute('frame',3)"
+        onmouseup="this.setAttribute('frame',1)" >
+        <handler name="onclick">
+            this.setAttribute('frame',2);
+            this.parent.close();
+        </handler>
+        <labelTooltip labelid="430" />
+    </view>     
+        
+</class>    
+
+</library>
diff --git a/WebContent/swf10/base/components/lps/library.lzx b/WebContent/swf10/base/components/lps/library.lzx
new file mode 100644
index 0000000..7344bcc
--- /dev/null
+++ b/WebContent/swf10/base/components/lps/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+    
+    <!-- APL author sebawagner -->
+    <resource name="arrow_down_slider_rsc" src="resources/arrow_down_slider.png" /> 
+
+    <include href="basePropertySelector.lzx" />
+    <include href="vslider.lzx" /> 
+    <include href="changeWidthSlider.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/base/components/lps/resources/arrow_down_slider.png b/WebContent/swf10/base/components/lps/resources/arrow_down_slider.png
new file mode 100644
index 0000000..f5107d7
--- /dev/null
+++ b/WebContent/swf10/base/components/lps/resources/arrow_down_slider.png
Binary files differ
diff --git a/WebContent/swf10/base/components/lps/vslider.lzx b/WebContent/swf10/base/components/lps/vslider.lzx
new file mode 100644
index 0000000..986a4f2
--- /dev/null
+++ b/WebContent/swf10/base/components/lps/vslider.lzx
@@ -0,0 +1,137 @@
+<?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.
+  
+-->
+<!-- X_LZ_COPYRIGHT_BEGIN ************************************************
+* Copyright 2006, 2009 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Use is subject to license terms.                                       *
+* X_LZ_COPYRIGHT_END ************************************************** -->
+<!--
+    vertical slider contributed by Sebastian Wagner
+-->
+<library>
+  
+  <class name="vslidertrack" extends="view" bgcolor="0x000000">
+        <view width="${ parent.width-2}" height="${ parent.height-2 }" 
+          x="1" y="1" bgcolor="0xFFFFFF"/>
+        <view width="${ parent.width-2}" bgcolor="0xCCCCCC"
+          x="1" y="${ (this.parent.parent.switchaxis) ? 
+                parent.parent._sliderthumb.y : 1 }" 
+          visible="${ parent.parent.showrange }" 
+          height="${ (this.parent.parent.switchaxis) ? 
+        (parent.parent._vslidertrack.height - parent.parent._sliderthumb.y-1) : 
+        parent.parent._sliderthumb.y }" />
+  </class>
+  
+  <class name="vsliderthumb" extends="button" bgcolor="0x999999" 
+        height="10" width="20" 
+    onmousedown="dragger.setAttribute('applied', true)" onmouseup="dragger.setAttribute('applied', false)">
+        <attribute name="drag_min" value="0" type="number" />
+        <attribute name="showvalue" type="boolean" value="true" />
+        <attribute name="drag_max" value="0" type="number" />
+        <handler name="oninit">
+                //Setting the initVal
+                this.setAttribute('y', getPosFromValue(this.parent.initvalue));
+        </handler>
+        
+        <method name="getValueFromPos">
+                var delta1 = this.parent.maxvalue-this.parent.minvalue;
+                var perc = (this.parent.switchaxis) ? 1-(y / (this.parent.height-this.height)) : (y / (this.parent.height-this.height));
+                //Debug.write(delta1,perc);
+                return (Math.round(perc*delta1))+this.parent.minvalue;
+        </method>
+        
+        <method name="getPosFromValue" args="val">
+                var perc = (val-this.parent.minvalue) / (this.parent.maxvalue-this.parent.minvalue);
+                //Debug.write(perc);
+                var valY = (this.parent.switchaxis) ? ( (1-perc) * (this.parent.height-this.height)) : (perc * (this.parent.height-this.height));
+                //Debug.write("valY: ",Math.round(valY));
+                return Math.round(valY);
+        </method>
+        
+        <setter name="y" args="v">
+                super.setAttribute('y', v);
+                var thumbVal = getValueFromPos();
+                if (thumbVal != parent.value) {
+                        this.parent.setValue(thumbVal);
+                }               
+        </setter>
+    <dragstate name="dragger" drag_axis="y"
+        drag_min_y="${ this.drag_min }"  
+        drag_max_y="${ this.drag_max }">
+            <text name="t1" x="-24" text="${ this.parent.parent.value }" y="-4" resize="true" />
+    </dragstate>
+  </class>
+
+  <class name="vslider" extends="view" >
+        <!--- Minimum Value -->
+        <attribute name="minvalue" type="number" value="0"/>
+        
+        <!--- Maximum Value -->
+        <attribute name="maxvalue" type="number" value="100"/>
+        
+        <!--- Showrange should the slidertrack be with color while 'sliding' -->
+        <attribute name="showrange" type="boolean" value="true"/>
+        
+        <!--- showvalue should the slider show the numbers of min/max -->
+        <attribute name="showvalue" type="boolean" value="true"/>
+        
+        <!--- switchaxis true means minimum-value is 
+                t op maximum is bottom false turns around -->
+        <attribute name="switchaxis" type="boolean" value="false"/>
+        
+        <!-- Initial Value -->
+        <attribute name="initvalue" value="0" type="number" />          
+        
+    <!--- @keywords private -->
+    <event name="onvalue"/>
+        
+    <!--- @keywords private -->
+    <attribute name="value" value="0" setter="setValue(value)"/>
+    <method name="setValue" args="v">
+        if (!isinited) {
+          this.value = v;
+          return;
+        }
+        if (this.value == v) return;
+        this.value = v;
+        if (onvalue) onvalue.sendEvent(v);
+    </method>
+       
+        <vslidertrack name="_vslidertrack" x="5" 
+        width="10" height="${ parent.height }" />
+        <vsliderthumb name="_sliderthumb" 
+        drag_max="${ parent.height-this.height }" 
+        showvalue="${ parent.showvalue }" />
+        
+        <text text="${ ( (this.parent.switchaxis) ? 
+                this.parent.maxvalue : this.parent.minvalue ) }" 
+        visible="${ parent.showvalue }" 
+        y="-8" x="${ this.parent._vslidertrack.width+10 }" />
+        
+        <text text="${ ( (this.parent.switchaxis) ? 
+                this.parent.minvalue : this.parent.maxvalue ) }" 
+          visible="${ parent.showvalue }" 
+          y="${ this.parent.height-10 }" 
+          x="${ this.parent._vslidertrack.width+10 }" />
+  </class>
+  
+  
+
+</library>
diff --git a/WebContent/swf10/base/components/miniIconsPresenter.lzx b/WebContent/swf10/base/components/miniIconsPresenter.lzx
new file mode 100644
index 0000000..1d58a24
--- /dev/null
+++ b/WebContent/swf10/base/components/miniIconsPresenter.lzx
@@ -0,0 +1,51 @@
+<library>
+<!--
+  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.
+  
+-->
+
+<class name="miniIconsPresenter" extends="view">
+    
+    <attribute name="iconRessourceName" value="" type="string"/>
+    
+    <handler name="onmouseover">
+        this._bg.setAttribute("bgcolor",0xFFFFFF);
+        this._bg.setAttribute("visibility","visible");
+    </handler>
+    
+    <handler name="onmouseout">
+        this._bg.setAttribute("visibility","hidden");
+    </handler>
+    
+    <handler name="onmousedown">
+        this._bg.setAttribute("bgcolor",canvas.getThemeColor('basebgcolorizer'));
+        this._bg.setAttribute("visibility","visible");
+    </handler>
+    
+    <handler name="onmouseup">
+        this._bg.setAttribute("visibility","hidden");
+    </handler>
+    
+    <view name="_bg" visibility="hidden" opacity="0.7"
+          width="14" height="14" x="1" y="1" bgcolor="0xFFFFFF" />
+          
+    <view name="_itemRsc" resource="$once{ parent.iconRessourceName }" />
+    
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/resetCombobox.lzx b/WebContent/swf10/base/components/resetCombobox.lzx
new file mode 100644
index 0000000..f95abff
--- /dev/null
+++ b/WebContent/swf10/base/components/resetCombobox.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+
+    <class name="resetCombobox" extends="combobox" editable="false" shownitems="12"
+    	   style="componentStyle" itemclassname="labeldTextListItem">
+    
+        <method name="reset" >
+            <![CDATA[
+                var currentCount = this.cblist.getNumItems();
+                for (var i = 0; i < currentCount; i++)
+                    this.removeItemAt(0);
+                this.clearSelection();
+            ]]>
+        </method>
+    
+    </class>
+        
+</library>
diff --git a/WebContent/swf10/base/components/scrollbars/library.lzx b/WebContent/swf10/base/components/scrollbars/library.lzx
new file mode 100644
index 0000000..9ee00e1
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/library.lzx
@@ -0,0 +1,44 @@
+<?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.
+  
+-->
+<library>
+
+	<!-- APL Author sebawagner -->
+	<resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" />
+	
+	<!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbmiddle_rsc" src="resources/scrollthumb_y_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbtop_rsc" src="resources/scrollthumb_y_top.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbbottom_rsc" src="resources/scrollthumb_y_bottom.swf" />
+    <!-- APL Author sebawagner -->
+   	<resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" />
+	<!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbmiddle_rsc" src="resources/scrollthumb_x_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbleft_rsc" src="resources/scrollthumb_x_left.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbright_rsc" src="resources/scrollthumb_x_right.swf" />
+
+	<include href="om_vscrollbar.lzx"/>
+	<include href="om_hscrollbar.lzx"/>
+
+</library>
diff --git a/WebContent/swf10/base/components/scrollbars/om_hscrollbar.lzx b/WebContent/swf10/base/components/scrollbars/om_hscrollbar.lzx
new file mode 100644
index 0000000..036fed6
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/om_hscrollbar.lzx
@@ -0,0 +1,61 @@
+<?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.
+  
+-->
+<library>
+
+<class name="om_hscrollbar" extends="basescrollbar" styleable="false"
+    axis="x">
+
+    <!--- @keywords private -->
+    <attribute name="height" value="10"/>
+    
+    <!--- @keywords private -->
+    <method name="_showEnabled">
+        <![CDATA[
+        if (!_enabled) {
+        	//this.scrolltrack.thumb.setAttribute('height', 0);
+            this.scrolltrack.thumb.setAttribute('visibility', 'hidden');
+        } else {
+            this.scrolltrack.thumb.setAttribute('visibility', 'visible');
+        }
+        super._showEnabled();
+    ]]>
+    </method>
+
+	<view name="rightarrow" width="0" />
+    <view name="scrolltrack">
+    	 <basescrolltrack name="left"
+           resource="omscrolltrack_x_rsc" stretches="width">
+         	<attribute name="height" value="${parent.height}"/>
+            <attribute name="width" value="${parent.width}"/>  
+         </basescrolltrack>
+         <basescrollthumb name="thumb" x="1">
+             <view resource="omscrollbar_xthumbleft_rsc"/>
+             <view resource="omscrollbar_xthumbmiddle_rsc" stretches="both"/>
+             <view resource="omscrollbar_xthumbright_rsc"/>
+             <stableborderlayout axis="x"/>
+        </basescrollthumb>
+    </view>
+
+	<view height="0" name="leftarrow" />
+    <stableborderlayout axis="x"/>
+
+</class>
+</library>
diff --git a/WebContent/swf10/base/components/scrollbars/om_vscrollbar.lzx b/WebContent/swf10/base/components/scrollbars/om_vscrollbar.lzx
new file mode 100644
index 0000000..98623ed
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/om_vscrollbar.lzx
@@ -0,0 +1,61 @@
+<?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.
+  
+-->
+<library>
+
+<class name="om_vscrollbar" extends="basescrollbar" styleable="false"
+    axis="y">
+
+    <!--- @keywords private -->
+    <attribute name="width" value="10"/>
+    
+    <!--- @keywords private -->
+    <method name="_showEnabled">
+        <![CDATA[
+        if (!_enabled) {
+        	//this.scrolltrack.thumb.setAttribute('height', 0);
+            this.scrolltrack.thumb.setAttribute('visibility', 'hidden');
+        } else {
+            this.scrolltrack.thumb.setAttribute('visibility', 'visible');
+        }
+        super._showEnabled();
+    ]]>
+    </method>
+
+	<view name="toparrow" height="0" />
+    <view name="scrolltrack">
+    	 <basescrolltrack name="top"
+           resource="omscrolltrack_y_rsc" stretches="height">
+         	<attribute name="height" value="${parent.height}"/>
+            <attribute name="width" value="${parent.width}"/>  
+         </basescrolltrack>
+         <basescrollthumb name="thumb" x="1">
+             <view resource="omscrollbar_ythumbtop_rsc"/>
+             <view resource="omscrollbar_ythumbmiddle_rsc" stretches="both"/>
+             <view resource="omscrollbar_ythumbbottom_rsc"/>
+             <stableborderlayout axis="y"/>
+        </basescrollthumb>
+    </view>
+
+	<view height="0" name="bottomarrow" />
+    <stableborderlayout axis="y"/>
+
+</class>
+</library>
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_left.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_left.swf
new file mode 100644
index 0000000..fd9411b
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_left.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_mid.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_mid.swf
new file mode 100644
index 0000000..fff3744
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_mid.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_right.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_right.swf
new file mode 100644
index 0000000..74ea64a
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_x_right.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_bottom.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_bottom.swf
new file mode 100644
index 0000000..09a370b
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_bottom.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_mid.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_mid.swf
new file mode 100644
index 0000000..af9015f
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_mid.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_top.swf b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_top.swf
new file mode 100644
index 0000000..c701740
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/scrollthumb_y_top.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/x_scrolltrack.swf b/WebContent/swf10/base/components/scrollbars/resources/x_scrolltrack.swf
new file mode 100644
index 0000000..937dd8d
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/x_scrolltrack.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/resources/y_scrolltrack.swf b/WebContent/swf10/base/components/scrollbars/resources/y_scrolltrack.swf
new file mode 100644
index 0000000..b05b88a
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/resources/y_scrolltrack.swf
Binary files differ
diff --git a/WebContent/swf10/base/components/scrollbars/scrollbar_yresources.lzx b/WebContent/swf10/base/components/scrollbars/scrollbar_yresources.lzx
new file mode 100644
index 0000000..bc08ffe
--- /dev/null
+++ b/WebContent/swf10/base/components/scrollbars/scrollbar_yresources.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+
+    
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/base/components/text/borderedInputtext.lzx b/WebContent/swf10/base/components/text/borderedInputtext.lzx
new file mode 100644
index 0000000..851449e
--- /dev/null
+++ b/WebContent/swf10/base/components/text/borderedInputtext.lzx
@@ -0,0 +1,194 @@
+<?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.
+  
+-->
+<library>
+
+<class name="borderedInputtext" extends="view" bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }" >
+	<attribute name="width" value="200" type="size" />
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <event name="onblur" />
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>         	
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="$once{parent.multiline}" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+  		<attribute name="preText" value="" type="string" />
+  		<handler name="onfocus">
+  			this.preText = this.getText();
+  		</handler>
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t=this.preText;
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+            if (this.parent.onblur) this.parent.onblur.sendEvent();
+      	</handler>
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+        </handler>       	           
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+<class name="borderedMultiInputtext" extends="view">
+	<attribute name="width" value="200" type="size" />
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>         	
+	<attribute name="bgcolor" value="0xA3B2CC" type="color" />
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="true" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t="0";
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+      	</handler>   
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+            if(this.multiline) this.init();
+        </handler>       	           
+        <method name="init">
+            super.init();        
+        </method>
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+<class name="borderedPasswordText" extends="view">
+	<attribute name="width" value="200" type="size" />
+	<attribute name="height" value="18" type="size" />
+    <attribute name="tvalue" type="string" value="default"/>
+    <attribute name="sendchange" value="false" type="boolean" />
+    <attribute name="multiline" value="false"/>
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+    <attribute name="checkIsNumber" value="false" type="boolean" />
+    <attribute name="checkIsDouble" value="false" type="boolean" />
+    <attribute name="editable" value="true" setter="setEditable(editable)" type="boolean" />
+    <method name="setEditable" args="value">
+        this.editable=value;
+    	this.field.setEnabled(value);
+    </method>
+    <method name="setItemEnabled" args="value">
+    	this.field.setEnabled(value);
+    </method>    
+    <attribute name="maxlength" value="null" type="number"/>         	
+	<attribute name="bgcolor" value="0xA3B2CC" type="color" />
+	<attribute name="text" type="string" value="" />
+		<!-- -->
+  <inputtext name="field" fontsize="10" text="${ this.parent.text }" x="1" y="1" bgcolor="0xFFFFFF" 
+  	multiline="$once{parent.multiline}" password="true" width="${ this.parent.width-2 }" height="${ this.parent.height-2 }" >
+      	<handler name="onblur">
+      		var t = this.getText();
+      		if (this.parent.checkIsNumber){
+      			if ( isNaN( Number(t) ) ){
+      				if (this.parent.checkIsDouble){
+      					t="0.00";
+      				} else {
+      					t="0";
+      				}
+      				this.setAttribute('text',t);
+      			}
+      		}
+            if (this.parent.sendchange) this.parent.parent.sendchange(this.parent,this.parent.tvalue,this.getText());
+      	</handler>   
+        <handler name="oninit">
+            this.setEnabled(this.parent.editable);
+        </handler>       	           
+	</inputtext>	   
+	 
+	<method name="getText">
+		return this.field.getText();
+	</method>
+	<method name="setText" args="txt">
+		this.setAttribute('text',txt);
+	</method> 		
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/text/labelText.lzx b/WebContent/swf10/base/components/text/labelText.lzx
new file mode 100644
index 0000000..c5f961c
--- /dev/null
+++ b/WebContent/swf10/base/components/text/labelText.lzx
@@ -0,0 +1,59 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelText" extends="text" resize="true" fontsize="11" >
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+</class>
+
+
+<class name="labelTextWidthTooltip" extends="text" resize="true" 
+	   onmouseover="" onmouseout=""
+	   fontsize="11" >
+	
+	<attribute name="labelLabelid" type="number" value="-1" />
+
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+	<method name="setLabelId" args="_labelid" >
+		this.labelid = _labelid;
+		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	</method>
+	
+	<labelTooltip name="_labelTooltip" labelid="$once{ parent.labelLabelid }" />
+	
+</class>
+
+<class name="labeldTextListItem" extends="textlistitem">
+	<attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    <labelTooltip initByDataPathparent="true" />
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/text/labelTooltip.lzx b/WebContent/swf10/base/components/text/labelTooltip.lzx
new file mode 100644
index 0000000..442eb3c
--- /dev/null
+++ b/WebContent/swf10/base/components/text/labelTooltip.lzx
@@ -0,0 +1,162 @@
+<?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.
+  
+-->
+<library>
+
+<class name="labelTooltip" extends="view" visible="false" >
+
+	<attribute name="inittwice" value="false" type="boolean" />
+    <attribute name="multiline" value="false" type="boolean" />
+    <attribute name="ismenubuttonlabel" value="false" type="boolean" />
+    <attribute name="initByDataPathparent" value="false" type="boolean" />
+    
+    <attribute name="holder" value="null" />
+    
+    <event name="setContent" />
+        
+    <handler name="onmouseover" reference="this.parent">
+    	<![CDATA[
+            this.doonmouseover();
+        ]]>        
+    </handler>
+    <handler name="onmouseout" reference="this.parent">
+        this.cleanHolder();
+    </handler>
+    
+    <method name="doonmouseover">
+    	<![CDATA[
+            this.setContent.sendEvent();
+	    	if (this.ismenubuttonlabel){
+	    		this.parent.setLabel();
+	    	}
+	    	if (this.inittwice){
+	    		this.setAttribute('text',canvas.getLabelName(this.labelid));
+	    	}
+	    	if (this.initByDataPathparent){
+                this.setAttribute('text',parent.text);
+            }
+	        var xVal = canvas.getMouse('x');
+	        var yVal = canvas.getMouse('y');
+			////Debug.write("mytext: ",this.mytext);
+			if (this.multiline && this.text.length!=0){
+				this.holder = new lz.xmlCrmTooltipMulti(canvas,{text:this.text,holder:this});
+			} else if (this.text.length!=0){
+				this.holder = new lz.xmlCrmTooltip(canvas,{text:this.text,holder:this});
+			}
+	        if (xVal<canvas.width/2){
+	            xVal += 0;
+	        } else {
+	            xVal -= this.holder.width-14;
+	        }
+	        if (yVal<canvas.height/2){
+	            yVal += 24;
+	        } else {
+	            yVal -= 24;
+	        }
+	        this.holder.setAttribute('x',xVal);
+	        this.holder.setAttribute('y',yVal);
+	        canvas.registerToolTip(this);
+        ]]>        
+    </method>
+    
+    <handler name="onmouseup" reference="this.parent">
+        this.cleanHolder();
+    </handler>
+    <handler name="onclick" reference="this.parent">
+        this.cleanHolder();
+    </handler>  
+    
+    <method name="cleanHolder">
+        if (this.holder!=null) {
+            this.holder.destroy();
+            this.holder = null; 
+            canvas.clearToolTip();
+        }
+    </method> 
+      
+    <attribute name="labelid" type="number" setter="setLabelId(labelid)" />
+    <method name="setLabelId" args="_labelid" >
+        this.labelid = _labelid;
+        this.setAttribute('text',canvas.getLabelName(this.labelid));
+    </method>
+    <attribute name="text" value="" type="string" />
+</class>
+
+<class name="xmlCrmTooltip" extends="view" bgcolor="0x000000"
+    width="${ this._text.width+2 }" height="${ this._text.height+2 }" >
+    <switch>
+	  <when property="$as3">
+		<passthrough>
+		  import flash.filters.DropShadowFilter;
+		</passthrough>
+	  </when>
+	</switch>
+    <attribute name="text" value="" type="string" />
+    <attribute name="holder" value="null" />
+    <text x="1" y="1" text="${ parent.text }" resize="true" 
+        fontsize="10" name="_text" bgcolor="0xFFFFFF" />
+    <handler name="onmouseout">
+        this.destroy();
+    </handler>
+    <handler name="oninit">
+        this.setShadow();
+    </handler>
+    <method name="setShadow" >
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+           	this.displacementMap = new DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method> 
+</class>
+
+<class name="xmlCrmTooltipMulti" extends="view" bgcolor="0x000000" 
+    width="${ this._text.width+2 }" height="${ this._text.height+2 }" >
+    <switch>
+	  <when property="$as3">
+		<passthrough>
+		  import flash.filters.DropShadowFilter;
+		</passthrough>
+	  </when>
+	</switch>
+    <attribute name="text" value="" type="string" />
+    <attribute name="holder" value="null" />
+    <text x="1" y="1" text="${ parent.text }" resize="true" 
+        fontsize="10" name="_text" bgcolor="0xFFFFFF" multiline="true" />
+    <handler name="oninit">
+        this.setShadow();
+    </handler>
+    <method name="setShadow" >
+        <![CDATA[
+        if (this.isinited){
+            this.normalMC = this.getDisplayObject();
+           	this.displacementMap = new DropShadowFilter();
+            this.normalMC.filters = [this.displacementMap];
+        }
+        ]]>              
+    </method>	    
+    <handler name="onmouseout">
+        this.destroy();
+    </handler>
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/components/text/library.lzx b/WebContent/swf10/base/components/text/library.lzx
new file mode 100644
index 0000000..962a736
--- /dev/null
+++ b/WebContent/swf10/base/components/text/library.lzx
@@ -0,0 +1,28 @@
+<?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.
+  
+-->
+<library>
+	
+	<include href="borderedInputtext.lzx" />
+	<include href="labelText.lzx" />
+	<include href="labelTooltip.lzx" />
+	
+
+</library>
diff --git a/WebContent/swf10/base/functions.lzx b/WebContent/swf10/base/functions.lzx
new file mode 100644
index 0000000..14dffd5
--- /dev/null
+++ b/WebContent/swf10/base/functions.lzx
@@ -0,0 +1,62 @@
+<?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.
+  
+-->
+<library>
+
+
+<!-- 
+
+NOTICE:
+All contents regarding "chat" are moved to /modules/chat/globalMethods.lzx
+Issue353. 2008.3.28 H.kuze(minamotonoason)
+
+-->
+
+
+<script>
+<![CDATA[
+
+// Load Labels from List
+var labels = new Object();
+
+String.prototype.startsWith = function(prefix) {
+    return (this.indexOf(prefix) === 0);
+};	
+
+function setLabelObjectByHundred(no, obj){
+   	for (var i = 0; i < obj.length; ++i) {
+	    labels["id" + obj[i].id] = obj[i].value;
+   	}
+}
+
+function getLabelTag(labelid){
+	var l = labels["id" + labelid];
+	if (l != undefined) {
+		if ($debug) l += " [" + labelid + "]";
+	} else {
+		l = "Error Missing [" + labelid + "]";
+	}
+    return l;
+}
+
+]]>
+</script>
+		
+</library>
diff --git a/WebContent/swf10/base/hibernate/hibRtmpConnection.lzx b/WebContent/swf10/base/hibernate/hibRtmpConnection.lzx
new file mode 100644
index 0000000..307cffd
--- /dev/null
+++ b/WebContent/swf10/base/hibernate/hibRtmpConnection.lzx
@@ -0,0 +1,79 @@
+<?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.
+  
+-->
+<library>
+    
+<dataset name="myresultnavi" />
+
+<dataset name="languagesSet" />        
+
+<class name="userStatus" extends="view" width="250" height="30">
+    <attribute name="statusText" type="string" />
+    <attribute name="statusColor" type="number" value="0" />
+
+    <text name="status" width="240" height="20" x="5" y="5" fontstyle="bold" fgcolor="0" text="defaulttext" fontsize="10"/>
+
+    <handler name="oninit">
+        this.status.setAttribute("text", this.statusText);
+        this.status.setAttribute("fgcolor", this.statusColor);
+        this.setAttribute("visibility", "visible");
+        lz.Timer.addTimer( new LzDelegate( this, "selfDestroy" ), 3000 );
+    </handler>
+
+    <method name="selfDestroy" args="ignore=null">
+        this.destroy();
+    </method>
+</class>
+
+<class name="hibRtmpConnection" extends="rtmpConnection" debug="false" src="" >
+
+     <!--
+        The onconnect Method is triggered several times:
+             - When you enter a room the NetConnection will close and reconnect to the Scope of the Room
+             - When you leave the room again it will be re-connected to the default scope again
+      -->
+     <handler name="onconnect">
+		if($debug) Debug.info("hibRtmpConnection/onconnect send to LocalConnection ");
+		canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'as3ConnectionSuccess');
+		
+		//reset rights
+        canvas.isAllowedToGiveExclusiveAudio = false;
+        // this.overwritePublicSID.doCall();
+        //this.setUsernameReconnect.doCall();
+    </handler>
+
+    <netRemoteCallHib name="overwritePublicSID" funcname="overwritePublicSID" >
+    	<netparam><method name="getValue"> return canvas.publicSID;</method></netparam>
+        <handler name="ondata" args="value">
+            //The onResult-Handler will be called be the rtmpconnection
+            if ($debug) Debug.write("overwritePublicSID: ",value);
+        </handler>
+    </netRemoteCallHib>
+
+    <handler name="onerror" args="value">
+        if ($debug) Debug.write("Connection error ",value);
+        // this.connect();
+    </handler>
+    
+</class>
+
+<hibRtmpConnection name="thishib" id="hib" />
+
+</library>
diff --git a/WebContent/swf10/base/hibernate/library.lzx b/WebContent/swf10/base/hibernate/library.lzx
new file mode 100644
index 0000000..78d99f9
--- /dev/null
+++ b/WebContent/swf10/base/hibernate/library.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+	<include href="netRemoteCallHib.lzx" />
+	<include href="hibRtmpConnection.lzx" />
+
+</library>
diff --git a/WebContent/swf10/base/hibernate/netRemoteCallHib.lzx b/WebContent/swf10/base/hibernate/netRemoteCallHib.lzx
new file mode 100644
index 0000000..bf28b46
--- /dev/null
+++ b/WebContent/swf10/base/hibernate/netRemoteCallHib.lzx
@@ -0,0 +1,86 @@
+<?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.
+  
+-->
+<library>
+
+<class name="netRemoteCallHib" extends="netremotecall">
+
+	<!-- this should be the contentSaveWindow -->
+	<attribute name="returnObj" value="null" />
+	 
+	<!-- if true this object will register at the update-observer -->
+	<attribute name="registerObject" value="false" type="boolean" />
+	
+	<!-- show Error Messages with normal Box -->
+    <attribute name="activeErrorHandler" value="false" type="boolean" />	
+    
+	<!-- show Error Messages with normal Box -->
+    <attribute name="showLoading" value="true" type="boolean" />    
+	
+	<!-- show Error Messages with Callback Box -->
+	<attribute name="isCallBackHandler" value="false" type="boolean" />	
+	
+	<handler name="oninit">
+		if (this.registerObject) this.parent.addViewToObserver(this);
+	</handler>	
+	<method name="doCall">
+        //if (this.showLoading) canvas._loadingAll.setAttribute('visible',true);
+		//if($debug) Debug.write("netRemoteCallHib/doCall: [ " , this.funcname , " ]",this.parent);
+		this.callRPC(null);
+	</method>
+	
+	<event name="sendCallBack" />
+	
+	<!--
+
+	 -->
+	<handler name="ondata" args="value">
+		<![CDATA[
+			//Debug.write("ondata: ",this.funcname,value);
+			
+			//if (this.showLoading) canvas._loadingAll.setAttribute('visible',false);
+			
+			//Another Error Handler for the Form-Components
+			if (this.returnObj!=null && Number(value)>0) {
+				//Debug.write("this.returnObj.processNext");
+				this.returnObj.processNext();
+			} else if (this.returnObj!=null && Number(value)<0) {
+				this.returnObj.errorByCode(Number(value));
+			} else if (this.returnObj!=null && value==null) {
+				this.returnObj.errorByCode(-1);
+			}
+			
+            if (this.activeErrorHandler) {
+                if (Number(value)<0){
+                    if ($debug) Debug.warn("Received Error ID: ",value);					
+					if (this.isCallBackHandler) 
+					{
+					   //TODO: Fix error messages
+					   
+					} else {
+					   //TODO: Fix error messages
+					}
+                }
+            }			
+		]]>
+	</handler>	
+</class>
+
+</library>
diff --git a/WebContent/swf10/base/library.lzx b/WebContent/swf10/base/library.lzx
new file mode 100644
index 0000000..cde16f9
--- /dev/null
+++ b/WebContent/swf10/base/library.lzx
@@ -0,0 +1,32 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="functions.lzx" />
+    <include href="mainAttributes.lzx" />
+    <include href="mainDatasets.lzx" />
+    <include href="mainMethods.lzx" />
+    
+    <include href="remote/" />
+    <include href="components/" />
+    <include href="hibernate/" />
+	
+</library>
diff --git a/WebContent/swf10/base/mainAttributes.lzx b/WebContent/swf10/base/mainAttributes.lzx
new file mode 100644
index 0000000..837e01b
--- /dev/null
+++ b/WebContent/swf10/base/mainAttributes.lzx
@@ -0,0 +1,133 @@
+<?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.
+  
+-->
+
+<!-- all attributes for main.lzx -->
+
+<library>
+	
+	<!--- 
+	   Audio-Video Quality Settings
+		overwritten by values from the public/config.xml 
+	 -->
+	<attribute name="codecType" value="h264" type="string" />
+	<attribute name="framesPerSecond" value="30" type="number" />
+	<attribute name="bandwidthNeededNormal" value="16384" type="number" />
+	<attribute name="bandwidthNeededBest" value="32768" type="number" />
+	<attribute name="camQualityNormal" value="75" type="number" />
+	<attribute name="camQualityBest" value="75" type="number" />
+	<attribute name="microphoneRateBest" value="22" type="number" /> 
+	<attribute name="echoPath" value="128" type="number" /> 
+	<attribute name="echoSuppression" value="true" type="string" />
+		
+
+	<!--- 
+        Holds a reference to the current VideoCOntainer Object
+        containing the VideoViews
+        and some more references to temp-objects
+	 -->
+	<attribute name="_videocontainer" value="null" />
+
+	<attribute name="currentNC" value="null" />
+
+	<attribute name="currentRoomObject" value="null"/>
+
+	<attribute name="userobject" value="null"/>
+
+	<attribute name="webAppRootKey" value="" type="string" />
+	
+	<!--- 
+		URL/IP to use for the Server for HTTP and HTTPS traffic.
+	    If this value is empty it will use the rtmphostlocal 
+	    variable (and in that way try to connect to the 
+	    domain-name the OpenMeetings-Client has been loading from)
+	 -->
+	<attribute name="httphostlocal" value="" type="string" />
+	
+	<!--- 
+	    Port to use for the Server
+	    This port is used to connect to the HTTP-Servlet
+	    of the Red5-Servlet
+	 -->
+	<attribute name="red5httpport" value="5080" type="string" />
+
+	<attribute name="httpRootKey" value="/" type="string" />
+	
+	<attribute name="protocol" value="/" type="string" />
+	
+	<attribute name="proxyType" value="none" type="string" />
+
+	<!---
+		A reference to the current screenSharingDialogContainer or 
+		null if there is nothing to stream
+	 -->
+	<attribute name="screenSharingDialogContainer" value="null" />
+	
+	<!--
+	    this value indicates if this user is allowed to draw to the Whiteboard
+	    If this user is currently Moderator => he ALWAYS can draw to whiteboard
+	    even if this isAllowedToDraw == false
+	 -->
+	<attribute name="isAllowedToDraw" value="false" type="boolean" />
+	
+	<attribute name="isAllowedToScreenShare" value="false" type="boolean" />
+	
+	<attribute name="isAllowedToRemoteControl" value="false" type="boolean" />
+	
+	<attribute name="isAllowedToGiveExclusiveAudio" value="false" type="boolean" />
+	
+	<attribute name="ismoderator" value="false" type="boolean" />
+	
+	<attribute name="isInterview" value="false" type="boolean" />
+	
+	<!--
+	   Those values are fixed values of the video positions of the videos from the interview room type
+	 -->
+	<attribute name="interviewPod1_x" value="320" type="number" />
+	<attribute name="interviewPod1_y" value="28" type="number" />
+	
+	<attribute name="interviewPod2_x" value="644" type="number" />
+    <attribute name="interviewPod2_y" value="28" type="number" />
+    
+    <!-- 
+		Holds a reference to the current tooltip, if there is one
+	 -->
+	<attribute name="currentToolTip" value="null" />
+	
+	<!-- Attributes for wicket login (since it hard not to break anything)-->
+	<attribute name="wicketsid" type="string" />
+	<attribute name="wicketroomid" value="0" type="number" />
+	
+	
+	<method name="registerToolTip" args="viewInstance">
+		if (this.currentToolTip != null) {
+			this.currentToolTip.cleanHolder();
+		}
+		this.currentToolTip = viewInstance;
+	</method>
+	
+	<method name="clearToolTip">
+		if (this.currentToolTip != null) {
+			this.currentToolTip.cleanHolder();
+			this.currentToolTip = null;
+		}
+	</method>
+
+</library>
diff --git a/WebContent/swf10/base/mainDatasets.lzx b/WebContent/swf10/base/mainDatasets.lzx
new file mode 100644
index 0000000..a51a092
--- /dev/null
+++ b/WebContent/swf10/base/mainDatasets.lzx
@@ -0,0 +1,66 @@
+<?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.
+  
+-->
+
+<!-- all datasets for main.lzx -->
+
+<library>
+
+<!-- get values from public/config.xml -->
+<dataset type="http" name="myConfigSet" request="false" ondata="parent.mainTheme.loadTheme()" proxied="false">
+    <handler name="oninit">
+        var d = new Date();
+        this.setAttribute("src","config.xml?random="+d.getTime());
+        this.doRequest();
+    </handler>
+    <handler name="ondata">
+        if ($debug) Debug.write("ondata");
+    </handler>
+    <handler name="onerror" args="e">
+        if ($debug) Debug.write("onerror",e);
+    </handler>
+    <handler name="ontimeout" args="e">
+        if ($debug) Debug.write("ontimeout",e);
+    </handler>
+</dataset>
+
+<method name="reloadConfig">
+	
+</method>
+
+<!-- get values from public/config.xml -->
+<dataset type="http" name="mainTheme" request="false" ondata="canvas.myinit()" proxied="false">
+    <method name="loadTheme">
+        var d = new Date();
+        this.setAttribute("src","theme.xml?random="+d.getTime());
+        this.doRequest();
+    </method>
+    <handler name="ondata">
+        if ($debug) Debug.write("ondata");
+    </handler>
+    <handler name="onerror" args="e">
+        if ($debug) Debug.write("onerror",e);
+    </handler>
+    <handler name="ontimeout" args="e">
+        if ($debug) Debug.write("ontimeout",e);
+    </handler>
+</dataset>
+
+</library>
diff --git a/WebContent/swf10/base/mainMethods.lzx b/WebContent/swf10/base/mainMethods.lzx
new file mode 100644
index 0000000..8e20f88
--- /dev/null
+++ b/WebContent/swf10/base/mainMethods.lzx
@@ -0,0 +1,117 @@
+<?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.
+  
+-->
+
+<!-- methods for main.lzx -->
+
+<library>
+    
+    <method name="onError" args="errorEvent">
+		canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'remoteLogWrite', "error " + errorEvent);
+	</method>
+    
+    <method name="myinit">
+        <![CDATA[
+        // Add listener to all uncaught flash errors
+        this.getDisplayObject().loaderInfo.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onError);
+        
+        canvas.mediaerrortimeout = 30000;
+        canvas.medialoadtimeout = 30000;
+        
+        if($debug) Debug.write("main.lzx/config.xml ondata",this);
+        
+        //Audio-Video-Settings
+        this.setAttribute('loudnessAcitviation',canvas.myConfigSet.getPointer().xpathQuery('config/loudnessAcitviation/text()'));
+        this.setAttribute('codecType',canvas.myConfigSet.getPointer().xpathQuery('config/codecType/text()'));
+        this.setAttribute('framesPerSecond',Number(canvas.myConfigSet.getPointer().xpathQuery('config/framesPerSecond/text()')));  
+        this.setAttribute('bandwidthNeededNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededNormal/text()')));  
+        this.setAttribute('bandwidthNeededBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/bandwidthNeededBest/text()')));  
+        this.setAttribute('camQualityNormal',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityNormal/text()')));  
+        this.setAttribute('camQualityBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/camQualityBest/text()')));  
+        this.setAttribute('microphoneRateBest',Number(canvas.myConfigSet.getPointer().xpathQuery('config/microphoneRateBest/text()')));  
+        this.setAttribute('echoPath',Number(canvas.myConfigSet.getPointer().xpathQuery('config/echoPath/text()')));
+        this.setAttribute('echoSuppression',canvas.myConfigSet.getPointer().xpathQuery('config/echoSuppression/text()'));
+        
+        //httphostlocal variable is loaded from the SWF8 application, cause it needs value, SWF10 app
+        //knows nothing about the rtmphostlocal, and we don't want to parse the URL from the browser
+        //in both applications to find out where the user loaded the SWF from and extract the domain/ip 
+        //from it
+        
+        this.setAttribute('httpRootKey',canvas.myConfigSet.getPointer().xpathQuery('config/httpRootKey/text()'));
+        this.setAttribute('protocol',canvas.myConfigSet.getPointer().xpathQuery('config/protocol/text()')); 
+        this.setAttribute('proxyType',canvas.myConfigSet.getPointer().xpathQuery('config/proxyType/text()'));  
+
+        var _url = this.getDisplayObject().loaderInfo.url;
+        if($debug) Debug.write("_url: ",_url);
+        
+        ]]>
+    </method>
+    
+    <method name="getLabelName" args="id">
+    	// return "label "+id;
+        //if($debug) Debug.write("main.lzx/getLabelName()",id);
+        return getLabelTag(id);
+    </method>
+    
+    <method name="getThemeImage" args="tName">
+		if ($debug) Debug.write("load Image by Name SWF10: ",tName);
+		var tPath = canvas.mainTheme.getPointer().xpathQuery("theme/resource[@name='"+tName+"']/@src");
+		if ($debug) Debug.write("tPath SWF10 "+tPath);
+		return tPath;
+	</method>
+	
+	<method name="getThemeColor" args="tColor">
+		if ($debug) Debug.write("load Color by Name SWF10: ",tColor);
+		var tColor = canvas.mainTheme.getPointer().xpathQuery("theme/color[@name='"+tColor+"']/@value");
+		if ($debug) Debug.write("tColor SWF10 "+tColor);
+		return tColor;
+	</method>
+	
+	<!-- 
+		httphostlocal is synced from the SWF8 application, it will always point to the master
+	 -->
+	<method name="getHttpHost">
+		return canvas.httphostlocal;
+    </method>
+	
+	<method name="getUrl">
+		<![CDATA[
+			return canvas.protocol + '://' + getHttpHost()
+				+ ':' + canvas.red5httpport + canvas.httpRootKey;
+		]]>
+	</method>
+    
+	<method name="getPictureUrl" args="pictureuri,extraParams">
+	<![CDATA[
+		var pUri = (pictureuri == null || pictureuri.length == 0) ? "d.jpg" : pictureuri;
+		var downloadurl = pUri;
+		if (!pUri.startsWith("http://") && !pUri.startsWith("https://")) {
+			pUri = "_profile_" + pUri;
+			
+			downloadurl = canvas.getUrl() + 'DownloadHandler?fileName=' + pUri
+				+ '&room_id=&r=' + (new Date()).getTime()
+				+ extraParams + '&sid='+canvas.sessionId;
+		}
+		if($debug) Debug.write("getPictureUrl/downloadurl ", downloadurl);
+		return downloadurl;
+	]]>
+	</method>
+		
+</library>
diff --git a/WebContent/swf10/base/remote/baseVideoStream.lzx b/WebContent/swf10/base/remote/baseVideoStream.lzx
new file mode 100644
index 0000000..13df059
--- /dev/null
+++ b/WebContent/swf10/base/remote/baseVideoStream.lzx
@@ -0,0 +1,381 @@
+<library>
+<!--
+  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.
+  
+-->
+
+<!---
+	extends the Video-View with Streaming functions
+ -->
+
+<class name="baseVideoStream" extends="baseVideoView">
+
+    <switch>
+    <when property="$as3">
+        <passthrough>
+        	import flash.events.*;
+            import flash.net.*;
+            import flash.media.*
+        </passthrough>
+    </when>
+    </switch>
+    
+    <attribute name="yDebug" value="-20" type="number" />
+    
+    <method name="getYDebug">
+    	this.yDebug += 20;
+    	return this.yDebug;
+    </method>
+
+	<!--- the NetStream Object
+              @keywords final -->
+	<attribute name="_ns" value="null" />
+
+	<!--- This value does indicate if this stream play or broadcasts
+              @keywords readonly -->
+	<attribute name="mode" value="play" type="string" />
+
+	<!--- This is the current buffer used, in Live Streaming this MUST be 0
+              @keywords readonly -->
+	<attribute name="bufferTime" value="0" type="number" />
+
+	<!--- This is a reference to the current microphone, only set if broadcasting
+              @keywords readonly -->
+	<attribute name="micro" value="null" />
+
+	<!--- This is a reference to the current camara, only set if broadcasting
+              @keywords readonly -->
+	<attribute name="camera" value="null" />
+
+	<!--- Reference To the Sound Object
+		@keywords final -->
+	<attribute name="soundRef" value="null" />
+	<!--- Reference To the Sound MovieClip
+		@keywords final -->
+	<attribute name="soundRefMC" value="null" />
+
+    <!--- Default mic gain -->
+    <attribute name="micGain" value="50" type="number"/>
+    
+    <attribute name="micMuted" value="false" />
+
+	<event name="onMetaDataEvent" />
+	<event name="onPlayStatusEvent" />
+	<event name="onCuePointEvent" />
+	<event name="onAsyncError" />
+	<event name="onNetStatus" />
+	<event name="onIoError" />
+
+	<!-- save value for restart -->
+        <attribute name="streamName" />
+        <attribute name="delay" />
+	<!--- @keywords private -->
+	<method name="createStream">
+		var tStream = this._findnc();
+        if (!tStream.connected) {
+        	if ($debug) Debug.warn("NetConnection is not connected");
+        }
+		this._ns = new NetStream(tStream);
+		//see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
+        //according to the docs the construct to catch event has to be implemented like this.
+        var t = this;
+		var clientObject = new Object();
+		clientObject.onMetaData = function(metadata:Object):void {
+			t.onMetaData(metadata);
+		};
+		clientObject.onPlayStatus = function(metadata:Object):void {
+			t.onPlayStatus(metadata);
+		};
+		clientObject.onCuePoint = function(metadata:Object):void {
+			t.onCuePoint(metadata);
+		};
+		clientObject.ioError = function(error:Object):void {
+			t.ioError(error);
+		};
+		clientObject.netStatus = function(status:Object):void {
+			t.netStatus(status);
+		};
+		clientObject.asyncError = function(error:Object):void {
+			t.asyncError(error);
+		};
+		this._ns.client = clientObject;
+		//this is a workaround, attaching the event to the client object does not work
+		this._ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus2);
+	</method>
+	
+	<method name="onNetStatus2" args="evt">
+		if($debug) Debug.write("netStream_onNetStatus: " , evt.info.code, evt.target);
+		this.onNetStatus.sendEvent(evt.info);
+	</method>
+	
+	<method name="asyncError" args="error">
+		if($debug) Debug.write("simpleNetStream asyncError",error);
+		this.onAsyncError.sendEvent(error);
+	</method>
+	
+	<method name="netStatus" args="status">
+		if($debug) Debug.write("simpleNetStream netStatus",status);
+		this.onNetStatus.sendEvent(status);
+	</method>
+	
+	<method name="ioError" args="error">
+		if($debug) Debug.write("simpleNetStream ioError",error);
+		this.onIoError.sendEvent(error);
+	</method>
+
+    <method name="onCuePoint" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onCuePoint",info);
+        this.onCuePointEvent.sendEvent(info);
+    ]]></method>
+
+    <method name="onPlayStatus" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onPlayStatus",info);
+        this.onPlayStatusEvent.sendEvent(info);
+    ]]></method>
+
+    <method name="onMetaData" args="info"><![CDATA[
+        if($debug) Debug.write("simpleNetStream onMetaData",info);
+        this.onMetaDataEvent.sendEvent(info);
+    ]]></method>
+
+    <!--- Find the Flash NetConnection object.
+          @keywords private -->
+    <method name="_findnc">
+    	if (canvas.currentNC == null) {
+    		if ($debug) Debug.warn("canvas.currentNC is NULL, maybe connection did fail?");
+    	}
+        return canvas.currentNC;
+    </method>
+
+	<!---
+		Plays a Video Stream, makes a new Instance of a NetStream, if previous NetStream
+		is still open it will first close that, used to subscribe to a live-stream
+		@param string streamName the streamname to play
+		@param number delay The time it should seek, for Live-Streams this value should be -1
+	 -->
+	<method name="playStream" args="streamName,delay">
+		<![CDATA[
+			this.streamName=streamName;
+			this.delay=delay;
+			if (this._ns!=null){
+				this._stop();
+			}
+			this.mode = "play";
+			this.createStream();
+			//invokes Method in baseVideoView which shows the stream
+			this.attachVideo(this._ns);
+			//FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
+			//after re-syncing the stream
+			//this.setBuffer(0.1);
+			if (delay == 0) {
+			    this._ns.play(streamName);
+			} else {
+			    this._ns.play(streamName,delay);
+			}
+		]]>
+	</method>
+
+	<method name="justPlayStream" args="streamName,delay">
+        <![CDATA[
+            this.streamName=streamName;
+            this.delay=delay;
+            if (this._ns!=null){
+            	if ($debug) Debug.write("STOP NS is NOT null ")
+                this._stop();
+            }
+            this.mode = "play";
+            this.createStream();
+            //invokes Method in baseVideoView which shows the stream
+            this.attachVideo(this._ns);
+            //FIXME: Commented out, cause this leads to Buffer-Full/Buffer-Empty Events
+            //after re-syncing the stream
+
+            this.setBuffer(6);
+
+            if ($debug) Debug.write("Play Stream "+streamName);
+
+            this._ns.play(streamName,delay);
+        ]]>
+    </method>
+
+	<method name="prepare" args="mode,streamName,camReference,micReference">
+		if (this._ns != null){
+			this._stop();
+		}
+		this.mode = mode;
+		this.createStream();
+		
+		if (camReference != null) {
+			this.setAttribute('camera', camReference);
+			this._ns.attachCamera(camReference);
+			//invokes Method in baseVideoView which shows the cam
+			this.attachCamera(camReference);
+			
+			var videoStreamSettings = null;
+			if ($debug) Debug.write("codecType=" + canvas.codecType);
+			if (canvas.codecType === "h264") {
+				videoStreamSettings = new H264VideoStreamSettings();
+				videoStreamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_5_1);
+			} else {
+				videoStreamSettings = new VideoStreamSettings();
+			}
+			videoStreamSettings.setQuality(camReference.bandwidth, camReference.quality);
+			videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
+			if ($debug) Debug.write("::keyFrameInterval " + camReference.keyFrameInterval);
+			videoStreamSettings.setMode(camReference.width, camReference.height, camReference.fps);
+			this._ns.videoStreamSettings = videoStreamSettings;
+		}
+		if (micReference != null) {
+			this.setAttribute('micro', micReference);
+			this._ns.attachAudio(micReference);
+			muteMicro(this.micMuted);
+		}
+		
+		this._ns.publish(streamName, (mode == "broadcast") ? "live" : mode);
+	</method>
+	<!---
+		BroadCasts a Stream
+		@param string streamName the streamname to broadcast
+		@param camera camReference a reference to the Camera-Object to stream
+		@param micropone micReference a reference to the Micropohne Object to stream
+	 -->
+	<method name="broadcast" args="streamName,camReference,micReference">
+		prepare("broadcast", streamName, camReference, micReference);
+	</method>
+
+	<method name="record" args="streamName,camReference,micReference">
+		prepare("record", streamName, camReference, micReference);
+    </method>
+    
+	<!---
+		Stops playing or broadcasting a Stream and clears the Video-Object
+	 -->
+	<method name="_stop">
+		if ($debug) Debug.write("STOP: ",this.mode,this._ns);
+		//Stop NetStream
+		if (this._ns==null) return;
+		this.camera = null;
+		this.micro = null;
+		if (this.mode == "play") {
+            this.soundRefMC = null;
+			this.soundRef = null;
+			this._ns.pause();
+			this._ns.close();
+			//remove NetStream from Video-Object
+			this.clear();
+			this._ns = null;
+		} else if (this.mode == "broadcast") {
+            this._ns.publish(false);
+            //remove NetStream from Video-Object
+            this.clear();
+            this._ns.close();
+            this._ns = null;
+        } else if (this.mode == "record") {
+            this._ns.publish(false);
+            //remove NetStream from Video-Object
+            this.clear();
+            this._ns.close();
+            this._ns = null;
+        } else {
+            this.clear();
+            this._ns.close();
+            this._ns = null;
+			if ($debug) Debug.warn("Not known Mode: ",this.mode,this);
+		}
+	</method>
+
+	<method name="restart">
+	     this._stop();
+	     this.playStream(this.streamName ,this.delay);
+	</method>
+	
+	<method name="setBuffer" args="time">
+	    if ($debug) Debug.warn("setBuffer has no 1:1 equivalent in AS3 ");
+	    return;
+		if(this._ns!=null){
+			this.bufferTime = time;
+			this._ns.setBufferTime(time);
+		} else {
+			if ($debug) Debug.warn("setBuffer but no NetStream initialized",this);
+		}
+	</method>
+
+	<!--- sets the Volume of the VideoStream
+		@param number volume Number between 0 and 100
+	 -->
+	<method name="setSoundVolume" args="volume">
+		//if ($debug) Debug.write(":: setSoundVolume ", parent.parent.publicSID);
+		//this.soundRef.setVolume(volume);
+		if (this._ns!=null){
+			this._ns.soundTransform = new SoundTransform(volume/100.0);
+		}
+	</method>
+
+	<method name="muteMicro" args="mute">
+		if ($debug) Debug.write(":: muteMicro ", mute, parent.parent.publicSID);
+		this.micMuted = mute;
+		if(this.micro != null) {
+			if(mute) {
+				if (this.micro.gain == 0) {
+					return;
+				}
+				if ($debug) Debug.write("Make Gain mute again from ",this.micro.gain);
+				this.setAttribute('micGain', this.micro.gain);
+				this.micro.gain = 0;
+			} else {
+				if ($debug) Debug.write("Make Gain loud again to ",this.micGain);
+				this.micro.gain = this.micGain;
+			}
+		}
+	</method>
+    
+    <!---
+        pause or resumes the NetStream
+        @args pauseStatus true pause, false resume
+     -->
+    <method name="pause" args="pauseStatus">
+    	if ($debug) Debug.write("do Pause",pauseStatus);
+    	if (this._ns==null){
+    		if ($debug) Debug.warn("No NetStream");
+    		return;
+    	}
+    	if (pauseStatus) {
+    		this._ns.pause();
+    	} else {
+    		this._ns.resume();
+    	}
+    </method>
+    
+    <!---
+        Seek the stream to a flvTime
+        this might only work if there are keyframes in the FLV, normally it should 
+        try to use the nearest keyframe available for the specified time.
+     -->
+    <method name="seekStream" args="flvTime">
+    	if ($debug) Debug.write("do seek",flvTime);
+        if (this._ns==null){
+            if ($debug) Debug.warn("No NetStream");
+            return;
+        }
+        this._ns.seek(flvTime);
+    </method>
+
+</class>
+
+
+</library>
diff --git a/WebContent/swf10/base/remote/baseVideoStreamDevice.lzx b/WebContent/swf10/base/remote/baseVideoStreamDevice.lzx
new file mode 100644
index 0000000..b0a939b
--- /dev/null
+++ b/WebContent/swf10/base/remote/baseVideoStreamDevice.lzx
@@ -0,0 +1,171 @@
+<library>
+	<!-- 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. -->
+
+	<!--- extends the baseVideoStream with functions to catch Device Events 
+		this Class uses Events from the Base Class baseVideoStream onmicro and oncamera, 
+		which are thrown, once a device was set -->
+
+	<class name="baseVideoStreamDevice" extends="baseVideoStream">
+
+		<switch>
+			<when property="$as3">
+				<passthrough>
+					import flash.events.StatusEvent;
+					import flash.events.ActivityEvent;
+				</passthrough>
+			</when>
+		</switch>
+
+		<!--- Shows if there is Activity on the Microphone -->
+		<attribute name="micactive" value="false" type="boolean" />
+
+		<!--- Level delegate, used to track level changes.
+			@keywords private -->
+		<attribute name="_leveldel"
+			value="$once{new LzDelegate(this, '_updateLevel')}" />
+
+		<!--- Audio level, 0-100, the amount of sound detected by this microphone. 
+			Reset to 0 when there is no audio (no activity or not allowed).
+			@keywords readonly -->
+		<attribute name="level" type="number" value="0" />
+
+		<!--- Shows if there is Activity on the Camera -->
+		<attribute name="camactive" value="false" type="boolean" />
+
+		<!--- Message to send to Clients -->
+		<attribute name="objMessage" value="null" />
+		<!--- indicates if the message should be send, you can change the notification 
+			level by changing the loudnessAcitviation in the public/config.xml -->
+		<attribute name="isgreater" value="false" type="boolean" />
+
+		<attribute name="doSendNotification" value="true" type="boolean" />
+
+		<!--- If true the component will send an event via LocalConnection when 
+			sound is louder or less 5% -->
+		<attribute name="sendNotificationViaLocalConnection" value="true"
+			type="boolean" />
+
+		<event name="sendCameraStatus" />
+
+		<event name="sendMicroStatus" />
+
+		<handler name="oncamera" args="c">
+			//if ($debug) Debug.write("Cam: ",c);
+			c.addEventListener(ActivityEvent.ACTIVITY, onActivity);
+			c.addEventListener(StatusEvent.STATUS, onStatus);
+		</handler>
+
+		<method name="onStatus" args="stats">
+			if ($debug) Debug.write("CamStatus: ",stats);
+			this.sendCameraStatus.sendEvent(stats.code);
+		</method>
+
+		<method name="onActivity" args="event">
+			this.setAttribute("camactive", event.activating);
+		</method>
+
+		<handler name="onmicro" args="m">
+			//if ($debug) Debug.write("onmicro: ",m);
+			var t = this;
+			//send mic active to true to start the onActivity callback Idle job
+			this.setAttribute("micactive", true);
+			m.addEventListener(ActivityEvent.ACTIVITY, onMicActivity);
+			m.addEventListener(StatusEvent.STATUS, onMicStatus);
+		</handler>
+
+		<method name="onMicStatus" args="stats">
+			if ($debug) Debug.write("onMicStatus 1: ",stats);
+			this.sendMicroStatus.sendEvent(stats.code);
+		</method>
+
+		<method name="onMicActivity" args="event">
+			if ($debug) Debug.write("onMicActivity: ",event);
+		</method>
+
+		<!--- Handler for the Flash Microphone onActivity callback.
+			@keywords private -->
+		<handler name="onmicactive">
+		<![CDATA[
+			if (this.onlevel) {
+				if (this.micactive) {
+					this._leveldel.register(lz.Idle, "onidle");
+				} else {
+					this._leveldel.unregisterAll();
+					this.setAttribute("level", 0);
+				}
+			}
+		]]>
+		</handler>
+
+		<!--- Handler for updating the microphone activity level attribute.
+			@keywords private -->
+		<method name="_updateLevel" args="arg">
+		<![CDATA[
+			if (this.micro == null) {
+				return;
+			}
+			var level = this.micro.activityLevel;
+			if (level < 0) {
+				level = 0;
+			}
+
+			if (level != this.level) {
+				this.setAttribute("level", level);
+			}
+		]]>
+		</method>
+
+		<!-- these methods send a Notification to all Connected users of a Room 
+			about the onActivity-Change -->
+		<handler name="onlevel" args="level">
+		<![CDATA[
+			//if ($debug) Debug.write("onlevel ",this.level,level);
+			
+			if (!this.doSendNotification) {
+				return;
+			}
+			
+			//greater 5 means the green dot starts to blink if the loudness is greater then 5%
+			//it makes no sense to set this to zero as there will be 1000 of events send
+			//per minute to change the status just of this icon, swagner 12.02.2012
+			var tVal = (level > 8);
+			
+			if (this.isgreater != tVal) {
+				//if ($debug) Debug.write("Level sendNotification ",this.isgreater,tVal,level);
+				this.isgreater = tVal;
+				this.sendNotification();
+			}
+		]]>
+		</handler>
+
+		<method name="sendNotification">
+			//if ($debug) Debug.write("Level sendNotification ",this.isgreater);
+			if (!this.sendNotificationViaLocalConnection) {
+				return;
+			}
+			if (parent.parent._loudness != null) {
+				parent.parent._loudness.setSpeaking(this.isgreater);
+			}
+			this.objMessage = new Array ();
+			this.objMessage[0] = 'audioActivity';
+			this.objMessage[1] = this.isgreater;
+			this.objMessage[2] = parent.parent.publicSID;
+			//if ($debug) Debug.write("Level sendNotification ",this.objMessage);
+			this.sendMessage.doCall();
+		</method>
+
+		<netRemoteCallHib name="sendMessage" funcname="sendMessage"
+			remotecontext="$once{ canvas.thishib }" showLoading="false">
+			<netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam>
+		</netRemoteCallHib>
+	</class>
+</library>
diff --git a/WebContent/swf10/base/remote/baseVideoView.lzx b/WebContent/swf10/base/remote/baseVideoView.lzx
new file mode 100644
index 0000000..097a53a
--- /dev/null
+++ b/WebContent/swf10/base/remote/baseVideoView.lzx
@@ -0,0 +1,102 @@
+<library>
+<!--
+  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.
+  
+-->
+
+
+<!---
+	This class provides the basic functions for the video-output
+
+	    @START_CODE
+            <baseVideoView x="20" y="20" width="320" height="240" bgcolor="black" />
+        @END_CODE
+ -->
+
+<class name="baseVideoView" width="${parent.width}" height="${parent.height}">
+
+    <passthrough when="$as3">
+        import flash.media.*;
+        import flash.net.NetConnection;
+        import flash.net.NetStream;
+    </passthrough>
+
+    <attribute name="_sound" value="null"/>
+    <attribute name="__LZvideo" value="null"/>
+
+	<method name="init"><![CDATA[
+        super.init();
+        var mc = new Video(this.width, this.height);
+        this.sprite.addChild(mc);
+        this.__LZvideo = mc;
+        this.applySizeToVid();
+    ]]></method>
+
+	<method name="applySizeToVid">
+		var vid = this._getflashvideo();
+        if(vid != null) {
+            vid.width = this.width;
+            vid.height = this.height;
+        } else {
+            if ($debug) Debug.warn("applySizeToVid IS NULL ",this.width,this.height);
+        }
+	</method>
+
+    <handler name="onwidth" args="w">
+    	//if ($debug) Debug.info("onwidth ",this.width,this.height);
+        this.applySizeToVid();
+    </handler>
+
+    <handler name="onheight" args="h">
+    	//if ($debug) Debug.info("onheight ",this.width,this.height);
+        this.applySizeToVid();
+    </handler>
+
+	<method name="_getflashvideo">
+	<![CDATA[
+		if (__LZvideo == null) {
+			init();
+		}
+		//if ($debug) Debug.write("_getflashvideo()");
+		return this.__LZvideo;
+	]]>
+	</method>
+
+    <method name="attachCamera" args="camera">
+        var vid = this._getflashvideo();
+    	vid.attachCamera(camera);
+    </method>
+
+    <!--- shows the Video (NetStream) in the View -->
+    <method name="attachVideo" args="video">
+    	var vid = this._getflashvideo();
+    	vid.attachNetStream(video);
+    </method>
+
+	<method name="clear">
+	    if ($debug) Debug.write("Select unattach :3");
+		var vid = this._getflashvideo();
+		vid.attachNetStream(null);
+		vid.attachCamera(null);
+		this.__LZvideo.clear();
+		if ($debug) Debug.write("Select unattach : 4");
+	</method>
+</class>
+
+
+</library>
diff --git a/WebContent/swf10/base/remote/library.lzx b/WebContent/swf10/base/remote/library.lzx
new file mode 100644
index 0000000..18b8cb8
--- /dev/null
+++ b/WebContent/swf10/base/remote/library.lzx
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- new Library -->
+	<include href="baseVideoView.lzx" />
+	<include href="baseVideoStream.lzx" />
+	<include href="baseVideoStreamDevice.lzx" />
+	<include href="rtmpConnection.lzx" />
+	<include href="sharedObject.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/base/remote/rtmpConnection.lzx b/WebContent/swf10/base/remote/rtmpConnection.lzx
new file mode 100644
index 0000000..1cfb69f
--- /dev/null
+++ b/WebContent/swf10/base/remote/rtmpConnection.lzx
@@ -0,0 +1,375 @@
+<library>
+<!--
+  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.
+  
+-->
+
+
+<class name="rtmpConnection" extends="node">
+
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.net.NetConnection;
+                    import flash.events.NetStatusEvent;
+                </passthrough>
+            </when>
+        </switch>
+
+    	<attribute name="debug" value="false" type="boolean" />
+    	
+    	<event name="onconnect"/>
+    	<event name="onerror"/>
+        
+        <!-- this attribute holds a reference to the current/last called netremoteCall,
+        in case of error you can debug that way which call did fail -->
+        <attribute name="lastCalled" value="null" />
+    	
+    	<attribute name="src" value="" type="string"/>
+
+		<method name="connect">
+            this._nc = new NetConnection();
+
+            // local reference to rtmpconnection
+            //this._nc.t = this;
+            
+            this._nc.proxyType = canvas.proxyType;
+            
+            var ok = this._nc.connect(src == "null" ? null : src, true); //isAVClient = true
+            if (this.debug) {
+            	if($debug) Debug.write("*** debug ***");
+            }
+            
+            this._nc.addEventListener(NetStatusEvent.NET_STATUS, _onStatus);
+            
+    		if($debug) Debug.write("devRtmpConnection/registerMethods()");
+    		var clientObj = {};
+    		clientObj.setId = this.setId;
+    		
+    		this._nc.client = clientObj;
+    		
+			//Register Methods
+			//this.registerMethods();
+		</method>
+		
+		<method name="setId" args="tId">
+			if ($debug) Debug.write("setId ", tId);
+		</method>
+		
+        <method name="_onStatus" args="stats"><![CDATA[
+            if ($debug) {
+                Debug.write("devrtmpconnection", this, "_onStatus", stats.info.code);
+            }
+
+            var msg = "";
+            var s;
+
+            switch (stats.info.code) {
+
+                case "NetConnection.Connect.Success": {
+                    // The connection attempt succeeded.
+                    //canvas.currentNC is the reference to the NetConnection that is used in the NetStream
+                    msg = stats.info.code;
+                    canvas.currentNC = this._nc;
+                    s = 2;
+                    break;
+                }
+                
+                case "NetConnection.Connect.Closed": {
+                    msg = stats.info.code;
+                    this._nc = null;
+                    canvas.currentNC = null;
+                    s = 0;
+                    break;
+                }
+
+                default: {
+                    msg = stats.info.code;
+                    s = 0;
+                    break;
+                }
+
+            }
+
+            this.setAttribute("status", msg);
+
+            if (s == 2) {
+                this.onconnect.sendEvent();
+            } else {
+            	this.onerror.sendEvent();
+            }
+
+          ]]>
+        </method>	
+        
+        <method name="disconnect">
+        	if ($debug) Debug.write(" DISCONNECT ");
+        	if (this._nc != null) {
+                this._nc.close();
+            }
+        </method>
+    <!--- 
+        With this function all methods are registered to the NetConnection
+        A server can invoke this Method with a call for it from the Client
+        Only subnodes of rtmpconnections which are a instance of netRemoteCallHib
+        are registered, to add dynamically methods to the remotefunction you will
+        have to invoke this method once again
+        -swagner
+     -->
+    <method name="registerMethods">
+        <![CDATA[
+	        if (this.subnodes!=null){
+	            var clientObj = {};
+		        //Register all methods which are onstanceof netRemoteCallHib
+		        for (var i=0;i<this.subnodes.length;i++){
+		            //If it is of Type netRemoteCallHib then register it to the NetConnection
+		            if (this.subnodes[i] instanceof lz.netRemoteCallHib){
+		                clientObj[this.subnodes[i].funcname] = function( args ){
+                            return canvas.thishib.remoteCallMethod(arguments.callee,arguments);
+		                    //return hib.remoteCallMethod(arguments.callee,args);
+		                }
+		            }
+		        }
+		        this._nc.client = clientObj;
+        	}
+        ]]>
+    </method>
+    
+    <!-- 
+        Process the RemoteCall to the Right Funtion
+        -swagner
+     -->
+    <method name="remoteCallMethod" args="callee,args">
+        <![CDATA[
+            for (var eg in this._nc){
+                if (this._nc[eg]==callee){
+                    if (this.debug) {
+                        //_root.Debug.write.write("DEBUG invoked a function remotely: ",eg,args);
+                    }    
+                    if (args.length == 1) {
+                        return this.callFuntion(eg,args[0]);
+                    } else {
+                        return this.callFuntion(eg,args);
+                    }
+                    //return this.callFuntion(eg,args);
+                }
+            }
+        ]]>
+    </method>
+    
+    <!-- 
+        Map the Function to a netRemoteCallHib
+        -swagner
+     -->
+    <method name="callFuntion" args="funcname,args">
+        <![CDATA[
+            for (var i=0;i<this.subnodes.length;i++){
+                if (this.subnodes[i].funcname==funcname){
+                    return this.subnodes[i].onResult(args);
+                }
+            }
+        ]]>
+    </method>		
+    
+    <method name="callRPC" args="func, obj, params">
+    	//if ($debug) Debug.write("*** call: func, obj, params",func,obj, typeof (params) ,params.length);
+    	if (params.length != 0){
+	    	//does this really work?
+	    	//ASSetPropFlags(_global, null, 8, 1);
+            //setPropertyIsEnumerable(8, 1);
+	    	//Debug.write("does it work?",arguments);
+	    	<!--
+	    	this._nc.call.apply(this._nc,arguments);
+	    	 -->
+			if (params.length==1){
+			    this._nc.call(func, obj,params[0]);
+			} else if (params.length==2){
+			    this._nc.call(func, obj,params[0],params[1]);
+			} else if (params.length==3){
+			    this._nc.call(func, obj,params[0],params[1],params[2]);
+			} else if (params.length==4){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3]);
+			} else if (params.length==5){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4]);
+			} else if (params.length==6){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5]);
+			} else if (params.length==7){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
+			} else if (params.length==8){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7]);
+			} else if (params.length==9){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8]);
+			} else if (params.length==10){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9]);
+			} else if (params.length==11){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10]);
+			} else if (params.length==12){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11]);
+			} else if (params.length==13){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12]);
+			} else if (params.length==14){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13]);
+			} else if (params.length==15){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14]);
+			} else if (params.length==16){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15]);
+			} else if (params.length==17){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16]);
+			} else if (params.length==18){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17]);
+			} else if (params.length==19){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17],params[18]);
+			} else if (params.length==20){
+			    this._nc.call(func, obj,params[0],params[1],params[2],params[3],params[4],params[5],params[6],params[7],params[8],params[9],params[10],params[11],params[12],params[13],params[14],params[15],params[16],params[17],params[18],params[19]);
+			}	    	 
+        } else {
+            this._nc.call(func, obj);
+        }
+    </method>
+    
+</class>
+
+
+    <!---
+        Net remote call. 
+        @todo Document netremotecall class.
+    -->
+    <class name="netremotecall" extends="node">
+
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.net.Responder;
+                </passthrough>
+            </when>
+        </switch>
+
+        <!--- Name of the remote function. -->
+        <attribute name="funcname" value="$once{null}" type="string" />
+    
+        <attribute name="remotecontext" value="null" />
+    
+        <attribute name="dataobject" value="null" />
+
+        <attribute name="responder" value="null" />
+		
+        <!--- Data handling event. args="value"  -->
+        <event name="ondata" />
+
+        <!--- Error handling event. -->
+        <event name="onerror"/>
+
+        <!--- Call the remote method, passing the array of params. -->
+        <method name="callRPC" args="params"><![CDATA[
+            if (this.funcname == null) {
+                //Debug.write("No funcname given");
+                if (this.onerror) this.onerror.sendEvent("No funcname given");
+                return;
+            }
+
+            if (params == null) {
+                params = new Array();
+
+                var subnodes = this.subnodes;
+                if (subnodes != null) {
+                    var i;
+                    var n = subnodes.length;
+                    for (i = 0; i < n; i++) {
+                        // If getValue method is declared in param, call that
+                        // instead to get value.
+                        var tsi = subnodes[i];
+                        //TODO: fixme
+                        //if ((tsi["getValue"] != null) && (tsi.getValue["prototype"] != null)) {
+                        //    params[i] = tsi.getValue();
+                        //    Debug.write("tsi.getValue():", tsi.getValue());
+                        //} else {
+                        //    params[i] = tsi.value;
+                        //}
+                        params[i] = tsi.getValue();
+                    }
+                }
+
+            } else if (params.__proto__ != Array.prototype) {
+                //Debug.write(this.name, "error: first argument (params) is not an array");
+                return -1;
+            }
+
+            //if ($debug) Debug.write("call", this, this.parent, this.parent.status);
+            var rtmpObject = null;
+            if (this.parent instanceof lz.rtmpConnection){
+        	    rtmpObject = this.parent;
+            } else if(this.remotecontext  instanceof lz.rtmpConnection){
+        	    rtmpObject = this.remotecontext;
+            } else {
+        	    if ($debug) Debug.warn("ERROR: no remotecontext availible abort call", this.funcname, this);
+        	    return;
+            }
+        	//Debug.write('call', this, rtmpObject, rtmpObject.status);
+        	//Debug.write('call', this.remotecontext);
+            if (rtmpObject.debug) Debug.write('call', this, rtmpObject, rtmpObject.status);
+            rtmpObject.lastCalled = this;
+
+            this.responder = new Responder(onResult);
+
+            rtmpObject.callRPC(this.funcname, this.responder, params);
+
+          ]]>
+        </method>
+
+        <!--- Handle the result returned from the remote method. -->
+        <method name="onResult" args="value"><![CDATA[
+            // Can be overriden.
+            // Would be great if it can be used with dataobject,
+            // but I don't know how to convert Array/primitive to LzDataset/LzDataPointer.
+            ////Debug.write("netremotecall", this, "onResult", value);
+
+            if (this.dataobject!=null) {
+                if ( this.dataobject instanceof LzDataset ) {
+                    //Debug.write("onResult: ",this,value,dataobject);
+                    var element = LzDataElement.valueToElement(value);
+                    this.dataobject.setData(element.childNodes);
+                } else if ( this.dataobject instanceof LzDataElement ) {
+                    var element = LzDataElement.valueToElement(value);
+                    this.dataobject.appendChild( element );
+                } else {
+                    //TODO:fixme
+                    //Debug.warn("dataobject is not LzDataset or LzDataElement: ",this,this.dataobject,delegate);
+                }
+            }
+            this.ondata.sendEvent(value);		
+          ]]>
+        </method>
+
+
+    </class>
+
+
+    <!---
+        Net parameter.
+        Element to use inside netremotecall.
+        @todo Document netparam class.
+    -->
+    <class name="netparam" extends="node">
+
+        <!--- The value of the netparam. -->
+        <attribute name="value" value="null"/>
+
+    </class>
+
+
+</library>
diff --git a/WebContent/swf10/base/remote/sharedObject.lzx b/WebContent/swf10/base/remote/sharedObject.lzx
new file mode 100644
index 0000000..9c7cd96
--- /dev/null
+++ b/WebContent/swf10/base/remote/sharedObject.lzx
@@ -0,0 +1,103 @@
+<?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.
+  
+-->
+<library>
+
+<class name="sharedObject" extends="node">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.net.SharedObject;
+            </passthrough>
+        </when>
+    </switch>
+
+	<attribute name="so" value="null" />
+	<attribute name="onStatus" value="null" />
+	
+
+	<method name="connect" args="so_Name,nc,persistant">
+
+		//Debug.write("connect SharedObject: ",nc.uri);
+		this.so = this.getRemote(so_Name,nc.uri,persistant);
+		
+		var t = this;
+		this.so.onSync = function (evtObj){
+			if (t.onStatus)t.onStatus.sendEvent(evtObj);
+			//_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+		}
+		
+		this.so.connect(nc);
+		
+	</method>
+	
+    
+    <method name="getRemote" args="so_Name,nc,persistant">
+
+        //Debug.write("connect SharedObject: ",nc.uri);
+        this.so = this.getRemote(so_Name,nc.uri,persistant);
+
+        var t = this;
+        this.so.onSync = function (evtObj){
+            if (t.onStatus)t.onStatus.sendEvent(evtObj);
+            //_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+        }
+    </method>
+    
+    <!--- create Object if not existing  -->
+    <method name="getLocal" args="name">
+
+        this.so = this.getLocal(name);
+
+        var t = this;
+        this.so.onSync = function (evtObj){
+            if (t.onStatus)t.onStatus.sendEvent(evtObj);
+            //_root.Debug.write.write("Shared Object onSync",evtObj,arguments);
+        }
+        
+    </method>
+    
+    <!--- 
+        force write to disk
+        @return true(success) false(User has forbidden to store data local)
+      -->
+    <method name="flush">
+        return this.so.flush();
+    </method>
+
+    <method name="getData" args="key">
+        if (this.so.data["key"] == undefined){
+            return null;
+           //_root.Debug.write.write("key undefined",key);
+        } else {
+            return this.so.data["key"];
+        }
+    </method>
+	
+    <method name="setSharedData" args="key,val">
+    	//Debug.write("this...... so: ",this.so);
+        this.so.data["key"] = val;
+    </method>
+
+		
+</class>
+
+</library>
diff --git a/WebContent/swf10/commonVideoViewContentSWF10.lzx b/WebContent/swf10/commonVideoViewContentSWF10.lzx
new file mode 100644
index 0000000..305c37c
--- /dev/null
+++ b/WebContent/swf10/commonVideoViewContentSWF10.lzx
@@ -0,0 +1,617 @@
+<?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.
+  
+-->
+<library>
+
+
+<class name="commonVideoViewContentSWF10" extends="view">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.net.LocalConnection;
+                import flash.external.ExternalInterface;
+            </passthrough>
+        </when>
+    </switch>
+
+    <attribute name="offsetLength" type="number" value="40"/>
+    <attribute name="videoWidth" type="number" value="132"/>
+    <attribute name="videoHeight" type="number" value="132"/>
+    <attribute name="SIDEPANEL_WIDTH" type="number" value="270" />
+    
+    <handler name="oninit">
+        <![CDATA[
+
+            var client = {};
+            client.t = this;
+
+            client.createEditRecordStream = this.createEditRecordStream;
+            client.createVideoObject = this.createVideoObject;
+            client.createVideo = this.createVideo;
+            client.getVideoObjectByPublicSID = this.getVideoObjectByPublicSID;
+            client.getNewVideoObject = this.getNewVideoObject;
+            client.getVideoObjectFreePos = this.getVideoObjectFreePos;
+            client.getVideoObjectCount = this.getVideoObjectCount;
+            client.disconnectclient = this.disconnectclient;
+            client.resetAllValues = this.resetAllValues;
+            client.closeStreamClient = this.closeStreamClient;
+            client.setSpeakingByPos = this.setSpeakingByPos;
+            client.setAVSettingsToClient = this.setAVSettingsToClient;
+            client.startStream = this.startStream;
+            client.removeVideoByUser = this.removeVideoByUser;
+            client.muteSound = this.muteSound;
+            client.updateMuteStatusVideoView = this.updateMuteStatusVideoView;
+            client.ismoderatorChanged = this.ismoderatorChanged;
+            // update rights to SWF10 client
+            client.updateModerationFlag = this.updateModerationFlag;
+            client.changeDevice = this.changeDevice;
+            client.setDrawAllowStatus = this.setDrawAllowStatus;
+            client.setExclusiveAudioAllowStatus = this.setExclusiveAudioAllowStatus;
+            client.exitRoom = this.exitRoom;
+            client.immediateExitRoom = this.immediateExitRoom;
+            client.closeWhiteboard = this.closeWhiteboard;
+            client.arrangeWindows = this.arrangeWindows;
+            client.updateFirstLastName = this.updateFirstLastName;
+            client.setSessionId = this.setSessionId;
+
+            var lc:LocalConnection = new LocalConnection();
+            lc.connect(canvas.vid_lc_name);
+            lc.client = client;
+            canvas.setAttribute("lc", lc);
+
+        ]]>
+    </handler>
+    
+	<method name="createEditRecordStream" args="syncUpdate,isInterview,interviewPodId">
+		if($debug) Debug.info("createEditRecordStream,",syncUpdate,isInterview,interviewPodId);
+		if (canvas.inner.editRecordStream != null)
+			canvas.inner.editRecordStream.destroy();
+			new lz.editRecordStreamSWF10(canvas.inner, {
+					name:"editRecordStream",
+					isSyncUpdate:syncUpdate,
+					isInterview:isInterview,
+					interviewPodId:interviewPodId
+				});
+		return;
+	</method>
+
+	<!-- 
+		Method that creates the video views when another user enters a room and his 
+		item in the list of participants is created.
+		The method to "play" the stream is invoked later, when the user
+		really starts to stream and not only when he just enters the room.
+	 -->
+    <method name="createVideoObject" args="publicSID,isBroadcasting,interviewPodId,object">
+        if($debug) Debug.info("createVideoObject, publicSID: ",publicSID, "isBroadcasting: ", isBroadcasting, "object", object);
+        var vidContainer = getVideoObjectByPublicSID(publicSID);
+        if(vidContainer == null) {
+            vidContainer = isBroadcasting ? this.getNewVideoObject(publicSID) : this.getNewVideoObjectByPos(publicSID);
+            vidContainer.publicSID = publicSID;
+        }
+        if ($debug) Debug.write("Is interview ? ",canvas.isInterview);
+        if (canvas.isInterview) {
+        	if ($debug) Debug.write("Is interview ",interviewPodId,"x",canvas["interviewPod"+interviewPodId+"_x"]);
+			if (interviewPodId != null) {
+				vidContainer.setAttribute("interviewPodId", interviewPodId);
+				vidContainer.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
+				vidContainer.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
+			}
+            vidContainer.setAttribute("width",322);
+            vidContainer.setAttribute("height",281);
+        }
+        vidContainer.clientVars = object;
+        vidContainer.setAttribute('visibility','hidden');
+        return vidContainer;
+    </method>
+
+	<!-- 
+		
+		Method that creates the video views when user(self) initially entering a room.
+		Creates the video-view AND starts to stream/play the video
+	 -->
+    <method name="createVideo" args="publicSID,displayName,broadcastId,avsettings,interviewPodId,object">
+        <![CDATA[
+            if ($debug) Debug.info("createVideo, publicSID: ",publicSID,"broadcastId: ",broadcastId,"AVsettings: ",avsettings);
+            if ($debug) Debug.write(" createVideo ALL vars ",object);
+            var vidContainer = getVideoObjectByPublicSID(publicSID);
+            if(vidContainer == null) {
+                vidContainer = this.getNewVideoObjectByPos(publicSID);
+                vidContainer.clientVars = object;
+                vidContainer.setAttribute('chatpartnername',displayName);
+                if (avsettings=="n"){
+                    vidContainer.setVideouserProfilePic(object);
+                    vidContainer.setAttribute("visibility","hidden");
+                } else if (avsettings=="a"){
+                    vidContainer.setVideouserProfilePic(object);
+                    if ($debug) Debug.warn("start play");
+                    vidContainer._chatvideoinner._videostream.playStream(broadcastId,-1);
+                    vidContainer.setAttribute("visible", false);
+                } else if (avsettings=="v" || avsettings=="av") {
+                    //this means avsettings is either: "v" or "av"
+                	vidContainer.setDefaultVideoSize(object.VWidth,object.VHeight);
+                    vidContainer._chatvideoinner._videostream.playStream(broadcastId,-1);
+                    vidContainer.setAttribute("visibility","visible");
+                } else {
+                	//this means user did not select anything yet and streaming has not started
+                	vidContainer.setAttribute("visibility","hidden");
+                }
+                vidContainer.setAttribute("interviewPodId", interviewPodId);
+                vidContainer.updateAVSettingsSymbol(object);
+                if (object.micMuted) {
+            	    vidContainer.setMicMuted(object.micMuted);
+           	 	}
+            }
+            
+            
+            if ($debug) Debug.write("Is interview ? ",canvas.isInterview);
+            if (canvas.isInterview && interviewPodId != null && interviewPodId > 0) {
+                if ($debug) Debug.write("Is interview ",interviewPodId,"x",canvas["interviewPod"+interviewPodId+"_x"]);
+                vidContainer.setAttribute("interviewPodId", interviewPodId);
+                vidContainer.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
+                vidContainer.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
+                vidContainer.setAttribute("width",322);
+                vidContainer.setAttribute("height",281);
+            }
+			return;
+        ]]>
+    </method>
+    
+    <method name="getVideoObjectByPublicSID" args="publicSID">
+    	<![CDATA[
+    		//if ($debug) Debug.write("getVideoObjectByPublicSid SEARCH: ",publicSID);
+        	for (var i=0;i<this.subviews.length;i++){
+        	    //if ($debug) Debug.write("this.subviews[i].publicSID ",this.subviews[i].publicSID);
+    			if (this.subviews[i].publicSID==publicSID){
+    				return this.subviews[i];
+    			}
+    		}
+    		if ($debug) Debug.warn(" - getVideoObjectByPublicSID - DID NOT FIND THE USER BY ",publicSID);
+            return null;
+    	]]>
+    </method>
+
+    <method name="getNewVideoObjectByPos" args="publicSID">
+        <![CDATA[
+            var obj = this.getVideoObjectByPublicSID(publicSID);
+            if (obj!=null){
+                return obj;
+            }
+
+            //Get a Free VideoView Slot
+            var freePos = this.getVideoObjectFreePos(this.offsetLength,this.videoWidth,this.videoHeight);
+
+            return new lz.videoObjectPlayBroadcast(this,{
+                    publicSID:publicSID,
+                    width:videoWidth,
+                    height:videoHeight,
+                    x:freePos[0],
+                    y:freePos[1],
+                    isInterview:canvas.isInterview
+                });
+        ]]>
+    </method>
+
+    <method name="getNewVideoObject" args="publicSID">
+		<![CDATA[
+			var obj = this.getVideoObjectByPublicSID(publicSID);
+			if (obj!=null){
+				this.broadCastViewRef = obj;
+			} else {
+				this.broadCastViewRef = getNewVideoObjectByPos(publicSID);
+
+				this.broadCastViewRef._chatvideoinner.r.destroy();
+				if ($debug) Debug.write("getNewVideoObject canvas.userobject ",publicSID,canvas.userobject);
+				this.broadCastViewRef.setAttribute('chatpartnername',canvas.userobject.firstname+' '+canvas.userobject.lastname);
+			}
+			return this.broadCastViewRef;
+		]]>
+	</method>
+
+    <method name="getVideoObjectByInterviewPodId" args="interviewPodId">
+        <![CDATA[
+            for (var i=0;i<this.subviews.length;i++){
+                if (this.subviews[i].interviewPodId==interviewPodId){
+                    return this.subviews[i];
+                }
+            }
+            if ($debug) Debug.warn(" - getVideoObjectByInterviewPodId - DID NOT FIND THE USER BY ",interviewPodId);
+            return null;
+        ]]>
+    </method>
+
+	<method name="getVideoObjectCount" args="a">
+	<![CDATA[
+		var count = 0;
+		for (var i = 0; i < this.subviews.length; ++i) {
+			if (this.subviews[i].visible) {
+				count++;
+			}
+		}
+		//if ($debug) Debug.debug("COUNT :: ", count);
+		canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'onInterviewPodCount', count);
+	]]>
+	</method>
+
+    <method name="getVideoObjectFreePos" args="offsetLength,videoWidth,videoHeight">
+        <![CDATA[
+            var newx = 20;
+            if (canvas.currentRoomObject.hideWhiteboard) {
+                newx += SIDEPANEL_WIDTH;
+            }
+            var newy = 0;
+            var posFound = false;
+            if (offsetLength == undefined) {
+                offsetLength=10;
+            }
+            while (!posFound) {
+                posFound = true;
+                for (var i=0;i<this.subviews.length;i++){
+                    var subview = this.subviews[i];
+                    var left = subview.x;
+                    var right = subview.x + subview.width;
+                    var top = subview.y;
+                    var bottom = subview.y + subview.height;
+
+                    if( !(newx > right
+                        || (newx + videoWidth) < left
+                        || newy > bottom
+                        || (newy + videoHeight) < top ))
+                    {
+                        newx = right + offsetLength;
+                        posFound = false;
+                    }
+                    if ((newx + videoWidth) >= canvas.width) {
+                        newx = 20;
+                        if (canvas.currentRoomObject.hideWhiteboard) {
+                            newx += SIDEPANEL_WIDTH;
+                        }
+                        newy += 10;
+                        posFound = false;
+                    }
+                }
+            }
+
+            if ((newy + videoHeight) >= canvas.height) {
+                newy = 0;
+            }
+
+            var result = [newx, newy];
+            return result;
+        ]]>
+    </method>
+
+    <method name="disconnectclient" args="publicSID">
+        <![CDATA[
+            if ($debug) Debug.write("disconnectclient: ",publicSID);
+
+            var obj = this.getVideoObjectByPublicSID(publicSID);
+
+            //if ($debug) Debug.write("disconnecclient obj: ",obj);
+            if (obj == null) {
+            	if ($debug) Debug.warn("Could Not find this To disconnect",publicSID);
+            }
+
+            if (obj != null){
+                obj.resetValues();
+                obj.destroy();
+            }
+        ]]>
+    </method>
+
+    <method name="muteSound" args="publicSID, bool">
+        <![CDATA[
+            var obj = this.getVideoObjectByPublicSID(publicSID);
+            if (obj != null) {
+                obj.silenceMicrophone(bool);
+            }
+            return;
+        ]]>
+    </method>
+
+    <method name="resetAllValues">
+        for (var eg in this.subviews){
+            this.subviews[eg].resetValues();
+        }
+        return;
+    </method>
+
+    <method name="closeStreamclient" args="publicSID">
+        <![CDATA[
+            if ($debug) Debug.write("closeStreamthis: ",publicSID);
+            var obj = this.getVideoObjectByPublicSID(publicSID);
+            if ($debug) Debug.write("closeStreamthis obj: ",obj);
+            if (obj != null){
+                obj.resetValues();
+            }
+            return obj;
+        ]]>
+    </method>
+
+    <method name="removeVideoByUser" args="publicSID"><![CDATA[
+        var obj = this.closeStreamclient(publicSID);
+        if(obj != null) {
+            obj.destroy();
+        }
+        return;
+    ]]></method>
+
+	<method name="updateMuteStatusVideoView" args="roomClient">
+	<![CDATA[
+		var obj = this.getVideoObjectByPublicSID(roomClient.publicSID);
+		if (obj != null) {
+			obj.muteMicrophone(roomClient);
+		}
+	]]>
+	</method>
+
+    <method name="ismoderatorChanged" args="m">
+        canvas.setAttribute("ismoderator", m);
+        return;
+    </method>
+
+
+	<method name="setSpeakingByPos" args="publicSID,bool">
+	<![CDATA[
+		//if ($debug) Debug.write("setSpeakingByPos ",publicSID,bool);
+		var obj = this.getVideoObjectByPublicSID(publicSID);
+		if (obj == null) {
+			if ($debug) Debug.warn("Could not find user for setSpeakingByPos ",publicSID,bool);
+			return;
+		}
+		obj._loudness.setSpeaking(bool);
+	]]>
+	</method>
+
+	<method name="setAVSettingsToClient" args="rcl">
+	<![CDATA[
+		if ($debug) Debug.write("setAVSettingsToClient: ", rcl.publicSID, rcl);
+		var obj = this.getVideoObjectByPublicSID(rcl.publicSID);
+		if ($debug) Debug.write("setAVSettingsToClient: ", obj, rcl.avsettings);
+		if (obj == null) {
+			obj = this.getNewVideoObjectByPos(rcl.publicSID);
+		}
+		if ("n" == rcl.avsettings){
+			obj.setVideouserProfilePic(rcl);
+		} else if ("a" == rcl.avsettings){
+			obj.setVideouserProfilePic(rcl);
+		} else {
+			obj.deleteVideoConfProfilePic();
+		}
+		obj.thisVars = rcl;
+		obj.updateAVSettingsSymbol(rcl);
+		var v = ("a" == rcl.avsettings && obj.isInterview) || ("a" != rcl.avsettings && rcl.avsettings != "n");
+		obj.setAttribute("visible", v);
+		obj.setAttribute("visibility", v ? "visible" : "hidden");
+		if ($debug) Debug.write("setAVSettingsToClient: ", v, obj.visible);
+	]]>
+	</method>
+
+    <method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,width,height">
+        <![CDATA[
+            if ($debug) Debug.write("startStream: ", publicSID,broadcastId,firstname,lastname,interviewPodId,width,height);
+            var obj = this.getVideoObjectByPublicSID(publicSID);
+            //if ($debug) Debug.write("startStream obj: ",obj);
+            if (obj != null ){
+                obj._chatvideoinner._videostream.playStream(broadcastId,-1);
+                obj.setDefaultVideoSize(width,height);
+                obj.setAttribute('chatpartnername',firstname+' '+lastname);
+            }
+            //we have to do this again when the stream starts, the initial video 
+            //component does not know the interviewPodId as the user has not selected 
+            //which interview video pod he is going to use
+            if (canvas.isInterview && interviewPodId != null && interviewPodId > 0) {
+                if ($debug) Debug.write("Is interview ",interviewPodId,"x",canvas["interviewPod"+interviewPodId+"_x"]);
+                obj.setAttribute("interviewPodId", interviewPodId);
+                obj.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
+                obj.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
+                obj.setAttribute("width",322);
+                obj.setAttribute("height",281);
+            }
+            return;
+        ]]>
+    </method>
+
+	<!---
+		Clear all views, probably this is caleld whenever a user leaves the room for example
+	 -->
+    <method name="clearAll">
+        <![CDATA[
+            if ($debug) Debug.write("clearAll", this.subviews);
+            while(this.subviews.length > 0) {
+                this.subviews[0]._chatvideoinner._videostream._stop();
+                this.subviews[0].destroy();
+            }
+            if (canvas.inner.editRecordStream != null) {
+                canvas.inner.editRecordStream.destroy();
+            }
+            return;
+        ]]>
+    </method>
+    
+    <!---
+    	Update the ismoderator flag, there is no need to check here which user
+    	this happened already before sending it to the SWF10 app
+     -->
+    <method name="updateModerationFlag" args="moderator">
+    	<![CDATA[
+    		if ($debug) Debug.write("updateModerationFlag :: ",moderator);
+    		this.setAttribute('ismoderator',moderator);
+    		return;
+    	]]>
+    </method>
+    
+    <!---
+    	Update the canDraw,canShare,canRemote flag, there is no need to check here which user
+    	this happened already before sending it to the SWF10 app
+     -->
+    <method name="setDrawAllowStatus" args="canDraw,canShare,canRemote">
+    	<![CDATA[
+    		if ($debug) Debug.write("setDrawAllowStatus :: ",canDraw,canShare,canRemote);
+    		canvas.setAttribute("isAllowedToDraw",canDraw);
+            canvas.setAttribute("isAllowedToScreenShare",canShare);
+            canvas.setAttribute("isAllowedToRemoteControl",canRemote);
+            return;
+    	]]>
+    </method>
+    
+    <method name="setExclusiveAudioAllowStatus" args="canGiveAudio">
+    	<![CDATA[
+    		if ($debug) Debug.write("setExclusiveAudioAllowStatus :: ",canGiveAudio);
+    		canvas.setAttribute("isAllowedToGiveExclusiveAudio",canGiveAudio);
+            return;
+    	]]>
+    </method>
+
+    <!---
+        Shows the window with device settings
+    -->
+    <method name="changeDevice">
+        <![CDATA[
+            if ($debug) Debug.write("changeDevice");
+            new lz.changeDevice(canvas.inner, {
+					                name:"changeDeviceDialog"
+					            });
+            return;
+        ]]>
+    </method>
+
+    <!---
+        Shows the exit dialog
+    -->
+    <method name="exitRoom">
+        if ($debug) Debug.write("exitRoom");
+        new lz.confirmationSingleSWF10(canvas,{
+                refObj:this,
+                labelid:791,
+                labeliderror:790,
+                refReturnMethod:'immediateExitRoom',
+                showCheckBox:false
+            });
+        return;
+    </method>
+
+	<method name="immediateExitRoom" args="bool,ctx">
+	<![CDATA[
+		if($debug) Debug.write("0");
+		if (canvas.wicketsid != null && bool) {
+			if($debug) Debug.write("1");
+			clearAll();
+			if($debug) Debug.write("2");
+			canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'exitRoom', bool);
+			if($debug) Debug.write("3");
+			if($debug) Debug.write("Do disconnect 10:: ", canvas.thishib);
+			canvas.thishib.src = null;
+			canvas.thishib.disconnect();
+			canvas.thishib._nc.close();
+		}
+	]]>
+	</method>
+
+	<method name="updateFirstLastName" args="publicSID,first,last">
+		var v = getVideoObjectByPublicSID(publicSID);
+		if (v != null) {
+			v.setAttribute('chatpartnername', first + ' ' + last);
+		}
+	</method>
+	
+    <!---
+        Shows the close whiteboard dialog
+    -->
+    <method name="closeWhiteboard">
+        if ($debug) Debug.write("closeWhiteboard");
+        if (canvas.ismoderator || canvas.isAllowedToDraw) {
+            canvas.closeWhiteboardDialog = new lz.confirmationSingleSWF10(canvas,{
+                refObj:this,
+                labeliderror:1313,
+                refReturnMethod:'closeWhiteboardConfirmMethod',
+                showCheckBox:false
+            });
+        } else {
+            new lz.labelerrorPopupSWF10(canvas,{labelid:1366, errorlabelid:1365});
+        }
+        return;
+    </method>
+    
+    <method name="closeWhiteboardConfirmMethod" args="bool,sharedObjectData">
+    	canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'closeWhiteboard', bool);
+    </method>
+        
+	<!-- arranges video pods -->
+	<method name="arrangeWindows">
+	<![CDATA[
+		if ($debug) Debug.write("arrangeWindows");
+		var windowsList = this.subviews;
+
+		if (0 == windowsList.length) {
+            return;
+		}
+
+        windowsList.sort(this.sortFunction);
+
+		var offsetInPx = 40;
+		var initX = 20;
+		var initY = 20;
+		var xPos = initX;
+		var yPos = initY;
+		var rowHeight = windowsList[0].height;
+
+		// arrange windows with new positions
+		for (var winIdx = 0; winIdx < windowsList.length; winIdx++) {
+			var window = windowsList[winIdx];
+			if (canvas.width < xPos + window.width) {
+                yPos += rowHeight + offsetInPx;
+                xPos = initX;
+                rowHeight = window.height;
+			}
+			if (canvas.height < yPos) {
+			    initX += 10;
+			    initY += 10;
+			    xPos = initX;
+			    yPos = initY;
+			}
+			window.setAttribute("x", xPos);
+			window.setAttribute("y", yPos);
+			window.bringToFront();
+
+			xPos += window.width + offsetInPx;
+		}
+	]]>
+	</method>
+
+	<method name="setSessionId" args="session_id">
+		canvas.setAttribute("sessionId", session_id);
+	</method>
+	
+    <!-- @keyword private -->
+    <method name="sortFunction" args="el1, el2">
+        <![CDATA[
+            if (el1.height > el2.height) {
+                return -1;
+            } else if (el1.height < el2.height) {
+                return 1;
+            }
+            return 0;
+        ]]>
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/dragHelper.lzx b/WebContent/swf10/dragHelper.lzx
new file mode 100644
index 0000000..bc8bea9
--- /dev/null
+++ b/WebContent/swf10/dragHelper.lzx
@@ -0,0 +1,40 @@
+<?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.
+  
+-->
+<library>
+
+<class name="dragHelper">
+
+    <attribute name="dragHelper" value="null" />
+
+    <method name="create">
+        if(this.dragHelper != null ) this.dragHelper.destroy();
+        this.dragHelper = new lz.view(canvas, {width:canvas.width,height:canvas.height,x:'0',y:'0', bgcolor:'0xFFFFFF', opacity:0.01,clickable:true});
+        this.dragHelper.sendInFrontOf(canvas.mainComponent);
+    </method>
+
+    <method name="remove">
+        this.dragHelper.destroy();
+        this.dragHelper = null;
+    </method>
+
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/hibAdapter.lzx b/WebContent/swf10/hibAdapter.lzx
new file mode 100644
index 0000000..cee134e
--- /dev/null
+++ b/WebContent/swf10/hibAdapter.lzx
@@ -0,0 +1,383 @@
+<?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.
+  
+-->
+<library>
+
+<class name="hibAdapter">
+
+    <attribute name="testingApplication" value="null" />
+    <attribute name="baseVideoStream" value="null" />
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.net.LocalConnection;
+            </passthrough>
+        </when>
+    </switch>
+
+    <handler name="oninit"><![CDATA[
+        var client = {};
+        client.t = this;
+
+        client.hibAdapter_setLabelObjectByHundred = this.hibAdapter_setLabelObjectByHundred;
+        client.setRoomValues = this.setRoomValues;
+        client.getRoomTypes = this.getRoomTypes;
+        client.disconnect = this.disconnect;
+        client.reconnectSuccess = this.reconnectSuccess;
+        //Test application to record 5 seconds
+        client.doInitTestingApplication = this.doInitTestingApplication;
+        client.closeInitTestingApplication = this.closeInitTestingApplication;
+        
+        //Recording Player Whiteboard
+        client.connectRecordingPlayer = this.connectRecordingPlayer;
+        client.playRecordingStream = this.playRecordingStream;
+        client.updateRecordingVideoPosition = this.updateRecordingVideoPosition;
+        client.stopRecordingStream = this.stopRecordingStream;
+        client.pauseRecordingPlayback = this.pauseRecordingPlayback;
+        client.seekRecordingPlayback = this.seekRecordingPlayback;
+        client.stopAndCloseRecordingConnection = this.stopAndCloseRecordingConnection;
+        client.playbackWhiteboardVideo = this.playbackWhiteboardVideo;
+        client.stopWhiteboardVideo = this.stopWhiteboardVideo;
+        
+        //Screen sharing player
+        client.newScreenSharing = this.newScreenSharing;
+        client.newScreenSharings = this.newScreenSharings;
+        client.closeScreenSharing = this.closeScreenSharing;
+        client.closeAllScreenSharings = this.closeAllScreenSharings;
+        client.updateCursorScreenSharing = this.updateCursorScreenSharing;
+        
+        //Text RegExp 
+        client.regExpTest = this.regExpTest;
+
+        var rtmpLC:LocalConnection = new LocalConnection();
+        rtmpLC.connect(canvas.rtmp_lc_name);
+        if ($debug) Debug.write("Connect to LocalConnection ",canvas.rtmp_lc_name);
+        rtmpLC.client=client;
+        canvas.setAttribute("rtmp_lc", rtmpLC);
+    ]]></handler>
+
+    <method name="hibAdapter_setLabelObjectByHundred" args="start,value">
+    	//if($debug) Debug.write("hibAdapter_setLabelObjectByHundred",start);
+        // if($debug) Debug.write("hibAdapter_setLabelObjectByHundred",start,value);
+        setLabelObjectByHundred(start,value);
+    </method>
+
+    <method name="setRoomValues" args="roomtypes_id,rooms_id,value">
+        if($debug) Debug.write("setRoomValues",roomtypes_id,rooms_id,value);
+        canvas.currentRoomObject = value;
+    </method>
+
+    <method name="getRoomTypes" args="value">
+        canvas.roomTypesInitValues = value;
+    </method>
+    
+    <!-- 
+    	Synces some of the variables from the SWF8 to the SWF10.
+    	This also includes values for httphostlocal
+    	in case its a cluster'ed OpenMeetings installation the connection_url
+    	might point to the slave while the httphostlocal points to the master
+     -->
+    <method name="reconnectSuccess" args="connection_url,publicSID,userobject,isInterview,httphostlocal,httpport">
+        if($debug) Debug.write("reconnectSuccess",connection_url,publicSID,userobject);
+        canvas.httphostlocal = httphostlocal;
+        canvas.red5httpport = httpport;
+        canvas.publicSID = publicSID;
+        canvas.userobject = userobject;
+        canvas.isInterview = isInterview;
+        canvas.thishib.setAttribute('src',connection_url);
+        canvas.thishib.connect();
+    </method>
+    
+    <method name="disconnect" args="arg">
+        if($debug) Debug.write("Do disconnect");
+        canvas.thishib.disconnect();
+    </method>
+    
+    <!---
+        Starts the 5 second audio/video testing application and connect to RTMP
+     -->
+    <method name="doInitTestingApplication" args="x,y,connection_url">
+        if($debug) Debug.write("doInitTestingApplication ",x,y);
+        canvas.thishib.setAttribute('src',connection_url);
+        canvas.thishib.connect();
+        this.testingApplication = new lz.testingApplication(canvas,{name:'currentSharing',x:x+1,y:y+24});
+    </method>
+    
+    <!---
+        Stops and destroys the view with the audio/video testing application
+        and send confirmation back via LocalConnection
+     -->
+    <method name="closeInitTestingApplication">
+    	canvas.thishib.disconnect();
+        if($debug) Debug.write("closeInitTestingApplication ");
+        if (this.testingApplication != null) {
+            this.testingApplication.storeSettings();
+            this.testingApplication.destroy();
+            this.testingApplication = null;
+        }
+        if ($debug) Debug.write("Send confirmation of close back to: ",canvas.videoComp_lc_name);
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'closeInitTestingApplicationConfirm');
+    </method>
+    
+    <!---
+        Initializes video playback component
+        and connect to RTMP
+     -->
+    <method name="connectRecordingPlayer" args="connection_url,x,y,width,height">
+    	if($debug) Debug.write("connectRecordingPlayer ", connection_url,x,y,width,height);
+    	canvas.thishib.setAttribute('src',connection_url);
+        canvas.thishib.connect();
+        this.baseVideoStream = new lz.playBackVideoStream(canvas,{
+            x:x,
+            y:y,
+            width:width,
+            height:height
+        });
+    </method> 
+    
+    <!---
+        plays a recorded stream
+     -->
+    <method name="playRecordingStream" args="streamName,delay,x,y,width,height">
+    	if($debug) Debug.write("playRecordingStream ",streamName,x,y,width,height);
+    	if (this.baseVideoStream == null) {
+    		if ($debug) Debug.warn("baseVideoStream is NULL");
+    		return;
+    	}
+    	this.baseVideoStream.setAttribute("x",x);
+    	this.baseVideoStream.setAttribute("y",y);
+    	this.baseVideoStream.setAttribute("width",width);
+    	this.baseVideoStream.setAttribute("height",height);
+    	this.baseVideoStream.setAttribute("visibility","visible");
+    	this.baseVideoStream.playRecordingStream(streamName,delay);
+    </method>
+    
+    <!---
+        Updates the width/height property of the recording playback video 
+     -->    
+    <method name="updateRecordingVideoPosition" args="width,height">
+    	if (this.baseVideoStream == null) {
+    		if ($debug) Debug.warn("baseVideoStream is NULL");
+            return;
+        }
+        this.baseVideoStream.setAttribute("width",width);
+        this.baseVideoStream.setAttribute("height",height);
+    </method>
+    
+    <!---
+        stops and hides the recording playback video
+     -->
+    <method name="stopRecordingStream">
+    	if($debug) Debug.write("stopRecordingStream ");
+        if (this.baseVideoStream == null) {
+        	if ($debug) Debug.warn("baseVideoStream is NULL");
+            return;
+        }
+        if($debug) Debug.write(" stopRecording ");
+        this.baseVideoStream.stopRecording();
+        this.baseVideoStream.setAttribute("visibility","hidden");
+    </method>
+    
+    <!--- 
+        pauses the current video or continue at the same position
+     -->
+    <method name="pauseRecordingPlayback" args="pauseBool">
+    	if($debug) Debug.write("pauseRecordingPlayback ");
+        if (this.baseVideoStream == null) {
+        	if ($debug) Debug.warn("baseVideoStream is NULL");
+            return;
+        }
+        this.baseVideoStream.pause(pauseBool);
+    </method>
+    
+    <method name="seekRecordingPlayback" args="flvTime">
+    	if($debug) Debug.write("seekRecordingPlayback ",flvTime);
+        if (this.baseVideoStream == null) {
+        	if ($debug) Debug.warn("baseVideoStream is NULL");
+            return;
+        }
+        this.baseVideoStream.seekStream(flvTime);
+    </method>
+    
+    <method name="stopAndCloseRecordingConnection">
+    	if($debug) Debug.write("stopAndCloseRecordingConnection ");
+        if (this.baseVideoStream == null) {
+        	if ($debug) Debug.warn("baseVideoStream is NULL");
+            return;
+        }
+        this.baseVideoStream.stopRecording();
+        this.baseVideoStream.destroy();
+        this.baseVideoStream = null;
+        canvas.thishib.disconnect();
+        // send back confirmation to leave the module
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'recordingStoppedAndDisconnected');
+    </method>
+    
+    <!---
+        Start playback of whiteboard video
+     -->
+    <method name="playbackWhiteboardVideo" args="tName,recordingName,seek,tx,ty,twidth,theight">
+    	<![CDATA[
+    	   if($debug) Debug.write("playbackWhiteboardVideo ",tName,recordingName,seek,tx,ty,twidth,theight);
+    	   if (this[tName]) {
+    	   	 if ($debug) Debug.warn("playbackWhiteboardVideo there was already a video with the same name");
+    	   	 this[tName]._stop();
+    	   	 this[tName].destroy();
+    	   }
+    	   
+    	   new lz.playBackWhiteboardVideo(this.whiteboardVideos,{
+                	       name:tName,
+                	       x:tx,
+                	       y:ty,
+                	   	   width:twidth,
+                	   	   height:theight
+                	   });
+    	   
+    	   this.whiteboardVideos[tName].playVideoStream(recordingName,0);
+    	]]>
+    </method>
+    
+    <method name="stopWhiteboardVideo" args="tName">
+    	<![CDATA[
+    	   if($debug) Debug.write("stopWhiteboardVideo ",tName);
+           if (this.whiteboardVideos[tName]) {
+             this.whiteboardVideos[tName].stopVideo();
+             this.whiteboardVideos[tName].destroy();
+           } else {
+           	 if ($debug) Debug.warn("stopWhiteboardVideo could not find video to stop");
+           }
+    	]]>
+    </method>
+    
+    <!---
+       #################################
+       Methods to handle screen sharing video playback and cursor
+     -->
+     
+    <!---
+        Adds a new screen sharing playback video
+     -->
+    <method name="newScreenSharing" args="value">
+    	<![CDATA[
+    	   if (value.streamPublishName != canvas.publicSID) {
+                if (canvas.screenSharingDialogContainer == null) {
+                    canvas.screenSharingDialogContainer = new lz.screenSharingDialogContainer(canvas);
+                }
+                new lz.screenSharingDialog(canvas.screenSharingDialogContainer,{
+                            initObject:value 
+                        }); 
+            } else {
+                if ($debug) Debug.warn("Self Screen Sharing");
+            }
+    	]]>
+    </method> 
+    
+    <!---
+        Add a list of screen sharing playback videos 
+        (initially when entering the room invoked)
+     -->
+    <method name="newScreenSharings" args="value">
+     	<![CDATA[
+     	    for (var eg in value) {
+                this.newScreenSharing(value[eg]);
+            }
+     	]]>
+    </method>
+   
+    <!---
+        Close a single screen sharing playback video
+     --> 
+	<method name="closeScreenSharing" args="value">
+		<![CDATA[
+			if (canvas.screenSharingDialogContainer != null) {
+				var obj = canvas.screenSharingDialogContainer
+						.searchForSession(value.streamPublishName);
+				if (obj) {
+					obj.doClose();
+				}
+			}
+		]]>
+	</method>
+	
+	<!---
+	   Closes all screen sharing playback videos, whiteboard videos, user videos 
+	   and closes the rtmp connection
+	 -->
+	<method name="closeAllScreenSharings">
+        <![CDATA[
+            if ($debug) Debug.write("RECEIVE closeAllScreenSharings ");
+            if (canvas.screenSharingDialogContainer != null) {
+                canvas.screenSharingDialogContainer.closeAll();
+                canvas.screenSharingDialogContainer.destroy();
+                canvas.screenSharingDialogContainer = null;
+            }
+            this.whiteboardVideos.clearAll();
+            parent._videoComponent.clearAll();
+            canvas.thishib.disconnect();
+        ]]>
+    </method>
+    
+    <!---
+        Update the position of the cursor from the sharing screen
+     -->
+	<method name="updateCursorScreenSharing" args="value">
+		<![CDATA[
+			if (canvas.screenSharingDialogContainer != null) {
+				var obj = canvas.screenSharingDialogContainer.searchForSession(value.streamPublishName);
+				obj.updateCursor(value.cursor_x, value.cursor_y);
+			}
+		]]>
+	</method>
+	
+	<!---
+		Make regExpTest 
+	 -->
+	<method name="regExpTest" args="fieldValue,regExStr,regExpCheckId">
+		<![CDATA[
+			var re = new RegExp(regExStr);
+			
+			var testResult = re.test( fieldValue );
+			
+			if ($debug) Debug.write(fieldValue, testResult);
+			
+			canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'regExpResult', regExpCheckId, testResult);
+			
+		]]>
+	</method>
+	
+    <!--
+        Container to hold all whiteboard videos
+     -->	
+	<view name="whiteboardVideos">
+		<method name="clearAll">
+    		<![CDATA[
+    			for (var eg in this.subviews) {
+    				this.subviews[eg].stopVideo();
+    				this.subviews[eg].destroy();
+    			}
+    		]]>
+		</method>
+	</view>
+     
+
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/lzrecorder/library.lzx b/WebContent/swf10/lzrecorder/library.lzx
new file mode 100644
index 0000000..6f84e4c
--- /dev/null
+++ b/WebContent/swf10/lzrecorder/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="playBackVideoStream.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/lzrecorder/playBackVideoStream.lzx b/WebContent/swf10/lzrecorder/playBackVideoStream.lzx
new file mode 100644
index 0000000..b7fdfd5
--- /dev/null
+++ b/WebContent/swf10/lzrecorder/playBackVideoStream.lzx
@@ -0,0 +1,71 @@
+<?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.
+  
+-->
+<library>
+
+<!---
+    The playBackVideoStream is used in the recording playerback to show the video
+ -->
+<class name="playBackVideoStream" extends="baseVideoStream" bgcolor="0x000000" visibility="hidden">
+    
+    <attribute name="timerDelegate" value="null"/>
+    <attribute name="timerDelegateStarted" value="false" type="boolean"/>
+    
+    <handler name="oninit">
+        this.timerDelegate = new LzDelegate( this, "calcProgressBar" );
+    </handler>
+    
+    <handler name="onclick">
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'togglePlayRecordingStream');
+    </handler>
+    
+    <method name="playRecordingStream" args="streamName,delay">
+        this.playStream(streamName,delay);
+        this.timerDelegateStarted = true;
+        lz.Timer.addTimer( this.timerDelegate , 1000 );
+    </method>
+    
+    <method name="stopRecording">
+        this._stop();
+        lz.Timer.removeTimer(this.timerDelegate);
+        this.timerDelegateStarted = false;
+    </method>
+    
+    <handler name="onNetStatus" args="info">
+        if ($debug) Debug.write("onNetStatus ",info);
+        if (info.code ==  "NetStream.Play.Stop" ) {
+            canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'stopRecordingStream');
+        }
+    </handler>
+    <handler name="onMetaDataEvent" args="info">
+        if ($debug) Debug.write("onMetaData ",info);
+    </handler>
+    
+    <method name="calcProgressBar" args="tObjRef">
+        if ($debug) Debug.write("calcProgressBar updateRecordingStreamTime",this._ns.time)
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'updateRecordingStreamTime',this._ns.time);
+        if (this.timerDelegateStarted) {
+            lz.Timer.addTimer( this.timerDelegate , 1000 );
+        }
+    </method>
+    
+</class>	
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/main.as3.lzx b/WebContent/swf10/main.as3.lzx
new file mode 100644
index 0000000..a991fcf
--- /dev/null
+++ b/WebContent/swf10/main.as3.lzx
@@ -0,0 +1,156 @@
+<?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.
+  
+-->
+<canvas width="100%" height="100%" title="OpenMeetings">
+	
+	<switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.net.*;
+                import flash.display.*;
+                import flash.events.*;
+            </passthrough>
+        </when>
+    </switch>
+	<switch>
+		<when property="$debug">
+			<method name="doDebugInit">
+				canvas.setAttribute('debug', true);
+			</method>
+			<debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="60%" height="50%" />
+		</when>
+		<otherwise>
+			<method name="doDebugInit">
+			</method>
+		</otherwise>
+    </switch>
+    
+    <include href="testVideoObject.lzx" />
+
+    <silverstyle name="componentStyle" basecolor="0xFFFFFF" textcolor="0x000000" />
+
+    <attribute name="lc_SID"/>
+
+    <attribute name="vid_lc_name" />
+
+    <attribute name="lc"/>
+
+    <attribute name="rtmp_lc_name" />
+
+    <attribute name="rtmp_lc"/>
+
+    <attribute name="videoComp_lc_name" />
+
+    <attribute name="videoComp_lc_callback_name" />
+
+    <attribute name="videoComp_lc" />
+
+    <include href="base/" />
+
+    <include href="modules/" />
+
+    <include href="video/" />
+    
+    <include href="screensharing/" />
+    
+    <include href="audioVideoTest/" />
+    
+    <include href="lzrecorder/" />
+    
+    <include href="whiteboard/" />
+
+    <include href="commonVideoViewContentSWF10.lzx" />
+
+    <include href="hibAdapter.lzx" />
+
+    <include href="miniIcons.lzx" />
+
+    <include href="dragHelper.lzx" />
+
+    <view name="mainComponent" width="${canvas.width}" height="${canvas.height}">
+        <text id="mainBaseText"> </text>
+    </view>
+
+    <method name="getLCSID">
+        //TODO: fixme
+        return "" + Math.floor(999999*Math.random());
+    </method>
+
+	<method name="getAppBaseUrlWithoutSwfSuffix">
+	<![CDATA[
+		var urlObject = lz.Browser.getBaseURL();
+		//If Port is Null or undefinied use port 80
+		var port = (urlObject.port != null && urlObject.port != undefined) ? urlObject.port : 80;
+		//if($debug) Debug.write("getBaseUrl:: [urlObject, port]", urlObject, port);
+		var url = "" + urlObject.protocol + "://" + urlObject.host + (port != 80 ? ":" + port : "") + urlObject.path;
+		//if($debug) Debug.write("!!!!!!! getBaseUrl:: [urlObject, port, url]", urlObject, port, url);
+		url = url + (url.slice(-1) == '/' ? '' : '/');
+		//if($debug) Debug.write("!!!!!!! getBaseUrl:: [last, url]", url.slice(-1), url);
+		return url;
+	]]>
+	</method>
+
+    <handler name="oninit"><![CDATA[
+		doDebugInit();
+    
+        var tInitArgsArry = new Array('secureHash','invitationHash','sid','roomid','directRoomId'
+        	,'language','hash','cuser','tAccept','moodleRoom','becomemoderator','wwwroot','user_id'
+        	,'picture','scopeRoomId', 'wicketsid', 'wicketroomid');
+    
+        this.setAttribute('lc_SID', this.getLCSID());
+        this.setAttribute('vid_lc_name', lc_SID + '__videoLC');
+        this.setAttribute('rtmp_lc_name', lc_SID + '__rtmpLC');
+        this.setAttribute('videoComp_lc_name', lc_SID + '__streamLC');
+        this.setAttribute('videoComp_lc_callback_name', lc_SID + '__streamLC_cback');
+
+        var videoComp_lc_cback:LocalConnection = new LocalConnection();
+        videoComp_lc_cback.connect(this.videoComp_lc_callback_name);
+        this.setAttribute('videoComp_lc',videoComp_lc_cback);
+        
+        var tqueryString = "";
+        for (var i = 0; i < tInitArgsArry.length; ++i) {
+            // if ($debug) Debug.write(tInitArgsArry[i],lz.Browser.getInitArg(tInitArgsArry[i]));
+            var tValue = lz.Browser.getInitArg(tInitArgsArry[i]);
+            if (tValue != undefined) {
+                tqueryString += "&" + tInitArgsArry[i] + "=" + tValue;
+                if (tInitArgsArry[i].startsWith('wicket')) {
+                	canvas.setAttribute(tInitArgsArry[i], tValue);
+                }
+            }
+        }
+        
+        var tSWFURL = getAppBaseUrlWithoutSwfSuffix() + "main" + ($debug ? "debug" : "") + ".swf8.swf?lzproxied=solo&lc_SID="+lc_SID+tqueryString;
+        
+        if ($debug) Debug.write("tSWFURL :: ",tSWFURL);
+        
+        var request:URLRequest = new URLRequest(tSWFURL);
+        var loader:Loader = new Loader();
+        loader.load(request);
+        this.mainComponent.sprite.addChild(loader);
+
+        new lz.commonVideoViewContentSWF10(this, {name:'_videoComponent'});
+        new lz.hibAdapter(this);
+
+        if ($debug) Debug.write("main::init DONE");
+    ]]></handler>
+
+    <view name="inner"></view>
+    
+</canvas>
diff --git a/WebContent/swf10/miniIcons.lzx b/WebContent/swf10/miniIcons.lzx
new file mode 100644
index 0000000..301d381
--- /dev/null
+++ b/WebContent/swf10/miniIcons.lzx
@@ -0,0 +1,67 @@
+<?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.
+  
+-->
+<library>
+
+<class name="miniIcons" extends="view" stretches="both">
+	<attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x-1);
+        	this.setAttribute("y",this.y-1);
+        	this.setAttribute("height",this.height+2);
+        	this.setAttribute("width",this.width+2);
+    	}
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+    	}
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
+<class name="miniIconsImage" extends="image" stretches="both">
+	<attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x-1);
+        	this.setAttribute("y",this.y-1);
+        	this.setAttribute("height",this.height+2);
+        	this.setAttribute("width",this.width+2);
+    	}
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+    	if (this.showhandcursor) {
+        	this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+    	}
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/modules/conference/library.lzx b/WebContent/swf10/modules/conference/library.lzx
new file mode 100644
index 0000000..9d1d1d1
--- /dev/null
+++ b/WebContent/swf10/modules/conference/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="popups/" />
+
+</library>
diff --git a/WebContent/swf10/modules/conference/popups/confirmationSingleSWF10.lzx b/WebContent/swf10/modules/conference/popups/confirmationSingleSWF10.lzx
new file mode 100644
index 0000000..25b3c86
--- /dev/null
+++ b/WebContent/swf10/modules/conference/popups/confirmationSingleSWF10.lzx
@@ -0,0 +1,150 @@
+<?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.
+
+-->
+<library>
+
+<class name="confirmationSingleSWF10" extends="labelExplorerBox" labelid="832"
+    docking="true" resizeable="false" closable="true" height="140" width="300">
+
+    <attribute name="refObj" value="null" />
+
+    <attribute name="refReturnMethod" value="null" />
+
+    <attribute name="showCheckBox" value="true" type="boolean" />
+
+    <attribute name="labeliderror" value="0" type="number" />
+
+    <attribute name="result" type="bool"/>
+    
+    <attribute name="iconResource" value="warning_popup_icon_rsc" type="string" />
+
+	<image x="4" src="$once{ canvas.getThemeImage(parent.iconResource) }" y="24" />
+
+    <labelText labelid="$once{ parent.labeliderror }" y="24"
+    		   width="$once{ parent.width - 40 }"
+    	multiline="true" resize="false" x="30" />
+
+    <handler name="oninit">
+        <![CDATA[
+
+            //Set Position of Confirmation Box as Close as possible to the Mouse
+            var x = parent.getMouse("x");
+            var y = parent.getMouse("y");
+            var newx = x - (this.width/2);
+            var newy = y - (this.height/2);
+
+            if ($debug) Debug.write("1",x,y,newx,newy);
+
+            if (newx < 0) {
+                newx = 20;
+            }
+            if (newy < 0) {
+                newy = 20;
+            }
+
+            //if ($debug) Debug.write("1.1",(this.width + newx + 20),parent.width,this.width);
+
+            var relativeWidth = parent.width;
+            if (relativeWidth > canvas.width) {
+            	relativeWidth = canvas.width;
+            }
+
+            if (this.width + newx + 20 > relativeWidth) {
+            	newx = relativeWidth-this.width-20;
+            }
+
+            if (this.height + newy + 20 > parent.height) {
+            	newy = parent.height-this.height-20;
+            }
+
+            if ($debug) Debug.write("2",newx,newy);
+
+            this.setAttribute("x",newx);
+            this.setAttribute("y",newy);
+
+        ]]>
+    </handler>
+
+    <labelCheckbox name="holddatainSO" visibility="$once{ (parent.showCheckBox) ? 'visible' : 'hidden' }"
+                   labelid="64" x="10" y="$once{ parent.height - 46 }" />
+
+    <simpleLabelButton labelid="61" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		var t = parent.holddatainSO.getValue();
+    		this.parent.close();
+            this.parent.result = false;
+            if (null != this.parent.refObj) {
+                if (parent.refReturnMethod == null) {
+                    this.parent.refObj.sendConfirmation(false,t);
+                } else {
+                    this.parent.refObj[parent.refReturnMethod](false,t);
+                }
+            }
+            if ($debug) Debug.write("end");
+    	</handler>
+    </simpleLabelButton>
+    <simpleLabelButton labelid="60" width="100" x="$once{ parent.width - 210 }" y="$once{ parent.height - 26 }">
+    	<handler name="onclick">
+    		var t = parent.holddatainSO.getValue();
+    		this.parent.close();
+            this.parent.result = true;
+            if (null != this.parent.refObj) {
+                if (parent.refReturnMethod == null) {
+                    this.parent.refObj.sendConfirmation(true,t);
+                } else {
+                    this.parent.refObj[parent.refReturnMethod](true,t);
+                }
+            }
+    	</handler>
+    </simpleLabelButton>
+</class>
+
+<class name="rememberMessageSWF10" extends="labelExplorerBox" labelid="832"
+	   x="$once{ canvas.width/2 - this.width/2 }" y="100"
+	   docking="true" resizeable="false" closable="true" height="140" width="300">
+
+    <attribute name="refObj" value="null" />
+
+    <attribute name="showCheckBox" value="true" type="boolean" />
+
+    <attribute name="labeliderror" value="0" type="number" />
+
+    <view x="4" resource="warning_icon_rsc" y="24" />
+
+    <labelText labelid="$once{ parent.labeliderror }" y="24"
+               width="$once{ parent.width - 40 }"
+        multiline="true" resize="false" x="30" />
+
+    <labelCheckbox name="holddatainSO" visibility="$once{ (parent.showCheckBox) ? 'visible' : 'hidden' }"
+                   labelid="64" x="10" y="$once{ parent.height - 46 }" />
+
+    <simpleLabelButton labelid="642" width="100" x="$once{ parent.width - 105 }" y="$once{ parent.height - 26 }">
+        <handler name="onclick">
+        	var t = parent.holddatainSO.getValue();
+            this.parent.close();
+            if (null != this.parent.refObj) {
+                this.parent.refObj.sendConfirmation(t);
+            }
+        </handler>
+    </simpleLabelButton>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/modules/conference/popups/errorPopupSWF10.lzx b/WebContent/swf10/modules/conference/popups/errorPopupSWF10.lzx
new file mode 100644
index 0000000..18fb2f9
--- /dev/null
+++ b/WebContent/swf10/modules/conference/popups/errorPopupSWF10.lzx
@@ -0,0 +1,99 @@
+<?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.
+  
+-->
+<library>
+
+<class name="errorPopupSWF10" extends="labelExplorerBox" labelid="204"
+	docking="true" resizeable="false" closable="true" y="100"
+    x="$once{ parent.width/2 - this.width/2 }" height="160" width="324">
+
+	<attribute name="error" value="" type="string" />
+	
+	<attribute name="makeModal" value="false" type="boolean" />
+	
+	<handler name="oninit">
+	   if (this.makeModal) {
+	       lz.ModeManager.makeModal(this);
+	   }
+	</handler>
+	
+	<handler name="onclose">
+       if (this.makeModal) {
+           lz.ModeManager.releaseAll();
+       }
+    </handler>
+
+	<view x="4" resource="warning_icon_rsc" y="24" />
+
+	<view y="24" width="$once{ parent.width - 40 }" height="130" x="30" clip="true">
+		<text fontsize="10" fontstyle="bold" text="${ parent.parent.error }"
+			multiline="true" width="$once{ parent.width - 16 }" selectable="true" />
+	</view>
+    
+    <simpleLabelButton labelid="642" width="100" x="$once{ parent.width-105 }" 
+           y="$once{ parent.height-24 }" 
+           onclick="this.parent.close();" />
+
+</class>
+
+<class name="labelerrorPopupSWF10" extends="errorPopupSWF10">
+
+    <attribute name="errorlabelid" type="number" setter="setErrorLabelId(errorlabelid)" />
+    <method name="setErrorLabelId" args="errorlabelid" >
+        this.errorlabelid = errorlabelid;
+        this.setAttribute("error",canvas.getLabelName(this.errorlabelid));
+        if ($debug) Debug.write("labelerrorPopupSWF10: ",canvas.getLabelName(this.errorlabelid));
+    </method>
+    
+
+</class>
+
+<class name="singletonErrorPopupSWF10" extends="errorPopupSWF10">
+	<handler name="oninit">
+		lz.singletonErrorPopupHolderSWF10.dialogPresent = 1;
+		lz.singletonErrorPopupHolderSWF10.dialogObject = this;
+	</handler>
+	
+	<handler name="ondestroy">
+		lz.singletonErrorPopupHolderSWF10.dialogPresent = 0;
+		lz.singletonErrorPopupHolderSWF10.dialogObject = null;
+	</handler>
+</class>
+
+<class name="singletonErrorPopupHolderSWF10">
+	<attribute name="error" type="string" setter="setError(error)"/>
+	<attribute name="dialogPresent" allocation="class" value="0" />
+	<attribute name="dialogObject" allocation="class" />
+	
+	<method name="setError" args="error">
+	
+		if ( lz.singletonErrorPopupHolderSWF10.dialogPresent == 0 )
+		{
+			lz.singletonErrorPopupHolderSWF10.dialogPresent = 1;
+			lz.singletonErrorPopupHolderSWF10.dialogObject = new lz.singletonErrorPopupSWF10(canvas,{error:error});
+		}
+		else
+		{
+			lz.singletonErrorPopupHolderSWF10.dialogObject.error = error;
+		}
+	</method>
+</class>
+
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/modules/conference/popups/library.lzx b/WebContent/swf10/modules/conference/popups/library.lzx
new file mode 100644
index 0000000..453df78
--- /dev/null
+++ b/WebContent/swf10/modules/conference/popups/library.lzx
@@ -0,0 +1,32 @@
+<?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.
+  
+-->
+<library>
+	
+	<!-- 
+	FamFam Icon Set
+	Creative Commons 3.0
+	 -->
+	<resource name="warning_icon_rsc" src="resources/error.png" />
+
+    <include href="confirmationSingleSWF10.lzx" />
+    <include href="errorPopupSWF10.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/modules/conference/popups/resources/error.png b/WebContent/swf10/modules/conference/popups/resources/error.png
new file mode 100644
index 0000000..628cf2d
--- /dev/null
+++ b/WebContent/swf10/modules/conference/popups/resources/error.png
Binary files differ
diff --git a/WebContent/swf10/modules/library.lzx b/WebContent/swf10/modules/library.lzx
new file mode 100644
index 0000000..1f553d0
--- /dev/null
+++ b/WebContent/swf10/modules/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="conference/" />
+
+</library>
diff --git a/WebContent/swf10/networkTesting/networktesting.lzx b/WebContent/swf10/networkTesting/networktesting.lzx
new file mode 100644
index 0000000..7001f3e
--- /dev/null
+++ b/WebContent/swf10/networkTesting/networktesting.lzx
@@ -0,0 +1,134 @@
+<?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.
+  
+-->
+<canvas width="100%" height="100%" title="NetworkTesting">
+
+	<switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.external.ExternalInterface;
+            </passthrough>
+        </when>
+    </switch>
+	<switch>
+		<when property="$debug">
+			<method name="doDebugInit">
+				canvas.setAttribute('debug', true);
+			</method>
+			<debug fontsize="11" oninit="Debug.showInternalProperties = true" width="40%" y="50%" x="60%" height="50%" />
+		</when>
+		<otherwise>
+			<method name="doDebugInit">
+			</method>
+		</otherwise>
+    </switch>
+    
+    <include href="testsView.lzx" />
+    <handler name="oninit"><![CDATA[
+    	flash.external.ExternalInterface.call("loadingComplete");
+		doDebugInit();
+	]]></handler>
+	
+    <!--
+        These attributes are rewritten by values from "public/config.xml"
+    -->
+    <attribute name="rtmpProtocol" type="string" value="rtmp" />
+    <attribute name="rtmpHost" type="string" value="" />
+    <attribute name="rtmpPort" type="number" value="1935" />
+    
+    <attribute name="httpProtocol" type="string" value="http" />
+    <attribute name="httpHost" type="string" value="" />
+    <attribute name="httpPort" type="number" value="5080" />
+    <attribute name="uriContext" type="string" value="/openmeetings" />
+    <attribute name="rtmpUriPath" type="string" value="/openmeetings/hibernate" />
+
+	<method name="getBrowserHost">
+		var host:String = ExternalInterface.call("window.location.host.toString()");
+		// in case of IE or some other security issues we will fail ...
+		if (!host) {
+			var url:String = canvas.proxyurl;
+			if (url) {
+				if ($debug) Debug.write("url ", url);
+				var paramsIdx = url.indexOf("?");
+				if (paramsIdx != -1) {
+					url = url.substr(0, paramsIdx);
+				}
+				if ($debug) Debug.write("url ", url);
+				url = url.substr(url.indexOf("//") + 2);
+				var portIdx = url.indexOf(":");
+				host = url.substr(0, portIdx != -1 ? portIdx : url.indexOf("/"));
+				if ($debug) Debug.write("host ", host);
+			}
+		}
+		return host;
+	</method>
+	
+	<method name="getSettings">
+		var settingsPtr = canvas.settings.getPointer();
+		
+		var useSSL:Boolean = ("yes" == settingsPtr.xpathQuery("config/useSSL/text()"));
+		canvas.setAttribute("rtmpProtocol", useSSL ? "rtmps" : "rtmp");
+		canvas.setAttribute("proxyType", settingsPtr.xpathQuery("config/proxyType/text()"));
+		canvas.setAttribute("rtmpHost", settingsPtr.xpathQuery("config/rtmphostlocal/text()"));
+		if (!canvas.rtmpHost) {
+			canvas.rtmpHost = getBrowserHost();
+		}
+		canvas.setAttribute("rtmpPort", settingsPtr.xpathQuery("config/" + (useSSL ? "rtmpsslport" : "rtmpport") + "/text()"));
+		
+		canvas.setAttribute("httpProtocol", settingsPtr.xpathQuery("config/protocol/text()"));
+		canvas.setAttribute("httpHost", settingsPtr.xpathQuery("config/httphostlocal/text()"));
+		if (!canvas.httpHost) {
+			canvas.httpHost = rtmpHost;
+		}
+		canvas.setAttribute("httpPort", settingsPtr.xpathQuery("config/red5httpport/text()"));
+
+		canvas.setAttribute("uriContext", settingsPtr.xpathQuery("config/httpRootKey/text()"));
+		canvas.setAttribute("rtmpUriPath", canvas.uriContext + "hibernate");
+	</method>
+
+    <method name="showTests">
+        var tests = new lz.TestsView(canvas, {name:"testsView"});
+        tests.testAll();
+    </method>
+
+    <dataset type="http" name="settings" request="false" proxied="false">
+        <handler name="oninit">
+            this.setAttribute("src", "config.xml");
+            this.doRequest();
+        </handler>
+        <handler name="ondata">
+            if ($debug) Debug.write("Settings are retrieved");
+            canvas.getSettings();
+            canvas.showTests();
+        </handler>
+        <handler name="onerror" args="e">
+            if ($debug) Debug.write("Settings error [" + this.src + "]", e);
+        </handler>
+        <handler name="ontimeout" args="e">
+            if ($debug) Debug.write("Settings timeout error", e);
+        </handler>
+    </dataset>
+
+    <attribute name="busy" type="boolean" value="false"/>
+    <attribute name="log" type="string" value="" />
+
+    <attribute name="testsView" value="null"/>
+
+</canvas>
diff --git a/WebContent/swf10/networkTesting/resources/edit-copy.png b/WebContent/swf10/networkTesting/resources/edit-copy.png
new file mode 100644
index 0000000..8dd48c4
--- /dev/null
+++ b/WebContent/swf10/networkTesting/resources/edit-copy.png
Binary files differ
diff --git a/WebContent/swf10/networkTesting/tests/BaseURLLoadTest.lzx b/WebContent/swf10/networkTesting/tests/BaseURLLoadTest.lzx
new file mode 100644
index 0000000..7660b0f
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/BaseURLLoadTest.lzx
@@ -0,0 +1,146 @@
+<?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.
+
+-->
+<library>
+
+<class name="BaseURLLoadTest" extends="NetworkTest">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.events.*;
+                import flash.net.*;
+                import flash.utils.*;
+            </passthrough>
+        </when>
+    </switch>
+
+    <attribute name="testsCount" type="number" value="0" />
+    <attribute name="testTypeParameter" type="string" value="null" />
+    <attribute name="verbose" type="boolean" value="true" />
+
+    <attribute name="startTime" type="number" value="0" />
+    <attribute name="wholeTime" type="number" value="0" />
+    <attribute name="maxTime" type="number" value="0" />
+    <attribute name="minTime" type="number" value="999999" />
+    <attribute name="finishedTestsCount" type="number" value="0" />
+    <attribute name="successfulTestsCount" type="number" value="0" />
+
+    <attribute name="hostUrl" type="string" value="" />
+    <attribute name="loaderInited" type="boolean" value="false" />
+    <attribute name="request" value="null" />
+    <attribute name="loader" value="null" />
+
+    <method name="initLoader">
+        hostUrl = getBaseUrl() + "networktest.upload?testType=" + testTypeParameter;
+        request = new URLRequest(hostUrl);
+
+        loader = new URLLoader();
+        loader.addEventListener(Event.COMPLETE, this.onComplete);
+        loader.addEventListener(IOErrorEvent.IO_ERROR, this.onError);
+        loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onError);
+
+        loaderInited = true;
+    </method>
+
+    <method name="start">
+        if (!loaderInited) {
+            this.initLoader();
+        }
+        finishedTestsCount = 0;
+        successfulTestsCount = 0;
+        wholeTime = 0;
+        maxTime = 0;
+        minTime = 999999;
+
+        this.log("start test... " + hostUrl);
+        startTime = getTimer();
+        loader.load(request);
+    </method>
+
+    <method name="forcedStop">
+        loader.close();
+        this.log("stopped");
+    </method>
+
+    <method name="onComplete" args="e">
+        <![CDATA[
+        var endTime = getTimer();
+        var pingTime = endTime - startTime;
+        wholeTime += pingTime;
+        if (pingTime > maxTime) {
+            maxTime = pingTime;
+        }
+        if (pingTime < minTime) {
+            minTime = pingTime;
+        }
+
+        if (verbose) {
+            this.log("load time = " + pingTime + " ms");
+        }
+
+        finishedTestsCount++;
+        successfulTestsCount++;
+        if (finishedTestsCount < testsCount && running) {
+            startTime = getTimer();
+            loader.load(request);
+        } else {
+            this.report();
+        }
+        ]]>
+    </method>
+
+    <method name="onError" args="e">
+        <![CDATA[
+        if (verbose) {
+            this.log("Error - " + e);
+        }
+
+        finishedTestsCount++;
+        if (finishedTestsCount < testsCount && running) {
+            startTime = getTimer();
+            loader.load(request);
+        } else {
+            this.report();
+        }
+        ]]>
+    </method>
+
+    <method name="report">
+        var report = "report:";
+        if (successfulTestsCount > 0) {
+            report += "\n" + this.generateReport();
+        } else {
+            report += " connection error";
+        }
+        this.log(report);
+
+        if (successfulTestsCount > 0) {
+            this.setPassed();
+        } else {
+            this.setFailed();
+        }
+    </method>
+
+    <method name="generateReport" />
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/DownloadSpeedTest.lzx b/WebContent/swf10/networkTesting/tests/DownloadSpeedTest.lzx
new file mode 100644
index 0000000..a5ea115
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/DownloadSpeedTest.lzx
@@ -0,0 +1,50 @@
+<?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.
+
+-->
+<library>
+
+<class name="DownloadSpeedTest" extends="BaseURLLoadTest">
+
+    <handler name="oninit">
+        this.setAttribute("testsCount", 1);
+        this.setAttribute("testName", "Download speed");
+        this.setAttribute("testTypeParameter", "download");
+        this.setAttribute("verbose", false);
+        this.setAttribute("resultText", true);
+    </handler>
+
+    <method name="generateReport">
+        var mBytes = loader.bytesTotal/(1024*1024);
+        var timeSec = wholeTime/1000;
+        var speed = mBytes/timeSec;
+
+        var report = "Bytes downloaded: " + mBytes + " Mb\n";
+        report += "Download time: " + timeSec + " s\n";
+        report += "Download speed: " + speed + " Mb/s\n";
+
+        resultLabel.setAttribute("text", "");
+        resultLabel.addFormat("%.2f\n%s", speed, "Mb/s");
+
+        return report;
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/JitterTest.lzx b/WebContent/swf10/networkTesting/tests/JitterTest.lzx
new file mode 100644
index 0000000..dd80bb0
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/JitterTest.lzx
@@ -0,0 +1,57 @@
+<?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.
+
+-->
+<library>
+
+<class name="JitterTest" extends="BaseURLLoadTest">
+
+    <handler name="oninit">
+        this.setAttribute("testsCount", 100);
+        this.setAttribute("testName", "Jitter");
+        this.setAttribute("testTypeParameter", "jitter");
+        this.setAttribute("verbose", false);
+        this.setAttribute("resultText", true);
+    </handler>
+
+    <method name="generateReport">
+        <![CDATA[
+        var averageTime = wholeTime / successfulTestsCount;
+        var jitterMax = maxTime - averageTime;
+        var jitterMin = minTime - averageTime;
+        var report = "Average time: " + averageTime + " ms\n";
+        report += "Min time: " + minTime + " ms\n";
+        report += "Max time: " + maxTime + " ms\n";
+        report += "Jitter: " + jitterMax + " ms and " + jitterMin + " ms \n";
+
+        var max = -jitterMin;
+        if (jitterMax > max) {
+            max = jitterMax;
+        }
+
+        resultLabel.setAttribute("text", "");
+        resultLabel.addFormat("%.0d\n%s", max, "ms");
+
+        return report;
+        ]]>
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/NetworkTest.lzx b/WebContent/swf10/networkTesting/tests/NetworkTest.lzx
new file mode 100644
index 0000000..9fe5e8f
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/NetworkTest.lzx
@@ -0,0 +1,131 @@
+<?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.
+
+-->
+<library>
+
+<class name="NetworkTest" extends="view">
+
+    <attribute name="testName" type="string" value="null" />
+    <attribute name="protocol" type="string" value="null" />
+    <attribute name="host" type="string" value="null" />
+    <attribute name="port" type="number" value="null" />
+    <attribute name="running" type="boolean" value="false" />
+    <attribute name="allTests" type="boolean" value="false" />
+    <attribute name="resultText" type="boolean" value="false" />
+
+    <method name="start" />
+    <method name="forcedStop" />
+
+    <method name="startAllTestsMode">
+        allTests = true;
+        this.setRunning();
+    </method>
+
+    <view name="picture">
+        <view name="rsc" resource="notrun" width="113" height="113" />
+    </view>
+    <text name="nameLabel"
+          text="${parent.testName}"
+          x="${(parent.picture.rsc.width - this.width)/2}"
+          y="$once{parent.picture.rsc.height}"
+    />
+    <text name="resultLabel"
+          visible="false"
+          fgcolor="white"
+          align="center"
+          fontsize="16"
+    />
+
+    <handler name="onclick">
+        if (running) {
+            this.setStopped();
+        } else {
+            allTests = false;
+            this.setRunning();
+        }
+    </handler>
+
+    <method name="handleAllTestsMode">
+        if (allTests) {
+            canvas.testsView.testAll();
+        }
+    </method>
+    
+    <method name="setPassed">
+        if (running) {
+            running=false;
+            if (resultText) {
+                picture.rsc.setAttribute("resource", "passed_result");
+                var x = (picture.rsc.width - resultLabel.width)/2;
+                var y = (picture.rsc.height - resultLabel.height)/2;
+                resultLabel.setAttribute("x", x);
+                resultLabel.setAttribute("y", y);
+                resultLabel.setAttribute("visible", true);
+            } else {
+                picture.rsc.setAttribute("resource", "passed");
+            }
+            canvas.setAttribute("busy", false);
+            this.handleAllTestsMode();
+        }
+    </method>
+
+    <method name="setFailed">
+        if (running) {
+            running=false;
+            picture.rsc.setAttribute("resource", "failed");
+            canvas.setAttribute("busy", false);
+            this.handleAllTestsMode();
+        }
+    </method>
+
+    <method name="setRunning">
+        if (canvas.busy) {
+            return;
+        }
+        canvas.setAttribute("busy", true);
+        this.start();
+        running=true;
+        resultLabel.setAttribute("visible", false);
+        picture.rsc.setAttribute("resource", "running");
+        picture.rsc.play();
+    </method>
+
+    <method name="setStopped">
+        this.forcedStop();
+        running=false;
+        picture.rsc.setAttribute("resource", "notrun");
+        canvas.setAttribute("busy", false);
+        this.handleAllTestsMode();
+    </method>
+
+    <method name="log" args="message">
+        var str = testName + ": " + message + "\n";
+        canvas.log += str;
+        if ($debug) Debug.write(str);
+    </method>
+
+    <method name="getBaseUrl">
+    	var hostUrl = protocol + "://" + host + ":" + port + canvas.uriContext;
+    	return hostUrl + (hostUrl.slice(-1) == '/' ? '' : '/');
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/PingTest.lzx b/WebContent/swf10/networkTesting/tests/PingTest.lzx
new file mode 100644
index 0000000..b086d3b
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/PingTest.lzx
@@ -0,0 +1,43 @@
+<?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.
+
+-->
+<library>
+
+<class name="PingTest" extends="BaseURLLoadTest">
+
+    <handler name="oninit">
+        this.setAttribute("testsCount", 10);
+        this.setAttribute("testName", "Ping");
+        this.setAttribute("testTypeParameter", "ping");
+    </handler>
+
+    <method name="generateReport">
+        var averageTime = wholeTime / successfulTestsCount;
+        var packetsLost = testsCount - successfulTestsCount;
+        var report = "Average ping time: " + averageTime + " ms\n";
+        report += "Packets received: " + successfulTestsCount + "\n";
+        report += "Packets lost: " + packetsLost + "\n";
+
+        return report;
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/PortAvailabilityTest.lzx b/WebContent/swf10/networkTesting/tests/PortAvailabilityTest.lzx
new file mode 100644
index 0000000..cacf362
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/PortAvailabilityTest.lzx
@@ -0,0 +1,89 @@
+<?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.
+
+-->
+<library>
+
+<class name="PortAvailabilityTest" extends="NetworkTest">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.events.*;
+                import flash.net.*;
+                import flash.system.*;
+            </passthrough>
+        </when>
+    </switch>
+
+    <rtmpConnection name="rtmp" autoconnect="false" debug="true" />
+
+    <handler name="oninit">
+        this.setAttribute("testName", "Port");
+    </handler>
+
+    <method name="start">
+        var hostUrl = protocol + "://" + host + ":" + port + canvas.rtmpUriPath;
+        rtmp.setAttribute("src", hostUrl);
+        this.log(": start test... " + hostUrl);
+
+        rtmp.connect();
+    </method>
+
+    <method name="forcedStop">
+        this.log("stopped");
+		disconnect();
+    </method>
+
+	<method name="disconnect">
+       rtmp._nc.close();
+       rtmp.setAttribute('status', 'disconnected');
+       rtmp.setAttribute('stage', 0);
+	</method>
+	
+    <handler name="onconnect" reference="rtmp">
+		if (running) {
+			this.log("port is available\n");
+			this.setPassed();
+			disconnect();
+        }
+    </handler>
+
+    <handler name="onerror" args="e" reference="rtmp">
+        if (running) {
+            this.log("connection error - " + e + "\n");
+            this.setFailed();
+        }
+    </handler>
+
+    <handler name="onstatus" args="e" reference="rtmp">
+        if (running) {
+        	switch(e) {
+        		case "timed out":
+        		case "connection failed":
+        			this.setFailed();
+        			break;
+        	}
+            if($debug) Debug.write(testName + ": RTMP connect status - ", e);
+        }
+    </handler>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/UploadSpeedTest.lzx b/WebContent/swf10/networkTesting/tests/UploadSpeedTest.lzx
new file mode 100644
index 0000000..01e1402
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/UploadSpeedTest.lzx
@@ -0,0 +1,117 @@
+<?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.
+
+-->
+<library>
+
+<class name="UploadSpeedTest" extends="NetworkTest">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.events.*;
+                import flash.net.*;
+                import flash.utils.*;
+            </passthrough>
+        </when>
+    </switch>
+
+    <attribute name="startTime" type="number" value="0" />
+
+    <attribute name="hostUrl" type="string" value="" />
+    <attribute name="loaderInited" type="boolean" value="false" />
+    <attribute name="request" value="null" />
+    <attribute name="loader" value="null" />
+
+    <handler name="oninit">
+        this.setAttribute("testName", "Upload speed");
+        this.setAttribute("resultText", true);
+    </handler>
+
+    <method name="initLoader">
+        hostUrl = getBaseUrl() + "networktest.upload";
+        request = new URLRequest(hostUrl);
+        request.method = URLRequestMethod.POST;
+        request.data = getDataString();
+
+        loader = new URLLoader();
+        loader.addEventListener(Event.COMPLETE, this.onComplete);
+        loader.addEventListener(IOErrorEvent.IO_ERROR, this.onError);
+        loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onError);
+
+        loaderInited = true;
+    </method>
+
+    <method name="start">
+        if (!loaderInited) {
+            this.initLoader();
+        }
+
+        this.log("start test... " + hostUrl);
+        startTime = getTimer();
+        loader.load(request);
+    </method>
+
+    <method name="forcedStop">
+        loader.close();
+        this.log("stopped");
+    </method>
+
+    <method name="onComplete" args="e">
+        if (running) {
+            var endTime = getTimer();
+            var loadTime = endTime - startTime;
+            var loadTimeSec = loadTime/1000;
+            var mBytes = request.data.length/(1024*1024);
+            var speed = mBytes / loadTimeSec;
+
+            var report = "report:\n";
+            report += "Bytes uploaded: " + mBytes + " Mb\n";
+            report += "Upload time: " + loadTimeSec + " s\n";
+            report += "Upload speed: " + speed + " Mb/s\n";
+
+            resultLabel.setAttribute("text", "");
+            resultLabel.addFormat("%.2f\n%s", speed, "Mb/s");
+            this.log(report);
+            this.setPassed();
+        }
+    </method>
+
+    <method name="onError" args="e">
+        if (running) {
+            this.log("error - " + e);
+            this.setFailed();
+        }
+    </method>
+
+    <!-- returns a 1 Mb string-->
+    <method name="getDataString">
+        <![CDATA[
+        var result = "";
+        var str64 = "0000000000000000000000000000000000000000000000000000000000000000";
+        for (var i=0; i<16384; i++) {
+            result += str64;
+        }
+        return result;
+        ]]>
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/library.lzx b/WebContent/swf10/networkTesting/tests/library.lzx
new file mode 100644
index 0000000..9b8575d
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/library.lzx
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<library>
+
+    <resource name="failed" src="resources/failed.png" />
+    <resource name="notrun" src="resources/notrun.png" />
+    <resource name="passed" src="resources/passed.png" />
+    <resource name="passed_result" src="resources/passed_result.png" />
+    <resource name="running" src="resources/running.swf" />
+
+    <include href="BaseURLLoadTest.lzx" />
+    <include href="DownloadSpeedTest.lzx" />
+    <include href="JitterTest.lzx" />
+    <include href="NetworkTest.lzx" />
+    <include href="PingTest.lzx" />
+    <include href="PortAvailabilityTest.lzx" />
+    <include href="UploadSpeedTest.lzx" />
+
+</library>
diff --git a/WebContent/swf10/networkTesting/tests/resources/failed.png b/WebContent/swf10/networkTesting/tests/resources/failed.png
new file mode 100644
index 0000000..8654b24
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/resources/failed.png
Binary files differ
diff --git a/WebContent/swf10/networkTesting/tests/resources/notrun.png b/WebContent/swf10/networkTesting/tests/resources/notrun.png
new file mode 100644
index 0000000..cb869eb
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/resources/notrun.png
Binary files differ
diff --git a/WebContent/swf10/networkTesting/tests/resources/passed.png b/WebContent/swf10/networkTesting/tests/resources/passed.png
new file mode 100644
index 0000000..5929d15
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/resources/passed.png
Binary files differ
diff --git a/WebContent/swf10/networkTesting/tests/resources/passed_result.png b/WebContent/swf10/networkTesting/tests/resources/passed_result.png
new file mode 100644
index 0000000..d4d6f84
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/resources/passed_result.png
Binary files differ
diff --git a/WebContent/swf10/networkTesting/tests/resources/running.swf b/WebContent/swf10/networkTesting/tests/resources/running.swf
new file mode 100644
index 0000000..138d3e1
--- /dev/null
+++ b/WebContent/swf10/networkTesting/tests/resources/running.swf
Binary files differ
diff --git a/WebContent/swf10/networkTesting/testsView.lzx b/WebContent/swf10/networkTesting/testsView.lzx
new file mode 100644
index 0000000..8dbdb59
--- /dev/null
+++ b/WebContent/swf10/networkTesting/testsView.lzx
@@ -0,0 +1,105 @@
+<?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.
+
+-->
+<library>
+
+<include href="../base/remote/rtmpConnection.lzx" />
+<include href="tests/" />
+<resource name="log" src="resources/edit-copy.png" />
+
+<class name="TestsView" extends="view">
+
+    <attribute name="offset" type="number" value="20" />
+    <attribute name="smallOffset" type="number" value="5" />
+
+    <text name="label"
+        text="Click a play button to run a test"
+        x="${parent.offset}"
+        y="${parent.offset}"
+    />
+    <view name="logButton"
+        x="${parent.width - this.rsc.width - parent.offset}"
+        y="${parent.label.y + (parent.label.height - this.rsc.height)/2}"
+    >
+        <image name="rsc" resource="log" height="16" width="16"/>
+        <handler name="onclick">
+            lz.Browser.setClipboard(canvas.log);
+        </handler>
+    </view>
+
+    <text name="logLabel"
+        text="Copy the log to the clipboard:"
+        x="${parent.logButton.x - this.width - parent.smallOffset}"
+        y="${parent.label.y}"
+    />
+
+    <PingTest
+        name="pingTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+        x="${parent.offset}"
+        y="${parent.label.y + parent.label.height + parent.offset/2}"
+    />
+    <PortAvailabilityTest
+        name="portTest" protocol="${canvas.rtmpProtocol}" host="${canvas.rtmpHost}" port="${canvas.rtmpPort}"
+        x="${parent.pingTest.x + parent.pingTest.width + parent.offset}"
+        y="${parent.pingTest.y}"
+     />
+    <JitterTest
+        name="jitterTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+        x="${parent.portTest.x + parent.portTest.width + parent.offset}"
+        y="${parent.pingTest.y}"
+    />
+    <DownloadSpeedTest
+        name="downloadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+        x="${parent.jitterTest.x + parent.jitterTest.width + parent.offset}"
+        y="${parent.pingTest.y}"
+    />
+
+    <UploadSpeedTest
+        name="uploadTest" protocol="${canvas.httpProtocol}" host="${canvas.httpHost}" port="${canvas.httpPort}"
+        x="${parent.downloadTest.x + parent.downloadTest.width + parent.offset}"
+        y="${parent.pingTest.y}"
+    />
+
+    <attribute name="currentTestNumber" type="number" value="0" />
+    <method name="testAll">
+        var nextTest;
+        if (0 == currentTestNumber) {
+            nextTest = pingTest;
+        } else if (1 == currentTestNumber) {
+            nextTest = portTest;
+        } else if (2 == currentTestNumber) {
+            nextTest = jitterTest;
+        } else if (3 == currentTestNumber) {
+            nextTest = downloadTest;
+        } else if (4 == currentTestNumber) {
+            nextTest = uploadTest;
+        } else if (5 == currentTestNumber) {
+            nextTest = null;
+        }
+
+        if (null != nextTest) {
+            currentTestNumber++;
+            nextTest.startAllTestsMode();
+        }
+    </method>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/screensharing/library.lzx b/WebContent/swf10/screensharing/library.lzx
new file mode 100644
index 0000000..0182183
--- /dev/null
+++ b/WebContent/swf10/screensharing/library.lzx
@@ -0,0 +1,29 @@
+<?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.
+  
+-->
+<library>
+    
+    <!-- FamFam Icon Set -->
+	<resource name="menupointer_rsc" src="resources/cursor.png" />
+	
+	<include href="screenSharingDialog.lzx" />
+    <include href="videoObjectPlayScreenShare.lzx" />
+
+</library>
diff --git a/WebContent/swf10/screensharing/resources/cursor.png b/WebContent/swf10/screensharing/resources/cursor.png
new file mode 100644
index 0000000..532f532
--- /dev/null
+++ b/WebContent/swf10/screensharing/resources/cursor.png
Binary files differ
diff --git a/WebContent/swf10/screensharing/screenSharingDialog.lzx b/WebContent/swf10/screensharing/screenSharingDialog.lzx
new file mode 100644
index 0000000..b83322a
--- /dev/null
+++ b/WebContent/swf10/screensharing/screenSharingDialog.lzx
@@ -0,0 +1,1122 @@
+<?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.
+  
+-->
+<library>
+    
+<class name="screenSharingDialogContainer" extends="view" 
+       width="${parent.width }" height="${ parent.height }">
+	
+	<method name="closeAll">
+		<![CDATA[
+		    if ($debug) Debug.write("screenSharingDialogContainer closeAll");
+            for (var eg in this.subviews) {
+                this.subviews[eg].doClose();
+            }
+            //do first close the video connection before removing the client view
+            this.clearAllSessions();
+        ]]>
+	</method>
+    
+    <method name="clearAllSessions">
+        <![CDATA[
+            if ($debug) Debug.write("screenSharingDialogContainer clearAllSessions");
+            for (var eg in this.subviews) {
+                this.subviews[eg].destroy();
+            }
+        ]]>
+    </method>
+    
+    <method name="searchForSession" args="streamPublishName">
+        <![CDATA[
+        
+            for (var i=0;i<this.subviews.length;i++) {
+                if (this.subviews[i].initObject.streamPublishName == streamPublishName) {
+                    return this.subviews[i];
+                }
+            }
+            
+            if ($debug) Debug.write("No Screen Session "+streamPublishName);
+            return null;
+        ]]>
+    </method>
+    
+</class>    
+
+<class name="screenSharingDialog" extends="labelExplorerBox" labelid="855"
+    docking="true" resizeable="true" closable="true" 
+    width="270" x="$once{ canvas.width - this.width - 20 }" height="100">
+    
+    <attribute name="isStarted" value="false" type="boolean" />
+    
+    <attribute name="currentCursorObject" value="null" />
+    
+    <attribute name="initObject" value="null"/>
+    
+    <handler name="oninit">
+    	var fName = " " + this.initObject.firstname 
+                  + " " + this.initObject.lastname;
+        var tString = canvas.getLabelName(849)
+                        + " " + fName
+                        + " " + canvas.getLabelName(850);
+        
+		this.setAttribute('title', canvas.getLabelName(855) + " " + fName);
+        if (parent.subviews.length > 1) {
+            this.setAttribute("y",((parent.subviews.length-1)*100)+40);
+        } else {
+            this.setAttribute("y",40);
+        }
+        
+        this._initText._infoText.setAttribute("text",tString);
+    </handler>
+    
+    <method name="startViewerSession">
+        <![CDATA[
+        
+            this.isStarted = true;
+            
+            this._subcontent.setAttribute("visibility","visible");
+            
+            this._initText.setAttribute("visibility","hidden");
+        
+            this._showScreenSharing._y.setAttribute("to",0);
+            this._showScreenSharing._height.setAttribute("to",canvas.height);
+            this._showScreenSharing._width.setAttribute("to",canvas.width-260);
+            this._showScreenSharing._x.setAttribute("to",260);
+        
+            this._showScreenSharing.setAttribute('started', true);
+            
+            if ($debug) Debug.write("this.initObject ",this.initObject);
+            
+            this._subcontent._content._video.setAttribute("width",this.initObject.VWidth);
+            this._subcontent._content._video.setAttribute("height",this.initObject.VHeight);
+            
+            this._subcontent._content._video._videostream.playStream(this.initObject.streamPublishName,-1);
+            
+        ]]>
+    </method>
+    
+    <method name="doMinimize">
+        <![CDATA[
+           
+           this.isStarted = false;
+           
+           this._subcontent._content._video._videostream.stop();
+           
+           this._showScreenSharing._y.setAttribute("to",((parent.subviews.length-1)*100)+40);
+           this._showScreenSharing._x.setAttribute("to",canvas.width - 270 - 20);
+           this._showScreenSharing._height.setAttribute("to",100);
+           this._showScreenSharing._width.setAttribute("to",270);
+           
+           this._showScreenSharing.setAttribute('started', true);
+           
+           this._infoBox.setAttribute("visibility","hidden");
+           this._zoombar.setAttribute("visibility","hidden");
+           this._pause.setAttribute("visibility","hidden");
+           this._close.setAttribute("visibility","hidden");
+           
+           this._subcontent.setAttribute("visibility","hidden");
+           
+        ]]>
+    </method>
+    
+    <method name="doClose">
+        if (this.isStarted) {
+            this._subcontent._content._video._videostream.stop();
+        }
+        this.close();
+    </method>
+    
+    <method name="updateCursor" args="x,y">
+        if (this.currentCursorObject == null) {
+            this.currentCursorObject = new lz.screenShareCursorObject(this._subcontent._content,{
+                        refObj:this._subcontent._content._video._videostream
+                    });
+        }
+        this.currentCursorObject.setAttribute("x",x * (this._zoombar._zoom.initialNumber/100));
+        this.currentCursorObject.setAttribute("y",y * (this._zoombar._zoom.initialNumber/100));
+    </method>    
+    
+    <view name="_initText">
+        
+        <!--
+        <view x="4" resource="warning_icon_rsc" y="24" />
+         -->
+         
+        <labelText name="_infoText" labelid="724" width="230" 
+                   x="10" y="26" multiline="true" />
+    
+        <simpleLabelButton name="_startButton" labelid="848" x="10" width="124" y="78">
+            <handler name="onclick">
+                parent.parent.startViewerSession();
+            </handler>
+        </simpleLabelButton> 
+          
+        <simpleLabelButton name="_closeButton" labelid="851" x="138" width="124" y="78">
+            <handler name="onclick">
+                parent.parent.close();
+            </handler>
+        </simpleLabelButton>   
+        
+    </view>
+    
+    <view name="_subcontent" width="${ parent.width }" visibility="hidden"
+          y="20" height="${ parent.height - 48 }" clip="true">
+    	
+        <view name="_content">
+            
+            <videoObjectPlayScreenShare name="_video">
+            	
+            	<contextmenu>
+			
+					<contextmenuitem caption="$once{ canvas.getLabelName(1087) }" 
+									 onselect="parent.parent.parent.pasteContent()" />
+		        
+		        </contextmenu>
+		                
+                <attribute name="doSendEvents" type="boolean" value="true" />
+                
+                <attribute name="idleDelegate" value="null" type="expression" />
+                
+                <attribute name="isMouseOverActive" value="false" type="boolean"/>
+                
+                <attribute name="lastMouseX" value="-1" type="number"/>
+                <attribute name="lastMouseY" value="-1" type="number"/>
+                
+                <attribute name="isMac" value="false" type="boolean"/>
+                <attribute name="isWindows" value="false" type="boolean"/>
+                <attribute name="isLinux" value="false" type="boolean"/>
+                
+                <handler name="oninit">
+                	
+                	var osInfo = lz.Browser.getOS();
+                	
+                	if ($debug) Debug.write("osInfo :: ",osInfo);
+                	
+                	if (osInfo.indexOf("Mac") >= 0) {
+                		this.isMac = true;
+                	} else if (osInfo.indexOf("Win") >= 0) {
+                        this.isWindows = true;
+                    } else if (osInfo.indexOf("Linux") >= 0) {
+                        this.isLinux = true;
+                    }
+                    
+                    if ($debug) Debug.write("this.isMac :: ",this.isMac);
+                    if ($debug) Debug.write("this.isWindows :: ",this.isWindows);
+                	
+                    this.idleDelegate = new LzDelegate( this, "sendMousePosition" );
+                </handler>
+                
+                <method name="pasteContent">
+                	if ($debug) Debug.write("pasteContent :: ");
+                </method>
+                
+                <handler name="onkeydown" reference="lz.Keys" args="k">
+                	<![CDATA[
+	                    if (this.isMouseOverActive) {
+	                        if ($debug) Debug.write("onkeydown ",k);
+	                        
+	                        var tObject = new Object();
+	                        tObject["action"] = "onkeydown";
+	                        tObject["k"] = k;
+	                        
+	                        var downkeys = lz.Keys.downKeysArray;
+	                        
+	                        if ($debug) Debug.write("downkeys ",downkeys,downkeys.length);
+				
+	                        if (this.isWindows) {
+	                        
+    							if (downkeys.length==2 && downkeys[0]==16) {
+    								if (k == 187) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "*";
+    		                        } else if (k == 191) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "'";
+    		                        } else if (k == 189) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "_";
+    		                        } else if (k == 221) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "`";
+    		                        } else if (k == 219) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "?";
+    		                        } else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = ">";
+    		                        } else if (k == 220) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "°";
+    		                        } else if (k == 186) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ü";
+    		                        } else if (k == 222) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ä";
+    		                        } else if (k == 192) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ö";
+    		                        }
+    		                        
+    		                        
+    							} else if (downkeys.length==2 && downkeys[0]==18) {
+    								
+    								if (k == 81) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "@";
+    								} else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "|";
+    								}
+    								
+    							} else {
+    								
+    		                        if (k == 187) {
+    		                        	tObject["k"] = -1;
+    		                        	tObject["c"] = "+";
+    		                        } else if (k == 191) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "#";
+    		                        } else if (k == 189) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "-";
+    		                        } else if (k == 221) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "`";
+    		                        } else if (k == 219) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ß";
+    		                        } else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "<";
+    		                        } else if (k == 220) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "^";
+    		                        } else if (k == 186) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ü";
+    		                        } else if (k == 222) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ä";
+    		                        } else if (k == 192) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ö";
+    		                        }
+    		                        
+    							}
+							
+	                        } else if (this.isMac) {
+	                        	
+	                        	if (downkeys.length==2 && downkeys[0]==16) {
+                                    if (k == 221) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "*";
+                                    } else if (k == 220) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "'";
+                                    } else if (k == 191) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "_";
+                                    } else if (k == 225) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "?";
+                                    } else if (k == 192) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = ">";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "°";
+                                    } else if (k == 219) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ü";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ä";
+                                    } else if (k == 186) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ö";
+                                    }
+                                    
+                                    
+                                } else if (downkeys.length==2 && downkeys[0]==18) {
+                                    
+                                    if (k == 50) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "@";
+                                    } else if (k == 55) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "|";
+                                    }
+                                    
+                                } else {
+                                    
+                                    if (k == 221) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "+";
+                                    } else if (k == 220) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "#";
+                                    } else if (k == 191) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "-";
+                                    } else if (k == 225) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ß";
+                                    } else if (k == 192) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "<";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "^";
+                                    } else if (k == 219) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ü";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ä";
+                                    } else if (k == 186) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ö";
+                                    }
+                                    
+                                }
+	                        	
+	                        } else if (this.isLinux) {
+	                        	
+	                        	if (downkeys.length==2 && downkeys[0]==16) {
+                                    if (k == 187) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "*";
+                                    } else if (k == 51) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "'";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "_";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 223) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "?";
+                                    } else if (k == 188) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = ">";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "°";
+                                    } else if (k == 252) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ü";
+                                    } else if (k == 228) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ä";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ö";
+                                    }
+                                    
+                                    
+                                } else if (downkeys.length==2 && downkeys[0]==18) {
+                                    
+                                    if (k == 50) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "@";
+                                    } else if (k == 55) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "|";
+                                    }
+                                    
+                                } else {
+                                    
+                                    if (k == 187) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "+";
+                                    } else if (k == 51) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "#";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "-";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 223) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ß";
+                                    } else if (k == 188) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "<";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "^";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ü";
+                                    } else if (k == 228) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ä";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ö";
+                                    }
+                                    
+                                }
+	                        	
+	                        }
+							
+							if (lz.Keys.downKeysArray.length > 1) {
+								for (var i=0;i<lz.Keys.downKeysArray.length;i++) {
+									if (lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+										lz.Keys.downKeysArray = new Array();
+										break;
+									}
+								}
+							}
+							
+	                        
+							
+							if (k == 18 || k == 17) {
+								return;
+							}
+	                        
+	                        this.sendRemoteCursorEvent.tObject = tObject;
+	                        if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+	                            this.sendRemoteCursorEvent.doCall();
+	                        }
+	                        
+	                    }
+                    ]]>
+                </handler>
+                
+                <handler name="onkeyup" reference="lz.Keys" args="k">
+                	<![CDATA[
+                        if (this.isMouseOverActive) {
+                            if ($debug) Debug.write("onkeyup ",k);
+                            
+                            var tObject = new Object();
+                            tObject["action"] = "onkeyup";
+                            tObject["k"] = k;
+                            
+                            var downkeys = lz.Keys.downKeysArray;
+    				        
+                            if (this.isWindows) {
+                            	
+    					        if (downkeys.length==2 && downkeys[0]==16) {
+    								if (k == 187) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "*";
+    		                        } else if (k == 191) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "'";
+    		                        } else if (k == 189) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "_";
+    		                        } else if (k == 221) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "`";
+    		                        } else if (k == 219) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "?";
+    		                        } else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = ">";
+    		                        } else if (k == 220) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "°";
+    		                        } else if (k == 186) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ü";
+    		                        } else if (k == 222) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ä";
+    		                        } else if (k == 192) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ö";
+    		                        }
+    		                        
+    		                        
+    							} else if (downkeys.length==2 && downkeys[0]==18) {
+    								
+    								if (k == 81) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "@";
+    								} else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "|";
+    								}
+    								
+    							} else {
+    								
+    		                        if (k == 187) {
+    		                        	tObject["k"] = -1;
+    		                        	tObject["c"] = "+";
+    		                        } else if (k == 191) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "#";
+    		                        } else if (k == 189) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "-";
+    		                        } else if (k == 221) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "`";
+    		                        } else if (k == 219) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "ß";
+    		                        } else if (k == 226) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "<";
+    		                        } else if (k == 220) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "^";
+    		                        } else if (k == 186) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ü";
+    		                        } else if (k == 222) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ä";
+    		                        } else if (k == 192) {
+    									tObject["k"] = -1;
+    		                        	tObject["c"] = "Ö";
+    		                        }
+    		                        
+    							}
+    						
+                            } else if (this.isMac) {
+                        	
+                                if (downkeys.length==2 && downkeys[0]==16) {
+                                    if (k == 221) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "*";
+                                    } else if (k == 220) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "'";
+                                    } else if (k == 191) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "_";
+                                    } else if (k == 225) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "?";
+                                    } else if (k == 192) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = ">";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "°";
+                                    } else if (k == 219) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ü";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ä";
+                                    } else if (k == 186) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ö";
+                                    }
+                                    
+                                    
+                                } else if (downkeys.length==2 && downkeys[0]==18) {
+                                    
+                                    if (k == 50) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "@";
+                                    } else if (k == 55) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "|";
+                                    }
+                                    
+                                } else {
+                                    
+                                    if (k == 221) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "+";
+                                    } else if (k == 220) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "#";
+                                    } else if (k == 191) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "-";
+                                    } else if (k == 225) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ß";
+                                    } else if (k == 192) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "<";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "^";
+                                    } else if (k == 219) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ü";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ä";
+                                    } else if (k == 186) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ö";
+                                    }
+                                    
+                                }
+                                
+                            } else if (this.isLinux) {
+	                        	
+	                        	if (downkeys.length==2 && downkeys[0]==16) {
+                                    if (k == 187) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "*";
+                                    } else if (k == 51) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "'";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "_";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 223) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "?";
+                                    } else if (k == 188) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = ">";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "°";
+                                    } else if (k == 252) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ü";
+                                    } else if (k == 228) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ä";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "Ö";
+                                    }
+                                    
+                                    
+                                } else if (downkeys.length==2 && downkeys[0]==18) {
+                                    
+                                    if (k == 50) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "@";
+                                    } else if (k == 55) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "|";
+                                    }
+                                    
+                                } else {
+                                    
+                                    if (k == 187) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "+";
+                                    } else if (k == 51) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "#";
+                                    } else if (k == 189) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "-";
+                                    } else if (k == 222) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "`";
+                                    } else if (k == 223) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ß";
+                                    } else if (k == 188) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "<";
+                                    } else if (k == 176) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "^";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ü";
+                                    } else if (k == 228) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ä";
+                                    } else if (k == 246) {
+                                        tObject["k"] = -1;
+                                        tObject["c"] = "ö";
+                                    }
+                                    
+                                }
+	                        	
+	                        }
+    							
+    						if (k == 18 || k == 17) {
+    							return;
+    						}
+    						
+    						if (lz.Keys.downKeysArray.length > 1) {
+    							for (var i=0;i<lz.Keys.downKeysArray.length;i++) {
+    								if (lz.Keys.downKeysArray[i] == 17 || lz.Keys.downKeysArray[i] == '17') {
+    									lz.Keys.downKeysArray = new Array();
+    									break;
+    								}
+    							}
+    						}
+                        
+    						if ($debug) Debug.write("tObject :: ",tObject,this.isWindows,this.isMac);
+    						
+                            this.sendRemoteCursorEvent.tObject = tObject;
+                            if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                                this.sendRemoteCursorEvent.doCall();
+                            }
+                        }
+                    ]]>
+                </handler>
+                
+                <handler name="onmouseover">
+                    //if ($debug) Debug.write("onmouseout ");
+                    this.isMouseOverActive = true;
+                    lz.Timer.addTimer( this.idleDelegate, 500 );
+                </handler>
+                
+                <handler name="onmouseout">
+                    //if ($debug) Debug.write("onmouseout ");
+                    this.isMouseOverActive = false;
+                    lz.Timer.removeTimer( this.idleDelegate);
+                </handler>
+                
+                <method name="sendMousePosition" args="refObj">
+                    <![CDATA[
+                        var x = this.getMouse("x");
+                        var y = this.getMouse("y");
+                        x /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        y /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        
+                        var tObject = new Object();
+                        tObject["action"] = "mousePos";
+                        
+                        tObject["x"] = Math.round(x);
+                        tObject["y"] = Math.round(y);
+                        
+                        this.sendRemoteCursorEvent.tObject = tObject;
+                        if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                            
+                            //if ($debug) Debug.write("sendMousePosition ",x,y);
+                            
+                            if (tObject["x"] != this.lastMouseX && tObject["y"] != this.lastMouseY) {
+                                
+                                this.lastMouseX = tObject["x"];
+                                this.lastMouseY = tObject["y"];
+                            
+                                this.sendRemoteCursorEvent.doCall();
+                            }
+                            
+                        }
+                        
+                        if (this.isMouseOverActive) {
+                            lz.Timer.addTimer( this.idleDelegate, 500 );
+                        }
+                    ]]>
+                </method>
+                
+                <handler name="onmousedown" args="refObj">
+                    <![CDATA[
+                        var x = this.getMouse("x");
+                        var y = this.getMouse("y");
+                        if ($debug) Debug.write("1 x,y :: ",x,y);
+                        x /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        y /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        if ($debug) Debug.write("2 x,y :: ",x,y);
+                        
+                        var tObject = new Object();
+                        tObject["action"] = "onmousedown";
+                        tObject["x"] = Math.round(x);
+                        tObject["y"] = Math.round(y);
+                        
+                        this.sendRemoteCursorEvent.tObject = tObject;
+                        if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                            this.sendRemoteCursorEvent.doCall();
+                        }
+                    ]]>
+                </handler>
+                
+                <handler name="onmouseup" args="refObj">
+                    <![CDATA[
+                        var x = this.getMouse("x");
+                        var y = this.getMouse("y");
+                        if ($debug) Debug.write("1 x,y :: ",x,y);
+                        x /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        y /= (parent.parent.parent._zoombar._zoom.initialNumber/100);
+                        if ($debug) Debug.write("2 x,y :: ",x,y);
+                        
+                        var tObject = new Object();
+                        tObject["action"] = "onmouseup";
+                        tObject["x"] = Math.round(x);
+                        tObject["y"] = Math.round(y);
+                        
+                        this.sendRemoteCursorEvent.tObject = tObject;
+                        if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+                            this.sendRemoteCursorEvent.doCall();
+                        }
+                    ]]>
+                </handler>
+                
+                <!--
+                public synchronized Boolean sendRemoteCursorEvent(String streamid, Map messageObj)
+                 -->
+                <netRemoteCallHib name="sendRemoteCursorEvent"  showLoading="false"
+                                  remotecontext="$once{ canvas.thishib }" funcname="sendRemoteCursorEvent"  >
+                        <attribute name="tObject" value="null" />
+                        <netparam><method name="getValue">return parent.parent.parent.parent.parent.initObject.streamid;</method></netparam>
+                        <netparam><method name="getValue">return parent.tObject;</method></netparam>
+                        <handler name="ondata" args="value">
+                        //The onResult-Handler will be called be the rtmpconnection
+                        //if( $debug ) Debug.write("+++++++++++++++++ stopRecordingShow: ",value);    
+                        //parent.close();
+                    </handler>  
+                </netRemoteCallHib> 
+                 
+            </videoObjectPlayScreenShare>
+            
+        </view>
+        
+        <om_vscrollbar />
+        <om_hscrollbar />
+        
+    </view>    
+    
+    <view name="_infoBox" x="0" visibility="hidden" >
+    	
+    	<view name="innerBox" height="${ parent.parent.height }" 
+    		  visible="${ ((canvas.ismoderator) ? true : ((canvas.isAllowedToRemoteControl) ? true : false )) }">
+    		
+            <labelExplorerBox name="_infoBox" labelid="1088" 
+                  docking="true" resizeable="false" closable="true" valign="middle"
+                    x="0" height="400" width="170">
+                <switch>
+                    <when property="$as3">
+                        <passthrough>
+                            import flash.net.SharedObject;
+                        </passthrough>
+                    </when>
+                </switch>
+                <handler name="oninit">
+                	<![CDATA[
+                	this.bringToFront();
+                    var t:SharedObject = SharedObject.getLocal('userdata');
+                    var g = t.data;
+                    if (g["image"]!=null) {
+                    	if ($debug) Debug.write("g[image][donotaskagainrdc] ",g["image"]["donotaskagainrdc"]);
+                        if ($debug) Debug.write("g[image] ",g["image"]);
+                        if (g["image"]["donotaskagainrdc"] != null && g["image"]["donotaskagainrdc"] == true) {
+                        	if ($debug) Debug.write("DO CLOSE IT")
+                            this.close();
+                        }
+                    }
+                    ]]>
+                </handler>
+            
+                <view x="4" resource="warning_icon_rsc" y="26" />
+            
+                <view y="22" width="$once{ parent.width - 35 }" height="130" x="30" >
+                    <labelText fontsize="10" fontstyle="bold" labelid="1086"
+                        multiline="true" width="$once{ parent.width - 16 }" selectable="true" />
+                </view>
+                
+                <view y="76" width="$once{ parent.width - 7 }" height="130" x="4" >
+                    <labelText fontsize="10" labelid="1085"
+                        multiline="true" width="$once{ parent.width - 16 }" selectable="true" />
+                </view>
+                
+                <labelCheckbox x="4" y="$once{ parent.height-42 }" fontsize="11"
+                                    name="_doNotShowAgain" labelid="1123" >
+                	<attribute name="checkboxIsinited" value="false" type="boolean"/>
+                	<switch>
+                        <when property="$as3">
+                            <passthrough>
+                                import flash.net.SharedObject;
+                            </passthrough>
+                        </when>
+                    </switch>
+                    <handler name="oninit">
+                    	<![CDATA[
+                    	    var t:SharedObject = SharedObject.getLocal('userdata');
+                            var g = t.data;
+                            if (g["image"]!=null) {
+                            	if ($debug) Debug.write("g[image]",g["image"]);
+                                if (g["image"]["donotaskagainrdc"] != null && g["image"]["donotaskagainrdc"] == true) {
+                                    if ($debug) Debug.write("donotaskagainrdc ",g["image"]["donotaskagainrdc"]);
+                                    this.setValue(true);
+                                }
+                            }
+                            this.checkboxIsinited = true;
+                        ]]>
+                    </handler>
+                    <handler name="onvalue" args="v">
+                    	if (!this.checkboxIsinited) {
+                    		return;
+                    	}
+                        if ($debug) Debug.write("onselect ",v);
+                        var t:SharedObject = SharedObject.getLocal('userdata');
+                        var g = t.data;
+                        if (g["image"]==null) g["image"]=new Array();
+                        g["image"]["donotaskagainrdc"]=v;
+                        
+                        if ($debug) Debug.write("g[image][donotaskagainrdc] ",g["image"]["donotaskagainrdc"]);
+                        if ($debug) Debug.write("g[image] ",g["image"]);
+                        
+                        t.flush();
+                    </handler>
+                </labelCheckbox>    
+                
+                <simpleLabelButton labelid="642" width="100" x="$once{ parent.width-105 }" 
+                       y="$once{ parent.height-24 }" onclick="this.parent.close();" />
+                       
+            </labelExplorerBox>  
+            
+        </view>
+        
+    </view>  
+
+    <view name="_zoombar" x="20" visibility="hidden" y="${ parent.height-26 }">
+        
+        <method name="setDefaultZoom">
+            if (parent.initObject.VWidth > (parent._subcontent.width-16) ) {
+                var newZoom = Math.round(( (parent._subcontent.width-16) /parent.initObject.VWidth)*100);
+                
+                if ($debug) Debug.write("newZoom ",newZoom);
+                
+                this._zoom.setSliderValue(newZoom);
+                
+                this._zoom.oninitialNumber.sendEvent(newZoom);
+            }
+            
+            this.setDefaultHeight();
+        </method>
+        
+        <method name="setDefaultHeight">
+            if (parent.initObject.VHeight > (parent._subcontent.height-16)) {
+                var newZoom = Math.round(( (parent._subcontent.height-16) /parent.initObject.VHeight)*100);
+                
+                if ($debug) Debug.write("newZoom ",newZoom);
+                
+                this._zoom.setSliderValue(newZoom);
+                
+                this._zoom.oninitialNumber.sendEvent(newZoom);
+            }
+        </method>
+        
+        <simplelayout axis="x" spacing="2" />
+        
+        <labelText labelid="852" resize="true" y="4" />
+        
+        <changeWidthSlider name="_zoom" initialNumberInit="100" x="10"
+              boxPosition="up" initialNumber="100" maximum="200">
+            <handler name="oninitialNumber" args="i">
+                if (parent.parent.isStarted) {
+                    
+                    var newWidth = parent.parent.initObject.VWidth * (i/100);
+                    var newHeight = parent.parent.initObject.VHeight * (i/100);
+                    
+                    parent.parent._subcontent._content._video.setAttribute("width",newWidth);
+                    parent.parent._subcontent._content._video.setAttribute("height",newHeight);
+                    
+                }
+            </handler>
+        </changeWidthSlider>
+        
+        <labelText x="64" y="4" labelid="253" />   
+        
+        <labelText x="84" y="4" labelid="1096" />  
+        
+        <!--
+        <resetCombobox name="languages" width="60" y="6" x="200" >
+        	<handler name="oninit">
+        		<![CDATA[
+            		//getBrowserLang
+            		
+        		    var thisItem = this;
+        		
+            		function callback(returnValue) {
+                            
+                        if ($debug) Debug.write(" callback ",returnValue);
+                        
+                        if (returnValue.indexOf("de") >= 0) {
+                        	thisItem.selectItemAt(1);
+                        } else if (returnValue.indexOf("de") >= 0) {
+                        	thisItem.selectItemAt(0);
+                        } else {
+                        	thisItem.selectItemAt(0);
+                        	//Show Error Box that we currently have no 
+                        	//Keyboard Scheme available for that country
+                        }
+                        
+                    }
+                    
+                    lz.Browser. callJS("getBrowserLang",callback);
+            		
+            		
+            		//var t = lz.Browser;
+            		//if ($debug) Debug.write("lz.Browser :: ",t);
+            		
+            		//this.selectItemAt(0);
+        		]]>
+        	</handler>
+        	<labeldTextListItem labelid="1094" value="en_US" />
+            <labeldTextListItem labelid="1095" value="de_DE" />
+        </resetCombobox> 
+         -->
+    </view>
+    
+    <simpleLabelButton name="_pause" visibility="hidden"
+        labelid="854" width="100" x="${ parent.width-204 }" 
+        y="${ parent.height-22 }" onclick="this.parent.doMinimize();" />
+    
+    <simpleLabelButton name="_close" visibility="hidden"
+        labelid="851" width="100" x="${ parent.width-102 }" 
+        y="${ parent.height-22 }" onclick="this.parent.doClose();" />
+        
+    <animatorgroup name="_showScreenSharing" started="false" 
+                   process="simultaneous" duration="1000" >
+        <handler name="onstop">
+            if ($debug) Debug.write("onstop this._y.to ",this._y.to);
+            if (!parent.isStarted) {
+                parent._initText.setAttribute("visibility","visible");
+            } else {
+            	parent._infoBox.setAttribute("visibility","visible");
+                parent._zoombar.setAttribute("visibility","visible");
+                parent._zoombar.setDefaultZoom();
+                parent._close.setAttribute("visibility","visible");
+                parent._pause.setAttribute("visibility","visible");
+            }
+        </handler>
+        <animator name="_y" attribute="y" to="0" />
+        <animator name="_x" attribute="x" to="0" />
+        <animator name="_height" attribute="height" />
+        <animator name="_width" attribute="width" />
+    </animatorgroup>        
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/screensharing/videoObjectPlayScreenShare.lzx b/WebContent/swf10/screensharing/videoObjectPlayScreenShare.lzx
new file mode 100644
index 0000000..fdddbc6
--- /dev/null
+++ b/WebContent/swf10/screensharing/videoObjectPlayScreenShare.lzx
@@ -0,0 +1,238 @@
+<?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.
+  
+-->
+<library>
+
+
+<!---
+	Contains no microphone or camera Object, this view can only 
+	subscribe to a video or live-stream
+
+ -->
+	
+<class name="tempTextBox" extends="view" width="120" height="40" bgcolor="0x000000">
+	
+	<attribute name="isStopped" value="false" type="boolean"/>
+	
+	<handler name="oninit">
+		parent.sendCursorVisible(false);
+        lz.Timer.addTimer( new LzDelegate( this, "removeThis" ), 3000 );
+    </handler>
+    
+    <method name="removeThis" args="refObj">
+        this._out.setAttribute('started', true);
+    </method>
+    
+    <animator name="_out" attribute="opacity" to="0" 
+    		  duration="750" started="false">
+    	<handler name="onstop">
+    		if (parent.isStopped) {
+    			return;
+    		}
+    		parent.isStopped = true;
+    		parent._bg._in.stop();
+    		parent._bg._out.stop();
+    		parent.destroy();
+    		parent.parent.sendCursorVisible(true);
+    	</handler>
+    </animator>
+    
+	<view name="_bg" bgcolor="0x7fff00" width="$once{ parent.width }"
+		  height="$once{ parent.height }">
+		<handler name="oninit">
+			this._in.setAttribute('started', true);
+		</handler>
+		
+		<animator name="_out" attribute="opacity" to="0.3" 
+              duration="250" started="false">
+            <handler name="onstop">
+            	if (parent.parent.isStopped) {
+                    return;
+                }
+                parent._in.setAttribute('started', true);
+            </handler>
+        </animator>
+        
+        <animator name="_in" attribute="opacity" to="1" 
+              duration="250" started="false">
+            <handler name="onstop">
+            	if (parent.parent.isStopped) {
+            		return;
+            	}
+                parent._out.setAttribute('started', true);
+            </handler>
+        </animator>
+		
+	</view>
+	
+	<view name="_bg2" bgcolor="0x7fff00" width="$once{ parent.width }" height="18">
+		<labelText x="2" y="1" labelid="1124" />
+	</view>
+	
+	<inputtext name="_text" width="$once{ parent.width - 4 }" height="20" y="18"
+			   bgcolor="0xFFFFFF" x="2" >
+		<handler name="ontext" args="txt">
+			if ($debug) Debug.warn("ontext ",txt);
+			parent.parent.doBroadcastText(txt);
+			parent._out.setAttribute('started', true);
+		</handler>
+	</inputtext>
+	
+</class>	
+
+<class name="copiedTextPopup" extends="labelExplorerBox" labelid="1121"
+    docking="true" resizeable="true" closable="true" y="100"
+    x="$once{ parent.width/2 - this.width/2 }" height="160" width="324">
+
+    <attribute name="error" value="" type="string" />
+    
+    <view name="_box" y="24" width="${ parent.width - 20 }" 
+    	  height="${ parent.height - 50 }" x="10" clip="true">
+        <text fontsize="10" fontstyle="bold" text="${ parent.parent.error }"
+            multiline="true" width="${ parent.width - 16 }" selectable="true" />
+    </view>
+    
+    <simpleLabelButton labelid="642" width="100" x="${ parent.width-105 }" 
+           y="${ parent.height-24 }" onclick="this.parent.close();" />
+
+</class>
+			
+<class name="screenShareCursorObject" extends="view" resource="menupointer_rsc">
+	
+	<attribute name="refObj" value="null" />
+	
+    <contextmenu>
+            
+        <handler name="onmenuopen">
+            parent.refObj.currentX = parent.refObj.getMouse("x");
+            parent.refObj.currentY = parent.refObj.getMouse("y");
+            if ($debug) Debug.write("onmenuopen x,y ",parent.currentX,parent.currentY);
+        </handler>
+        
+        <contextmenuitem caption="$once{ canvas.getLabelName(1119) }" 
+                         onselect="parent.parent.refObj.insertText()" />
+        
+        <contextmenuitem caption="$once{ canvas.getLabelName(1120) }" 
+                         onselect="parent.parent.refObj.copyFromRemote()" />
+                         
+        <contextmenuitem caption="$once{ canvas.getLabelName(1122) }" 
+                         onselect="parent.parent.refObj.showFromRemote()" />
+                         
+    </contextmenu>
+</class>			
+					   
+<class name="videoObjectPlayScreenShare" extends="view">
+	
+    <baseVideoStream name="_videostream" bgcolor="black" 
+          width="${parent.width}" height="${parent.height}" >
+    	
+    	<attribute name="currentX" value="0" type="number" />
+    	<attribute name="currentY" value="0" type="number" />
+    	
+    	<method name="insertText">
+    		if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+        		new lz.tempTextBox(this,{
+                		   x:this.currentX,
+                		   y:this.currentY
+                		});
+    		} else {
+    			new lz.labelerrorPopupSWF10(canvas,{
+                               errorlabelid:1125
+                            });
+    		}
+    	</method>
+    	
+    	<method name="sendCursorVisible" args="bool">
+    		if (bool) {
+    			parent.parent.parent.parent.currentCursorObject.setAttribute("visibility","visible");
+    		} else {
+    			parent.parent.parent.parent.currentCursorObject.setAttribute("visibility","hidden");
+    		}
+    	</method>
+    	
+    	<method name="doBroadcastText" args="txt">
+    		if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+        		var tObject = new Object();
+                tObject["action"] = "paste";
+                
+                tObject["paste"] = txt;
+                
+                parent.sendRemoteCursorEvent.tObject = tObject;
+                
+                if ($debug) Debug.warn("doBroadcastText :: ",txt);
+                
+                parent.sendRemoteCursorEvent.doCall();
+    		} else {
+    			new lz.labelerrorPopupSWF10(canvas,{
+                               errorlabelid:1125
+                            });
+    		}
+    	</method>
+    	
+    	<method name="copyFromRemote">
+    		if (canvas.isAllowedToRemoteControl || canvas.ismoderator) {
+        		var tObject = new Object();
+                tObject["action"] = "copy";
+                
+                tObject["clientId"] = canvas.streamid;
+                
+        		parent.sendRemoteCursorEvent.tObject = tObject;
+                parent.sendRemoteCursorEvent.doCall();
+    		} else {
+    			new lz.labelerrorPopupSWF10(canvas,{
+                			   errorlabelid:1125
+                			});
+    		}
+    	</method>
+    	
+    	<method name="showFromRemote">
+            var tObject = new Object();
+            tObject["action"] = "show";
+            
+            tObject["clientId"] = canvas.streamid;
+            
+            parent.sendRemoteCursorEvent.tObject = tObject;
+            parent.sendRemoteCursorEvent.doCall();
+        </method>
+    	
+    	<contextmenu>
+    		
+    		<handler name="onmenuopen">
+    			parent.currentX = parent.getMouse("x");
+    			parent.currentY = parent.getMouse("y");
+    			if ($debug) Debug.write("onmenuopen x,y ",parent.currentX,parent.currentY);
+    		</handler>
+            
+            <contextmenuitem caption="$once{ canvas.getLabelName(1119) }" 
+                             onselect="parent.parent.insertText()" />
+            
+            <contextmenuitem caption="$once{ canvas.getLabelName(1120) }" 
+                             onselect="parent.parent.copyFromRemote()" />
+                             
+            <contextmenuitem caption="$once{ canvas.getLabelName(1122) }" 
+                             onselect="parent.parent.showFromRemote()" />
+                             
+        </contextmenu>
+        
+    </baseVideoStream>
+        
+</class>
+
+</library>
diff --git a/WebContent/swf10/testVideoObject.lzx b/WebContent/swf10/testVideoObject.lzx
new file mode 100644
index 0000000..75cc30d
--- /dev/null
+++ b/WebContent/swf10/testVideoObject.lzx
@@ -0,0 +1,26 @@
+<?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.
+  
+-->
+<library>
+
+    <class name="testVideoObject" extends="view" bgcolor="0x000000" width="132" height="120" onmousedown="dragger.setAttribute('applied', true)" onmouseup="dragger.setAttribute('applied', false)">
+        <dragstate name="dragger"/>>
+    </class>
+</library>
\ No newline at end of file
diff --git a/WebContent/swf10/video/baseVideoObject.lzx b/WebContent/swf10/video/baseVideoObject.lzx
new file mode 100644
index 0000000..3639cc7
--- /dev/null
+++ b/WebContent/swf10/video/baseVideoObject.lzx
@@ -0,0 +1,673 @@
+<?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. -->
+<library>
+
+
+	<!--- Base container for a client, can be either: a remote-video (subscribing/playing a video) or a self-video (broadcasting 
+		a cam/mic) -->
+	<class name="baseVideoObject" extends="view" bgcolor="0x000000" width="122" height="101">
+
+		<switch>
+			<when property="$as3">
+				<passthrough>
+					import flash.filters.DropShadowFilter;
+					import flash.media.*
+					import flash.net.SharedObject;
+				</passthrough>
+			</when>
+		</switch>
+
+		<!--- @keywords private -->
+		<attribute name="chatpartnername" value="" type="string" />
+		<!--- @keywords private -->
+		<attribute name="showUserProfilePic" type="boolean" value="false" />
+
+		<!--- color of this user, this is the color the user will also use for his chat-color -->
+		<attribute name="usercolor" value="0" type="number" />
+
+		<!--- publicSID is a hash-value to identify a user -->
+		<attribute name="publicSID" value="" type="string" />
+
+		<!--- micMuted indicates if the microphone is currently turned sound or gain to 0 -->
+		<attribute name="micMuted" value="false" type="boolean" />
+
+		<!--- @keywords private -->
+		<attribute name="isremote" value="true" type="boolean" />
+
+		<!--- @keywords private -->
+		<attribute name="clientVars" value="null" />
+
+		<!--- @keywords private -->
+		<attribute name="isResizing" value="false" type="boolean" />
+
+		<!--- @keywords private -->
+		<attribute name="isInterview" value="false" type="boolean" />
+
+		<attribute name="respectRatio" value="true" type="boolean" />
+
+		<attribute name="minimized" value="false" type="boolean" />
+
+		<attribute name="hidebyAudioOnly" value="false" type="boolean" />
+
+		<attribute name="custom" value="false" type="boolean" />
+
+		<attribute name="initH" value="40" type="number" />
+		<attribute name="initW" value="40" type="number" />
+
+		<attribute name="isShowMicMute" value="false" type="boolean" />
+
+		<attribute name="isMutedByModerator" value="false" type="boolean" />
+
+		<attribute name="isMicrophonesRoom" value="false" type="boolean" />
+
+		<attribute name="lastPositiveVolume" type="number" value="50" />
+
+		<!-- Initial stream ratio: width / height -->
+		<attribute name="initRatio" type="number" value="null" />
+		<attribute name="initialHeight" value="$once{ this.height }" type="number" />
+
+		<handler name="onisremote" args="r">
+			this.isremote = r;
+		</handler>
+
+		<handler name="oninit">
+        <![CDATA[
+            this.clientVars = new Array();
+            this.clientVars['User']='No User Connected';
+            
+            if (this.isInterview) {
+            	this._toolbar._minimize.setAttribute("visibility","hidden");
+            	this._resizeview.setAttribute("visibility","hidden");
+            	this._innerbottom.setAttribute("visibility","hidden");
+            	return;
+            }
+            
+            if (this.custom) {
+                this._toolbar._minimize.setAttribute("visibility","hidden");
+                this._resizeview.setAttribute("visibility","hidden");
+                this._toolbar.setAttribute("visibility","hidden");
+                this._resizeview.setAttribute("visibility","hidden");
+                this._loudness.setAttribute("visibility","hidden");
+                this._innertop.setAttribute("visibility","hidden");
+                this._innerbottom.setAttribute("visibility","hidden");
+            }
+            this.setShadow();
+            
+            if (this.publicSID == canvas.publicSID) {
+                this._toolbar._resync._tip.setAttribute("labelid",610);
+            }
+            this._giveExclusiveAudioView.bringToFront();
+            
+            this.isMicrophonesRoom = canvas.currentRoomObject.showMicrophoneStatus;
+            if (canvas.currentRoomObject.showMicrophoneStatus) {
+                this._innertop.setAttribute("bgcolor", "0xFF6600");
+                this._innerbottom.setAttribute("bgcolor", "0xFF6600");
+            } else {
+                this._innerbottom.setAttribute("visibility", "hidden");
+            }
+        ]]>
+		</handler>
+
+		<handler name="ony">
+		<![CDATA[
+		    if (this.isInterview || this.custom || canvas.currentRoomObject.hideWhiteboard) {
+                return;
+            }
+            var bounds = this.getBounds();
+            var parentBounds = canvas.getBounds();
+            if (bounds.y < 0) {
+                this.setAttribute('y',0);
+            }
+            if (bounds.y > (parentBounds.height - bounds.height)) {           
+                this.setAttribute('y', parentBounds.height - bounds.height );
+            }
+        ]]>
+		</handler>
+
+		<handler name="onx">
+		<![CDATA[
+            if (this.isInterview || this.custom) {
+                return;
+            }	
+		
+			var bounds = this.getBounds();
+            var parentBounds = canvas.getBounds();
+            if (bounds.x < 0) {
+                this.setAttribute('x',0);
+            }
+            
+            if (bounds.x > (parentBounds.width - bounds.width)) {
+                this.setAttribute('x', parentBounds.width - bounds.width );
+            }
+        ]]>
+		</handler>
+
+		<method name="setShadow">
+        <![CDATA[
+	        if (this.isinited){
+	            this.normalMC = this.getDisplayObject();
+	            //if($debug) Debug.write(this.normalMC);
+	            //if($debug) Debug.write("this.normalMC: ",this.normalMC);
+	            //if($debug) Debug.write("this: ",this);
+	            this.displacementMap = new flash.filters.DropShadowFilter();
+	            this.normalMC.filters = [this.displacementMap];
+	        }
+        ]]>
+		</method>
+
+		<!-- respect ratio and keep minimum width / height -->
+		<method name="setItemContraintsWidth" args="unused">
+        <![CDATA[
+            if (!this.respectRatio) {
+                return;
+            }
+            var h=this.width * this.initH/this.initW;
+            h=((h < this.initH ) ? initH : h);
+
+            if ($debug) Debug.write("setItemContraintsWidth",this.respectRatio,'orig',this.height,this.width,'new h',h);
+
+            this.setAttribute("height",h);
+        ]]>
+		</method>
+
+		<method name="setItemContraintsHeight" args="unused">
+        <![CDATA[
+            if (!this.respectRatio) {
+                return;
+            }
+            var w=this.height * this.initW/this.initH;
+            w=((w < this.initW ) ? initW : w);
+
+            if ($debug) Debug.write("setItemContraintsHeight",this.respectRatio,'orig',this.height,this.width,'new w',w);
+
+            this.setAttribute("width",w);
+        ]]>
+		</method>
+
+		<method name="updateAVSettingsSymbol" args="rcl">
+			//FIXME: Set a Symbol wether this Client is Audio(only)/Video(only), both or Profile Picture
+			if ($debug) Debug.warn("updateAVSettingsSymbol TODO ",rcl);
+		</method>
+
+		<method name="doResize" args="bool">
+			if ($debug) Debug.write("doResize",bool);
+			if(bool) {
+				dragHelper.create();
+			} else {
+				dragHelper.remove();
+			}
+			if (this.isInterview || this.custom) {
+				return;
+			}
+
+			if (bool) {
+				this.isResizing = true;
+				this.rs.apply();
+			} else {
+				this.isResizing = false;
+				this.rs.remove();
+			}
+		</method>
+
+		<!--- resets all values and stops the streaming -->
+		<method name="resetValues">
+		<![CDATA[
+	    	if ($debug) Debug.write("resetValues: ",this.isremote);
+	    	this.clientVars=null;
+	    	if (!this.isremote) {
+	    		deleteVideoConfProfilePic();
+	    	}
+	    	if (this.isremote){
+	    		this._chatvideoinner._videostream.restart();
+	    	} else {
+	    		this._chatvideoinner._videostream._stop();
+	    	}
+		]]>
+		</method>
+		
+		<method name="setVideouserProfilePic" args="value">
+			if ($debug) Debug.write("### setVideouserProfilePic ",value);
+			this.deleteVideoConfProfilePic();
+			new lz.videoUserProfilePicSWF10(this._chatvideoinner,{name:'userProfilePic',value:value});
+			this.showUserProfilePic = true;
+		</method>
+		
+		<method name="deleteVideoConfProfilePic">
+			if ($debug) Debug.write("### deleteVideoConfProfilePic ###");
+			if ($debug) Debug.write("delete ",this.showUserProfilePic);
+			if (this.showUserProfilePic) {
+				this._chatvideoinner.userProfilePic.destroy();
+				this.showUserProfilePic = false;
+			}
+		</method>
+
+		<!--- @keywords private -->
+		<method name="_startDragState" args="obj">
+			if (this.isInterview || this.custom) {
+				return;
+			}
+
+			dragHelper.create();
+
+			this.bringToFront();
+			parent.bringToFront();
+			this.dragger.apply();
+		</method>
+
+		<!--- @keywords private -->
+		<method name="_removeDragState" args="obj">
+    	<![CDATA[
+	        lz.Cursor.unlock();
+	        
+	        if (this.x < 0) {
+	        	this.setAttribute("x",20);
+	        }
+	        
+	        if (this.y < 0) {
+	        	this.setAttribute("y",20);
+	        }
+	        
+	        if (this.x+this.width > parent.width) {
+	        	this.setAttribute("x",parent.width - this.width - 20);
+	        }
+	        
+	        if (this.y+this.height > parent.height) {
+	        	this.setAttribute("y",parent.height - this.height - 20);
+	        }
+	        dragHelper.remove();
+	        this.dragger.remove();
+        ]]>
+		</method>
+
+		<method name="minimize">
+        <![CDATA[
+            this.respectRatio = false;
+        
+            this.setAttribute("minimized",true);
+            
+            this._toolbar._minimize.setAttribute("visibility","hidden");
+            this._toolbar._maximize2.setAttribute("visibility","visible");
+            
+            for (var eg in this.subviews) {
+                if (this.subviews[eg].name != "_toolbar" 
+                        && this.subviews[eg].name != "_innertop"
+                        && this.subviews[eg].name != "_loudness") {
+                     this.subviews[eg].setAttribute("visibility","hidden");   
+                }
+            }
+            
+            this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
+            this._loudness.bringToFront();
+            
+            this.initialHeight = this.height;
+            //this.setAttribute("height",20);
+            this._minimizeZoom.setAttribute("to",20);
+            this._minimizeZoom.setAttribute('started', true);
+        ]]>
+		</method>
+
+		<method name="reminimize">
+        <![CDATA[
+            this.setAttribute("minimized",false);
+            
+            this._toolbar._minimize.setAttribute("visibility","visible");
+            this._toolbar._maximize2.setAttribute("visibility","hidden");
+            
+            this._loudness.setAttribute("x",1);
+            
+            //this.setAttribute("height",this.initialHeight); 
+            if ($debug) Debug.write("this.initialHeight ",this.initialHeight);
+            this._minimizeZoom.setAttribute("to",this.initialHeight);
+            this._minimizeZoom.setAttribute('started', true);
+        ]]>
+		</method>
+
+		<method name="reminimizeComplete">
+        <![CDATA[
+            if (!this.minimized) {
+                for (var eg in this.subviews) {
+                    if (this.subviews[eg].name != "_toolbar" 
+                            && this.subviews[eg].name != "_innertop"
+                            && this.subviews[eg].name != "_loudness"
+                            && this.subviews[eg].name != "_innerbottom") {
+                         this.subviews[eg].setAttribute("visibility","visible");   
+                    }
+                }
+                if (isMicrophonesRoom) {
+                    this._innerbottom.setAttribute("visibility", "visible");
+                }
+                this.respectRatio = true;
+            }
+        ]]>
+		</method>
+
+		<view name="_innertop" width="${parent.width-2 }" height="18" x="1" y="1"
+			bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+			<text text="${ parent.parent.chatpartnername }" onmousedown="parent.parent._startDragState(this)"
+				onmouseup="parent.parent._removeDragState(this)"
+				width="${ parent.width-2 }" fgcolor="white" fontsize="9">
+				<handler name="onmouseover">
+					//cursor="arrow_draw_panel_cursor"
+					lz.Cursor.setCursorGlobal("arrow_draw_panel_cursor");
+				</handler>
+
+				<handler name="onmouseout">
+					lz.Cursor.unlock();
+				</handler>
+			</text>
+		</view>
+
+		<view name="_innerbottom" width="${parent.width - 2}" x="1" y="${parent.height - 19}" height="18"
+			bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }">
+			<text text="${canvas.getLabelName(1434)}" width="${ parent.width-2 }" fgcolor="white" name="title" fontsize="9" />
+		</view>
+
+		<view name="_loudness" x="1" visible="${parent.isremote}" y="${parent.height - 20 - ((parent._innerbottom.visible) ? 18 : 0) }">
+			<method name="setSpeaking" args="bool">
+				this.loudness.setAttribute('opacity', bool ? 1 : 0.2);
+			</method>
+			<view x="2" y="2" name="loudness" resource="speaking" opacity="0.2" onmouseover="" onmouseout="">
+				<handler name="onclick">
+				<![CDATA[
+					if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+						parent.parent.confirmExclusiveAudio();
+					} else {
+						new lz.labelerrorPopupSWF10(canvas,{errorlabelid:1478});
+					}
+				]]>
+				</handler>
+				<labelTooltip inittwice="true" labelid="372" />
+			</view>
+		</view>
+
+		<view name="_resizeview" x="${ this.parent.width - 16 }" valign="bottom" resource="explorer_resize_rsc" cursor="explorer_resizemouse_rsc"
+			onmousedown="this.parent.doResize(true)" onmouseup="this.parent.doResize(false)">
+			<handler name="oninit">
+				//if ($debug) Debug.write("setTint");
+				//TODO: Fix this, does not work at the moment
+				//canvas.protocol + '://code.google.com/p/openmeetings/issues/detail?id=470
+				this.setColor(canvas.getThemeColor('baseMousecolorizer'));
+			</handler>
+		</view>
+
+		<view name="_toolbar" x="${ parent.width-this.width-2 }" layout="axis:x;spacing:0" y="2">
+
+			<attribute name="isload" value="true" type="boolean" />
+
+			<miniIconsPresenter name="_resync" iconRessourceName="resyncuser_rsc">
+				<handler name="onclick">
+					parent.parent.resetValues();
+					if(!this.parent.parent.isremote) {
+						if ($debug) Debug.write("editRecordStream ################# baseVideObject isInterview"
+								,this.parent.parent.isInterview,this.parent.parent.interviewPodId);
+						if (this.parent.parent.isInterview) {
+							//TODO: fix it
+							new lz.editRecordStreamSWF10(canvas.inner,{
+								name:"editRecordStream",
+								doDefaultAnimation:false,
+								isInterview:true,
+								interviewPodId:this.parent.parent.interviewPodId,
+								isSyncUpdate:true});
+						} else {
+							new lz.editRecordStreamSWF10(canvas.inner,{
+								name:"editRecordStream",
+								isInterview:false,
+								isSyncUpdate:true});
+						}
+					}
+				</handler>
+				<labelTooltip name="_tip" labelid="540" />
+			</miniIconsPresenter>
+
+			<miniIconsPresenter name="_mute" width="16" height="16" iconRessourceName="mute_micro_btn_rsc">
+				<handler name="onclick">
+					parent.parent.silenceMicrophone(!parent.parent.micMuted);
+				</handler>
+				<labelTooltip name="_tip" labelid="1405" />
+			</miniIconsPresenter>
+
+			<miniIconsPresenter x="0" y="0" name="_volume" width="16" height="16" iconRessourceName="volume">
+				<handler name="oninit">
+					_tip.setAttribute("labelid", parent.parent.isremote ? 1511 : 1512);
+				</handler>
+				<handler name="onclick">
+					var volume = parent.parent.getStreamVolume();
+
+					var sliderHeight = 120;
+					var sliderX =
+					this.getAttributeRelative('x',canvas) - 2;
+					var pick = new lz.VolumeSlider(canvas, {
+							height:sliderHeight,
+							x:sliderX,
+							y:(parent.getAttributeRelative('y',canvas) - sliderHeight/2),
+							initialNumber:volume,
+							videoObject:parent.parent
+						});
+					lz.ModeManager.makeModal(pick);
+				</handler>
+				<labelTooltip name="_tip" />
+			</miniIconsPresenter>
+
+			<miniIconsPresenter name="_minimize" iconRessourceName="btn_presenter_minimize">
+				<handler name="onclick">
+					this.parent.parent.minimize();
+				</handler>
+				<labelTooltip labelid="856" />
+			</miniIconsPresenter>
+
+			<miniIconsPresenter name="_maximize2" visibility="hidden" iconRessourceName="btn_presenter_maximize">
+				<handler name="onclick">
+					this.parent.parent.reminimize();
+				</handler>
+				<labelTooltip labelid="857" />
+			</miniIconsPresenter>
+
+		</view>
+
+		<view name="_giveExclusiveAudioView" valign="middle" align="center" visible="false">
+			<view name="_micButton" width="40" height="40" resource="mic_rsc" showhandcursor="true">
+				<labelTooltip name="_toolTipTextExclusiveAudio" labelid="1386" />
+			</view>
+		</view>
+
+		<handler name="onmouseover">
+        <![CDATA[
+	        if (this.isInterview || this.minimized) {
+	            return;
+	        }
+	        if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+	        	this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.doonmouseover();
+	            this._giveExclusiveAudioView.setAttribute("visible", true);
+	        }
+        ]]>
+		</handler>
+
+		<handler name="onmouseout">
+        <![CDATA[
+	        if (this.isInterview || this.minimized) {
+	            return;
+	        }
+	        this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
+	        this._giveExclusiveAudioView.setAttribute("visible", false);
+        ]]>
+		</handler>
+
+		<handler name="onclick">
+		<![CDATA[
+	      	if (canvas.ismoderator || canvas.isAllowedToGiveExclusiveAudio) {
+	      		this._giveExclusiveAudioView._micButton._toolTipTextExclusiveAudio.cleanHolder();
+	          	this.confirmExclusiveAudio();
+	        } else {
+				new lz.labelerrorPopupSWF10(canvas,{errorlabelid:1478});        
+	        }
+		]]>
+		</handler>
+
+		<dragstate name="dragger" />
+		<resizestatemin name="rs" resize_min_width="70" resize_min_height="70" />
+		<dragHelper name="dragHelper" />
+
+		<animator name="_minimizeZoom" attribute="height" duration="750" to="20" started="false">
+			<handler name="onstop" args="s">
+				parent.reminimizeComplete();
+			</handler>
+		</animator>
+
+		<handler name="onismoderator" reference="canvas" args="m">
+        <![CDATA[
+			if ($debug) Debug.write("###### ismoderator ", m);
+	        
+	        if (this.minimized) {
+	            this._loudness.setAttribute("x",this.width - 84 - (this.isShowMicMute ? 20 : 0));
+	            this._loudness.bringToFront();
+	        }
+        ]]>
+		</handler>
+
+		<method name="giveExclusiveAudio">
+			canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'lc_giveExclusiveAudio', this.publicSID);
+		</method>
+
+		<method name="confirmExclusiveAudio">
+			var so:SharedObject = SharedObject.getLocal('userdata');
+			var userData = so.data;
+			var dontShowExclusiveAudioConfirmation = userData["dontShowExclusiveAudioConfirmation"];
+			var exclusiveAudioListener = new Object();
+			exclusiveAudioListener.sendNoConfirmation = function() {};
+			exclusiveAudioListener.sendConfirmation = function(answer, remember) {
+					if (answer) {
+						giveExclusiveAudio();
+						if (remember) {
+							userData["dontShowExclusiveAudioConfirmation"] = true;
+							so.flush();
+						}
+					}
+				};
+			if (dontShowExclusiveAudioConfirmation == true) {
+				exclusiveAudioListener.sendConfirmation(true, true);
+			} else {
+				new lz.confirmationSingleSWF10(canvas,{
+					labelid:1428,
+					labeliderror:1539,
+					refObj:exclusiveAudioListener,
+					showCheckBox:true});
+			}
+		</method>
+
+		<!-- This will mute the Microphone only to the person that is speaking if the gain is set to zero NOBODY will hear 'em -->
+		<method name="muteMicrophone" args="roomClientObj">
+		<![CDATA[
+			if ($debug) Debug.write("############ muteMicrophone ", roomClientObj.micMuted, roomClientObj.publicSID, this.publicSID);
+			
+			if (roomClientObj.publicSID == this.publicSID) {
+				if ($debug) Debug.write("Set Mute for Client :: ", roomClientObj);
+				if ($debug) Debug.write("############ SET GAIN " + roomClientObj.micMuted);
+				this._chatvideoinner._videostream.muteMicro(roomClientObj.micMuted);
+				this.isMutedByModerator = roomClientObj.micMuted;
+				this.setMicMuted(roomClientObj.micMuted);
+			}
+		]]>
+		</method>
+
+		<!-- This will mute it only locally, that means on other screens the user might be still online and loud -->
+		<method name="silenceMicrophone" args="mute">
+		<![CDATA[
+			if ($debug) Debug.write("############ silenceMicrophone ", this.publicSID);
+			if (this.publicSID == canvas.publicSID) {
+				//self sound turned off
+				canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'lc_switchMicMuted', this.publicSID, mute);
+				if (!mute) {
+					this._chatvideoinner._videostream.muteMicro(false);
+				}
+			} else {
+				//disable this action for now
+				if (!canvas.ismoderator) {
+					new lz.labelerrorPopupSWF10(canvas,{errorlabelid:1409});
+					return;
+				}
+				//you can not unmute it locally by putting sound to 100 cause the gain is set to zero globally in the micro of the sender!
+				//so setting the sound/volume on the other remote clients has zero effect
+				if (this.isMutedByModerator && !canvas.ismoderator) {
+					//FIXME: That is not true, you could restart audio/video ...
+					var errorlabelid = this.publicSID == canvas.publicSID ? 1387 : 1402;
+					new lz.labelerrorPopupSWF10(canvas,{errorlabelid:errorlabelid});
+					return;
+				}
+				if (canvas.ismoderator) {
+					canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'lc_switchMicMuted', this.publicSID, mute);
+				} else {
+					this._chatvideoinner._videostream.setSoundVolume(mute ? 0 : 100);
+				}
+			}
+			this.setMicMuted(mute);
+		]]>
+		</method>
+
+		<method name="setMicMuted" args="micMuted">
+        <![CDATA[
+	        this.micMuted = micMuted;
+            this._toolbar._mute._tip.setAttribute("labelid", micMuted ? "1406" : "1405");
+            this._toolbar._mute._itemRsc.setAttribute('frame', micMuted ? 2 : 1);
+            if (isMicrophonesRoom) {
+                var label = canvas.getLabelName(micMuted ? 1435 : 1434);
+                var color = micMuted ? canvas.getThemeColor('basebgcolorizer') : "0xFF6600";
+                this._innertop.setAttribute('bgcolor', color);
+                this._innerbottom.setAttribute('bgcolor', color);
+                this._innerbottom.title.setAttribute('text', label);
+            }
+        ]]>
+		</method>
+
+		<method name="setStreamVolume" args="v">
+			if ($debug) Debug.write("############ setStreamVolume ", v, this.publicSID);
+			var stream = this._chatvideoinner._videostream;
+			if (this.isremote) {
+				stream.setSoundVolume(v);
+			} else {
+				stream.setAttribute('micGain', v);
+				stream.micro.gain = v;
+				if (0 == v) {
+					this.setMicMuted(true);
+					canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'lc_switchMicMuted', this.publicSID, true);
+				} else if (micMuted) {
+					this.silenceMicrophone(false);
+				}
+			}
+		</method>
+
+		<method name="getStreamVolume">
+			var stream = this._chatvideoinner._videostream;
+			return this.isremote ? Number(stream._ns.soundTransform.volume * 100) : stream.micro.gain;
+		</method>
+
+		<handler name="onheight" args="value">
+			if (null == initRatio || !respectRatio) {
+				return;
+			}
+			var videoHeight = value - this.videoInsetY - this.bottomBarHeight;
+			var expectedVideoWidth = videoHeight * initRatio;
+			var expectedPodWidth = expectedVideoWidth + this.videoInsetX;
+			if (this.width != expectedPodWidth) {
+				this.setAttribute("width", expectedPodWidth);
+			}
+		</handler>
+
+		<handler name="onwidth" args="value">
+			if (null == initRatio || !respectRatio) {
+				return;
+			}
+			var videoWidth = value - this.videoInsetX;
+			var expectedVideoHeight = videoWidth / initRatio;
+			var expectedPodHeight = expectedVideoHeight + this.videoInsetY + this.bottomBarHeight;
+			if (this.height != expectedPodHeight) {
+				this.setAttribute("height", expectedPodHeight);
+			}
+		</handler>
+	</class>
+</library>
diff --git a/WebContent/swf10/video/changeDevice.lzx b/WebContent/swf10/video/changeDevice.lzx
new file mode 100644
index 0000000..8a97435
--- /dev/null
+++ b/WebContent/swf10/video/changeDevice.lzx
@@ -0,0 +1,160 @@
+<?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.
+  
+-->
+<library>
+
+<class name="changeDevice" extends="labelExplorerBox" labelid="51"
+    docking="true" resizeable="false" closable="true" width="300" x="14" height="260">
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+                import flash.net.SharedObject;
+            </passthrough>
+        </when>
+    </switch>
+
+    <method name="storelocaldata">
+        <![CDATA[
+        var so:SharedObject = SharedObject.getLocal('userdata');
+        var sdata = so.data;
+        if (sdata==null) sdata = new Array();
+        sdata["cam"]=availibleCams3.getValue();
+        sdata["mic"]=availibleMics3.getValue();
+        sdata["savecamdata"] = this.holddatainSO.getValue();
+        so.flush();
+        ]]>
+    </method>   
+    
+    <method name="doninitalize">
+        this.storelocaldata();
+        this.close();
+    </method>
+     
+    <labelText labelid="52" fontsize="11" x="10" y="30" />
+
+    <resetCombobox fontsize="11" id="availibleCams3" x="10" y="50" width="280" editable="false">
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.media.Camera;
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+
+        <handler name="oninit">
+            <![CDATA[
+            //Get all availible Cam's
+            var tw = Camera.names;
+            var t = "";
+            for (var eg=0;eg<tw.length;eg++){
+                this.addItem(tw[eg],eg);
+                t=eg;
+            }
+
+            var so:SharedObject = SharedObject.getLocal('userdata');
+	        var sdata = so.data;
+	        var cam;
+            if (sdata != null){
+                cam = sdata["cam"];
+                if (cam == 'undefined') {
+                    cam = t;
+                }
+            } else {
+                cam = t;
+            }
+            this.selectItem(String(cam));
+            ]]>
+        </handler>
+    </resetCombobox>
+    
+    <labelText text="LABEL53" labelid="53" fontsize="11" x="10" y="80" />
+
+    <resetCombobox fontsize="11" id="availibleMics3"  x="10" y="100" width="280" editable="false">
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.media.Microphone;
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+
+        <handler name="oninit">
+            <![CDATA[
+            //Get all availible Mic's
+            var tw = Microphone.names;
+            var t = "";
+            for (var eg=0;eg<tw.length;eg++){
+                t=eg;
+                this.addItem(tw[eg],eg);
+            }
+
+            var so:SharedObject = SharedObject.getLocal('userdata');
+	        var sdata = so.data;
+	        var mic;
+	        if (sdata != null){
+                mic = sdata["mic"];
+                if (mic == 'undefined') {
+                    mic = t;
+                }
+            } else {
+                mic = t;
+            }
+            this.selectItem(String(mic));
+            ]]>
+        </handler>
+    </resetCombobox>
+
+    <!-- Remember Me -->
+    <labelCheckbox name="holddatainSO" labelid="762" x="10" y="220">
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+
+        <handler name="oninit">
+            var so:SharedObject = SharedObject.getLocal('userdata');
+	        var sdata = so.data;
+            var save = sdata["savecamdata"];
+            if ($debug) Debug.write("savecamdata save: ",save);
+            if(save) this.setValue(true);
+        </handler>         
+    </labelCheckbox>
+    
+    <simpleLabelButton fontsize="11" labelid="54" x="80" y="190" width="100">
+        <handler name="onclick">
+            this.parent.doninitalize();
+        </handler>
+    </simpleLabelButton>
+    
+    <labelText labelid="56" width="280" x="10"
+    	y="150" multiline="true" resize="false"/>
+    
+    <simpleLabelButton labelid="55" width="100" x="190" y="190"
+        onclick="this.parent.close();" />
+    
+</class>
+
+</library>
diff --git a/WebContent/swf10/video/editRecordStreamSWF10.lzx b/WebContent/swf10/video/editRecordStreamSWF10.lzx
new file mode 100644
index 0000000..db2a346
--- /dev/null
+++ b/WebContent/swf10/video/editRecordStreamSWF10.lzx
@@ -0,0 +1,850 @@
+<?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.
+  
+-->
+<library>
+    
+<!-- #######################
+	Class editRecordStream
+	
+	Description:
+	This Class shows a window where you can alter you Video-/Microphone- Input-Resources
+	and start to stream. The app could also use the default values for Cam/Mic but
+	most users don't know how to alter this (weather in System-Control-Panel or by Right Clicking
+	on the Flash-Screen and *>Preferences>Camera* )
+	So I think it is better if Users are forced to choose something from this list
+	
+ -->
+ 
+<class name="editRecordStreamSWF10"  extends="labelExplorerBox" labelid="51"
+	width="680" height="540" x="14" y="-540" >
+
+    <switch>
+        <when property="$as3">
+            <passthrough>
+				import flash.events.StatusEvent;
+                import flash.media.Camera;
+                import flash.media.Microphone;
+                import flash.media.MicrophoneEnhancedMode;
+                import flash.media.MicrophoneEnhancedOptions;
+                import flash.net.SharedObject;
+                import flash.media.SoundCodec;
+            </passthrough>
+        </when>
+    </switch>
+
+    <attribute name="myvideocontainer" value="null" />
+
+    <attribute name="chosenCam" value="null" />
+    <attribute name="chosenMic" value="null" />
+    <attribute name="chosenSetting" value="null" />
+    <attribute name="currentClient" value="null" />
+
+    <attribute name="remoteMessage" value="null" />
+
+    <!---
+        if true the user will see the dialog no matter if he has choosen "do not show again" or not
+     -->
+    <attribute name="isSyncUpdate" value="false" type="boolean" />
+
+    <attribute name="doDefaultAnimation" value="true" type="boolean" />
+
+    <attribute name="cam_default_width" value="320" type="number" />
+    <attribute name="cam_default_height" value="260" type="number" />
+    
+    <attribute name="interviewPodId" value="0" type="number" />
+    
+    <attribute name="lastRecorded" value="" type="string" />
+	
+	<attribute name="isRunning" value="false" type="boolean" />
+	
+	<attribute name="recordingsCounter" value="5" type="number" />
+	
+	<attribute name="timerIsRunning" value="false" type="boolean" />
+	
+	<attribute name="counterDelegate" value="null" />
+	
+	<method name="startTimer">
+		this.timerIsRunning = true;
+		this.timerWasUnmutedTheFirstTime = true;
+		lz.Timer.addTimer( this.counterDelegate, 1000 );
+	</method>
+	
+	<method name="count" args="calleeObj">
+		if (this.recordingsCounter != 0){
+			this.recordingsCounter -= 1;
+			lz.Timer.addTimer( this.counterDelegate, 1000 );
+			
+			this._text._info.setAttribute("text",""+this.recordingsCounter+" sec");
+			
+		} else {
+			this._text.setAttribute("visibility","hidden");
+			this.doStop();
+			this.timerIsRunning = false;
+			this.doPlay();
+		}
+	</method>
+	
+	<method name="startTimerToCount">
+		if (!this.timerIsRunning) {
+			this.startTimer();
+		}
+	</method>
+	
+	<handler name="oninit">
+		<![CDATA[
+			//Make this view the upmost in the z-Index order
+			canvas.inner.bringToFront();
+		
+			this.counterDelegate = new LzDelegate( this, "count" );
+		
+			if ($debug) Debug.write("this.myvideocontainer ",this.myvideocontainer);
+			if ($debug) Debug.write("editrecordstream ###################### ");
+
+			canvas.videoComp_lc.client = {clb_getBroadCastId: this.clb_getBroadCastId, clb_setUserAVSettings: this.clb_setUserAVSettings};
+
+	        var sharedData = this.checkDeviceSettingsRememberStatus();
+            if(sharedData != null) {
+                this.chosenCam = sharedData["cam"];
+                this.chosenMic = sharedData["mic"];
+                this.cam_default_width = canvas.isInterview ? 320 : sharedData["width"];
+                this.cam_default_height = canvas.isInterview ? 260 : sharedData["height"];
+                this.chosenSetting = sharedData["avstored"];
+                this.remoteMessage = new Array();
+                this.remoteMessage[0] = 'avsettings';
+                this.remoteMessage[2] = this.chosenSetting; 
+                this.getBroadCastId.doCall();
+            } else {
+                if (this.doDefaultAnimation && !canvas.isInterview) {
+                    this._chooseDeviceAnimation.setAttribute('started', true);
+                }
+                this.initItemsAndDefaultAttachCamera();
+            }
+	        
+	        if (canvas.isInterview) {
+	        	if ($debug) Debug.write("Is interview ",interviewPodId);
+                this.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]);
+                this.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]);
+	        }
+        ]]>
+	</handler>
+	
+	<!-- 
+	   If the remember check-box was true, this flag in the Flash Cookie (aka SharedObject)
+	   is true and the box will close without asking for device settings.
+	 -->
+	<method name="checkDeviceSettingsRememberStatus">
+	<![CDATA[
+		var t:SharedObject = SharedObject.getLocal('userdata');
+		var g = t.data;
+		var save = g["savecamdata"];
+		if ($debug) Debug.write("save: ",save,g["cam"],g["mic"],this.isSyncUpdate);
+		//In case its an Audio-Only Room this box should not close automatically
+		if ($debug) Debug.write("canvas.currentRoomObject: ", canvas.currentRoomObject);
+		
+		//In case the user presses the Sync Button this box should
+        //not close automatically and do the user-prefered values
+		if(save && !this.isSyncUpdate && this.checkLocalDataComplete()) {
+		    return g;
+		}
+		return null;
+	]]>
+	</method>
+	
+	<!-- 
+	   Checks if all needed data in the shared object is available
+	 -->
+	<method name="checkLocalDataComplete">
+        <![CDATA[
+        	var t:SharedObject = SharedObject.getLocal('userdata');
+	        var g = t.data;
+            if (g["width"] > 0 && g["height"] > 0) {
+                return true;
+            }
+            return false;
+        ]]>
+    </method>
+    
+    
+    <netRemoteCallHib name="getBroadCastId" funcname="getBroadCastId" remotecontext="$once{ canvas.thishib }" >
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("getBroadCastId",value,canvas.publicSID);
+                parent.myvideocontainer = canvas._videoComponent.createVideoObject(canvas.publicSID, true, parent.interviewPodId, canvas.userobject);
+
+                if ($debug) Debug.write("parent.setUserAVSettings -1- ",parent.chosenSetting);
+                if ($debug) Debug.write("parent.setUserAVSettings -2- ",parent.remoteMessage);
+                if ($debug) Debug.write("parent.setUserAVSettings -3- ",parent.cam_default_width);
+                if ($debug) Debug.write("parent.setUserAVSettings -4- ",parent.cam_default_height);
+                if ($debug) Debug.write("parent.setUserAVSettings -5a- ",canvas.currentRoomObject.rooms_id);
+                if ($debug) Debug.write("parent.setUserAVSettings -6- ",canvas.publicSID);
+                
+                parent.setUserAVSettings.doCall();
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+    
+    <netRemoteCallHib name="setUserAVSettings" funcname="setUserAVSettings" remotecontext="$once{ canvas.thishib }" >  
+        <netparam><method name="getValue">return parent.parent.chosenSetting;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.remoteMessage;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.cam_default_width;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.cam_default_height;</method></netparam>
+        <netparam><method name="getValue">return canvas.currentRoomObject.rooms_id;</method></netparam>
+        <netparam><method name="getValue">return canvas.publicSID;</method></netparam>
+        <netparam><method name="getValue">return parent.parent.interviewPodId;</method></netparam>
+        <handler name="ondata" args="value">
+            <![CDATA[
+                if ($debug) Debug.write("setUserAVSettings",value);
+                parent.currentClient = value;
+                parent.doStartConference();
+            ]]>
+        </handler>   
+    </netRemoteCallHib>  
+
+    <method name="storelocaldata">
+        <![CDATA[
+            //Debug.write("sharedobject store ");
+            var t:SharedObject = SharedObject.getLocal('userdata');
+            var g = t.data;
+            if (g==null) g = new Array();
+            g["cam"] = this.availableCams.getValue();
+	        g["mic"] = this.availableMics.getValue();
+	        g["avstored"] = this.availableSettings.getValue();
+	        g["savecamdata"] = this.holddatainSO.getValue();
+	        g["width"] = this.cam_default_width;
+	        g["height"] = this.cam_default_height;
+            t.flush();
+        ]]>
+    </method>
+
+	<method name="getMic" args="valMic">
+	<![CDATA[
+		if ($debug) Debug.write("Entering getMic ...", valMic);
+		var _micro = null;
+		if (valMic != null) {
+			_micro = canvas.echoPath == 0 ? Microphone.getMicrophone(valMic) : Microphone.getEnhancedMicrophone(valMic);
+			
+			if (_micro != null && canvas.echoPath == 256) {
+				var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
+				options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
+				options.echoPath = 256;
+				options.nonLinearProcessing = true;
+				_micro.enhancedOptions = options;
+				if ($debug) Debug.write("echoPath set to 256");
+				if ($debug) Debug.write(_micro.enhancedOptions);
+			}
+			
+			if (_micro != null) {
+				_micro.codec = SoundCodec.NELLYMOSER;
+				_micro.framesPerPacket = 1;
+				_micro.setSilenceLevel(0, 2000);
+				if ($debug) Debug.write("canvas.microphoneRateBest: ",canvas.microphoneRateBest);
+				_micro.rate = (canvas.microphoneRateBest == 'undefined') ? 22 : canvas.microphoneRateBest;
+				_micro.gain = 50;
+				// this has no effect if enhanced microphone is obtained
+				//Microphone setUseEchoSupression(bool)
+				var enableEchoSupression = !(canvas.echoSuppression === "false");
+				if ($debug) Debug.write("canvas.echoSuppression: ",canvas.echoSuppression);
+				_micro.setUseEchoSuppression(enableEchoSupression);
+			}
+		}
+		if ($debug) Debug.write("... getMic DONE", _micro);
+		return _micro;
+	]]>
+	</method>
+	
+	<method name="getCam" args="valCam,videoview">
+	<![CDATA[
+		if ($debug) Debug.write("Entering getCam ...", valCam);
+		var _camera = null;
+		if (valCam != null) {
+			_camera = Camera.getCamera(valCam);
+		}
+		if (_camera != null) {
+            if ($debug) Debug.write("videoview: ",videoview);
+			
+			if ($debug) Debug.write("_camera.setQuality BEST: ", canvas.isInterview, (canvas.bandwidthNeededBest*2), canvas.camQualityBest);
+			if (canvas.isInterview) {
+				//we need a fixed frame rate for the videos to merge them later on
+				_camera.setMode(videoview.width, videoview.height, 24, true);
+				if ($debug) Debug.warn("IS INTERVIEW ");
+				_camera.setQuality(0, 98);
+			} else {
+				if ($debug) Debug.write("_camera.setMode: ",videoview.width,videoview.height,canvas.framesPerSecond,true);
+				_camera.setMode(videoview.width, videoview.height, canvas.framesPerSecond, true);
+				if ($debug) Debug.warn("IS NO INTERVIEW ");
+				_camera.setQuality(canvas.bandwidthNeededBest, canvas.camQualityBest);
+			}
+		}
+		if ($debug) Debug.write("... getCam DONE", _camera);
+		return _camera;
+	]]>
+	</method>
+	
+	<method name="doStartConference">
+	<![CDATA[
+		if ($debug) Debug.write("doninitalize");
+		var settings = this.chosenSetting;
+		if (!canvas.isInterview) {
+			this.myvideocontainer.setDefaultVideoSize(this.cam_default_width, this.cam_default_height);
+		}
+		
+		var videoview = this.myvideocontainer._chatvideoinner._videostream;
+		if ($debug) Debug.write("this.myvideocontainer: ", this.myvideocontainer);
+		this.myvideocontainer.setAttribute('isremote',false);
+		var _micro = this.getMic(this.chosenMic);
+		var _camera = this.getCam(this.chosenCam, videoview);
+		if ($debug) Debug.write(_camera , _micro, settings);
+		
+		if ($debug) Debug.write("BroadcastId: ", this.currentClient.broadCastID);
+		switch (settings){
+			case "av":
+				videoview.broadcast(this.currentClient.broadCastID,_camera,_micro);
+				this.myvideocontainer.setAttribute("visible", true);
+				if(canvas.isInterview) {
+					canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings);
+				} else {
+					if (this.myvideocontainer.minimized) {
+						this.myvideocontainer.reminimize();
+					}
+				}
+				break;
+			case "a":
+				videoview.broadcast(this.currentClient.broadCastID,null,_micro);
+				this.myvideocontainer.setAttribute("visible", canvas.isInterview || !this.myvideocontainer.hidebyAudioOnly);
+				if(canvas.isInterview) {
+					canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings);
+				} else {
+					if (!this.myvideocontainer.hidebyAudioOnly) {
+						if (!this.myvideocontainer.minimized) {
+							this.myvideocontainer.minimize();
+						}
+					}
+				}
+				break;
+			case "v":
+				videoview.broadcast(this.currentClient.broadCastID,_camera,null);
+				this.myvideocontainer.setAttribute("visible", true);
+				if(canvas.isInterview) {
+					canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings);
+				} else {
+					if (this.myvideocontainer.minimized) {
+						this.myvideocontainer.reminimize();
+					}
+				}
+				break;
+			case "n":
+				if ($debug) Debug.write("Do not Publish A/V");
+				//Prevent from Hiding the Box in Event Modus
+				if (canvas.thishib.modus == "conference") {
+					this.myvideocontainer.setAttribute("visibility","hidden");
+				}
+				break;
+			default:
+				if ($debug) Debug.warn("no valid device Setup chosen");
+				break;
+		}
+		this.close();
+	]]>
+	</method>
+    
+	<method name="doStartRecording">
+	<![CDATA[
+		this._btnStartRecording.setAttribute("enabled",false);
+		this._play.setAttribute("enabled",false);
+		this.recordingsCounter = 5;
+		this._text.setAttribute("visibility","visible");
+		this._text._info.setAttribute("text","5 sec");
+		this.isRunning = true;
+		
+		var videoview = this._video.content._publisher._chatvideoinner._videostream;
+		var _micro = this.getMic(this.availableMics.getValue());
+		var _camera = this.getCam(this.availableCams.getValue(), videoview);
+		if ($debug) Debug.write(_camera, _micro);
+		
+		if ($debug && _camera != null) Debug.warn("_camera.muted ", _camera.muted);
+		if ($debug && _micro != null) Debug.warn("_micro.muted ", _micro.muted);
+		if ((_camera != null && !_camera.muted) || (_camera == null && _micro != null)) {
+			this.startTimer();
+		}
+		
+		//start recording of client stream
+		var t = new Date();
+		this.lastRecorded = "TEST_SETUP_"+t.getTime();
+		this._video.content._publisher.setAttribute("visibility","visible");
+		this._video.content._viewer.setAttribute("visibility","hidden");
+		videoview.record(this.lastRecorded,_camera,_micro);
+	]]>
+	</method>
+    
+    <method name="doPlay">
+    	<![CDATA[
+    	   if (this.lastRecorded == "") {
+    	   	   //Error - nothing recorded yet
+    	   	   if ($debug) Debug.warn("Nothing to Play");
+    	   } else {
+    	   	   this._play.setAttribute("enabled",true);
+    	   	   this._video.content._publisher.setAttribute("visibility","hidden");
+               this._video.content._viewer.setAttribute("visibility","visible");
+               var videoview = this._video.content._viewer._chatvideoinner._videostream;
+               videoview.justPlayStream(this.lastRecorded+".flv",0);
+    	   }
+    	]]>
+    </method>
+    
+    <method name="doStop">
+    	if (this.isRunning) {
+    		this.isRunning = false;
+    		var videoview = this._video.content._publisher._chatvideoinner._videostream;
+    		this._btnStartRecording.setAttribute("enabled",true);
+    		videoview._stop();
+    		this.doPlay();
+    	}
+    	var videoviewViewer = this._video.content._viewer._chatvideoinner._videostream;
+        videoviewViewer._stop();
+    </method>
+
+    <animator name="_chooseDeviceAnimation" started="false" attribute="y" to="40" duration="750" />
+    
+    
+    <labelText fontstyle="bold" labelid="758"
+			   width="${ parent.width-2 }" height="30" multiline="true" y="20" /> 
+
+    <labelText labelid="447" fontsize="11" fontstyle="bold" x="10" y="80" width="$once{ parent.width-20 }" />
+
+	<resetCombobox fontsize="11" name="availableSettings" x="10" y="100" width="280" editable="false">
+		<handler name="onselect">
+		<![CDATA[
+			var camVisible = true;
+			var micVisible = true;
+			var textVisible = false;
+			switch (this.getValue()){
+				case "av":
+					break;
+				case "a":
+					camVisible = false;
+					break;
+				case "v":
+					micVisible = false;
+					break;
+				case "n":
+					camVisible = false;
+					micVisible = false;
+					textVisible = true;
+					break;
+				default:
+					if ($debug) Debug.warn("no valid device Setup chosen");
+					break;
+			}
+			this.parent.availableCamsLabel.setAttribute("visible", camVisible);
+			this.parent.availableCams.setAttribute("visible", camVisible);
+			this.parent.availableMicsLabel.setAttribute("visible", micVisible);
+			this.parent.availableMics.setAttribute("visible", micVisible);
+			this.parent.infoTextNoAV.setAttribute("visible", textVisible);
+			this.parent.availibleResolutionsLabel.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+			this.parent.availibleResolutionsWarning.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+			this.parent.availibleResolutions.setAttribute("visible", ((canvas.isInterview) ? false : camVisible));
+		]]>
+		</handler>
+	</resetCombobox>
+    
+    <attribute name="executeAttachCamera" value="false" type="boolean" />
+
+	<method name="getStoredProp" args="prop">
+		//Initialize and get eventually stored property
+		var t:SharedObject = SharedObject.getLocal('userdata');
+		var g = t.data;
+		return g != null ? "" + g[prop] : null;
+	</method>
+	
+	<method name="fillDeviceList" args="list,combo,prop">
+	<![CDATA[
+		//Initialize and get eventually stored property
+		var dev = getStoredProp(prop);
+		
+		//Get all availible devices
+		var foundStoredDev = null;
+		for (var eg = 0; eg < list.length; ++eg) {
+			combo.addItem(list[eg], eg);
+			var r = "" + eg;
+			if (r == dev) {
+				foundStoredDev = r;
+			}
+		}
+		return foundStoredDev;
+	]]>
+	</method>
+	
+	<method name="selectListItem" args="combo,selected,select">
+		if (selected != null) {
+			combo.selectItem(selected);
+		} else {
+			if (select) {
+				combo.selectItemAt(0);
+			}
+		}
+	</method>
+	
+    <!-- 
+        Initialize the default settings for cam and resolution and attach the camera 
+        after we have made sure the values are there one time
+     -->
+	<method name="initItemsAndDefaultAttachCamera">
+	<![CDATA[
+		//fill list of Cameras
+		var cameras = Camera.names;
+		var foundStoredCam = fillDeviceList(cameras, availableCams, "cam");
+		selectListItem(availableCams, foundStoredCam, cameras.length > 0);
+		
+		//fill list of Mics
+		var mics = Microphone.names;
+		var foundStoredMic = fillDeviceList(mics, availableMics, "mic");
+		selectListItem(availableMics, foundStoredMic, mics.length > 0);
+
+		// settings
+		var addCams = !canvas.currentRoomObject.isAudioOnly && cameras.length > 0;
+		var addMics = mics.length > 0;
+		if (addCams && addMics) {
+			availableSettings.addItem(canvas.getLabelName(448), "av");
+		}
+		if (addMics) {
+			availableSettings.addItem(canvas.getLabelName(449), "a");
+		}
+		if (addCams) {
+			availableSettings.addItem(canvas.getLabelName(450), "v");
+		}
+		availableSettings.addItem(canvas.getLabelName(451), "n");
+		
+		var avstored = getStoredProp("avstored");
+		
+		if (availableSettings.getItem(avstored) != null) {
+			availableSettings.selectItem(avstored);
+		} else {
+			availableSettings.selectItemAt(0);
+		}
+
+		//Initialize and set default resolutions combobox
+		if ($debug) Debug.write("myConfigSet 1 ", canvas.myConfigSet);
+		if ($debug) Debug.write("myConfigSet 2 ", canvas.myConfigSet.getPointer().xpathQuery('config/availableCameraResolutions/resolution'));
+		if ($debug) Debug.write("myConfigSet 3 ", canvas.myConfigSet.getPointer().xpathQuery('config/availableCameraResolutions/resolution/'));
+		if ($debug) Debug.write("myConfigSet 4 ", canvas.myConfigSet.getPointer().xpathQuery('config/availableCameraResolutions/resolution/*'));
+		
+		this.executeAttachCamera = true;
+		
+		this.attachCamera();
+	]]>
+	</method>
+	
+	<method name="attachCamera">
+	    <![CDATA[
+		    //if the user has configured this box to auto-close, do not try to
+		    //attach the cam to the preview (black) box
+		    var sharedData = this.checkDeviceSettingsRememberStatus();
+	        if(sharedData != null) {
+	            return;
+	        }
+	        
+	        //Don't execute before combobox items are not initialized
+	        if (!this.executeAttachCamera) {
+	            if ($debug) Debug.write("Return, executeAttachCamera is false");
+                return;
+	        }
+		
+			if (_video == undefined)  {
+			    if ($debug) Debug.write("Return, video video not yet ready");
+                return;
+			}
+			_video.content._publisher.setAttribute("visibility", "visible");
+			_video.content._viewer.setAttribute("visibility", "hidden");
+			var videoview = this._video.content._publisher._chatvideoinner._videostream;
+			var _camera = getCam(availableCams.getValue(), videoview);
+			if (_camera != null) {
+			    //stop will not call clear as there is no NetStream
+				videoview._stop();
+				videoview.clear();
+				videoview.attachCamera(_camera);
+			}
+		]]>
+	</method>
+	
+	<method name="cleanVideos">
+	   if (_video == undefined) return;
+	   //make sure stop and clear is called, as the _stop method does not work for all
+	   //videoviews in the device settings.
+	   _video.content._publisher._chatvideoinner._videostream._stop();
+       _video.content._viewer._chatvideoinner._videostream._stop();
+       _video.content._publisher._chatvideoinner._videostream.clear();
+       _video.content._viewer._chatvideoinner._videostream.clear();
+       if ($debug) Debug.write("Cleaned up videos and free resources");
+	</method>
+	
+    <labelText name="availableCamsLabel" labelid="52" fontsize="11" x="10" y="140" width="$once{ parent.width-20 }" />
+    <resetCombobox fontsize="11" name="availableCams" x="10" y="160" width="280" editable="false">
+		<handler name="onselect">
+			parent.attachCamera();
+		</handler>
+    </resetCombobox>
+
+    <labelText name="availableMicsLabel" labelid="53" fontsize="11" x="10" y="180" width="$once{ parent.width-20 }" />
+    <resetCombobox fontsize="11" name="availableMics"  x="10" y="200" width="280" editable="false" />
+
+    <labelText name="infoTextNoAV" labelid="452" multiline="true" width="280" 
+               fontsize="11" x="10" y="130" visibility="hidden" />
+               
+    <labelText name="availibleResolutionsLabel" labelid="1429" 
+            fontsize="11" x="10" y="224" width="$once{ parent.width-20 }" />
+            
+    <view name="availibleResolutionsWarning" x="272" y="224" 
+            resource="warning_icon_popup_devices_rsc" clickable="true">
+        <labelTooltip multiline="true" labelid="1430" />
+    </view>     
+    
+    <resetCombobox fontsize="11" name="availibleResolutions" x="10" shownitems="10"
+                y="244" width="280" editable="false">
+        <!--- @keywords private -->
+        <attribute name="counter" value="0" />
+		<handler name="onselect" args="item">
+		<![CDATA[
+			if (!canvas.isInterview) {
+				if ($debug) Debug.write("onselect w ", item.cam_width);
+				if ($debug) Debug.write("onselect h ", item.cam_height);
+				parent.setAttribute("cam_default_width",item.cam_width);
+				parent.setAttribute("cam_default_height",item.cam_height);
+				
+				if (item.cam_width > 240) {
+					var newWidth = 600 + item.cam_width - 240;
+					if (newWidth+parent.x+10 > canvas.width) {
+						newWidth = canvas.width - 10 - this.x;
+					}
+					parent.setAttribute("width",newWidth);
+				} else {
+					parent.setAttribute("width",600);
+				}
+				
+				if (item.cam_height > 180) {
+					var newHeight = 500 + item.cam_height - 180;
+					if (newHeight+parent.y+10 > canvas.height) {
+						newHeight = canvas.height - 10 - parent.y;
+					}
+					parent.setAttribute("height",newHeight);
+				} else {
+					parent.setAttribute("height",500);
+				}
+			}
+			parent.attachCamera();
+		]]>
+		</handler>
+        <textlistitem datapath="myConfigSet:/config/availableCameraResolutions/resolution" >
+            <switch>
+	            <when property="$as3">
+	                <passthrough>
+	                    import flash.net.SharedObject;
+	                </passthrough>
+	            </when>
+	        </switch>
+            <attribute name="cam_width" value="320" type="number" />
+            <attribute name="cam_height" value="240" type="number" />
+            <handler name="ondata">
+                <![CDATA[
+                    // if ($debug) Debug.write("ondata ", this);
+                    var type = this.datapath.xpathQuery('@type');
+                    this.cam_width = Number(this.datapath.xpathQuery('@width'));
+                    this.cam_height = Number(this.datapath.xpathQuery('@height'));
+                    this.setAttribute("text",""+this.cam_width+"x"+this.cam_height+" ["+type+"]");
+                    var isDefault = this.datapath.xpathQuery('@isDefault');
+                    
+                    var t:SharedObject = SharedObject.getLocal('userdata');
+                    var g = t.data;
+                    var width = g["width"];
+                    var height = g["height"];
+                    if (width!=null && width > 0 && height!=null && height>0) {
+                        if (width == this.cam_width && height == this.cam_height) {
+                            parent.selectItemAt(parent.counter);
+                            parent.onselect.sendEvent(this);
+                        }
+                    } else {
+                        if (isDefault == "true") {
+                            if ($debug) Debug.write("Found default one ",type);
+                            parent.selectItemAt(parent.counter);
+                            parent.onselect.sendEvent(this);
+                        }
+                    }
+                    parent.counter+=1;
+                ]]>
+            </handler>
+        </textlistitem>
+    </resetCombobox>      
+    
+    <simpleLabelButton name="_btnStartRecording" labelid="775" 
+    				   width="140" x="150" y="280" height="28">
+    	<handler name="onclick">
+            parent._level_meter.startLevel();
+            parent.doStartRecording();
+        </handler>
+    </simpleLabelButton>
+    
+	<view x="340" y="60" name="_video" clip="true" 
+			width="${ parent.width-this.x-10 }" height="${ parent.height-260 }"> 
+		<view name="content">
+		
+			<videoObjectTestBroadcast name="_publisher"  
+					width="${ parent.parent.parent.cam_default_width }" 
+					height="${ parent.parent.parent.cam_default_height }">
+				<handler name="sendCameraStatus" args="camStatus">
+		            if ($debug) Debug.write("sendCameraStatus -1- ",camStatus);
+		            if (camStatus == "Camera.Unmuted") {
+		            	parent.parent.parent.startTimerToCount();
+		            }
+		        </handler>
+		        
+		        <handler name="sendMicroStatus" args="micStatus">
+		            if ($debug) Debug.write("sendMicroStatus -1- ",micStatus);
+		            if (micStatus == "Microphone.Unmuted") {
+		                parent.parent.parent.startTimerToCount();
+		            }
+		        </handler>
+			</videoObjectTestBroadcast>
+			
+			<videoObjectPlayTestBroadcast name="_viewer" visibility="hidden" 
+						width="${ parent.parent.parent.cam_default_width }" 
+						height="${ parent.parent.parent.cam_default_height }" />
+		</view>
+		
+		<om_vscrollbar />
+		<om_hscrollbar />
+	</view>
+	
+								  
+	<view name="_text" x="340" y="60" width="240" height="180" visibility="hidden">
+		<text name="_info" resize="true" bgcolor="0xFFFFFF" align="right"
+			  fontsize="12" fontstyle="bold" />
+	</view>
+    
+    <simpleLabelButton name="_play" y="${ parent.height-166 }" x="490" enabled="false"
+                	width="90" labelid="764" >
+        <handler name="onclick">
+            parent.doPlay();
+        </handler>
+    </simpleLabelButton>
+     
+    <view name="_level_meter" x="340" y="${ parent.height-190 }" width="240" height="20" clip="true" bgcolor="0x000000">
+    	
+    	 <!--- Level delegate, used to track level changes. 
+              @keywords private -->
+        <attribute name="_leveldel" value="$once{new LzDelegate(this, '_updateLevel')}"/>
+    	
+    	<method name="_updateLevel" args="no">
+    		<![CDATA[
+    		    if (parent._video.content._publisher._chatvideoinner._videostream.micro == null)
+    		    {
+    		    	return;
+    		    }
+    		    this.setNewLevel(parent._video.content._publisher._chatvideoinner._videostream.micro.activityLevel);
+    		]]>
+    	</method>
+    	
+    	<method name="startLevel">
+    		this._leveldel.register(lz.Idle, "onidle");
+    	</method>
+    	
+    	<method name="resetNewLevel">
+    		this._leveldel.unregisterAll();
+    		this.setNewLevel(0);
+    	</method>
+    	
+    	<method name="setNewLevel" args="no">
+    		<![CDATA[
+                var newLevel = (238/100) * no;
+                this._over.setAttribute("width",238-newLevel);
+                this._over.setAttribute("x",1+(newLevel));
+            ]]>
+    	</method>
+    	
+    	<view name="_bg" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+    	<view name="_grip" resource="level_meter_rsc" x="1" y="1" />
+    	<view name="_over" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" />
+    	<labelText labelid="767" x="2" y="2" height="16" width="236" resize="false" />
+    </view>
+    
+    <view y="${ parent.height-98 }" resource="test_setup_info_rsc" x="16" />
+    
+    <labelText fontstyle="bold" labelid="765" x="39" y="${ parent.height-100 }"
+               width="${ parent.width-50 }" multiline="true" />
+
+    <!-- Remember Me -->
+    <labelCheckbox name="holddatainSO" labelid="762" x="10" y="${ parent.height-20 }" >
+        <switch>
+            <when property="$as3">
+                <passthrough>
+                    import flash.net.SharedObject;
+                </passthrough>
+            </when>
+        </switch>
+        <handler name="oninit">
+            var t:SharedObject = SharedObject.getLocal('userdata');
+            var g = t.data;
+            var save = g["savecamdata"];
+            if ($debug) Debug.write("savecamdata save: ",save);
+            if(save) this.setValue(true);
+        </handler>
+    </labelCheckbox>
+
+    <simpleLabelButton fontsize="11" visibility="${ (canvas.isInterview) ? 'visible' : 'hidden' }"
+                       labelid="54" x="${ parent.width-220 }" y="${ parent.height-50 }" width="100">
+        <handler name="onclick">
+            parent.cleanVideos();
+            this.parent.storelocaldata();
+            this.parent.chosenCam = parent.availableCams.getValue();
+            this.parent.chosenMic = parent.availableMics.getValue();
+            this.parent.chosenSetting = parent.availableSettings.getValue();
+            this.parent.remoteMessage = new Array();
+            this.parent.remoteMessage[0] = 'avsettings';
+            this.parent.remoteMessage[1] = "0";
+            this.parent.remoteMessage[2] = this.parent.chosenSetting;
+            this.parent.getBroadCastId.doCall();
+        </handler>
+    </simpleLabelButton>
+
+    <simpleLabelButton fontsize="11" visibility="${ (canvas.isInterview) ? 'visible' : 'hidden' }"
+                       labelid="918" x="${ parent.width-110 }" y="${ parent.height-50 }" width="100">
+        <handler name="onclick">
+            parent.cleanVideos();
+            parent.close();
+        </handler>
+    </simpleLabelButton>
+
+    <simpleLabelButton fontsize="11" visibility="${ (!canvas.isInterview) ? 'visible' : 'hidden' }"
+    				   labelid="761" width="160" x="${ parent.width-170 }" y="${ parent.height-50 }" height="28">
+        <handler name="onclick">
+            parent.cleanVideos();
+        	this.parent.storelocaldata();
+        	this.parent.chosenCam = parent.availableCams.getValue();
+        	this.parent.chosenMic = parent.availableMics.getValue();
+        	this.parent.chosenSetting = parent.availableSettings.getValue();
+			this.parent.remoteMessage = new Array();
+			this.parent.remoteMessage[0] = 'avsettings';
+			this.parent.remoteMessage[1] = "0";
+			this.parent.remoteMessage[2] = this.parent.chosenSetting;
+            this.parent.getBroadCastId.doCall();
+        </handler>
+    </simpleLabelButton>
+
+</class>
+    
+</library>
diff --git a/WebContent/swf10/video/library.lzx b/WebContent/swf10/video/library.lzx
new file mode 100644
index 0000000..515567f
--- /dev/null
+++ b/WebContent/swf10/video/library.lzx
@@ -0,0 +1,65 @@
+<?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.
+  
+-->
+<library>
+
+	<!--  FamFam Icon Creative Commons -->
+    <resource name="warning_icon_popup_devices_rsc" src="resources/error.png" />
+
+	<!--  APL author sebawagner -->
+	<resource name="chatbgitem" src="resources/profile_pic.jpg" />
+
+	<!--  FamFam Icon Creative Commons -->
+	<resource name="resyncuser_rsc" src="resources/arrow_refresh_small.png" />
+	
+	<!--  APL author sebawagner -->
+    <resource name="mic_rsc" src="resources/micro.png" />
+    
+    <!--  APL author sebawagner -->
+	<resource name="speaking" src="resources/speaking.png" />
+
+    <!--  IconFinder Creative Commons -->
+    <resource name="volume" src="resources/volume.png" />
+	
+	<!--  FamFam Icon Creative Commons -->
+	<resource name="mute_btn_rsc">
+		<frame src="resources/sound.png" />
+		<frame src="resources/sound_mute.png" />
+	</resource>
+	
+	<!--  APL author sebawagner -->
+    <resource name="mute_micro_btn_rsc">
+		<frame src="resources/mute_micro.png" />
+		<frame src="resources/mute_micro_red.png" />
+	</resource>
+
+	<!--  APL author sebawagner -->
+	<resource name="lz_recorder_play" src="resources/webstart_play.png" />
+
+    <include href="changeDevice.lzx" />
+    <include href="videoUserProfilePicSWF10.lzx" />
+    <include href="editRecordStreamSWF10.lzx" />
+    <include href="baseVideoObject.lzx" />
+    <include href="videoObjectPlayBroadcast.lzx" />
+    <include href="videoObjectTestBroadcast.lzx" />
+    <include href="videoObjectPlayTestBroadcast.lzx" />
+    <include href="volumeSlider.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/video/resources/arrow_refresh_small.png b/WebContent/swf10/video/resources/arrow_refresh_small.png
new file mode 100644
index 0000000..d3087df
--- /dev/null
+++ b/WebContent/swf10/video/resources/arrow_refresh_small.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/error.png b/WebContent/swf10/video/resources/error.png
new file mode 100644
index 0000000..628cf2d
--- /dev/null
+++ b/WebContent/swf10/video/resources/error.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/micro.fla b/WebContent/swf10/video/resources/micro.fla
new file mode 100644
index 0000000..0631ad2
--- /dev/null
+++ b/WebContent/swf10/video/resources/micro.fla
Binary files differ
diff --git a/WebContent/swf10/video/resources/micro.png b/WebContent/swf10/video/resources/micro.png
new file mode 100644
index 0000000..9e025d4
--- /dev/null
+++ b/WebContent/swf10/video/resources/micro.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/mute_micro.fla b/WebContent/swf10/video/resources/mute_micro.fla
new file mode 100644
index 0000000..210ddbf
--- /dev/null
+++ b/WebContent/swf10/video/resources/mute_micro.fla
Binary files differ
diff --git a/WebContent/swf10/video/resources/mute_micro.png b/WebContent/swf10/video/resources/mute_micro.png
new file mode 100644
index 0000000..71efdbe
--- /dev/null
+++ b/WebContent/swf10/video/resources/mute_micro.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/mute_micro_red.fla b/WebContent/swf10/video/resources/mute_micro_red.fla
new file mode 100644
index 0000000..287c2a0
--- /dev/null
+++ b/WebContent/swf10/video/resources/mute_micro_red.fla
Binary files differ
diff --git a/WebContent/swf10/video/resources/mute_micro_red.png b/WebContent/swf10/video/resources/mute_micro_red.png
new file mode 100644
index 0000000..29e16b5
--- /dev/null
+++ b/WebContent/swf10/video/resources/mute_micro_red.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/profile_pic.jpg b/WebContent/swf10/video/resources/profile_pic.jpg
new file mode 100644
index 0000000..3b63f01
--- /dev/null
+++ b/WebContent/swf10/video/resources/profile_pic.jpg
Binary files differ
diff --git a/WebContent/swf10/video/resources/sound.png b/WebContent/swf10/video/resources/sound.png
new file mode 100644
index 0000000..6056d23
--- /dev/null
+++ b/WebContent/swf10/video/resources/sound.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/sound_mute.png b/WebContent/swf10/video/resources/sound_mute.png
new file mode 100644
index 0000000..b652d2a
--- /dev/null
+++ b/WebContent/swf10/video/resources/sound_mute.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/speaking.png b/WebContent/swf10/video/resources/speaking.png
new file mode 100644
index 0000000..2ca21a7
--- /dev/null
+++ b/WebContent/swf10/video/resources/speaking.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/volume.png b/WebContent/swf10/video/resources/volume.png
new file mode 100644
index 0000000..1b0dbc5
--- /dev/null
+++ b/WebContent/swf10/video/resources/volume.png
Binary files differ
diff --git a/WebContent/swf10/video/resources/webstart_play.png b/WebContent/swf10/video/resources/webstart_play.png
new file mode 100644
index 0000000..6d13683
--- /dev/null
+++ b/WebContent/swf10/video/resources/webstart_play.png
Binary files differ
diff --git a/WebContent/swf10/video/videoObjectPlayBroadcast.lzx b/WebContent/swf10/video/videoObjectPlayBroadcast.lzx
new file mode 100644
index 0000000..d162445
--- /dev/null
+++ b/WebContent/swf10/video/videoObjectPlayBroadcast.lzx
@@ -0,0 +1,75 @@
+<?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. -->
+<library>
+
+	<!--- Contains no microphone or camera Object, this view can only subscribe 
+		to a video or live-stream -->
+	<class name="videoObjectPlayBroadcast" extends="baseVideoObject"
+		isremote="true">
+		<attribute name="interviewPodId" value="-1" />
+		<attribute name="ratioW" value="1" />
+		<attribute name="ratioH" value="1" />
+
+		<attribute name="videoInsetX" value="2" type="number" />
+		<attribute name="videoInsetY" value="21" type="number" />
+		<attribute name="bottomBarHeight" value="0" type="number" />
+
+		<handler name="oninit">
+		<![CDATA[
+			if ($debug) Debug.write("Init videoObjectPlayBroadcast ",this.isremote,this.clientVars);
+			//Display widget defined in mother class
+			this._loudness.bringToFront();
+			this._resizeview.bringToFront();
+		]]>
+		</handler>
+
+		<!--- Change the video resolution by chaning pod size -->
+		<method name="setDefaultVideoSize" args="w,h">
+			this.initRatio = w / h;
+			this.setAttribute("width",w+this.videoInsetX);
+
+			if (canvas.currentRoomObject.showMicrophoneStatus) {
+				this.setAttribute("bottomBarHeight",this._innertop.height + 1);
+			}
+
+			this.setAttribute("height",h+this.videoInsetY+this.bottomBarHeight);
+		</method>
+
+		<view name="_chatvideoinner" x="$once{ parent.videoInsetX-1 }" y="$once{ parent.videoInsetY-1 }"
+			height="${parent.height-parent.videoInsetY-parent.bottomBarHeight}"
+			width="${parent.width-parent.videoInsetX}">
+
+			<attribute name="initH" />
+			<attribute name="initW" />
+
+			<handler name="oninit">
+				this.r.setAttribute('frame',5);
+				this.initH =
+				this.height;
+				this.initW = this.width;
+			</handler>
+
+			<view name="r"></view>
+
+			<baseVideoStreamDevice name="_videostream"
+				bgcolor="black" width="${parent.width}" height="${parent.height}">
+				<handler name="onlevel">
+					var fullLength = parent.height-24;
+					parent._activityLevel.setAttribute("height",-this.level*(fullLength/100));
+				</handler>
+			</baseVideoStreamDevice>
+
+			<view name="_activityLevel" width="6" x="2" y="${parent.height}"
+				opacity="0.5" bgcolor="0x00FF00" height="0" />
+		</view>
+	</class>
+</library>
diff --git a/WebContent/swf10/video/videoObjectPlayTestBroadcast.lzx b/WebContent/swf10/video/videoObjectPlayTestBroadcast.lzx
new file mode 100644
index 0000000..e989ae5
--- /dev/null
+++ b/WebContent/swf10/video/videoObjectPlayTestBroadcast.lzx
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<library>
+
+
+<!---
+	contains microphone and camera for broadcasting,
+	this class is used only in Meetings-Modus
+ -->
+
+ 
+<class name="videoObjectPlayTestBroadcast" extends="view" >
+
+	<view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
+		
+		<baseVideoStream name="_videostream" mode="broadcast"
+						 width="${parent.width}" height="${parent.height}" bgcolor="0x000000" />
+		
+	</view>	
+</class>
+
+
+</library>
diff --git a/WebContent/swf10/video/videoObjectTestBroadcast.lzx b/WebContent/swf10/video/videoObjectTestBroadcast.lzx
new file mode 100644
index 0000000..2fff0a2
--- /dev/null
+++ b/WebContent/swf10/video/videoObjectTestBroadcast.lzx
@@ -0,0 +1,55 @@
+<?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.
+  
+-->
+<library>
+
+
+<!---
+	contains microphone and camera for broadcasting,
+	this class is used only in Meetings-Modus
+ -->
+
+ 
+<class name="videoObjectTestBroadcast" extends="view" >
+
+    <event name="sendCameraStatus" />
+    
+    <event name="sendMicroStatus" />
+    
+	<view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
+		
+		<baseVideoStreamDevice name="_videostream" mode="broadcast" sendNotificationViaLocalConnection="false"
+						 width="${parent.width}" height="${parent.height}" bgcolor="0x000000">
+			<handler name="sendCameraStatus" args="camStatus">
+                if ($debug) Debug.write("sendCameraStatus",camStatus);
+                parent.parent.sendCameraStatus.sendEvent(camStatus);
+            </handler>
+            
+            <handler name="sendMicroStatus" args="micStatus">
+                if ($debug) Debug.write("sendMicroStatus",micStatus);
+                parent.parent.sendMicroStatus.sendEvent(micStatus);
+            </handler>
+		</baseVideoStreamDevice>
+		
+	</view>	
+</class>
+
+
+</library>
diff --git a/WebContent/swf10/video/videoUserProfilePicSWF10.lzx b/WebContent/swf10/video/videoUserProfilePicSWF10.lzx
new file mode 100644
index 0000000..2a7797b
--- /dev/null
+++ b/WebContent/swf10/video/videoUserProfilePicSWF10.lzx
@@ -0,0 +1,38 @@
+<?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.
+  
+-->
+<library>
+
+<class name="videoUserProfilePicSWF10" extends="view" x="1" y="2" width="${parent.width-2}" height="${parent.height-3}" 
+	   clip="true" bgcolor="white">
+	<attribute name="value" value="null" />
+		
+	<handler name="oninit">
+	<![CDATA[
+		var extra = value.sipTransport ? "&parentPath=../default&moduleName=videoconf1"
+			: '&parentPath=&moduleName=remoteuserprofile&remoteUserid='+this.value.user_id;
+
+		this._userpic.setAttribute('src', canvas.getPictureUrl(value.picture_uri, extra));
+	]]>
+	</handler>	
+	<image name="_userpic" stretches="both" width="${parent.width}" height="${parent.height}" />
+</class>
+
+</library>
diff --git a/WebContent/swf10/video/volumeSlider.lzx b/WebContent/swf10/video/volumeSlider.lzx
new file mode 100644
index 0000000..8c2d35b
--- /dev/null
+++ b/WebContent/swf10/video/volumeSlider.lzx
@@ -0,0 +1,88 @@
+<?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.
+
+-->
+<library>
+
+<class name="VolumeSlider" extends="closableView" clickable="true" height="120">
+
+    <switch>
+    <when property="$as3">
+        <passthrough>
+            import flash.net.*;
+            import flash.media.*;
+        </passthrough>
+    </when>
+    </switch>
+
+    <attribute name="videoStream" value="null" />
+    <attribute name="ownStream" type="boolean" value="false" />
+    <attribute name="resizing" type="boolean" value="false" />
+
+    <attribute name="videoObject" value="null" />
+    <attribute name="initialNumber" value="50" type="number"/>
+    <attribute name="maxvalue" value="100" type="number" />
+
+    <dragHelper name="dragHelper"/>
+
+    <handler name="oninit">
+        dragHelper.create();
+    </handler>
+
+    <handler name="ondestroy">
+        dragHelper.remove();
+    </handler>
+
+    <!--- @keywords private -->
+    <method name="passModeEvent" args="eventStr,view" >
+        <![CDATA[
+        if (eventStr == "onmousedown") {
+            if (null != view) {
+                if (!view.childOf(this)) {
+                    this.close();
+                }
+            } else {
+                this.close();
+            }
+        }
+        if (view && view.childOf(this)) {
+            if (view[eventStr]) {
+                view[eventStr].sendEvent(view);
+            }
+            return false;
+        }
+        return true;
+        ]]>
+    </method>
+
+    <vslider name="_slider" height="$once{parent.height}" y="10" x="0" minvalue="0" maxvalue="100"
+        initvalue="$once{parent.initialNumber}" showrange="false" showvalue="false" switchaxis="true">
+        <handler name="onvalue" args="v">
+            if ($debug) Debug.write("onvalue", v);
+
+            parent.videoObject.setStreamVolume(Number(v));
+        </handler>
+        <handler name="onvalueChosenFinal">
+            parent.close();
+        </handler>
+    </vslider>
+
+</class>
+
+</library>
diff --git a/WebContent/swf10/whiteboard/library.lzx b/WebContent/swf10/whiteboard/library.lzx
new file mode 100644
index 0000000..ebb556b
--- /dev/null
+++ b/WebContent/swf10/whiteboard/library.lzx
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<library>
+
+    <include href="playBackWhiteboardVideo.lzx" />
+    
+</library>
diff --git a/WebContent/swf10/whiteboard/playBackWhiteboardVideo.lzx b/WebContent/swf10/whiteboard/playBackWhiteboardVideo.lzx
new file mode 100644
index 0000000..8dc7194
--- /dev/null
+++ b/WebContent/swf10/whiteboard/playBackWhiteboardVideo.lzx
@@ -0,0 +1,72 @@
+<?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.
+  
+-->
+<library>
+
+<!---
+    The playBackVideoStream is used in the recording playerback to show the video
+ -->
+<class name="playBackWhiteboardVideo" extends="baseVideoStream" bgcolor="0x000000">
+	
+	<attribute name="timerDelegate" value="null"/>
+    <attribute name="timerDelegateStarted" value="false" type="boolean"/>
+    
+    <handler name="oninit">
+        this.timerDelegate = new LzDelegate( this, "calcProgressBar" );
+    </handler>
+    
+    <method name="playVideoStream" args="streamName,delay">
+        this.playStream(streamName,delay);
+        this.timerDelegateStarted = true;
+        lz.Timer.addTimer( this.timerDelegate , 1000 );
+    </method>
+    
+    <method name="stopVideo">
+        this._stop();
+        lz.Timer.removeTimer(this.timerDelegate);
+        this.timerDelegateStarted = false;
+    </method>
+	
+	<handler name="onNetStatus" args="info">
+        //if ($debug) Debug.write("onNetStatus ",info);
+        if (info.code ==  "NetStream.Play.Stop" ) {
+        	if ($debug) Debug.write("-- stopStream");
+            //parent.parent.stopStream();
+            canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'stopRecordingStream', this.name);
+        }
+    </handler>
+    <handler name="onMetaDataEvent" args="info">
+        //if ($debug) Debug.warn("onMetaData ",info);
+        //if ($debug) Debug.write("parent.parent.deltaInSeconds ",Number(info.duration));
+        //parent.parent.deltaInSeconds = Number(info.duration);
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'metaWhiteboardPlaybackStream', this.name, Number(info.duration));
+    </handler>
+    
+    <method name="calcProgressBar" args="tObjRef">
+        //if ($debug) Debug.write("calcProgressBar updateRecordingStreamTime",this._ns.time)
+        canvas.videoComp_lc.send(canvas.videoComp_lc_name, 'updateWhiteboardStreamTime',this.name, this._ns.time);
+        if (this.timerDelegateStarted) {
+            lz.Timer.addTimer( this.timerDelegate , 1000 );
+        }
+    </method>
+	
+</class>
+
+</library>
\ No newline at end of file
diff --git a/build-jaudiotagger.xsl b/build-jaudiotagger.xsl
new file mode 100644
index 0000000..210533c
--- /dev/null
+++ b/build-jaudiotagger.xsl
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output omit-xml-declaration="no"/>
+    <xsl:template match="node()|@*">
+      <xsl:copy>
+         <xsl:apply-templates select="node()|@*"/>
+      </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="//*[@id='mp4reader.impl']"/>
+    <xsl:template match="//*[@id='mp3reader.impl']"/>
+</xsl:stylesheet>
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..e309e20
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,24 @@
+#   Licensed 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.
+project.version=3.0.4
+project.status=SNAPSHOT
+project.distname=openmeetings
+ivy.install.version=2.4.0
+maven.version=3.2.2
+red5.server.version=1.0.5-RELEASE
+laszlo.proxied=solo
+wicket.mode=DEPLOYMENT
+backup.file.list=backup_v_1_4_rc1_r3326.zip,backup_v_1_5_rc1_r3393.zip,backup_v_1_6_2_r3675.zip,backup_v_1_7_0_r3822.zip,backup_v_1_8_8_r4555.zip,backup_v_1_9_1_r4707.zip,backup_v_2_0_0_r1361497.zip,backup_v_3_0_0_r1573585.zip
+db=derby
+screensharing.keystore.password=secret
+screensharing.keystore.alias=screen
+rtmp.max.time=5000
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..d3801f0
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,1504 @@
+<?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.
+ -->
+<!DOCTYPE project>
+<project name="openmeetings" basedir="./" default="dist"
+	xmlns="antlib:org.apache.tools.ant"
+	xmlns:rat="antlib:org.apache.rat.anttasks"
+	xmlns:ivy="antlib:org.apache.ivy.ant"
+	xmlns:artifact="antlib:org.apache.maven.artifact.ant"
+	>
+	<loadproperties srcFile="build.properties" />
+
+	<property name="jar.suffix" value="${project.version}-${project.status}" />
+	<property environment="env" />
+
+	<property name="src.base.dir" value="${basedir}/src" />
+
+	<property name="dist.dir" value="${basedir}/dist" />
+
+	<property name="build.base.dir" value="${basedir}/build" />
+	<property name="project.lib.dir" value="${build.base.dir}/lib" />
+	<property name="ivy.jar.path" value="${project.lib.dir}/ivy-${ivy.install.version}.jar" />
+	<property name="mainlibs.lib.dir" value="${project.lib.dir}/mainlibs" />
+	<property name="om.lib.dir" value="${project.lib.dir}/om" />
+	<property name="anakia.lib.dir" value="${project.lib.dir}/anakia" />
+	<property name="webcontent.base.dir" value="${basedir}/WebContent" />
+	
+	<property name="screenshare.resources.dir" value="${src.base.dir}/screenshare/resources" />
+	<property name="axis.resources.dir" value="${src.base.dir}/axis/resources" />
+	
+	<property name="webapp.dir" value="${src.base.dir}/main/webapp" />
+	<property name="junit.lib.dir" value="${project.lib.dir}/junit" />
+	<property name="junit.backups.dir" value="${junit.lib.dir}/backups" />
+	<property name="rat.lib.dir" value="${project.lib.dir}/rat" />
+	<property name="dtd-generator.lib.dir" value="${project.lib.dir}/dtd-generator" />
+	<property name="svntask.lib.dir" value="${project.lib.dir}/svntask" />
+	<property name="docs.dest" value="docs" />
+	<property name="docs.src" value="xdocs" />
+
+	<property name="red5.server.dir" value="${build.base.dir}/red5/server" />
+	<property name="red5.client.dir" value="${build.base.dir}/red5/client" />
+	<property name="red5.lib" value="${red5.server.dir}/dist" />
+	<property name="red5.server.lib" value="${red5.lib}/lib" />
+	<property name="red5.client.lib" value="${red5.client.dir}/dist" />
+	<property name="red5.root" value="${dist.dir}/red5" />
+	<property name="dist.webapps.dir" value="${red5.root}/webapps/${project.distname}" />
+	<property name="dist.classes.dir" value="${dist.webapps.dir}/WEB-INF/classes" />
+	<property name="dist.persistence.dir" value="${dist.classes.dir}/META-INF/" />
+
+	<property name="laszlo.home" value="${build.base.dir}/openlaszlo" />
+	<property name="laszlo46.home" value="${build.base.dir}/openlaszlo46" />
+
+	<!-- screenshare.out.dir -->
+	<property name="screenshare.out.dir" value="${dist.webapps.dir}/screensharing" />
+	
+	<condition property="junit.run.selenium" value="true" else="false">
+		<isset property="selenium" />
+	</condition>
+
+	<property name="main.out.dir" value="${build.base.dir}/classes/openmeetings" />
+
+	<!-- LPS Properties -->
+	<property name="out.dir.swf" value="${dist.webapps.dir}/public" />
+	<property name="laszlo.as3.src.dir" value="${webcontent.base.dir}/swf10" />
+	<property name="laszlo.src.dir" value="${webcontent.base.dir}/src" />
+
+	<property name="keystore.file" value="${build.base.dir}/screensharing_sign.keystore" />
+
+	<property name="junit.base.dir" value="${build.base.dir}/junit" />
+	<property name="junit.report.dir" value="${junit.base.dir}/report" />
+	<property name="om.dist.webapp" value="${red5.root}/webapps/${project.distname}" />
+	<tstamp prefix="build">
+		<format property="TODAY" pattern="d-MMMM-yyyy" locale="en" />
+	</tstamp>
+
+	<path id="laszlo.lib">
+		<!-- swf8 -->
+		<fileset dir="${laszlo.home}/WEB-INF/lib" includes="saxon-6.5.3-lz-p1.jar jakarta-regexp-1.2.jar
+			commons-collections.jar jdom.jar log4j-1.2.6.jar lps-4.9.0.jar batik-all-flex.jar velocity-dep-1.4-flex.jar" />
+		<!-- swf10 -->
+		<fileset dir="${laszlo.home}/WEB-INF/lib" includes="mxmlc*.jar flex-messaging-common.jar swfutils.jar asc.jar
+			fxgutils.jar" />
+	</path>
+
+	<path id="laszlo46.lib">
+		<fileset dir="${laszlo46.home}/WEB-INF/lib" includes="*.jar" />
+	</path>
+	
+	<!-- compile classpath -->
+	<path id="check.classpath">
+		<fileset dir="${red5.lib}" includes="*.jar" />
+		<fileset dir="${red5.server.lib}" includes="*.jar" />
+		<fileset dir="${red5.client.lib}" includes="red5-client*.jar" />
+		<fileset dir="${mainlibs.lib.dir}" includes="*.jar" />
+		<fileset dir="${om.lib.dir}" includes="*.jar" />
+		<fileset dir="${junit.lib.dir}" includes="*.jar" />
+		<fileset dir="${dtd-generator.lib.dir}" includes="*.jar" />
+		<fileset dir="${project.lib.dir}" includes="*.jar" />
+	</path>
+	<path id="compile.classpath">
+		<fileset dir="${red5.lib}/plugins" includes="*.jar" />
+		<fileset dir="${red5.server.dir}/target/lib" includes="junit*.jar" />
+		<path refid="check.classpath"/>
+	</path>
+	<path id="junit.classpath">
+		<fileset dir="${junit.lib.dir}" includes="*.jar" />
+		<fileset dir="${om.dist.webapp}/WEB-INF/lib">
+			<include name="*.jar" />
+			<exclude name="openmeetings*.jar" />
+		</fileset>
+		<fileset dir="${red5.root}" includes="*.jar" />
+		<fileset dir="${red5.root}/lib" includes="*.jar" />
+		<fileset dir="${red5.root}/plugins" includes="*.jar" />
+		<pathelement path="${dist.classes.dir}" />
+		<pathelement path="${main.out.dir}" />
+	</path>
+
+	<target name="info" unless="java7.installed">
+		<echo>Ant version is ${ant.version}</echo> <!-- output Ant version -->
+	</target>
+
+	<target name="prepare.mkdir" depends="-java7.check">
+		<mkdir dir="${red5.server.lib}" />
+		<mkdir dir="${red5.lib}/log" />
+		<mkdir dir="${red5.client.dir}/dist" />
+		<mkdir dir="${dist.dir}" />
+		<mkdir dir="${main.out.dir}" />
+		<mkdir dir="${mainlibs.lib.dir}" />
+		<mkdir dir="${om.lib.dir}" />
+		<mkdir dir="${anakia.lib.dir}" />
+		<mkdir dir="${junit.backups.dir}" />
+		<mkdir dir="${junit.report.dir}" />
+		<mkdir dir="${rat.lib.dir}" />
+		<mkdir dir="${dtd-generator.lib.dir}" />
+		<mkdir dir="${svntask.lib.dir}" />
+		<mkdir dir="${laszlo.home}" />
+		<mkdir dir="${laszlo46.home}" />
+		<echo file="${build.base.dir}/velocity.properties" append="false">runtime.log = ${build.base.dir}/velocity.log${line.separator}output.encoding=UTF-8${line.separator}</echo>
+	</target>
+
+	<!-- perform nightly build with tests -->
+	<target name="dist-bin-nightly" description="perform nightly build with tests" depends="dist-bin, test" />
+
+	<!-- build artefacts -->
+	<target name="dist-bin" description="pack binary distribution" depends="clean.all, dist">
+		<tstamp>
+			<format property="build.time" pattern="dd-MM-yyyy_HHmm" />
+		</tstamp>
+		<property name="archive.file.name" value="${dist.dir}/apache-${project.distname}-${project.version}.r${svn.info.rev}-${build.time}" />
+
+		<move file="${dist.dir}/red5/license.txt" tofile="${dist.dir}/red5/red5-license.txt" />
+		<copy file="build.properties" tofile="${build.base.dir}/build.properties" overwrite="true" />
+		<copy file="LICENSE" tofile="${dist.dir}/red5/LICENSE" overwrite="true" />
+		<copy file="NOTICE" tofile="${dist.dir}/red5/NOTICE" overwrite="true" />
+		<copy file="README" tofile="${dist.dir}/red5/README" overwrite="true" />
+		<copy file="CHANGELOG" tofile="${dist.dir}/red5/CHANGELOG" overwrite="true" />
+
+		<echo file="${build.base.dir}/build.properties" append="true">svn.info.rev=${svn.info.rev}${line.separator}</echo>
+		<tar longfile="gnu" compression="gzip" destfile="${archive.file.name}-src.tar.gz">
+			<tarfileset dir="${basedir}">
+				<exclude name="build/**" />
+				<exclude name="dist/**" />
+				<exclude name="build.properties" />
+			</tarfileset>
+			<tarfileset dir="${build.base.dir}">
+				<include name="build.properties" />
+			</tarfileset>
+		</tar>
+		<tar longfile="gnu" compression="gzip" destfile="${archive.file.name}.tar.gz">
+			<tarfileset dir="${dist.dir}/red5">
+				<include name="**" />
+				<exclude name="*.sh" />
+			</tarfileset>
+			<tarfileset dir="${dist.dir}/red5" filemode="755">
+				<include name="*.sh" />
+			</tarfileset>
+		</tar>
+	</target>
+	
+	<!-- build artefacts -->
+	<target name="dist-release" description="pack binary distribution">
+		<property name="archive.file.name" value="${dist.dir}/apache-${project.distname}-${project.version}" />
+		<antcall target="dist-bin" />
+		<zip destfile="${archive.file.name}.zip">
+			<zipfileset dir="${dist.dir}/red5">
+				<include name="**" />
+				<exclude name="*.sh" />
+			</zipfileset>
+			<zipfileset dir="${dist.dir}/red5" filemode="755">
+				<include name="*.sh" />
+			</zipfileset>
+		</zip>
+		<zip destfile="${archive.file.name}-src.zip">
+			<zipfileset dir="${basedir}">
+				<exclude name="build/**" />
+				<exclude name="dist/**" />
+				<exclude name="build.properties" />
+			</zipfileset>
+			<zipfileset dir="${build.base.dir}">
+				<include name="build.properties" />
+			</zipfileset>
+		</zip>
+	</target>
+
+	<!-- build webapp -->
+	<target name="-copy-libraries" description="All jars downloaded by ivy copied to appropriate places">
+		<copy todir="${red5.root}/lib">
+			<fileset dir="${mainlibs.lib.dir}" includes="*.jar" />
+		</copy>
+		<copy todir="${dist.webapps.dir}/WEB-INF/lib">
+			<fileset dir="${om.lib.dir}" includes="*.jar" />
+		</copy>
+		<chmod dir="${dist.webapps.dir}/WEB-INF/lib" perm="755" includes="**/*.sh" />
+	</target>
+
+	<target name="dist" description="binary distribution of OpenMeetings" depends="clean, jar, client.only, enhance, -copy-libraries, signWebStartJars" />
+
+	<!-- compiles the sources without openlaszlo client -->
+	<target name="dist-test" description="binary distribution of OpenMeetings" depends="clean, -dist-test-no-clean, signWebStartJars" />
+
+	<!-- compiles the sources without openlaszlo client and clean -->
+	<target name="-dist-test-no-clean" description="binary distribution of OpenMeetings" depends="jar, -copy-libraries" />
+
+	<!-- compiles the sources only with laszlo debug client -->
+	<target name="dist-debug" description="binary distribution of OpenMeetings" depends="clean, jar, client.debug.only, -copy-libraries, signWebStartJars" />
+
+	<target name="-cleanup-jrebel" unless="jrebel.enabled">
+		<delete>
+			<fileset dir="${dist.classes.dir}" includes="rebel*.xml" />
+		</delete>
+	</target>
+	
+	<target name="web.copy" depends="-process-db">
+		<copy todir="${dist.webapps.dir}" overwrite="true" force="true">
+			<fileset dir="${webapp.dir}" />
+		</copy>
+		<filter token="wicket.mode" value="${wicket.mode}" />
+		<copy todir="${dist.webapps.dir}/WEB-INF" filtering="true" overwrite="true" force="true">
+			<fileset file="${webapp.dir}/WEB-INF/web.xml" />
+		</copy>
+		<copy todir="${dist.classes.dir}">
+			<fileset dir="${src.base.dir}/web/java">
+				<include name="**/*.html" />
+				<include name="**/*.xml" />
+				<include name="**/*.js" />
+				<include name="**/*.css" />
+			</fileset>
+		</copy>
+	</target>
+	
+	<!-- Check timestamp on files -->
+	<target name="prepare" depends="prepare.mkdir,web.copy">
+		<copy todir="${red5.root}">
+			<fileset dir="${red5.lib}">
+				<exclude name="**/*.fla" />
+			</fileset>
+		</copy>
+
+		<antcall target="-cleanup-jrebel" />
+		<chmod dir="${red5.root}" perm="755" includes="**/*.sh" />
+		<tstamp />
+	</target>
+
+	<!-- Copy any resource or configuration files -->
+	<target name="vmresources">
+		<copy todir="${main.out.dir}" includeEmptyDirs="yes" force="true" overwrite="true">
+			<fileset dir="${src.base.dir}">
+				<include name="**/*.vm" />
+			</fileset>
+		</copy>
+	</target>
+	
+	<target name="resources" depends="prepare.jnlp">
+		<patternset id="xmlpng">
+			<include name="**/*.xml" />
+			<include name="**/*.png" />
+		</patternset>
+		<patternset id="xmlpngconf">
+			<patternset refid="xmlpng" />
+			<include name="**/*.conf" />
+			<include name="**/*.properties" />
+		</patternset>
+
+		<!-- Main Applications -->
+		<copy todir="${main.out.dir}" includeEmptyDirs="yes">
+			<fileset dir="${src.base.dir}">
+				<patternset refid="xmlpngconf" />
+			</fileset>
+		</copy>
+		<!-- Screen Share resources -->
+		<copy todir="${main.out.dir}">
+			<fileset dir="${src.base.dir}/screenshare/java">
+				<include name="**/*.png" />
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="web.only" depends="jar.web.only, web.copy"/>
+	
+	<target name="prepare.jnlp" depends="vmresources">
+		<copy todir="${screenshare.out.dir}" overwrite="true" force="true">
+			<fileset dir="${red5.server.lib}" includes="commons-codec*.jar" />
+			<fileset dir="${red5.server.lib}" includes="commons-beanutils*.jar" />
+			<fileset dir="${red5.server.lib}" includes="commons-collections*.jar" />
+			<fileset dir="${red5.server.lib}" includes="commons-lang3*.jar" />
+			<fileset dir="${red5.server.lib}" includes="httpclient*.jar" />
+			<fileset dir="${red5.server.lib}" includes="httpcore*.jar" />
+			<fileset dir="${red5.server.lib}" includes="bcprov*.jar" />
+			<fileset dir="${red5.server.lib}" includes="ehcache-core*.jar" />
+			<fileset dir="${red5.server.lib}" includes="slf4j-api*.jar" />
+			<fileset dir="${red5.server.lib}" includes="jcl-over-slf4j*.jar" />
+			<fileset dir="${red5.server.lib}" includes="spring-context-4*.jar" />
+			<fileset dir="${red5.server.lib}" includes="spring-core-*.jar" />
+			<fileset dir="${red5.server.lib}" includes="spring-beans-*.jar" />
+			<fileset dir="${red5.server.lib}" includes="logback*.jar" />
+			<fileset dir="${red5.server.lib}" includes="mina-core*.jar" />
+			<fileset dir="${red5.server.lib}" includes="quartz-*.jar" />
+			<fileset dir="${red5.server.lib}" includes="red5-io*.jar" />
+			<fileset dir="${red5.server.lib}" includes="red5-server-common*.jar" />
+			<fileset dir="${red5.client.lib}" includes="red5*.jar" />
+		</copy>
+		<fileset id="screenshare.jars" dir="${screenshare.out.dir}" casesensitive="yes">
+			<include name="**/*.jar"/>
+		</fileset>
+		<pathconvert pathsep="&quot;/&gt;&lt;jar href=&quot;" targetos="unix" property="dependencies" refid="screenshare.jars">
+			<map from="${screenshare.out.dir}/" to=""/>
+		</pathconvert>
+		<echo>dependencies = &lt;jar href=&quot;${dependencies}&quot;/&gt;&lt;jar href=&quot;${project.distname}-screenshare-${jar.suffix}.jar&quot;/&gt;</echo>
+		<replace file="${main.out.dir}/screenshare.vm" token="$dependencies" value="&lt;jar href=&quot;${dependencies}&quot;/&gt;&lt;jar href=&quot;${project.distname}-screenshare-${jar.suffix}.jar&quot;/&gt;"/>
+		<mkdir dir="${main.out.dir}/JNLP-INF"/>
+		<property name="app.template.jnlp" value="${main.out.dir}/JNLP-INF/APPLICATION-TEMPLATE.JNLP"/>
+		<copy file="${main.out.dir}/screenshare.vm" tofile="${app.template.jnlp}" overwrite="true" force="true"/>
+		<replace file="${app.template.jnlp}" token="$codebase" value="*"/>
+		<replace file="${app.template.jnlp}" token="$codebase" value="*"/>
+		<replace file="${app.template.jnlp}" token="$APP_NAME" value="*"/>
+		<replace file="${app.template.jnlp}" token="$protocol" value="*"/>
+		<replace file="${app.template.jnlp}" token="$host" value="*"/>
+		<replace file="${app.template.jnlp}" token="$port" value="*"/>
+		<replace file="${app.template.jnlp}" token="$app" value="*"/>
+		<replace file="${app.template.jnlp}" token="$userId" value="*"/>
+		<replace file="${app.template.jnlp}" token="$publicSid" value="*"/>
+		<replace file="${app.template.jnlp}" token="$labels" value="*"/>
+		<replace file="${app.template.jnlp}" token="$defaultQuality" value="*"/>
+		<replace file="${app.template.jnlp}" token="$defaultFps" value="*"/>
+		<replace file="${app.template.jnlp}" token="$showFps" value="*"/>
+		<replace file="${app.template.jnlp}" token="$allowRemote" value="*"/>
+		<replace file="${app.template.jnlp}" token="$allowRecording" value="*"/>
+		<replace file="${app.template.jnlp}" token="$allowPublishing" value="*"/>
+		<replace file="${app.template.jnlp}" token="$keystore" value="*"/>
+		<replace file="${app.template.jnlp}" token="$password" value="*"/>
+	</target>
+		
+	<target name="jar.web.only" depends="enhance.only.norefresh, current_revision, prepare.jnlp">
+		<manifestclasspath property="jar.classpath" jarfile="${project.distname}-${jar.suffix}.jar">
+			<classpath refid="compile.classpath" />
+		</manifestclasspath>
+		
+		<!-- Core/main -->
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-core-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/**" />
+				<include name="*.vm" />
+				<include name="META-INF/*" />
+				<exclude name="META-INF/*.xml" />
+				<exclude name="org/apache/openmeetings/util/**" />
+				<exclude name="org/apache/openmeetings/test/**" />
+				<exclude name="org/apache/openmeetings/axis/**" />
+				<exclude name="org/apache/openmeetings/db/**" />
+				<exclude name="org/apache/openmeetings/cli/**" />
+				<exclude name="org/apache/openmeetings/backup/**" />
+				<exclude name="org/apache/openmeetings/installation/**" />
+				<exclude name="org/apache/openmeetings/screen/**" />
+				<exclude name="org/apache/openmeetings/doc/**" />
+				<exclude name="org/apache/openmeetings/web/**" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar.classpath}" />
+				<attribute name="Svn-Revision" value="${svn.info.rev}" />
+				<attribute name="Product-Version" value="${project.version}-${project.status}" />
+			</manifest>
+		</jar>
+		
+		<!-- DB package -->
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-db-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/db/**" />
+				<include name="META-INF/*" />
+				<exclude name="META-INF/*.xml" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar.classpath}" />
+				<attribute name="Svn-Revision" value="${svn.info.rev}" />
+				<attribute name="Product-Version" value="${project.version}-${project.status}" />
+			</manifest>
+		</jar>
+		
+		<!-- Install / CLI package -->
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-cli-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/cli/**" />
+				<include name="org/apache/openmeetings/backup/**" />
+				<include name="org/apache/openmeetings/installation/**" />
+				<include name="META-INF/*" />
+				<exclude name="META-INF/*.xml" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar.classpath}" />
+				<attribute name="Svn-Revision" value="${svn.info.rev}" />
+				<attribute name="Product-Version" value="${project.version}-${project.status}" />
+			</manifest>
+		</jar>
+		
+		<!-- Util package -->
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-util-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/util/**" />
+				<include name="META-INF/*" />
+				<exclude name="META-INF/*.xml" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar.classpath}" />
+				<attribute name="Svn-Revision" value="${svn.info.rev}" />
+				<attribute name="Product-Version" value="${project.version}-${project.status}" />
+			</manifest>
+		</jar>
+		
+		<!-- web package -->
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-web-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/web/**" />
+				<exclude name="*.xml" />
+				<exclude name="*.html" />
+				<include name="META-INF/*" />
+				<exclude name="META-INF/*.xml" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar.classpath}" />
+				<attribute name="Svn-Revision" value="${svn.info.rev}" />
+				<attribute name="Product-Version" value="${project.version}-${project.status}" />
+			</manifest>
+		</jar>
+
+		<!-- Build WebServices -->
+		<property name="om_aar_name" value="${project.distname}-${jar.suffix}.aar"/>
+		<property name="om_aar_folder" value="${dist.webapps.dir}/WEB-INF/services"/>
+		<jar destfile="${om_aar_folder}/${om_aar_name}">
+			<fileset dir="${main.out.dir}">
+				<include name="META-INF/*" />
+			</fileset>
+		</jar>
+		<echo file="${om_aar_folder}/services.list" append="false">${om_aar_name}${line.separator}version.aar${line.separator}</echo>
+		<jar destfile="${dist.webapps.dir}/WEB-INF/lib/${project.distname}-axis-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="**/apache/openmeetings/axis/**" />
+				<include name="META-INF/LICENSE" />
+				<include name="META-INF/NOTICE" />
+			</fileset>
+		</jar>
+	</target>
+
+	<target name="jar.only" depends="buildJavaDocs, enhance.only, jar.web.only"/>
+
+	<target name="dist.screen.share" description="Make Screen Share Archive" depends="signWebStartJars" />
+
+	<tstamp prefix="screensharing.build">
+		<format property="TODAY" pattern="d-MMMM-yyyy" locale="en" />
+	</tstamp>
+	<target name="jar.screen.share" description="Make Screen Share Archive" depends="compile.only">
+		<manifestclasspath property="jar2.classpath" jarfile="${project.distname}.jar">
+			<classpath refid="compile.classpath" />
+		</manifestclasspath>
+		<!-- Screen Share -->
+		<jar destfile="${screenshare.out.dir}/${project.distname}-screenshare-${jar.suffix}.jar">
+			<fileset dir="${main.out.dir}">
+				<include name="org/apache/openmeetings/screen/**" />
+				<include name="JNLP-INF/*" />
+				<include name="META-INF/LICENSE" />
+				<include name="META-INF/NOTICE" />
+			</fileset>
+			<fileset file="${screenshare.resources.dir}/logback.xml" />
+			<fileset file="${screenshare.resources.dir}/quartz.*" />
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${screensharing.build.TODAY}" />
+				<attribute name="Class-Path" value="conf/ ${jar2.classpath}" />
+				<attribute name="Permissions" value="all-permissions" />
+				<attribute name="Codebase" value="*" />
+				<attribute name="Application-Library-Allowable-Codebase" value="*" />
+				<attribute name="Caller-Allowable-Codebase" value="*" />
+			</manifest>
+		</jar>
+	</target>
+	
+	<target name="buildJavaDocs">
+		<tstamp prefix="doc">
+			<format property="TODAY_YEAR" pattern="yyyy" locale="en" />
+		</tstamp>
+	    <javadoc packagenames="org.apache.openmeetings.remote.*"
+	           sourcepath="${src.base.dir}/axis/java:${src.base.dir}/db/java:${src.base.dir}/doc/java:${src.base.dir}/install/java:${src.base.dir}/main/java:${src.base.dir}/screenshare/java:${src.base.dir}/util/java:${src.base.dir}/web/java"
+	           excludepackagenames="org.apache.openmeetings.test.*"
+	           defaultexcludes="yes"
+	           destdir="build/api"
+	           author="true"
+	           version="true"
+	           use="true"
+	           windowtitle="Apache OpenMeetings API">
+	    	<classpath refid="compile.classpath"></classpath>
+	        <doctitle><![CDATA[<h1>Apache OpenMeetings API</h1>]]></doctitle>
+	    	<bottom><![CDATA[<i>Copyright &copy; 2000-${doc.TODAY_YEAR} The Apache Software Foundation. All rights Reserved.</i>]]></bottom>
+	  	</javadoc>
+	</target>
+
+	<!-- Compile JAR -->
+	<target name="jar" description="Make Archive" depends="enhance, build.only.webservice.doc, jar.only, jar.screen.share">
+		<tstamp prefix="build">
+			<format property="TODAY" pattern="d-MMMM-yyyy" locale="en" />
+		</tstamp>
+	</target>
+
+	<target name="generateSignKey"  unless="skip.sign.key.generation">
+		<delete file="${keystore.file}" />
+		<genkey alias="${screensharing.keystore.alias}" storepass="${screensharing.keystore.password}" keystore="${keystore.file}"
+			verbose="true" sigalg="MD5withRSA" keyalg="RSA" >
+			<dname>
+				<param name="CN" value="Sebastian Wagner" />
+				<param name="OU" value="technology" />
+				<param name="O" value="openmeetings.apache.org" />
+				<param name="C" value="DE" />
+			</dname>
+		</genkey>
+	</target>
+	
+	<target name="repackWebStartJars" depends="jar.screen.share">
+		<taskdef resource="net/sf/antcontrib/antlib.xml">
+			<classpath refid="check.classpath" />
+		</taskdef>
+		<foreach target="-repack-jar" param="theJar">
+			<fileset dir="${screenshare.out.dir}" casesensitive="yes">
+				<include name="*.jar"/>
+				<exclude name="*openmeetings*.jar"/>
+			</fileset>
+		</foreach>
+	</target>
+	
+	<target name="signWebStartJars" depends="generateSignKey,repackWebStartJars">
+		<signjar alias="${screensharing.keystore.alias}" keystore="${keystore.file}" storepass="${screensharing.keystore.password}"
+			lazy="false" sigalg="MD5withRSA" digestalg="SHA1">
+			<path>
+				<fileset dir="${screenshare.out.dir}">
+					<include name="**/*.jar" />
+				</fileset>
+			</path>
+		</signjar>
+	</target>
+
+	<target name="-repack-jar">
+		<echo message="${theJar}"/>
+		<delete dir="${screenshare.out.dir}/1" />
+		<mkdir dir="${screenshare.out.dir}/1" />
+		<unjar src="${theJar}" dest="${screenshare.out.dir}/1"/>
+		<delete dir="${screenshare.out.dir}/1/META-INF" includes="*"/>
+		<delete file="${theJar}" />
+		<jar destfile="${theJar}">
+			<fileset dir="${screenshare.out.dir}/1">
+				<include name="**" />
+			</fileset>
+			<manifest>
+				<attribute name="Built-By" value="OpenMeetings - http://openmeetings.apache.org" />
+				<attribute name="Built-On" value="${screensharing.build.TODAY}" />
+				<attribute name="Permissions" value="all-permissions" />
+				<attribute name="Codebase" value="*" />
+				<attribute name="Application-Library-Allowable-Codebase" value="*" />
+				<attribute name="Caller-Allowable-Codebase" value="*" />
+			</manifest>
+		</jar>
+		<delete dir="${screenshare.out.dir}/1" />
+	</target>
+	
+	<target name="client.only" depends="compile.laszlo.main.as3,compile.laszlo.main,compile.laszlo.networktesting" />
+
+	<target name="client.debug.only" depends="compile.laszlo.main.debug.as3,compile.laszlo.main.debug,compile.laszlo.networktesting.debug" />
+
+	<target name="-compile.flash" description="compile flash application">
+		<!-- commented for now
+		<echo message="flash.src.dir == '${flash.src.dir}'" />
+		<echo message="classpathref == '${flash.classpath.ref}'" />
+		<echo message="laszlo.home == '${flash.lps.home}'" />
+		<echo message="flash.debug == '${flash.debug}'" />
+		<echo message="laszlo.proxied == '${laszlo.proxied}'" />
+		<echo message="flash.runtime == '${flash.runtime}'" />
+		<echo message="out.dir.swf == '${out.dir.swf}'" />
+		<echo message="flash.main.file == '${flash.main.file}'" />
+		<echo message="flash.out.file == '${flash.out.file}'" />
+		-->
+		<java classname="org.openlaszlo.compiler.Main" fork="true" newenvironment="true" failonerror="true" dir="${flash.src.dir}" classpathref="${flash.classpath.ref}">
+			<jvmarg value="-DLPS_HOME=${flash.lps.home}" />
+			<jvmarg value="-Dlzdebug=false" />
+			<jvmarg value="-Dlzproxied=${laszlo.proxied}" />
+			<jvmarg value="-Xms512M" />
+			<jvmarg value="-Xmx512M" />
+			<arg line="--runtime=${flash.runtime} ${flash.debug} --dir &quot;${out.dir.swf}&quot; --onerror warn ${flash.main.file} -o ${flash.out.file}" />
+		</java>
+	</target>
+
+	<target name="compile.laszlo.networktesting" depends="compile.laszlo.networktesting.debug">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo.lib" />
+			<param name="flash.src.dir" value="${laszlo.as3.src.dir}/networkTesting" />
+			<param name="flash.lps.home" value="${laszlo.home}" />
+			<param name="flash.runtime" value="swf10" />
+			<param name="flash.main.file" value="networktesting.lzx" />
+			<param name="flash.out.file" value="networktesting.swf10.swf" />
+			<param name="flash.debug" value="" />
+		</antcall>
+	</target>
+
+	<target name="compile.laszlo.networktesting.debug" depends="-retrieve-openlaszlo">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo.lib" />
+			<param name="flash.src.dir" value="${laszlo.as3.src.dir}/networkTesting" />
+			<param name="flash.lps.home" value="${laszlo.home}" />
+			<param name="flash.runtime" value="swf10" />
+			<param name="flash.main.file" value="networktesting.lzx" />
+			<param name="flash.out.file" value="networktestingdebug.swf10.swf" />
+			<param name="flash.debug" value="--debug" />
+		</antcall>
+	</target>
+
+	<target name="compile.laszlo.testsetup.as3" depends="-retrieve-openlaszlo46">
+        <antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+            <param name="flash.classpath.ref" value="laszlo46.lib" />
+            <param name="flash.src.dir" value="${laszlo.src.dir}" />
+            <param name="flash.lps.home" value="${laszlo46.home}" />
+            <param name="flash.runtime" value="swf11" />
+            <param name="flash.main.file" value="test/test-setup.lzx" />
+            <param name="flash.out.file" value="test-setup.as3.swf11.swf" />
+            <param name="flash.debug" value="" />
+        </antcall>
+    </target>
+
+	<target name="compile.laszlo.main.as3" depends="compile.laszlo.main.debug.as3">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo46.lib" />
+			<param name="flash.src.dir" value="${laszlo.as3.src.dir}" />
+			<param name="flash.lps.home" value="${laszlo46.home}" />
+			<param name="flash.runtime" value="swf11" />
+			<param name="flash.main.file" value="main.as3.lzx" />
+			<param name="flash.out.file" value="main.as3.swf11.swf" />
+			<param name="flash.debug" value="" />
+		</antcall>
+	</target>
+
+	<target name="compile.laszlo.main.debug.as3" depends="-retrieve-openlaszlo46">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo46.lib" />
+			<param name="flash.src.dir" value="${laszlo.as3.src.dir}" />
+			<param name="flash.lps.home" value="${laszlo46.home}" />
+			<param name="flash.runtime" value="swf11" />
+			<param name="flash.main.file" value="main.as3.lzx" />
+			<param name="flash.out.file" value="maindebug.as3.swf11.swf" />
+			<param name="flash.debug" value="--debug" />
+		</antcall>
+	</target>
+
+	<target name="compile.laszlo.main" depends="compile.laszlo.main.debug">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo.lib" />
+			<param name="flash.src.dir" value="${laszlo.src.dir}" />
+			<param name="flash.lps.home" value="${laszlo.home}" />
+			<param name="flash.runtime" value="swf8" />
+			<param name="flash.main.file" value="main.lzx" />
+			<param name="flash.out.file" value="main.swf8.swf" />
+			<param name="flash.debug" value="" />
+		</antcall>
+	</target>
+
+	<target name="compile.laszlo.main.debug" depends="-retrieve-openlaszlo">
+		<antcall target="-compile.flash" inheritAll="true" inheritRefs="true">
+			<param name="flash.classpath.ref" value="laszlo.lib" />
+			<param name="flash.src.dir" value="${laszlo.src.dir}" />
+			<param name="flash.lps.home" value="${laszlo.home}" />
+			<param name="flash.runtime" value="swf8" />
+			<param name="flash.main.file" value="main.lzx" />
+			<param name="flash.out.file" value="maindebug.swf8.swf" />
+			<param name="flash.debug" value="--debug" />
+		</antcall>
+	</target>
+
+	<target name="compile" depends="compile.only, prepare" />
+
+	<target name="compile.only"
+		depends="-retrieve-mainlibs,-retrieve-om,-retrieve-dtd-generator,-retrieve-junit,-retrieve-cmdadmin,-retrieve-tools.jar,compile.only.nocheck,resources"/>
+	
+	<target name="compile.only.nocheck" depends="clean.classes">
+		<antcall target="prepare.mkdir" inheritAll="true" inheritRefs="true"/>
+		<echo message="Compile main to ${main.out.dir}" />
+		<javac debug="on" debuglevel="lines,vars,source" destdir="${main.out.dir}" includeantruntime="false"
+			source="1.7" target="1.7">
+			<src path="${src.base.dir}/axis/java" />
+			<src path="${src.base.dir}/db/java" />
+			<src path="${src.base.dir}/doc/java" />
+			<src path="${src.base.dir}/install/java" />
+			<src path="${src.base.dir}/main/java" />
+			<src path="${src.base.dir}/test/java" />
+			<src path="${src.base.dir}/screenshare/java" />
+			<src path="${src.base.dir}/util/java" />
+			<src path="${src.base.dir}/web/java" />
+			<classpath refid="compile.classpath" />
+			<compilerarg value="-Aopenjpa.metamodel=true" />
+			<!-- compilerarg value="-Xlint:deprecation"/ -->
+		</javac>
+		<copy todir="${main.out.dir}">
+			<fileset dir="${src.base.dir}/main/java">
+				<include name="**/*.*" />
+				<exclude name="**/*.java" />
+			</fileset>
+		</copy>
+		<copy file="${axis.resources.dir}/services.xml" tofile="${main.out.dir}/META-INF/services.xml" overwrite="true" />
+		<copy file="LICENSE" tofile="${main.out.dir}/META-INF/LICENSE" overwrite="true" />
+		<copy file="NOTICE" tofile="${main.out.dir}/META-INF/NOTICE" overwrite="true" />
+	</target>
+
+	<path id="jpa.enhancement.classpath">
+		<pathelement path="${main.out.dir}" />
+		<path refid="compile.classpath" />
+	</path>
+
+	<target name="enhance" depends="compile, enhance.only" />
+
+	<target name="enhance.only" depends="compile.only">
+		<!-- define the openjpac task -->
+		<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
+			<classpath refid="jpa.enhancement.classpath" />
+		</taskdef>
+
+		<!-- invoke the enhancer -->
+		<openjpac>
+			<classpath refid="jpa.enhancement.classpath" />
+			<config propertiesFile="${dist.persistence.dir}/${db}_persistence.xml" />
+		</openjpac>
+		<echo message="Enhancing complete." />
+	</target>
+	
+	<target name="enhance.only.norefresh" depends="compile.only.nocheck">
+		<!-- define the openjpac task -->
+		<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
+			<classpath refid="jpa.enhancement.classpath" />
+		</taskdef>
+
+		<!-- invoke the enhancer -->
+		<openjpac>
+			<classpath refid="jpa.enhancement.classpath" />
+			<config propertiesFile="${dist.persistence.dir}/${db}_persistence.xml" />
+		</openjpac>
+		<echo message="Enhancing complete." />
+	</target>
+
+	<path id="svntask.classpath">
+		<fileset dir="${svntask.lib.dir}" includes="*.jar" />
+	</path>
+	<target name="-ant-task" depends="-retrieve-svntask">
+		<typedef resource="org/tigris/subversion/svnant/svnantlib.xml">
+			<classpath>
+				<path refid="svntask.classpath" />
+			</classpath>
+		</typedef>
+		<svnSetting svnkit="false" javahl="false" id="svn.settings" />
+		<!-- native svn in the path-->
+	</target>
+	<target name="current_revision" depends="-ant-task" unless="svn.info.rev">
+		<svn refid="svn.settings">
+			<info target="." />
+		</svn>
+		<echo>Current revision: ${svn.info.rev}</echo>
+	</target>
+
+	<!-- Build entire project -->
+	<target name="build project" depends="clean, prepare, compile" />
+
+	<path id="check.rat.classpath">
+		<fileset dir="${rat.lib.dir}" includes="*.jar" />
+	</path>
+	<path id="rat.classpath">
+		<path refid="compile.classpath" />
+		<path refid="check.rat.classpath" />
+	</path>
+	<target name="report_rat" depends="-retrieve-rat">
+		<!-- define the RAT task -->
+		<taskdef uri="antlib:org.apache.rat.anttasks" resource="org/apache/rat/anttasks/antlib.xml">
+			<classpath>
+				<path refid="rat.classpath" />
+			</classpath>
+		</taskdef>
+
+		<rat:report>
+			<rat:substringMatcher licenseFamilyCategory="JQUERY_MIT" licenseFamilyName="jQuery UI CSS MIT">
+				<pattern substring="Copyright 2014 jQuery Foundation and other contributors; Licensed MIT"/>
+			</rat:substringMatcher>
+			<rat:substringMatcher licenseFamilyCategory="JQUERY_MIT" licenseFamilyName="jQuery UI Menubar MIT">
+				<pattern substring="Dual licensed under the MIT or GPL Version 2"/>
+			</rat:substringMatcher>
+			<rat:approvedLicense familyName="jQuery UI CSS MIT"/>
+			<rat:approvedLicense familyName="jQuery UI Menubar MIT"/>
+			<fileset dir="${src.base.dir}" />
+			<fileset dir="${webcontent.base.dir}" excludes="**/*.swf" />
+			<fileset dir="${docs.src}" />
+		</rat:report>
+	</target>
+
+	<path id="build.webservice.classpath">
+		<pathelement path="${main.out.dir}" />
+		<path refid="compile.classpath" />
+	</path>
+
+	<target name="build.webservice.doc" depends="compile.only, build.only.webservice.doc"/>
+
+	<patternset id="images">
+		<include name="**/*.gif" />
+		<include name="**/*.jpeg" />
+		<include name="**/*.jpg" />
+		<include name="**/*.png" />
+	</patternset>
+	<patternset id="css">
+		<include name="**/*.css" />
+		<include name="**/*.gif" />
+		<include name="**/*.png" />
+	</patternset>
+
+	<!-- Anakia Build classpath -->
+	<path id="check.anakia.classpath">
+		<fileset dir="${anakia.lib.dir}" includes="*.jar" />
+		<fileset dir="${mainlibs.lib.dir}" includes="commons-collections*.jar,commons-lang*.jar,velocity*.jar" />
+	</path>
+	
+	<path id="anakia.classpath">
+		<path refid="compile.classpath" />
+		<path refid="check.anakia.classpath" />
+	</path>
+
+	<target name="anakia" depends="-retrieve-mainlibs,-retrieve-om,-retrieve-anakia">
+		<taskdef name="anakia" classname="org.apache.anakia.AnakiaTask">
+			<classpath>
+				<path refid="anakia.classpath" />
+			</classpath>
+		</taskdef>
+
+		<xslt in="${webapp.dir}/languages/errorvalues.xml" out="${docs.src}/ErrorsTable.xml" style="${docs.src}/stylesheets/errortable.xsl" />
+		<anakia basedir="${docs.src}" destdir="${docs.dest}/" extension=".html" style="./site.vsl" projectFile="stylesheets/project.xml" excludes="**/stylesheets/** empty.xml" includes="**/*.xml" lastModifiedCheck="true" templatePath="xdocs/stylesheets" velocityPropertiesFile="${build.base.dir}/velocity.properties" />
+		<copy todir="${docs.dest}/images">
+			<fileset dir="${docs.src}/images">
+				<patternset refid="images" />
+			</fileset>
+		</copy>
+
+		<copy todir="${docs.dest}/css">
+			<fileset dir="${docs.src}/css">
+				<patternset refid="css" />
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="build.only.webservice.doc" depends="anakia">
+		<javadoc classpathref="build.webservice.classpath" useexternalfile="true" destdir="${basedir}/docs">
+			<fileset dir="${src.base.dir}/axis/java/org/apache/openmeetings/axis/services">
+				<include name="*WebService.java" />
+				<exclude name="BaseWebService.java" />
+			</fileset>
+			<doclet name="org.apache.openmeetings.doc.WebServiceDoclet" pathref="build.webservice.classpath" />
+		</javadoc>
+
+		<copy todir="${dist.webapps.dir}/docs">
+			<fileset dir="${basedir}/docs/">
+				<include name="*.html" />
+				<include name="*.css" />
+			</fileset>
+		</copy>
+		<copy todir="${dist.webapps.dir}/docs/images">
+			<fileset dir="${basedir}/docs/images/">
+				<patternset refid="images" />
+			</fileset>
+		</copy>
+		<copy todir="${dist.webapps.dir}/docs/css">
+			<fileset dir="${basedir}/docs/css/">
+				<patternset refid="css" />
+			</fileset>
+		</copy>
+		<copy todir="${dist.webapps.dir}/docs/js">
+			<fileset dir="${basedir}/docs/js/">
+				<include name="**/*.js" />
+			</fileset>
+		</copy>
+	</target>
+	
+	<!-- 
+		Prepare selenium tests by starting up an OpenMeetings instance
+		
+		makes a stop command before starting up to make sure no other is running
+	 -->
+	
+	<target name="prepare-selenium-start-openmeetings" description="Prepare selenium tests by starting up an OpenMeetings instance" 
+		depends="-prepare-selenium-port-properties, prepare-selenium-stop-openmeetings" >
+		<exec dir="${dist.dir}/testred5" executable="red5-highperf.bat" osfamily="windows" output="${dist.dir}/testred5/red5_system.log">
+		</exec>
+		<!--this does only make sense if the unix executable is run obviously, however we do it for all -->
+		<chmod dir="${dist.dir}/testred5" perm="755" includes="**/*.sh" />
+		<exec dir="${dist.dir}/testred5" executable="/bin/bash" osfamily="unix" output="${dist.dir}/testred5/red5_system.log">
+			<arg value="red5-highperf.sh"/> 
+		</exec>
+		<!-- start up does take some time -->
+		<sleep seconds="30" />
+	</target>
+	
+	<target name="prepare-selenium-stop-openmeetings" description="Prepare selenium tests by starting up an OpenMeetings instance" >
+		<exec dir="${dist.dir}/testred5" executable="red5-shutdown.bat" osfamily="windows" output="${dist.dir}/testred5/red5_system.log">
+		</exec>
+		<!--this does only make sense if executed on unix(Linux or OSX are both unix style) is run obviously, 
+			however we do it for all for now -->
+		<chmod dir="${dist.dir}/testred5" perm="755" includes="**/*.sh" />
+		<exec dir="${dist.dir}/testred5" executable="/bin/bash" osfamily="unix" output="${dist.dir}/testred5/red5_system.log">
+			<arg value="red5-shutdown.sh"/> 
+		</exec>
+		<!-- stop up does take a bit of time -->
+		<sleep seconds="10" />
+	</target>
+	
+	<target name="prepare-selenium-test-database" description="Prepare selenium database script">
+		<java classname="org.apache.openmeetings.test.derby.PrepareSystemFiles">
+			<!-- the home directory of the test instance of red5 -->
+	        <arg value="${dist.dir}/testred5/webapps/openmeetings"/>
+			<!-- the directory where the openmeetings database is created by derby -->
+			<arg value="${dist.dir}/testred5/"/>
+			<!-- the persistance file to patch -->
+			<arg value="${basedir}/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml"/>
+			<classpath refid="junit.classpath" />
+		</java>
+	</target>
+
+	<target name="debug-prepare-selenium-copy-test-instance" depends="-prepare-selenium-copy-test-instance"/>
+	
+	<target name="-prepare-selenium-copy-test-instance" description="Prepare selenium tests by starting up an OpenMeetings instance">
+		<copy todir="${dist.dir}/testred5">
+			<fileset dir="${dist.dir}/red5">
+			</fileset>
+		</copy>
+	</target>
+	
+	<target name="-prepare-selenium-port-properties" description="Set the http port to some exotic numbers so that we don't conflict with anything" 
+			depends="-prepare-selenium-copy-test-instance">
+		<replace dir="${dist.dir}/testred5/conf" value="http.port=20080">
+		  <include name="**/red5.properties"/>
+		  <replacetoken>http.port=5080</replacetoken>
+		</replace>
+		<replace dir="${dist.dir}/testred5/conf" value="https.port=20443">
+		  <include name="**/red5.properties"/>
+		  <replacetoken>https.port=5443</replacetoken>
+		</replace>
+		<replace dir="${dist.dir}/testred5/conf" value="rtmp.port=20935">
+		  <include name="**/red5.properties"/>
+		  <replacetoken>rtmp.port=1935</replacetoken>
+		</replace>
+		<replace dir="${dist.dir}/testred5/conf" value="rtmps.port=20443">
+		  <include name="**/red5.properties"/>
+		  <replacetoken>rtmps.port=8443</replacetoken>
+		</replace>
+		<replace dir="${dist.dir}/testred5/conf" value="rtmpt.port=20088">
+		  <include name="**/red5.properties"/>
+		  <replacetoken>rtmpt.port=8088</replacetoken>
+		</replace>
+	</target>
+	
+	<target name="run-selenium" depends="-dist-test-no-clean, -run-selenium-junit"/>
+	
+	<target name="-run-selenium" if="${junit.run.selenium}" >
+		<antcall target="-run-selenium-junit"></antcall>
+	</target>
+	
+	<target name="-run-selenium-junit" depends="prepare-selenium-start-openmeetings" 
+			description="Will run all selenium tests unless -Dtestcases=_file_name_pattern_ will be passed">
+		<taskdef resource="net/sf/antcontrib/antlib.xml">
+			<classpath refid="junit.classpath" />
+		</taskdef>
+		<mkdir dir="${junit.report.dir}" />
+		
+		<junit maxmemory="1024m" printsummary="yes" dir="${junit.base.dir}" tempdir="${junit.base.dir}" fork="yes" 
+			forkmode="perBatch" failureproperty="junit.failed" errorproperty="junit.error">
+			<classpath refid="junit.classpath" />
+			<jvmarg value="-Dom.home=${om.dist.webapp}" />
+			<jvmarg value="-Dlanguages.home=${webapp.dir}/languages" />
+			<jvmarg value="-Dred5.root=${red5.root}" />
+			<jvmarg value="-Dbasedir=${basedir}" />
+			<jvmarg value="-Dred5.config_root=${red5.root}/conf" />
+			<jvmarg value="-Dbackups.dir=${junit.backups.dir}" />
+			<formatter type="${junit.test.formatter}" />
+			<batchtest todir="${junit.report.dir}">
+				<fileset dir="${main.out.dir}">
+					<include name="org/apache/openmeetings/test/selenium/${junit.test.pattern}.class" />
+					<exclude name="**/*$$*.class" />
+				</fileset>
+			</batchtest>
+		</junit>
+		
+		<junitreport todir="${junit.report.dir}">
+			<fileset dir="${junit.report.dir}">
+				<include name="TEST-*.xml" />
+			</fileset>
+			<report todir="${junit.report.dir}" />
+		</junitreport>
+		<fail message="Errors/failures in JUnit tests.">
+			<condition>
+				<or>
+					<isset property="junit.failed"/>
+					<isset property="junit.error"/>
+				</or>
+			</condition>
+		</fail>
+	</target>
+
+	<!-- Unit Tests -->
+	<condition property="junit.test.pattern" value="${testcases}" else="Test*">
+		<isset property="testcases" />
+	</condition>
+
+	<condition property="junit.test.formatter" value="${test.formatter}" else="xml">
+		<isset property="test.formatter" />
+	</condition>
+
+	<target name="test" depends="-dist-test-no-clean, -run-selenium" 
+			description="Will run all tests except selenium unless -Dtestcases=_file_name_pattern_ will be passed">
+		<taskdef resource="net/sf/antcontrib/antlib.xml">
+			<classpath refid="junit.classpath" />
+		</taskdef>
+		<for list="${backup.file.list}" param="prop">
+			<sequential>
+				<if>
+					<not>
+						<available file="${junit.backups.dir}/@{prop}" type="file" />
+					</not>
+					<then>
+						<echo message="Backup file @{prop} does not exists. Downloading ..." />
+						<get src="http://openmeetings.googlecode.com/svn/repository/@{prop}" dest="${junit.backups.dir}" usetimestamp="true"/>
+					</then>
+				</if>
+			</sequential>
+		</for>
+		<mkdir dir="${junit.report.dir}" />
+		<!-- property name="myclsp" refid="junit.classpath" />
+		<echo message="${myclsp}" /-->
+		<junit maxmemory="1024m" printsummary="yes" dir="${junit.base.dir}" tempdir="${junit.base.dir}" fork="yes" 
+			forkmode="perBatch" failureproperty="junit.failed" errorproperty="junit.error">
+			<classpath refid="junit.classpath" />
+			<jvmarg value="-Dom.home=${om.dist.webapp}" />
+			<jvmarg value="-Dlanguages.home=${webapp.dir}/languages" />
+			<jvmarg value="-Dred5.root=${red5.root}" />
+			<jvmarg value="-Dbasedir=${basedir}" />
+			<jvmarg value="-Dred5.config_root=${red5.root}/conf" />
+			<jvmarg value="-Dbackups.dir=${junit.backups.dir}" />
+			<formatter type="${junit.test.formatter}" />
+			<batchtest todir="${junit.report.dir}">
+				<fileset dir="${main.out.dir}">
+					<include name="org/apache/openmeetings/test/**/${junit.test.pattern}.class" />
+					<exclude name="org/apache/openmeetings/test/selenium/${junit.test.pattern}.class" />
+					<exclude name="**/*$$*.class" />
+				</fileset>
+			</batchtest>
+		</junit>
+		
+		<junitreport todir="${junit.report.dir}">
+			<fileset dir="${junit.report.dir}">
+				<include name="TEST-*.xml" />
+			</fileset>
+			<report todir="${junit.report.dir}" />
+		</junitreport>
+		<fail message="Errors/failures in JUnit tests.">
+			<condition>
+				<or>
+					<isset property="junit.failed"/>
+					<isset property="junit.error"/>
+				</or>
+			</condition>
+		</fail>
+	</target>
+	<target name="smoke.test" depends="dist" description="Will run 'Smoke' subset of tests">
+		<antcall target="test">
+			<param name="junit.test.pattern" value="TestSmoke*" />
+		</antcall>
+	</target>
+
+	<target name="-check-ivy-installed">
+		<available file="${ivy.jar.path}" type="file" property="ivy.installed" />
+	</target>
+	<target name="-download-ivy" depends="-check-ivy-installed" unless="ivy.installed">
+		<mkdir dir="${project.lib.dir}"/>
+		<echo message="Downloading ivy..."/>
+		<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
+			dest="${ivy.jar.path}" usetimestamp="true"/>
+	</target>
+	
+	<target name="-install-ivy" depends="-download-ivy" description="Check if we need to download ivy or not">
+		<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.jar.path}"/>
+	</target>
+	
+	<target name="-availability-check" unless="red5.installed" description="Check which libraries need to be retrieved" depends="prepare.mkdir">
+		<available classpathref="check.classpath" classname="javax.persistence.spi.PersistenceProvider" property="mainlib.installed" />
+		<available classpathref="check.classpath" classname="org.apache.axis2.Version" property="om.installed" />
+		<available classpathref="check.classpath" classname="net.sf.antcontrib.AntContribVersion" property="junit.installed" />
+		<available classpathref="check.classpath" classname="com.thaiopensource.relaxng.translate.Driver" property="dtd-generator.installed" />
+		<available classpathref="check.classpath" classname="org.apache.commons.cli.CommandLine" property="cmdadmin.installed" />
+		<condition property="anakia.installed">
+			<and>
+				<available classpathref="check.anakia.classpath" classname="org.apache.oro.text.GlobCompiler" />
+				<available classpathref="check.anakia.classpath" classname="org.jdom.JDOMException" />
+			</and>
+		</condition> 
+		<available classpathref="check.anakia.classpath" classname="org.apache.oro.text.GlobCompiler" property="anakia.installed" />
+		<available classpathref="check.rat.classpath" classname="org.apache.rat.Report" property="rat.installed" />
+		<available classpathref="svntask.classpath" classname="org.tmatesoft.svn.core.SVNCommitInfo" property="svntask.installed" />
+		<available classpathref="check.classpath" classname="com.mysql.jdbc.Driver" property="mysql.installed" />
+		<available classpathref="check.classpath" classname="org.apache.derby.jdbc.ClientDriver" property="derby.installed" />
+		<available file="${laszlo.home}/WEB-INF/lib" type="dir" property="laszlo.installed" />
+		<available file="${laszlo46.home}/WEB-INF/lib" type="dir" property="laszlo46.installed" />
+		<available file="${red5.lib}/red5.sh" type="file" property="red5.server.installed" />
+		<available classpathref="check.classpath" classname="org.red5.client.net.rtmp.RTMPClient" property="red5.client.installed" />
+	</target>
+
+	<target name="-retrieve" depends="-install-ivy" description="Retrieves the libraries if needed">
+		<condition property="ivy.conf.name" value="red5">
+			<not>
+				<isset property="ivy.conf.name" />
+			</not>
+		</condition>
+		<condition property="ivy.lib.location" value="${mainlibs.lib.dir}">
+			<not>
+				<isset property="ivy.lib.location" />
+			</not>
+		</condition>
+		<condition property="ivy.transitive" value="false">
+			<not>
+				<isset property="ivy.transitive" />
+			</not>
+		</condition>
+		<echo message="Ivy conf name: ${ivy.conf.name}, destination: ${ivy.lib.location}" />
+		<ivy:resolve file="ivy.xml" conf="${ivy.conf.name}" checkIfChanged="false" transitive="${ivy.transitive}" />
+		<ivy:retrieve conf="${ivy.conf.name}" pattern="${ivy.lib.location}/[artifact]-[type]-[revision].[ext]" />
+	</target>
+	
+	<target name="-patch-red5-server-start-script" if="jrebel.home">
+		<echo>Going to patch red5-debug.* with ${jrebel.home}</echo>
+		<filter token="jrebel.home" value="${jrebel.home}" />
+		<filter token="project.home" value="${user.dir}" />
+		<copy todir="${red5.lib}" filtering="true" overwrite="true" force="true">
+			<fileset dir="${webcontent.base.dir}/jrebel" includes="red5-debug.*"/>
+		</copy>
+	</target>
+	
+	<target name="-maven-task" unless="maven.installed">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="mvn" />
+			<param name="ivy.lib.location" value="${project.lib.dir}" />
+		</antcall>
+		<path id="maven-ant-tasks.classpath">
+			<fileset dir="${project.lib.dir}" includes="maven-ant-tasks*.jar" />
+		</path>
+		<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
+				uri="antlib:org.apache.maven.artifact.ant"
+				classpathref="maven-ant-tasks.classpath" />
+		<property name="maven.installed" value="true" />
+	</target>
+
+	<target name="-jgit-task" unless="jgit.installed">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="jgit" />
+			<param name="ivy.lib.location" value="${project.lib.dir}" />
+			<param name="ivy.transitive" value="true" />
+		</antcall>
+		<path id="jgit-ant-tasks.classpath">
+			<fileset dir="${project.lib.dir}" includes="org.eclipse.jgit*.jar" />
+			<fileset dir="${project.lib.dir}" includes="jsch*.jar" />
+		</path>
+		<taskdef resource="org/eclipse/jgit/ant/ant-tasks.properties" classpathref="jgit-ant-tasks.classpath"/>
+		<property name="jgit.installed" value="true" />
+	</target>
+	
+	<!-- Check for the Red5 server libraries -->
+	<target name="-retrieve-red5-server" unless="red5.server.installed" description="Retrieves the libraries if needed" depends="-ant-task,-maven-task,-jgit-task">
+		<!-- Needs an empty dir to checkout to -->
+		<delete dir="${red5.server.dir}"/>
+		<git-clone uri="https://github.com/Red5/red5-server.git" dest="${red5.server.dir}" branch="v${red5.server.version}"/>
+		<artifact:mvn pom="${red5.server.dir}/pom.xml" mavenVersion="${maven.version}" fork="true" dir="${red5.server.dir}">
+			<jvmarg value="-Dmaven.buildNumber.doUpdate=false" />
+			<!--jvmarg value="-Dassembly.skipAssembly=true" /-->
+			<arg value="clean"/>
+			<arg value="package"/>
+			<arg value="-P"/>
+			<arg value="assemble"/>
+			<jvmarg value="-Dmaven.test.skip=true" />
+		</artifact:mvn>
+		<untar src="${red5.server.dir}/target/red5-server-${red5.server.version}-server.tar.gz" dest="${red5.server.dir}/target" compression="gzip"/>
+		<move todir="${red5.lib}">
+			<fileset dir="${red5.server.dir}/target/red5-server-${red5.server.version}">
+				<include name="**/*"/>
+			</fileset>
+		</move>
+	
+		<delete dir="${red5.lib}/webapps/installer" />
+		<delete dir="${red5.lib}/webapps/live" />
+		<delete dir="${red5.lib}/webapps/vod" />
+		<delete dir="${red5.lib}/webapps/chat" />
+		<delete dir="${red5.lib}/webapps/root/demos" />
+		<copy file="${webcontent.base.dir}/red5/index.html" todir="${red5.lib}/webapps/root" overwrite="true" force="true" />
+		<copy todir="${red5.lib}" overwrite="true" force="true">
+			<fileset dir="${webcontent.base.dir}/red5" includes="red5*,admin.*,network_test.sh"/>
+		</copy>
+		<!-- FIXME need to be removed as soon as JAudioTagger (will be officially Dual Licensed) -->
+		<xslt in="${red5.lib}/conf/red5-common.xml" out="${red5.lib}/conf/red5-common1.xml" style="build-jaudiotagger.xsl" />
+		<move file="${red5.lib}/conf/red5-common1.xml" tofile="${red5.lib}/conf/red5-common.xml" />
+		<copy file="${red5.server.dir}/src/main/server/conf/red5.properties" todir="${red5.lib}/conf" overwrite="true" force="true">
+			<filterchain>
+				<tokenfilter>
+					<replaceregex pattern="^[ \t]*rtmp.max_handling_time[ \t]*=.*$" replace="rtmp.max_handling_time=${rtmp.max.time}"/>
+				</tokenfilter>
+			</filterchain>
+		</copy>
+		<delete>
+			<fileset dir="${red5.server.lib}" includes="jaudiotagger*.jar" />
+		</delete>
+		<antcall target="-patch-red5-server-start-script"/> 
+	</target>
+	
+	<!-- Check for the Red5 client libraries -->
+	<target name="-retrieve-red5-client" unless="red5.client.installed" description="Retrieves the libraries if needed" depends="-retrieve-red5-server,-jgit-task">
+		<delete>
+			<fileset dir="${red5.client.lib}" includes="*" />
+		</delete>
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="red5-client" />
+			<param name="ivy.lib.location" value="${red5.client.lib}" />
+			<param name="ivy.transitive" value="false" />
+		</antcall>
+
+		<echo message="Red5 Client build" />
+	</target>
+
+	<!-- Check for the Top level libraries -->
+	<target name="-retrieve-mainlibs" unless="mainlib.installed" description="Retrieves the libraries if needed" depends="-retrieve-red5-client">
+		<!-- Ivy configuration - http://ant.apache.org/ivy/history/trunk/ant.html -->
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="mainlib" />
+			<param name="ivy.lib.location" value="${mainlibs.lib.dir}" />
+		</antcall>
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="mainlib.ext" />
+			<param name="ivy.lib.location" value="${mainlibs.lib.dir}" />
+		</antcall>
+		<delete>
+			<fileset dir="${mainlibs.lib.dir}" includes="*-source*.jar" />
+			<fileset dir="${mainlibs.lib.dir}" includes="*-javadoc*.jar" />
+		</delete>
+	</target>
+	<!-- Check for the OM libraries -->
+	<target name="-retrieve-om" unless="om.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="openmeetings" />
+			<param name="ivy.lib.location" value="${om.lib.dir}" />
+		</antcall>
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="openmeetings.ext" />
+			<param name="ivy.lib.location" value="${om.lib.dir}" />
+		</antcall>
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="openmeetings.axis2" />
+			<param name="ivy.lib.location" value="${om.lib.dir}" />
+			<param name="ivy.transitive" value="true" />
+		</antcall>
+		<delete>
+			<fileset dir="${om.lib.dir}" includes="commons-logging*.jar" />
+			<fileset dir="${om.lib.dir}" includes="commons-codec*.jar" />
+			<fileset dir="${om.lib.dir}" includes="commons-fileupload*.jar" />
+			<fileset dir="${om.lib.dir}" includes="commons-io*.jar" />
+			<fileset dir="${om.lib.dir}" includes="httpcore-jar*.jar" />
+			<fileset dir="${om.lib.dir}" includes="httpclient-jar*.jar" />
+			<fileset dir="${om.lib.dir}" includes="slf4j-api*.jar" />
+			<fileset dir="${om.lib.dir}" includes="stax-api-jar-1.0.jar" />
+			<fileset dir="${om.lib.dir}" includes="*-source*.jar" />
+			<fileset dir="${om.lib.dir}" includes="*-javadoc*.jar" />
+		</delete>
+	</target>
+	<!-- Check for the Anakia libraries -->
+	<target name="-retrieve-anakia" unless="anakia.installed" description="Retrieves the libraries if needed" depends="-retrieve-mainlibs">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="anakia" />
+			<param name="ivy.lib.location" value="${anakia.lib.dir}" />
+		</antcall>
+	</target>
+	<!-- Check for junit libraries -->
+	<target name="-retrieve-junit" unless="junit.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="junit" />
+			<param name="ivy.lib.location" value="${junit.lib.dir}" />
+		</antcall>
+	</target>
+	<!-- Check for rat libraries -->
+	<target name="-retrieve-rat" unless="rat.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="rat" />
+			<param name="ivy.lib.location" value="${rat.lib.dir}" />
+		</antcall>
+	</target>
+	<!-- Check for dtd-generator libraries -->
+	<target name="-retrieve-dtd-generator" unless="dtd-generator.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="dtd" />
+			<param name="ivy.lib.location" value="${dtd-generator.lib.dir}" />
+		</antcall>
+	</target>
+	<!-- Check for svntask libraries -->
+	<target name="-retrieve-svntask" unless="svntask.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="svntask" />
+			<param name="ivy.lib.location" value="${svntask.lib.dir}" />
+			<param name="ivy.transitive" value="true" />
+		</antcall>
+	</target>
+	<!-- Check for JDK 1.6 tools.jar libraries -->
+	<target name="-retrieve-tools.jar" unless="tools.jar.installed" description="Retrieves the libraries if needed">
+		<available file="${java.home}/Classes/classes.jar" type="file" property="tools.jar.path" value="${java.home}/Classes/classes.jar" />
+		<available file="${java.home}/../Classes/classes.jar" type="file" property="tools.jar.path" value="${java.home}/../Classes/classes.jar" />
+		<available file="${java.home}/lib/tools.jar" type="file" property="tools.jar.path" value="${java.home}/lib/tools.jar" />
+		<available file="${java.home}/../lib/tools.jar" type="file" property="tools.jar.path" value="${java.home}/../lib/tools.jar" />
+		<available file="${tools.jar.path}" type="file" property="tools.jar.installed" />
+
+		<copy file="${tools.jar.path}" tofile="${project.lib.dir}/java_16_tools.jar" />
+	</target>
+	<!-- Check for Openlaszlo -->
+	<target name="-extract-tgz" description="Extracts given tar into ${build.base.dir} folder">
+		<echo message="Going to extract ${dep.file} to the ${build.base.dir}" />
+		<untar src="${dep.file}" dest="${build.base.dir}" compression="gzip" />
+	</target>
+	<target name="-retrieve-openlaszlo" unless="laszlo.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="openlaszlo" />
+			<param name="ivy.lib.location" value="${laszlo.home}" />
+		</antcall>
+		<delete>
+			<fileset dir="${laszlo.home}" includes="openlaszlo*.tgz"/>
+		</delete>
+	</target>
+	<target name="-retrieve-openlaszlo46" unless="laszlo46.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="openlaszlo46" />
+			<param name="ivy.lib.location" value="${laszlo46.home}" />
+		</antcall>
+		<chmod dir="${laszlo46.home}/WEB-INF/flexsdk" perm="755" includes="**/mxmlc*" />
+		<delete>
+			<fileset dir="${laszlo46.home}" includes="openlaszlo*.tgz"/>
+		</delete>
+	</target>
+	<!-- Check for Command line admin depandencies -->
+	<target name="-retrieve-cmdadmin" unless="cmdadmin.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="cmdadmin" />
+			<param name="ivy.lib.location" value="${red5.lib}" />
+		</antcall>
+	</target>
+
+	<target name="-retrieve-db2" unless="db2.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<!-- empty -->
+	</target>
+
+	<target name="-retrieve-mssql" unless="mssql.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<!-- empty -->
+	</target>
+		
+	<target name="-retrieve-derby" unless="derby.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<!-- retrieved automatically, added for compatibility -->
+	</target>
+
+	<target name="-retrieve-mysql" unless="mysql.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<antcall target="-retrieve" inheritAll="true" inheritRefs="true">
+			<param name="ivy.conf.name" value="mysql" />
+			<param name="ivy.lib.location" value="${om.lib.dir}" />
+		</antcall>
+	</target>
+
+	<target name="-retrieve-oracle" unless="oracle.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<!-- empty -->
+	</target>
+
+	<target name="-retrieve-postgresql" unless="postgresql.installed" description="Retrieves the libraries if needed" depends="-availability-check">
+		<!-- retrieved automatically, added for compatibility -->
+	</target>
+
+	<target name="-process-db" description="performs DB related tasks based on passed DB type">
+		<echo message="db.provider == ${db}" />
+		<antcall target="-retrieve-${db}" inheritAll="true" inheritRefs="true" />
+		<copy file="${webapp.dir}/WEB-INF/classes/META-INF/${db}_persistence.xml" tofile="${webapp.dir}/WEB-INF/classes/META-INF/persistence.xml" overwrite="true" />
+	</target>
+
+	<!-- Clean targets -->
+	<!-- Remove classes directory for clean build -->
+	<target name="clean.classes" description="Clean Classes">
+		<delete includeemptydirs="true" dir="${main.out.dir}" />
+	</target>
+
+	<target name="clean.dist" description="Clean Dist dir">
+		<delete includeemptydirs="true" dir="${dist.dir}" />
+	</target>
+
+	<target name="clean" depends="clean.classes, clean.dist" description="Clean For Binary">
+		<delete includeemptydirs="true" dir="${junit.base.dir}" />
+		<delete file="${keystore.file}" />
+	</target>
+
+	<target name="clean.all" depends="clean.dist" description="Clean All">
+		<delete includeemptydirs="true" dir="${build.base.dir}" />
+	</target>
+	
+	<target name="clean.ivy" depends="clean.all,-install-ivy" description="Clears out Ivy cache and build folder">
+		<ivy:cleancache />
+	</target>
+
+	<target name="prepare-eclipse" if="java7.installed" description="Layout various files necessary for development" depends="-java7.check">
+		<antcall target="-retrieve-mainlibs" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-om" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-junit" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-dtd-generator" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-tools.jar" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-openlaszlo" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-openlaszlo46" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-cmdadmin" inheritAll="true" inheritRefs="true" />
+		<antcall target="-retrieve-anakia" inheritAll="true" inheritRefs="true" />
+		<antcall target="-process-db" inheritAll="true" inheritRefs="true" />
+	</target>
+	
+	<target name="-java7.check" unless="java7.installed" depends="info">
+		<condition property="java7.installed" value="true">
+			<and>
+				<or>
+					<equals arg1="${java.specification.version}" arg2="1.7" />
+					<equals arg1="${java.specification.version}" arg2="1.8" />
+				</or>
+				<matches string="${java.vm.specification.vendor}" pattern=".*[sun,oracle].*" casesensitive="false" singleline="true" />
+			</and>
+		</condition>
+		<echo message="Using Java ${java.version} specification: ${java.specification.version}" />
+		<fail message="Unsupported Java version - detected: ${java.version} Only Sun/Oracle Java compiler version 7 or 8 are supported.">
+			<condition>
+				<not>
+					<equals arg1="${java7.installed}" arg2="true" />
+				</not>
+			</condition>
+		</fail>
+	</target>
+	
+	<path id="loadtest.classpath">
+		<fileset dir="${om.dist.webapp}/screensharing">
+			<include name="*.jar" />
+			<exclude name="openmeetings*.jar" />
+		</fileset>
+		<pathelement path="${resources.dir}" />
+		<pathelement path="${main.out.dir}" />
+	</path>
+	
+	<property name="runTestHost" value="192.168.1.7" />
+	<property name="numberOfClient" value="50" />
+	<property name="runTestPort" value="1935" />
+	<property name="runTestContext" value="openmeetings/1" />
+	
+	<target name="doRunClientTest">
+		<parallel>
+			<java classname="org.apache.openmeetings.test.rtmp.SimulateLoadTest">
+				<arg value="${runTestHost}"/>
+				<arg value="${numberOfClient}"/>
+				<classpath refid="loadtest.classpath" />
+			</java>
+		</parallel>
+	</target>
+	
+</project>
diff --git a/docs/ApacheDerbyConfig.html b/docs/ApacheDerbyConfig.html
new file mode 100644
index 0000000..858e145
--- /dev/null
+++ b/docs/ApacheDerbyConfig.html
@@ -0,0 +1,374 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Apache Derby Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Apache Derby Configuration"><strong>Apache Derby Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				OpenMeetings default configuration is to use Apache Derby.
+			</p>
+                                                <p>
+				It is recommended for production environments and high
+				availibility to change to an usual relational database like MySQL,
+				Postgres or DB2.
+			</p>
+                                                <p>
+				For more information about Apache Derby see
+				<a href="http://db.apache.org/derby/">http://db.apache.org/derby/</a>
+			</p>
+                                                <p>
+				There is a sample configuration for Apache Derby that ships with
+				every release in:
+				<br />
+				/webapps/openmeetings/WEB-INF/classes/META-INF/derby_persistence.xml
+			</p>
+                                                <p>
+				If you encounter issues, you can drop the db again and delete the
+				file /webapps/openmeetings/conf/install.xml and then run the web
+				based installer again
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/BitrixPlugin.html b/docs/BitrixPlugin.html
new file mode 100644
index 0000000..2079b5f
--- /dev/null
+++ b/docs/BitrixPlugin.html
@@ -0,0 +1,395 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Bitrix Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Plugin for Bitrix"><strong>OpenMeetings Plugin for Bitrix</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Current Development Snapshots for testing can be created from the sources:
+				<a href="https://svn.codespot.com/a/apache-extras.org/openmeetings-bitrix-plugin/trunk">here</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Enter videoconference rooms from Bitrix (http://www.1c-bitrix.ru/): </li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuration"><strong>Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<b>OpenMeetings Bitrix Plugin Installation</b><br />
+				<ol>
+					<li>Build plugin from sources</li>
+					<li>Unpack it into bitrix/modules</li>
+					<li>Install via Admin</li>
+					<li>Add OPenmeetings component to any page.</li>
+				</ol>              
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/BuildInstructions.html b/docs/BuildInstructions.html
new file mode 100644
index 0000000..abadf5c
--- /dev/null
+++ b/docs/BuildInstructions.html
@@ -0,0 +1,698 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Build instructions</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Nightly Builds"><strong>Nightly Builds</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can find Nightly Builds of the software at:
+				<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_BLANK">
+					https://builds.apache.org/view/M-R/view/OpenMeetings/
+				</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to Build a Distribution"><strong>How to Build a Distribution</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<p>To build a binary release of OpenMeetings you need: </p>
+				<ul>
+					<li>Sun JDK6</li>
+					<li>Apache ANT (minimum) 1.8.3</li>
+					<li>
+						SVN Command line client (Subversion 1.7 required!)
+						<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
+					</li>
+				</ul>
+			</div>
+                                                <p>Get the source: </p>
+                                                <div class="xmlcode">
+				svn checkout
+				https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+			</div>
+                                                <p>Run the command: </p>
+                                                <div class="xmlcode">
+				ant
+			</div>
+                                                <p>There is no need to compile the client additionally! The ant task
+				does it all! You will find a directory dist that contains
+				OpenMeetings and a red5-server.
+			</p>
+                                                <p>To compile the client you can also use ant: </p>
+                                                <div class="xmlcode">
+				ant
+				<span style="margin-left: 200px;"># compiles a complete package into the folder dist
+				</span>
+				<br />
+				ant compile.laszlo.main
+				<span style="margin-left: 70px;"># compiles the client into main.as3.swf10.swf and
+					main.swf8.swf</span>
+				<br />
+				ant compile.laszlo.main.debug
+				<span style="margin-left: 30px;"># compiles the debug-client into
+					maindebug.as3.swf10.swf and maindebug.swf8.swf
+				</span>
+				<br />
+				ant -Ddb=&lt;name of DB&gt;
+				<span style="margin-left: 50px;"># will copy &lt;name of DB&gt;_persistense.xml to
+					persistense.xml
+				</span>
+				<br />
+				<span style="margin-left: 230px;">#(for ex. ant -Ddb=mysql will set mysql as default
+					DB)
+				</span>
+			</div>
+                                                <p>To compile just the openmeetings JAR file: </p>
+                                                <div class="xmlcode">
+				ant jar.only
+			</div>
+                                                <p>
+				To run Junit tests using ANT see
+				<a href="JUnitTesting.html">JUnitTesting</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Run, Develop, Test"><strong>Run, Develop, Test</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				To develop or build OpenMeetings you checkout the source as Eclipse
+				project. You need the Subclipse or Subversive Plugin for Eclipse. If
+				you just need to change 3 lines of code then your probably better
+				switch to
+				<a href="#How_to_build_a_distribution" rel="nofollow">How to build a
+					distribution
+				</a>
+				.
+			</p>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step1 - Get required Software"><strong>Step1 - Get required Software</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>To develop OpenMeetings you need at least: </p>
+                                                <ul>
+					<li>Eclipse in a up to date copy and Sun JDK6 </li>
+					<li>Apache ANT (minimum) 1.8.3</li>
+					<li>
+						Subclipse 1.8 (Subversion 1.7 required!)
+						<a href="http://subclipse.tigris.org/" target="_BLANK" rel="nofollow">http://subclipse.tigris.org/
+						</a>
+					</li>
+					<li>
+						SVN Command line client (Subversion 1.7 required!)
+						<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
+					</li>
+					<li>Spring IDE for Eclipse (installable via Help &gt; Eclipse
+						Marketplace)
+					</li>
+					<li>
+						Apache IvyDE™ For Eclipse (installable via Help &gt; Install
+						New Software)
+						URL: http://www.apache.org/dist/ant/ivyde/updatesite
+						detailed steps can be found here:
+						<a href="http://ant.apache.org/ivy/ivyde/download.cgi" target="_BLANK" rel="nofollow">http://ant.apache.org/ivy/ivyde/download.cgi</a>
+					</li>
+					<li>MySQL (or Postgres, or other Databases supported by openJPA)
+						are optionally but handy to have them
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step2 - Download the Source"><strong>Step2 - Download the Source</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Advanced Users: Check out the Code from the Repository as a
+					Java
+					project into Eclipse.
+				</p>
+                                                <p>
+					URL:
+					<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/">
+						https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+					</a>
+				</p>
+                                                <p>To download the required JARs for building and developing
+					OpenMeetings you need to run the ANT comand:
+				</p>
+                                                <div class="xmlcode">
+					ant -Ddb=&lt;your_DB&gt; prepare-eclipse
+				</div>
+                                                <p>After the ANT command you need to press F5 and rebuild the
+					project from inside Eclipse
+				</p>
+                                                <p>Step-By-Step: </p>
+                                                <p>1) Start Eclipse </p>
+                                                <p>
+					2) Change Perspective to SVN Repository Exploring:
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_1.png">
+						<img src="images/checkout_1.png" alt="" width="400" height="289" />
+					</a>
+
+				</p>
+                                                <p>
+					3) Select SVN Repository Exploring and click ok.
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_2.png">
+						<img src="images/checkout_2.png" alt="" width="304" height="417" />
+					</a>
+				</p>
+                                                <p>
+					4) A new Dialog in Eclipse opens
+					<strong>SVN Repositories</strong>
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_3.png">
+						<img src="images/checkout_3.png" alt="" width="460" height="102" />
+					</a>
+				</p>
+                                                <p>
+					5) Click on the icon with the plus in the top right corner in the
+					SVN Repository Dialog
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_4.png">
+						<img src="images/checkout_4.png" alt="" width="57" height="38" />
+					</a>
+				</p>
+                                                <p>
+					6) Add the URL
+					<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+					</a>
+					and click Finish
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_5.png">
+						<img src="images/checkout_5.png" alt="" width="455" height="272" />
+					</a>
+				</p>
+                                                <p>
+					7) After download is complete you see a new Source Repository in
+					the Repository Explorer. Right click on it and choose
+					<strong>checkout</strong>
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_6.png">
+						<img src="images/checkout_6.png" alt="" width="340" height="135" />
+					</a>
+				</p>
+                                                <p>
+					8) In the Dialog the opens now just click next
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_7.png">
+						<img src="images/checkout_7.png" alt="" width="390" height="338" />
+					</a>
+				</p>
+                                                <p>
+					9) In the next Dialog just click Finish, Eclipse will then download
+					the sources
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_8.png">
+						<img src="images/checkout_8.png" alt="" width="390" height="338" />
+					</a>
+				</p>
+                                                <p>
+					10) After the download is complete you will see a new Project in
+					the Package Explorer Dialog of Eclipse
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_9.png">
+						<img src="images/checkout_9.png" alt="" width="310" height="297" />
+					</a>
+				</p>
+                                                <div>
+					11) Please run
+					<div class="xmlcode">
+						ant prepare-eclipse
+					</div>
+					to download all necessary jar files, and perform source
+					<tt>Refresh</tt>
+					to resolve all compilation issues.
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step3 - Deploy and Run"><strong>Step3 - Deploy and Run</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					see the first chapter about the ANT tasks to compile the code. You
+					will find a directory called
+					<strong>dist</strong>
+					which contains a regular openmeetings including red5. You can then
+					use the usual process like described at
+					<a href="installation.html">installation</a>
+					to run the code then.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Links"><strong>Links</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					Getting Started with OpenLaszlo, checkout
+					<a href="http://www.openlaszlo.org/lps4.2/laszlo-explorer/index.jsp?lzr=swf8" target="_BLANK" rel="nofollow">Laszlo-in-10-Minutes</a>
+					and the
+					<a href="http://www.openlaszlo.org/lps4.2/docs/" target="_BLANK" rel="nofollow">Application
+						Developer's Guide
+					</a>
+					or try the
+					<a href="http://www.openlaszlo.org/getstarted" target="_BLANK" rel="nofollow">ScreenCast</a>
+				</li>
+				<li>
+					<a href="http://openmeetings.apache.org/svn.html">
+						browse SVN source
+					</a>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Tipps and Gotchas"><strong>Tipps and Gotchas</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>When you want to develop only client side there are handy ANT
+				tasks so that you only rebuild the SWFs, same for the Java side.
+			</p>
+                                                <p>
+				It
+				also takes much less time if you do use MySQL as database then
+				rebuilding the software and waiting for Apache Derby to set up the
+				database everytime you did rebuild.
+			</p>
+                                                <p>
+				<b>Working behind a proxy:</b>
+				If you are sitting behind a proxy you should add some proxy settings
+				before starting the build process.
+				<br />
+				For Apache Ivy see:
+				<a href="http://ant.apache.org/ivy/faq.html" target="_BLANK" rel="nofollow">http://ant.apache.org/ivy/faq.html
+				</a>
+				<br />
+				For SVN Command Line Client (From CollabNet 1.7) see:
+				<a href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html" target="_BLANK" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
+				</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/CalendarAndTimezone.html b/docs/CalendarAndTimezone.html
new file mode 100644
index 0000000..5b242d6
--- /dev/null
+++ b/docs/CalendarAndTimezone.html
@@ -0,0 +1,425 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Changing the Calendar and Timezone default</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing the Calendar and Timezone default"><strong>Changing the Calendar and Timezone default</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				In general the timezone is configured in the user profile of each
+				user, so changing the server timezone has no effect how to the users
+				calendar for example.
+				<br />
+				<br />
+				However there are some circumstances where there is no user profile
+				available.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing servers default timzeone for Emails and Invitations (display)"><strong>Changing servers default timzeone for Emails and Invitations (display)</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Goto Administration &gt; Configuration and change the config-key:
+				<tt>default.timezone</tt>
+			</p>
+                                                <p>Valid timezone have to meet standards! </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing first day in week for calendar from Sunday to Monday"><strong>Changing first day in week for calendar from Sunday to Monday</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>in the public/config.xml change the key: </p>
+                                                <div class="xmlcode">
+				&lt;!--
+				<br />
+				First day in the Week used by the Calendar
+				<br />
+				0 means Sunday
+				<br />
+				1 means Monday
+				<br />
+				this is the way how the Celendar inits a week
+				<br />
+				--&gt;
+				<br />
+				&lt;firstdayinweek&gt;0&lt;/firstdayinweek&gt;
+				<br />
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing the default number of max participants of a conference room created via calendar"><strong>Changing the default number of max participants of a conference room created via calendar</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Goto
+				Administration &gt; Configuration and change the config-key:
+				<tt>calendar.conference.rooms.default.size</tt>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/CalendarService.html b/docs/CalendarService.html
new file mode 100644
index 0000000..c67ed33
--- /dev/null
+++ b/docs/CalendarService.html
@@ -0,0 +1,1112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: CalendarService</h3>
+	   <p>CalendarService contains methods to create, edit delete calendar meetings<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/CalendarService?wsdl">http://localhost:5080/openmeetings/services/CalendarService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in CalendarService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#getAppointmentByRange"><b>getAppointmentByRange</b></a><br/>
+                <div class="navigation_comment"><i >Load appointments by a start / end range for the current SID</i></div>
+                </div>
+                                               <div>
+                <a href="#getAppointmentByRangeForUserId"><b>getAppointmentByRangeForUserId</b></a><br/>
+                <div class="navigation_comment"><i >Load appointments by a start / end range for the userId</i></div>
+                </div>
+                                               <div>
+                <a href="#getNextAppointment"><b>getNextAppointment</b></a><br/>
+                <div class="navigation_comment"><i >Get the next Calendar event for the current user of the SID</i></div>
+                </div>
+                                               <div>
+                <a href="#getNextAppointmentForUserId"><b>getNextAppointmentForUserId</b></a><br/>
+                <div class="navigation_comment"><i >Get the next Calendar event for userId</i></div>
+                </div>
+                                               <div>
+                <a href="#searchAppointmentByName"><b>searchAppointmentByName</b></a><br/>
+                <div class="navigation_comment"><i >Search a calendar event for the current SID</i></div>
+                </div>
+                                               <div>
+                <a href="#saveAppointment"><b>saveAppointment</b></a><br/>
+                <div class="navigation_comment"><i >Save an appointment</i></div>
+                </div>
+                                               <div>
+                <a href="#updateAppointmentTimeOnly"><b>updateAppointmentTimeOnly</b></a><br/>
+                <div class="navigation_comment"><i >Update an calendar event time only</i></div>
+                </div>
+                                               <div>
+                <a href="#updateAppointment"><b>updateAppointment</b></a><br/>
+                <div class="navigation_comment"><i >Save an appointment</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteAppointment"><b>deleteAppointment</b></a><br/>
+                <div class="navigation_comment"><i >delete a calendar event
+ 
+ If the given SID is from an Administrator or Web-Service user, the user
+ can delete any appointment.<br/>
+ If the SID is assigned to a simple user, he can only delete appointments
+ where he is also the owner/creator of the appointment</i></div>
+                </div>
+                                               <div>
+                <a href="#getAppointmentByRoomId"><b>getAppointmentByRoomId</b></a><br/>
+                <div class="navigation_comment"><i >Load a calendar event by its room id</i></div>
+                </div>
+                                               <div>
+                <a href="#getAppointmentCategoryList"><b>getAppointmentCategoryList</b></a><br/>
+                <div class="navigation_comment"><i >Get all categories of calendar events</i></div>
+                </div>
+                                               <div>
+                <a href="#getAppointmentReminderTypList"><b>getAppointmentReminderTypList</b></a><br/>
+                <div class="navigation_comment"><i >Get all reminder types for calendar events</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in CalendarService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAppointmentByRange" ><b>getAppointmentByRange</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAppointmentByRange (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Date starttime
+    			       			    			       			     , 
+    			       			   Date endtime
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Load appointments by a start / end range for the current SID
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.calendar.Appointment>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">starttime</td>
+	                     <td valign="top">start time, yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">endtime</td>
+	                     <td valign="top">end time, yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRange?SID=VALUE&starttime=VALUE&endtime=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRange?SID=VALUE&amp;starttime=VALUE&amp;endtime=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAppointmentByRangeForUserId" ><b>getAppointmentByRangeForUserId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAppointmentByRangeForUserId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long userId
+    			       			    			       			     , 
+    			       			   Date starttime
+    			       			    			       			     , 
+    			       			   Date endtime
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Load appointments by a start / end range for the userId
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.calendar.Appointment>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">userId</td>
+	                     <td valign="top">the userId the calendar events should be loaded</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">starttime</td>
+	                     <td valign="top">start time, yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">endtime</td>
+	                     <td valign="top">end time, yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRangeForUserId?SID=VALUE&userId=VALUE&starttime=VALUE&endtime=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRangeForUserId?SID=VALUE&amp;userId=VALUE&amp;starttime=VALUE&amp;endtime=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getNextAppointment" ><b>getNextAppointment</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getNextAppointment (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get the next Calendar event for the current user of the SID
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.calendar.Appointment
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getNextAppointment?SID=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getNextAppointment?SID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getNextAppointmentForUserId" ><b>getNextAppointmentForUserId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getNextAppointmentForUserId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long userId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get the next Calendar event for userId
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.calendar.Appointment
+                </p>
+    			<p>Params:</p>
+    			    				<b>Warning:</b><i> Params in this method do not seem to be correctly documentated</i>
+    				<br/><br/>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getNextAppointmentForUserId?SID=VALUE&userId=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getNextAppointmentForUserId?SID=VALUE&amp;userId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="searchAppointmentByName" ><b>searchAppointmentByName</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>searchAppointmentByName (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String appointmentName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Search a calendar event for the current SID
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.calendar.Appointment>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentName</td>
+	                     <td valign="top">the search string</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/searchAppointmentByName?SID=VALUE&appointmentName=VALUE">http://localhost:5080/openmeetings/services/CalendarService/searchAppointmentByName?SID=VALUE&amp;appointmentName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="saveAppointment" ><b>saveAppointment</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>saveAppointment (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String appointmentName
+    			       			    			       			     , 
+    			       			   String appointmentLocation
+    			       			    			       			     , 
+    			       			   String appointmentDescription
+    			       			    			       			     , 
+    			       			   Calendar appointmentstart
+    			       			    			       			     , 
+    			       			   Calendar appointmentend
+    			       			    			       			     , 
+    			       			   Boolean isDaily
+    			       			    			       			     , 
+    			       			   Boolean isWeekly
+    			       			    			       			     , 
+    			       			   Boolean isMonthly
+    			       			    			       			     , 
+    			       			   Boolean isYearly
+    			       			    			       			     , 
+    			       			   Long categoryId
+    			       			    			       			     , 
+    			       			   Long remind
+    			       			    			       			     , 
+    			       			   String mmClient
+    			       			    			       			     , 
+    			       			   Long roomType
+    			       			    			       			     , 
+    			       			   Long languageId
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String password
+    			       			    			       			     , 
+    			       			   long roomId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Save an appointment
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    				<b>Warning:</b><i> Params in this method do not seem to be correctly documentated</i>
+    				<br/><br/>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentName</td>
+	                     <td valign="top">name of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentLocation</td>
+	                     <td valign="top">location info text of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentDescription</td>
+	                     <td valign="top">description test of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Calendar
+	                     		                     </td>
+	                     <td valign="top">appointmentstart</td>
+	                     <td valign="top">start as Date yyyy-mm-ddThh:mm:ss</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Calendar
+	                     		                     </td>
+	                     <td valign="top">appointmentend</td>
+	                     <td valign="top">end as Date yyyy-mm-ddThh:mm:ss</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDaily</td>
+	                     <td valign="top">if the calendar event should be repeated daily (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isWeekly</td>
+	                     <td valign="top">if the calendar event should be repeated weekly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isMonthly</td>
+	                     <td valign="top">if the calendar event should be repeated monthly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isYearly</td>
+	                     <td valign="top">if the calendar event should be repeated yearly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">categoryId</td>
+	                     <td valign="top">the category id of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">remind</td>
+	                     <td valign="top">the reminder type of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">mmClient</td>
+	                     <td valign="top">List of clients, comma separated string, <br/>
+            sample: '1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+            to add multiple clients you can use the same GET parameter in
+            the URL multiple times, for example:
+            &amp;mmClient='1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+             (Please NOTE mmClient value is enclosed in single quotes)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomType</td>
+	                     <td valign="top">the room type for the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">languageId</td>
+	                     <td valign="top">the language id of the calendar event, notification emails
+            will be send in this language</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">if the room is password protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">password</td>
+	                     <td valign="top">the password for the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/saveAppointment?SID=VALUE&appointmentName=VALUE&appointmentLocation=VALUE&appointmentDescription=VALUE&appointmentstart=VALUE&appointmentend=VALUE&isDaily=VALUE&isWeekly=VALUE&isMonthly=VALUE&isYearly=VALUE&categoryId=VALUE&remind=VALUE&mmClient=VALUE&roomType=VALUE&languageId=VALUE&isPasswordProtected=VALUE&password=VALUE&roomId=VALUE">http://localhost:5080/openmeetings/services/CalendarService/saveAppointment?SID=VALUE&amp;appointmentName=VALUE&amp;appointmentLocation=VALUE&amp;appointmentDescription=VALUE&amp;appointmentstart=VALUE&amp;appointmentend=VALUE&amp;isDaily=VALUE&amp;isWeekly=VALUE&amp;isMonthly=VALUE&amp;isYearly=VALUE&amp;categoryId=VALUE&amp;remind=VALUE&amp;mmClient=VALUE&amp;roomType=VALUE&amp;languageId=VALUE&amp;isPasswordProtected=VALUE&amp;password=VALUE&amp;roomId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateAppointmentTimeOnly" ><b>updateAppointmentTimeOnly</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateAppointmentTimeOnly (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long appointmentId
+    			       			    			       			     , 
+    			       			   Date appointmentstart
+    			       			    			       			     , 
+    			       			   Date appointmentend
+    			       			    			       			     , 
+    			       			   Long languageId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Update an calendar event time only
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">appointmentId</td>
+	                     <td valign="top">the calendar event that should be updated</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">appointmentstart</td>
+	                     <td valign="top">start yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">appointmentend</td>
+	                     <td valign="top">end yyyy-mm-dd</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">languageId</td>
+	                     <td valign="top">the language id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/updateAppointmentTimeOnly?SID=VALUE&appointmentId=VALUE&appointmentstart=VALUE&appointmentend=VALUE&languageId=VALUE">http://localhost:5080/openmeetings/services/CalendarService/updateAppointmentTimeOnly?SID=VALUE&amp;appointmentId=VALUE&amp;appointmentstart=VALUE&amp;appointmentend=VALUE&amp;languageId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateAppointment" ><b>updateAppointment</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateAppointment (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long appointmentId
+    			       			    			       			     , 
+    			       			   String appointmentName
+    			       			    			       			     , 
+    			       			   String appointmentLocation
+    			       			    			       			     , 
+    			       			   String appointmentDescription
+    			       			    			       			     , 
+    			       			   Calendar appointmentstart
+    			       			    			       			     , 
+    			       			   Calendar appointmentend
+    			       			    			       			     , 
+    			       			   Boolean isDaily
+    			       			    			       			     , 
+    			       			   Boolean isWeekly
+    			       			    			       			     , 
+    			       			   Boolean isMonthly
+    			       			    			       			     , 
+    			       			   Boolean isYearly
+    			       			    			       			     , 
+    			       			   Long categoryId
+    			       			    			       			     , 
+    			       			   Long remind
+    			       			    			       			     , 
+    			       			   String mmClient
+    			       			    			       			     , 
+    			       			   Long roomType
+    			       			    			       			     , 
+    			       			   Long languageId
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String password
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Save an appointment
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">appointmentId</td>
+	                     <td valign="top">the id to update</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentName</td>
+	                     <td valign="top">name of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentLocation</td>
+	                     <td valign="top">location info text of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">appointmentDescription</td>
+	                     <td valign="top">description test of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Calendar
+	                     		                     </td>
+	                     <td valign="top">appointmentstart</td>
+	                     <td valign="top">start as Date yyyy-mm-ddThh:mm:ss</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Calendar
+	                     		                     </td>
+	                     <td valign="top">appointmentend</td>
+	                     <td valign="top">end as Date yyyy-mm-ddThh:mm:ss</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDaily</td>
+	                     <td valign="top">if the calendar event should be repeated daily (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isWeekly</td>
+	                     <td valign="top">if the calendar event should be repeated weekly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isMonthly</td>
+	                     <td valign="top">if the calendar event should be repeated monthly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isYearly</td>
+	                     <td valign="top">if the calendar event should be repeated yearly (not
+            implemented)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">categoryId</td>
+	                     <td valign="top">the category id of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">remind</td>
+	                     <td valign="top">the reminder type of the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">mmClient</td>
+	                     <td valign="top">List of clients, comma separated string, <br/>
+            sample: '1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+            to add multiple clients you can use the same GET parameter in
+            the URL multiple times, for example:
+            &amp;mmClient='1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+             (Please NOTE mmClient value is enclosed in single quotes)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomType</td>
+	                     <td valign="top">the room type for the calendar event</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">languageId</td>
+	                     <td valign="top">the language id of the calendar event, notification emails
+            will be send in this language</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">if the room is password protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">password</td>
+	                     <td valign="top">the password for the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/updateAppointment?SID=VALUE&appointmentId=VALUE&appointmentName=VALUE&appointmentLocation=VALUE&appointmentDescription=VALUE&appointmentstart=VALUE&appointmentend=VALUE&isDaily=VALUE&isWeekly=VALUE&isMonthly=VALUE&isYearly=VALUE&categoryId=VALUE&remind=VALUE&mmClient=VALUE&roomType=VALUE&languageId=VALUE&isPasswordProtected=VALUE&password=VALUE">http://localhost:5080/openmeetings/services/CalendarService/updateAppointment?SID=VALUE&amp;appointmentId=VALUE&amp;appointmentName=VALUE&amp;appointmentLocation=VALUE&amp;appointmentDescription=VALUE&amp;appointmentstart=VALUE&amp;appointmentend=VALUE&amp;isDaily=VALUE&amp;isWeekly=VALUE&amp;isMonthly=VALUE&amp;isYearly=VALUE&amp;categoryId=VALUE&amp;remind=VALUE&amp;mmClient=VALUE&amp;roomType=VALUE&amp;languageId=VALUE&amp;isPasswordProtected=VALUE&amp;password=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteAppointment" ><b>deleteAppointment</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteAppointment (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long appointmentId
+    			       			    			       			     , 
+    			       			   Long language_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  delete a calendar event
+ 
+ If the given SID is from an Administrator or Web-Service user, the user
+ can delete any appointment.<br/>
+ If the SID is assigned to a simple user, he can only delete appointments
+ where he is also the owner/creator of the appointment
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">an authenticated SID</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">appointmentId</td>
+	                     <td valign="top">the id to delete</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language id in which the notifications for the deleted
+            appointment are send</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/deleteAppointment?SID=VALUE&appointmentId=VALUE&language_id=VALUE">http://localhost:5080/openmeetings/services/CalendarService/deleteAppointment?SID=VALUE&amp;appointmentId=VALUE&amp;language_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAppointmentByRoomId" ><b>getAppointmentByRoomId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAppointmentByRoomId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Load a calendar event by its room id
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.calendar.Appointment
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRoomId?SID=VALUE&room_id=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getAppointmentByRoomId?SID=VALUE&amp;room_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAppointmentCategoryList" ><b>getAppointmentCategoryList</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAppointmentCategoryList (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get all categories of calendar events
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.calendar.AppointmentCategory>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getAppointmentCategoryList?SID=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getAppointmentCategoryList?SID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAppointmentReminderTypList" ><b>getAppointmentReminderTypList</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAppointmentReminderTypList (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get all reminder types for calendar events
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/CalendarService/getAppointmentReminderTypList?SID=VALUE">http://localhost:5080/openmeetings/services/CalendarService/getAppointmentReminderTypList?SID=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/Clustering.html b/docs/Clustering.html
new file mode 100644
index 0000000..28a853a
--- /dev/null
+++ b/docs/Clustering.html
@@ -0,0 +1,524 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Clustering</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Description"><strong>Description</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				OpenMeetings 2.1 or later is required to use clustering. One database is used for all OpenMeetings 
+				servers, so all database tables are shared across OM instances. Certain folders should be shared 
+				between all servers to allow access to the files/recording.</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuration"><strong>Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					Multiple OM servers should be set up as described in
+					<a href="installation.html" target="_BLANK">
+						<b>Installation</b>
+					</a>
+				</li>
+				<li>All servers should be configured to have same Time zone (To avoid
+					Schedulers to drop user sessions as outdated)
+				</li>
+				<li>All servers should be configured to use the same DB</li>
+				<li>Servers should be added in Administration -&gt; Servers section</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Database"><strong>Database</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Add users who can connect to the database remotely</li>
+				<li>Update <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml</tt>
+					set correct server address, login and password. Also add the following section:
+					<div class="xmlcode">&lt;property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" /&gt;</div>
+					Instead of the 10.1.1.1 and 10.1.1.2 set semicolon separated IPs of all nodes of the cluster.
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="File systems"><strong>File systems</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
+					<div class="xmlcode">
+						/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)<br />
+						/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
+					</div>
+					Here 10.1.1.2 - is node ip for NFS remote access. Add these lines for all nodes except node with 
+					folders.
+				</li>
+				<li>
+					Install NFS common tools to other nodes. In the file <tt>/etc/fstab</tt> do the following:
+					<div class="xmlcode">
+						10.1.1.1:/opt/red5/webapps/openmeetings/upload/<br />
+						/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr<br />
+						10.1.1.1:/opt/red5/webapps/openmeetings/streams/<br />
+						/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
+					</div>
+					Here 10.1.1.1 – data server ip. And run the command:
+					<div class="xmlcode">
+						mount -a
+					</div>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OM nodes configuration"><strong>OM nodes configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt>
+                                                <ul>
+				<li>
+					For each node uncomment line:
+					<div class="xmlcode">
+						&lt;!-- Need to be uncommented and set to the real ID if in cluster mode--&gt;<br />
+						&lt;property name="serverId" value="1" /&gt;
+					</div>
+					and input the unique value for each node.
+				</li>
+				<li> 
+					Replace <tt>&lt;ref bean="openmeetings.HashMapStore" /&gt;  &lt;!-- Memory based session cache by default --&gt;</tt><br />
+					with <tt>&lt;ref bean="openmeetings.DatabaseStore" /&gt;</tt> 
+					(Currently commented out with following comment: <tt>"The following section should be used in clustering mode"</tt>)
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuring cluster in Administration"><strong>Configuring cluster in Administration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Go to the <tt>Administration -&gt; Users</tt> and create Webservice user (only access via SOAP).</li>
+				<li>
+					Go to the <tt>Administration -&gt; Servers</tt> and add all cluster nodes with the following settings:
+					<div class="xmlcode">
+						Server Name = node name;<br />
+						Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;<br />
+						Server Address = node ip;<br />
+						HTTP Port = 5080 - port for http part of Openmeetings;<br />
+						User (SOAP Access) = login of Webservice user from the previous step;<br />
+						Password = password of Webservise user;<br />
+						Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;<br />
+						Protocol = http.
+					</div>
+				</li> 
+			</ul>
+                                                <img src="./images/cluster1.png" width="650" height="461" align="middle">
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Ensure everything works as expected"><strong>Ensure everything works as expected</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Set up the cluster and loggin with two users, go to the same room (also check before room 
+				entering that the status page with the room list shows the correct number of participants before 
+				entering the room). You should login to the same server initially, the server will redirect you 
+				for the conference room to the appropriate server automatically. Both users should be in the same room.
+				</li>
+				<li>Do the same with only two users but go to _different_ rooms. The calculation should send 
+				both users to different servers, cause based on the calculation two different rooms on a cluster 
+				with two nodes should go exactly one room for each node. You can now loggin really to node1 
+				and node2 of your cluster while those users are loggedin and go to <tt>Administration &gt; Connections</tt>
+				and check in the column "servers" where they are located. They should be on different server.
+				</li>
+			</ul>
+                                                <img src="./images/cluster2.png" width="650" height="369" align="middle">
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/CommandLineAdmin.html b/docs/CommandLineAdmin.html
new file mode 100644
index 0000000..05bd7ca
--- /dev/null
+++ b/docs/CommandLineAdmin.html
@@ -0,0 +1,429 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Command line admin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Usage"><strong>Usage</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>To avoid intensive traffic utilization and save your time you can
+				use command line admin to achieve following tasks:</p>
+                                                <ul>
+				<li>Install using defaults</li>
+				<li>Install from backup</li>
+				<li>Backup</li>
+				<li>Cleanup</li>
+			</ul>
+                                                <p>Some example commands:</p>
+                                                <p>MySQL (requires to place the MySQL JDBC driver into webapps/openmeetings/WEB-INF/lib before running the command):</p>
+                                                <div>
+				<div class="xmlcode">
+./admin.sh -i -v -tz Europe/Berlin -email your.email@gmail.com -group webbase -user admin --smtp-server localhost --db-type mysql --db-name openmeetings_db --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --db-user root --db-host localhost --email-auth-pass 123qweasd<br />
+				</div>
+			</div>
+                                                <p>Derby (Not recommended for production environment):</p>
+                                                <div>
+				<div class="xmlcode">
+./admin.sh -i -v -tz Europe/Berlin -email seba.wagner@gmail.com -group webbase -user admin --smtp-server localhost --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --email-auth-pass 123qweasd<br />
+				</div>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Command reference"><strong>Command reference</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<div class="xmlcode">
+ -v,--verbose                        verbose error messages<br />
+--------------------------------------------------------------------------------------------------<br />
+ -h,--help                           prints this message<br />
+--------------------------------------------------------------------------------------------------<br />
+ -b,--backup                         Backups OM<br />
+<span style="margin-left: 50px;">-file &lt;arg&gt;                       (optional) file used for backup/restore/install</span><br />
+<span style="margin-left: 100px;">--exclude-files                (optional) should backup exclude files [default: include]</span><br />
+--------------------------------------------------------------------------------------------------<br />
+ -r,--restore                        Restores OM<br />
+<span style="margin-left: 50px;">-file &lt;arg&gt;                       file used for backup/restore/install</span><br />
+--------------------------------------------------------------------------------------------------<br />
+ -l,--languages                      Reimport All language files into DB<br />
+<span style="margin-left: 50px;">-lang,--language &lt;arg&gt;            (optional) Single language to be imported (id or name)</span><br />
+--------------------------------------------------------------------------------------------------<br />
+ -i,--install                        Fill DB table, and make OM usable<br />
+<span style="margin-left: 50px;">-user &lt;arg&gt;                       Login name of the default user, minimum 4 characters (mutually exclusive with 'file')</span><br />
+<span style="margin-left: 50px;">-group &lt;arg&gt;                      The name of the default user group (mutually exclusive with 'file')</span><br />
+<span style="margin-left: 50px;">-email &lt;arg&gt;                      Email of the default user (mutually exclusive with 'file')</span><br />
+<span style="margin-left: 50px;">-tz &lt;arg&gt;                         Default server time zone, and time zone for the selected user (mutually exclusive with 'file') file used for backup/restore/install</span><br />
+<span style="margin-left: 100px;">--email-auth-pass &lt;arg&gt;        (optional) Email auth password (anonymous connection will be used if not set)</span><br />
+<span style="margin-left: 100px;">--db-host &lt;arg&gt;                (optional) DNS name or IP address of database</span><br />
+<span style="margin-left: 100px;">--drop                         (optional) Drop database before installation</span><br />
+<span style="margin-left: 100px;">--db-user &lt;arg&gt;                (optional) User with write access to the DB specified</span><br />
+<span style="margin-left: 100px;">--system-email-address &lt;arg&gt;   (optional) System e-mail address [default: noreply@openmeetings.apache.org]</span><br />
+<span style="margin-left: 100px;">--password &lt;arg&gt;               (optional) Password of the default user, minimum 4 characters (will be prompted if not set)</span><br />
+<span style="margin-left: 100px;">--email-use-tls                (optional) Is secure e-mail connection [default: no]</span><br />
+<span style="margin-left: 100px;">--email-auth-user &lt;arg&gt;        (optional) Email auth username (anonymous connection will be used if not set)</span><br />
+<span style="margin-left: 100px;">--db-port &lt;arg&gt;                (optional) Database port</span><br />
+<span style="margin-left: 100px;">--smtp-port &lt;arg&gt;              (optional) SMTP server for outgoing e-mails [default: 25]</span><br />
+<span style="margin-left: 100px;">--db-name &lt;arg&gt;                (optional) The name of Openmeetings database</span><br />
+<span style="margin-left: 100px;">--disable-frontend-register    (optional) Do not allow front end register [allowed by default]</span><br />
+<span style="margin-left: 100px;">--db-type &lt;arg&gt;                (optional) The type of the DB to be used</span><br />
+<span style="margin-left: 100px;">--skip-default-rooms           (optional) Do not create default rooms [created by default]</span><br />
+<span style="margin-left: 100px;">--force                        (optional) Install without checking the existence of old data in the database.</span><br />
+<span style="margin-left: 100px;">--smtp-server &lt;arg&gt;            (optional) SMTP server for outgoing e-mails [default: localhost]</span><br />
+<span style="margin-left: 100px;">--db-pass &lt;arg&gt;                (optional) Password of the user with write access to the DB specified</span><br />
+--------------------------------------------------------------------------------------------------<br />
+ -f,--files                          File operations - statictics/cleanup<br />
+<span style="margin-left: 100px;">--cleanup                      (optional) Should intermediate files be clean up</span><br />
+--------------------------------------------------------------------------------------------------<br />
+				</div>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ConferenceRoomLayoutOptions.html b/docs/ConferenceRoomLayoutOptions.html
new file mode 100644
index 0000000..50d531d
--- /dev/null
+++ b/docs/ConferenceRoomLayoutOptions.html
@@ -0,0 +1,483 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+            OpenMeetings Team
+        ">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Layout options for a conference room in OpenMeetings</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Layout options for conference rooms"><strong>Layout options for conference rooms</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Each room has a number of attributes to generate different layouts.
+            You can change those values individually for each room in Administration &gt; Rooms
+            </p>
+                                                <p />
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         key 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         default 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         meaning 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         availabe since OpenMeetings version 
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideTopBar 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the top bar with the menus and exit button 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideChat 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the chat tab and use space for whiteboard 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideActivitiesAndActions 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the activities window with the notofications aber user activities
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideFilesExplorer 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the file explorer
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideActionsMenu 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the menu with the actions
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideScreenSharing 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the button to start screensharing/recording
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         hideWhiteboard 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Hide the whiteboard, if this option is true, the videos will be in the area of the whiteboard
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         showMicrophoneStatus 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         false 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Show the current status of the microphone (off/on) on the bottom of each video view
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.x 
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ConfluencePlugin.html b/docs/ConfluencePlugin.html
new file mode 100644
index 0000000..870e2df
--- /dev/null
+++ b/docs/ConfluencePlugin.html
@@ -0,0 +1,399 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="eschwert@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Confluence Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Confluence Plugin for OpenMeetings"><strong>Confluence Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>				
+				Current Development Snapshots for testing can be downloaded from:
+				<a href="https://svn.apache.org/repos/asf/openmeetings/branches/confluence-plugin/target/openmeetingsconfluence-1.0-SNAPSHOT.jar">here</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Create videoconference rooms through Confluence: </li>
+				<li>
+					<ol>
+						<li>Integrated with Confluence content </li>										
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Demo video"><strong>Demo video</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The demo video of Confluence plugin show you the plugin in action </p>
+                                                <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/YFKlXggtld0?version=3&amp;feature=player_detailpage" />
+			      <param name="allowFullScreen" value="true" />
+			      <param name="allowScriptAccess" value="always" />
+			      <embed src="http://www.youtube.com/v/YFKlXggtld0?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360" />
+		      </object>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/CustomCryptMechanism.html b/docs/CustomCryptMechanism.html
new file mode 100644
index 0000000..65bcaed
--- /dev/null
+++ b/docs/CustomCryptMechanism.html
@@ -0,0 +1,436 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Howto create a Custom Crypt styles</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuration of Custom Crypt-Style"><strong>Configuration of Custom Crypt-Style</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can use custom Crypt-Types, but you should decide during
+				installation which Type of encryption you want to use. By default
+				two type are available:
+			</p>
+                                                <ul>
+				<li>org.xmlcrm.utils.crypt.MD5Implementation - this uses common MD5
+					Crypt like PHP does, this is the default one (results in something
+					like: fe01ce2a7fbac8fafaed7c982a04e229)</li>
+				<li>org.xmlcrm.utils.crypt.MD5CryptImplementation - does use
+					BSD-Style of encryption using a salt (results in something like:
+					$1$GMsj7F2I$5S3r9CeukXGXNwf6b4sph1)</li>
+			</ul>
+                                                <p>
+				You can edit the config-key during Installation or later in the
+				Administration Panel. But if you change it using the
+				Administration-Panel previous passwords might be not working anymore
+				as they are encrypted with another algorithm.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuration of Custom Crypt-Style"><strong>Configuration of Custom Crypt-Style</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				To add your own crypt style you need to write a class which
+				implements the interface: org.xmlcrm.utils.cryptCryptString
+				<br />
+				and extends the Adapter: org.xmlcrm.utils.CryptStringAdapter
+				<br />
+				Example of an Implementation:
+			</p>
+                                                <div class="xmlcode">
+				package org.xmlcrm.utils.crypt;
+				
+				import java.security.NoSuchAlgorithmException;
+				
+				public class MD5Implementation extends CryptStringAdapter implements CryptString {
+				
+				        @Override
+				        public String createPassPhrase(String userGivenPass) {
+				                String passPhrase = null;
+				                try {
+				                        passPhrase = MD5.do_checksum(userGivenPass);
+				                } catch (NoSuchAlgorithmException e) {
+				                        e.printStackTrace();
+				                }
+				                return passPhrase;
+				        }
+				
+				        @Override
+				        public Boolean verifyPassword(String passGiven, String passwdFromDb) {
+				                return (passwdFromDb.equals(createPassPhrase(passGiven)));
+				        }
+				        
+				}
+			</div>
+                                                <p>To add your own Encryption-Class you need to add your class to the
+				OpenMeetings-Webapp (make it available to the webapp-classpath) and
+				use your custom-class-name instead of
+				org.xmlcrm.utils.crypt.MD5Implementation during the Installation or
+				at runtime by editing the config-key crypt_ClassName</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuration of Custom Crypt-Style"><strong>Configuration of Custom Crypt-Style</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>credits goto Mika for sharing his Implementation of the
+				MD5Crypt-Style</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/CustomRoomTypeHowTo.html b/docs/CustomRoomTypeHowTo.html
new file mode 100644
index 0000000..1dc04b6
--- /dev/null
+++ b/docs/CustomRoomTypeHowTo.html
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+            OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Howto create a custom room type in OpenMeetings</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Why creating a custom room type in OpenMeetings"><strong>Why creating a custom room type in OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you want to create your own styled room the best thing to do in 
+            order to be "update-save" is to create your own custom room type. There is an empty configuration 
+				by default shipped with every release of OpenMeetings, the room type "custom" (ID = 5).<br />
+				<br />
+            You can use that and extend it, or you can add more room types to fit your use case.
+			</p>
+                                                <p />
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Create your own room type class (User Interface)"><strong>Create your own room type class (User Interface)</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Lets start by creating your custom room type class.
+				<br />
+					You could for example duplicate an existing room class, from <br />
+					<tt>src/modules/conference/flexibleConferenceRoom</tt> folder, for example the 
+			flexibleConferenceRoom.lzx: Generate a duplicate, change the name, for example to 
+			myCustomConferenceRoom.lzx and edit the class name inside the file name="flexibleConferenceRoom" to
+			name="myCustomConferenceRoom". Also don't miss to add an entry to library.lzx so that the compiler 
+			will find your new class.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Create nesseccary entries in configuration tables"><strong>Create nesseccary entries in configuration tables</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You first need to create a number of configuration files </p>
+                                                <ul>
+				<li>To have your roomtype available everytime you install OpenMeetings you need to add 
+					it to the default rooms: <tt>ImportInitvalues.java Method: loadDefaultRooms()</tt>. Add your entry here. 
+				You can choose any random name for the room. The ID is the important trigger for the room type 
+				to identify later. You need to run the installer so that your new room type is in the database.</li>
+				
+				<li>Add your room type in the default module configuration: 
+					<tt>src/base/moduleConfiguration.lzx</tt>, 
+				here you need to add a default class name for your room type </li>
+				
+				<li>Add your room type in the real configuration: public/config.xml, add a new entry.
+					<br />
+					You should fix also the file <tt>public/config.xsd</tt> that is the Schema file for the public/config.xml.
+				</li>
+        		
+				<li>Add a parser entry to modify the room type mapping: 
+					<tt>base/mainMethods.lzx method: myinit</tt>. You 
+        		can see some example parsing, you should add your one similar to the existing room types.</li>
+        		
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Link your room type config with your room type class "><strong>Link your room type config with your room type class </strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Now you need to make sure that everytime the conference room is created 
+			your new class "myCustomConferenceRoom" is used. There are 3 places you need to add your mapping.</p>
+                                                <ul>
+				<li>In the global mapping: 
+					<tt>base/mainMethods.lzx method name="setRoomValues"</tt> 
+				</li>
+				<li>In file: 
+					<tt>modules/conference/conference/roomListItem.lzx method name="initRoom"</tt> 
+				</li>
+				<li>In file: 
+					<tt>modules/invitation/autoloaderBarOnly.lzx netRemoteCallHib name="setUsernameAndSession"</tt> 
+				</li>
+			</ul>
+                                                <p>Thats it. You can add/edit/delete your room with the new room type in the Administration &gt; Rooms interface of 
+			OpenMeetings like any other room.</p>
+                                                <p>If you need to have this room type available as option in the Calendar UI, you need to add it to the combobox manually.</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Dashboard.html b/docs/Dashboard.html
new file mode 100644
index 0000000..249cb2c
--- /dev/null
+++ b/docs/Dashboard.html
@@ -0,0 +1,438 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Changing Dashboard</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing Dashboard"><strong>Changing Dashboard</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You can configure the tabs that are visible by default at bottom
+				of the dashboard. To edit the settings, login as admin and goto
+				Administration &gt; Configuration </p>
+                                                <p />
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Config-key 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Values 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Meaning 
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         default.dashboard.tab 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0,1,2 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Which tab should be shown by default, counting
+						starts with 0
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         dashboard.show.myrooms 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 or 1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         If the MyRooms tab should be visible or not 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         dashboard.show.chat 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 or 1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         If the Chat tab should be visible or not 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         dashboard.show.rssfeed 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 or 1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         If the RSS-Feed tab should be visible or not 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         rss_feed1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         http-URL 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         ATOM-Feed URL for the dashboard RSS Tab 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         rss_feed2 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         http-URL 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         ATOM-Feed URL for the dashboard RSS Tab 
+    </td>
+            </tr>
+            </table>
+                                                <p />
+                                                <p>Changes are immediately online, no need to restart anything. </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/DrupalPlugin.html b/docs/DrupalPlugin.html
new file mode 100644
index 0000000..3958d26
--- /dev/null
+++ b/docs/DrupalPlugin.html
@@ -0,0 +1,410 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Drupal Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Drupal Plugin for OpenMeetings"><strong>Drupal Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Plugin for Drupal currently is not open source. 
+				Please contact <a href="commercial-support.html" target="_BLANK" rel="nofollow">Commercial Support</a> to get it. 
+				<br />
+				A demo version+video of the Drupal plugin is available at
+				<a href="http://drupal.openmeetings.de/" target="_BLANK" rel="nofollow">drupal.openmeetings.de</a>.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Installation of the Drupal Plugin for Apache OpenMeetings"><strong>Installation of the Drupal Plugin for Apache OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You simply download the ZIP or TAR package and unzip it to Drupal "mod" directory.
+				<br />
+				For a detailed description on how to install plugins in Drupal please review their 
+				<a href="http://drupal.org/documentation/install/modules-themes" target="_BLANK" rel="nofollow">handbook</a>.
+				<br />
+				Then you visit the module interface of Drupal, where you will find the new module.
+				You should switch it to "enabled" to get the "Configure" and "Permissions" buttons.
+			</p>
+                                                <a class="fancybox-buttons" href="images/drupal_module_installation.png">
+				<img src="images/drupal_module_installation.png" alt="" width="600" height="150" />
+			</a>
+                                                <p>
+				In the configuration you enter the auth data to access your Apache OpenMeetings server:
+			</p>
+                                                <a class="fancybox-buttons" href="images/drupal_module_configuration.png">
+				<img src="images/drupal_module_configuration.png" alt="" width="600" height="340" />
+			</a>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Adding a new conference room to Drupal"><strong>Adding a new conference room to Drupal</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				After installation of the plugin you can go to the front page in Drupal and add a new content item 
+				"OpenMeetings Rooms" =&gt; "Add New Room". You may find following configuration values for each 
+				conference room:
+			</p>
+                                                <a class="fancybox-buttons" href="images/drupal_room_configuration.png">
+				<img src="images/drupal_room_configuration.png" alt="" width="600" height="400" />
+			</a>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/EditTemplates.html b/docs/EditTemplates.html
new file mode 100644
index 0000000..ca572e0
--- /dev/null
+++ b/docs/EditTemplates.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Edit Templates</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing Labels and text strings"><strong>Changing Labels and text strings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				All language string should be localized and stored in the language
+				section. You have a full featured language editor with every
+				installation of OpenMeetings, check out the
+				<a href="LanguageEditor.html">LanguageEditor</a>
+				.
+			</p>
+                                                <p>
+				To lookup the labelids in the GUI you can simply run OpenMeetings
+				client with the debug enabled. That way every text-string has the
+				labelid in brackets additionally in the textfield. To start the
+				client in debug mode just add the param ?swf=maindebug.swf8.swf to
+				the URL. Example:
+				<a href="http://localhost:5080/openmeetings/?swf=maindebug.swf8.swf" rel="nofollow">http://localhost:5080/openmeetings/?swf=maindebug.swf8.swf</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing layout, adding footers in emails"><strong>Changing layout, adding footers in emails</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you would like to change the standard email layout or add for
+				example some footer in every email you have to change the email
+				templates.
+			</p>
+                                                <p>To do that: Stop the Red5/OpenMeetings-Service Goto:
+				$Red5_HOME/webapps/openmeetings/WEB-INF/lib/openmeetings-templates.jar
+				Unzip: openmeetings-templates.jar (this is a usual ZIP file, you can
+				rename it to openmeetings-templates.zip unzip, edit the files, zip
+				it again and rename it to openmeetings-templates.jar)
+			</p>
+                                                <p>
+				In openmeetings-templates.jar there are all template files. They
+				have the file extension .vm (VM stands for velocity-template). After
+				you have done your changes you need to (re)start the
+				Red5/OpenMeetings
+				-Service so that changes are online.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ErrorsTable.html b/docs/ErrorsTable.html
new file mode 100644
index 0000000..83d08b1
--- /dev/null
+++ b/docs/ErrorsTable.html
@@ -0,0 +1,978 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="Apache OpenMeetings Documentation Robot">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Openmeetings Errors table</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Openmeetings Errors table"><strong>Openmeetings Errors table</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Code
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Type
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Description
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -1
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Unknown error. Please report this to the administrator.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -2
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Please enter either an email address or a user name
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -3
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        There is no user connected to this username
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -4
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The email containing a special link has been sent to your email address
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -5
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No user found
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -6
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The passwords you entered weren't identical
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -7
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Password and or username too short, required minimum length for user name / password are:
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -8
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Password set. You can now login.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -9
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No such email address was found. Make sure you entered the same email address you used to create your account.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -10
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Username not found
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -11
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Invalid password
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -12
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Successfully logged out
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -13
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Password and or login is too short
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -14
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Registration disabled
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -15
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The username is already used
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -16
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        System error please contact the administrator
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -17
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The mail address is already registered
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -18
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Your account has been created. You can now login.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -19
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Invalid email address
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -20
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Duplicate file name, please enter another
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -21
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        File name too short
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -22
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Could not save the address
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -23
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        User added but you need to assign this user to an usergroup, otherwise they won't be able to log in
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -24
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No field found for the ID
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -25
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No label found
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -26
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Admin authorization required
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -27
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Invalid label ID
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -28
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You have deleted the label
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -29
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Invalid label ID
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -30
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This room is full
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -31
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No invitation available for this invitation code
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -32
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This invitation was already used
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -33
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The invitation code is invalid
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -34
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Invalid password
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -35
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This user is already a member of this usergroup
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -36
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This method needs an adminstration account to be invoked
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -37
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        There was no session associated with this ID
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -38
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You cannot delete your own user
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -39
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This is an administrator or moderator account. You can only edit this account through the administration panel.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -40
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Message
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You have successfully signed up. An email with a verification code will be sent to your mailbox.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -41
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Your account is not activated. Please use the link in the email you received during registration.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -42
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This session hash has already been used
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -43
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You have to enter your password again to auto create the SIP data
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -44
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This email is already used by another user.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -45
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This user is already in your contact list or has received an invitation to your contact list that is not answered yet.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -46
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The user is already denied.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -47
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        The user is already approved.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -48
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        This user contact hash is invalid.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -49
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        There is no such contact.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -50
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You invitation code is not valid, the code is only valid during this specific date and time:
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -51
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Please enter a password
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -52
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You need an account with user level user, moderator or admin
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -53
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Please enter email
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -54
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -55
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Please specify your timezone
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        -56
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Error
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Configuration with given key already exists, please specify another key or edit existent configuration
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/FFMPEGVersionSwitch.html b/docs/FFMPEGVersionSwitch.html
new file mode 100644
index 0000000..f65f039
--- /dev/null
+++ b/docs/FFMPEGVersionSwitch.html
@@ -0,0 +1,389 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Howto switch between different versions of FFMPEG </title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Default Configuration"><strong>Default Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>FFMPEG has a change in its API (possibly since GIT revision
+				88bfe4518)
+			</p>
+                                                <p>Since Version 1.9.x of OpenMeetings: By default OpenMeetings
+				expects you to have a new version of FFMPEG on your OpenMeetings
+				server installed and it will use the new API style to communicate
+				with FFMPEG.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Switching to old FFMPEG API"><strong>Switching to old FFMPEG API</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				If you want to switch to the old style you can change that using the
+				config key:
+				<tt>use.old.style.ffmpeg.map.option</tt>
+			</p>
+                                                <p>
+				Set this value to
+				<tt>1</tt>
+				to have the old params in the API call to FFMPEG.
+			</p>
+                                                <p>References:  </p>
+                                                <ul>
+				<li>
+					<a href="http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html" rel="nofollow">http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html
+					</a>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/FileService.html b/docs/FileService.html
new file mode 100644
index 0000000..afdfd5d
--- /dev/null
+++ b/docs/FileService.html
@@ -0,0 +1,1559 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: FileService</h3>
+	   <p>Contains methods to import and upload files into the Files section of the
+ conference room and the personal drive of any user<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/FileService?wsdl">http://localhost:5080/openmeetings/services/FileService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in FileService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#importFile"><b>importFile</b></a><br/>
+                <div class="navigation_comment"><i >Import file from external source
+ 
+ to upload a file to a room-drive you specify: externalUserId, user if of
+ openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 0 parentFolderId = 0
+ 
+ to upload a file to a private-drive you specify: externalUserId, user if
+ of openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 1 parentFolderId = -2</i></div>
+                </div>
+                                               <div>
+                <a href="#importFileByInternalUserId"><b>importFileByInternalUserId</b></a><br/>
+                <div class="navigation_comment"><i >Import file from external source
+ 
+ to upload a file to a room-drive you specify: internalUserId, user if of
+ openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 0 parentFolderId = 0
+ 
+ to upload a file to a private-drive you specify: internalUserId, user if
+ of openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 1 parentFolderId = -2</i></div>
+                </div>
+                                               <div>
+                <a href="#addFolderByExternalUserIdAndType"><b>addFolderByExternalUserIdAndType</b></a><br/>
+                <div class="navigation_comment"><i >to add a folder to the private drive, set parentFileExplorerItemId = 0
+ and isOwner to 1/true and externalUserId/externalUserType to a valid user</i></div>
+                </div>
+                                               <div>
+                <a href="#addFolderByUserId"><b>addFolderByUserId</b></a><br/>
+                <div class="navigation_comment"><i >to add a folder to the private drive, set parentFileExplorerItemId = 0
+ and isOwner to 1/true and userId to a valid user</i></div>
+                </div>
+                                               <div>
+                <a href="#addFolderSelf"><b>addFolderSelf</b></a><br/>
+                <div class="navigation_comment"><i >Add a folder by the current user - similar to RTMP Call</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteFileOrFolderByExternalIdAndType"><b>deleteFileOrFolderByExternalIdAndType</b></a><br/>
+                <div class="navigation_comment"><i >deletes a file by its external Id and type</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteFileOrFolder"><b>deleteFileOrFolder</b></a><br/>
+                <div class="navigation_comment"><i >deletes files or folders based on it id</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteFileOrFolderSelf"><b>deleteFileOrFolderSelf</b></a><br/>
+                <div class="navigation_comment"><i >deletes files or folders based on it id</i></div>
+                </div>
+                                               <div>
+                <a href="#getImportFileExtensions"><b>getImportFileExtensions</b></a><br/>
+                <div class="navigation_comment"><i >Get available import File Extension allowed during import</i></div>
+                </div>
+                                               <div>
+                <a href="#getPresentationPreviewFileExplorer"><b>getPresentationPreviewFileExplorer</b></a><br/>
+                <div class="navigation_comment"><i >Get a LibraryPresentation-Object for a certain file</i></div>
+                </div>
+                                               <div>
+                <a href="#getFileExplorerByRoom"><b>getFileExplorerByRoom</b></a><br/>
+                <div class="navigation_comment"><i >Get a File Explorer Object by a given Room and owner id</i></div>
+                </div>
+                                               <div>
+                <a href="#getFileExplorerByRoomSelf"><b>getFileExplorerByRoomSelf</b></a><br/>
+                <div class="navigation_comment"><i >Get a File Explorer Object by a given Room</i></div>
+                </div>
+                                               <div>
+                <a href="#getFileExplorerByParent"><b>getFileExplorerByParent</b></a><br/>
+                <div class="navigation_comment"><i >Get FileExplorerItem list by parent folder</i></div>
+                </div>
+                                               <div>
+                <a href="#getFileExplorerByParentSelf"><b>getFileExplorerByParentSelf</b></a><br/>
+                <div class="navigation_comment"><i >Get FileExplorerItem[] by parent and owner id</i></div>
+                </div>
+                                               <div>
+                <a href="#updateFileOrFolderName"><b>updateFileOrFolderName</b></a><br/>
+                <div class="navigation_comment"><i >update a file or folder name</i></div>
+                </div>
+                                               <div>
+                <a href="#updateFileOrFolderNameSelf"><b>updateFileOrFolderNameSelf</b></a><br/>
+                <div class="navigation_comment"><i >update a file or folder name</i></div>
+                </div>
+                                               <div>
+                <a href="#moveFile"><b>moveFile</b></a><br/>
+                <div class="navigation_comment"><i >move a file or folder</i></div>
+                </div>
+                                               <div>
+                <a href="#moveFileSelf"><b>moveFileSelf</b></a><br/>
+                <div class="navigation_comment"><i >move a file or folder</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in FileService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="importFile" ><b>importFile</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>importFile (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   Long externalFileId
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   boolean isOwner
+    			       			    			       			     , 
+    			       			   String path
+    			       			    			       			     , 
+    			       			   Long parentFolderId
+    			       			    			       			     , 
+    			       			   String fileSystemName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Import file from external source
+ 
+ to upload a file to a room-drive you specify: externalUserId, user if of
+ openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 0 parentFolderId = 0
+ 
+ to upload a file to a private-drive you specify: externalUserId, user if
+ of openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 1 parentFolderId = -2
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.util.process.FileImportError[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The logged in session id with minimum webservice level</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">the external user id =&gt; If the file should goto a private
+            section of any user, this number needs to be set</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalFileId</td>
+	                     <td valign="top">the external file-type to identify the file later</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">the name of the external system</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room Id, if the file goes to the private folder of an
+            user, you can set a random number here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">specify a 1/true AND parentFolderId==-2 to make the file goto
+            the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">path</td>
+	                     <td valign="top">http-path where we can grab the file from, the file has to be
+            accessible from the OpenMeetings server</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFolderId</td>
+	                     <td valign="top">specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+            the file goto the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fileSystemName</td>
+	                     <td valign="top">the filename =&gt; Important WITH file extension!</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/importFile?SID=VALUE&externalUserId=VALUE&externalFileId=VALUE&externalType=VALUE&room_id=VALUE&isOwner=VALUE&path=VALUE&parentFolderId=VALUE&fileSystemName=VALUE">http://localhost:5080/openmeetings/services/FileService/importFile?SID=VALUE&amp;externalUserId=VALUE&amp;externalFileId=VALUE&amp;externalType=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;path=VALUE&amp;parentFolderId=VALUE&amp;fileSystemName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="importFileByInternalUserId" ><b>importFileByInternalUserId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>importFileByInternalUserId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long internalUserId
+    			       			    			       			     , 
+    			       			   Long externalFileId
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   boolean isOwner
+    			       			    			       			     , 
+    			       			   String path
+    			       			    			       			     , 
+    			       			   Long parentFolderId
+    			       			    			       			     , 
+    			       			   String fileSystemName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Import file from external source
+ 
+ to upload a file to a room-drive you specify: internalUserId, user if of
+ openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 0 parentFolderId = 0
+ 
+ to upload a file to a private-drive you specify: internalUserId, user if
+ of openmeetings user for which we upload the file room_id = openmeetings
+ room id isOwner = 1 parentFolderId = -2
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.util.process.FileImportError[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">internalUserId</td>
+	                     <td valign="top">the openmeetings user id =&gt; If the file should goto a private
+            section of any user, this number needs to be se</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalFileId</td>
+	                     <td valign="top">the external file-type to identify the file later</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">the name of the external system</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room Id, if the file goes to the private folder of an
+            user, you can set a random number here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">specify a 1/true AND parentFolderId==-2 to make the file goto
+            the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">path</td>
+	                     <td valign="top">http-path where we can grab the file from, the file has to be
+            accessible from the OpenMeetings server</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFolderId</td>
+	                     <td valign="top">specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+            the file goto the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fileSystemName</td>
+	                     <td valign="top">the filename =&gt; Important WITH file extension!</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/importFileByInternalUserId?SID=VALUE&internalUserId=VALUE&externalFileId=VALUE&externalType=VALUE&room_id=VALUE&isOwner=VALUE&path=VALUE&parentFolderId=VALUE&fileSystemName=VALUE">http://localhost:5080/openmeetings/services/FileService/importFileByInternalUserId?SID=VALUE&amp;internalUserId=VALUE&amp;externalFileId=VALUE&amp;externalType=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;path=VALUE&amp;parentFolderId=VALUE&amp;fileSystemName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addFolderByExternalUserIdAndType" ><b>addFolderByExternalUserIdAndType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addFolderByExternalUserIdAndType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   Long parentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   String folderName
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			       			     , 
+    			       			   Long externalFilesid
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  to add a folder to the private drive, set parentFileExplorerItemId = 0
+ and isOwner to 1/true and externalUserId/externalUserType to a valid user
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">the external file-type to identify the file later</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFileExplorerItemId</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">folderName</td>
+	                     <td valign="top">the name of the folder</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room Id, if the file goes to the private folder of an
+            user, you can set a random number here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">specify a 1/true AND parentFolderId==-2 to make the file goto
+            the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalFilesid</td>
+	                     <td valign="top">the external file-type to identify the file later</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">the name of the external system</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/addFolderByExternalUserIdAndType?SID=VALUE&externalUserId=VALUE&parentFileExplorerItemId=VALUE&folderName=VALUE&room_id=VALUE&isOwner=VALUE&externalFilesid=VALUE&externalType=VALUE">http://localhost:5080/openmeetings/services/FileService/addFolderByExternalUserIdAndType?SID=VALUE&amp;externalUserId=VALUE&amp;parentFileExplorerItemId=VALUE&amp;folderName=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;externalFilesid=VALUE&amp;externalType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addFolderByUserId" ><b>addFolderByUserId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addFolderByUserId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long userId
+    			       			    			       			     , 
+    			       			   Long parentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   String folderName
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			       			     , 
+    			       			   Long externalFilesid
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  to add a folder to the private drive, set parentFileExplorerItemId = 0
+ and isOwner to 1/true and userId to a valid user
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">userId</td>
+	                     <td valign="top">the openmeetings user id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFileExplorerItemId</td>
+	                     <td valign="top">specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">folderName</td>
+	                     <td valign="top">the name of the folder</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room Id, if the file goes to the private folder of an user, you can set a random number here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">specify a 1/true AND parentFolderId==-2 to make the file goto the private section</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalFilesid</td>
+	                     <td valign="top">the external file-type to identify the file later</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">the name of the external system</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/addFolderByUserId?SID=VALUE&userId=VALUE&parentFileExplorerItemId=VALUE&folderName=VALUE&room_id=VALUE&isOwner=VALUE&externalFilesid=VALUE&externalType=VALUE">http://localhost:5080/openmeetings/services/FileService/addFolderByUserId?SID=VALUE&amp;userId=VALUE&amp;parentFileExplorerItemId=VALUE&amp;folderName=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;externalFilesid=VALUE&amp;externalType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addFolderSelf" ><b>addFolderSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addFolderSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long parentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   String fileName
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a folder by the current user - similar to RTMP Call
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFileExplorerItemId</td>
+	                     <td valign="top">parent folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fileName</td>
+	                     <td valign="top">the file name</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/addFolderSelf?SID=VALUE&parentFileExplorerItemId=VALUE&fileName=VALUE&room_id=VALUE&isOwner=VALUE">http://localhost:5080/openmeetings/services/FileService/addFolderSelf?SID=VALUE&amp;parentFileExplorerItemId=VALUE&amp;fileName=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteFileOrFolderByExternalIdAndType" ><b>deleteFileOrFolderByExternalIdAndType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteFileOrFolderByExternalIdAndType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long externalFilesid
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  deletes a file by its external Id and type
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalFilesid</td>
+	                     <td valign="top">the od of the file or folder</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">the externalType</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolderByExternalIdAndType?SID=VALUE&externalFilesid=VALUE&externalType=VALUE">http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolderByExternalIdAndType?SID=VALUE&amp;externalFilesid=VALUE&amp;externalType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteFileOrFolder" ><b>deleteFileOrFolder</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteFileOrFolder (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  deletes files or folders based on it id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">the id of the file or folder</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolder?SID=VALUE&fileExplorerItemId=VALUE">http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolder?SID=VALUE&amp;fileExplorerItemId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteFileOrFolderSelf" ><b>deleteFileOrFolderSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteFileOrFolderSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  deletes files or folders based on it id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">the id of the file or folder</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolderSelf?SID=VALUE&fileExplorerItemId=VALUE">http://localhost:5080/openmeetings/services/FileService/deleteFileOrFolderSelf?SID=VALUE&amp;fileExplorerItemId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getImportFileExtensions" ><b>getImportFileExtensions</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getImportFileExtensions (
+    			    			    			)
+    			</i><br/>
+    			<p>
+    			  Get available import File Extension allowed during import
+    			</p>
+    			<p>
+                  Return Type: java.lang.String[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    			    				<i>No Params</i>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    							<a href="http://localhost:5080/openmeetings/services/FileService/getImportFileExtensions">http://localhost:5080/openmeetings/services/FileService/getImportFileExtensions</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getPresentationPreviewFileExplorer" ><b>getPresentationPreviewFileExplorer</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getPresentationPreviewFileExplorer (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String parentFolder
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get a LibraryPresentation-Object for a certain file
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.file.LibraryPresentation
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">parentFolder</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/getPresentationPreviewFileExplorer?SID=VALUE&parentFolder=VALUE">http://localhost:5080/openmeetings/services/FileService/getPresentationPreviewFileExplorer?SID=VALUE&amp;parentFolder=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFileExplorerByRoom" ><b>getFileExplorerByRoom</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFileExplorerByRoom (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Long owner_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get a File Explorer Object by a given Room and owner id
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.file.FileExplorerObject
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">Room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">owner_id</td>
+	                     <td valign="top">Owner id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/getFileExplorerByRoom?SID=VALUE&room_id=VALUE&owner_id=VALUE">http://localhost:5080/openmeetings/services/FileService/getFileExplorerByRoom?SID=VALUE&amp;room_id=VALUE&amp;owner_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFileExplorerByRoomSelf" ><b>getFileExplorerByRoomSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFileExplorerByRoomSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get a File Explorer Object by a given Room
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.file.FileExplorerObject
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">Room Id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/getFileExplorerByRoomSelf?SID=VALUE&room_id=VALUE">http://localhost:5080/openmeetings/services/FileService/getFileExplorerByRoomSelf?SID=VALUE&amp;room_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFileExplorerByParent" ><b>getFileExplorerByParent</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFileExplorerByParent (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long parentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			       			     , 
+    			       			   Long owner_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get FileExplorerItem list by parent folder
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.file.FileExplorerItem[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFileExplorerItemId</td>
+	                     <td valign="top">the parent folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">true if its a private drive</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">owner_id</td>
+	                     <td valign="top">the owner id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/getFileExplorerByParent?SID=VALUE&parentFileExplorerItemId=VALUE&room_id=VALUE&isOwner=VALUE&owner_id=VALUE">http://localhost:5080/openmeetings/services/FileService/getFileExplorerByParent?SID=VALUE&amp;parentFileExplorerItemId=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;owner_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFileExplorerByParentSelf" ><b>getFileExplorerByParentSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFileExplorerByParentSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long parentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get FileExplorerItem[] by parent and owner id
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.file.FileExplorerItem[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">SID The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">parentFileExplorerItemId</td>
+	                     <td valign="top">the parent folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">true to request private drive</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/getFileExplorerByParentSelf?SID=VALUE&parentFileExplorerItemId=VALUE&room_id=VALUE&isOwner=VALUE">http://localhost:5080/openmeetings/services/FileService/getFileExplorerByParentSelf?SID=VALUE&amp;parentFileExplorerItemId=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateFileOrFolderName" ><b>updateFileOrFolderName</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateFileOrFolderName (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			       			     , 
+    			       			   String fileName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  update a file or folder name
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">SID The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">file or folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fileName</td>
+	                     <td valign="top">new file or folder name</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/updateFileOrFolderName?SID=VALUE&fileExplorerItemId=VALUE&fileName=VALUE">http://localhost:5080/openmeetings/services/FileService/updateFileOrFolderName?SID=VALUE&amp;fileExplorerItemId=VALUE&amp;fileName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateFileOrFolderNameSelf" ><b>updateFileOrFolderNameSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateFileOrFolderNameSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			       			     , 
+    			       			   String fileName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  update a file or folder name
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">SID The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">file or folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fileName</td>
+	                     <td valign="top">new file or folder name</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/updateFileOrFolderNameSelf?SID=VALUE&fileExplorerItemId=VALUE&fileName=VALUE">http://localhost:5080/openmeetings/services/FileService/updateFileOrFolderNameSelf?SID=VALUE&amp;fileExplorerItemId=VALUE&amp;fileName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="moveFile" ><b>moveFile</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>moveFile (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long newParentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			       			     , 
+    			       			   Boolean moveToHome
+    			       			    			       			     , 
+    			       			   Long owner_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  move a file or folder
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">SID The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">current file or folder id to be moved</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">newParentFileExplorerItemId</td>
+	                     <td valign="top">new parent folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">if true owner id will be set</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">moveToHome</td>
+	                     <td valign="top">if true move to private drive</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">owner_id</td>
+	                     <td valign="top">owner id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/moveFile?SID=VALUE&fileExplorerItemId=VALUE&newParentFileExplorerItemId=VALUE&room_id=VALUE&isOwner=VALUE&moveToHome=VALUE&owner_id=VALUE">http://localhost:5080/openmeetings/services/FileService/moveFile?SID=VALUE&amp;fileExplorerItemId=VALUE&amp;newParentFileExplorerItemId=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;moveToHome=VALUE&amp;owner_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="moveFileSelf" ><b>moveFileSelf</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>moveFileSelf (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long fileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long newParentFileExplorerItemId
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isOwner
+    			       			    			       			     , 
+    			       			   Boolean moveToHome
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  move a file or folder
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">SID The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">fileExplorerItemId</td>
+	                     <td valign="top">current file or folder id to be moved</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">newParentFileExplorerItemId</td>
+	                     <td valign="top">new parent folder id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isOwner</td>
+	                     <td valign="top">if true owner id will be set</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">moveToHome</td>
+	                     <td valign="top">move to private drive</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/FileService/moveFileSelf?SID=VALUE&fileExplorerItemId=VALUE&newParentFileExplorerItemId=VALUE&room_id=VALUE&isOwner=VALUE&moveToHome=VALUE">http://localhost:5080/openmeetings/services/FileService/moveFileSelf?SID=VALUE&amp;fileExplorerItemId=VALUE&amp;newParentFileExplorerItemId=VALUE&amp;room_id=VALUE&amp;isOwner=VALUE&amp;moveToHome=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/GeneralConfiguration.html b/docs/GeneralConfiguration.html
new file mode 100644
index 0000000..1b6401a
--- /dev/null
+++ b/docs/GeneralConfiguration.html
@@ -0,0 +1,672 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - List of general configuration options</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="List of general configuration options"><strong>List of general configuration options</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <style><!--
+				.configCell {
+					border: 1px solid rgb(204, 204, 204);
+					padding: 5px;
+				}
+			--></style>
+                                                <p>In Administration &gt; Configuration there are a number of
+				configuration values.
+			</p>
+                                                <p />
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         key 
+    </th>
+                                <th bgcolor="#039acc" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         default 
+    </th>
+                                <th bgcolor="#039acc" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         meaning 
+    </th>
+                                <th bgcolor="#039acc" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         availabe since OpenMeetings version 
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         user.login.minimum.length 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         4 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         minimum chars required for the login to create a user 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.9.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         user.pass.minimum.length 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         4 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         minimum chars required for the password to create a
+						user
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.9.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         number.minutes.reminder.send 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         15 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         minutes the one-time reminder in the calender is
+						send, set to 0 to disable reminder
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.9.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         max_upload_size 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1073741824 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Maximum size of upload file (bytes) 1073741824 bytes
+						= 1GB
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.8.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         show.whiteboard.draw.status 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Display name of the user who draw the current object
+						(User Name auto-disapper after 3 seconds.
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.8.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         use.old.style.ffmpeg.map.option 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         If the system should "." (old ffmpeg) instead of ":"
+						(new ffmpeg) for the -map option in FFMPEG
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.9.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         inviter.email.as.replyto 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)	
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         office.path 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically	
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         default.landing.zone 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         user/dashboard 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Area to be shown to the user after login. Possible values are: user/dashboard, user/calendar, user/record, rooms/my, rooms/group, rooms/public, admin/user, admin/connection
+						, admin/group, admin/room, admin/config, admin/lang, admin/ldap, admin/backup, admin/server, admin/oauth2 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.1.x, <b> values are changed in 3.0.0</b> 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sms.provider 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+          
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         SMS service provider (bulksms.http.1) 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.1.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sms.Username 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+          
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Login for SMS service provider 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.1.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sms.Userpass 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+          
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Password for SMS service provider 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.1.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sms.subject 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+          
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Subject of SMS reminder message 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.1.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         swftools_zoom 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         100 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         DPI for conversion of PDF to SWF (should be an integer between 50 and  600 with a default value of 100 DPI) 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         swftools_jpegquality 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         85 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Compression quality for conversion of PDF to SWF (should be an integer between 1 and 100, with a default value of 85) 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sendEmailAtRegister 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         User get a EMail with their Account data. Values: 0(No) or 1(Yes) 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         sendEmailWithVerficationCode 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         0 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         User must activate their account by clicking on the 
+								activation-link in the registering Email. Values: 0(No) or 1(Yes) 
+								It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while 
+								sendEmailAtRegister is 0(No) cause you need
+								to send a EMail. 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.0.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         redirect.url.for.external.users 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+          
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         2.2.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         allow_frontend_register 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         (configurable during install) 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Is user register available on login screen 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1.8.x 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         allow.soap.register 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Is user register available via SOAP/REST 
+    </td>
+                                <td bgcolor="#a0ddf0" class="configCell" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         3.0.x 
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/GetVersionInfo.html b/docs/GetVersionInfo.html
new file mode 100644
index 0000000..1f094bb
--- /dev/null
+++ b/docs/GetVersionInfo.html
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - How to check which Openmeetings version running</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to check which Openmeetings version running (3.0.0 - )"><strong>How to check which Openmeetings version running (3.0.0 - )</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Use Top Menu -&gt; About</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to check which Openmeetings version running (2.1.1 - )"><strong>How to check which Openmeetings version running (2.1.1 - )</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The version is printed into openmeetings.log file</p>
+                                                <p>
+				Run openmeetings<br />
+				Open OM_HOME/log/openmeetings.log
+			</p>
+                                                <p>You get something like this: </p>
+                                                <div class="xmlcode"><pre>
+	##################################################
+	#               Openmeetings is up               #
+	#       2.1.1-RELEASE 1490720 7-June-2013        #
+	#                and ready to use                #
+	##################################################
+			</pre></div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to check which Openmeetings version running (1.8.0 - 2.1.0)"><strong>How to check which Openmeetings version running (1.8.0 - 2.1.0)</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you need to know what version of OpenMeetings you are running,
+				you can check that by the file: openmeetings-*.jar
+			</p>
+                                                <p>
+				Unzip: /webapps/openmeetings/WEB-INF/lib/openmeetings-*.jar (jars are
+				zips)
+				<br />
+				<br />
+				In the resulting unzipped folder open the file to read:
+				/META-INF/MANIFEST.MF
+			</p>
+                                                <p>You get something like this: </p>
+                                                <div class="xmlcode">
+				Manifest-Version: 1.0
+				<br />
+				Ant-Version: Apache Ant 1.8.2
+				<br />
+				Created-By: 1.6.0_26-b03-383-11A511 (Apple Inc.)
+				<br />
+				Built-By: OpenMeetings - http://openmeetings.googlecode.com
+				<br />
+				Built-On: 23-October-2011
+				<br />
+				Svn-Revision: 4368
+				<br />
+			</div>
+                                                <p>This version info is available since version 1.8.0. If you have an
+				older version as version 1.8.0 then you might simply check the
+				language files and the labelid in there, the numbers of labels are
+				almost always unique in the versions. </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/HotKeys.html b/docs/HotKeys.html
new file mode 100644
index 0000000..0af766f
--- /dev/null
+++ b/docs/HotKeys.html
@@ -0,0 +1,411 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Hot Keys</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Keys table"><strong>Keys table</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Key
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Functionality
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Configurable
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Config Key
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        F12 (code 123)
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        A hot key code for the 'give exclusive audio' functionality.
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Yes
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        exclusive.audio.keycode
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        F8 (code 119)
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        If 1 or 2 video windows are present in the room they will be
+						"rearranged" to take all the place available
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        No
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        F7 (code 118)
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        A hot key code for the 'mute/unmute audio' functionality.
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Yes
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        mute.keycode
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/IBMDB2Config.html b/docs/IBMDB2Config.html
new file mode 100644
index 0000000..488f56e
--- /dev/null
+++ b/docs/IBMDB2Config.html
@@ -0,0 +1,440 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - IBM DB2 Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="IBM DB2 Configuration"><strong>IBM DB2 Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Before you start"><strong>Before you start</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <i>Tested with IBM DB2 Express-C 9.7.x</i>
+                                                <ul>
+					<li>
+						Get the IBM Data Server Driver for JDBC and SQLJ from IBM website:
+						<a href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs">https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs
+						</a>
+					</li>
+					<li>Copy JDBC driver db2jcc4.jar to
+						webapps/openmeetings/WEB-INF/lib/
+					</li>
+					<li>
+						Create database for OpenMeetings using a pagesize bigger or equal
+						8K, sample query:
+						<br />
+						<div class="xmlcode">
+							CREATE DATABASE openmeet AUTOMATIC STORAGE YES ON 'C:' DBPATH ON 'C:'
+							USING CODESET UTF-8 TERRITORY DE COLLATE USING System PAGESIZE 16
+							K
+						</div>
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again </li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Steps todo"><strong>Steps todo</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml connectionURL, username and
+						password with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="DB2 Sample Configuration"><strong>DB2 Sample Configuration</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					There is a sample configuration for IBM DB2 that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Internationalisation.html b/docs/Internationalisation.html
new file mode 100644
index 0000000..c48b6f5
--- /dev/null
+++ b/docs/Internationalisation.html
@@ -0,0 +1,404 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Upgrade</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Where to find language files"><strong>Where to find language files</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You can find all current language files here: </p>
+                                                <p>
+				<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/
+				</a>
+			</p>
+                                                <p>Just take one file and translate it to your language. </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Import and export of Language Files"><strong>Import and export of Language Files</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					Use the
+					<a href="LanguageEditor.html">LanguageEditor</a>
+					for translation
+				</li>
+				<li>
+					with the
+					<a href="LanguageEditor.html">LanguageEditor</a>
+					you can import and export Language Files
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to add it as installation option"><strong>How to add it as installation option</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Once you have finished the translation you can add a new node to:
+				<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/languages.xml" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/languages.xml
+				</a>
+			</p>
+                                                <p>the name of the language should match the name of the file. Once
+				this is done the Language file will automatically be imported during
+				installation and will be an option at login.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/JUnitTesting.html b/docs/JUnitTesting.html
new file mode 100644
index 0000000..de1cce7
--- /dev/null
+++ b/docs/JUnitTesting.html
@@ -0,0 +1,446 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - JUnit Testing</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Automatic tests are the significant part of development process.
+				Below is the instruction of how to run Openmeetings
+				<a href="http://junit.org" rel="nofollow">JUnit</a>
+				tests.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Details"><strong>Details</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ol>
+				<li>running tests using command line: </li>
+				<li>
+					<ul>
+						<li>all tests:
+							<div class="xmlcode">
+								ant test
+							</div>
+						</li>
+						<li>subset of tests by mask:
+							<div class="xmlcode">
+								ant -Dtestcases=TestError* test
+							</div>
+						</li>
+					</ul>
+				</li>
+				<li>running tests from Eclipse IDE: </li>
+				<li>
+					<ul>
+						<li>
+							<div class="xmlcode">
+								ant -Ddb=&lt;your_DB&gt; prepare-eclipse
+							</div>
+						</li>
+						<li>Start Eclipse </li>
+						<li>Load workspace with Openmeetings project (or refresh existing
+							project)
+						</li>
+						<li>Select "Debug Configurations..." </li>
+					</ul>
+				</li>
+			</ol>
+                                                <p>
+				<a class="fancybox-buttons" href="images/DebugConfigurations.png">
+					<img src="images/DebugConfigurations.png" alt="" width="367" height="262" />
+				</a>
+			</p>
+                                                <ul>
+				<li>Create New Junit configuration, give it a name and select test
+					class
+				</li>
+			</ul>
+                                                <p>
+				<a class="fancybox-buttons" href="images/NewConfiguration.png">
+					<img src="images/NewConfiguration.png" alt="" width="420" height="206" />
+				</a>
+			</p>
+                                                <ul>
+				<li>Select Arguments tab </li>
+				<li>Add the following code to the VM section
+					<div class="xmlcode">
+						-javaagent:${workspace_loc:Openmeetings}/build/lib/om/openjpa-bundle-2.2.2.jar
+						-Dom.home=${workspace_loc:Openmeetings}/src/main/webapp
+						-Dbackups.dir=${workspace_loc:Openmeetings}/build/lib/junit/backups
+					</div>
+				</li>
+				<li>To avoid temporary files being created in OM root, modify
+					"Working Directory" as follows
+					<div class="xmlcode">${workspace_loc:Openmeetings}/build/junit</div>
+				</li>
+			</ul>
+                                                <p>
+				<a class="fancybox-buttons" href="images/Arguments.png">
+					<img src="images/Arguments.png" alt="" width="435" height="410" />
+				</a>
+			</p>
+                                                <ul>
+				<li>Select Debug </li>
+
+			</ul>
+                                                <ul>
+				<li>Note: You need a file called "persistence.xml" in src/META-INF
+					if you run the JUnit test from inside Eclipse. Normally "ant
+					prepare-eclipse" should do that for you. </li>
+
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/JVMPerformanceTuning.html b/docs/JVMPerformanceTuning.html
new file mode 100644
index 0000000..80b3cee
--- /dev/null
+++ b/docs/JVMPerformanceTuning.html
@@ -0,0 +1,389 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Performance Tuning</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Performance Tuning"><strong>Performance Tuning</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>To use the optimum of performance from your server there is a
+				start-script for red5 available that does some basic settings in the
+				JVM. It is called red5-highperf.sh. It is recommended to use that
+				script for production and high-load scenarios.
+			</p>
+                                                <div class="xmlcode">
+				#!/bin/bash
+				<br />
+				<br />
+				if [ -z "$RED5_HOME" ]; then export RED5_HOME=.; fi
+				<br />
+				<br />
+				# Previous option set
+				<br />
+				export JAVA_OPTS="-Xrs -Xms512M -Xmx1024M -Xss128K -XX:NewSize=256m
+				-XX:SurvivorRatio=16 -XX:MinHeapFreeRatio=20
+				-XX:+ExplicitGCInvokesConcurrent -Djava.net.preferIPv4Stack=true
+				-Xverify:none"
+				<br />
+				<br />
+				# start Red5
+				<br />
+				echo "Setting Hi Performance Options"
+				<br />
+				exec $RED5_HOME/red5.sh &gt;&gt; $RED5_HOME/log/jvm.stdout 2&gt;&amp;1 &amp;
+				<br />
+			</div>
+                                                <p>You have to exclude the "-XX:+UseConcMarkSweepGC" param from the
+				default red5-highperf.sh to make it functional! However if you are a
+				performance expert you might also play with the values to find
+				perfect matches for your use-case.
+			</p>
+                                                <p>
+				For a complete overview about possible arguments and their meaning
+				see:
+				<a href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning" rel="nofollow">http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning
+				</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/JabberService.html b/docs/JabberService.html
new file mode 100644
index 0000000..cb3d9c9
--- /dev/null
+++ b/docs/JabberService.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: JabberService</h3>
+	   <p>This class provides method implementations necessary for OM to Jabber integration.<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/JabberService?wsdl">http://localhost:5080/openmeetings/services/JabberService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in JabberService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#getAvailableRooms"><b>getAvailableRooms</b></a><br/>
+                <div class="navigation_comment"><i >Get List&lt;RoomDTO&gt; of all rooms available to the user.
+ No admin rights are necessary for this call</i></div>
+                </div>
+                                               <div>
+                <a href="#getUserCount"><b>getUserCount</b></a><br/>
+                <div class="navigation_comment"><i >Returns the count of users currently in the Room with given id
+ No admin rights are necessary for this call</i></div>
+                </div>
+                                               <div>
+                <a href="#getInvitationHash"><b>getInvitationHash</b></a><br/>
+                <div class="navigation_comment"><i >Get invitation hash for the room with given id
+ No admin rights are necessary for this call</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in JabberService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getAvailableRooms" ><b>getAvailableRooms</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getAvailableRooms (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get List&lt;RoomDTO&gt; of all rooms available to the user.
+ No admin rights are necessary for this call
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.room.RoomDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from UserService.getSession</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/JabberService/getAvailableRooms?SID=VALUE">http://localhost:5080/openmeetings/services/JabberService/getAvailableRooms?SID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getUserCount" ><b>getUserCount</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getUserCount (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long roomId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns the count of users currently in the Room with given id
+ No admin rights are necessary for this call
+    			</p>
+    			<p>
+                  Return Type: int
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from UserService.getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomId</td>
+	                     <td valign="top">id of the room to get users</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/JabberService/getUserCount?SID=VALUE&roomId=VALUE">http://localhost:5080/openmeetings/services/JabberService/getUserCount?SID=VALUE&amp;roomId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getInvitationHash" ><b>getInvitationHash</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getInvitationHash (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get invitation hash for the room with given id
+ No admin rights are necessary for this call
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from UserService.getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">The name of invited user, will be displayed in the rooms user list</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">id of the room to get users</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/JabberService/getInvitationHash?SID=VALUE&username=VALUE&room_id=VALUE">http://localhost:5080/openmeetings/services/JabberService/getInvitationHash?SID=VALUE&amp;username=VALUE&amp;room_id=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/JiraPlugin.html b/docs/JiraPlugin.html
new file mode 100644
index 0000000..342ceba
--- /dev/null
+++ b/docs/JiraPlugin.html
@@ -0,0 +1,399 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="eschwert@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Jira Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Jira Plugin for OpenMeetings"><strong>Jira Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Current Development Snapshots for testing can be downloaded from:
+				<a href="https://svn.apache.org/repos/asf/openmeetings/branches/jira-plugin/target/openmeetings-1.0-SNAPSHOT.jar">here</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Create videoconference rooms through Jira: </li>
+				<li>
+					<ol>
+						<li>Integrated with Jira issues </li>										
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Demo video"><strong>Demo video</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The demo video of Jira plugin show you the plugin in action </p>
+                                                <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/xBdYj-OZvlc?version=3&amp;feature=player_detailpage" />
+			      <param name="allowFullScreen" value="true" />
+			      <param name="allowScriptAccess" value="always" />
+			      <embed src="http://www.youtube.com/v/xBdYj-OZvlc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360" />
+		      </object>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/JoomlaPlugin.html b/docs/JoomlaPlugin.html
new file mode 100644
index 0000000..8b2486c
--- /dev/null
+++ b/docs/JoomlaPlugin.html
@@ -0,0 +1,416 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Joomla Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Plugin for Joomla"><strong>OpenMeetings Plugin for Joomla</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Plugin for Joomla currently is not open source. 
+				Please contact <a href="commercial-support.html" target="_BLANK" rel="nofollow">Commercial Support</a> to get it. 
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Create videoconference rooms from Joomla: </li>
+				<li>
+					<ol>
+						<li>Create rooms</li>										
+						<li>Enter the room</li>
+					</ol>
+				</li>
+				<li>Access recordings from Joomla: </li>
+				<li>
+					<ol>
+						<li>Download recordings</li>										
+					</ol>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Demo video"><strong>Demo video</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<b>OpenMeetings Joomla Plugin Installation</b><br />              
+				<object style="height: 360px; width: 640px">
+					<param name="movie" value="http://www.youtube.com/v/jt8ejgtHavc?version=3&amp;feature=player_detailpage" />
+					<param name="allowFullScreen" value="true" />
+					<param name="allowScriptAccess" value="always" />
+					<embed src="http://www.youtube.com/v/jt8ejgtHavc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360" />
+				</object> 
+			</div>
+                                                <br />
+                                                <div>
+				<b>OpenMeetings Integration with Joomla</b><br />              
+				<object style="height: 360px; width: 640px">
+					<param name="movie" value="http://www.youtube.com/v/H61N0pfLusA?version=3&amp;feature=player_detailpage" />
+					<param name="allowFullScreen" value="true" />
+					<param name="allowScriptAccess" value="always" />
+					<embed src="http://www.youtube.com/v/H61N0pfLusA?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360" />
+				</object> 
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/LanguageEditor.html b/docs/LanguageEditor.html
new file mode 100644
index 0000000..86c5a81
--- /dev/null
+++ b/docs/LanguageEditor.html
@@ -0,0 +1,377 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Language Editor</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Language Editor"><strong>Language Editor</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Features:</p>
+                                                <ul>
+				<li>edit the labels of any language, changes will take effect as
+					soon as you re-login
+				</li>
+				<li>add new languages (for example to fit your co-operative design
+					and language of your company)
+				</li>
+				<li>export the language-files to an XML File (these language Files
+					can be used for your next installation or as contribution to the
+					project)
+				</li>
+				<li>
+					import of language files (
+					<i>you should restart the server if you face problems, as the
+						database cache might be invalid
+					</i>
+					)
+				</li>
+			</ul>
+                                                <p>Screen from the Administration Panel: </p>
+                                                <p>
+				<a class="fancybox-buttons" href="images/langeditor_screen_v2.png">
+					<img src="images/langeditor_screen_v2.png" alt="" width="475" height="324" />
+				</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/LdapAndADS.html b/docs/LdapAndADS.html
new file mode 100644
index 0000000..1b4a8a6
--- /dev/null
+++ b/docs/LdapAndADS.html
@@ -0,0 +1,430 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Ubuntu Installation"><strong>Ubuntu Installation</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get install slapd ldap-utils
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Modify file <tt>/etc/ldap/ldap.conf</tt> add highlighted attributes:
+				<blockquote>
+					<i>
+						#<br />
+						# LDAP Defaults<br />
+						#<br />
+						# See ldap.conf(5) for details<br />
+						# This file should be world readable but not world writable.<br />
+						<b>BASE    dc=unixmen,dc=com<br />
+						URI     ldap://192.168.1.200</b><br />
+						#SIZELIMIT      12<br />
+						#TIMELIMIT      15<br />
+						#DEREF          never<br />
+						# TLS certificates (needed for GnuTLS)<br />
+						TLS_CACERT      /etc/ssl/certs/ca-certificates.crt<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Run the Configuration assistant: <tt>sudo dpkg-reconfigure slapd</tt>
+			</div>
+                                                <div>
+				Test LDAP server: <tt>ldapsearch -x</tt>
+			</div>
+                                                <div>
+				Add/Edit/Delete users: <tt>sudo apt-get install phpldapadmin</tt>
+			</div>
+                                                <div>
+				Detailed reference: <a href="http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/">http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/</a>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="LDAP and Active Directory Integration"><strong>LDAP and Active Directory Integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p> In: $RED5_HOME/webapps/openmeetings/conf<br />
+				you will find sample configurations for LDAP and Active Directory. The
+				nature of those Directory Servers are that they are individual for
+				every organization, so you have to modify of course at least the
+				path to your user-base et cetera.<br />
+				<br />
+				To activate any of those configurations you have to login into
+				OpenMeetings, goto Administration &gt; Ldap.
+			</p>
+                                                <a class="fancybox-buttons" href="images/ldap_screen.png">
+				<img src="images/ldap_screen.png" alt="" width="442" height="282" />
+			</a>
+                                                <p>
+				Import is that you configure LDAP_SEARCH_PATH so that it points to the node of your directory server that contains the users
+			</p>
+                                                <p>
+				If you have multiple search paths you can either try to define a search path that points to multiple nodes or define multiple ldap configurations.
+			</p>
+                                                <p>
+				Successful integration is also reported with Novell eDirectory
+			</p>
+                                                <p>
+				You can configure multiple domains or different user-paths in the Administration of OpenMeetings. 
+			</p>
+                                                <p>
+				<b>NOTE: </b>You should specify file name <i>RELATIVE</i> to <tt>$RED5_HOME/webapps/openmeetings/conf</tt>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/MSSQLConfig.html b/docs/MSSQLConfig.html
new file mode 100644
index 0000000..0cb03b7
--- /dev/null
+++ b/docs/MSSQLConfig.html
@@ -0,0 +1,439 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - MSSQL Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="MSSQL Configuration"><strong>MSSQL Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Before you start"><strong>Before you start</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>You need Openmeetings 2.2 or later to use MSSQL integration</li>
+					<li>Make sure that you have set utf8 as collation for the openmeetings database
+						before you start the installation process of OpenMeetings!
+					</li>
+					<li>
+						make sure MSSQL is listening on TCP/IP connections! and username/password 
+						authentication is enabled for it
+						<br />
+						To verify if MSSQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Steps todo"><strong>Steps todo</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>
+						You need to download the JDBC driver from Microsoft
+						<a href="http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&amp;id=11774" target="_BLANK" rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&amp;id=11774</a>
+						Unarchive appropriate file from it (sqljdbc.jar or sqljdbc4.jar) and place it into:
+						<tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+					</li>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="MSSQL Sample Configuration"><strong>MSSQL Sample Configuration</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					There is a sample configuration for MySQL that ships with
+					every release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ManualTesting.html b/docs/ManualTesting.html
new file mode 100644
index 0000000..b3d6e0d
--- /dev/null
+++ b/docs/ManualTesting.html
@@ -0,0 +1,832 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="iarkh@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Manual Testing</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Below is a test plan for the OpenMeetings 2.1 pre-release testing.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Details"><strong>Details</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ol>
+				<li>
+					<b>User GUI tests</b>
+					<ol>
+						<li>
+							Login/logout 
+							<ol>
+								<li>Password recovering </li>
+								<li>Self-registering </li>
+								<li>"Visit Apache OpenMeetings" link </li>
+								<li>Enter wrong login/password </li>
+								<li>Enter correct login/password </li>
+								<li>Exit the system by click the Exit button </li>
+							</ol>
+						</li>
+						<li>
+							Dashboard
+							<ol>
+								<li>Correct user info in the upper left corner </li>
+								<li>Links in the "Help and support" section </li>
+								<li>It should be possible to enter user’s room from the dashboard </li>
+								<li>Room details should be shown correctly in the "Rooms in this section…" part of the screen </li>
+							</ol>					
+						</li>
+						<li>
+							Global chat 
+							<ol>
+								<li>Send/receive message where at least 3 users in the system </li>
+								<li>Adding a contact to the contact list </li>
+								<li>Private message </li>
+								<li>Showing user profile </li>
+								<li>Inviting user to the conference room </li>
+								<li>Copy chat log </li>
+								<li>Delete chat log </li>
+								<li>Changing font style in the massage </li>
+								<li>Adding emotions to the message </li>
+							</ol>
+							Attention! Correct RTL support does not work in the current implementation 
+						</li>
+						<li>
+							Calendar view
+							<ol>
+								<li>Change view (weekly/daily/monthly) and moving between the dates </li>
+								<li>Adding/removing/moving by mouse an event </li>
+							</ol>
+						</li>
+						<li>
+							Calendar invitation window
+							<ol>
+								<li>Creating/updating/deleting an event </li>
+								<li>Inviting 3 internal and 3 external guests </li>
+								<li>Different reminder types: receiving e-mail invitation for internal and external guests </li>
+								<li>Password protected invitation </li>
+								<li>Inviting to the rooms of the different types </li>
+								<li>Choosing time zone for external guest </li>
+								<li>Correct user data in the invitations </li>
+								<li>SMS reminder for internal and external guests </li>
+								<li>E-mail reminder for internal and external guests </li>
+								<li>It should be possible to enter to the event via invitation link room at the particular time slot only </li>
+								<li>Enter the room via invitation window </li>
+							</ol>
+						</li>
+						<li>
+							My Profile: User profile should contain correct user info and allow to edit this 
+						</li>
+						<li>
+							Contacts and Messages
+							<ol>
+								<li>Add/remove a message </li> 
+								<li>Creating a new folder </li>
+								<li>Moving between the folders </li>
+								<li>Marking messages as read/unread </li>
+								<li>Message filters </li>
+								<li>Contact list </li>
+							</ol>
+						</li>
+						<li>
+							User settings
+							<ol>
+								<li>Possibility to change the user info </li>
+								<li>Changing time zone and language (should start to work after user re-login </li>
+								<li>Community settings or different users </li>
+								<li>Display settings</li> 
+							</ol>
+						</li>
+						<li>
+							Search users
+							<ol>
+								<li>Send a private message </li>
+								<li>Adding a contact </li>
+								<li>View contact details via user list </li>
+							</ol>
+						</li>
+						<li>
+							Room lists 
+							<ol>
+								<li>Public rooms, private rooms and my rooms should contain correct room lists </li>
+								<li>User list for the selected room </li>
+								<li>Room details for the selected room </li>
+							</ol>
+						</li>
+						<li>
+							Recordings
+							<ol> 
+								<li>The list should contain available recordings in public and private folders </li>
+								<li>Info panel should contain actual info about the recording </li>
+								<li>Downloading a recording is different formats (AVI/FLV) </li>
+								<li>Play the recording in OpenMeetings </li>
+								<li>Play downloaded recording by Windows player </li>
+								<li>Remove a recording from the folder </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – general issues (should be tested with at least 3 attendees)
+							<ol>
+								<li>Enter the room: different cases for the cam/micro, choosing of the cam resolution, test recording, allow/deny of video </li>
+								<li>User list should be shown correctly </li>
+								<li>Correct user credentials after  the room entering </li>
+								<li>Add moderator permissions to the user </li>
+								<li>Turn micro on/off in the user list </li>
+								<li>Increasing/decreasing sound level and turning micro on/off in the video window </li>
+								<li>Turn micro on/off in the user list to another user – possible by the moderator only </li>
+								<li>Increasing/decreasing sound level and turning micro on/off in the video window - possible by the moderator only </li>
+								<li>Allow/deny drawing on whiteboard – possible by the moderator only </li>
+								<li>Allow/deny screen sharing – possible by the moderator only </li>
+								<li>Allow/deny remote screen control – possible by the moderator only </li>
+								<li>Allow/deny exclusive audio – possible by the moderator only </li>
+								<li>Re-start devise settings via user list </li>
+								<li>Re-start devise settings via video window </li>
+								<li>Kick the user off by the moderator </li>
+								<li>Click F8 key to arrange videos </li>
+								<li>Activity and actions panel should contain correct info </li>
+								<li>Exit the room </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing: file uploading + documents
+							<ol>
+								<li>Upload a document with "Load directly to whiteboard" switch turned on </li>
+								<li>Upload a with "Load directly to whiteboard" switch turned on off </li>
+								<li>Upload a document with the localized file name and spaces in the name </li>
+								<li>Uploading a document into different folders: private files should be visible only their owner only </li>
+								<li>Removing a file from the room </li>
+								<li>Home and public drive size should change correctly </li>
+								<li>Adding a new folder </li>
+								<li>Removing a folder </li>
+								<li>Load a document of each supported type and check that it’s shown correctly </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – whiteboard and properties panels (should be tested with at least 3 attendees)
+							<ol>
+								<li>Adding a removing a whiteboard </li>
+								<li>Full-fit switch </li>
+								<li>Clear whiteboard </li>
+								<li>Clear objects of current slide only </li>
+								<li>Save and export </li>
+								<li>Undo </li>
+								<li>Select an object </li>
+								<li>Pointer </li>
+								<li>Text </li>
+								<li>Paint </li>
+								<li>Draw line </li>
+								<li>Draw underline </li>
+								<li>Rectangle </li>
+								<li>Ellipse </li>
+								<li>Arrow </li>
+								<li>Cliparts</li>
+							</ol>						
+						</li>
+						<li>
+							Restricted room testing – chat (should be tested with at least 3 attendees)
+							<ol>
+								<li>Send a message </li>
+								<li>Start a private chat </li>
+								<li>Chat moderation </li>
+								<li>Font style </li>
+								<li>Emotions </li>
+								<li>Show/copy chat log </li>
+								<li>Delete server chat log </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – screen sharing and recordings (should be tested with at least 3 attendees)
+							<ol>
+								<li>"Share record/screen" button in the room </li>
+								<li>Desktop sharer: start/stop sharing </li>
+								<li>Change the shared screen area (X-offset, Y-offset, width, height) </li>
+								<li>Change the screen sharing quality </li>
+								<li>Start/stop recordings – need to check that it works as expected </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – Actions menu
+							<ol>
+								<li>Send invitation: send English and localized message </li>
+								<li>Send invitation with password </li>
+								<li>Send invitations with 3 different time periods </li>
+								<li>Change time zone of the invitation </li>
+								<li>Change language of the invitation </li>
+								<li>Send invitation screen: "Generate URL" button – check the same things as for the invitations sent by email </li>
+								<li>Apply to be moderator </li>
+								<li>Apply to whiteboard access </li>
+								<li>Apply to audio/video access </li>
+								<li>Create a poll </li>
+								<li>Poll results </li>
+								<li>Vote </li>
+								<li>Default whiteboard settings: check all of them </li>
+							</ol>
+						</li>
+						<li>
+							Conference room testing
+							<ol>
+								<li>User list should look in another way in compare with restricted type </li>
+								<li>Generally, all should look OK when enter the room </li>
+							</ol>
+						</li>
+						<li>
+							Interview room testing (should be tested with at least 3 attendees)
+							<ol>
+								<li>User list should look as expected </li>
+								<li>Change a user for video pod </li>
+								<li>Start/stop recordings </li>
+							</ol>
+						</li>						
+					</ol>			
+				</li>
+				<li>
+					<b>Admin GUI tests</b>
+					<ol>
+						<li>
+							Users
+							<ol>
+								<li>Add/edit/remove/search user in the table </li>
+								<li>Move between screens where there are many users in the table </li>
+								<li>Edit text fields </li>
+								<li>Change a time zone, re-login and check the calendar </li>
+								<li>Change a language, re-login and check the GUI language </li>
+								<li>Е-mail: e-mails should pass </li>
+								<li>Phone and SMS switch: if set and turned on, sms messages should pass </li>
+								<li>Change a status – non-active user cannot login </li>
+								<li>Change user role and re-login </li>
+								<li>Change user group  - user has an access only to the rooms belong to his organization </li>
+								<li>Change community settings and check </li>
+							</ol>
+						</li>
+						<li>
+							Connections
+							<ol>
+								<li>Should be tested with at least 3 users in the system </li>
+								<li>Sessionvars table should be shown correctly </li>
+								<li>Kick the user from the system </li>
+							</ol>
+						</li>
+						<li>
+							Organizations 
+							<ol>
+								<li>Add/remove/edit/search an organization </li>
+								<li>Add/remove a user from the user list of selected organization </li>
+							</ol>
+						</li>
+						<li>
+							Conference rooms
+							<ol>
+								<li>Add/remove/edit/search a room </li>
+								<li>User list for the given room should contain actual list </li>
+								<li>Turn the Moderation switch on/off and enter the room </li>
+								<li>Add/remove a user to the default moderator list </li>
+								<li>Check max participants number in the room </li>
+								<li>Change room type and enter the room </li>
+								<li>Turn public switch on/off </li>
+								<li>Turn "Demo switch" on/off, change the demonstration time </li>
+								<li>Turn "Allow user questions" on/off and enter the room </li>
+								<li>Turn "Audio only" switch on/off and enter the room </li>
+								<li>Set "Close URL" to some URL, enter the room and then exit – you should be re-directed correspondingly </li>
+								<li>Check that SIP settings work as expected </li>
+								<li>Check that "Allow recordings" switch  works as expected </li>
+								<li>Check that "Layout options" switch work as expected </li>
+								<li>Check that "Allow font styles" switch works as expected </li>
+							</ol>
+						</li>
+						<li>					
+							Configuration
+							<ol>
+								<li>Allow_frontend_register </li>
+								<li>Mail server settings </li>
+								<li>SMS provider settings </li>
+								<li>Application.name </li>
+								<li>Default_lang_id </li>
+								<li>default time zone </li>
+								<li>SIP settings </li>
+								<li>Reminder minutes </li>
+							</ol>
+						</li>
+						<li>					
+							Language editor 
+							<ol>
+								<li>Add/remove/edit/search a key </li>
+								<li>Import/export of localization files </li>
+							</ol>
+						</li>
+						<li>					
+							LDAP: Add/remove/edit/search a record
+						</li>
+						<li>
+							Backup
+							<ol>
+								<li>System import </li>
+								<li>System backup </li>
+								<li>TBD – need to add tests for command line admin here </li>
+							</ol> 
+						</li>
+						<li>
+							Servers: Add/remove/edit/search a server
+						</li>						
+					</ol>
+				</li>
+				<li>
+					<b>SIP integration tests</b> (should be tested with at least 3 attendees in the room; for restricted and interview rooms)
+					<ol>
+						<li>Call from the room to the external phone number </li>
+						<li>Call from external phone number to the room </li>
+						<li>Call from the software phone to the room </li>
+						<li>Call from the software phone with video to the room </li>
+					</ol>
+				</li>
+				<li>
+					<b>Network testing script</b>
+				</li>
+				<li>
+					<b>Site integration tests</b>
+					<ol>
+						<li>Enter OpenMeetings room from Mooddle site </li>
+						<li>Check that recordings link are shown on the Moodle site </li>
+						<li>Enter OpenMeetings room from Joomla site </li>
+						<li>Check that recordings link are shown on the Joomla site </li>
+						<li>Enter OpenMeetings room from Drupal site </li>
+						<li>Check that recordings link are shown on the Drupal site </li>
+					</ol>
+				</li>
+				<li>
+					<b>Extended test plan for the recordings and screen sharing testing</b>
+					<ol>
+						<li><b>Interview room testing</b>
+							<ol>
+								<li>
+									Just a 5 minutes recording:
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Wait for 5 minutes</li>
+										<li>Stop recording by user A</li>
+										<li>Repeat steps 1.1 – 1.6 3 times</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed and work as expected</li>
+										<li>there should not be a delay between the video and sound</li>
+									</ol>
+								</li>
+								<li>Just a 30 minutes recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+								<li>Just an 1 hour recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+								<li>
+									5-minutes recording: user exits the room before the recording gets stopped
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Exit the room by user B</li>
+										<li>Stop recording by user A</li>
+										<li>Repeat steps 1.4.1 – 1.4.6 3 times</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed and work as expected</li>
+										<li>There should not be a delay between the video and sound</li>
+									</ol>
+								</li>
+								<li>
+									5-minutes recording: user A starts recording, user B stops
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Stop recording by user B</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed as expected</li>
+									</ol>
+								</li>
+							</ol>
+						</li>
+						<li>
+							<b>Conference room testing</b>
+							<ol>				
+								<li>
+									Screen sharing
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Enter a room by user C</li>
+										<li>Open videos for all the users</li>
+										<li>Start screen sharing session by user A, choose High quality</li>
+										<li>Check that A's screen looks correctly for users B and C and sound is OK in the room</li>
+										<li>Stop screen sharing by user A after 5 minutes</li>
+										<li>Repeat steps 2.1.1-2.1.7 3 times</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Very high quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Medium quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Low quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose some random height and width on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but turn the “Notify on disconnect” switch on the step 2.1.5</li>									
+									</ol>
+								</li>
+								<li>
+									Recordings
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Enter a room by user C</li>
+										<li>Open videos for all the users</li>
+										<li>Start recording session by user A, choose High quality</li>
+										<li>Stop recording session by user A after 5 minutes</li>
+										<li>Repeat steps 2.2.1-2.2.6 3 times</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Very high quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Medium quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Low quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose some random height and width on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but turn the “Notify on disconnect” switch on the step 2.2.5</li>
+										<li>Go to the A's recordings list and check that all the recordings are there, processed without errors and work as expected</li>
+									</ol>
+								</li>
+								<li>
+									Recordings + screen sharing: user enters the room after recording is started
+									<ol>
+										<li>Enter conference room by user A</li>
+										<li>Start screen sharing and recordings with default parameters by user A</li>
+										<li>Enter the room by user B, check that screen sharing is OK. Wait 5 minutes</li>
+										<li>Enter the room by user C, check that screen sharing is OK. Wait 5 minutes</li>
+										<li>Exit the room by user B; wait 3 minutes</li>
+										<li>Exit the room by user C; wait 3 minutes</li>
+										<li>Exit the room by user A</li>
+										<li>Repeat steps 2.3.1-2.3.7 3 times</li>
+										<li>Go to the recordings list for user A and check that all the recordings are OK and work as expected</li>
+									</ol>
+								</li>
+								<li>
+									Stress test
+									<ol>
+										<li>Enter the room by the users A, B, C, D and E</li>
+										<li>Open A, B, C, D and E videos</li>
+										<li>Start screen sharing and recordings session with high quality by user A</li>
+										<li>Wait 30 minutes</li>
+										<li>Stop screen sharing</li>
+										<li>Go to A's recordings list and check that created recording is OK</li>
+										<li>Repeat steps 2.3.1-2.3.6 3 times</li>
+									</ol>
+								</li>
+							</ol>
+						</li>
+					</ol>
+				</li>
+
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/MoodlePlugin.html b/docs/MoodlePlugin.html
new file mode 100644
index 0000000..aa76308
--- /dev/null
+++ b/docs/MoodlePlugin.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Moodle Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Moodle Plugin for OpenMeetings"><strong>Moodle Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can get the latest Version of the Plugin for Moodle from the
+				<a href="downloads.html">downloads</a>
+				.
+				<br />
+				You can find the OpenMeetings Plugin also in the
+				<a href="http://moodle.org/plugins/view.php?plugin=mod_openmeetings" target="_BLANK" rel="nofollow">Moodle Plugin database</a>
+				.
+				<br />
+				A demo version of the Moodle plugin is available at
+				<a href="http://moodle.openmeetings.de" target="_BLANK" rel="nofollow">moodle.openmeetings.de
+				</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Installation of the Moodle Plugin for Apache OpenMeetings"><strong>Installation of the Moodle Plugin for Apache OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You simply download the ZIP or TAR package and unzip it to Moodle's "mod" directory.<br />
+				Eventually you need to unzip the package into a folder called "openmeetings".
+				The folder structure is:<br />
+				$MOODLE_HOME/mod/openmeetings/*.php
+				<br />
+				Then you visit the admin interface of Moodle, for example
+				<a href="http://$your_moodle_host/$MOODLE_WWW_ROOT/admin" target="_BLANK" rel="nofollow">http://$your_moodle_host/$MOODLE_WWW_ROOT/admin</a> 
+					<br />
+				Moodle will detect that there is a new plugin and will show the plugin installation screen:
+			</p>
+                                                <a class="fancybox-buttons" href="images/moodle_install_plugin.png">
+				<img src="images/moodle_install_plugin.png" alt="" width="430" height="220" />
+			</a>
+                                                <p>
+				After you have clicked on "Update database" Moodle will show you the plugin configuration screen:
+			</p>
+                                                <a class="fancybox-buttons" href="images/moodle_configure_plugin.png">
+				<img src="images/moodle_configure_plugin.png" alt="" width="500" height="300" />
+			</a>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Adding a new conference room to a Moodle course"><strong>Adding a new conference room to a Moodle course</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				After installation of the plugin you can go to the course pages in Moodle and turn editing on.
+				Then you choose the activity "OpenMeetings", Moodle will then show you the conference room 
+				configuration with all the options:
+			</p>
+                                                <a class="fancybox-buttons" href="images/moodle_add_activity_plugin.png">
+				<img src="images/moodle_add_activity_plugin.png" alt="" width="430" height="360" />
+			</a>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/MySQLConfig.html b/docs/MySQLConfig.html
new file mode 100644
index 0000000..fc0ecda
--- /dev/null
+++ b/docs/MySQLConfig.html
@@ -0,0 +1,439 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - MySQL Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="MySQL Configuration"><strong>MySQL Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Before you start"><strong>Before you start</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>Make sure that you have set utf8 as
+						default/server-character-set in your MySQL configuration (my.cnf)
+						before you start the installation process of OpenMeetings!
+					</li>
+					<li>
+						make sure MySQL is listening on TCP/IP connections!
+						<br />
+						To verify if MySQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Steps todo"><strong>Steps todo</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>
+						You need to download the JConnector from mysql
+						<a href="http://www.mysql.com/downloads/connector/j/" target="_BLANK" rel="nofollow">http://www.mysql.com/downloads/connector/j/</a>
+						and place it into:
+						<tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+					</li>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="MySQL Sample Configuration"><strong>MySQL Sample Configuration</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					There is a sample configuration for MySQL that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Navigation.html b/docs/Navigation.html
new file mode 100644
index 0000000..c41a2c1
--- /dev/null
+++ b/docs/Navigation.html
@@ -0,0 +1,365 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Change main navigation</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing the main navigation"><strong>Changing the main navigation</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>To customize the main menu (for example remove entries or changing
+				the order) you can edit the tables:  </p>
+                                                <ul>
+				<li>navimain </li>
+				<li>naviglobal </li>
+				<li>navisub (currently not in use) </li>
+			</ul>
+                                                <p />
+                                                <p>
+				You need to make sure that you
+				<strong>restart red5 after doing changes to the database</strong>
+				, there is a database cache, so changes might not take affect as
+				long as you did not restart.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/OpenOfficeConverter.html b/docs/OpenOfficeConverter.html
new file mode 100644
index 0000000..aeac745
--- /dev/null
+++ b/docs/OpenOfficeConverter.html
@@ -0,0 +1,376 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - OpenOffice converter for OpenMeetings</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenOffice Service for OpenMeetings"><strong>OpenOffice Service for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				To import .doc, .docx, .odp, .xls, .xlsx, .ppt, .pptx, ... [ all
+				files that you can open with OpenOffice ]
+				to OpenMeetings and use
+				them in the whiteboard you need OpenOffice or LibreOffice
+				installed
+				the machine that runs OpenMeetings.
+			</p>
+                                                <p>
+				<i>Since Version 2.0 of OpenMeetings starting of
+					OpenOffice/LibreOffice as service in not required, JODConverter
+					will automatically start and shut down the service!
+				</i>
+			</p>
+                                                <p>
+				Installation of JODConverter means: You donwload the ZIP binary from
+				their
+				<a href="http://code.google.com/p/jodconverter/" target="_BLANK" rel="nofollow">website</a>
+				and then configure in Apache OpenMeetings Administration &gt;
+				Configuration (or during installation) the config key
+				<tt>jod.path</tt>
+				to point to the "lib" directory of the unpacked JODConverter binary.
+				There is no restart of OpenMeetings required.
+			</p>
+                                                <p>You should use an OpenOffice version greater 3</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/OracleConfig.html b/docs/OracleConfig.html
new file mode 100644
index 0000000..8345ec3
--- /dev/null
+++ b/docs/OracleConfig.html
@@ -0,0 +1,425 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - IBM DB2 Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="IBM DB2 Configuration"><strong>IBM DB2 Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Before you start"><strong>Before you start</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>Download the latest JDBC Driver from Oracle for your database
+						version. Place those JARs into
+						$Red5/webapps/openmeetings/WEB-INF/lib
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Steps todo"><strong>Steps todo</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml connectionURL, username and
+						password with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Oracle Sample Configuration"><strong>Oracle Sample Configuration</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					There is a sample configuration for Oracle that ships with
+					every release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/PortSettings.html b/docs/PortSettings.html
new file mode 100644
index 0000000..5352323
--- /dev/null
+++ b/docs/PortSettings.html
@@ -0,0 +1,475 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Port settings</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Default Configuration"><strong>Default Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Port 5080: HTTP (For example for file upload and download) </li>
+				<li>Port 1935: RTMP (Flash Stream and Remoting/RPC) </li>
+				<li>Port 8088: RTMP over HTTP-Tunneling (rtmpT) </li>
+			</ul>
+                                                <p>Additionally red5 uses some ports internally. However those ports
+				are not in use by OpenMeetings by default.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configure alternative ports"><strong>Configure alternative ports</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You need to change two files: </p>
+                                                <ul>
+				<li>Server-Side configuration: $RED5_HOME/conf/red5.properties, you
+					need to restart the red5-service so that changes are online.
+				</li>
+				<li>Client-Side configuration:
+					$RED5_HOME/webapps/openmeetings/public/config.xml, you need to clear your
+					browser cache after changing the file.
+				</li>
+				<li>
+					<blockquote>Every server side configuration has a client side
+						representative
+					</blockquote>
+				</li>
+			</ul>
+                                                <p />
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Config-Name 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Default-value 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Name in red5.properties 
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         Name in public/config.xml 
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         HTTP 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         5080 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         http.port 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         red5httpport 
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         RTMP 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         1935 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         rtmp.port 
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+         rtmpport 
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Preventing Firewall issues"><strong>Preventing Firewall issues</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>A common way of bypassing the firewall is to change HTTP port to
+				80 and rtmpT to 443.
+			</p>
+                                                <p>A short description about the connection mechanism: The
+				application first tries connecting to rtmp 3 times, because rtmp is
+				the protocol that is less performance hungry. If that fails the
+				application will fallback to rtmpT.
+			</p>
+                                                <p>Most firewalls do allow traffic on port 443 and they normally do
+				not analyse the packets, because 443 is normally SSL encrypted, so
+				the firewall should not be able to read the packets at all.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings over SSL"><strong>OpenMeetings over SSL</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can run OpenMeetings completely over SSL. See
+				<a href="RTMPSAndHTTPS.html">RTMPSAndHTTPS</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/PostgresConfig.html b/docs/PostgresConfig.html
new file mode 100644
index 0000000..6810e19
--- /dev/null
+++ b/docs/PostgresConfig.html
@@ -0,0 +1,436 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Apache OpenMeetings Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - PostgreSQL Configuration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="PostgreSQL Configuration"><strong>PostgreSQL Configuration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Before you start"><strong>Before you start</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>Make sure that you have set utf8 as default/server-character-set 
+					</li>
+					<li>
+						make sure PostgreSQL is listening on TCP/IP connections!
+						<br />
+						To verify if PostgreSQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+					<li><span style="font-size: larger; color: blue;">IMPORTANT</span> According to
+						<a href="http://markmail.org/message/opymlab2e6wygb7p">this</a> thread you need to ensure:<br />
+						<tt>standard_conforming_strings</tt> is set to <tt><b>on</b></tt> and <br />
+						<tt>escape_string_warning</tt> is set to <tt><b>off</b></tt>
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Steps todo"><strong>Steps todo</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="PostgreSQL Sample Configuration"><strong>PostgreSQL Sample Configuration</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					There is a sample configuration for PostgreSQL that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RTMPSAndHTTPS.html b/docs/RTMPSAndHTTPS.html
new file mode 100644
index 0000000..abe1db1
--- /dev/null
+++ b/docs/RTMPSAndHTTPS.html
@@ -0,0 +1,560 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Using OpenMeetings with RTMPS and HTTPS</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Using OpenMeetings with RTMPS and HTTPS"><strong>Using OpenMeetings with RTMPS and HTTPS</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>There are 3 ways the client communicates with the server: </p>
+                                                <ul>
+				<li>The flash-client uses RTMP protocol to transfer Audio/Video and
+					to send and receive the user data (login et cetera) to the server
+					and back
+				</li>
+				<li>The browser uses HTTP protocol to load the SWF and to upload and
+					download the files (documents, pdfs, images) to the server and
+					back.
+				</li>
+				<li>The screensharing client uses RTMP protocol to transfer screen
+					data and remote control to the server and back
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Prerequisites"><strong>Prerequisites</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>You need OpenMeetings 1.9.x for this, OpenMeetings 1.8.x does
+					not
+					have those options.
+				</li>
+				<li>Install OpenMeetings according to the install instructions and
+					check that it runs without problems
+				</li>
+				<li>Rename the existing keystore file red5/conf/keystore to
+					keystore.bak
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configuring RTMPS for the Flash Client"><strong>Configuring RTMPS for the Flash Client</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ol>
+				<li>
+					Create a new keystore and key, use the same password for both:<br />
+					(copied from
+					<a href="http://trac.red5.org/wiki/Documentation/Tutorials/Red5DeveloperTips/SSLTLS%29:" rel="nofollow">http://trac.red5.org/wiki/Documentation/Tutorials/Red5DeveloperTips/SSLTLS):</a>
+					<div class="xmlcode">
+						keytool -keysize 2048 -genkey -alias red5 -keyalg RSA -keystore red5/conf/keystore<br />
+						Enter keystore password:<br />
+						Re-enter new password:<br />
+						What is your first and last name?<br />
+						[Unknown]:  &lt;your hostname, e.g demo.openmeetings.de&gt;<br />
+						What is the name of your organizational unit?<br />
+						[Unknown]:  Dev<br />
+						What is the name of your organization?<br />
+						[Unknown]:  OpenMeetings<br />
+						What is the name of your City or Locality?<br />
+						[Unknown]:  Henderson<br />
+						What is the name of your State or Province?<br />
+						[Unknown]:  Nevada<br />
+						What is the two-letter country code for this unit?<br />
+						[Unknown]:  US<br />
+						Is CN=demo.openmeetings.de, OU=Dev, O=OpenMeetings, L=Henderson, ST=Nevada, C=US correct?<br />
+						[no]:  yes<br />
+						Enter key password for &lt;red5&gt;<br />
+					</div>
+				</li>
+		
+				<li>Generate a CSR: keytool -certreq -keyalg RSA -alias red5 -file
+					red5.csr -keystore red5/conf/keystore
+				</li>
+				<li>Submit CSR to your CA of choice and receive a signed certificate
+				</li>
+				<li>Import your chosen CA's root certificate into the keystore (may
+					need to download it from their site - make sure to get the root CA and
+					not the intermediate one): keytool -import -alias root -keystore
+					red5/conf/keystore
+					-trustcacerts -file root.crt (note: you may receive a warning that
+					the certificate already exists in the system wide keystore - import
+					anyway)
+				</li>
+				<li>Import the intermediate certificate(s) you normally receive with
+					the certificate:
+					keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts
+					-file intermediate.crt
+				</li>
+				<li>Import the certificate you received: keytool -import -alias red5
+					-keystore red5/conf/keystore -trustcacerts -file
+					demo.openmeetings.de.crt
+				</li>
+                <li>
+                Create additional certificate as described above.
+                Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>.
+                </li>
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Set up RTMPS"><strong>Set up RTMPS</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ol>
+		      <li>
+		      Uncomment <tt>&lt;!-- RTMPS --&gt;</tt> section in <tt>red5/conf/red5-core.xml</tt>
+		      </li>
+
+				<li>
+					Edit <tt>red5/conf/red5.properties</tt> and set
+					<tt>rtmps.port=5443</tt>
+					and
+					<tt>rtmps.keystorepass=password</tt>
+					(password = password you set on your new
+					keystore)
+				</li>
+			
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>&lt;rtmpsslport&gt;5443&lt;/rtmpsslport&gt;</tt>
+					,
+					<tt>&lt;useSSL&gt;yes&lt;/useSSL&gt;</tt>
+					and
+					<tt>&lt;proxyType&gt;best&lt;/proxyType&gt;</tt>
+				</li>
+
+				<li>Restart red5 and try to connect - your connection should now be
+					made via RTMPS (close port 1935 to be sure)
+				</li>   
+					  
+		  </ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="SSL for the web interface"><strong>SSL for the web interface</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you want to use SSL for the web interface in addition to RTMPS,
+				you need to make some further modifications. This is mainly to secure
+				the server against MITM attacks, additionally some other features
+				like file uploads also use a plain HTTP connection if this is not
+				done. The following instructions assume that you have already set up
+				RTMPS successfully. </p>
+                                                <ol>
+				<li>
+					Edit <tt>red5/conf/jee-container.xml</tt> file:<br />
+					Comment <tt>Tomcat without SSL enabled</tt> section<br />
+					UNComment <tt>Tomcat with SSL enabled</tt> section
+				</li>
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>&lt;protocol&gt;https&lt;/protocol&gt;</tt>
+				</li>
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>red5httpport</tt> to <tt>https</tt> port
+				</li>
+				<li>In webapps/openmeetings/WEB-INF/conf/axis2.xml add (below the existing http transportReceiver (around line 225))
+					<div class="xmlcode">&lt;transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener"&gt;<br />
+        &lt;parameter name="port"&gt;443&lt;/parameter&gt;<br />
+&lt;/transportReceiver&gt;</div>
+				</li>
+				<li>Edit red5/conf/red5.properties and set <tt>https.port=443</tt> </li>
+				<li>
+					Restart red5 and try to connect to
+					<a href="https://your.server" rel="nofollow">https://your.server</a>
+					- you should be redirected to the OpenMeetings
+					app and all access should be via HTTPS or RTMPS (close port 5080 to
+					be sure).
+				</li>
+            </ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Credits"><strong>Credits</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Credits goto: Nexus and Holger Rabbach for their help and
+				contribution and configuration documention! </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RecommendedHardwareList.html b/docs/RecommendedHardwareList.html
new file mode 100644
index 0000000..8da962b
--- /dev/null
+++ b/docs/RecommendedHardwareList.html
@@ -0,0 +1,401 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Cameras"><strong>Cameras</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Logitech QuickCam Sphere AF</li>
+				<li>Logitech QuickCam E3500</li>
+				<li>Samsung Pleomax PWC-7100</li>
+				<li>Genius Look320S</li>
+				<li>Integrated Lenovo 3000 n100</li>
+				<li>Skypemate WC-103M</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Headsets"><strong>Headsets</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Logitech Clear Chat Style</li>
+			</ul>
+                                                <ul>
+				<li>ClearChat PC Wireless (helps to suppress echo)</li>
+				<li>Logitech USB Desktop Microphone - Mikrophon (good sound, but bad echo cancellation)</li>
+			</ul>
+                                                <b>Note for Mac OS X users:</b>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Speakerphones"><strong>Speakerphones</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>Phoenix Audio Quattro2 USB Speakerphone MT301 (a single microphone + speakers can be used even with 20-30 people sitting in a room)</li>
+				<li>Phoenix DUET Executive</li>
+				<li>Jabra SPEAK410</li>
+				<li>Plantronics MCD 100M</li>
+				<li>Integrated Lenovo 3000 n100</li>
+				<li>Konftel 300</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedminePlugin.html b/docs/RedminePlugin.html
new file mode 100644
index 0000000..2d6ab04
--- /dev/null
+++ b/docs/RedminePlugin.html
@@ -0,0 +1,370 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Redmine Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Plugin for Redmine"><strong>OpenMeetings Plugin for Redmine</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Current Development Snapshots for testing can be created from the sources:
+				<a href="https://svn.codespot.com/a/apache-extras.org/openmeetings-redmine-plugin/trunk">here</a>.<br />
+				The page at redmine site is <a href="http://www.redmine.org/plugins/redmine-openmeetings">here</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>TBD</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ReleaseGuide.html b/docs/ReleaseGuide.html
new file mode 100644
index 0000000..1e241e2
--- /dev/null
+++ b/docs/ReleaseGuide.html
@@ -0,0 +1,606 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Release Guide</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to Build a Release of OpenMeetings"><strong>How to Build a Release of OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Required tools"><strong>Required tools</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					<p>To build a binary release of OpenMeetings you need: </p>
+					<ul>
+						<li>Sun JDK6</li>
+						<li>Apache ANT (minimum) 1.8.3</li>
+						<li>
+							SVN Command line client (Subversion 1.7 required!)
+							<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
+						</li>
+						<li>A text editor</li>
+						<li>You need to be online! The build process actively downloads
+							needed libraries and dependencies.
+						</li>
+					</ul>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Prepare your Apache ID"><strong>Prepare your Apache ID</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					Every release package must be signed with a PGP/GPG key.
+					<br />
+					So if you want to release a package your Apache Id must be
+					connected with a PGP key!
+					<br />
+					<br />
+					You might follow:
+					<br />
+					<a href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp" target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
+					</a>
+					<br />
+					<br />
+					In short:
+					<br />
+					Create PGP key pairs (private + public) (and I recommend creating a
+					Revoke Cert)
+					<br />
+					Upload the public key (either bei using the PGP Tool that you use
+					to create the key) or by using the web form to:
+					<a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/
+					</a>
+					<br />
+					Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
+					4413 09AB 0055 16BF 93A3 0395") to your profile at
+					<a href="http://id.apche-org" target="_blank" rel="nofollow">id.apche-org
+					</a>
+					<br />
+					Wait for 6-8 hours, the server will search for a public key based
+					on your fingerprint, if success it will create a file with your
+					name at:
+					<br />
+					<a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
+					<br />
+					<br />
+					If that is "success" then add your key to:
+					<br />
+					<a href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">https://svn.apache.org/repos/asf/openmeetings/project/KEYS
+					</a>
+					<br />
+					and follow the instructions in the file.
+					<br />
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step1 - Prepare files"><strong>Step1 - Prepare files</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					Check that all files:
+					<br />
+					LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README
+					<br />
+					are up to date and refer to the right version.
+				</p>
+                                                <p>
+					Create a TAG of the SVN tree that you would like to release<br />
+					Example:
+				</p>
+                                                <div class="xmlcode">
+					svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp \<br />
+						https://svn.apache.org/repos/asf/openmeetings/tags/2.1RC1 \<br />
+						-m "Release candidate 1"
+				</div>
+                                                <p>Get the source from your TAG: </p>
+                                                <div class="xmlcode">
+					svn checkout https://svn.apache.org/repos/asf/openmeetings/tags/$BRANCHORTAG/<br />
+					$BRANCHORTAG should be replaced with your new TAG
+				</div>
+                                                <p>Edit the file build.properties change</p>
+                                                <div class="xmlcode">
+					project.status=SNAPSHOT
+				</div>
+                                                <p>to</p>
+                                                <div class="xmlcode">
+					project.status=RELEASE
+				</div>
+                                                <p>Run the command: </p>
+                                                <div class="xmlcode">
+					ant dist-release
+				</div>
+                                                <p>Test building the source on windows and OSx or Linux</p>
+                                                <p>Test running the binary's</p>
+                                                <p>Create MD5 checksums</p>
+                                                <div class="xmlcode">
+					#On OSX you might use this command to make a MD5 checksum and store it to a file<br />
+					md5 -r apache-openmeetings-XXX-src.zip &gt;apache-openmeetings-XXX-src.zip.md5
+				</div>
+                                                <div class="xmlcode">
+					#To create MD5 hashes On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do md5sum $f &gt; $f.md5; done<br />
+					<br />
+					#To check MD5 hashes On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do md5sum -c $f.md5; done
+				</div>
+                                                <p>
+					Create signatures with the your KEY for every file, the KEY must be available at:<br />
+					<a href="http://www.apache.org/dist/incubator/openmeetings/KEYS">
+						http://www.apache.org/dist/incubator/openmeetings/KEYS
+					</a>
+				</p>
+                                                <div class="xmlcode">
+					#To create signatures On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done<br />
+					<br />
+					#To check signatures On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
+				</div>
+                                                <p>
+					Commit artifacts you have created with KEYS file to the
+					<tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
+					Proposed file structure for "Release Candidate 1" of 2.1 will be:
+				</p>
+                                                <div class="xmlcode">
+					2.1<br />
+					2.1/rc1<br />
+					2.1/rc1/src<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.md5<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.asc<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.md5<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.asc<br />
+					2.1/rc1/bin<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.md5<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.asc<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.md5<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.asc<br />
+					2.1/rc1/CHANGELOG<br />
+					2.1/rc1/KEYS<br />
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step2 - VOTE and RESULT emails"><strong>Step2 - VOTE and RESULT emails</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					Send a "VOTE" to the developer mailing list including links to release artefacts.<br />
+					A VOTE always contains two parts:<br />
+					Send an email to the developer mailing list with the subject line:<br />
+					[VOTE] Apache OpenMeetings x.xx release<br />
+					An example for such an email:
+					<a href="http://s.apache.org/vote-2.1.0RC1">example Vote email</a>
+					<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
+					<br />
+					Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
+					<br />
+					After the vote is over, send a "RESULT" email to the list with the subject line:<br />
+					[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
+					An example for such an email:
+					<a href="http://mail-archives.apache.org/mod_mbox/incubator-openmeetings-dev/201207.mbox/%3CCACeMiA-ibo6fGCbnLjJX9H5H2kFGDVJRMfxPyMtzWzCWNi%2BpOg%40mail.gmail.com%3E">example Result email</a>
+					<br />
+					Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
+					<br />
+					Votes on whether a package is ready to be released use majority approval -- i.e., at 
+					least three PMC members must vote affirmatively for release, and there must be more 
+					positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
+					are required to download the signed source code package, compile it as provided, and 
+					test the resulting executable on their own platform, along with also verifying that 
+					the package meets the requirements of the ASF policy on releases.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Step3 - Distribute and announce"><strong>Step3 - Distribute and announce</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If VOTEs positive: Upload the release </p>
+                                                <div class="xmlcode">
+					svn mv https://dist.apache.org/repos/dist/dev/openmeetings/2.1/rc3 \<br />
+						https://dist.apache.org/repos/dist/release/openmeetings/2.1 \<br />
+						-m "RC3 is released as 2.1"
+				</div>
+                                                <p>
+					Wait 24 hours (until all Apache mirrors have synced the packages)
+					and send an announcement to the mailing list + blog and any other
+					channel.
+				</p>
+                                                <p>
+					Email announcements should have the subject line:
+					<br />
+					[ANNOUNCE] Apache OpenMeetings x.xx released
+				</p>
+                                                <p>
+					Add a section to <a href="downloads.html">downloads</a> website.<br />
+					Make sure that the binary packages are linked using the mirror URL as base path (
+					<b>not</b> http://www.apache.org/dist):<br />
+					Mirror URL: 
+					<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/">http://www.apache.org/dyn/closer.cgi/openmeetings/</a>
+				</p>
+                                                <p>
+					Release candidates should be deleted from <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt><br />
+					Old releases should be deleted from <tt>https://dist.apache.org/repos/dist/release/openmeetings/</tt>
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RestAPISample.html b/docs/RestAPISample.html
new file mode 100644
index 0000000..d3ac1d8
--- /dev/null
+++ b/docs/RestAPISample.html
@@ -0,0 +1,414 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p> For a detailed instruction which services, methods and params are available see the list in the SoapMethods. ALL methods that are implemented for the SOAP API are also available via REST. 
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to invoke Services via REST"><strong>How to invoke Services via REST</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>For example for the method getSession in the UserService, you would use this URL via REST:
+			</p>
+                                                <p>Sample URL: </p>
+                                                <a href="http://demo.openmeetings.de/openmeetings/services/UserService/getSession">http://demo.openmeetings.de/openmeetings/services/UserService/getSession</a>
+                                                <p>Result: </p>
+                                                <div class="xmlcode">
+				&lt;ns:getSessionResponse/&gt;<br />
+				&lt;ns:return type="org.apache.openmeetings.hibernate.beans.basic.Sessiondata"/&gt;<br />
+				<div style="margin-left:20px">
+					&lt;ax219:id&gt;156971&lt;/ax219:id/&gt;<br />
+					&lt;ax219:language_id xsi:nil="true"//&gt;<br />
+					&lt;ax219:organization_id xsi:nil="true"//&gt;<br />
+					&lt;ax219:refresh_time&gt;2011-07-03T14:40:44.000Z&lt;/ax219:refresh_time/&gt;<br />
+					&lt;ax219:sessionXml xsi:nil="true"//&gt;<br />
+					&lt;ax219:session_id&gt;26584705202d7c1de6cc8e7e28890e3d&lt;/ax219:session_id/&gt;<br />
+					&lt;ax219:starttermin_time&gt;2011-07-03T14:40:44.000Z&lt;/ax219:starttermin_time/&gt;<br />
+					&lt;ax219:storePermanent xsi:nil="true"//&gt;<br />
+					&lt;ax219:user_id xsi:nil="true"//&gt;<br />
+				</div>
+				&lt;/ns:return/&gt;<br />
+				&lt;/ns:getSessionResponse/&gt;<br />
+			</div>
+                                                <p>To login a user the call to auth would be:</p>
+                                                <p>Sample URL: </p>
+                                                <a href="http://demo.openmeetings.de/openmeetings/services/UserService/loginUser?SID=26584705202d7c1de6cc8e7e28890e3d&amp;username=hans&amp;userpass=test">http://demo.openmeetings.de/openmeetings/services/UserService/loginUser?SID=26584705202d7c1de6cc8e7e28890e3d&amp;username=han&amp;userpass=test</a>
+                                                <p>Result: </p>
+                                                <div class="xmlcode">
+				&lt;ns:loginUserResponse/&gt;<br />
+				<div style="margin-left:20px">
+				    &lt;ns:return&gt;-11&lt;/ns:return/&gt;<br />
+				</div>
+				&lt;/ns:loginUserResponse/&gt;<br />
+			</div>
+                                                <p>=&gt; It does return -10, which is the error id cause we will not write down a SOAP login to our public server in this wiki. However the correct way to check this error would be to invoke the call to get the localized error message. So we invoke the method to get the error via REST:</p>
+                                                <p>Sample URL: </p>
+                                                <a href="http://demo.openmeetings.de/openmeetings/services/UserService/getErrorByCode?SID=26584705202d7c1de6cc8e7e28890e3d&amp;errorid=-10&amp;language_id=1">http://demo.openmeetings.de/openmeetings/services/UserService/getErrorByCode?SID=26584705202d7c1de6cc8e7e28890e3d&amp;errorid=-10&amp;language_id=1</a>
+                                                <p>Result:</p>
+                                                <div class="xmlcode">
+				&lt;ns:getErrorByCodeResponse/&gt;<br />
+				&lt;ns:return type="org.apache.openmeetings.db.dto.basic.ErrorResult"/&gt;<br />
+				<div style="margin-left:20px">
+					&lt;ax218:errmessage&gt;Username not found&lt;/ax218:errmessage/&gt;<br />
+					&lt;ax218:errorId&gt;-10&lt;/ax218:errorId/&gt;<br />
+					&lt;ax218:errortype&gt;Error&lt;/ax218:errortype/&gt;<br />
+				</div>
+				&lt;/ns:return/&gt;<br />
+				&lt;/ns:getErrorByCodeResponse/&gt;<br />
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RestrictedAccess.html b/docs/RestrictedAccess.html
new file mode 100644
index 0000000..d272b1d
--- /dev/null
+++ b/docs/RestrictedAccess.html
@@ -0,0 +1,401 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - How to restrict access to your Openmeetings server</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Server Side"><strong>Server Side</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You can protect your OpenMeetings instance from beeing accessed
+				from 3th party by using the file:
+			</p>
+                                                <p>$RED5_HOME/webapps/openmeetings/WEB-INF/red5-web.properties </p>
+                                                <p>Content: </p>
+                                                <div class="xmlcode">
+				webapp.virtualHosts=*,localhost, 127.0.0.1
+			</div>
+                                                <a href="http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/red5-web.properties" rel="nofollow">http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/red5-web.properties
+			</a>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Client Side"><strong>Client Side</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>And you can restrict the access also for the client side: Every
+				Flash Plugin will check a file called "crossdomain.xml" before it
+				tries to access the server using rtmp/RPC. This file is located: </p>
+                                                <p>$RED5_HOME/webapps/root/crossdomain.xml </p>
+                                                <p>Content: </p>
+                                                <div class="xmlcode">
+				&lt;?xml version="1.0"?&gt;<br />
+				&lt;cross-domain-policy&gt;<br />
+				        &lt;site-control permitted-cross-domain-policies="all"/&gt;<br />
+				        &lt;allow-access-from domain="localhost" to-ports="20-65535"/&gt;<br />
+				        &lt;allow-access-from domain="*.local" to-ports="20-65535"/&gt;<br />
+				&lt;/cross-domain-policy&gt;<br />
+			</div>
+                                                <p>
+				Sample file:
+				<a href="http://code.google.com/p/red5/source/browse/java/server/trunk/webapps/root/crossdomain.xml" rel="nofollow">http://code.google.com/p/red5/source/browse/java/server/trunk/webapps/root/crossdomain.xml
+				</a>
+			</p>
+                                                <p>
+					If you accessing your application behind an Apache Webservre (using
+					mod_proxy or mod_jk2) be careful to make the crossdomain.xml
+					accessible. Flash will always search for this file in the www-root
+					directory of every URL you connect to. You might use
+					<a href="https://addons.mozilla.org/de/firefox/addon/firebug/" rel="nofollow">FireBug
+					</a>
+					for example to lookup requests.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RoomService.html b/docs/RoomService.html
new file mode 100644
index 0000000..7c09c46
--- /dev/null
+++ b/docs/RoomService.html
@@ -0,0 +1,4587 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: RoomService</h3>
+	   <p>RoomService contains methods to manipulate rooms and create invitation hash<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/RoomService?wsdl">http://localhost:5080/openmeetings/services/RoomService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in RoomService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#getRoomsPublic"><b>getRoomsPublic</b></a><br/>
+                <div class="navigation_comment"><i >Returns an Object of Type RoomsList which contains a list of
+ Room-Objects. Every Room-Object contains a Roomtype and all informations
+ about that Room. The List of current-users in the room is Null if you get
+ them via SOAP. The Roomtype can be 1 for conference rooms or 2 for
+ audience rooms.</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteFlvRecording"><b>deleteFlvRecording</b></a><br/>
+                <div class="navigation_comment"><i >Deletes a flv recording</i></div>
+                </div>
+                                               <div>
+                <a href="#getFlvRecordingByExternalUserId"><b>getFlvRecordingByExternalUserId</b></a><br/>
+                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getFlvRecordingByExternalRoomTypeAndCreator"><b>getFlvRecordingByExternalRoomTypeAndCreator</b></a><br/>
+                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getFlvRecordingByExternalRoomTypeByList"><b>getFlvRecordingByExternalRoomTypeByList</b></a><br/>
+                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getRecordingsByExternalType"><b>getRecordingsByExternalType</b></a><br/>
+                <div class="navigation_comment"><i >Gets a list of recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getFlvRecordingByExternalRoomType"><b>getFlvRecordingByExternalRoomType</b></a><br/>
+                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getFlvRecordingByRoomId"><b>getFlvRecordingByRoomId</b></a><br/>
+                <div class="navigation_comment"><i >Get list of recordings</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomTypes"><b>getRoomTypes</b></a><br/>
+                <div class="navigation_comment"><i >List of available room types</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomCounters"><b>getRoomCounters</b></a><br/>
+                <div class="navigation_comment"><i >Returns current users for rooms ids</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomById"><b>getRoomById</b></a><br/>
+                <div class="navigation_comment"><i >returns a conference room object</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomWithClientObjectsById"><b>getRoomWithClientObjectsById</b></a><br/>
+                <div class="navigation_comment"><i >Returns a object of type RoomReturn</i></div>
+                </div>
+                                               <div>
+                <a href="#getRooms"><b>getRooms</b></a><br/>
+                <div class="navigation_comment"><i >Returns a List of Objects of Rooms You can use "name" as value for
+ orderby or rooms_id</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomsWithCurrentUsers"><b>getRoomsWithCurrentUsers</b></a><br/>
+                <div class="navigation_comment"><i >Returns a List of Objects of Rooms You can use "name" as value for
+ orderby or rooms_id. It also fills the attribute currentUsers in the
+ Room-Object</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModeration"><b>addRoomWithModeration</b></a><br/>
+                <div class="navigation_comment"><i >Create a conference room</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationAndQuestions"><b>addRoomWithModerationAndQuestions</b></a><br/>
+                <div class="navigation_comment"><i >this SOAP Method has an additional param to enable or disable the buttons
+ to apply for moderation this does only work in combination with the
+ room-type restricted</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationQuestionsAndAudioType"><b>addRoomWithModerationQuestionsAndAudioType</b></a><br/>
+                <div class="navigation_comment"><i >adds a new room with options for user questions and audio only</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationQuestionsAudioTypeAndHideOptions"><b>addRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a><br/>
+                <div class="navigation_comment"><i >adds a new room with options for user questions, audio only and hide</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomIdByExternalId"><b>getRoomIdByExternalId</b></a><br/>
+                <div class="navigation_comment"><i >Checks if a room with this exteralRoomId + externalRoomType does exist,
+ if yes it returns the room id if not, it will create the room and then
+ return the room id of the newly created room</i></div>
+                </div>
+                                               <div>
+                <a href="#updateRoomWithModeration"><b>updateRoomWithModeration</b></a><br/>
+                <div class="navigation_comment"><i >Updates a conference room by its room id</i></div>
+                </div>
+                                               <div>
+                <a href="#updateRoomWithModerationAndQuestions"><b>updateRoomWithModerationAndQuestions</b></a><br/>
+                <div class="navigation_comment"><i ></i></div>
+                </div>
+                                               <div>
+                <a href="#updateRoomWithModerationQuestionsAudioTypeAndHideOptions"><b>updateRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a><br/>
+                <div class="navigation_comment"><i >update room with options for user questions, audio only and hide</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteRoom"><b>deleteRoom</b></a><br/>
+                <div class="navigation_comment"><i >Delete a room by its room id</i></div>
+                </div>
+                                               <div>
+                <a href="#kickUser"><b>kickUser</b></a><br/>
+                <div class="navigation_comment"><i >kick all uses of a certain room</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationAndExternalType"><b>addRoomWithModerationAndExternalType</b></a><br/>
+                <div class="navigation_comment"><i >Add a new conference room with option to set the external room type, the
+ external room type should be set if multiple applications use the same
+ OpenMeetings instance</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationExternalTypeAndAudioType"><b>addRoomWithModerationExternalTypeAndAudioType</b></a><br/>
+                <div class="navigation_comment"><i >Adds a new room with options for audio only</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationAndRecordingFlags"><b>addRoomWithModerationAndRecordingFlags</b></a><br/>
+                <div class="navigation_comment"><i >Adds a new room with options for recording</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationExternalTypeAndTopBarOption"><b>addRoomWithModerationExternalTypeAndTopBarOption</b></a><br/>
+                <div class="navigation_comment"><i >Add a conference room with options to disable the top menu bar in the
+ conference room</i></div>
+                </div>
+                                               <div>
+                <a href="#getInvitationHash"><b>getInvitationHash</b></a><br/>
+                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)</i></div>
+                </div>
+                                               <div>
+                <a href="#sendInvitationHash"><b>sendInvitationHash</b></a><br/>
+                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)</i></div>
+                </div>
+                                               <div>
+                <a href="#sendInvitationHashWithDateObject"><b>sendInvitationHashWithDateObject</b></a><br/>
+                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomsWithCurrentUsersByList"><b>getRoomsWithCurrentUsersByList</b></a><br/>
+                <div class="navigation_comment"><i >Return a RoomReturn Object with information of the current users of a
+ conference room</i></div>
+                </div>
+                                               <div>
+                <a href="#getRoomsWithCurrentUsersByListAndType"><b>getRoomsWithCurrentUsersByListAndType</b></a><br/>
+                <div class="navigation_comment"><i >Return a RoomReturn Object with information of the current users of a
+ conference room with option to search for special external room types</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomWithModerationAndExternalTypeAndStartEnd"><b>addRoomWithModerationAndExternalTypeAndStartEnd</b></a><br/>
+                <div class="navigation_comment"><i >Adds a conference room that is only available for a period of time</i></div>
+                </div>
+                                               <div>
+                <a href="#addMeetingMemberRemindToRoom"><b>addMeetingMemberRemindToRoom</b></a><br/>
+                <div class="navigation_comment"><i >Add a meeting member to a certain room. This is the same as adding an
+ external user to a event in the calendar.</i></div>
+                </div>
+                                               <div>
+                <a href="#addExternalMeetingMemberRemindToRoom"><b>addExternalMeetingMemberRemindToRoom</b></a><br/>
+                <div class="navigation_comment"><i >Add a meeting member to a certain room. This is the same as adding an
+ external user to a event in the calendar. with a certain time zone</i></div>
+                </div>
+                                               <div>
+                <a href="#closeRoom"><b>closeRoom</b></a><br/>
+                <div class="navigation_comment"><i >Method to remotely close or open rooms. If a room is closed all users
+ inside the room and all users that try to enter it will be redirected to
+ the redirectURL that is defined in the Room-Object.
+ 
+ Returns positive value if authentication was successful.</i></div>
+                </div>
+                                               <div>
+                <a href="#modifyRoomParameter"><b>modifyRoomParameter</b></a><br/>
+                <div class="navigation_comment"><i >Method to update arbitrary room parameter.</i></div>
+                </div>
+                                               <div>
+                <a href="#addRoomToOrg"><b>addRoomToOrg</b></a><br/>
+                <div class="navigation_comment"><i >Adds a room to an organization</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in RoomService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomsPublic" ><b>getRoomsPublic</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomsPublic (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns an Object of Type RoomsList which contains a list of
+ Room-Objects. Every Room-Object contains a Roomtype and all informations
+ about that Room. The List of current-users in the room is Null if you get
+ them via SOAP. The Roomtype can be 1 for conference rooms or 2 for
+ audience rooms.
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.room.RoomDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsPublic?SID=VALUE&roomtypes_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsPublic?SID=VALUE&amp;roomtypes_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteFlvRecording" ><b>deleteFlvRecording</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteFlvRecording (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long flvRecordingId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Deletes a flv recording
+    			</p>
+    			<p>
+                  Return Type: boolean
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">flvRecordingId</td>
+	                     <td valign="top">the id of the recording</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/deleteFlvRecording?SID=VALUE&flvRecordingId=VALUE">http://localhost:5080/openmeetings/services/RoomService/deleteFlvRecording?SID=VALUE&amp;flvRecordingId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFlvRecordingByExternalUserId" ><b>getFlvRecordingByExternalUserId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFlvRecordingByExternalUserId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Gets a list of flv recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">the externalUserId</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUsertype</td>
+	                     <td valign="top">the externalUserType</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalUserId?SID=VALUE&externalUserId=VALUE&externalUserType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalUserId?SID=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFlvRecordingByExternalRoomTypeAndCreator" ><b>getFlvRecordingByExternalRoomTypeAndCreator</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFlvRecordingByExternalRoomTypeAndCreator (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			       			     , 
+    			       			   Long insertedBy
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Gets a list of flv recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">externalRoomType specified when creating the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">insertedBy</td>
+	                     <td valign="top">the userId that created the recording</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeAndCreator?SID=VALUE&externalRoomType=VALUE&insertedBy=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeAndCreator?SID=VALUE&amp;externalRoomType=VALUE&amp;insertedBy=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFlvRecordingByExternalRoomTypeByList" ><b>getFlvRecordingByExternalRoomTypeByList</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFlvRecordingByExternalRoomTypeByList (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Gets a list of flv recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">externalRoomType specified when creating the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeByList?SID=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeByList?SID=VALUE&amp;externalRoomType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRecordingsByExternalType" ><b>getRecordingsByExternalType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRecordingsByExternalType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Gets a list of recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged-in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalType</td>
+	                     <td valign="top">externalType specified when creating room or user</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRecordingsByExternalType?SID=VALUE&externalType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRecordingsByExternalType?SID=VALUE&amp;externalType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFlvRecordingByExternalRoomType" ><b>getFlvRecordingByExternalRoomType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFlvRecordingByExternalRoomType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Gets a list of flv recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">externalRoomType specified when creating the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomType?SID=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomType?SID=VALUE&amp;externalRoomType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getFlvRecordingByRoomId" ><b>getFlvRecordingByRoomId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getFlvRecordingByRoomId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long roomId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Get list of recordings
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.dto.record.RecordingDTO>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomId</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByRoomId?SID=VALUE&roomId=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByRoomId?SID=VALUE&amp;roomId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomTypes" ><b>getRoomTypes</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomTypes (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  List of available room types
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.db.entity.room.RoomType>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomTypes?SID=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomTypes?SID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomCounters" ><b>getRoomCounters</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomCounters (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Integer roomId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns current users for rooms ids
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.axis.services.RoomCountBean>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">roomId</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomCounters?SID=VALUE&roomId=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomCounters?SID=VALUE&amp;roomId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomById" ><b>getRoomById</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomById (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long rooms_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  returns a conference room object
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.room.RoomDTO
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">rooms_id</td>
+	                     <td valign="top">- the room id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomById?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomById?SID=VALUE&amp;rooms_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomWithClientObjectsById" ><b>getRoomWithClientObjectsById</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomWithClientObjectsById (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long rooms_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns a object of type RoomReturn
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.axis.services.RoomReturn
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">rooms_id</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomWithClientObjectsById?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomWithClientObjectsById?SID=VALUE&amp;rooms_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRooms" ><b>getRooms</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRooms (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			       			     , 
+    			       			   String orderby
+    			       			    			       			     , 
+    			       			   boolean asc
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns a List of Objects of Rooms You can use "name" as value for
+ orderby or rooms_id
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.room.RoomSearchResult
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">- The id you want to start</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">- The maximum you want to get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">orderby</td>
+	                     <td valign="top">- The column it will be ordered</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">asc</td>
+	                     <td valign="top">- Asc or Desc sort ordering</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRooms?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRooms?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomsWithCurrentUsers" ><b>getRoomsWithCurrentUsers</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomsWithCurrentUsers (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			       			     , 
+    			       			   String orderby
+    			       			    			       			     , 
+    			       			   boolean asc
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Returns a List of Objects of Rooms You can use "name" as value for
+ orderby or rooms_id. It also fills the attribute currentUsers in the
+ Room-Object
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.room.RoomSearchResult
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">- The id you want to start</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">- The maximum you want to get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">orderby</td>
+	                     <td valign="top">- The column it will be ordered</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">asc</td>
+	                     <td valign="top">- Asc or Desc sort ordering</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsers?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsers?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModeration" ><b>addRoomWithModeration</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModeration (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Create a conference room
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">Name of the Room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">any comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">the maximum users allowed in this room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">If this room is public (use true if you don't deal with
+            different Organizations)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">is it a Calendar Room (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
+            becomeModerator param in setUserObjectAndGenerateRoomHash to
+            set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModeration?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModeration?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationAndQuestions" ><b>addRoomWithModerationAndQuestions</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationAndQuestions (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  this SOAP Method has an additional param to enable or disable the buttons
+ to apply for moderation this does only work in combination with the
+ room-type restricted
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">Name of the Room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">any comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">the maximum users allowed in this room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">If this room is public (use true if you don't deal with
+            different Organizations)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">is it a Calendar Room (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
+            becomeModerator param in setUserObjectAndGenerateRoomHash to
+            set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndQuestions?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndQuestions?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationQuestionsAndAudioType" ><b>addRoomWithModerationQuestionsAndAudioType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationQuestionsAndAudioType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  adds a new room with options for user questions and audio only
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">Name of the Room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">any comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">the maximum users allowed in this room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">If this room is public (use true if you don't deal with
+            different Organizations)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">is it a Calendar Room (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator param in setUserObjectAndGenerateRoomHash to
+            set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAndAudioType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAndAudioType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationQuestionsAudioTypeAndHideOptions" ><b>addRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationQuestionsAudioTypeAndHideOptions (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			       			     , 
+    			       			   Boolean hideTopBar
+    			       			    			       			     , 
+    			       			   Boolean hideChat
+    			       			    			       			     , 
+    			       			   Boolean hideActivitiesAndActions
+    			       			    			       			     , 
+    			       			   Boolean hideFilesExplorer
+    			       			    			       			     , 
+    			       			   Boolean hideActionsMenu
+    			       			    			       			     , 
+    			       			   Boolean hideScreenSharing
+    			       			    			       			     , 
+    			       			   Boolean hideWhiteboard
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  adds a new room with options for user questions, audio only and hide
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">Name of the Room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">any comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">the maximum users allowed in this room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">If this room is public (use true if you don't deal with
+            different Organizations)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">is it a Calendar Room (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator param in setUserObjectAndGenerateRoomHash to
+            set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideTopBar</td>
+	                     <td valign="top">hide or show TopBar</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideChat</td>
+	                     <td valign="top">hide or show Chat</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideActivitiesAndActions</td>
+	                     <td valign="top">hide or show Activities And Actions</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideFilesExplorer</td>
+	                     <td valign="top">hide or show Files Explorer</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideActionsMenu</td>
+	                     <td valign="top">hide or show Actions Menu</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideScreenSharing</td>
+	                     <td valign="top">hide or show Screen Sharing</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideWhiteboard</td>
+	                     <td valign="top">hide or show Whiteboard. If whitboard is hidden, video pods
+            and scrollbar appear instead.</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&hideTopBar=VALUE&hideChat=VALUE&hideActivitiesAndActions=VALUE&hideFilesExplorer=VALUE&hideActionsMenu=VALUE&hideScreenSharing=VALUE&hideWhiteboard=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;hideTopBar=VALUE&amp;hideChat=VALUE&amp;hideActivitiesAndActions=VALUE&amp;hideFilesExplorer=VALUE&amp;hideActionsMenu=VALUE&amp;hideScreenSharing=VALUE&amp;hideWhiteboard=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomIdByExternalId" ><b>getRoomIdByExternalId</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomIdByExternalId (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Long externalRoomId
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Checks if a room with this exteralRoomId + externalRoomType does exist,
+ if yes it returns the room id if not, it will create the room and then
+ return the room id of the newly created room
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">Name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">any comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">the maximum users allowed in this room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">If this room is public (use true if you don't deal with
+            different Organizations)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">is it a Calendar Room? (use false if not sure what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
+            becomeModerator param in setUserObjectAndGenerateRoomHash to
+            set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">externalRoomId</td>
+	                     <td valign="top">your external room id may set here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">you can specify your system-name or type of room here, for
+            example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomIdByExternalId?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomId=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomIdByExternalId?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomId=VALUE&amp;externalRoomType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateRoomWithModeration" ><b>updateRoomWithModeration</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateRoomWithModeration (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Updates a conference room by its room id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id to update</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModeration?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModeration?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateRoomWithModerationAndQuestions" ><b>updateRoomWithModerationAndQuestions</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateRoomWithModerationAndQuestions (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id to update</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="updateRoomWithModerationQuestionsAudioTypeAndHideOptions" ><b>updateRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>updateRoomWithModerationQuestionsAudioTypeAndHideOptions (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			       			     , 
+    			       			   Boolean hideTopBar
+    			       			    			       			     , 
+    			       			   Boolean hideChat
+    			       			    			       			     , 
+    			       			   Boolean hideActivitiesAndActions
+    			       			    			       			     , 
+    			       			   Boolean hideFilesExplorer
+    			       			    			       			     , 
+    			       			   Boolean hideActionsMenu
+    			       			    			       			     , 
+    			       			   Boolean hideScreenSharing
+    			       			    			       			     , 
+    			       			   Boolean hideWhiteboard
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  update room with options for user questions, audio only and hide
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id to update</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">number of participants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment (use false if not sure what that
+            means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideTopBar</td>
+	                     <td valign="top">hide or show TopBar</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideChat</td>
+	                     <td valign="top">hide or show Chat</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideActivitiesAndActions</td>
+	                     <td valign="top">hide or show Activities And Actions</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideFilesExplorer</td>
+	                     <td valign="top">hide or show Files Explorer</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideActionsMenu</td>
+	                     <td valign="top">hide or show Actions Menu</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideScreenSharing</td>
+	                     <td valign="top">hide or show Screen Sharing</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideWhiteboard</td>
+	                     <td valign="top">hide or show Whiteboard. If whitboard is hidden, video pods
+            and scrollbar appear instead.</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&hideTopBar=VALUE&hideChat=VALUE&hideActivitiesAndActions=VALUE&hideFilesExplorer=VALUE&hideActionsMenu=VALUE&hideScreenSharing=VALUE&hideWhiteboard=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;hideTopBar=VALUE&amp;hideChat=VALUE&amp;hideActivitiesAndActions=VALUE&amp;hideFilesExplorer=VALUE&amp;hideActionsMenu=VALUE&amp;hideScreenSharing=VALUE&amp;hideWhiteboard=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteRoom" ><b>deleteRoom</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteRoom (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long rooms_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Delete a room by its room id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">rooms_id</td>
+	                     <td valign="top"></td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/deleteRoom?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/deleteRoom?SID=VALUE&amp;rooms_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="kickUser" ><b>kickUser</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>kickUser (
+    			    			    			       			   String SID_Admin
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  kick all uses of a certain room
+    			</p>
+    			<p>
+                  Return Type: java.lang.Boolean
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin
+            _Admin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/kickUser?SID_Admin=VALUE&room_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/kickUser?SID_Admin=VALUE&amp;room_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationAndExternalType" ><b>addRoomWithModerationAndExternalType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationAndExternalType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a new conference room with option to set the external room type, the
+ external room type should be set if multiple applications use the same
+ OpenMeetings instance
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type (can be used to identify different
+            external systems using same OpenMeetings instance)</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationExternalTypeAndAudioType" ><b>addRoomWithModerationExternalTypeAndAudioType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationExternalTypeAndAudioType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a new room with options for audio only
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type (can be used to identify different
+            external systems using same OpenMeetings instance)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndAudioType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndAudioType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationAndRecordingFlags" ><b>addRoomWithModerationAndRecordingFlags</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationAndRecordingFlags (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			       			     , 
+    			       			   Boolean waitForRecording
+    			       			    			       			     , 
+    			       			   Boolean allowRecording
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a new room with options for recording
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type (can be used to identify different
+            external systems using same OpenMeetings instance)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">waitForRecording</td>
+	                     <td valign="top">if the users in the room will get a notification that they
+            should start recording before they do a conference</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowRecording</td>
+	                     <td valign="top">if the recording option is available or not</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndRecordingFlags?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&waitForRecording=VALUE&allowRecording=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndRecordingFlags?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;waitForRecording=VALUE&amp;allowRecording=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationExternalTypeAndTopBarOption" ><b>addRoomWithModerationExternalTypeAndTopBarOption</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationExternalTypeAndTopBarOption (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			       			     , 
+    			       			   Boolean allowUserQuestions
+    			       			    			       			     , 
+    			       			   Boolean isAudioOnly
+    			       			    			       			     , 
+    			       			   Boolean waitForRecording
+    			       			    			       			     , 
+    			       			   Boolean allowRecording
+    			       			    			       			     , 
+    			       			   Boolean hideTopBar
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a conference room with options to disable the top menu bar in the
+ conference room
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type (can be used to identify different
+            external systems using same OpenMeetings instance)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowUserQuestions</td>
+	                     <td valign="top">enable or disable the button to allow users to apply for
+            moderation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isAudioOnly</td>
+	                     <td valign="top">enable or disable the video / or audio-only</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">waitForRecording</td>
+	                     <td valign="top">if the users in the room will get a notification that they
+            should start recording before they do a conference</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">allowRecording</td>
+	                     <td valign="top">if the recording option is available or not</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">hideTopBar</td>
+	                     <td valign="top">if the top bar in the conference room is visible or not</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&waitForRecording=VALUE&allowRecording=VALUE&hideTopBar=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;waitForRecording=VALUE&amp;allowRecording=VALUE&amp;hideTopBar=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getInvitationHash" ><b>getInvitationHash</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getInvitationHash (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String invitationpass
+    			       			    			       			     , 
+    			       			   Integer valid
+    			       			    			       			     , 
+    			       			   String validFromDate
+    			       			    			       			     , 
+    			       			   String validFromTime
+    			       			    			       			     , 
+    			       			   String validToDate
+    			       			    			       			     , 
+    			       			   String validToTime
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
+            valid Session Token</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">the username of the User that he will get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the conference room id of the invitation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">if the invitation is password protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">invitationpass</td>
+	                     <td valign="top">the password for accessing the conference room via the
+            invitation hash</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">valid</td>
+	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
+            period, 3: one-time</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromDate</td>
+	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
+            2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromTime</td>
+	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToDate</td>
+	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
+            2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToTime</td>
+	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getInvitationHash?SID=VALUE&username=VALUE&room_id=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE">http://localhost:5080/openmeetings/services/RoomService/getInvitationHash?SID=VALUE&amp;username=VALUE&amp;room_id=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="sendInvitationHash" ><b>sendInvitationHash</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>sendInvitationHash (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String message
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String subject
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String conferencedomain
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String invitationpass
+    			       			    			       			     , 
+    			       			   Integer valid
+    			       			    			       			     , 
+    			       			   String validFromDate
+    			       			    			       			     , 
+    			       			   String validFromTime
+    			       			    			       			     , 
+    			       			   String validToDate
+    			       			    			       			     , 
+    			       			   String validToTime
+    			       			    			       			     , 
+    			       			   Long language_id
+    			       			    			       			     , 
+    			       			   Boolean sendMail
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
+            valid Session Token</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">the Username of the User that he will get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">message</td>
+	                     <td valign="top">the Message in the Email Body send with the invitation if
+            sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">the Email to send the invitation to if sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">subject</td>
+	                     <td valign="top">the subject of the Email send with the invitation if sendMail
+            is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the conference room id of the invitation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">conferencedomain</td>
+	                     <td valign="top">the domain of the room (keep empty)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">if the invitation is password protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">invitationpass</td>
+	                     <td valign="top">the password for accessing the conference room via the
+            invitation hash</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">valid</td>
+	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
+            period, 3: one-time</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromDate</td>
+	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
+            2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromTime</td>
+	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToDate</td>
+	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
+            2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToTime</td>
+	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language id of the EMail that is send with the invitation
+            if sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">sendMail</td>
+	                     <td valign="top">if sendMail is true then the RPC-Call will send the invitation
+            to the email</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/sendInvitationHash?SID=VALUE&username=VALUE&message=VALUE&email=VALUE&subject=VALUE&room_id=VALUE&conferencedomain=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE&language_id=VALUE&sendMail=VALUE">http://localhost:5080/openmeetings/services/RoomService/sendInvitationHash?SID=VALUE&amp;username=VALUE&amp;message=VALUE&amp;email=VALUE&amp;subject=VALUE&amp;room_id=VALUE&amp;conferencedomain=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE&amp;language_id=VALUE&amp;sendMail=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="sendInvitationHashWithDateObject" ><b>sendInvitationHashWithDateObject</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>sendInvitationHashWithDateObject (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String message
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String subject
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String conferencedomain
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String invitationpass
+    			       			    			       			     , 
+    			       			   Integer valid
+    			       			    			       			     , 
+    			       			   Date fromDate
+    			       			    			       			     , 
+    			       			   Date toDate
+    			       			    			       			     , 
+    			       			   Long language_id
+    			       			    			       			     , 
+    			       			   Boolean sendMail
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Create a Invitation hash and optionally send it by mail the From to Date
+ is as String as some SOAP libraries do not accept Date Objects in SOAP
+ Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+ leading zero's)
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
+            valid Session Token</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">the Username of the User that he will get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">message</td>
+	                     <td valign="top">the Message in the Email Body send with the invitation if
+            sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">the Email to send the invitation to if sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">subject</td>
+	                     <td valign="top">the subject of the Email send with the invitation if sendMail
+            is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the conference room id of the invitation</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">conferencedomain</td>
+	                     <td valign="top">the domain of the room (keep empty)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">if the invitation is password protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">invitationpass</td>
+	                     <td valign="top">the password for accessing the conference room via the
+            invitation hash</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">valid</td>
+	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
+            period, 3: one-time</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">fromDate</td>
+	                     <td valign="top">Date as Date Object only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Date
+	                     		                     </td>
+	                     <td valign="top">toDate</td>
+	                     <td valign="top">Date as Date Object only of interest if valid is type 2</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language id of the EMail that is send with the invitation
+            if sendMail is true</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">sendMail</td>
+	                     <td valign="top">if sendMail is true then the RPC-Call will send the invitation
+            to the email</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/sendInvitationHashWithDateObject?SID=VALUE&username=VALUE&message=VALUE&email=VALUE&subject=VALUE&room_id=VALUE&conferencedomain=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&fromDate=VALUE&toDate=VALUE&language_id=VALUE&sendMail=VALUE">http://localhost:5080/openmeetings/services/RoomService/sendInvitationHashWithDateObject?SID=VALUE&amp;username=VALUE&amp;message=VALUE&amp;email=VALUE&amp;subject=VALUE&amp;room_id=VALUE&amp;conferencedomain=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;fromDate=VALUE&amp;toDate=VALUE&amp;language_id=VALUE&amp;sendMail=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomsWithCurrentUsersByList" ><b>getRoomsWithCurrentUsersByList</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomsWithCurrentUsersByList (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			       			     , 
+    			       			   String orderby
+    			       			    			       			     , 
+    			       			   boolean asc
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Return a RoomReturn Object with information of the current users of a
+ conference room
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.axis.services.RoomReturn>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">The id you want to start</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">The maximum you want to get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">orderby</td>
+	                     <td valign="top">The column it will be ordered</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">asc</td>
+	                     <td valign="top">Asc or Desc sort ordering</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByList?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByList?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getRoomsWithCurrentUsersByListAndType" ><b>getRoomsWithCurrentUsersByListAndType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getRoomsWithCurrentUsersByListAndType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			       			     , 
+    			       			   String orderby
+    			       			    			       			     , 
+    			       			   boolean asc
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Return a RoomReturn Object with information of the current users of a
+ conference room with option to search for special external room types
+    			</p>
+    			<p>
+                  Return Type: java.util.List<org.apache.openmeetings.axis.services.RoomReturn>
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">The id you want to start</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">The maximum you want to get</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">orderby</td>
+	                     <td valign="top">The column it will be ordered</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">asc</td>
+	                     <td valign="top">Asc or Desc sort ordering</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByListAndType?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByListAndType?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE&amp;externalRoomType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomWithModerationAndExternalTypeAndStartEnd" ><b>addRoomWithModerationAndExternalTypeAndStartEnd</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomWithModerationAndExternalTypeAndStartEnd (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   Long roomtypes_id
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			       			     , 
+    			       			   Long numberOfPartizipants
+    			       			    			       			     , 
+    			       			   Boolean ispublic
+    			       			    			       			     , 
+    			       			   Boolean appointment
+    			       			    			       			     , 
+    			       			   Boolean isDemoRoom
+    			       			    			       			     , 
+    			       			   Integer demoTime
+    			       			    			       			     , 
+    			       			   Boolean isModeratedRoom
+    			       			    			       			     , 
+    			       			   String externalRoomType
+    			       			    			       			     , 
+    			       			   String validFromDate
+    			       			    			       			     , 
+    			       			   String validFromTime
+    			       			    			       			     , 
+    			       			   String validToDate
+    			       			    			       			     , 
+    			       			   String validToTime
+    			       			    			       			     , 
+    			       			   Boolean isPasswordProtected
+    			       			    			       			     , 
+    			       			   String password
+    			       			    			       			     , 
+    			       			   Long reminderTypeId
+    			       			    			       			     , 
+    			       			   String redirectURL
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a conference room that is only available for a period of time
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">new name of the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">roomtypes_id</td>
+	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
+            Restricted, 4 = Interview)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">new comment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">numberOfPartizipants</td>
+	                     <td valign="top">new numberOfParticipants</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">ispublic</td>
+	                     <td valign="top">is public</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">appointment</td>
+	                     <td valign="top">if the room is an appointment</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isDemoRoom</td>
+	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
+            what that means)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Integer
+	                     		                     </td>
+	                     <td valign="top">demoTime</td>
+	                     <td valign="top">time in seconds after the user will be logged out (only
+            enabled if isDemoRoom is true)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isModeratedRoom</td>
+	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
+            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+            to set a user as default Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalRoomType</td>
+	                     <td valign="top">the external room type (can be used to identify different
+            external systems using same OpenMeetings instance)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromDate</td>
+	                     <td valign="top">valid from as Date format: dd.MM.yyyy</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validFromTime</td>
+	                     <td valign="top">valid to as time format: mm:hh</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToDate</td>
+	                     <td valign="top">valid to Date format: dd.MM.yyyy</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">validToTime</td>
+	                     <td valign="top">valid to time format: mm:hh</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">isPasswordProtected</td>
+	                     <td valign="top">If the links send via EMail to invited people is password
+            protected</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">password</td>
+	                     <td valign="top">Password for Invitations send via Mail</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">reminderTypeId</td>
+	                     <td valign="top">1=none, 2=simple mail, 3=ICAL</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">redirectURL</td>
+	                     <td valign="top">URL Users will be lead to if the Conference Time is elapsed</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalTypeAndStartEnd?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE&isPasswordProtected=VALUE&password=VALUE&reminderTypeId=VALUE&redirectURL=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalTypeAndStartEnd?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE&amp;isPasswordProtected=VALUE&amp;password=VALUE&amp;reminderTypeId=VALUE&amp;redirectURL=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addMeetingMemberRemindToRoom" ><b>addMeetingMemberRemindToRoom</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addMeetingMemberRemindToRoom (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   Long language_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a meeting member to a certain room. This is the same as adding an
+ external user to a event in the calendar.
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">The Room Id the meeting member is going to be added</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">The first name of the meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">The last name of the meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">The email of the Meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">The ID of the language, for the email that is send to the
+            meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addMeetingMemberRemindToRoom?SID=VALUE&room_id=VALUE&firstname=VALUE&lastname=VALUE&email=VALUE&language_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/addMeetingMemberRemindToRoom?SID=VALUE&amp;room_id=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;email=VALUE&amp;language_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addExternalMeetingMemberRemindToRoom" ><b>addExternalMeetingMemberRemindToRoom</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addExternalMeetingMemberRemindToRoom (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   Long language_id
+    			       			    			       			     , 
+    			       			   String jNameTimeZone
+    			       			    			       			     , 
+    			       			   String invitorName
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a meeting member to a certain room. This is the same as adding an
+ external user to a event in the calendar. with a certain time zone
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">The Room Id the meeting member is going to be added</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">The first name of the meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">The last name of the meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">The email of the Meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">The ID of the language, for the email that is send to the
+            meeting member</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">jNameTimeZone</td>
+	                     <td valign="top">name of the timezone</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">invitorName</td>
+	                     <td valign="top">name of invitation creators</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addExternalMeetingMemberRemindToRoom?SID=VALUE&room_id=VALUE&firstname=VALUE&lastname=VALUE&email=VALUE&language_id=VALUE&jNameTimeZone=VALUE&invitorName=VALUE">http://localhost:5080/openmeetings/services/RoomService/addExternalMeetingMemberRemindToRoom?SID=VALUE&amp;room_id=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;email=VALUE&amp;language_id=VALUE&amp;jNameTimeZone=VALUE&amp;invitorName=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="closeRoom" ><b>closeRoom</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>closeRoom (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   Boolean status
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to remotely close or open rooms. If a room is closed all users
+ inside the room and all users that try to enter it will be redirected to
+ the redirectURL that is defined in the Room-Object.
+ 
+ Returns positive value if authentication was successful.
+    			</p>
+    			<p>
+                  Return Type: int
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">status</td>
+	                     <td valign="top">false = close, true = open</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/closeRoom?SID=VALUE&room_id=VALUE&status=VALUE">http://localhost:5080/openmeetings/services/RoomService/closeRoom?SID=VALUE&amp;room_id=VALUE&amp;status=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="modifyRoomParameter" ><b>modifyRoomParameter</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>modifyRoomParameter (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   String paramName
+    			       			    			       			     , 
+    			       			   String paramValue
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to update arbitrary room parameter.
+    			</p>
+    			<p>
+                  Return Type: int
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID of the User. This SID must be marked as logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">paramName</td>
+	                     <td valign="top">the name of parameter to be updated, please NOTE rooms_id is not updatable as well as fields of type {@link Date} and {@link List}</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">paramValue</td>
+	                     <td valign="top">the value to be set, please use "type id" to set room type</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/modifyRoomParameter?SID=VALUE&room_id=VALUE&paramName=VALUE&paramValue=VALUE">http://localhost:5080/openmeetings/services/RoomService/modifyRoomParameter?SID=VALUE&amp;room_id=VALUE&amp;paramName=VALUE&amp;paramValue=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addRoomToOrg" ><b>addRoomToOrg</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addRoomToOrg (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long rooms_id
+    			       			    			       			     , 
+    			       			   Long organisation_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a room to an organization
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID of the User. This SID must be marked as Loggedin</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">rooms_id</td>
+	                     <td valign="top">- Id of room to be added</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">organisation_id</td>
+	                     <td valign="top">- Id of organisation that the room is being paired with</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomToOrg?SID=VALUE&rooms_id=VALUE&organisation_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomToOrg?SID=VALUE&amp;rooms_id=VALUE&amp;organisation_id=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/SakaiPlugin.html b/docs/SakaiPlugin.html
new file mode 100644
index 0000000..f3ac700
--- /dev/null
+++ b/docs/SakaiPlugin.html
@@ -0,0 +1,460 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Sakai Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				In 2010,
+				<a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company
+				</a>
+				has developed a plugin that integrates Sakai LMS and OpenMeetings
+				.
+			</p>
+                                                <p>
+				The plugin was developed for some Spanish Universities that use
+				Sakai and belongs to
+				<a rel="nofollow" target="_blank" href="https://confluence.sakaiproject.org/display/SPANISH/S2G+-+Spanish+Sakai+Group">"Spanish Sakai Universities"</a>
+				group:
+			</p>
+                                                <ul>
+				<li>
+					<a rel="nofollow" href="http://www.udl.es/" target="_blank">Universitat de Lleida </a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.upv.es/" target="_blank">Universidad Politécnica de Valencia </a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.um.es/" target="_blank">Universidad de Murcia</a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.unavarra.es/" target="_blank">Universidad Pública de Navarra</a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.ucam.edu/" target="_blank">Universidad Católica San Antonio de Murcia
+					</a>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Create videoconference rooms through Sakai: </li>
+				<li>
+					<ol>
+						<li>Integrated with calendar </li>
+						<li>Integrated with announcements </li>
+						<li>Sends an email to all site participants </li>
+						<li>Rooms restricted to site groups </li>
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+                                                <p />
+                                                <ul>
+				<li>Future requirements </li>
+				<li>
+					<ol>
+						<li>Publish room recordings to students </li>
+						<li>Room reservation </li>
+					</ol>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Source"><strong>Source</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can download and build the source code
+				<a rel="nofollow" target="_blank" href="https://source.sakaiproject.org/contrib/samoo/adobeconnectpro-openmeetings-integration/trunk/">here</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Installation and documentation"><strong>Installation and documentation</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				The documentation resides in the
+				<a rel="nofollow" target="_blank" href="https://confluence.sakaiproject.org/display/OPENMTG/Home">Sakai confluence space</a>
+			</p>
+                                                <p>
+				Please contact the mailing list for further information. For
+				commercial support you can also contact
+				<a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company</a>
+				or other companies from the list of
+				<a href="commercial-support.html">commercial support</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/ServerService.html b/docs/ServerService.html
new file mode 100644
index 0000000..9d8bac1
--- /dev/null
+++ b/docs/ServerService.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: ServerService</h3>
+	   <p>This class provides method implementations necessary for OM to manage servers
+ participating in cluster.<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/ServerService?wsdl">http://localhost:5080/openmeetings/services/ServerService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in ServerService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#getServers"><b>getServers</b></a><br/>
+                <div class="navigation_comment"><i >Method to retrieve the list of the servers participating in cluster</i></div>
+                </div>
+                                               <div>
+                <a href="#getServerCount"><b>getServerCount</b></a><br/>
+                <div class="navigation_comment"><i >Method to retrieve the total count of the servers participating in
+ cluster</i></div>
+                </div>
+                                               <div>
+                <a href="#saveServer"><b>saveServer</b></a><br/>
+                <div class="navigation_comment"><i >Method to add/update server</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteServer"><b>deleteServer</b></a><br/>
+                <div class="navigation_comment"><i >Method to delete server</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in ServerService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getServers" ><b>getServers</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getServers (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to retrieve the list of the servers participating in cluster
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.server.Server[]
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- session id to identify the user making request</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">- server index to start with</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">- Maximum server count</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/ServerService/getServers?SID=VALUE&start=VALUE&max=VALUE">http://localhost:5080/openmeetings/services/ServerService/getServers?SID=VALUE&amp;start=VALUE&amp;max=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getServerCount" ><b>getServerCount</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getServerCount (
+    			    			    			       			   String SID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to retrieve the total count of the servers participating in
+ cluster
+    			</p>
+    			<p>
+                  Return Type: int
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- session id to identify the user making request</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    												<a href="http://localhost:5080/openmeetings/services/ServerService/getServerCount?SID=VALUE">http://localhost:5080/openmeetings/services/ServerService/getServerCount?SID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="saveServer" ><b>saveServer</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>saveServer (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long id
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			       			     , 
+    			       			   String address
+    			       			    			       			     , 
+    			       			   int port
+    			       			    			       			     , 
+    			       			   String user
+    			       			    			       			     , 
+    			       			   String pass
+    			       			    			       			     , 
+    			       			   String webapp
+    			       			    			       			     , 
+    			       			   String protocol
+    			       			    			       			     , 
+    			       			   Boolean active
+    			       			    			       			     , 
+    			       			   String comment
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to add/update server
+    			</p>
+    			<p>
+                  Return Type: long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- session id to identify the user making request</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">id</td>
+	                     <td valign="top">- the id of the server to save</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">- the name of the server to save</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">address</td>
+	                     <td valign="top">- the address(DNS name or IP) of the server to save</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">port</td>
+	                     <td valign="top">- the http port of the slave</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">user</td>
+	                     <td valign="top">- REST user to access the slave</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">pass</td>
+	                     <td valign="top">- REST pass to access the slave</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">webapp</td>
+	                     <td valign="top">- webapp name of the OpenMeetings instance</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">protocol</td>
+	                     <td valign="top">- protocol to access the OpenMeetings instance</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Boolean
+	                     		                     </td>
+	                     <td valign="top">active</td>
+	                     <td valign="top">- if the server currently participates in the cluster or not</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">comment</td>
+	                     <td valign="top">- comment for the server</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/ServerService/saveServer?SID=VALUE&id=VALUE&name=VALUE&address=VALUE&port=VALUE&user=VALUE&pass=VALUE&webapp=VALUE&protocol=VALUE&active=VALUE&comment=VALUE">http://localhost:5080/openmeetings/services/ServerService/saveServer?SID=VALUE&amp;id=VALUE&amp;name=VALUE&amp;address=VALUE&amp;port=VALUE&amp;user=VALUE&amp;pass=VALUE&amp;webapp=VALUE&amp;protocol=VALUE&amp;active=VALUE&amp;comment=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteServer" ><b>deleteServer</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteServer (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Method to delete server
+    			</p>
+    			<p>
+                  Return Type: boolean
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- session id to identify the user making request</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">id</td>
+	                     <td valign="top">- the id of the server to delete</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/ServerService/deleteServer?SID=VALUE&id=VALUE">http://localhost:5080/openmeetings/services/ServerService/deleteServer?SID=VALUE&amp;id=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/SoapRestAPI.html b/docs/SoapRestAPI.html
new file mode 100644
index 0000000..abc229c
--- /dev/null
+++ b/docs/SoapRestAPI.html
@@ -0,0 +1,423 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Available WebServices"><strong>Available WebServices</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<div>
+					<a href="UserService.html" target="_BLANK">
+						<b>UserService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods to login and create hash to
+							directly enter
+							conference rooms, recordings or the application in
+							general
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="RoomService.html" target="_BLANK">
+						<b>RoomService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>RoomService contains methods to manipulate rooms and create
+							invitation hash
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="FileService.html" target="_BLANK">
+						<b>FileService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>Contains methods to import and upload files into the Files
+							section of the
+							conference room and the personal drive of any user
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="CalendarService.html" target="_BLANK">
+						<b>CalendarService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>CalendarService contains methods to create, edit delete
+							calendar meetings
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="JabberService.html" target="_BLANK">
+						<b>JabberService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods necessary for OM to Jabber integration.
+						All methods doesn't require admin privileges to get called.
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="ServerService.html" target="_BLANK">
+						<b>ServerService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods necessary for OM to manage servers 
+						participating in cluster.
+						All methods does require admin privileges to get called.
+						</i>
+					</div>
+				</div>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/SugarCRMPlugin.html b/docs/SugarCRMPlugin.html
new file mode 100644
index 0000000..f58c656
--- /dev/null
+++ b/docs/SugarCRMPlugin.html
@@ -0,0 +1,435 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="eschwert@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - SugarCRM Plugin</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="SugarCRM Plugin for OpenMeetings"><strong>SugarCRM Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You can get the latest Version of the Plugin for SugarCRM from the
+				<a href="downloads.html">downloads</a>
+				.
+			</p>
+                                                <p>
+				You can find the OpenMeetings Plugin also in the
+				<a href="http://www.sugarforge.org/projects/openmeetings/" target="_BLANK" rel="nofollow">SugarCRM Plugin database</a>
+				.
+			</p>
+                                                <p>
+				A demo version of the SugarCRM plugin is available at
+				<a href="http://demo.e-schwert.de/sugarcrm/" target="_BLANK" rel="nofollow">demo.e-schwert.de</a>
+				. Username: demo Password: Demouser55 
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Features"><strong>Features</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The plugin contains the following features: </p>
+                                                <ul>
+				<li>Create videoconference rooms through SugarCRM: </li>
+				<li>
+					<ol>
+						<li>Integrated with calendar </li>
+						<li>Integrated with SugarCRM meetings </li>
+						<li>Sends invetations emails to meeting participants </li>					
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Installation the SugarCRM Plugin for OpenMeetings"><strong>Installation the SugarCRM Plugin for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>In SugarCRM's administration web-interface you will find the
+				module loader.
+			</p>
+                                                <a class="fancybox-buttons" href="images/moodle_plugin_conference.png">
+				<img src="images/SugarCRM_Installation.png" alt="" width="640" height="320" />
+			</a>
+                                                <ol>
+				<li>Upload the module with module loader in administration area. </li>
+				<li>Configure OpenMeetings settings. </li>
+				<li>Create OpenMeetings rooms. </li>				
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Demo video"><strong>Demo video</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The demo video of SugarCRM plugin show you the plugin in action </p>
+                                                <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/xrDbcXqxDq8?version=3&amp;feature=player_detailpage" />
+			      <param name="allowFullScreen" value="true" />
+			      <param name="allowScriptAccess" value="always" />
+			      <embed src="http://www.youtube.com/v/xrDbcXqxDq8?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360" />
+		      </object>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/TimeZoneHandling.html b/docs/TimeZoneHandling.html
new file mode 100644
index 0000000..2191231
--- /dev/null
+++ b/docs/TimeZoneHandling.html
@@ -0,0 +1,418 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Timezones</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				List of default Timezones:
+				<a href="http://openmeetings.googlecode.com/svn/trunk/singlewebapp/src/main/webapp/languages/timezones.xml" rel="nofollow">http://openmeetings.googlecode.com/svn/trunk/singlewebapp/src/main/webapp/languages/timezones.xml
+				</a>
+			</p>
+                                                <p>
+				To add a new Time Zone you have to lookup its represant in Java's
+				Timezone registry. You can then add freely new time zones to the XML
+				file. The XML entries are imported into the database into the table
+				<strong>om_timezone</strong>
+				during the installation of OpenMeetings. (Don't forget to stop the
+				server before you change anything in the database).
+			</p>
+                                                <p>
+				The Servers default timezone is stored in the configuration table in
+				the attribute
+				<strong>default.timezone</strong>
+				. The name in this value links to an attribute in the table
+				om_timezone in the column
+				<strong>jname</strong>
+				.
+			</p>
+                                                <p>
+				You can set a Flag
+				<strong>forceTimeZoneCheck</strong>
+				for each user that gives him a Pop-Up notification to change his
+				time zone. The Flag can be changed in the user administration of
+				OpenMeetings. This can be handy if you update from a previous
+				version of OpenMeetings to make sure users see the new feature and
+				update their settings.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to lookup timezone's"><strong>How to lookup timezone's</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div class="xmlcode">
+		  
+                    String[] ids = TimeZone.getAvailableIDs();<br />
+                    for (String id : ids) {<br />
+                        
+                        <div style="margin-left:20px">
+                        TimeZone timeZone = TimeZone.getTimeZone(id);<br />
+                        //TimeZone timeZone = timeRegistry.getTimeZone(id);<br />
+                        <br />
+                        Calendar cal = Calendar.getInstance();<br />
+                                <div style="margin-left:20px">
+                                cal.setTimeZone(timeZone);<br />
+                                // + cal.get(Calendar.DST_OFFSET)<br />
+                                int offset = cal.get(Calendar.ZONE_OFFSET);<br />
+                        <br />
+                                int offsetInMinutes = offset/1000/60;<br />
+                                <br />
+                                System.out.println("name" + id + "name offset "+offsetInMinutes+"offset ");
+                                </div>
+                        </div>
+                    }
+		  
+		  </div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Upgrade.html b/docs/Upgrade.html
new file mode 100644
index 0000000..b3e09a2
--- /dev/null
+++ b/docs/Upgrade.html
@@ -0,0 +1,429 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Upgrade</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Upgrading OpenMeetings via the Web-Interface"><strong>Upgrading OpenMeetings via the Web-Interface</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ol>
+				<li>
+					<p>There is a System Backup and Import tool. Login as Administrator and Administration &gt; Backup</p>
+					<a class="fancybox-buttons" href="images/backup.png"><img src="images/backup.png" alt="" width="600" /></a>
+					<p>
+						The Text in the Administration &gt; Backup section actually just says
+						it all. The backup contains users, rooms, organizations and
+						appointments (Invitations and Reminders are NOT included in the
+						Backup and Reminders will not be send again!). The Backup contains
+						also all uploaded Files and Documents and will re-import them again.
+		
+						Max Upload Size is 1000 MB.
+					</p>
+				</li>
+				<li>Stop Openmeetings</li>
+				<li>(*) Backup folder with existing installation</li>
+				<li>(*) Perform DB backup using tools available for your database</li>
+				<li>Delete/move folder with existing installation of OM</li>
+				<li>Drop existing OM database</li>
+				<li>Create empty Database with same name and UTF-8 support</li>
+				<li>Unzip new version of OM into the same folder</li>
+				<li>(*) Modify DB settings</li>
+				<li>Start Openmeetings</li>
+				<li>go to http://localhost:5080/openmeetings</li>
+				<li>Install OM using Web installer</li>
+				<li>Login as Administrator and Administration &gt; Backup</li>
+				<li>Perform system import</li>
+			</ol>
+                                                <p>(*) Optional step</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Upgrading OpenMeetings from command line"><strong>Upgrading OpenMeetings from command line</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				<i>You need OpenMeetings 2.x or later to have the command line interface (CLI) 
+					feature available
+				</i>
+			</p>
+                                                <p>
+				Alternatively to the Web-Installer you can also export and import via the command line. <br />
+				<b>You should shutdown the Red5-Service while doing CLI export or import operations</b><br />
+				Cd to your red5-home directory, type "./admin.sh" and hit enter. You will get options available.<br />
+				<br />
+				A typical export would be:<br />
+				<tt>./admin.sh -b -file backup_today.zip</tt><br />
+				<br />
+				A typical import would be:<br />
+				<tt>./admin.sh -r -file backup_yesterday.zip</tt><br />
+				<br />
+				You can also combine the installation with a backup, that way you will create exactly the user table 
+				that existed in the backup.<br />
+				A typical install from backup would be:<br />
+				<tt>./admin.sh -i -file backup_yesterday.zip</tt><br />
+				please see <a href="CommandLineAdmin.html" target="_BLANK" rel="nofollow">Command Line Admin</a> for more options
+			</p>
+                                                <p><b>Detailed steps</b></p>
+                                                <ol>
+				<li>Stop Openmeetings</li>
+				<li>(*) Backup folder with existing installation</li>
+				<li>(*) Perform DB backup using tools available for your database</li>
+				<li><tt>./admin.sh -v -b -file ../backup_today.zip</tt></li>
+				<li>Delete/move folder with existing installation of OM</li>
+				<li>Unzip new version of OM into the same folder</li>
+				<li><tt>./admin.sh -v -i -file ../backup_today.zip --drop --skip-default-room</tt> (Optionally you can specify
+					additional parameters like DB host/user/pass/instance etc.)</li>
+				<li>Start Openmeetings</li>
+				<li>go to http://localhost:5080/openmeetings</li>
+			</ol>
+                                                <p>(*) Optional step</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/UserService.html b/docs/UserService.html
new file mode 100644
index 0000000..f5cfe6c
--- /dev/null
+++ b/docs/UserService.html
@@ -0,0 +1,2090 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: UserService</h3>
+	   <p>The Service contains methods to login and create hash to directly enter
+ conference rooms, recordings or the application in general<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/UserService?wsdl">http://localhost:5080/openmeetings/services/UserService?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in UserService</h3>
+	   
+       <div class="navigation">
+	                               <div>
+                <a href="#getSession"><b>getSession</b></a><br/>
+                <div class="navigation_comment"><i >load this session id before doing anything else Returns an Object of Type
+ Sessiondata, this contains a sessionId, use that sessionId in all Methods</i></div>
+                </div>
+                                               <div>
+                <a href="#loginUser"><b>loginUser</b></a><br/>
+                <div class="navigation_comment"><i >Auth function, use the SID you get by getSession, return positive means
+ logged-in, if negative its an ErrorCode, you have to invoke the Method
+ getErrorByCode to get the Text-Description of that ErrorCode</i></div>
+                </div>
+                                               <div>
+                <a href="#getErrorByCode"><b>getErrorByCode</b></a><br/>
+                <div class="navigation_comment"><i >loads an Error-Object. If a Method returns a negative Result, its an
+ Error-id, it needs a language_id to specify in which language you want to
+ display/read the error-message. English has the Language-ID one, for
+ different one see the list of languages</i></div>
+                </div>
+                                               <div>
+                <a href="#addNewUser"><b>addNewUser</b></a><br/>
+                <div class="navigation_comment"><i >Adds a new User like through the Frontend, but also does activates the
+ Account To do SSO see the methods to create a hash and use those ones!</i></div>
+                </div>
+                                               <div>
+                <a href="#addNewUserWithTimeZone"><b>addNewUserWithTimeZone</b></a><br/>
+                <div class="navigation_comment"><i >Adds a new User like through the Frontend, but also does activates the
+ Account</i></div>
+                </div>
+                                               <div>
+                <a href="#addNewUserWithExternalType"><b>addNewUserWithExternalType</b></a><br/>
+                <div class="navigation_comment"><i >Adds a new User like through the Frontend, but also does activates the
+ Account, sends NO email (no matter what you configured) and sets the
+ users external user id and type
+ 
+ Use the methods to create a hash for SSO, creating users is not required
+ for SSO</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteUserById"><b>deleteUserById</b></a><br/>
+                <div class="navigation_comment"><i >Delete a certain user by its id</i></div>
+                </div>
+                                               <div>
+                <a href="#deleteUserByExternalUserIdAndType"><b>deleteUserByExternalUserIdAndType</b></a><br/>
+                <div class="navigation_comment"><i >Delete a certain user by its external user id</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserObjectAndGenerateRoomHash"><b>setUserObjectAndGenerateRoomHash</b></a><br/>
+                <div class="navigation_comment"><i >Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room. ...
+ Session-Hashs are deleted 15 minutes after the creation if not used.</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserObjectAndGenerateRoomHashByURL"><b>setUserObjectAndGenerateRoomHashByURL</b></a><br/>
+                <div class="navigation_comment"><i >Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserObjectAndGenerateRoomHashByURLAndRecFlag"><b>setUserObjectAndGenerateRoomHashByURLAndRecFlag</b></a><br/>
+                <div class="navigation_comment"><i >Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+ 
+ ++ sets the flag if the user can do recording in the conference room</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserObjectMainLandingZone"><b>setUserObjectMainLandingZone</b></a><br/>
+                <div class="navigation_comment"><i >Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID and directly login into the dashboard
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserAndNickName"><b>setUserAndNickName</b></a><br/>
+                <div class="navigation_comment"><i >Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+ 
+ ++ Additionally you can set a param showNickNameDialogAsInt, the effect
+ if that param is 1 is, that the user gets a popup where he can enter his
+ nickname right before he enters the conference room. All nicknames and
+ emails users enter are logged in the conferencelog table.</i></div>
+                </div>
+                                               <div>
+                <a href="#setUserObjectAndGenerateRecordingHashByURL"><b>setUserObjectAndGenerateRecordingHashByURL</b></a><br/>
+                <div class="navigation_comment"><i >Use this method to access a Recording instead of Room</i></div>
+                </div>
+                                               <div>
+                <a href="#addUserToOrganisation"><b>addUserToOrganisation</b></a><br/>
+                <div class="navigation_comment"><i >Add a user to a certain organization</i></div>
+                </div>
+                                               <div>
+                <a href="#getUsersByOrganisation"><b>getUsersByOrganisation</b></a><br/>
+                <div class="navigation_comment"><i >Search users and return them</i></div>
+                </div>
+                                               <div>
+                <a href="#kickUserByPublicSID"><b>kickUserByPublicSID</b></a><br/>
+                <div class="navigation_comment"><i >Kick a user by its public SID</i></div>
+                </div>
+                                               <div>
+                <a href="#addOrganisation"><b>addOrganisation</b></a><br/>
+                <div class="navigation_comment"><i >add a new organisation</i></div>
+                </div>
+                           </div>
+	   
+	    <h3>Methods Details in UserService</h3>
+	
+				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getSession" ><b>getSession</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getSession (
+    			    			    			)
+    			</i><br/>
+    			<p>
+    			  load this session id before doing anything else Returns an Object of Type
+ Sessiondata, this contains a sessionId, use that sessionId in all Methods
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.entity.server.Sessiondata
+                </p>
+    			<p>Params:</p>
+    			    			
+    			    				<i>No Params</i>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    							<a href="http://localhost:5080/openmeetings/services/UserService/getSession">http://localhost:5080/openmeetings/services/UserService/getSession</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="loginUser" ><b>loginUser</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>loginUser (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String userpass
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Auth function, use the SID you get by getSession, return positive means
+ logged-in, if negative its an ErrorCode, you have to invoke the Method
+ getErrorByCode to get the Text-Description of that ErrorCode
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">- The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">- Username from OpenMeetings, the user has to have Admin-rights</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">userpass</td>
+	                     <td valign="top">- Userpass from OpenMeetings</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/loginUser?SID=VALUE&username=VALUE&userpass=VALUE">http://localhost:5080/openmeetings/services/UserService/loginUser?SID=VALUE&amp;username=VALUE&amp;userpass=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getErrorByCode" ><b>getErrorByCode</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getErrorByCode (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long errorid
+    			       			    			       			     , 
+    			       			   long langId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  loads an Error-Object. If a Method returns a negative Result, its an
+ Error-id, it needs a language_id to specify in which language you want to
+ display/read the error-message. English has the Language-ID one, for
+ different one see the list of languages
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.basic.ErrorResult
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">errorid</td>
+	                     <td valign="top">the error id (negative Value here!)</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">langId</td>
+	                     <td valign="top">The id of the language</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/getErrorByCode?SID=VALUE&errorid=VALUE&langId=VALUE">http://localhost:5080/openmeetings/services/UserService/getErrorByCode?SID=VALUE&amp;errorid=VALUE&amp;langId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addNewUser" ><b>addNewUser</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addNewUser (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String userpass
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String additionalname
+    			       			    			       			     , 
+    			       			   String street
+    			       			    			       			     , 
+    			       			   String zip
+    			       			    			       			     , 
+    			       			   String fax
+    			       			    			       			     , 
+    			       			   long states_id
+    			       			    			       			     , 
+    			       			   String town
+    			       			    			       			     , 
+    			       			   long language_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a new User like through the Frontend, but also does activates the
+ Account To do SSO see the methods to create a hash and use those ones!
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">userpass</td>
+	                     <td valign="top">any userpass</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">additionalname</td>
+	                     <td valign="top">any additionalname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">street</td>
+	                     <td valign="top">any street</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">zip</td>
+	                     <td valign="top">any zip</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fax</td>
+	                     <td valign="top">any fax</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">states_id</td>
+	                     <td valign="top">a valid states_id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">town</td>
+	                     <td valign="top">any town</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language_id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/addNewUser?SID=VALUE&username=VALUE&userpass=VALUE&lastname=VALUE&firstname=VALUE&email=VALUE&additionalname=VALUE&street=VALUE&zip=VALUE&fax=VALUE&states_id=VALUE&town=VALUE&language_id=VALUE">http://localhost:5080/openmeetings/services/UserService/addNewUser?SID=VALUE&amp;username=VALUE&amp;userpass=VALUE&amp;lastname=VALUE&amp;firstname=VALUE&amp;email=VALUE&amp;additionalname=VALUE&amp;street=VALUE&amp;zip=VALUE&amp;fax=VALUE&amp;states_id=VALUE&amp;town=VALUE&amp;language_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addNewUserWithTimeZone" ><b>addNewUserWithTimeZone</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addNewUserWithTimeZone (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String userpass
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String additionalname
+    			       			    			       			     , 
+    			       			   String street
+    			       			    			       			     , 
+    			       			   String zip
+    			       			    			       			     , 
+    			       			   String fax
+    			       			    			       			     , 
+    			       			   long states_id
+    			       			    			       			     , 
+    			       			   String town
+    			       			    			       			     , 
+    			       			   long language_id
+    			       			    			       			     , 
+    			       			   String jNameTimeZone
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a new User like through the Frontend, but also does activates the
+ Account
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">userpass</td>
+	                     <td valign="top">any userpass</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">additionalname</td>
+	                     <td valign="top">any additionalname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">street</td>
+	                     <td valign="top">any street</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">zip</td>
+	                     <td valign="top">any zip</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fax</td>
+	                     <td valign="top">any fax</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">states_id</td>
+	                     <td valign="top">a valid states_id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">town</td>
+	                     <td valign="top">any town</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language_id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">jNameTimeZone</td>
+	                     <td valign="top">the name of the timezone for the user</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/addNewUserWithTimeZone?SID=VALUE&username=VALUE&userpass=VALUE&lastname=VALUE&firstname=VALUE&email=VALUE&additionalname=VALUE&street=VALUE&zip=VALUE&fax=VALUE&states_id=VALUE&town=VALUE&language_id=VALUE&jNameTimeZone=VALUE">http://localhost:5080/openmeetings/services/UserService/addNewUserWithTimeZone?SID=VALUE&amp;username=VALUE&amp;userpass=VALUE&amp;lastname=VALUE&amp;firstname=VALUE&amp;email=VALUE&amp;additionalname=VALUE&amp;street=VALUE&amp;zip=VALUE&amp;fax=VALUE&amp;states_id=VALUE&amp;town=VALUE&amp;language_id=VALUE&amp;jNameTimeZone=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addNewUserWithExternalType" ><b>addNewUserWithExternalType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addNewUserWithExternalType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String userpass
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String additionalname
+    			       			    			       			     , 
+    			       			   String street
+    			       			    			       			     , 
+    			       			   String zip
+    			       			    			       			     , 
+    			       			   String fax
+    			       			    			       			     , 
+    			       			   long states_id
+    			       			    			       			     , 
+    			       			   String town
+    			       			    			       			     , 
+    			       			   long language_id
+    			       			    			       			     , 
+    			       			   String jNameTimeZone
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Adds a new User like through the Frontend, but also does activates the
+ Account, sends NO email (no matter what you configured) and sets the
+ users external user id and type
+ 
+ Use the methods to create a hash for SSO, creating users is not required
+ for SSO
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">userpass</td>
+	                     <td valign="top">any userpass</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">additionalname</td>
+	                     <td valign="top">any additionalname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">street</td>
+	                     <td valign="top">any street</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">zip</td>
+	                     <td valign="top">any zip</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">fax</td>
+	                     <td valign="top">any fax</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">states_id</td>
+	                     <td valign="top">a valid states_id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">town</td>
+	                     <td valign="top">any town</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">language_id</td>
+	                     <td valign="top">the language_id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">jNameTimeZone</td>
+	                     <td valign="top">the name of the timezone for the user</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">externalUserId</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">externalUserType</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/addNewUserWithExternalType?SID=VALUE&username=VALUE&userpass=VALUE&lastname=VALUE&firstname=VALUE&email=VALUE&additionalname=VALUE&street=VALUE&zip=VALUE&fax=VALUE&states_id=VALUE&town=VALUE&language_id=VALUE&jNameTimeZone=VALUE&externalUserId=VALUE&externalUserType=VALUE">http://localhost:5080/openmeetings/services/UserService/addNewUserWithExternalType?SID=VALUE&amp;username=VALUE&amp;userpass=VALUE&amp;lastname=VALUE&amp;firstname=VALUE&amp;email=VALUE&amp;additionalname=VALUE&amp;street=VALUE&amp;zip=VALUE&amp;fax=VALUE&amp;states_id=VALUE&amp;town=VALUE&amp;language_id=VALUE&amp;jNameTimeZone=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteUserById" ><b>deleteUserById</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteUserById (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long userId
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Delete a certain user by its id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">userId</td>
+	                     <td valign="top">the openmeetings user id</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/deleteUserById?SID=VALUE&userId=VALUE">http://localhost:5080/openmeetings/services/UserService/deleteUserById?SID=VALUE&amp;userId=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="deleteUserByExternalUserIdAndType" ><b>deleteUserByExternalUserIdAndType</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>deleteUserByExternalUserIdAndType (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Delete a certain user by its external user id
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">externalUserId</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">externalUserId</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/deleteUserByExternalUserIdAndType?SID=VALUE&externalUserId=VALUE&externalUserType=VALUE">http://localhost:5080/openmeetings/services/UserService/deleteUserByExternalUserIdAndType?SID=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserObjectAndGenerateRoomHash" ><b>setUserObjectAndGenerateRoomHash</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserObjectAndGenerateRoomHash (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String profilePictureUrl
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   int becomeModeratorAsInt
+    			       			    			       			     , 
+    			       			   int showAudioVideoTestAsInt
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room. ...
+ Session-Hashs are deleted 15 minutes after the creation if not used.
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">profilePictureUrl</td>
+	                     <td valign="top">any profilePictureUrl</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id the user should be logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">becomeModeratorAsInt</td>
+	                     <td valign="top">0 means no Moderator, 1 means Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">showAudioVideoTestAsInt</td>
+	                     <td valign="top">0 means don't show Audio/Video Test, 1 means show Audio/Video
+            Test Application before the user is logged into the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHash?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&profilePictureUrl=VALUE&email=VALUE&externalUserId=VALUE&externalUserType=VALUE&room_id=VALUE&becomeModeratorAsInt=VALUE&showAudioVideoTestAsInt=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHash?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;profilePictureUrl=VALUE&amp;email=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE&amp;room_id=VALUE&amp;becomeModeratorAsInt=VALUE&amp;showAudioVideoTestAsInt=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserObjectAndGenerateRoomHashByURL" ><b>setUserObjectAndGenerateRoomHashByURL</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserObjectAndGenerateRoomHashByURL (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String profilePictureUrl
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   int becomeModeratorAsInt
+    			       			    			       			     , 
+    			       			   int showAudioVideoTestAsInt
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">profilePictureUrl</td>
+	                     <td valign="top">any profilePictureUrl</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id the user should be logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">becomeModeratorAsInt</td>
+	                     <td valign="top">0 means no Moderator, 1 means Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">showAudioVideoTestAsInt</td>
+	                     <td valign="top">0 means don't show Audio/Video Test, 1 means show Audio/Video
+            Test Application before the user is logged into the room</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHashByURL?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&profilePictureUrl=VALUE&email=VALUE&externalUserId=VALUE&externalUserType=VALUE&room_id=VALUE&becomeModeratorAsInt=VALUE&showAudioVideoTestAsInt=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHashByURL?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;profilePictureUrl=VALUE&amp;email=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE&amp;room_id=VALUE&amp;becomeModeratorAsInt=VALUE&amp;showAudioVideoTestAsInt=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserObjectAndGenerateRoomHashByURLAndRecFlag" ><b>setUserObjectAndGenerateRoomHashByURLAndRecFlag</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserObjectAndGenerateRoomHashByURLAndRecFlag (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String profilePictureUrl
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   int becomeModeratorAsInt
+    			       			    			       			     , 
+    			       			   int showAudioVideoTestAsInt
+    			       			    			       			     , 
+    			       			   int allowRecording
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+ 
+ ++ sets the flag if the user can do recording in the conference room
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">profilePictureUrl</td>
+	                     <td valign="top">any profilePictureUrl</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id the user should be logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">becomeModeratorAsInt</td>
+	                     <td valign="top">0 means no Moderator, 1 means Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">showAudioVideoTestAsInt</td>
+	                     <td valign="top">0 means don't show Audio/Video Test, 1 means show Audio/Video
+            Test Application before the user is logged into the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">allowRecording</td>
+	                     <td valign="top">0 means don't allow Recording, 1 means allow Recording</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHashByURLAndRecFlag?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&profilePictureUrl=VALUE&email=VALUE&externalUserId=VALUE&externalUserType=VALUE&room_id=VALUE&becomeModeratorAsInt=VALUE&showAudioVideoTestAsInt=VALUE&allowRecording=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRoomHashByURLAndRecFlag?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;profilePictureUrl=VALUE&amp;email=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE&amp;room_id=VALUE&amp;becomeModeratorAsInt=VALUE&amp;showAudioVideoTestAsInt=VALUE&amp;allowRecording=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserObjectMainLandingZone" ><b>setUserObjectMainLandingZone</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserObjectMainLandingZone (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String profilePictureUrl
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID and directly login into the dashboard
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">profilePictureUrl</td>
+	                     <td valign="top">any absolute profilePictureUrl</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserObjectMainLandingZone?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&profilePictureUrl=VALUE&email=VALUE&externalUserId=VALUE&externalUserType=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserObjectMainLandingZone?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;profilePictureUrl=VALUE&amp;email=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserAndNickName" ><b>setUserAndNickName</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserAndNickName (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String profilePictureUrl
+    			       			    			       			     , 
+    			       			   String email
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			       			     , 
+    			       			   Long room_id
+    			       			    			       			     , 
+    			       			   int becomeModeratorAsInt
+    			       			    			       			     , 
+    			       			   int showAudioVideoTestAsInt
+    			       			    			       			     , 
+    			       			   int showNickNameDialogAsInt
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Description: sets the SessionObject for a certain SID, after setting this
+ Session-Object you can use the SID + a RoomId to enter any Room.
+ 
+ ++ the user can press f5 to reload the page / use the link several times,
+ the SOAP Gateway does remember the IP of the user and the will only the
+ first user that enters the room allow to re-enter. ... Session-Hashs are
+ deleted 15 minutes after the creation if not used.
+ 
+ ++ Additionally you can set a param showNickNameDialogAsInt, the effect
+ if that param is 1 is, that the user gets a popup where he can enter his
+ nickname right before he enters the conference room. All nicknames and
+ emails users enter are logged in the conferencelog table.
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">profilePictureUrl</td>
+	                     <td valign="top">any profilePictureUrl</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">email</td>
+	                     <td valign="top">any email</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">room_id</td>
+	                     <td valign="top">the room id the user should be logged in</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">becomeModeratorAsInt</td>
+	                     <td valign="top">0 means no Moderator, 1 means Moderator</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">showAudioVideoTestAsInt</td>
+	                     <td valign="top">0 means don't show Audio/Video Test, 1 means show Audio/Video
+            Test Application before the user is logged into the room</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">showNickNameDialogAsInt</td>
+	                     <td valign="top">0 means do not show the popup to enter a nichname, 1 means
+            that there is a popup to enter the nickname for the conference</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserAndNickName?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&profilePictureUrl=VALUE&email=VALUE&externalUserId=VALUE&externalUserType=VALUE&room_id=VALUE&becomeModeratorAsInt=VALUE&showAudioVideoTestAsInt=VALUE&showNickNameDialogAsInt=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserAndNickName?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;profilePictureUrl=VALUE&amp;email=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE&amp;room_id=VALUE&amp;becomeModeratorAsInt=VALUE&amp;showAudioVideoTestAsInt=VALUE&amp;showNickNameDialogAsInt=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="setUserObjectAndGenerateRecordingHashByURL" ><b>setUserObjectAndGenerateRecordingHashByURL</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>setUserObjectAndGenerateRecordingHashByURL (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String username
+    			       			    			       			     , 
+    			       			   String firstname
+    			       			    			       			     , 
+    			       			   String lastname
+    			       			    			       			     , 
+    			       			   String externalUserId
+    			       			    			       			     , 
+    			       			   String externalUserType
+    			       			    			       			     , 
+    			       			   Long recording_id
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Use this method to access a Recording instead of Room
+    			</p>
+    			<p>
+                  Return Type: java.lang.String
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">username</td>
+	                     <td valign="top">any username</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">firstname</td>
+	                     <td valign="top">any firstname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">lastname</td>
+	                     <td valign="top">any lastname</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserId</td>
+	                     <td valign="top">if you have any external user Id you may set it here</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">externalUserType</td>
+	                     <td valign="top">you can specify your system-name here, for example "moodle"</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">recording_id</td>
+	                     <td valign="top">the id of the recording, get a List of all Recordings with
+            RoomService::getFlvRecordingByExternalRoomType</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRecordingHashByURL?SID=VALUE&username=VALUE&firstname=VALUE&lastname=VALUE&externalUserId=VALUE&externalUserType=VALUE&recording_id=VALUE">http://localhost:5080/openmeetings/services/UserService/setUserObjectAndGenerateRecordingHashByURL?SID=VALUE&amp;username=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;externalUserId=VALUE&amp;externalUserType=VALUE&amp;recording_id=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addUserToOrganisation" ><b>addUserToOrganisation</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addUserToOrganisation (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   Long user_id
+    			       			    			       			     , 
+    			       			   Long organisation_id
+    			       			    			       			     , 
+    			       			   Long insertedby
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Add a user to a certain organization
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">user_id</td>
+	                     <td valign="top">the user id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">organisation_id</td>
+	                     <td valign="top">the organization id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		Long
+	                     		                     </td>
+	                     <td valign="top">insertedby</td>
+	                     <td valign="top">user id of the operating user</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/addUserToOrganisation?SID=VALUE&user_id=VALUE&organisation_id=VALUE&insertedby=VALUE">http://localhost:5080/openmeetings/services/UserService/addUserToOrganisation?SID=VALUE&amp;user_id=VALUE&amp;organisation_id=VALUE&amp;insertedby=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="getUsersByOrganisation" ><b>getUsersByOrganisation</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>getUsersByOrganisation (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   long organisation_id
+    			       			    			       			     , 
+    			       			   int start
+    			       			    			       			     , 
+    			       			   int max
+    			       			    			       			     , 
+    			       			   String orderby
+    			       			    			       			     , 
+    			       			   boolean asc
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Search users and return them
+    			</p>
+    			<p>
+                  Return Type: org.apache.openmeetings.db.dto.user.UserSearchResult
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		long
+	                     		                     </td>
+	                     <td valign="top">organisation_id</td>
+	                     <td valign="top">the organization id</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">start</td>
+	                     <td valign="top">first record</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		int
+	                     		                     </td>
+	                     <td valign="top">max</td>
+	                     <td valign="top">max records</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">orderby</td>
+	                     <td valign="top">orderby clause</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		boolean
+	                     		                     </td>
+	                     <td valign="top">asc</td>
+	                     <td valign="top">asc or desc</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/getUsersByOrganisation?SID=VALUE&organisation_id=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/UserService/getUsersByOrganisation?SID=VALUE&amp;organisation_id=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="kickUserByPublicSID" ><b>kickUserByPublicSID</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>kickUserByPublicSID (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String publicSID
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  Kick a user by its public SID
+    			</p>
+    			<p>
+                  Return Type: java.lang.Boolean
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">publicSID</td>
+	                     <td valign="top">the publicSID (you can get it from the call to get users in a
+            room)</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/kickUserByPublicSID?SID=VALUE&publicSID=VALUE">http://localhost:5080/openmeetings/services/UserService/kickUserByPublicSID?SID=VALUE&amp;publicSID=VALUE</a>
+    		  </div>
+    	   				    		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="addOrganisation" ><b>addOrganisation</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>addOrganisation (
+    			    			    			       			   String SID
+    			       			    			       			     , 
+    			       			   String name
+    			       			    			)
+    			</i><br/>
+    			<p>
+    			  add a new organisation
+    			</p>
+    			<p>
+                  Return Type: java.lang.Long
+                </p>
+    			<p>Params:</p>
+    			    			
+    				    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   	    			   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">SID</td>
+	                     <td valign="top">The SID from getSession</td>
+	                   </tr>
+	                   
+	                   	                   	    			   <tr>
+	                     <td valign="top">
+	                     		                     		String
+	                     		                     </td>
+	                     <td valign="top">name</td>
+	                     <td valign="top">the name of the org</td>
+	                   </tr>
+	                   
+	                   	                   	                   </tbody>
+	    			</table>
+    			    			<br/>
+    			REST Sample Call/URL:<br/>
+    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/UserService/addOrganisation?SID=VALUE&name=VALUE">http://localhost:5080/openmeetings/services/UserService/addOrganisation?SID=VALUE&amp;name=VALUE</a>
+    		  </div>
+    	   			
+	
+	</body>
+</html>
+
diff --git a/docs/WebappNamePath.html b/docs/WebappNamePath.html
new file mode 100644
index 0000000..548d5d8
--- /dev/null
+++ b/docs/WebappNamePath.html
@@ -0,0 +1,534 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Webapp Name / Path</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Customize Openmeetings logo"><strong>Customize Openmeetings logo</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you want to set up your logo in Openmeetings header you can do the following:</p>
+                                                <ol>
+				<li>create your logo image as PNG 40px height</li>
+				<li>replace <tt>/opt/red5/webapps/openmeetings/public/themes/basic-theme/general/logo.png</tt> with your logo file</li>
+				<li>(Advanced optional) you can modify <tt>/opt/red5/webapps/openmeetings/public/config.xml</tt> and modify <tt>appdisplay</tt> section: set position and display for the logo and/or name</li>
+				<li>(Advanced optional) you can modify <tt>/opt/red5/webapps/openmeetings/public/theme.xml</tt> (around line 57) and change image name/path</li>
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Renaming /openmeetings context"><strong>Renaming /openmeetings context</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				If you want to have
+				<tt>http://yourcorp.com:5080/yourmeetings</tt>
+				instead of
+				<tt>http://yourcorp.com:5080/openmeetings</tt>
+				you need to do the following
+			</p>
+                                                <ol>
+				<li>stop openmmetings if it is running </li>
+				<li>
+					go to openmeetings install dir (for ex.
+					<tt>/opt/red5</tt>
+					)
+				</li>
+				<li>
+					rename
+					<tt>/opt/red5/webapps/openmeetings</tt>
+					to
+					<tt>/opt/red5/webapps/yourmeetings</tt>
+					(for ex.
+					<tt>mv /opt/red5/webapps/openmeetings
+						/opt/red5/webapps/yourmeetings
+					</tt>
+					)
+				</li>
+				<li>
+					open
+					<tt>/opt/red5/webapps/yourmeetings/public/config.xml</tt>
+					using your favorite text editor (for ex.
+					<tt>vim /opt/red5/webapps/yourmeetings/public/config.xml</tt>
+					)
+				</li>
+				<li>
+					find and modify
+					<tt>&lt;webAppRootKey&gt;openmeetings&lt;/webAppRootKey&gt;</tt>
+					to be
+					<tt>&lt;webAppRootKey&gt;</tt>
+					<strong>yourmeetings</strong>
+					<tt>&lt;/webAppRootKey&gt;</tt>
+				</li>
+				<li>
+					find and modify
+					<tt>&lt;httpRootKey&gt;/openmeetings/&lt;/httpRootKey&gt;</tt>
+					to be
+					<tt>&lt;httpRootKey&gt;</tt>
+					<strong>/yourmeetings/</strong>
+					<tt>&lt;/httpRootKey&gt;</tt>
+				</li>
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Changing hard-coded application name in string labels"><strong>Changing hard-coded application name in string labels</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				To have
+				<i>Your Application Name</i>
+				instead of
+				<i>Openmeetings</i>
+				in
+				<strong>all</strong>
+				text labels you need to do the following
+			</p>
+                                                <ol>
+				<li>
+					ensure
+					<strong>
+						<tt>$APP_NAME</tt>
+					</strong>
+					placeholder is used in
+					<i>all</i>
+					strings you have added and/or modified (all strings bundled into
+					Openmeetings already have this placeholder)
+				</li>
+				<li>login to Openmeetings as user with administrator privileges </li>
+				<li>
+					go to
+					<tt>Administration -&gt; Configuration</tt>
+				</li>
+				<li>
+					find and edit configuration with name
+					<strong>
+						<tt>application.name</tt>
+					</strong>
+				</li>
+				<li>
+					Set its value to be
+					<i>
+						<tt>Your Application Name</tt>
+					</i>
+				</li>
+				<li>
+					<tt>Save</tt>
+				</li>
+				<li>reload page or relogin </li>
+			</ol>
+                                                <p>
+			All string will display
+			<i>
+				<tt>Your Application Name</tt>
+			</i>
+			in place of
+			<i>
+				<tt>Openmeetings</tt>
+			</i>
+			</p>
+                                                <p>
+				Please
+				<i>NOTE</i>
+				there are 3 additional properties in the public/config.xml file which
+				should be modified for
+				<strong>TOTAL</strong>
+				Openmeetings clean up:
+			</p>
+                                                <div class="xmlcode">
+				&lt;currentappname&gt;OpenMeetings&lt;/currentappname&gt;
+				<br />
+				&lt;currentappnameurl&gt;http://openmeetings.apache.org&lt;/currentappnameurl&gt;
+				<br />
+				&lt;currentappnamebugurl&gt;https://issues.apache.org/jira/browse/OPENMEETINGS&lt;/currentappnamebugurl&gt;
+				<br />
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Running multiple Openmeetings instances on the same server"><strong>Running multiple Openmeetings instances on the same server</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				If you want to run multiple Openmeetings instances on the same server i.e. to have<br />  
+				<tt>http://yourcorp.com:5080/openmeetings1</tt><br /> 
+				<tt>http://yourcorp.com:5080/openmeetings2</tt><br /> etc.<br /> you need to do the following:
+			</p>
+                                                <ol>
+				<li>edit <tt>webapps/openmeetings1/WEB-INF/red5-web.properties</tt> for <strong>every</strong> Openmeetings 
+				instance and add the following line <tt>webapp.contextPath=/openmeetings1</tt>  to it (context of 
+				<strong>every</strong> instance <strong>should</strong> match the folder name in webapps dir)
+				</li>
+				<li>in case of java memory problems modify <tt>red5.sh</tt> add following line:<br />
+					<div class="xmlcode">
+					export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M"
+					</div>
+					or <tt>red5.bat</tt>:<br />
+					<div class="xmlcode">
+					set JAVA_OPTS=-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M
+					</div>
+				</li>
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/WebcamResolutions.html b/docs/WebcamResolutions.html
new file mode 100644
index 0000000..5f734de
--- /dev/null
+++ b/docs/WebcamResolutions.html
@@ -0,0 +1,379 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - How to configure Camera default resolutions </title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to configure Camera default resolutions"><strong>How to configure Camera default resolutions</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>When you choose the webcam you have different resolutions
+				available the user can choose from. </p>
+                                                <p>You can add/remove resolutions and also change the default
+				selection. In the public/config.xml there is a section: </p>
+                                                <div class="xmlcode">
+				&lt;availableCameraResolutions&gt;<br />
+				<div style="margin-left:20px">
+				    &lt;resolution type="4:3 (~6 KByte/sec)" width="40" height="30" isDefault="false" /&gt;<br />
+				    &lt;resolution type="4:3 (~12 KByte/sec)" width="80" height="60" isDefault="false" /&gt;<br />
+				    &lt;resolution type="4:3 (~20 KByte/sec)" width="120" height="90" isDefault="true" /&gt;<br />
+				    &lt;resolution type="QQVGA 4:3 (~36 KByte/sec)" width="160" height="120" isDefault="false" /&gt;<br />
+				    &lt;resolution type="4:3 (~40 KByte/sec)" width="240" height="180" isDefault="false" /&gt;<br />
+				    &lt;resolution type="HVGA 4:3 (~56 KByte/sec)" width="320" height="240" isDefault="false" /&gt;<br />
+				    &lt;resolution type="4:3  (~60 KByte/sec)" width="480" height="360" isDefault="false" /&gt;<br />
+				    &lt;resolution type="4:3 (~68 KByte/sec)" width="640" height="480" isDefault="false" /&gt;<br />
+				    &lt;resolution type="XGA 4:3" width="1024" height="768" isDefault="false" /&gt;<br />
+				    &lt;resolution type="16:9" width="256" height="150" isDefault="false" /&gt;<br />
+				    &lt;resolution type="WQVGA 9:5" width="432" height="240" isDefault="false" /&gt;<br />
+				    &lt;resolution type="pseudo 16:9" width="480" height="234" isDefault="false" /&gt;<br />
+				    &lt;resolution type="16:9" width="512" height="300" isDefault="false" /&gt;<br />
+				    &lt;resolution type="nHD 16:9" width="640" height="360" isDefault="false" /&gt;<br />
+				    &lt;resolution type="16:9" width="1024" height="600" isDefault="false" /&gt;<br />
+				    </div>
+				&lt;/availableCameraResolutions&gt;			 
+			</div>
+                                                <p>Tip: You might edit the public/config.xml with an XML aware editor that correctly 
+		    handles the XSD defintion to avoid misconfiguration. The openmeetings-config.xsd 
+		    is in the same folder like the public/config.xml. </p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/WebserviceIndex.html b/docs/WebserviceIndex.html
new file mode 100644
index 0000000..222c354
--- /dev/null
+++ b/docs/WebserviceIndex.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Classes</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+			
+       <div class="navigation">
+	               <div>
+            <a href="CalendarService.html" target="_PARENT"><b>CalendarService</b></a><br/>
+            <div class="navigation_comment"><i >CalendarService contains methods to create, edit delete calendar meetings</i></div>
+            </div>
+                    <div>
+            <a href="FileService.html" target="_PARENT"><b>FileService</b></a><br/>
+            <div class="navigation_comment"><i >Contains methods to import and upload files into the Files section of the
+ conference room and the personal drive of any user</i></div>
+            </div>
+                    <div>
+            <a href="JabberService.html" target="_PARENT"><b>JabberService</b></a><br/>
+            <div class="navigation_comment"><i >This class provides method implementations necessary for OM to Jabber integration.</i></div>
+            </div>
+                    <div>
+            <a href="RoomService.html" target="_PARENT"><b>RoomService</b></a><br/>
+            <div class="navigation_comment"><i >RoomService contains methods to manipulate rooms and create invitation hash</i></div>
+            </div>
+                    <div>
+            <a href="ServerService.html" target="_PARENT"><b>ServerService</b></a><br/>
+            <div class="navigation_comment"><i >This class provides method implementations necessary for OM to manage servers
+ participating in cluster.</i></div>
+            </div>
+                    <div>
+            <a href="UserService.html" target="_PARENT"><b>UserService</b></a><br/>
+            <div class="navigation_comment"><i >The Service contains methods to login and create hash to directly enter
+ conference rooms, recordings or the application in general</i></div>
+            </div>
+                </div>
+	
+	
+	</body>
+	</html>
diff --git a/docs/WebsiteGuide.html b/docs/WebsiteGuide.html
new file mode 100644
index 0000000..e608eca
--- /dev/null
+++ b/docs/WebsiteGuide.html
@@ -0,0 +1,478 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Release Guide</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How to update Apache OpenMeetings website"><strong>How to update Apache OpenMeetings website</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Required tools"><strong>Required tools</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					<ul>
+						<li>Sun JDK6</li>
+						<li>Apache ANT (1.8 or later)</li>
+					</ul>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Introduction"><strong>Introduction</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					<p>
+						The Apache OpenMeetings HTML websites are generated from XML files. 
+						You edit the XML files, run the ANT command "ant anakia" that generates the HTML files 
+						and then you checkin to SVN both: XML and HTML files.
+					</p>
+					<p>
+						The website itself uses JQuery to generate the menu, the pop images and the image slider at the landing page.
+					</p>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Editing the website"><strong>Editing the website</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					<p>
+						OpenMeetings website (
+						<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>
+						) is a copy from the SVN repository.
+						<br />
+						The file in the SVN to be synced are at:
+						<br />
+						<a href="http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/docs/">http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/docs/
+						</a>
+						<br />and<br />
+						<a href="http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/xdocs/">http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/xdocs/
+						</a>
+					</p>
+					
+					<div>
+						To update the website you checkout trunk:
+						<br />
+						<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+						</a> <br />
+						edit the files in the folder <tt>xdocs</tt><br />
+						then you run the command:
+						<div class="xmlcode">
+							ant anakia
+						</div>
+						control the output locally in the folder <tt>docs</tt><br />
+						And then checkin into the SVN <i>both</i> the edited xml and generated html files.
+					</div>
+					
+					<p>
+						The public website is automatically synced with the SVN repository.<br />
+						Changes to the SVN should be immediately synced to the production website.<br />
+						If not you might login to people.apache.org,<br />
+						cd to <tt>/www/openmeetings.apache.org/content/</tt><br />
+						and run the linux command "touch" on the files that need to be synced
+					</p>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Adding a new menu entry"><strong>Adding a new menu entry</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					To add a new menu entry in the left side panel you need to modify the file: 
+					<br />
+					<tt>xdocs/stylesheets/project.xml</tt>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Writing a new macro"><strong>Writing a new macro</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+					<p>
+						You can write macros in a template language to parse from the XML files certain aspects.
+					</p>
+					<p>
+						To add a new macro see the file:<br />
+						<tt>xdocs/stylesheets/site.vsl</tt>
+					</p>
+				</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/commercial-support.html b/docs/commercial-support.html
new file mode 100644
index 0000000..cd1d818
--- /dev/null
+++ b/docs/commercial-support.html
@@ -0,0 +1,380 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Commercial Support</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Commercial Support for OpenMeetings"><strong>Commercial Support for OpenMeetings</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>There are few companies offering complex services for OpenMeetings, including code support,
+			development, integration and bug fixing
+			</p>
+                                                <ul>
+				<li>
+					<a href="http://www.webbase-design.de/" target="_BLANK">webbase-design.de
+					</a>
+					owned by Sebastian Wagner
+				</li>
+				<li>
+					<a href="http://www.dataved.ru" target="_BLANK">dataved.ru
+					</a>
+					run by Alexei Fedotov, Maxim Solodovnik, Timur Tleukenov, Irina Arkhipets, Denis Kandrov, Vasily Degtyarev
+				</li>
+				<li>
+                    <a href="http://www.samoo.es" target="_BLANK" rel="nofollow">samoo.es</a>
+                    provides support for the Sakai Plugin
+                </li>
+			</ul>
+                                                <p>
+                            Please write to <a href="mailto:support-om@dataved.ru">support-om@dataved.ru</a> to get WebBase-Design or Dataved support
+			</p>
+                                                <p>
+			    There are more companies offering installation, customization, hosting, conferencing and support services. You can add 
+				yourself to the <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Commercial+Support">wiki page</a>.
+			</p>
+                                                <p>
+				Want to get listed here? Become a <a href="http://www.apache.org/dev/committers.html">committer</a>.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/css/1b.png b/docs/css/1b.png
new file mode 100644
index 0000000..0d70d76
--- /dev/null
+++ b/docs/css/1b.png
Binary files differ
diff --git a/docs/css/2b.png b/docs/css/2b.png
new file mode 100644
index 0000000..a93e132
--- /dev/null
+++ b/docs/css/2b.png
Binary files differ
diff --git a/docs/css/3b.png b/docs/css/3b.png
new file mode 100644
index 0000000..f9d8b7a
--- /dev/null
+++ b/docs/css/3b.png
Binary files differ
diff --git a/docs/css/4b.png b/docs/css/4b.png
new file mode 100644
index 0000000..c6e41f4
--- /dev/null
+++ b/docs/css/4b.png
Binary files differ
diff --git a/docs/css/coin-slider-styles.css b/docs/css/coin-slider-styles.css
new file mode 100644
index 0000000..31e7d67
--- /dev/null
+++ b/docs/css/coin-slider-styles.css
@@ -0,0 +1,17 @@
+/*
+	Coin Slider jQuery plugin CSS styles
+	http://workshop.rs/projects/coin-slider
+*/
+
+
+.coin-slider { overflow: hidden; zoom: 1; position: relative; }
+.coin-slider a{ text-decoration: none; outline: none; border: none; }
+
+.cs-buttons { font-size: 0px; padding: 10px; float: left; }
+.cs-buttons a { margin-left: 5px; height: 10px; width: 10px; float: left; border: 1px solid #B8C4CF; color: #B8C4CF; text-indent: -1000px; }
+.cs-active { background-color: #B8C4CF; color: #FFFFFF; }
+
+.cs-title { width: 545px; padding: 10px; background-color: #000000; color: #FFFFFF; }
+
+.cs-prev, 
+.cs-next { background-color: #000000; color: #FFFFFF; padding: 0px 10px; }
diff --git a/docs/css/colorbox.css b/docs/css/colorbox.css
new file mode 100644
index 0000000..894da5d
--- /dev/null
+++ b/docs/css/colorbox.css
@@ -0,0 +1,70 @@
+/*
+    Colorbox Core Style:
+    The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
+#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
+
+/* 
+    User Style:
+    Change the following styles to modify the appearance of Colorbox.  They are
+    ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
+#colorbox{outline:0;}
+    #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;}
+    #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;}
+    #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;}
+    #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;}
+    #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;}
+    #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;}
+    #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;}
+    #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;}
+    #cboxContent{background:#fff; overflow:hidden;}
+        .cboxIframe{background:#fff;}
+        #cboxError{padding:50px; border:1px solid #ccc;}
+        #cboxLoadedContent{margin-bottom:28px;}
+        #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
+        #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+        #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+        /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+        #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+        
+        /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+        #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
+        #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
+        #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxPrevious:hover{background-position:-75px -25px;}
+        #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxNext:hover{background-position:-50px -25px;}
+        #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxClose:hover{background-position:-25px -25px;}
+
+/*
+  The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+  when an alpha filter (opacity change) is set on the element or ancestor element.  This style is not applied to or needed in IE9.
+  See: http://jacklmoore.com/notes/ie-transparency-problems/
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
+}
diff --git a/docs/css/images/animated-overlay.gif b/docs/css/images/animated-overlay.gif
new file mode 100644
index 0000000..d441f75
--- /dev/null
+++ b/docs/css/images/animated-overlay.gif
Binary files differ
diff --git a/docs/css/images/border.png b/docs/css/images/border.png
new file mode 100644
index 0000000..f463a10
--- /dev/null
+++ b/docs/css/images/border.png
Binary files differ
diff --git a/docs/css/images/controls.png b/docs/css/images/controls.png
new file mode 100644
index 0000000..dcfd6fb
--- /dev/null
+++ b/docs/css/images/controls.png
Binary files differ
diff --git a/docs/css/images/loading.gif b/docs/css/images/loading.gif
new file mode 100644
index 0000000..b4695d8
--- /dev/null
+++ b/docs/css/images/loading.gif
Binary files differ
diff --git a/docs/css/images/loading_background.png b/docs/css/images/loading_background.png
new file mode 100644
index 0000000..6ae83e6
--- /dev/null
+++ b/docs/css/images/loading_background.png
Binary files differ
diff --git a/docs/css/images/overlay.png b/docs/css/images/overlay.png
new file mode 100644
index 0000000..53ea98f
--- /dev/null
+++ b/docs/css/images/overlay.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_0_000088_40x100.png b/docs/css/images/ui-bg_flat_0_000088_40x100.png
new file mode 100644
index 0000000..b0919c2
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_0_000088_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_0_e6b900_40x100.png b/docs/css/images/ui-bg_flat_0_e6b900_40x100.png
new file mode 100644
index 0000000..facb4c0
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_0_e6b900_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_100_eeeeee_40x100.png b/docs/css/images/ui-bg_flat_100_eeeeee_40x100.png
new file mode 100644
index 0000000..b976c9b
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_100_eeeeee_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_20_000088_40x100.png b/docs/css/images/ui-bg_flat_20_000088_40x100.png
new file mode 100644
index 0000000..56c2330
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_20_000088_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_22_1484e6_40x100.png b/docs/css/images/ui-bg_flat_22_1484e6_40x100.png
new file mode 100644
index 0000000..7f3bc6b
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_22_1484e6_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_25_c5ddfc_40x100.png b/docs/css/images/ui-bg_flat_25_c5ddfc_40x100.png
new file mode 100644
index 0000000..724aae8
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_25_c5ddfc_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_flat_26_2293f7_40x100.png b/docs/css/images/ui-bg_flat_26_2293f7_40x100.png
new file mode 100644
index 0000000..5ef1530
--- /dev/null
+++ b/docs/css/images/ui-bg_flat_26_2293f7_40x100.png
Binary files differ
diff --git a/docs/css/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/docs/css/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png
new file mode 100644
index 0000000..9d2c4ad
--- /dev/null
+++ b/docs/css/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png
Binary files differ
diff --git a/docs/css/images/ui-icons_0a82eb_256x240.png b/docs/css/images/ui-icons_0a82eb_256x240.png
new file mode 100644
index 0000000..3001a8f
--- /dev/null
+++ b/docs/css/images/ui-icons_0a82eb_256x240.png
Binary files differ
diff --git a/docs/css/images/ui-icons_0b54d5_256x240.png b/docs/css/images/ui-icons_0b54d5_256x240.png
new file mode 100644
index 0000000..926aa07
--- /dev/null
+++ b/docs/css/images/ui-icons_0b54d5_256x240.png
Binary files differ
diff --git a/docs/css/images/ui-icons_5fa5e3_256x240.png b/docs/css/images/ui-icons_5fa5e3_256x240.png
new file mode 100644
index 0000000..81bd20c
--- /dev/null
+++ b/docs/css/images/ui-icons_5fa5e3_256x240.png
Binary files differ
diff --git a/docs/css/images/ui-icons_ffffff_256x240.png b/docs/css/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000..4f624bb
--- /dev/null
+++ b/docs/css/images/ui-icons_ffffff_256x240.png
Binary files differ
diff --git a/docs/css/jquery-ui-1.10.4.custom.css b/docs/css/jquery-ui-1.10.4.custom.css
new file mode 100644
index 0000000..92a96fb
--- /dev/null
+++ b/docs/css/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,513 @@
+/*! jQuery UI - v1.10.4 - 2014-03-25
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2C%20Arial%2C%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=%23f9f9f9&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=%23cccccc&fcHeader=%23000088&iconColorHeader=%235fa5e3&bgColorContent=%23eeeeee&bgTextureContent=flat&bgImgOpacityContent=100&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%230a82eb&bgColorDefault=%231484e6&bgTextureDefault=flat&bgImgOpacityDefault=22&borderColorDefault=%23ffffff&fcDefault=%23ffffff&iconColorDefault=%23ffffff&bgColorHover=%232293f7&bgTextureHover=flat&bgImgOpacityHover=26&borderColorHover=%232293f7&fcHover=%23ffffff&iconColorHover=%23ffffff&bgColorActive=%23000088&bgTextureActive=flat&bgImgOpacityActive=20&borderColorActive=%23000088&fcActive=%23ffffff&iconColorActive=%23ffffff&bgColorHighlight=%23c5ddfc&bgTextureHighlight=flat&bgImgOpacityHighlight=25&borderColorHighlight=%23ffffff&fcHighlight=%23333333&iconColorHighlight=%230b54d5&bgColorError=%23000088&bgTextureError=flat&bgImgOpacityError=20&borderColorError=%23000088&fcError=%23ffffff&iconColorError=%23ffffff&bgColorOverlay=%23e6b900&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23000088&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+.ui-accordion .ui-accordion-header {
+	display: block;
+	cursor: pointer;
+	position: relative;
+	margin-top: 2px;
+	padding: .5em .5em .5em .7em;
+	min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+	padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+	position: absolute;
+	left: .5em;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+	padding: 1em 2.2em;
+	border-top: 0;
+	overflow: auto;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+	font-family: segoe ui, Arial, sans-serif;
+	font-size: 1.1em;
+}
+.ui-widget .ui-widget {
+	font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+	font-family: segoe ui, Arial, sans-serif;
+	font-size: 1em;
+}
+.ui-widget-content {
+	border: 1px solid #aaaaaa;
+	background: #eeeeee url(images/ui-bg_flat_100_eeeeee_40x100.png) 50% 50% repeat-x;
+	color: #222222;
+}
+.ui-widget-content a {
+	color: #222222;
+}
+.ui-widget-header {
+	border: 1px solid #cccccc;
+	background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x;
+	color: #000088;
+	font-weight: bold;
+}
+.ui-widget-header a {
+	color: #000088;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+	border: 1px solid #ffffff;
+	background: #1484e6 url(images/ui-bg_flat_22_1484e6_40x100.png) 50% 50% repeat-x;
+	font-weight: bold;
+	color: #ffffff;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+	color: #ffffff;
+	text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+	border: 1px solid #2293f7;
+	background: #2293f7 url(images/ui-bg_flat_26_2293f7_40x100.png) 50% 50% repeat-x;
+	font-weight: bold;
+	color: #ffffff;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+	color: #ffffff;
+	text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+	border: 1px solid #000088;
+	background: #000088 url(images/ui-bg_flat_20_000088_40x100.png) 50% 50% repeat-x;
+	font-weight: bold;
+	color: #ffffff;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+	color: #ffffff;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+	border: 1px solid #ffffff;
+	background: #c5ddfc url(images/ui-bg_flat_25_c5ddfc_40x100.png) 50% 50% repeat-x;
+	color: #333333;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+	color: #333333;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+	border: 1px solid #000088;
+	background: #000088 url(images/ui-bg_flat_20_000088_40x100.png) 50% 50% repeat-x;
+	color: #ffffff;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+	color: #ffffff;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+	color: #ffffff;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+	font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+	opacity: .7;
+	filter:Alpha(Opacity=70);
+	font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+	opacity: .35;
+	filter:Alpha(Opacity=35);
+	background-image: none;
+}
+.ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	width: 16px;
+	height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+	background-image: url(images/ui-icons_0a82eb_256x240.png);
+}
+.ui-widget-header .ui-icon {
+	background-image: url(images/ui-icons_5fa5e3_256x240.png);
+}
+.ui-state-default .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+.ui-state-active .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+.ui-state-highlight .ui-icon {
+	background-image: url(images/ui-icons_0b54d5_256x240.png);
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+	border-top-left-radius: 3px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+	border-top-right-radius: 3px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+	border-bottom-left-radius: 3px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+	border-bottom-right-radius: 3px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+	background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+}
+.ui-widget-shadow {
+	margin: 6px 0 0 6px;
+	padding: 0px;
+	background: #000088 url(images/ui-bg_flat_0_000088_40x100.png) 50% 50% repeat-x;
+	opacity: .2;
+	filter: Alpha(Opacity=20);
+	border-radius: 3px;
+}
diff --git a/docs/css/openmeetings.css b/docs/css/openmeetings.css
new file mode 100644
index 0000000..ea209b8
--- /dev/null
+++ b/docs/css/openmeetings.css
@@ -0,0 +1,87 @@
+/*
+* 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.
+*/
+body {
+	color: #000000;
+	margin: 0;
+	background: #fafafa;
+	font: 10pt Verdana, Arial, Helvetica, sans-serif;
+	  
+}
+.active {
+	font-style: italic;
+}
+
+.mainbody {
+	margin-left: 40px;
+	margin-right: 40px;
+	-moz-box-shadow: 4px 0px 5px #666666;
+	-webkit-box-shadow: 4px 0px 5px #666666;
+	box-shadow: 4px 0px 5px #666666;
+}
+.superbody {
+	background: #FFFFFF;
+	-moz-box-shadow: -4px 0px 5px #666666;
+	-webkit-box-shadow: -4px 0px 5px #666666;
+	box-shadow: -4px 0px 5px #666666;
+}
+
+/* Box CSS  */
+div {
+	margin: 0;
+}
+
+
+.ro {
+	background: url(2b.png) top right no-repeat;
+}
+
+.lo {
+	background: url(1b.png) top left no-repeat;
+}
+
+.ru {
+	background: url(3b.png) bottom right no-repeat;
+}
+
+.lu {
+	background: url(4b.png) bottom left no-repeat;
+}
+
+ul {
+	margin-top: 0em;
+	padding-left: 1.5em;
+}
+
+.inhalt {
+	margin: 0;
+	padding: 0.5em 2.0em 1.5em 1.0em;
+}
+
+.inhalt p {
+	margin: 0;
+	padding: 0;
+}
+.xmlcode {
+	margin-left: 20px;
+	background-color: #eeeeee;
+	color: #0000ff;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
+#accordion.ui-accordion .ui-accordion-header a {
+	padding-left: 20px;
+}
diff --git a/docs/demo.html b/docs/demo.html
new file mode 100644
index 0000000..02d5aae
--- /dev/null
+++ b/docs/demo.html
@@ -0,0 +1,360 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Mailing Lists</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Apache OpenMeetings Demo Servers"><strong>Apache OpenMeetings Demo Servers</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				There are currently some technical issues with demo servers.
+			</p>
+                                                <p>
+				This is a list of servers that you can use for testing OpenMeetings.
+			</p>
+                                                <p>
+				<a href="http://demo.dataved.ru/openmeetings" target="_BLANK" rel="nofollow">http://demo.dataved.ru/openmeetings</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/dependencies.html b/docs/dependencies.html
new file mode 100644
index 0000000..93361d3
--- /dev/null
+++ b/docs/dependencies.html
@@ -0,0 +1,365 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+ OpenMeetings Documentation Team">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Project Dependencies</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="The Apache Podling Project"><strong>The Apache Podling Project</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+<p> 
+The common external dependencies of OpenMeetings include the tools used to build 
+and test it:
+</p>
+
+<ul>
+<li>Subversion</li>
+<li>Ant</li>
+<li>JUnit</li>
+</ul>
+
+<p>OpenMeetings will actively download resources from the online repositories while building.</p>
+
+</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/documentation.html b/docs/documentation.html
new file mode 100644
index 0000000..9c25cf4
--- /dev/null
+++ b/docs/documentation.html
@@ -0,0 +1,358 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+ Podling Documentation Team">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Documentation</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Documentation"><strong>OpenMeetings Documentation</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+Wiki is to be linked here, coming soon ...
+
+<!-- ***************** TBD **************************  -->
+<!-- ***************** TBD **************************  -->
+<!-- ***************** TBD **************************  -->
+
+</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/downloads.html b/docs/downloads.html
new file mode 100644
index 0000000..a14a817
--- /dev/null
+++ b/docs/downloads.html
@@ -0,0 +1,445 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Podling Documentation Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Downloads</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Downloads"><strong>Downloads</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				All downloads can be verified using the Apache OpenMeetings code
+				signing <a href="https://www.apache.org/dist/openmeetings/3.0.0/KEYS">KEYS</a>.
+			</div>
+                                                <p>
+				All are available for download as source and binary.
+			</p>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Latest Official Release"><strong>Latest Official Release</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					Apache Openmeetings 3.0.0
+				</p>
+                                                <ul>
+					<li>
+						Binaries:
+						<ul>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip">apache-openmeetings-3.0.0.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip.md5">[MD5]</a>
+							</li>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz">apache-openmeetings-3.0.0.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz.md5">[MD5]</a>
+							</li>
+						</ul>
+					</li>
+					<li>
+						Sources:
+						<ul>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip">apache-openmeetings-3.0.0-src.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip.md5">[MD5]</a>
+							</li>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz">apache-openmeetings-3.0.0-src.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz.md5">[MD5]</a>
+							</li>
+						</ul>
+					</li>
+				</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Previous Official Releases"><strong>Previous Official Releases</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					Apache Openmeetings releases available here:
+					<a href="http://archive.apache.org/dist/openmeetings/">http://archive.apache.org/dist/openmeetings/</a>
+				</p>
+                                                <p>
+					Apache Openmeetings Incubating 2.0 is available here:
+					<a href="http://archive.apache.org/dist/incubator/openmeetings/2.0-incubating/">http://archive.apache.org/dist/incubator/openmeetings/2.0-incubating</a>
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Plugins / Non ASF downloads"><strong>Plugins / Non ASF downloads</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					If you are looking for more plugins for 3th party applications (Moodle, Drupal, Joomla, ...) check out <a href="http://code.google.com/a/apache-extras.org/hosting/search?q=openmeetings" target="_BLANK" rel="nofollow">apache-extras.org</a>.
+				</p>
+                                                <p>
+					OpenMeetings releases that are not part of the ASF can be downloaded from the
+					old
+					<a href="http://code.google.com/p/openmeetings/downloads/list" target="_BLANK">GoogleCode website</a>
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/get-involved.html b/docs/get-involved.html
new file mode 100644
index 0000000..d4776c2
--- /dev/null
+++ b/docs/get-involved.html
@@ -0,0 +1,470 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Documentation Team
+		">
+            <meta name="email" content="dev@openmeetings.apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Get Involved</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How do I contribute, give feedback, fix bugs and so on?"><strong>How do I contribute, give feedback, fix bugs and so on?</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				The Apache OpenMeetings project really needs and appreciates any
+				contributions,
+				including documentation help, source code and
+				feedback. Suggested
+				changes should come in the form of source code
+				and/or very detailed
+				and constructive feedback.
+			</p>
+                                                <ul>
+				<li>
+					Discussion occurs on the
+					<a href="mail-lists.html">OpenMeetings mailing lists</a>
+				</li>
+				<li>
+					Information on access to the project source code is
+					available
+					<a href="svn.html">here</a>
+					.
+				</li>
+				<li>
+					Bugs and other issues can be posted on the project
+					<a href="https://issues.apache.org/jira/browse/OPENMEETINGS">JIRA</a>
+					(
+					<a href="https://issues.apache.org/jira/secure/Signup!default.jspa">sign up</a>
+					).
+				</li>
+				<li>
+					Additional documentation and discussion can be contributed to the
+					project
+					<a href="https://cwiki.apache.org/OPENMEETINGS">Wiki</a>
+					(
+					<a href="https://cwiki.apache.org/confluence/signup.action">sign up</a>
+					).
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Which taks could I potentially work on?"><strong>Which taks could I potentially work on?</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				No matter if you want to share your experiences, improve
+				documentation, localization, code Java, ActionScript or PHP, there
+				are dozens of areas where you can find task to work on and share
+				with others.
+				<br />
+				<br />
+				We tried to collect a list of ideas in our wiki:
+				<br />
+				<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list" target="_BLANK">https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list
+				</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="How do I become a committer?"><strong>How do I become a committer?</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you're interested in committing to the project: </p>
+                                                <ul>
+				<li>
+					<p>
+						You'll need to fill out some legal paperwork and go through
+						a
+						process to get an apache foundation committer account: See
+						<a class="external" rel="nofollow" href="http://apache.org/dev/new-committers-guide.html">
+							New Committers Guide
+						</a>
+						,
+						<a class="external" rel="nofollow" href="http://apache.org/dev/contributors.html"> Contributors</a>
+						, and
+						<a class="external" rel="nofollow" href="http://apache.org/dev/committers.html"> Committers</a>
+						for more details.
+					</p>
+
+				</li>
+				<li>
+					<p>
+						After you've received an email from
+						<a href="mailto:root@apache.org">root@apache.org</a>
+						with your committer account information, change your initial
+						password:
+						Login by 'ssh -l &lt;username&gt; people.apache.org';
+						run
+						'passwd';
+						run 'svnpasswd'. See
+						<a class="external" rel="nofollow" href="http://apache.org/dev/version-control.html">Committer Subversion Access
+						</a>
+						.
+					</p>
+				</li>
+				<li>
+					<p>
+						Check out the OpenMeetings sources and test your svn account:
+						<a href="http://svn.apache.org/viewvc/openmeetings/">
+							SubversionRepository
+						</a>
+						.
+					</p>
+
+				</li>
+
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/images/54882.jpg b/docs/images/54882.jpg
new file mode 100644
index 0000000..39cc036
--- /dev/null
+++ b/docs/images/54882.jpg
Binary files differ
diff --git a/docs/images/Arguments.png b/docs/images/Arguments.png
new file mode 100644
index 0000000..7427236
--- /dev/null
+++ b/docs/images/Arguments.png
Binary files differ
diff --git a/docs/images/DebugConfigurations.png b/docs/images/DebugConfigurations.png
new file mode 100644
index 0000000..c572dda
--- /dev/null
+++ b/docs/images/DebugConfigurations.png
Binary files differ
diff --git a/docs/images/Features_Screen_Conference_Room_Thumb.png b/docs/images/Features_Screen_Conference_Room_Thumb.png
new file mode 100644
index 0000000..19dece9
--- /dev/null
+++ b/docs/images/Features_Screen_Conference_Room_Thumb.png
Binary files differ
diff --git a/docs/images/NewConfiguration.png b/docs/images/NewConfiguration.png
new file mode 100644
index 0000000..45f3d62
--- /dev/null
+++ b/docs/images/NewConfiguration.png
Binary files differ
diff --git a/docs/images/SugarCRM_Installation.png b/docs/images/SugarCRM_Installation.png
new file mode 100644
index 0000000..b652b7b
--- /dev/null
+++ b/docs/images/SugarCRM_Installation.png
Binary files differ
diff --git a/docs/images/apache-incubator-logo-no-borders.png b/docs/images/apache-incubator-logo-no-borders.png
new file mode 100644
index 0000000..4bf4a6c
--- /dev/null
+++ b/docs/images/apache-incubator-logo-no-borders.png
Binary files differ
diff --git a/docs/images/apache_feather.gif b/docs/images/apache_feather.gif
new file mode 100644
index 0000000..1a0c3e6
--- /dev/null
+++ b/docs/images/apache_feather.gif
Binary files differ
diff --git a/docs/images/audio_and_video.png b/docs/images/audio_and_video.png
new file mode 100644
index 0000000..f35bb10
--- /dev/null
+++ b/docs/images/audio_and_video.png
Binary files differ
diff --git a/docs/images/backup.png b/docs/images/backup.png
new file mode 100644
index 0000000..f174339
--- /dev/null
+++ b/docs/images/backup.png
Binary files differ
diff --git a/docs/images/calendar.png b/docs/images/calendar.png
new file mode 100644
index 0000000..25f7978
--- /dev/null
+++ b/docs/images/calendar.png
Binary files differ
diff --git a/docs/images/chat.png b/docs/images/chat.png
new file mode 100644
index 0000000..ce9c040
--- /dev/null
+++ b/docs/images/chat.png
Binary files differ
diff --git a/docs/images/checkout_1.png b/docs/images/checkout_1.png
new file mode 100644
index 0000000..950891a
--- /dev/null
+++ b/docs/images/checkout_1.png
Binary files differ
diff --git a/docs/images/checkout_2.png b/docs/images/checkout_2.png
new file mode 100644
index 0000000..f31050b
--- /dev/null
+++ b/docs/images/checkout_2.png
Binary files differ
diff --git a/docs/images/checkout_3.png b/docs/images/checkout_3.png
new file mode 100644
index 0000000..94d21ce
--- /dev/null
+++ b/docs/images/checkout_3.png
Binary files differ
diff --git a/docs/images/checkout_4.png b/docs/images/checkout_4.png
new file mode 100644
index 0000000..7fcf576
--- /dev/null
+++ b/docs/images/checkout_4.png
Binary files differ
diff --git a/docs/images/checkout_5.png b/docs/images/checkout_5.png
new file mode 100644
index 0000000..e102426
--- /dev/null
+++ b/docs/images/checkout_5.png
Binary files differ
diff --git a/docs/images/checkout_6.png b/docs/images/checkout_6.png
new file mode 100644
index 0000000..8dd9189
--- /dev/null
+++ b/docs/images/checkout_6.png
Binary files differ
diff --git a/docs/images/checkout_7.png b/docs/images/checkout_7.png
new file mode 100644
index 0000000..4168d93
--- /dev/null
+++ b/docs/images/checkout_7.png
Binary files differ
diff --git a/docs/images/checkout_8.png b/docs/images/checkout_8.png
new file mode 100644
index 0000000..0494bb5
--- /dev/null
+++ b/docs/images/checkout_8.png
Binary files differ
diff --git a/docs/images/checkout_9.png b/docs/images/checkout_9.png
new file mode 100644
index 0000000..b083d00
--- /dev/null
+++ b/docs/images/checkout_9.png
Binary files differ
diff --git a/docs/images/choose_divice.png b/docs/images/choose_divice.png
new file mode 100644
index 0000000..1e38713
--- /dev/null
+++ b/docs/images/choose_divice.png
Binary files differ
diff --git a/docs/images/cluster1.png b/docs/images/cluster1.png
new file mode 100644
index 0000000..672ffc4
--- /dev/null
+++ b/docs/images/cluster1.png
Binary files differ
diff --git a/docs/images/cluster2.png b/docs/images/cluster2.png
new file mode 100644
index 0000000..6d47e1d
--- /dev/null
+++ b/docs/images/cluster2.png
Binary files differ
diff --git a/docs/images/cut_administration_configuration.png b/docs/images/cut_administration_configuration.png
new file mode 100644
index 0000000..c54ac9c
--- /dev/null
+++ b/docs/images/cut_administration_configuration.png
Binary files differ
diff --git a/docs/images/cut_conference_room.png b/docs/images/cut_conference_room.png
new file mode 100644
index 0000000..1a50a25
--- /dev/null
+++ b/docs/images/cut_conference_room.png
Binary files differ
diff --git a/docs/images/cut_file_explorer.png b/docs/images/cut_file_explorer.png
new file mode 100644
index 0000000..4e5d0c7
--- /dev/null
+++ b/docs/images/cut_file_explorer.png
Binary files differ
diff --git a/docs/images/cut_integrated_calendar.png b/docs/images/cut_integrated_calendar.png
new file mode 100644
index 0000000..3188354
--- /dev/null
+++ b/docs/images/cut_integrated_calendar.png
Binary files differ
diff --git a/docs/images/cut_integration_api.png b/docs/images/cut_integration_api.png
new file mode 100644
index 0000000..7cf6264
--- /dev/null
+++ b/docs/images/cut_integration_api.png
Binary files differ
diff --git a/docs/images/cut_private_messages.png b/docs/images/cut_private_messages.png
new file mode 100644
index 0000000..c080851
--- /dev/null
+++ b/docs/images/cut_private_messages.png
Binary files differ
diff --git a/docs/images/cut_recordings_playback.png b/docs/images/cut_recordings_playback.png
new file mode 100644
index 0000000..906d798
--- /dev/null
+++ b/docs/images/cut_recordings_playback.png
Binary files differ
diff --git a/docs/images/dashboard.png b/docs/images/dashboard.png
new file mode 100644
index 0000000..66152bd
--- /dev/null
+++ b/docs/images/dashboard.png
Binary files differ
diff --git a/docs/images/desktopsharing.png b/docs/images/desktopsharing.png
new file mode 100644
index 0000000..94e8add
--- /dev/null
+++ b/docs/images/desktopsharing.png
Binary files differ
diff --git a/docs/images/drupal_module_configuration.png b/docs/images/drupal_module_configuration.png
new file mode 100644
index 0000000..5ff3d04
--- /dev/null
+++ b/docs/images/drupal_module_configuration.png
Binary files differ
diff --git a/docs/images/drupal_module_installation.png b/docs/images/drupal_module_installation.png
new file mode 100644
index 0000000..3ba21b3
--- /dev/null
+++ b/docs/images/drupal_module_installation.png
Binary files differ
diff --git a/docs/images/drupal_room_configuration.png b/docs/images/drupal_room_configuration.png
new file mode 100644
index 0000000..fb35760
--- /dev/null
+++ b/docs/images/drupal_room_configuration.png
Binary files differ
diff --git a/docs/images/file_smal.png b/docs/images/file_smal.png
new file mode 100644
index 0000000..69dcc46
--- /dev/null
+++ b/docs/images/file_smal.png
Binary files differ
diff --git a/docs/images/installation_instructions.png b/docs/images/installation_instructions.png
new file mode 100644
index 0000000..64ab05a
--- /dev/null
+++ b/docs/images/installation_instructions.png
Binary files differ
diff --git a/docs/images/langeditor_screen_v2.png b/docs/images/langeditor_screen_v2.png
new file mode 100644
index 0000000..fbaf47d
--- /dev/null
+++ b/docs/images/langeditor_screen_v2.png
Binary files differ
diff --git a/docs/images/ldap_screen.png b/docs/images/ldap_screen.png
new file mode 100644
index 0000000..e28bbc3
--- /dev/null
+++ b/docs/images/ldap_screen.png
Binary files differ
diff --git a/docs/images/logo-2.jpg b/docs/images/logo-2.jpg
new file mode 100644
index 0000000..13c2512
--- /dev/null
+++ b/docs/images/logo-2.jpg
Binary files differ
diff --git a/docs/images/micro_small.png b/docs/images/micro_small.png
new file mode 100644
index 0000000..215c831
--- /dev/null
+++ b/docs/images/micro_small.png
Binary files differ
diff --git a/docs/images/monitor_add.png b/docs/images/monitor_add.png
new file mode 100644
index 0000000..a818066
--- /dev/null
+++ b/docs/images/monitor_add.png
Binary files differ
diff --git a/docs/images/moodle_add_activity_plugin.png b/docs/images/moodle_add_activity_plugin.png
new file mode 100644
index 0000000..7a95991
--- /dev/null
+++ b/docs/images/moodle_add_activity_plugin.png
Binary files differ
diff --git a/docs/images/moodle_configure_plugin.png b/docs/images/moodle_configure_plugin.png
new file mode 100644
index 0000000..70b5cbf
--- /dev/null
+++ b/docs/images/moodle_configure_plugin.png
Binary files differ
diff --git a/docs/images/moodle_install_plugin.png b/docs/images/moodle_install_plugin.png
new file mode 100644
index 0000000..7381712
--- /dev/null
+++ b/docs/images/moodle_install_plugin.png
Binary files differ
diff --git a/docs/images/mouse_add.png b/docs/images/mouse_add.png
new file mode 100644
index 0000000..65bcab5
--- /dev/null
+++ b/docs/images/mouse_add.png
Binary files differ
diff --git a/docs/images/pencil_add.png b/docs/images/pencil_add.png
new file mode 100644
index 0000000..902bbe6
--- /dev/null
+++ b/docs/images/pencil_add.png
Binary files differ
diff --git a/docs/images/poll.png b/docs/images/poll.png
new file mode 100644
index 0000000..5b51c9b
--- /dev/null
+++ b/docs/images/poll.png
Binary files differ
diff --git a/docs/images/pollresult.png b/docs/images/pollresult.png
new file mode 100644
index 0000000..88c38df
--- /dev/null
+++ b/docs/images/pollresult.png
Binary files differ
diff --git a/docs/images/privat_messages.png b/docs/images/privat_messages.png
new file mode 100644
index 0000000..cc6e245
--- /dev/null
+++ b/docs/images/privat_messages.png
Binary files differ
diff --git a/docs/images/recordings_timeleine.png b/docs/images/recordings_timeleine.png
new file mode 100644
index 0000000..407719e
--- /dev/null
+++ b/docs/images/recordings_timeleine.png
Binary files differ
diff --git a/docs/images/right_management.png b/docs/images/right_management.png
new file mode 100644
index 0000000..da287a6
--- /dev/null
+++ b/docs/images/right_management.png
Binary files differ
diff --git a/docs/images/system_backup.png b/docs/images/system_backup.png
new file mode 100644
index 0000000..ffc2964
--- /dev/null
+++ b/docs/images/system_backup.png
Binary files differ
diff --git a/docs/images/user_add.png b/docs/images/user_add.png
new file mode 100644
index 0000000..deae99b
--- /dev/null
+++ b/docs/images/user_add.png
Binary files differ
diff --git a/docs/images/vote.png b/docs/images/vote.png
new file mode 100644
index 0000000..c16ff86
--- /dev/null
+++ b/docs/images/vote.png
Binary files differ
diff --git a/docs/images/whiteboard.png b/docs/images/whiteboard.png
new file mode 100644
index 0000000..8e5392f
--- /dev/null
+++ b/docs/images/whiteboard.png
Binary files differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..539446e
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,886 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Apache OpenMeetings - Features and overview"><strong>Apache OpenMeetings - Features and overview</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div id="coin-slider">
+				<a href="#">
+					<img src="images/cut_conference_room.png" alt="Conference Room" />
+					<span>
+						<b>Audio/Video Conferencing</b>
+						<br />
+						OpenMeetings enables you to make Audio/Video conferencing.
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_integrated_calendar.png" alt="Calendar" />
+					<span>
+						<b>Calendar</b>
+						<br />
+						You can create meetings with the integrated calendar, conference rooms and invitations are automatically send to everybody
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_file_explorer.png" alt="File Explorer" />
+					<span>
+						<b>File Explorer</b>
+						<br />
+						Each room has its own File-Explorer. Each user has his own private drive and additionally there is a public drive to share files with other participants
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_integration_api.png" alt="Integration API" />
+					<span>
+						<b>Integration API</b>
+						<br />
+						There is a SOAP/REST API to integrate into your website or intranet, as well
+						as LDAP/ADS connectors and VoIP/Asterisk integration modules
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_private_messages.png" alt="Private messages" />
+					<span>
+						<b>Private messages and contacts</b>
+						<br />
+						From the private message center you can send invitations by email
+						and attach meeting invitations to every email
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_administration_configuration.png" alt="Administration" />
+					<span>
+						<b>Administration and Configuration</b>
+						<br />
+						You can configure users, rooms, usergroups, config settings or
+						edit labels with a Web-Frontend integrated in the application
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_recordings_playback.png" alt="Share and Record" />
+					<span>
+						<b>Screen sharing and Recording</b>
+						<br />
+						You can do screen sharing as well as recording of whole sessions
+						including audio/video. Recordings can be downloaded as AVI/FLV or
+						watched online in the integrated player.
+					</span>
+				</a>
+
+			</div>
+                                                <p> Openmeetings provides video conferencing, instant messaging,
+				white board, collaborative document editing and other groupware
+				tools using API functions of the Red5 Streaming Server for Remoting
+				and Streaming.
+			</p>
+                                                <p>
+				OpenMeetings is a project of the Apache, the old project
+				website at
+				<a href="http://code.google.com/p/openmeetings/" target="_BLANK">GoogleCode
+				</a>
+				will receive no updates anymore. The website at Apache is the only
+				place that receives updates.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="News"><strong>News</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+			    <strong>
+                    Version 2.2.0 released! See <a href="downloads.html">Downloads page</a>. 
+                    (2013-12-12)
+                </strong>
+                <br />
+			    <strong>
+                    Version 2.1.1 released! See <a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_1_11" target="_BLANK">Project Blog</a> or <a href="downloads.html">Downloads page</a>. 
+                    (2013-07-06)
+                </strong>
+                <br />
+			    <strong>
+					OpenMeetings 2.1.0 is released! Please check <a href="downloads.html">Downloads page</a>. 
+					(2013-04-01)
+				</strong>
+				<br />
+			    <strong>
+					OpenMeetings new URL, update your filters!
+					<a href="http://openmeetings.apache.org">openmeetings.apache.org</a> is the new home. 
+					(2013-01-28)
+				</strong>
+				<br />
+			    <strong>
+					OpenMeetings on the road to graduate from the Incubator
+					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_on_the_road_to" target="_BLANK" rel="nofollow">at our blog</a>
+					(2012-12-07)
+				</strong>
+				<br />
+				<strong>
+					Some slides from our Fast Feather Track at the ApacheCon Europe 2012 
+					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_apachecon_presentation_slide" target="_BLANK" rel="nofollow">at our blog</a>
+					(2012-11-18)
+				</strong>
+				<br />
+				<strong>
+					Update: Builds are available at
+					<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" target="_BLANK" rel="nofollow">builds.apache.org</a>
+					(2012-08-03)
+				</strong>
+				<br />
+				<strong>
+					<a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_0_incubating" target="_BLANK" rel="nofollow">Version 2.0 released</a>
+					(2012-07-26)
+				</strong>
+				<br />
+				<strong>New committer: Timur Tleukenov (2012-03-06)</strong>
+				<br />
+				<strong>
+					<a href="http://demo.openmeetings.de" target="_BLANK" rel="nofollow">Demo
+						server</a>
+					updated to r1236172 (2012-01-26)
+				</strong>
+				<br />
+				<strong>New committer: German Grekhov (2011-12-26)</strong>
+				<br />
+				<strong>OpenMeetings has been accepted into the Apache Incubator
+					(2011-11-12).
+				</strong>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Community"><strong>Community</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				<strong>Who we are</strong>
+				<blockquote>
+					<a href="team-list.html">List of committers</a>
+					.
+				</blockquote>
+			</div>
+                                                <div>
+				<strong>Users!</strong>
+				<blockquote>
+					We'd love to have you involved. Check out the
+					<a href="get-involved.html">Get involved</a>
+					.
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Feature details"><strong>Feature details</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    	<h3>Audio and Video Conferencing</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/Features_Screen_Conference_Room_Thumb.png">
+								<img src="images/Features_Screen_Conference_Room_Thumb.png" alt="" width="250"
+									 height="175"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					There are four options to use OpenMeetings audio/video functions,
+					which you can select during a conference session.
+					<ul>
+						<li>audio + video</li>
+						<li>audio only</li>
+						<li>video only</li>
+						<li>picture only</li>
+					</ul>
+					Additional you can change video-/audio-quality, choose multiple
+					camera resolutions (4:3, 16:9 or 3:2)
+					and choose your input devices.
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Meeting recording and Screen sharing</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/desktopsharing.png">
+								<img src="images/desktopsharing.png" alt="" width="140"
+									 height="150"  />
+							</a>
+																								<p>
+							<a class="group1 fancybox-buttons" href="images/recordings_timeleine.png">
+								<img src="images/recordings_timeleine.png" alt="" width="200"
+									 height="115"  />
+							</a>
+																										</td>
+				<td>
+																																								<div>
+					<ul>
+						<li>Recorded sessions contain everything including sound recorded
+							from all audio streams in exactly the way you've seen it in the
+							conference.
+						</li>
+					</ul>
+					<ul>
+						<li>Recorded sessions can be downloaded as AVI/FLV files.</li>
+					</ul>
+					<ul>
+						<li>Possibility to select a screen area for sharing.</li>
+					</ul>
+					<ul>
+						<li>Different quality steps for Screensharing.</li>
+					</ul>
+					<ul>
+						<li>Watch and organize recordings in an integrated Drag and Drop
+							File-Explorer
+						</li>
+					</ul>
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>File Explorer</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/file_smal.png">
+								<img src="images/file_smal.png" alt="" width="135"
+									 height="200"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					Advanced File-Explorer in every conference room, Drag and Drop
+					interface for managing uploaded files, including the possibility to
+					create a document tree with folders.
+					<br />
+					<br />
+					Private and Public Drive in
+					File-Explorer. The File-Explorer has two
+					different views, one is the
+					<b>Private Drive</b>
+					and the other the
+					<b>Public Drive</b>
+					. The Private Drive
+					always contains the same files.
+					Those files are
+					visible only to the
+					user currently loggedin. The
+					Public Drive is not
+					bound to the user,
+					but to the conference room
+					instead. All users in
+					the conference room
+					have access to the Public
+					Drive.
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Moderating System</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/right_management.png">
+								<img src="images/right_management.png" alt="" width="135"
+									 height="216"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					During a conference, the moderator can adjust the user permission
+					to every user individually .
+					<ul>
+						<li>
+							<img class="alignnone" title="Allow modaration" src="images/user_add.png" alt="" />
+							Allow/Deny moderation
+						</li>
+						<li>
+							<img class="alignnone" title="Whiteboard Access" src="images/pencil_add.png" alt="" />
+							Allow/Deny to draw on white board
+						</li>
+						<li>
+							<img class="alignnone" title="Screenshare" src="images/monitor_add.png" alt="" />
+							Allow/Deny screen-sharing/record screen
+						</li>
+						<li>
+							<img class="alignnone" title="Remote control" src="images/mouse_add.png" alt="" />
+							Allow/Deny Remote Control Screen
+						</li>
+						<li>
+							<img class="alignnone" title="Remote control" src="images/micro_small.png" alt="" />
+							Give exclusive audio to others or self
+						</li>
+						<li>
+							<img class="alignnone" title="Video Audio" src="images/audio_and_video.png" alt="" />
+							(Re-) Start Audio, Video or Device settings
+						</li>
+					</ul>
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Multi-Whiteboard and Chat</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/whiteboard.png">
+								<img src="images/whiteboard.png" alt="" width="240"
+									 height="165"  />
+							</a>
+																								<p>
+							<a class="group1 fancybox-buttons" href="images/chat.png">
+								<img src="images/chat.png" alt="" width="240"
+									 height="68"  />
+							</a>
+																										</td>
+				<td>
+																																								<div>
+					Multi-Whiteboard, you can add new whiteboard instances, each
+					white
+					board can have the full range of tools and documents inside.
+					<br />
+					<br />
+					Save white boards. You can save each whiteboard instance as a file.
+					The file is located in the File-Explorer and can be drag n' drop'ed
+					to the white board again and organized like any other document,
+					image or folder.
+					<br />
+					<br />
+					White board with drawing, writing, Drag n' Drop, Resizing, Images
+					(Drag n'
+					Drop from File-Explorer), Symbol(s)/Cliparts .
+					<br />
+					<br />
+					Full-fit does rescale the document on the screen to be 100% visible
+					on all
+					screens no matter what kind of screen resolution different
+					users
+					have.
+					<br />
+					<br />
+					You can import from a wide range of document formats (PDF, DOC,
+					ODT, PPT, et cetera...)
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>User and room management</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/dashboard.png">
+								<img src="images/dashboard.png" alt="" width="250"
+									 height="130"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					You can manage users and multiple organizations in a single
+					OpenMeetings instance. You can also create users that only have
+					access via the SOAP-API.
+					<br />
+					<br />
+					MyRooms section. Each user has by default 2 personal rooms that
+					are
+					always accessible exclusively for that user. There are buttons
+					to
+					enter those rooms from the Dashboard.
+					<br />
+					<br />
+					You can assign conference room to all users, or you can assign them
+					only to specific user-groups.
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Private message center</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/privat_messages.png">
+								<img src="images/privat_messages.png" alt="" width="230"
+									 height="125"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					Send users messages and organize them in folders. You can book
+					conference rooms by sending private messages. The booked event
+					automatically is in your and the participants calendar, changes to
+					that event will be populated to all users booked to the event.
+					<br />
+					<br />
+					User contacts, you can search users and add them to your contacts.
+					You
+					can even give them the right to see your calendar.
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Plan meetings with integrated calendar</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/calendar.png">
+								<img src="images/calendar.png" alt="" width="200"
+									 height="115"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					<ul>
+						<li>Plan your conferencing and invite attendees from OpenMeetings
+							or External.
+						</li>
+						<li>The invited attendees will recieve an E-mail with details to
+							the meetings and a link with a secure hash to the conference
+							room.
+						</li>
+						<li>Share your calendar with your contacts.</li>
+					</ul>
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Polls and Votes</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/poll.png">
+								<img src="images/poll.png" alt="" width="250"
+									 height="250"  />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					You can create a poll with yes/no or 1-10 questions, let the
+					user
+					vote and see the voting results.
+					<br />
+					<br />
+					Polls can be stored and results viewed as pie-chart
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                                                	<h3>Backup</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+																		<p>
+							<a class="group1 fancybox-buttons" href="images/backup.png">
+								<img src="images/backup.png" alt="" width="250"
+									 />
+							</a>
+																										</td>
+				<td>
+																													<div>
+					You can backup all user-generated data including files
+					uploaded by the users in a single ZIP file and import that ZIP into
+					a new installation of OpenMeetings again.
+				</div>
+															</td>
+			</tr>
+	    </tbody>
+	</table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/installation.html b/docs/installation.html
new file mode 100644
index 0000000..8804758
--- /dev/null
+++ b/docs/installation.html
@@ -0,0 +1,667 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Home</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Installation"><strong>OpenMeetings Installation</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				To update from past versions or migrate see <a href="Upgrade.html">Upgrade</a>.<br />
+				If you are looking for commercial help have a look at
+				<a href="commercial-support.html" target="_BLANK" rel="nofollow">commercial support</a>.
+			</p>
+                                                <div>
+				<a href="downloads.html" rel="nofollow">
+					<img src="images/installation_instructions.png" alt="Installation in 3 simple steps" />
+				</a>
+				<p>
+					<i>Note: OpenMeetings requires SUN/Oracle JRE 6, not openJDK!</i><br />
+					<i>
+						Since Version 2.0 you can also install OpenMeetings from command line. Just cd to the unpacked 
+						archive and type ./admin.sh or admin.bat, please see
+						<a href="CommandLineAdmin.html" target="_BLANK" rel="nofollow">Command Line Admin</a>
+						for more options
+					</i>
+				</p>
+			</div>
+                                                <ol>
+				<li>
+					<b>Recommendation for production environment</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						By default OpenMeetings uses the integrated Apache Derby database.
+						For production environment you should consider using
+						<a href="MySQLConfig.html">MySQL</a>
+						,
+						<a href="PostgresConfig.html">Postgres</a>
+						, or for example
+						<a href="IBMDB2Config.html">IBM DB2</a>
+						, or
+						<a href="OracleConfig.html">Oracle</a>
+						, or
+						<a href="MSSQLConfig.html">MSSQL</a>
+					</div>
+				</li>
+				<li>
+					<b>Enabling Image Upload and import to whiteboard</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						Install
+						<b>ImageMagick</b>
+						on the server, you can get more information on
+						<a href="http://www.imagemagick.org" rel="nofollow" target="_BLANK">http://www.imagemagick.org
+						</a>
+						regarding installation. The instructions
+						for installation can be
+						found there
+						<a href="http://www.imagemagick.org/script/binary-releases.php" target="_BLANK" rel="nofollow">http://www.imagemagick.org/script/binary-releases.php
+						</a>
+						,
+						however on
+						most Linux systems you can get it via your favorite
+						package
+						managers (apt-get it)
+					</div>
+				</li>
+				<li>
+					<b>Enabling import of PDFs into whiteboard</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								Install
+								<b>GhostScript</b>
+								on the server, you can get more
+								information on
+								<a href="http://www.ghostscript.com/download/gsdnld.html" target="_BLANK" rel="nofollow">
+									http://www.ghostscript.com/download/gsdnld.html
+								</a>
+								regarding
+								installation. The instructions for installation can be
+								found
+								there, however on most Linux systems you can get it via
+								your
+								favorite package managers (apt-get it).
+							</li>
+							<li>
+								Install
+								<b>SWFTools</b>
+								on the server, you can get more information
+								on
+								<a href="http://www.swftools.org/" target="_BLANK" rel="nofollow">http://www.swftools.org/
+								</a>
+								regarding installation. Some of the
+								Linux distributions already
+								have it in there package manager (see
+								<a href="http://packages.debian.org/unstable/utils/swftools" target="_BLANK" rel="nofollow">http://packages.debian.org/unstable/utils/swftools
+								</a>
+								), the
+								recommended version of SWFTools is 0.9 as prior version
+								have a
+								bug that does lead to wrong object dimensions at
+								whiteboard
+							</li>
+						</ul>
+					</div>
+				</li>
+				<li>
+					<b>Enabling import of .doc, .docx, .ppt, .pptx, ... all Office
+						Documents into whitebaord
+					</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								<a href="http://code.google.com/p/jodconverter/" target="_BLANK" rel="nofollow">JODConverter</a>
+								installed (needed since v2.x)
+							</li>
+							<li>OpenOffice or Libre Office Installed</li>
+						</ul>
+						Since Version 2.x of OpenMeetings it is no more required to start
+						OpenOffice (or Libreoffice) service, see
+						<a href="OpenOfficeConverter.html">OpenOfficeConverter</a>
+						for details
+					</div>
+				</li>
+				<li>
+					<b>Enabling Recording and import of .avi, .flv, .mov and .mp4 into
+						whiteboard
+					</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								Install
+								<b>FFMpeg (with -enabled libmp3lame and libx264 options)</b>
+								. You should get FFMPEG in an up to date copy! OpenMeetings is
+								tested with FFMPEG Version 10.3 and latest build from GIT
+								For Windows you can download a Build for example from
+								<a href="http://ffmpeg.zeranoe.com/builds/" target="_BLANK" rel="nofollow">http://ffmpeg.zeranoe.com/builds/ </a>
+								Linux or OSx Users should be able to use one of the various
+								Installation Instructions on the Web. You need to enable
+								libmp3lame and libx264!
+							</li>
+							<li>
+								Install
+								<b>SoX</b>
+								<a href="http://sox.sourceforge.net/" target="_BLANK" rel="nofollow">http://sox.sourceforge.net/
+								</a>
+								. You should install SoX in a up
+								to date copy! SoX 12.xx will NOT
+								work!
+							</li>
+						</ul>
+					</div>
+				</li>
+			</ol>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Ports, NAT Settings, Customize"><strong>Ports, NAT Settings, Customize</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				See
+				<a href="PortSettings.html">PortSettings</a>
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="VMWare"><strong>VMWare</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					See
+					<a href="http://nightly.openmeetings.de/openmeetings/builds/vmware/" rel="nofollow">http://nightly.openmeetings.de/openmeetings/builds/vmware/</a>
+				</li>
+				<li>
+					VMWare 1.6.1
+					<a href="http://openstudio.no-ip.info/2011/01/openmeetings-1-6-rc1-vmware-appliance-using-ubuntu-server-10-04-lts/" rel="nofollow">blog-entry</a>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Hardware Requirements"><strong>Hardware Requirements</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					Minimalistic requirement (without Document Converters, Recorder and
+					Upload feature) 1GHz CPU 1 GB RAM (
+					<i>server-side</i>
+					)
+				</li>
+				<li>
+					Recommended requirement 2x/4x 2GHz ++ CPU (32 or 64Bit) 4GB RAM. If
+					you have a 64Bit Operating System check if there is a OpenOffice
+					64Bit Version
+					<a href="http://download.openoffice.org/other.html#de" rel="nofollow">available
+						for your OS
+					</a>
+					(
+					<i>server-side</i>
+					)
+				</li>
+				<li>
+					Headset/Microphone recommendation: Logitech ClearChat PC Wireless,
+					for example from
+					<a href="http://www.amazon.de/Logitech-ClearChat-kabelloser-Kopfh%C3%B6rer-Transmitter/dp/B00166WSN4" rel="nofollow">Amazon</a>
+					or
+					<a href="http://shop.ebay.com/i.html?_nkw=Logitech+ClearChat.+Wireless&amp;_sacat=0&amp;_trksid=p3286.m270.l1313&amp;LH_BIN=1&amp;LH_IncludeSIF=1&amp;_odkw=Logitech+ClearChat+PC&amp;_osacat=0" rel="nofollow">EBay Auctions</a>
+					(
+					<i>cient-side</i>
+					).
+					<a href="RecommendedHardwareList.html">See all recommendations</a>
+					for cameras, headsets and speakerphones.
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Debian, Links, Changelog, VoIP"><strong>Debian, Links, Changelog, VoIP</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					for VoIP and SIP Integration see also
+					<a href="voip-sip-integration.html">VoIPAndSIP</a>
+				</li>
+				<li>
+					<a href="http://meetingslive.sourceforge.net/" rel="nofollow">http://meetingslive.sourceforge.net/
+					</a>
+				</li>
+				<li>
+					<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Installation of OM 2.0 for Ubuntu 12.04 x64, Ubuntu 12.10 x64, Debian, Windows XP, 7, 2003, 2008</a>
+				</li>
+				<li>
+					<a href="http://liberamemoria.blogspot.com/2009/02/instalando-openmeetings-07-rc-2-en.html" rel="nofollow">Espanol Version for Debian Installation</a>
+				</li>
+				<li>
+					<a href="http://aitinet.com/blog/wp-content/uploads/2009/08/TUTORIAL-PARA-INSTALACAO-DO-RED5-E-OPENMEETINGS-NO-LINUX-DEBIAN-LENNY-51.pdf" rel="nofollow">Portuguese Version for Debian Installation of 0.9 RC1</a>
+				</li>
+				<li>
+					<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools" rel="nofollow">Automatic script installation for Ubuntu/Debian (beta)</a>
+				</li>
+				<li>
+					French version of Installation Instructions:
+					<a href="http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation" rel="nofollow">http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation
+					</a>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Tips and Tricks"><strong>Tips and Tricks</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li>
+					Use the Debug-Application: Enter in your browser
+					<a href="http://$RED-HOST:$RED5-PORT/openmeetings/?swf=maindebug.as3.swf11.swf" rel="nofollow">http://$RED-HOST:$RED5-PORT/openmeetings/?swf=maindebug.as3.swf11.swf
+					</a>
+					for example
+					<a href="http://localhost:5080/openmeetings/?swf=maindebug.as3.swf11.swf" rel="nofollow">http://localhost:5080/openmeetings/?swf=maindebug.as3.swf11.swf
+					</a>
+				</li>
+				<li>If you have Problems with conversion-jobs check your Red5-Log
+					output. There will be error Messages which help you. You must
+					install OpenOffice, ImageMagick, GhostScript and SWFTools to run
+					all conversion-Jobs correctly.
+				</li>
+				<li>if you have problems in converting Files check the Batch-Scripts
+					in $OPENMEETINGS_HOME/jod
+				</li>
+				<li>
+					If you want to use red5 as a service (without red5.bat), you need
+					to move red5\wrapper\wrapper.exe to red5\wrapper.exe. Then change
+					some path in conf\wrapper.conf (like ..\lib\foo.jar to
+					lib\foo.jar). And finally change the register key in
+					HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Red5\ImagePath
+					to point to the new wrapper.
+				</li>
+				<li>
+					you can query a Mysql Database to get the schema_collection by
+					using this query:
+					<div class="xmlcode">
+						SELECT Table_name, TABLE_COLLATION FROM
+						information_schema.tables WHERE table_schema = 'openmeetings'
+						ORDER BY table_name DESC
+					</div>
+				</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/js/coin-slider.min.js b/docs/js/coin-slider.min.js
new file mode 100644
index 0000000..b96708f
--- /dev/null
+++ b/docs/js/coin-slider.min.js
@@ -0,0 +1,51 @@
+/**
+ * Coin Slider - Unique jQuery Image Slider
+ * @version: 1.0 - (2010/04/04)
+ * @requires jQuery v1.2.2 or later 
+ * @author Ivan Lazarevic
+ * Examples and documentation at: http://workshop.rs/projects/coin-slider/
+ 
+ * Licensed under MIT licence:
+ *   http://www.opensource.org/licenses/mit-license.php
+**/
+
+(function($){var params=new Array;var order=new Array;var images=new Array;var links=new Array;var linksTarget=new Array;var titles=new Array;var interval=new Array;var imagePos=new Array;var appInterval=new Array;var squarePos=new Array;var reverse=new Array;$.fn.coinslider=$.fn.CoinSlider=function(options){init=function(el){order[el.id]=new Array();images[el.id]=new Array();links[el.id]=new Array();linksTarget[el.id]=new Array();titles[el.id]=new Array();imagePos[el.id]=0;squarePos[el.id]=0;reverse[el.id]=1;params[el.id]=$.extend({},$.fn.coinslider.defaults,options);$.each($('#'+el.id+' img'),function(i,item){images[el.id][i]=$(item).attr('src');links[el.id][i]=$(item).parent().is('a')?$(item).parent().attr('href'):'';linksTarget[el.id][i]=$(item).parent().is('a')?$(item).parent().attr('target'):'';titles[el.id][i]=$(item).next().is('span')?$(item).next().html():'';$(item).hide();$(item).next().hide();});$(el).css({'background-image':'url('+images[el.id][0]+')','width':params[el.id].width,'height':params[el.id].height,'position':'relative','background-position':'top left'}).wrap("<div class='coin-slider' id='coin-slider-"+el.id+"' />");$('#'+el.id).append("<div class='cs-title' id='cs-title-"+el.id+"' style='position: absolute; bottom:0; left: 0; z-index: 1000;'></div>");$.setFields(el);if(params[el.id].navigation)
+$.setNavigation(el);$.transition(el,0);$.transitionCall(el);}
+$.setFields=function(el){tWidth=sWidth=parseInt(params[el.id].width/params[el.id].spw);tHeight=sHeight=parseInt(params[el.id].height/params[el.id].sph);counter=sLeft=sTop=0;tgapx=gapx=params[el.id].width-params[el.id].spw*sWidth;tgapy=gapy=params[el.id].height-params[el.id].sph*sHeight;for(i=1;i<=params[el.id].sph;i++){gapx=tgapx;if(gapy>0){gapy--;sHeight=tHeight+1;}else{sHeight=tHeight;}
+for(j=1;j<=params[el.id].spw;j++){if(gapx>0){gapx--;sWidth=tWidth+1;}else{sWidth=tWidth;}
+order[el.id][counter]=i+''+j;counter++;if(params[el.id].links)
+$('#'+el.id).append("<a href='"+links[el.id][0]+"' class='cs-"+el.id+"' id='cs-"+el.id+i+j+"' style='width:"+sWidth+"px; height:"+sHeight+"px; float: left; position: absolute;'></a>");else
+$('#'+el.id).append("<div class='cs-"+el.id+"' id='cs-"+el.id+i+j+"' style='width:"+sWidth+"px; height:"+sHeight+"px; float: left; position: absolute;'></div>");$("#cs-"+el.id+i+j).css({'background-position':-sLeft+'px '+(-sTop+'px'),'left':sLeft,'top':sTop});sLeft+=sWidth;}
+sTop+=sHeight;sLeft=0;}
+$('.cs-'+el.id).mouseover(function(){$('#cs-navigation-'+el.id).show();});$('.cs-'+el.id).mouseout(function(){$('#cs-navigation-'+el.id).hide();});$('#cs-title-'+el.id).mouseover(function(){$('#cs-navigation-'+el.id).show();});$('#cs-title-'+el.id).mouseout(function(){$('#cs-navigation-'+el.id).hide();});if(params[el.id].hoverPause){$('.cs-'+el.id).mouseover(function(){params[el.id].pause=true;});$('.cs-'+el.id).mouseout(function(){params[el.id].pause=false;});$('#cs-title-'+el.id).mouseover(function(){params[el.id].pause=true;});$('#cs-title-'+el.id).mouseout(function(){params[el.id].pause=false;});}};$.transitionCall=function(el){clearInterval(interval[el.id]);delay=params[el.id].delay+params[el.id].spw*params[el.id].sph*params[el.id].sDelay;interval[el.id]=setInterval(function(){$.transition(el)},delay);}
+$.transition=function(el,direction){if(params[el.id].pause==true)return;$.effect(el);squarePos[el.id]=0;appInterval[el.id]=setInterval(function(){$.appereance(el,order[el.id][squarePos[el.id]])},params[el.id].sDelay);$(el).css({'background-image':'url('+images[el.id][imagePos[el.id]]+')'});if(typeof(direction)=="undefined")
+imagePos[el.id]++;else
+if(direction=='prev')
+imagePos[el.id]--;else
+imagePos[el.id]=direction;if(imagePos[el.id]==images[el.id].length){imagePos[el.id]=0;}
+if(imagePos[el.id]==-1){imagePos[el.id]=images[el.id].length-1;}
+$('.cs-button-'+el.id).removeClass('cs-active');$('#cs-button-'+el.id+"-"+(imagePos[el.id]+1)).addClass('cs-active');if(titles[el.id][imagePos[el.id]]){$('#cs-title-'+el.id).css({'opacity':0}).animate({'opacity':params[el.id].opacity},params[el.id].titleSpeed);$('#cs-title-'+el.id).html(titles[el.id][imagePos[el.id]]);}else{$('#cs-title-'+el.id).css('opacity',0);}};$.appereance=function(el,sid){$('.cs-'+el.id).attr('href',links[el.id][imagePos[el.id]]).attr('target',linksTarget[el.id][imagePos[el.id]]);if(squarePos[el.id]==params[el.id].spw*params[el.id].sph){clearInterval(appInterval[el.id]);return;}
+$('#cs-'+el.id+sid).css({opacity:0,'background-image':'url('+images[el.id][imagePos[el.id]]+')'});$('#cs-'+el.id+sid).animate({opacity:1},300);squarePos[el.id]++;};$.setNavigation=function(el){$(el).append("<div id='cs-navigation-"+el.id+"'></div>");$('#cs-navigation-'+el.id).hide();$('#cs-navigation-'+el.id).append("<a href='#' id='cs-prev-"+el.id+"' class='cs-prev'>prev</a>");$('#cs-navigation-'+el.id).append("<a href='#' id='cs-next-"+el.id+"' class='cs-next'>next</a>");$('#cs-prev-'+el.id).css({'position':'absolute','top':params[el.id].height/2-15,'left':0,'z-index':1001,'line-height':'30px','opacity':params[el.id].opacity}).click(function(e){e.preventDefault();$.transition(el,'prev');$.transitionCall(el);}).mouseover(function(){$('#cs-navigation-'+el.id).show()});$('#cs-next-'+el.id).css({'position':'absolute','top':params[el.id].height/2-15,'right':0,'z-index':1001,'line-height':'30px','opacity':params[el.id].opacity}).click(function(e){e.preventDefault();$.transition(el);$.transitionCall(el);}).mouseover(function(){$('#cs-navigation-'+el.id).show()});$("<div id='cs-buttons-"+el.id+"' class='cs-buttons'></div>").appendTo($('#coin-slider-'+el.id));for(k=1;k<images[el.id].length+1;k++){$('#cs-buttons-'+el.id).append("<a href='#' class='cs-button-"+el.id+"' id='cs-button-"+el.id+"-"+k+"'>"+k+"</a>");}
+$.each($('.cs-button-'+el.id),function(i,item){$(item).click(function(e){$('.cs-button-'+el.id).removeClass('cs-active');$(this).addClass('cs-active');e.preventDefault();$.transition(el,i);$.transitionCall(el);})});$('#cs-navigation-'+el.id+' a').mouseout(function(){$('#cs-navigation-'+el.id).hide();params[el.id].pause=false;});$("#cs-buttons-"+el.id).css({'left':'50%','margin-left':-images[el.id].length*15/2-5,'position':'relative'});}
+$.effect=function(el){effA=['random','swirl','rain','straight'];if(params[el.id].effect=='')
+eff=effA[Math.floor(Math.random()*(effA.length))];else
+eff=params[el.id].effect;order[el.id]=new Array();if(eff=='random'){counter=0;for(i=1;i<=params[el.id].sph;i++){for(j=1;j<=params[el.id].spw;j++){order[el.id][counter]=i+''+j;counter++;}}
+$.random(order[el.id]);}
+if(eff=='rain'){$.rain(el);}
+if(eff=='swirl')
+$.swirl(el);if(eff=='straight')
+$.straight(el);reverse[el.id]*=-1;if(reverse[el.id]>0){order[el.id].reverse();}}
+$.random=function(arr){var i=arr.length;if(i==0)return false;while(--i){var j=Math.floor(Math.random()*(i+1));var tempi=arr[i];var tempj=arr[j];arr[i]=tempj;arr[j]=tempi;}}
+$.swirl=function(el){var n=params[el.id].sph;var m=params[el.id].spw;var x=1;var y=1;var going=0;var num=0;var c=0;var dowhile=true;while(dowhile){num=(going==0||going==2)?m:n;for(i=1;i<=num;i++){order[el.id][c]=x+''+y;c++;if(i!=num){switch(going){case 0:y++;break;case 1:x++;break;case 2:y--;break;case 3:x--;break;}}}
+going=(going+1)%4;switch(going){case 0:m--;y++;break;case 1:n--;x++;break;case 2:m--;y--;break;case 3:n--;x--;break;}
+check=$.max(n,m)-$.min(n,m);if(m<=check&&n<=check)
+dowhile=false;}}
+$.rain=function(el){var n=params[el.id].sph;var m=params[el.id].spw;var c=0;var to=to2=from=1;var dowhile=true;while(dowhile){for(i=from;i<=to;i++){order[el.id][c]=i+''+parseInt(to2-i+1);c++;}
+to2++;if(to<n&&to2<m&&n<m){to++;}
+if(to<n&&n>=m){to++;}
+if(to2>m){from++;}
+if(from>to)dowhile=false;}}
+$.straight=function(el){counter=0;for(i=1;i<=params[el.id].sph;i++){for(j=1;j<=params[el.id].spw;j++){order[el.id][counter]=i+''+j;counter++;}}}
+$.min=function(n,m){if(n>m)return m;else return n;}
+$.max=function(n,m){if(n<m)return m;else return n;}
+this.each(function(){init(this);});};$.fn.coinslider.defaults={width:565,height:290,spw:7,sph:5,delay:3000,sDelay:30,opacity:0.7,titleSpeed:500,effect:'',navigation:true,links:true,hoverPause:true};})(jQuery);
\ No newline at end of file
diff --git a/docs/js/jquery-1.11.0.min.js b/docs/js/jquery-1.11.0.min.js
new file mode 100644
index 0000000..73f33fb
--- /dev/null
+++ b/docs/js/jquery-1.11.0.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
+}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
+},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/docs/js/jquery-ui-1.10.4.custom.min.js b/docs/js/jquery-ui-1.10.4.custom.min.js
new file mode 100644
index 0000000..fe3e05c
--- /dev/null
+++ b/docs/js/jquery-ui-1.10.4.custom.min.js
@@ -0,0 +1,6 @@
+/*! jQuery UI - v1.10.4 - 2014-03-25
+* http://jqueryui.com
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.accordion.js
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e,t){function i(t,i){var s,a,o,r=t.nodeName.toLowerCase();return"area"===r?(s=t.parentNode,a=s.name,t.href&&a&&"map"===s.nodeName.toLowerCase()?(o=e("img[usemap=#"+a+"]")[0],!!o&&n(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||i:i)&&n(t)}function n(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,a=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,n){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),n&&n.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var n,s,a=e(this[0]);a.length&&a[0]!==document;){if(n=a.css("position"),("absolute"===n||"relative"===n||"fixed"===n)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){a.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,n){return!!e.data(t,n[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),s=isNaN(n);return(s||n>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,n){function s(t,i,n,s){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,n&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===n?["Left","Right"]:["Top","Bottom"],o=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(i){return i===t?r["inner"+n].call(this):this.each(function(){e(this).css(o,s(this,i)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each(function(){e(this).css(o,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,n){var s,a=e.ui[t].prototype;for(s in n)a.plugins[s]=a.plugins[s]||[],a.plugins[s].push([i,n[s]])},call:function(e,t,i){var n,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(n=0;s.length>n;n++)e.options[s[n][0]]&&s[n][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[n]>0?!0:(t[n]=1,s=t[n]>0,t[n]=0,s)}})})(jQuery);(function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})})(jQuery);(function(e){var t=0,i={},a={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",a.height=a.paddingTop=a.paddingBottom=a.borderTopWidth=a.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e(),content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),undefined):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t),undefined)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,a=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(s+1)%a];break;case i.LEFT:case i.UP:n=this.headers[(s-1+a)%a];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[a-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,a=this.options,s=a.heightStyle,n=this.element.parent(),r=this.accordionId="ui-accordion-"+(this.element.attr("id")||++t);this.active=this._findActive(a.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(t){var i=e(this),a=i.attr("id"),s=i.next(),n=s.attr("id");a||(a=r+"-header-"+t,i.attr("id",a)),n||(n=r+"-panel-"+t,s.attr("id",n)),i.attr("aria-controls",n),s.attr("aria-labelledby",a)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(a.event),"fill"===s?(i=n.height(),this.element.siblings(":visible").each(function(){var t=e(this),a=t.css("position");"absolute"!==a&&"fixed"!==a&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(i=0,this.headers.next().each(function(){i=Math.max(i,e(this).css("height","").height())}).height(i))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,a=this.active,s=e(t.currentTarget),n=s[0]===a[0],r=n&&i.collapsible,o=r?e():s.next(),h=a.next(),d={oldHeader:a,oldPanel:h,newHeader:r?e():s,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,d)===!1||(i.active=r?!1:this.headers.index(s),this.active=n?e():s,this._toggle(d),a.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),s.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,a=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=a,this.options.animate?this._animate(i,a,t):(a.hide(),i.show(),this._toggleComplete(t)),a.attr({"aria-hidden":"true"}),a.prev().attr("aria-selected","false"),i.length&&a.length?a.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,s){var n,r,o,h=this,d=0,c=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=c&&l.down||l,v=function(){h._toggleComplete(s)};return"number"==typeof u&&(o=u),"string"==typeof u&&(r=u),r=r||u.easing||l.easing,o=o||u.duration||l.duration,t.length?e.length?(n=e.show().outerHeight(),t.animate(i,{duration:o,easing:r,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(a,{duration:o,easing:r,complete:v,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?d+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(n-t.outerHeight()-d),d=0)}}),undefined):t.animate(i,o,r,v):e.animate(a,o,r,v)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})})(jQuery);
\ No newline at end of file
diff --git a/docs/js/jquery.colorbox.js b/docs/js/jquery.colorbox.js
new file mode 100644
index 0000000..255a3aa
--- /dev/null
+++ b/docs/js/jquery.colorbox.js
@@ -0,0 +1,1085 @@
+/*!
+	Colorbox v1.5.5 - 2014-03-13
+	jQuery lightbox and modal window plugin
+	(c) 2014 Jack Moore - http://www.jacklmoore.com/colorbox
+	license: http://www.opensource.org/licenses/mit-license.php
+*/
+(function ($, document, window) {
+	var
+	// Default settings object.
+	// See http://jacklmoore.com/colorbox for details.
+	defaults = {
+		// data sources
+		html: false,
+		photo: false,
+		iframe: false,
+		inline: false,
+
+		// behavior and appearance
+		transition: "elastic",
+		speed: 300,
+		fadeOut: 300,
+		width: false,
+		initialWidth: "600",
+		innerWidth: false,
+		maxWidth: false,
+		height: false,
+		initialHeight: "450",
+		innerHeight: false,
+		maxHeight: false,
+		scalePhotos: true,
+		scrolling: true,
+		opacity: 0.9,
+		preloading: true,
+		className: false,
+		overlayClose: true,
+		escKey: true,
+		arrowKey: true,
+		top: false,
+		bottom: false,
+		left: false,
+		right: false,
+		fixed: false,
+		data: undefined,
+		closeButton: true,
+		fastIframe: true,
+		open: false,
+		reposition: true,
+		loop: true,
+		slideshow: false,
+		slideshowAuto: true,
+		slideshowSpeed: 2500,
+		slideshowStart: "start slideshow",
+		slideshowStop: "stop slideshow",
+		photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,
+
+		// alternate image paths for high-res displays
+		retinaImage: false,
+		retinaUrl: false,
+		retinaSuffix: '@2x.$1',
+
+		// internationalization
+		current: "image {current} of {total}",
+		previous: "previous",
+		next: "next",
+		close: "close",
+		xhrError: "This content failed to load.",
+		imgError: "This image failed to load.",
+
+		// accessbility
+		returnFocus: true,
+		trapFocus: true,
+
+		// callbacks
+		onOpen: false,
+		onLoad: false,
+		onComplete: false,
+		onCleanup: false,
+		onClosed: false,
+
+		rel: function() {
+			return this.rel;
+		},
+		href: function() {
+			// Using .attr() so that the href can also be used to provide a selector for inline content
+			return $(this).attr('href');
+		},
+		title: function() {
+			return this.title;
+		}
+	},
+
+
+	// Abstracting the HTML and event identifiers for easy rebranding
+	colorbox = 'colorbox',
+	prefix = 'cbox',
+	boxElement = prefix + 'Element',
+	
+	// Events
+	event_open = prefix + '_open',
+	event_load = prefix + '_load',
+	event_complete = prefix + '_complete',
+	event_cleanup = prefix + '_cleanup',
+	event_closed = prefix + '_closed',
+	event_purge = prefix + '_purge',
+
+	// Cached jQuery Object Variables
+	$overlay,
+	$box,
+	$wrap,
+	$content,
+	$topBorder,
+	$leftBorder,
+	$rightBorder,
+	$bottomBorder,
+	$related,
+	$window,
+	$loaded,
+	$loadingBay,
+	$loadingOverlay,
+	$title,
+	$current,
+	$slideshow,
+	$next,
+	$prev,
+	$close,
+	$groupControls,
+	$events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2
+	
+	// Variables for cached values or use across multiple functions
+	settings,
+	interfaceHeight,
+	interfaceWidth,
+	loadedHeight,
+	loadedWidth,
+	index,
+	photo,
+	open,
+	active,
+	closing,
+	loadingTimer,
+	publicMethod,
+	div = "div",
+	requests = 0,
+	previousCSS = {},
+	init;
+
+	// ****************
+	// HELPER FUNCTIONS
+	// ****************
+	
+	// Convenience function for creating new jQuery objects
+	function $tag(tag, id, css) {
+		var element = document.createElement(tag);
+
+		if (id) {
+			element.id = prefix + id;
+		}
+
+		if (css) {
+			element.style.cssText = css;
+		}
+
+		return $(element);
+	}
+	
+	// Get the window height using innerHeight when available to avoid an issue with iOS
+	// http://bugs.jquery.com/ticket/6724
+	function winheight() {
+		return window.innerHeight ? window.innerHeight : $(window).height();
+	}
+
+	function Settings(element, options) {
+		if (options !== Object(options)) {
+			options = {};
+		}
+
+		this.cache = {};
+		this.el = element;
+
+		this.value = function(key) {
+			var dataAttr;
+
+			if (this.cache[key] === undefined) {
+				dataAttr = $(this.el).attr('data-cbox-'+key);
+
+				if (dataAttr !== undefined) {
+					this.cache[key] = dataAttr;
+				} else if (options[key] !== undefined) {
+					this.cache[key] = options[key];
+				} else if (defaults[key] !== undefined) {
+					this.cache[key] = defaults[key];
+				}
+			}
+
+			return this.cache[key];
+		};
+
+		this.get = function(key) {
+			var value = this.value(key);
+			return $.isFunction(value) ? value.call(this.el, this) : value;
+		};
+	}
+
+	// Determine the next and previous members in a group.
+	function getIndex(increment) {
+		var
+		max = $related.length,
+		newIndex = (index + increment) % max;
+		
+		return (newIndex < 0) ? max + newIndex : newIndex;
+	}
+
+	// Convert '%' and 'px' values to integers
+	function setSize(size, dimension) {
+		return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
+	}
+	
+	// Checks an href to see if it is a photo.
+	// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
+	function isImage(settings, url) {
+		return settings.get('photo') || settings.get('photoRegex').test(url);
+	}
+
+	function retinaUrl(settings, url) {
+		return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
+	}
+
+	function trapFocus(e) {
+		if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
+			e.stopPropagation();
+			$box.focus();
+		}
+	}
+
+	function setClass(str) {
+		if (setClass.str !== str) {
+			$box.add($overlay).removeClass(setClass.str).addClass(str);
+			setClass.str = str;
+		}
+	}
+
+	function getRelated() {
+		index = 0;
+		
+		if (rel && rel !== 'nofollow') {
+			$related = $('.' + boxElement).filter(function () {
+				var options = $.data(this, colorbox);
+				var settings = new Settings(this, options);
+				return (settings.get('rel') === rel);
+			});
+			index = $related.index(settings.el);
+			
+			// Check direct calls to Colorbox.
+			if (index === -1) {
+				$related = $related.add(settings.el);
+				index = $related.length - 1;
+			}
+		} else {
+			$related = $(settings.el);
+		}
+	}
+
+	function trigger(event) {
+		// for external use
+		$(document).trigger(event);
+		// for internal use
+		$events.triggerHandler(event);
+	}
+
+	var slideshow = (function(){
+		var active,
+			className = prefix + "Slideshow_",
+			click = "click." + prefix,
+			timeOut;
+
+		function clear () {
+			clearTimeout(timeOut);
+		}
+
+		function set() {
+			if (settings.get('loop') || $related[index + 1]) {
+				clear();
+				timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
+			}
+		}
+
+		function start() {
+			$slideshow
+				.html(settings.get('slideshowStop'))
+				.unbind(click)
+				.one(click, stop);
+
+			$events
+				.bind(event_complete, set)
+				.bind(event_load, clear);
+
+			$box.removeClass(className + "off").addClass(className + "on");
+		}
+
+		function stop() {
+			clear();
+			
+			$events
+				.unbind(event_complete, set)
+				.unbind(event_load, clear);
+
+			$slideshow
+				.html(settings.get('slideshowStart'))
+				.unbind(click)
+				.one(click, function () {
+					publicMethod.next();
+					start();
+				});
+
+			$box.removeClass(className + "on").addClass(className + "off");
+		}
+
+		function reset() {
+			active = false;
+			$slideshow.hide();
+			clear();
+			$events
+				.unbind(event_complete, set)
+				.unbind(event_load, clear);
+			$box.removeClass(className + "off " + className + "on");
+		}
+
+		return function(){
+			if (active) {
+				if (!settings.get('slideshow')) {
+					$events.unbind(event_cleanup, reset);
+					reset();
+				}
+			} else {
+				if (settings.get('slideshow') && $related[1]) {
+					active = true;
+					$events.one(event_cleanup, reset);
+					if (settings.get('slideshowAuto')) {
+						start();
+					} else {
+						stop();
+					}
+					$slideshow.show();
+				}
+			}
+		};
+
+	}());
+
+
+	function launch(element) {
+		var options;
+
+		if (!closing) {
+
+			options = $(element).data('colorbox');
+
+			settings = new Settings(element, options);
+
+			rel = settings.get('rel');
+			
+			getRelated();
+
+			if (!open) {
+				open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
+
+				setClass(settings.get('className'));
+				
+				// Show colorbox so the sizes can be calculated in older versions of jQuery
+				$box.css({visibility:'hidden', display:'block', opacity:''});
+				
+				$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
+				$content.css({width:'', height:''}).append($loaded);
+
+				// Cache values needed for size calculations
+				interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
+				interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
+				loadedHeight = $loaded.outerHeight(true);
+				loadedWidth = $loaded.outerWidth(true);
+
+				// Opens inital empty Colorbox prior to content being loaded.
+				settings.w = setSize(settings.get('initialWidth'), 'x');
+				settings.h = setSize(settings.get('initialHeight'), 'y');
+				$loaded.css({width:'', height:settings.h});
+				publicMethod.position();
+
+				trigger(event_open);
+				settings.get('onOpen');
+
+				$groupControls.add($title).hide();
+
+				$box.focus();
+				
+				if (settings.get('trapFocus')) {
+					// Confine focus to the modal
+					// Uses event capturing that is not supported in IE8-
+					if (document.addEventListener) {
+
+						document.addEventListener('focus', trapFocus, true);
+						
+						$events.one(event_closed, function () {
+							document.removeEventListener('focus', trapFocus, true);
+						});
+					}
+				}
+
+				// Return focus on closing
+				if (settings.get('returnFocus')) {
+					$events.one(event_closed, function () {
+						$(settings.el).focus();
+					});
+				}
+			}
+
+			$overlay.css({
+				opacity: parseFloat(settings.get('opacity')) || '',
+				cursor: settings.get('overlayClose') ? 'pointer' : '',
+				visibility: 'visible'
+			}).show();
+			
+			if (settings.get('closeButton')) {
+				$close.html(settings.get('close')).appendTo($content);
+			} else {
+				$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
+			}
+
+			load();
+		}
+	}
+
+	// Colorbox's markup needs to be added to the DOM prior to being called
+	// so that the browser will go ahead and load the CSS background images.
+	function appendHTML() {
+		if (!$box && document.body) {
+			init = false;
+			$window = $(window);
+			$box = $tag(div).attr({
+				id: colorbox,
+				'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
+				role: 'dialog',
+				tabindex: '-1'
+			}).hide();
+			$overlay = $tag(div, "Overlay").hide();
+			$loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
+			$wrap = $tag(div, "Wrapper");
+			$content = $tag(div, "Content").append(
+				$title = $tag(div, "Title"),
+				$current = $tag(div, "Current"),
+				$prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
+				$next = $('<button type="button"/>').attr({id:prefix+'Next'}),
+				$slideshow = $tag('button', "Slideshow"),
+				$loadingOverlay
+			);
+
+			$close = $('<button type="button"/>').attr({id:prefix+'Close'});
+			
+			$wrap.append( // The 3x3 Grid that makes up Colorbox
+				$tag(div).append(
+					$tag(div, "TopLeft"),
+					$topBorder = $tag(div, "TopCenter"),
+					$tag(div, "TopRight")
+				),
+				$tag(div, false, 'clear:left').append(
+					$leftBorder = $tag(div, "MiddleLeft"),
+					$content,
+					$rightBorder = $tag(div, "MiddleRight")
+				),
+				$tag(div, false, 'clear:left').append(
+					$tag(div, "BottomLeft"),
+					$bottomBorder = $tag(div, "BottomCenter"),
+					$tag(div, "BottomRight")
+				)
+			).find('div div').css({'float': 'left'});
+			
+			$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');
+			
+			$groupControls = $next.add($prev).add($current).add($slideshow);
+
+			$(document.body).append($overlay, $box.append($wrap, $loadingBay));
+		}
+	}
+
+	// Add Colorbox's event bindings
+	function addBindings() {
+		function clickHandler(e) {
+			// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
+			// See: http://jacklmoore.com/notes/click-events/
+			if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
+				e.preventDefault();
+				launch(this);
+			}
+		}
+
+		if ($box) {
+			if (!init) {
+				init = true;
+
+				// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
+				$next.click(function () {
+					publicMethod.next();
+				});
+				$prev.click(function () {
+					publicMethod.prev();
+				});
+				$close.click(function () {
+					publicMethod.close();
+				});
+				$overlay.click(function () {
+					if (settings.get('overlayClose')) {
+						publicMethod.close();
+					}
+				});
+				
+				// Key Bindings
+				$(document).bind('keydown.' + prefix, function (e) {
+					var key = e.keyCode;
+					if (open && settings.get('escKey') && key === 27) {
+						e.preventDefault();
+						publicMethod.close();
+					}
+					if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
+						if (key === 37) {
+							e.preventDefault();
+							$prev.click();
+						} else if (key === 39) {
+							e.preventDefault();
+							$next.click();
+						}
+					}
+				});
+
+				if ($.isFunction($.fn.on)) {
+					// For jQuery 1.7+
+					$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
+				} else {
+					// For jQuery 1.3.x -> 1.6.x
+					// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
+					// This is not here for jQuery 1.9, it's here for legacy users.
+					$('.'+boxElement).live('click.'+prefix, clickHandler);
+				}
+			}
+			return true;
+		}
+		return false;
+	}
+
+	// Don't do anything if Colorbox already exists.
+	if ($.colorbox) {
+		return;
+	}
+
+	// Append the HTML when the DOM loads
+	$(appendHTML);
+
+
+	// ****************
+	// PUBLIC FUNCTIONS
+	// Usage format: $.colorbox.close();
+	// Usage from within an iframe: parent.jQuery.colorbox.close();
+	// ****************
+	
+	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
+		var settings;
+		var $obj = this;
+
+		options = options || {};
+
+		if ($.isFunction($obj)) { // assume a call to $.colorbox
+			$obj = $('<a/>');
+			options.open = true;
+		} else if (!$obj[0]) { // colorbox being applied to empty collection
+			return $obj;
+		}
+
+
+		if (!$obj[0]) { // colorbox being applied to empty collection
+			return $obj;
+		}
+		
+		appendHTML();
+
+		if (addBindings()) {
+
+			if (callback) {
+				options.onComplete = callback;
+			}
+
+			$obj.each(function () {
+				var old = $.data(this, colorbox) || {};
+				$.data(this, colorbox, $.extend(old, options));
+			}).addClass(boxElement);
+
+			settings = new Settings($obj[0], options);
+			
+			if (settings.get('open')) {
+				launch($obj[0]);
+			}
+		}
+		
+		return $obj;
+	};
+
+	publicMethod.position = function (speed, loadedCallback) {
+		var
+		css,
+		top = 0,
+		left = 0,
+		offset = $box.offset(),
+		scrollTop,
+		scrollLeft;
+		
+		$window.unbind('resize.' + prefix);
+
+		// remove the modal so that it doesn't influence the document width/height
+		$box.css({top: -9e4, left: -9e4});
+
+		scrollTop = $window.scrollTop();
+		scrollLeft = $window.scrollLeft();
+
+		if (settings.get('fixed')) {
+			offset.top -= scrollTop;
+			offset.left -= scrollLeft;
+			$box.css({position: 'fixed'});
+		} else {
+			top = scrollTop;
+			left = scrollLeft;
+			$box.css({position: 'absolute'});
+		}
+
+		// keeps the top and left positions within the browser's viewport.
+		if (settings.get('right') !== false) {
+			left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
+		} else if (settings.get('left') !== false) {
+			left += setSize(settings.get('left'), 'x');
+		} else {
+			left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
+		}
+		
+		if (settings.get('bottom') !== false) {
+			top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
+		} else if (settings.get('top') !== false) {
+			top += setSize(settings.get('top'), 'y');
+		} else {
+			top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
+		}
+
+		$box.css({top: offset.top, left: offset.left, visibility:'visible'});
+		
+		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
+		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
+		// it can invoke an obscure IE bug when using iframes.
+		$wrap[0].style.width = $wrap[0].style.height = "9999px";
+		
+		function modalDimensions() {
+			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
+			$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
+		}
+
+		css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};
+
+		// setting the speed to 0 if the content hasn't changed size or position
+		if (speed) {
+			var tempSpeed = 0;
+			$.each(css, function(i){
+				if (css[i] !== previousCSS[i]) {
+					tempSpeed = speed;
+					return;
+				}
+			});
+			speed = tempSpeed;
+		}
+
+		previousCSS = css;
+
+		if (!speed) {
+			$box.css(css);
+		}
+
+		$box.dequeue().animate(css, {
+			duration: speed || 0,
+			complete: function () {
+				modalDimensions();
+				
+				active = false;
+				
+				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
+				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
+				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
+				
+				if (settings.get('reposition')) {
+					setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
+						$window.bind('resize.' + prefix, publicMethod.position);
+					}, 1);
+				}
+
+				if (loadedCallback) {
+					loadedCallback();
+				}
+			},
+			step: modalDimensions
+		});
+	};
+
+	publicMethod.resize = function (options) {
+		var scrolltop;
+		
+		if (open) {
+			options = options || {};
+			
+			if (options.width) {
+				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
+			}
+
+			if (options.innerWidth) {
+				settings.w = setSize(options.innerWidth, 'x');
+			}
+
+			$loaded.css({width: settings.w});
+			
+			if (options.height) {
+				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
+			}
+
+			if (options.innerHeight) {
+				settings.h = setSize(options.innerHeight, 'y');
+			}
+
+			if (!options.innerHeight && !options.height) {
+				scrolltop = $loaded.scrollTop();
+				$loaded.css({height: "auto"});
+				settings.h = $loaded.height();
+			}
+
+			$loaded.css({height: settings.h});
+
+			if(scrolltop) {
+				$loaded.scrollTop(scrolltop);
+			}
+			
+			publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
+		}
+	};
+
+	publicMethod.prep = function (object) {
+		if (!open) {
+			return;
+		}
+		
+		var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');
+
+		$loaded.remove();
+
+		$loaded = $tag(div, 'LoadedContent').append(object);
+		
+		function getWidth() {
+			settings.w = settings.w || $loaded.width();
+			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
+			return settings.w;
+		}
+		function getHeight() {
+			settings.h = settings.h || $loaded.height();
+			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
+			return settings.h;
+		}
+		
+		$loaded.hide()
+		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
+		.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
+		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
+		.prependTo($content);
+		
+		$loadingBay.hide();
+		
+		// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
+		
+		$(photo).css({'float': 'none'});
+
+		setClass(settings.get('className'));
+
+		callback = function () {
+			var total = $related.length,
+				iframe,
+				complete;
+			
+			if (!open) {
+				return;
+			}
+			
+			function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
+				if ($.support.opacity === false) {
+					$box[0].style.removeAttribute('filter');
+				}
+			}
+			
+			complete = function () {
+				clearTimeout(loadingTimer);
+				$loadingOverlay.hide();
+				trigger(event_complete);
+				settings.get('onComplete');
+			};
+
+			
+			$title.html(settings.get('title')).show();
+			$loaded.show();
+			
+			if (total > 1) { // handle grouping
+				if (typeof settings.get('current') === "string") {
+					$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
+				}
+				
+				$next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
+				$prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));
+				
+				slideshow();
+				
+				// Preloads images within a rel group
+				if (settings.get('preloading')) {
+					$.each([getIndex(-1), getIndex(1)], function(){
+						var img,
+							i = $related[this],
+							settings = new Settings(i, $.data(i, colorbox)),
+							src = settings.get('href');
+
+						if (src && isImage(settings, src)) {
+							src = retinaUrl(settings, src);
+							img = document.createElement('img');
+							img.src = src;
+						}
+					});
+				}
+			} else {
+				$groupControls.hide();
+			}
+			
+			if (settings.get('iframe')) {
+				iframe = document.createElement('iframe');
+				
+				if ('frameBorder' in iframe) {
+					iframe.frameBorder = 0;
+				}
+				
+				if ('allowTransparency' in iframe) {
+					iframe.allowTransparency = "true";
+				}
+
+				if (!settings.get('scrolling')) {
+					iframe.scrolling = "no";
+				}
+				
+				$(iframe)
+					.attr({
+						src: settings.get('href'),
+						name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
+						'class': prefix + 'Iframe',
+						allowFullScreen : true // allow HTML5 video to go fullscreen
+					})
+					.one('load', complete)
+					.appendTo($loaded);
+				
+				$events.one(event_purge, function () {
+					iframe.src = "//about:blank";
+				});
+
+				if (settings.get('fastIframe')) {
+					$(iframe).trigger('load');
+				}
+			} else {
+				complete();
+			}
+			
+			if (settings.get('transition') === 'fade') {
+				$box.fadeTo(speed, 1, removeFilter);
+			} else {
+				removeFilter();
+			}
+		};
+		
+		if (settings.get('transition') === 'fade') {
+			$box.fadeTo(speed, 0, function () {
+				publicMethod.position(0, callback);
+			});
+		} else {
+			publicMethod.position(speed, callback);
+		}
+	};
+
+	function load () {
+		var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;
+		
+		active = true;
+		
+		photo = false;
+		
+		trigger(event_purge);
+		trigger(event_load);
+		settings.get('onLoad');
+		
+		settings.h = settings.get('height') ?
+				setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
+				settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');
+		
+		settings.w = settings.get('width') ?
+				setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
+				settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');
+		
+		// Sets the minimum dimensions for use in image scaling
+		settings.mw = settings.w;
+		settings.mh = settings.h;
+		
+		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
+		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
+		if (settings.get('maxWidth')) {
+			settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
+			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
+		}
+		if (settings.get('maxHeight')) {
+			settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
+			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
+		}
+		
+		href = settings.get('href');
+		
+		loadingTimer = setTimeout(function () {
+			$loadingOverlay.show();
+		}, 100);
+		
+		if (settings.get('inline')) {
+			// Inserts an empty placeholder where inline content is being pulled from.
+			// An event is bound to put inline content back when Colorbox closes or loads new content.
+			$inline = $tag(div).hide().insertBefore($(href)[0]);
+
+			$events.one(event_purge, function () {
+				$inline.replaceWith($loaded.children());
+			});
+
+			prep($(href));
+		} else if (settings.get('iframe')) {
+			// IFrame element won't be added to the DOM until it is ready to be displayed,
+			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
+			prep(" ");
+		} else if (settings.get('html')) {
+			prep(settings.get('html'));
+		} else if (isImage(settings, href)) {
+
+			href = retinaUrl(settings, href);
+
+			photo = document.createElement('img');
+
+			$(photo)
+			.addClass(prefix + 'Photo')
+			.bind('error',function () {
+				prep($tag(div, 'Error').html(settings.get('imgError')));
+			})
+			.one('load', function () {
+				var percent;
+
+				if (request !== requests) {
+					return;
+				}
+
+				$.each(['alt', 'longdesc', 'aria-describedby'], function(i,val){
+					var attr = $(settings.el).attr(val) || $(settings.el).attr('data-'+val);
+					if (attr) {
+						photo.setAttribute(val, attr);
+					}
+				});
+
+				if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
+					photo.height = photo.height / window.devicePixelRatio;
+					photo.width = photo.width / window.devicePixelRatio;
+				}
+
+				if (settings.get('scalePhotos')) {
+					setResize = function () {
+						photo.height -= photo.height * percent;
+						photo.width -= photo.width * percent;
+					};
+					if (settings.mw && photo.width > settings.mw) {
+						percent = (photo.width - settings.mw) / photo.width;
+						setResize();
+					}
+					if (settings.mh && photo.height > settings.mh) {
+						percent = (photo.height - settings.mh) / photo.height;
+						setResize();
+					}
+				}
+				
+				if (settings.h) {
+					photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
+				}
+				
+				if ($related[1] && (settings.get('loop') || $related[index + 1])) {
+					photo.style.cursor = 'pointer';
+					photo.onclick = function () {
+						publicMethod.next();
+					};
+				}
+
+				photo.style.width = photo.width + 'px';
+				photo.style.height = photo.height + 'px';
+
+				setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
+					prep(photo);
+				}, 1);
+			});
+			
+			setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
+				photo.src = href;
+			}, 1);
+		} else if (href) {
+			$loadingBay.load(href, settings.get('data'), function (data, status) {
+				if (request === requests) {
+					prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
+				}
+			});
+		}
+	}
+		
+	// Navigates to the next page/image in a set.
+	publicMethod.next = function () {
+		if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
+			index = getIndex(1);
+			launch($related[index]);
+		}
+	};
+	
+	publicMethod.prev = function () {
+		if (!active && $related[1] && (settings.get('loop') || index)) {
+			index = getIndex(-1);
+			launch($related[index]);
+		}
+	};
+
+	// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
+	publicMethod.close = function () {
+		if (open && !closing) {
+			
+			closing = true;
+			open = false;
+			trigger(event_cleanup);
+			settings.get('onCleanup');
+			$window.unbind('.' + prefix);
+			$overlay.fadeTo(settings.get('fadeOut') || 0, 0);
+			
+			$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
+				$box.hide();
+				$overlay.hide();
+				trigger(event_purge);
+				$loaded.remove();
+				
+				setTimeout(function () {
+					closing = false;
+					trigger(event_closed);
+					settings.get('onClosed');
+				}, 1);
+			});
+		}
+	};
+
+	// Removes changes Colorbox made to the document, but does not remove the plugin.
+	publicMethod.remove = function () {
+		if (!$box) { return; }
+
+		$box.stop();
+		$.colorbox.close();
+		$box.stop().remove();
+		$overlay.remove();
+		closing = false;
+		$box = null;
+		$('.' + boxElement)
+			.removeData(colorbox)
+			.removeClass(boxElement);
+
+		$(document).unbind('click.'+prefix);
+	};
+
+	// A method for fetching the current element Colorbox is referencing.
+	// returns a jQuery object.
+	publicMethod.element = function () {
+		return $(settings.el);
+	};
+
+	publicMethod.settings = defaults;
+
+}(jQuery, document, window));
diff --git a/docs/license.html b/docs/license.html
new file mode 100644
index 0000000..18a36fb
--- /dev/null
+++ b/docs/license.html
@@ -0,0 +1,564 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+ Podling Documentation Team">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - License</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Apache License v2.0"><strong>Apache License v2.0</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <div align="left">
+    <table style="border: solid 1px #023264; padding: 5px;">
+    <tr>
+      <td bgcolor="#ffffff"><pre>
+
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   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 &quot;AS IS&quot; 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.
+
+
+ </pre></td>
+    </tr>
+    </table>
+    </div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/mail-lists.html b/docs/mail-lists.html
new file mode 100644
index 0000000..ae983c8
--- /dev/null
+++ b/docs/mail-lists.html
@@ -0,0 +1,537 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Mailing Lists</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Apache OpenMeetings Mailing Lists"><strong>Apache OpenMeetings Mailing Lists</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				There are currently 4 publicly available mailing lists for OpenMeetings.
+			</p>
+                                                <p>
+				The commits list is for notification of commits to the OpenMeetings
+				repository.
+			</p>
+                                                <p>
+				The dev list is for internal discussion among the OpenMeetings
+				developers. It is
+				open to the public if you are interested in seeing how the sausage is
+				made.
+			</p>
+                                                <p>
+				<b>Note: </b>If your email bounces with status messages like "Delivery Status Notification" it is 
+				likely that you have send your mail as HTML mail. Apache does not like sending HTML emails, see:
+				<br /> 
+				<a href="http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail" target="_BLANK" rel="nofollow">http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail</a>
+			</p>
+                                                <p>
+				You can search the entire mailing list very easy by using markmail.com, by using the term 
+				"openmeetings" plus your search. Try yourself: <br />
+				<a href="http://markmail.org/search/?q=openmeetings" target="_BLANK" rel="nofollow">http://markmail.org/search/?q=openmeetings</a>
+			</p>
+                                                <table>
+                        <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<strong>User List</strong>
+							:
+							<a href="mailto:user@openmeetings.apache.org">
+								user@openmeetings.apache.org
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:user-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:user-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-user/">
+								Archive
+							</a>
+						</p>
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<strong>Spanish User List</strong>
+							:
+							<a href="mailto:user-espanol@openmeetings.apache.org">
+								user-espanol@openmeetings.apache.org
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:user-espanol-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:user-espanol-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-user-espanol/">
+								Archive
+							</a>
+						</p>
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<strong>Commits List</strong>
+							:
+							<a href="mailto:commits@openmeetings.apache.org">
+								commits@openmeetings.apache.org
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:commits-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:commits-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-commits/">
+								Archive
+							</a>
+						</p>
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<strong>Developer List</strong>
+							:
+							<a href="mailto:dev@openmeetings.apache.org">
+								dev@openmeetings.apache.org
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:dev-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a class="external" rel="nofollow" href="mailto:dev-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<p>
+							<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev">
+								Archive
+							</a>
+						</p>
+					
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/oauth2.html b/docs/oauth2.html
new file mode 100644
index 0000000..d2c7b2e
--- /dev/null
+++ b/docs/oauth2.html
@@ -0,0 +1,385 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="OpenMeetings Team">
+            <meta name="email" content="a_horuzhenko@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - OAuth2 integration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OAuth2 integration"><strong>OAuth2 integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You need Apache Openmeetings <strong>version 3.0</strong> to apply this guide!</p>
+                                                <p>You can manage various OAuth2 servers by opening "Administration =&gt; OAuth2". There are already created servers like Facebook or Google. You can use them as example or in production. To add your own servers you need to get their documentation to set necessary attributes.</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Attributes"><strong>Attributes</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <ul>
+				<li><i>Name</i> - displayed in the login dialog text</li>
+				<li><i>client_id</i> and <i>client_secret</i> - credentials which you got from your oauth2 server.</li>
+				<li><i>Redirect uri</i> - put this value into application settings in the oauth2 server.</li>
+				<li><i>Request key URL</i> - an URL which will be used to request access key.</li>
+				<li><i>Request token URL</i> - an URL which will be used to request access token.</li>
+				<li><i>Request token attributes</i> - attributes for access token request.</li>
+				<li><i>Request info URL</i> - an URL which will be used to request authentication attributes.</li>
+				<li><i>Login param name</i> - login key name to get value from info response.</li>
+				<li><i>Email param name</i> - email key name to get value from info response.</li>
+				<li><i>Firstname param name</i> - firstname key name to get value from info response.</li>
+				<li><i>Lastname param name</i> - lastname key name to get value from info response.</li>
+			</ul>
+                                                <p>Request attributes (request key url, request token url, request token attributes, request info url) may contain next variables as a part:</p>
+                                                <ul>
+				<li>{$client_id}</li>
+				<li>{$client_secret}</li>
+				<li>{$redirect_uri}</li>
+				<li>{$code}</li>
+				<li>{$access_token}</li>
+			</ul>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/openmeetings_docs.css b/docs/openmeetings_docs.css
new file mode 100644
index 0000000..8a09524
--- /dev/null
+++ b/docs/openmeetings_docs.css
@@ -0,0 +1,45 @@
+/*
+* 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.
+*/
+body {
+    font: 10pt Verdana, Arial, Helvetica, sans-serif;
+}
+table {
+	margin-left: 20px;
+	border-color: #000000;
+}
+th {
+    background-color: #dddddd;
+}
+.method {
+	margin-top: 20px;
+	width: 100%;
+}
+.method_header {
+	background-color: #cccccc;
+	width: 100%;
+	border-style: solid;
+	border-color: #666666;
+	border-width: 2px;
+	font-size: 11pt;
+	color: #0000FF;
+}
+.navigation {
+	margin-left: 40px;
+}
+.navigation_comment {
+	margin-left: 20px;
+}
\ No newline at end of file
diff --git a/docs/red5sip-integration_2.0.html b/docs/red5sip-integration_2.0.html
new file mode 100644
index 0000000..929a7de
--- /dev/null
+++ b/docs/red5sip-integration_2.0.html
@@ -0,0 +1,534 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="timur@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - SIP-Transport Integration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="SIP-Transport Integration"><strong>SIP-Transport Integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				You need minimum version 2.0 of Apache OpenMeetings to apply this guide!
+			</p>
+                                                <p>
+				Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 10.04.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Setup Asterisk"><strong>Setup Asterisk</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+                Run the commands
+                <blockquote>
+                    <i>
+                    sudo apt-get update<br />
+                    sudo apt-get install asterisk asterisk-mysql
+                    </i>
+                </blockquote>
+            </div>
+                                                <div>
+                Ubuntu 10.04 has broken asterisk-mysql version. For other distribution next commands not needed:
+                <blockquote>
+                    <i>
+                        aptitude purge asterisk-mysql
+                        <br />
+                        cd /tmp
+                        <br />
+                        apt-get build-dep asterisk-mysql
+                        <br />
+                        apt-get -b source asterisk-mysql
+                        <br />
+                        dpkg -i asterisk-mysql_1.6.2.0-1_i386.deb
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Enable asterisk mysql realtime module:<br /><br />
+                Add string
+                <blockquote>
+                    <i>load =&gt; res_config_mysql.so</i>
+                </blockquote>
+                to the /etc/asterisk/modules.conf into the "modules" section.
+            </div>
+                                                <div>
+                Configure mysql realtime module:<br /><br />
+
+                Create file /etc/asterisk/res_mysql.conf and add lines:
+                <blockquote>
+                    <i>[general]
+                        <br />
+                        dbhost=127.0.0.1
+                        <br />
+                        dbname=openmeetings
+                        <br />
+                        dbuser=root
+                        <br />
+                        dbpass=
+                        <br />
+                        dbport=3306
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Add next lines into the /etc/asterisk/extconfig.conf:
+                <blockquote>
+                    <i>[settings]
+                        <br />
+                        sipusers =&gt; mysql,general,sipusers
+                        <br />
+                        sippeers =&gt; mysql,general,sipusers
+                        <br />
+                        extensions =&gt; mysql,general,extensions
+                        <br />
+                        meetme =&gt; mysql,general,meetme
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Add next lines into the /etc/asterisk/extensions.conf:
+                <blockquote>
+                    <i>[rooms]
+                        <br />
+                        switch =&gt; Realtime/@
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Restart asterisk:
+                <blockquote>
+                    <i>service asterisk restart</i>
+                </blockquote>
+                Insert, for example, SIP user with name 'test':
+                <blockquote>
+                    <i>
+                        INSERT INTO sipusers (allow, context, disallow, host, name, secret) VALUES ('ulaw' , 'rooms', NULL, 'dynamic' , 'test', '12345');
+                    </i>
+                </blockquote>
+            </div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Setup red5sip transport"><strong>Setup red5sip transport</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+                Download red5sip from<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip</blockquote>
+            </div>
+                                                <p>
+                Build with Apache Ant
+            </p>
+                                                <div>
+                Install jsvc:
+                <blockquote>
+                    <i>apt-get install jsvc</i>
+                </blockquote>
+            </div>
+                                                <div>
+                Insert proper values to the /opt/red5sip/settings.properties
+
+                <blockquote>
+                    <i>red5.host - red5 server address (127.0.0.1)
+                        <br />
+                        sip.obproxy - asterisk adderss (127.0.0.1)
+                        <br />
+                        sip.phone - sip phone number (test)
+                        <br />
+                        sip.authid - sip auth id (test)
+                        <br />
+                        sip.secret - sip password (12345)
+                        <br />
+                        sip.realm - sip realm, "asterisk" by default
+                        <br />
+                        sip.proxy -
+                        <br />
+                        rooms - ids of openmeetings rooms, can be, for example, 2,3,5,6
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Add red5sip to autostart:
+                <blockquote>
+                    <i>ln -s /opt/red5sip/red5sip.sh /etc/init.d/red5sip
+                        <br />
+                        chmod a+x /etc/init.d/red5sip
+                        <br />
+                        update-rc.d /etc/init.d/red5sip defaults
+                    </i>
+
+                </blockquote>
+            </div>
+                                                <div>
+                Start openmeetings
+                <blockquote>
+                    <i>service red5 start</i>
+                </blockquote>
+            </div>
+                                                <div>
+                Start red5sip
+                <blockquote>
+                    <i>service red5sip start</i>
+                </blockquote>
+            </div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/red5sip-integration_2.1.html b/docs/red5sip-integration_2.1.html
new file mode 100644
index 0000000..6550d3f
--- /dev/null
+++ b/docs/red5sip-integration_2.1.html
@@ -0,0 +1,702 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="OpenMeetings Team">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - SIP-Transport Integration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="SIP-Transport Integration"><strong>SIP-Transport Integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You need Apache OpenMeetings <strong>version 2.1</strong> to apply this guide!</p>
+                                                <p>You need Asterisk <strong>version 11</strong> to apply this guide!</p>
+                                                <p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Prerequisites"><strong>Prerequisites</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update &amp;&amp; sudo apt-get upgrade<br />
+						sudo apt-get install build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev libsqlite3-dev sqlite3 openssl libssl-dev<br />
+					</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="ODBC Setup"><strong>ODBC Setup</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update<br />
+						sudo apt-get install unixODBC unixODBC-dev libmyodbc
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Set up Asterisk connector:<br /><br />
+				Modify file <tt>/etc/odbc.ini</tt> as follows: (replace USER, PASSWORD and Socket with values relative to your system)
+				<blockquote>
+					<i>
+						[asterisk-connector]<br />
+						Description = MySQL connection to 'openmeetings' database<br />
+						Driver = MySQL<br />
+						Database = openmeetings<br />
+						Server = localhost<br />
+						USER = root<br />
+						PASSWORD =<br />
+						Port = 3306<br />
+						Socket = /var/run/mysqld/mysqld.sock<br />
+					</i>
+				</blockquote><br /><br />
+				Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system)
+				<blockquote>
+					(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br />
+					<i>
+						[MySQL]<br />
+						Description = ODBC for MySQL<br />
+						Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br />
+						Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br />
+						FileUsage = 1<br />
+					</i>
+				</blockquote><br /><br />
+				Run the following command to ensure everything works as expected:
+				<blockquote>
+					<i>echo "select 1" | isql -v asterisk-connector</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Building and setting up Asterisk"><strong>Building and setting up Asterisk</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo mkdir /usr/src/asterisk &amp;&amp; cd /usr/src/asterisk<br />
+						sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.2.1.tar.gz<br />
+						sudo tar -xvzf asterisk-11.2.1.tar.gz<br />
+						cd ./asterisk-11.2.1<br />
+						sudo make clean<br />
+						sudo ./configure<br />
+						sudo make<br />
+						sudo make install<br />
+						sudo make samples<br />
+						sudo make config<br />
+						sudo service asterisk start<br />
+					</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configure Asterisk"><strong>Configure Asterisk</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Enable asterisk ODBC module:<br /><br />
+				Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br />
+				<strong>Add/uncomment the following lines</strong>
+				<blockquote>
+					<i>
+						preload =&gt; res_odbc.so<br />
+						preload =&gt; res_config_odbc.so<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>:
+				<blockquote>
+					<i>
+						[asterisk]<br />
+						enabled =&gt; yes<br />
+						dsn =&gt; asterisk-connector<br />
+						pre-connect =&gt; yes
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/sip.conf</tt><br />
+				<strong>Add/uncomment the following line</strong>:<br />
+				<blockquote>
+					<i>
+						videosupport=yes<br />
+						rtcachefriends=yes<br />
+					</i>
+				</blockquote>
+				<strong>Increase maxexpiry value to 43200</strong>:<br />
+				<blockquote>
+					<i>
+						maxexpiry=43200<br />
+				        </i>
+				</blockquote>
+				<strong>Add user for the "SIP Transport"</strong>:<br />
+				<blockquote>
+					<i>
+						[red5sip_user]<br />
+						type=friend<br />
+						secret=12345<br />
+						disallow=all<br />
+						allow=ulaw<br />
+						allow=h264<br />
+						host=dynamic<br />
+						nat=force_rport,comedia<br />
+						context=rooms-red5sip<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>:
+				<blockquote>
+					<i>
+						[settings]<br />
+						sippeers =&gt; odbc,asterisk,sipusers<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/extensions.conf</tt><br />
+				<strong>Add the following section</strong>:<br />
+				<blockquote>
+					<i>
+						[rooms]<br />
+						exten =&gt; _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+						exten =&gt; _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+						exten =&gt; _400X!,n,Set(CONFBRIDGE(user,template)=sip_user)<br />
+						exten =&gt; _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						exten =&gt; _400X!,n(notavail),Answer()<br />
+						exten =&gt; _400X!,n,Playback(invalid)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						<br />
+						[rooms-originate]<br />
+						exten =&gt; _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						<br />
+						[rooms-out]<br />
+						; *****************************************************<br />
+						; Extensions for outgoing calls from Openmeetings room.<br />
+						; *****************************************************<br />
+						<br />
+						[rooms-red5sip]<br />
+						exten =&gt; _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
+						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
+						exten =&gt; _400X!,n(notavail),Hangup <br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/confbridge.conf</tt><br />
+				<strong>Add/Modify the following secions</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						<br />
+						[red5sip_user]<br />
+						type=user<br />
+						marked=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[sip_user]<br />
+						type=user<br />
+						end_marked=yes<br />
+						wait_marked=yes<br />
+						music_on_hold_when_empty=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[default_bridge]<br />
+						type=bridge<br />
+						video_mode=follow_talker<br /> 
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br />
+				<strong>Add/Modify the following sections</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						enabled = yes<br />
+						webenabled = no<br />
+						port = 5038<br />
+						bindaddr = 127.0.0.1<br />
+						<br />
+						[openmeetings]<br />
+						secret = 12345<br />
+						deny=0.0.0.0/0.0.0.0<br />
+						permit=127.0.0.1/255.255.255.0<br />
+						read = all<br />
+						write = all<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Update Openmeetings with creadentials for Asterisk manager. 
+				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt><br />
+				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.data.conference.dao.SipDao"&gt;</strong>
+				uncomment its parameters and set it to your custom values.
+				<p style="font-size: larger; color: blue;">
+					IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore
+					otherwise all SIP related room information will be lost
+				</p>   
+			</div>
+                                                <br />
+                                                <div>
+				Restart asterisk:
+				<blockquote>
+					<i>service asterisk restart</i>
+				</blockquote>
+			</div>
+                                                <br />
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Setup red5sip transport"><strong>Setup red5sip transport</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Download red5sip from
+				<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip_2.1</blockquote>
+			</div>
+                                                <div>
+				Build with Apache Ant
+				<blockquote>
+					<i>ant</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
+
+				<blockquote>
+					<i>
+						red5.host=127.0.0.1 # red5 server address<br />
+						om.context=openmeetings # Openmeetings context<br /> 
+						red5.codec=asao<br />
+						red5.codec.rate=22 # should correlate with mic settings in public/config.xml<br />
+						sip.obproxy=127.0.0.1 # asterisk adderss<br />
+						sip.phone=red5sip_user # sip phone number<br />
+						sip.authid=red5sip_user # sip auth id<br />
+						sip.secret=12345 # sip password<br />
+						sip.realm=asterisk # sip realm<br />
+						sip.proxy=127.0.0.1 # address of sip proxy <br />
+						rooms.forceStart=no # TBD <br />
+						rooms=1 # TBD (not in use) <br />
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Add red5sip to autostart:
+				<blockquote>
+					<i>
+						sudo cp /opt/red5sip/red5sip /etc/init.d/<br />
+						sudo chmod a+x /etc/init.d/red5sip<br />
+						sudo update-rc.d red5sip defaults
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Start openmeetings
+				<blockquote>
+					<i>service red5 start</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Start red5sip
+				<blockquote>
+					<i>service red5sip start</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/red5sip-integration_3.0.html b/docs/red5sip-integration_3.0.html
new file mode 100644
index 0000000..1a64177
--- /dev/null
+++ b/docs/red5sip-integration_3.0.html
@@ -0,0 +1,702 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="OpenMeetings Team">
+            <meta name="email" content="solomax@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - SIP-Transport Integration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="SIP-Transport Integration"><strong>SIP-Transport Integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You need Apache OpenMeetings <strong>version 3.0</strong> to apply this guide!</p>
+                                                <p>You need Asterisk <strong>version 11</strong> to apply this guide!</p>
+                                                <p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Prerequisites"><strong>Prerequisites</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update &amp;&amp; sudo apt-get upgrade<br />
+						sudo apt-get install build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev libsqlite3-dev sqlite3 openssl libssl-dev<br />
+					</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="ODBC Setup"><strong>ODBC Setup</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update<br />
+						sudo apt-get install unixODBC unixODBC-dev libmyodbc
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Set up Asterisk connector:<br /><br />
+				Modify file <tt>/etc/odbc.ini</tt> as follows: (replace USER, PASSWORD and Socket with values relative to your system)
+				<blockquote>
+					<i>
+						[asterisk-connector]<br />
+						Description = MySQL connection to 'openmeetings' database<br />
+						Driver = MySQL<br />
+						Database = openmeetings<br />
+						Server = localhost<br />
+						USER = root<br />
+						PASSWORD =<br />
+						Port = 3306<br />
+						Socket = /var/run/mysqld/mysqld.sock<br />
+					</i>
+				</blockquote><br /><br />
+				Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system)
+				<blockquote>
+					(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br />
+					<i>
+						[MySQL]<br />
+						Description = ODBC for MySQL<br />
+						Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br />
+						Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br />
+						FileUsage = 1<br />
+					</i>
+				</blockquote><br /><br />
+				Run the following command to ensure everything works as expected:
+				<blockquote>
+					<i>echo "select 1" | isql -v asterisk-connector</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Building and setting up Asterisk"><strong>Building and setting up Asterisk</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo mkdir /usr/src/asterisk &amp;&amp; cd /usr/src/asterisk<br />
+						sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.2.1.tar.gz<br />
+						sudo tar -xvzf asterisk-11.2.1.tar.gz<br />
+						cd ./asterisk-11.2.1<br />
+						sudo make clean<br />
+						sudo ./configure<br />
+						sudo make<br />
+						sudo make install<br />
+						sudo make samples<br />
+						sudo make config<br />
+						sudo service asterisk start<br />
+					</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Configure Asterisk"><strong>Configure Asterisk</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Enable asterisk ODBC module:<br /><br />
+				Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br />
+				<strong>Add/uncomment the following lines</strong>
+				<blockquote>
+					<i>
+						preload =&gt; res_odbc.so<br />
+						preload =&gt; res_config_odbc.so<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>:
+				<blockquote>
+					<i>
+						[asterisk]<br />
+						enabled =&gt; yes<br />
+						dsn =&gt; asterisk-connector<br />
+						pre-connect =&gt; yes
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/sip.conf</tt><br />
+				<strong>Add/uncomment the following line</strong>:<br />
+				<blockquote>
+					<i>
+						videosupport=yes<br />
+						rtcachefriends=yes<br />
+					</i>
+				</blockquote>
+				<strong>Increase maxexpiry value to 43200</strong>:<br />
+				<blockquote>
+					<i>
+						maxexpiry=43200<br />
+				        </i>
+				</blockquote>
+				<strong>Add user for the "SIP Transport"</strong>:<br />
+				<blockquote>
+					<i>
+						[red5sip_user]<br />
+						type=friend<br />
+						secret=12345<br />
+						disallow=all<br />
+						allow=ulaw<br />
+						allow=h264<br />
+						host=dynamic<br />
+						nat=force_rport,comedia<br />
+						context=rooms-red5sip<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>:
+				<blockquote>
+					<i>
+						[settings]<br />
+						sippeers =&gt; odbc,asterisk,sipusers<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/extensions.conf</tt><br />
+				<strong>Add the following section</strong>:<br />
+				<blockquote>
+					<i>
+						[rooms]<br />
+						exten =&gt; _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+						exten =&gt; _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+						exten =&gt; _400X!,n,Set(CONFBRIDGE(user,template)=sip_user)<br />
+						exten =&gt; _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						exten =&gt; _400X!,n(notavail),Answer()<br />
+						exten =&gt; _400X!,n,Playback(invalid)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						<br />
+						[rooms-originate]<br />
+						exten =&gt; _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
+						exten =&gt; _400X!,n,Hangup<br />
+						<br />
+						[rooms-out]<br />
+						; *****************************************************<br />
+						; Extensions for outgoing calls from Openmeetings room.<br />
+						; *****************************************************<br />
+						<br />
+						[rooms-red5sip]<br />
+						exten =&gt; _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
+						exten =&gt; _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
+						exten =&gt; _400X!,n(notavail),Hangup <br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Modify <tt>/etc/asterisk/confbridge.conf</tt><br />
+				<strong>Add/Modify the following secions</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						<br />
+						[red5sip_user]<br />
+						type=user<br />
+						marked=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[sip_user]<br />
+						type=user<br />
+						end_marked=yes<br />
+						wait_marked=yes<br />
+						music_on_hold_when_empty=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[default_bridge]<br />
+						type=bridge<br />
+						video_mode=follow_talker<br /> 
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br />
+				<strong>Add/Modify the following sections</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						enabled = yes<br />
+						webenabled = no<br />
+						port = 5038<br />
+						bindaddr = 127.0.0.1<br />
+						<br />
+						[openmeetings]<br />
+						secret = 12345<br />
+						deny=0.0.0.0/0.0.0.0<br />
+						permit=127.0.0.1/255.255.255.0<br />
+						read = all<br />
+						write = all<br />
+					</i>
+				</blockquote>
+			</div>
+                                                <br />
+                                                <div>
+				Update Openmeetings with creadentials for Asterisk manager. 
+				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml</tt><br />
+				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"&gt;</strong>
+				uncomment its parameters and set it to your custom values.
+				<p style="font-size: larger; color: blue;">
+					IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore
+					otherwise all SIP related room information will be lost
+				</p>   
+			</div>
+                                                <br />
+                                                <div>
+				Restart asterisk:
+				<blockquote>
+					<i>service asterisk restart</i>
+				</blockquote>
+			</div>
+                                                <br />
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Setup red5sip transport"><strong>Setup red5sip transport</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <div>
+				Download red5sip from
+				<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip_2.1</blockquote>
+			</div>
+                                                <div>
+				Build with Apache Ant
+				<blockquote>
+					<i>ant</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
+
+				<blockquote>
+					<i>
+						red5.host=127.0.0.1 # red5 server address<br />
+						om.context=openmeetings # Openmeetings context<br /> 
+						red5.codec=asao<br />
+						red5.codec.rate=22 # should correlate with mic settings in public/config.xml<br />
+						sip.obproxy=127.0.0.1 # asterisk adderss<br />
+						sip.phone=red5sip_user # sip phone number<br />
+						sip.authid=red5sip_user # sip auth id<br />
+						sip.secret=12345 # sip password<br />
+						sip.realm=asterisk # sip realm<br />
+						sip.proxy=127.0.0.1 # address of sip proxy <br />
+						rooms.forceStart=no # TBD <br />
+						rooms=1 # TBD (not in use) <br />
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Add red5sip to autostart:
+				<blockquote>
+					<i>
+						sudo cp /opt/red5sip/red5sip /etc/init.d/<br />
+						sudo chmod a+x /etc/init.d/red5sip<br />
+						sudo update-rc.d red5sip defaults
+					</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Start openmeetings
+				<blockquote>
+					<i>service red5 start</i>
+				</blockquote>
+			</div>
+                                                <div>
+				Start red5sip
+				<blockquote>
+					<i>service red5sip start</i>
+				</blockquote>
+			</div>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/svn.html b/docs/svn.html
new file mode 100644
index 0000000..d7ad956
--- /dev/null
+++ b/docs/svn.html
@@ -0,0 +1,779 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Source Code</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Source Code"><strong>OpenMeetings Source Code</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				OpenMeetings uses
+				<a class="external" rel="nofollow" href="http://subversion.tigris.org">
+					Subversion
+				</a>
+				to manage its source code.
+				If you're new to Subversion, you can check out the
+				<a href="http://svnbook.red-bean.com/">online book</a>
+				about Subversion.
+				Note that we are currently using Subversion 1.1.x (there are separate
+				versions of the book covering 1.0 and 1.1).
+			</p>
+                                                <p>
+				To receive notice of commits to the repository subscribe to
+				<a href="mailto:commits@openmeetings.apache.org">
+					commits@openmeetings.apache.org
+				</a>
+				by sending email to
+				<a href="mailto:commits-subscribe@openmeetings.apache.org">
+					commits-subscribe@openmeetings.apache.org
+				</a>
+				.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Web Access to Subversion"><strong>Web Access to Subversion</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				If you just want to browse the source code, you can use the
+				<a class="external" rel="nofollow" href="http://svn.apache.org/viewcvs/openmeetings">
+					ViewCVS web interface
+				</a>
+				to Subversion. This is current at all times.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Checking Out Code Using Subversion"><strong>Checking Out Code Using Subversion</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Anyone can check code out of Subversion. You only need to specify
+				a
+				username and password to update the Subversion repository, and only
+				OpenMeetings committers can do that.
+				If you are a committer, are working from behind a firewall, or are
+				connected to the internet through a proxy server, please see the
+				sections
+				below for more information.
+			</p>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Anonymous check out from Subversion"><strong>Anonymous check out from Subversion</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Use a command like:</p>
+                                                <pre>% svn checkout
+					http://svn.apache.org/repos/asf/openmeetings </pre>
+                                                <p>Once you have OpenMeetings checked out you can update the source
+					by executing the following command from within the openmeetings
+					directory.
+				</p>
+                                                <pre>
+					% svn update
+				</pre>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Access from behind a firewall"><strong>Access from behind a firewall</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>For those users who are stuck behind a corporate firewall which
+					is
+					blocking http access to the Subversion repository, you can try to access it
+					via HTTPS:
+				</p>
+                                                <pre>
+					% svn checkout
+					https://svn.apache.org/repos/asf/openmeetings
+				</pre>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Access through a proxy"><strong>Access through a proxy</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>The Subversion client can go through a proxy, if you configure it
+					to do so. First, edit your "servers" configuration file to indicate
+					which
+					proxy to use. The files location depends on your operating system.
+					On Linux or Unix it is located in the directory "~/.subversion".
+					On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%",
+					note this is a hidden directory.)
+				</p>
+                                                <p>There are comments in the file explaining what to do. If you
+					don't have
+					that file, get the latest Subversion client and run any command; this
+					will
+					cause the configuration directory and template files to be created.
+				</p>
+                                                <p>Example : Edit the 'servers' file and add something like :
+				</p>
+                                                <pre>
+					[global]
+					http-proxy-host = your.proxy.name
+					http-proxy-port = 3128
+				</pre>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Committer access"><strong>Committer access</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Everyone can access the Apache Podling Subversion repository via
+					HTTPS,
+					but OpenMeetings Committers must checkout the Subversion repository
+					via HTTPS.
+				</p>
+                                                <pre>
+					% svn checkout
+					https://svn.apache.org/repos/asf/openmeetings
+				</pre>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Submitting Code Changes"><strong>Submitting Code Changes</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Submitting a patch"><strong>Submitting a patch</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>If you make changes to OpenMeetings, and would like to contribute
+					it to the project, you should open a JIRA issue and discuss the
+					merits
+					of the proposal with the developer community. If there is agreement,
+					create a patch and attach it to the JIRA issue.
+				</p>
+                                                <p>
+					To create a patch, execute the svn diff command. This creates a patch
+					that
+					can easily be uploaded to a JIRA issue. A good name for the patch
+					includes
+					the JIRA issue name, e.g. OPENMEETINGS-104.patch. If there are several
+					patches
+					for the same JIRA issue, you might include your initials, e.g.
+					OPENMEETINGS-104.clr.patch
+				</p>
+                                                <pre>
+					% svn diff &gt; OPENMEETINGS-104.clr.patch
+				</pre>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Committing changes to subversion"><strong>Committing changes to subversion</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					To commit changes to the subversion repository, you must be an
+					OpenMeetings committer. See
+					<a href="get-involved.html">get involved</a>
+					for information on how to become a committer and how to set up your
+					password once you become a committer.
+				</p>
+                                                <p>
+					Once your password is set, you can use a command like this to commit:
+				</p>
+                                                <pre>
+					$&gt; svn commit --username your-username
+					Authentication realm: &lt;https://svn.apache.org:443&gt; ASF Committers
+					Password for 'your-username': your-password
+				</pre>
+                                                <p>You can also pass your password on the command line directly, but
+					this is a security problem on multiuser unix computers (the command
+					line
+					arguments are available via the ps command). Here is the command if you
+					are Windows or a single user unix computer:
+				</p>
+                                                <pre>
+					$&gt; svn commit --username your-username --password your-password
+				</pre>
+                                                <p>Remember to replace 'your-username' and 'your-password' with
+					your actual username and password on svn.apache.org.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Building Podling from Source"><strong>Building Podling from Source</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Using Subversion on Windows with cygwin"><strong>Using Subversion on Windows with cygwin</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				If you use Subversion on Windows under cygwin, you may find that the
+				Subversion client automatically assigns the executable property to
+				non-executable files. In that case, you would see this at the bottom
+				of
+				an
+				<em>svn diff</em>
+				of the file:
+			</p>
+                                                <pre>
+				Property changes on: test/sql/derby/datastoreidentity/schema1.sql
+				___________________________________________________________________
+				Name: svn:executable
+				+ *
+			</pre>
+                                                <p>This section explains the source of the problem and suggests some
+				actions to avoid it.
+			</p>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Background"><strong>Background</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>Subversion carries executable information in the built-in
+					property
+					called svn:executable. This property, unlike others, may be present
+					or absent, but it has no value. You can add it or delete it, but you
+					cannot change its value.
+				</p>
+                                                <p>In theory, Subversion ignores Windows file permissions and by
+					default
+					does not set svn:executable. However, cygwin svn acts like Unix svn and
+					determines the svn:executable property based on file permissions.
+				</p>
+                                                <p>
+					If you create a file from the cygwin command line, by default it is
+					executable only if the filename ends with .bat, .com or .exe, or if
+					its
+					content starts with #!. [This is what the doc says, but you may see -x
+					for all files.] If you create a file using a Windows tool, by default
+					its Windows permissions are executable by all. Cygwin interprets
+					the
+					Unix-style permissions this way as well. If the file is executable by all,
+					cygwin svn sets the svn:executable property on the file when you
+					invoke
+					<em>svn add</em>
+					.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Removing existing executable properties from the repository"><strong>Removing existing executable properties from the repository</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You can use svn propdel to remove the svn:executable property
+					from your
+					working copy.
+				</p>
+                                                <pre>
+					svn propdel -R svn:executable .
+				</pre>
+                                                <p>will recursively remove the svn:executable property from all of
+					the
+					files below the current directory. You can use this and commit the
+					files to clean the repository if necessary.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="#EFEFEF">
+        <font color="#000000" face="arial,helvetica,sanserif">
+          <a name="Preventing Subversion from adding unwanted executable  properties"><strong>Preventing Subversion from adding unwanted executable  properties</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+					Windows/cygwin users who don't want to have to think about using
+					<em>svn
+						propdel
+					</em>
+					or
+					<em>chmod</em>
+					on each added file can use a non-cygwin
+					version of svn. The Subversion 1.2.3 Win32 binaries, downloadable from the
+					link at the bottom of
+					<a rel="nofollow" href="http://subversion.tigris.org/project_packages.html">
+						http://subversion.tigris.org/project_packages.html
+					</a>
+					, appear to work
+					well. After installation add the svn.exe location to your Windows PATH
+					variable. If you are switching from cygwin svn to Win32 svn
+				</p>
+                                                <ol type="1">
+					<li>
+						<p>Remove the subversion component from your cygwin installation
+							because when svn is invoked from a cygwin window, the cygwin
+							version is
+							found even if your cygwin/bin directory is later on the path. (In the
+							Select Packages window of the setup wizard, navigate to the
+							subversion
+							package in the Devel. category. Click on the status icon until Uninstall
+							is displayed. Click next and continue through the wizard until
+							installation
+							is complete.)
+						</p>
+					</li>
+					<li>
+						<p>Copy the servers file and the auth folder from the sygwin
+							~/.subversion
+							directory to C:\Documents and
+							Settings\&lt;user&gt;\Application Data\Subversion used by Win32
+							subversion.
+						</p>
+					</li>
+				</ol>
+                                                <p>Note that windows svn uses backslash as the path separator when
+					displaying file names. You cannot just copy and paste this file
+					name
+					to another svn command when running from within a cygwin shell.
+					You need to enclose the file name into double quotes.
+				</p>
+                                                <p>Alternatively, Windows users can set file permissions in Windows
+					Explorer. (Right-click on the top-level folder &amp; select
+					Properties.
+					Select the Security tab. Click Advanced. Remove all instances of
+					Read &amp; Execute from the Permission Entries. Click "Reset
+					permissions
+					on all child objects and enable propogations of inheritable
+					permissions".
+					Click Apply. OK. OK.) You will have to do this again when you do a clean
+					checkout to a new directory.
+				</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/team-list-ru.html b/docs/team-list-ru.html
new file mode 100644
index 0000000..5f9b203
--- /dev/null
+++ b/docs/team-list-ru.html
@@ -0,0 +1,453 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Команда проекта</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Committers"><strong>OpenMeetings Committers</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Люди, отмеченные на этой странице, имеют доступ к репозиторию исходного кода Apache Openmeetings. 
+				Данная страница предназначена для того, чтобы служить основой квалификационного отбора
+				по проектам, требующим модификации исходного кода Openmeetings.
+			</p>
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Имя
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Себастьян Вагнер
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Алексей Федотов
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Евгений Ровинский
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Максим Солодовник
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Oliver Becherer
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Eugen Schwert
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Sascha Xander
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Johnny Strom
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Герман Грехов
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Тимур Тлеукенов
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Alvaro Bustos
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        George Kirkham
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Stephen Cottham
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Ирина Архипец
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Василий Дегтярев
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Денис Кандров
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Юлия Альгаер
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Артём Хоруженко
+    </td>
+            </tr>
+            </table>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/team-list.html b/docs/team-list.html
new file mode 100644
index 0000000..dcbd4a0
--- /dev/null
+++ b/docs/team-list.html
@@ -0,0 +1,581 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			Sebastian Wagner
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Project Team</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="OpenMeetings Committers"><strong>OpenMeetings Committers</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				The people listed below have made significant contributions to
+				Podling
+				by
+				working long and hard to make quality software for the rest
+				of the world to
+				use.
+			</p>
+                                                <p>
+				If you would like to contribute to Podling, please see the
+				<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list" target="_BLANK">https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list
+				</a>
+				to find areas where you can contribute.
+				If there is nothing in there
+				that suits your interest, but you still
+				have
+				ideas, please feel free
+				to suggest them on the mailing list.
+			</p>
+                                                <p>
+				If you would like to become a committer, please see
+				<a href="get-involved.html">Get Involved</a>
+				.
+			</p>
+                                                <table>
+                        <tr>
+                        <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Name
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Organization
+    </th>
+                                <th bgcolor="#039acc" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Contact/Website
+    </th>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Sebastian Wagner
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        
+						<a href="https://twitter.com/#!/dead_lock" target="_BLANK" rel="nofollow">https://twitter.com/#!/dead_lock
+						</a>
+					
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Alexei Fedotov
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Evgeny Rovinsky
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Maxim Solodovnik
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Oliver Becherer
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Eugen Schwert
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Sascha Xander
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Johnny Strom
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Timur Tleukenov
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Alvaro Bustos
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        George Kirkham
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Stephen Cottham
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Irina Arkhipets
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Vasiliy Degtyarev
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Denis Kandrov
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Yulia Algaer
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+                                <tr>
+                        <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Artyom Horuzhenko
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        Independent
+    </td>
+                                <td bgcolor="#a0ddf0" class="$class" colspan="" rowspan="" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+        &nbsp;
+    </td>
+            </tr>
+            </table>
+                                                <p>
+			<a href="team-list-ru.html">Here</a> is the Russian version of this page.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/themes-and-branding.html b/docs/themes-and-branding.html
new file mode 100644
index 0000000..709bab4
--- /dev/null
+++ b/docs/themes-and-branding.html
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - Theme and color</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Available with Apache OpenMeetings 2.0"><strong>Available with Apache OpenMeetings 2.0</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				Themes are only available starting with Openmeetings 2.x.
+				<br />
+				There are also more general client side configuration like port
+				configuration. Those configs are stored in the public/config.xml
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="Editing the theme"><strong>Editing the theme</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>You can find the default theme in the SVN: </p>
+                                                <p>
+				<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/openmeetings/public/theme.xml" target="_BLANK" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/openmeetings/public/theme.xml
+				</a>
+			</p>
+                                                <p>
+				Or if you already installed OpenMeetings on your machine at:
+				<br />
+				<tt>/webapps/openmeetings/public/theme.xml</tt>
+				<br />
+				The file contains border, background and font color definitions as
+				well as paths to icons that are loaded at runtime.
+				<br />
+				You can change the theme at runtime and just reload the browser
+				(eventually clear the browser cache) to see updates based on
+				modification in your theme.
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/voip-sip-integration.html b/docs/voip-sip-integration.html
new file mode 100644
index 0000000..f35ac02
--- /dev/null
+++ b/docs/voip-sip-integration.html
@@ -0,0 +1,386 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+        
+<!-- start the processing -->
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+                                                    <meta name="author" content="
+			OpenMeetings Team
+		">
+            <meta name="email" content="sebawagner@apache.org">
+            
+           
+                                    
+                        
+            <title>Apache OpenMeetings - VoIP and SIP Integration</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    <td align="left">
+<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
+</td>
+                    <td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+            	<h3><a href="#General">General</a></h3>
+    	<div>
+	        	            	            	    <a href="./index.html">Home</a>
+<br/>
+	        		        	            	            	    <a href="./license.html">License</a>
+<br/>
+	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
+<br/>
+	        		        	            	            	    <a href="./downloads.html">Downloads</a>
+<br/>
+	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
+    	<div>
+	        	            	            	    <a href="./installation.html">Installation</a>
+<br/>
+	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
+<br/>
+	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
+<br/>
+	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Community">Community</a></h3>
+    	<div>
+	        	            	            	    <a href="./get-involved.html">Get Involved</a>
+<br/>
+	        		        	            	            	    <a href="./team-list.html">Committers</a>
+<br/>
+	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
+<br/>
+	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Development">Development</a></h3>
+    	<div>
+	        	            	            	    <a href="./svn.html">Source Code</a>
+<br/>
+	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
+<br/>
+	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
+<br/>
+	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
+<br/>
+	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
+<br/>
+	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
+<br/>
+	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Integration">Integration</a></h3>
+    	<div>
+	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
+<br/>
+	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
+<br/>
+	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
+<br/>
+	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
+<br/>
+	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
+<br/>
+	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Plugins">Plugins</a></h3>
+    	<div>
+	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
+<br/>
+	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
+<br/>
+	        		            	</div>
+        	<h3><a href="#Configuration">Configuration</a></h3>
+    	<div>
+	        	            	            	<b>DB Sample Configurations</b><br/>
+	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
+<br/>
+	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
+<br/>
+	            			            			    <a href="./OracleConfig.html">Oracle</a>
+<br/>
+	            			            			    <a href="./MySQLConfig.html">MySQL</a>
+<br/>
+	            			            			    <a href="./PostgresConfig.html">Postgres</a>
+<br/>
+	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
+<br/>
+	            			        		        	            	            	<b>Localization and languages</b><br/>
+	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
+<br/>
+	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
+<br/>
+	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
+<br/>
+	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
+<br/>
+	            			        		        	            	            	<b>NAT Port Settings</b><br/>
+	            			            			    <a href="./PortSettings.html">Port settings</a>
+<br/>
+	            			        		        	            	            	<b>Performance</b><br/>
+	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
+<br/>
+	            			        		        	            	            	<b>User Interface</b><br/>
+	            			            			    <a href="./themes-and-branding.html">Themes</a>
+<br/>
+	            			            			    <a href="./Dashboard.html">Dashboard</a>
+<br/>
+	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
+<br/>
+	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
+<br/>
+	            			            			    <a href="./HotKeys.html">Hot Keys</a>
+<br/>
+	            			        		        	            	            	<b>Customization</b><br/>
+	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
+<br/>
+	            			            			    <a href="./Navigation.html">Navigation</a>
+<br/>
+	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
+<br/>
+	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
+<br/>
+	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
+<br/>
+	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
+<br/>
+	            			        		        	            	            	<b>Security</b><br/>
+	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
+<br/>
+	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
+<br/>
+	            			        		        	            	            	<b>Converters</b><br/>
+	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
+<br/>
+	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
+<br/>
+	            			        		        	            	            	<b>Clustering</b><br/>
+	            			            			    <a href="./Clustering.html">Clustering</a>
+<br/>
+	            			        		        	            	            	<b>Misc</b><br/>
+	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
+<br/>
+	            			        		            	</div>
+        
+    </div>
+     
+    <br/>
+    
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="#EEEEEE" -->
+        <font color="#000000" face="verdana,arial,helvetica,sanserif">
+          <a name="VoIP and SIP Integration"><strong>VoIP and SIP Integration</strong></a>
+        </font>
+        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+                                    <p>
+				There are multiple ways to integrate with VoIP and or SIP.
+				OpenMeetings does not provide out of the box a ready to run VoIP
+				integration / integration to cell phone or usual land lane.
+				The
+				nature of such integrations is that it depends heavily on the
+				infrastructure that you are using and where you would like to
+				integrate OpenMeetings into.
+				<br />
+				<br />
+				It also depends on a number of factors of which OpenMeetings is
+				impossible to set up for you, for example setting up your VoIP
+				server or provide you with a range of telephone numbers reserved for
+				conference calls in your national phone network.
+				Such an integration
+				project is likely to become a consulting job for a
+				telecommunications consultant.
+				<br />
+				<br />
+				To get help on the integration you can contact the
+				<a href="mail-lists.html">mailing lists</a>
+				or for example somebody from the list of
+				<a href="commercial-support.html">commercial support</a>
+				.
+                <br /><br />
+                <a href="red5sip-integration_2.0.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.0
+                </a>.<br />
+                <a href="red5sip-integration_2.1.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.1
+                </a>.<br />
+                <a href="red5sip-integration_3.0.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.0
+                </a>.<br />
+			</p>
+                            </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+                                        </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="#123465" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+<!-- end the processing -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ivy.xml b/ivy.xml
new file mode 100644
index 0000000..6fe5b20
--- /dev/null
+++ b/ivy.xml
@@ -0,0 +1,443 @@
+<?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.
+ -->
+<ivy-module version="2.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
+	<info organisation="apache" module="openmeetings" />
+	<configurations defaultconfmapping="default">
+		<conf name="default" />
+		<conf name="mainlib" extends="default" description="Top level libraries" />
+		<conf name="mainlib.ext" extends="mainlib" description="Top level libraries with different pattern" />
+		<conf name="openmeetings" description="Openmeetings required libraries" />
+		<conf name="openmeetings.ext" extends="openmeetings" description="Openmeetings required libraries with different pattern" />
+		<conf name="openmeetings.axis2" extends="openmeetings.ext" description="Axis required libraries with dependencies" />
+		<conf name="anakia" description="Openmeetings required libraries" />
+		<conf name="junit" description="Unit testing dependencies" />
+		<conf name="cmdadmin" description="Command Line Admin dependencies" />
+		<conf name="rat" extends="cmdadmin" description="Apache Rat dependencies" />
+		<conf name="dtd" description="Dtd-generator dependencies" />
+		<conf name="svntask" description="Svn task dependencies" />
+		<conf name="openlaszlo" description="Openlaszlo dependencies" />
+		<conf name="openlaszlo46" description="Openlaszlo with Flex 4.6 dependencies" />
+		<conf name="mysql" description="MySQL JDBC driver" />
+		<conf name="mvn" description="Maven Ant task to build Red5" />
+		<conf name="red5-client" description="Red5 Client/Server for screensharing" />
+		<conf name="jgit" description="JGit Ant task to retirieve Red5" />
+	</configurations>
+	<dependencies>
+		<!--  START OF mainlib -->
+		<dependency org="commons-fileupload" name="commons-fileupload" rev="1.3" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="commons-io" name="commons-io" rev="2.4" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="asm" name="asm" rev="3.1" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-aspects" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-jdbc" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-orm" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-tx" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-webmvc" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.springframework" name="spring-context-support" rev="4.0.8.RELEASE" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!-- include type="bundle" / FIXME unable to get geronimo-jpa without  sources -->
+		<dependency org="org.apache.geronimo.specs" name="geronimo-jpa_2.0_spec" rev="1.1" conf="mainlib.ext->*" transitive="false"/>
+		<!--  END OF mainlib -->
+		
+		<!--  START OF ANAKIA -->
+		<dependency org="org.jdom" name="jdom" rev="1.1" conf="anakia->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="logkit" name="logkit" rev="1.0.1" conf="anakia->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="oro" name="oro" rev="2.0.8" conf="anakia->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.velocity" name="velocity-anakia" rev="1.1.0-SNAPSHOT" conf="anakia->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF ANAKIA -->
+
+		<!--  START OF OPENMEETINGS -->
+		<dependency org="org.apache.axis2" name="axis2" rev="1.7.0-SNAPSHOT" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-anim" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-awt-util" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-bridge" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-codec" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-css" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-dom" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-ext" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-extension" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-gui-util" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-gvt" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-parser" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-rasterizer" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-script" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-slideshow" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-squiggle" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-svg-dom" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-svggen" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-svgpp" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-swing" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-transcoder" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-ttf2svg" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-util" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="batik-xml" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="fop" rev="1.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlgraphics" name="xmlgraphics-commons" rev="1.4" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="xml-apis" name="xml-apis-ext" rev="1.3.04" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.derby" name="derby" rev="10.10.2.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.derby" name="derbyclient" rev="10.10.2.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.derby" name="derbynet" rev="10.10.2.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.postgresql" name="postgresql" rev="9.4-1200-jdbc41" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="dom4j" name="dom4j" rev="1.6.1" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.velocity" name="velocity" rev="1.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.velocity" name="velocity-tools" rev="2.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  added to avoid downloading version 1.3 with Axis2 -->
+		<dependency org="commons-codec" name="commons-codec" rev="1.8" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="com.thoughtworks.xstream" name="xstream" rev="1.4.2" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.ws.commons.util" name="ws-commons-util" rev="1.0.2" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlrpc" name="xmlrpc-common" rev="3.1.3" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xmlrpc" name="xmlrpc-client" rev="3.1.3" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="commons-transaction" name="commons-transaction" rev="1.2" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="commons-dbcp" name="commons-dbcp" rev="1.4" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="commons-digester" name="commons-digester" rev="2.1" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="xpp3" name="xpp3" rev="1.1.4c" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="javax.mail" name="mail" rev="1.4.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.simpleframework" name="simple-xml" rev="2.7" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-request" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-util" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-core" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-auth-roles" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-ioc" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-extensions" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-datetime" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="joda-time" name="joda-time" rev="2.3" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-devutils" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-native-websocket-core" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.wicket" name="wicket-native-websocket-tomcat" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-jquery-ui-core" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-jquery-ui" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-jquery-ui-calendar" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-jquery-ui-plugins" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-kendo-ui" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="com.googlecode.wicket-jquery-ui" name="wicket-kendo-ui-theme-default" rev="6.19.0" conf="openmeetings->*" transitive="false"/>
+		<dependency org="org.threeten" name="threetenbp" rev="1.2" conf="openmeetings->*" transitive="false"/>
+		<dependency org="ro.fortsoft.wicket.dashboard" name="wicket-dashboard-core" rev="0.12.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="com.google.code.gson" name="gson" rev="2.2.4" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.wicketstuff" name="wicketstuff-urlfragment" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.wicketstuff" name="wicketstuff-html5" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.wicketstuff" name="wicketstuff-select2" rev="6.19.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		
+		<!-- iCal4j seems to need this JAR -->
+		<dependency org="backport-util-concurrent" name="backport-util-concurrent" rev="3.1" conf="openmeetings->*"/>
+
+		<dependency org="commons-net" name="commons-net" rev="3.3" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="com.googlecode.jsmpp" name="jsmpp" rev="2.1.0" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.smslib" name="smslib" rev="3.5.4" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.asteriskjava" name="asterisk-java" rev="1.0.0.CI-20130102.214528-1134" conf="openmeetings->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!-- Selenium -->
+		<dependency org="org.seleniumhq.selenium" name="selenium-java" conf="openmeetings->*" rev="2.42.2" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.directory.api" name="api-all" rev="1.0.0-M28" conf="openmeetings->*" >
+			<include type="jar" />
+		</dependency>
+		<!-- BEGIN openjpa -->
+		<dependency org="org.apache.geronimo.specs" name="geronimo-jms_1.1_spec" rev="1.1.1" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="net.sourceforge.serp" name="serp" rev="1.14.1" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.xbean" name="xbean-asm4-shaded" rev="3.14" conf="openmeetings->*" transitive="false" />
+		<dependency org="org.apache.openjpa" name="openjpa-jdbc" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-jest" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-kernel" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-lib" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-persistence" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-persistence-jdbc" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-slice" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa-xmlstore" rev="2.3.0" conf="openmeetings->*" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.openjpa" name="openjpa" rev="2.3.0" conf="openmeetings->*" transitive="false" />
+		<!-- END openjpa -->
+
+		<dependency org="org.mnode.ical4j" name="ical4j" rev="1.0.5" conf="openmeetings.ext->*" transitive="false"/>
+		
+		<dependency org="org.apache.ws.commons.axiom" name="axiom-impl" rev="1.2.14" conf="openmeetings.axis2->*" transitive="true">
+			<exclude name='commons-io' />
+			<exclude name='commons-logging' />
+		</dependency>
+		<dependency org="org.apache.ws.commons.axiom" name="axiom-dom" rev="1.2.14" conf="openmeetings.axis2->*" transitive="false" />
+		<dependency org="org.apache.axis2" name="axis2-transport-http" rev="1.7.0-SNAPSHOT" conf="openmeetings.axis2->*"/>
+		<dependency org="org.apache.axis2" name="axis2-transport-local" rev="1.7.0-SNAPSHOT" conf="openmeetings.axis2->*"/>
+		<dependency org="org.apache.axis2" name="mex" rev="1.7.0-SNAPSHOT" conf="openmeetings.axis2->*"/>
+		<dependency org="org.apache.axis2" name="axis2-jaxws" rev="1.7.0-SNAPSHOT" conf="openmeetings.axis2->*"/>
+		<!--  END OF OPENMEETINGS -->
+
+		<!--  START OF JUNIT -->
+		<dependency org="org.springframework" name="spring-test" rev="4.0.8.RELEASE" conf="junit->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="ant-contrib" name="ant-contrib" rev="1.0b3" conf="junit->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF JUNIT -->
+		
+		<!--  START OF RAT -->
+		<dependency org="org.apache.rat" name="apache-rat-core" rev="0.11" conf="rat->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="org.apache.rat" name="apache-rat-tasks" rev="0.11" conf="rat->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF RAT -->
+		
+		<!--  START OF DTD -->
+		<dependency org="com.thaiopensource" name="trang" rev="20091111" conf="dtd->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF DTD -->
+		
+		<!--  START OF svntask -->
+		<dependency org="org.tmatesoft.svnkit" name="svnkit" rev="1.7.11" conf="svntask->*" transitive="true">
+			<include type="jar" />
+		</dependency>
+		<dependency org="svnant" name="svnant" rev="1.3.1" conf="svntask->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<dependency org="svnClientAdapter" name="svnClientAdapter" rev="1.3.1" conf="svntask->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF svntask -->
+		
+		<!--  START OF openlaszlo -->
+		<dependency org="openlaszlo" name="openlaszlo" rev="4.9" conf="openlaszlo->*" transitive="false">
+			<artifact name="openlaszlo" type="tgz"/>
+			<include type="tgz" />
+		</dependency>
+		<!--  END OF openlaszlo -->
+		
+		<!--  START OF openlaszlo46 -->
+		<dependency org="openlaszlo" name="openlaszlo" rev="4.9.5" conf="openlaszlo46->*" transitive="false">
+			<artifact name="openlaszlo" type="tgz"/>
+			<include type="tgz" />
+		</dependency>
+		<!--  END OF openlaszlo46 -->
+		
+		<!--  START OF Command Line Admin -->
+		<dependency org="commons-cli" name="commons-cli" rev="1.2" conf="cmdadmin->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF Command Line Admin -->
+		
+		<!--  START OF MySQL Driver -->
+		<dependency org="mysql" name="mysql-connector-java" rev="5.1.34" conf="mysql->*" transitive="false">
+			<include type="jar" />
+		</dependency>
+		<!--  END OF MySQL Driver -->
+
+		<!-- MVN --> 
+		<dependency org="org.apache.maven" name="maven-ant-tasks" conf="mvn->*" rev="2.1.3" transitive="false" >
+			<include type="jar" />
+		</dependency>
+
+		<!-- JGIT -->
+		<dependency org="org.eclipse.jgit" name="org.eclipse.jgit.ant" conf="jgit->*" rev="3.6.0.201412230720-r" transitive="true" >
+			<include type="jar" />
+			<exclude org="org.apache.ant"/>
+		</dependency>
+
+		<!-- red5-client -->
+		<dependency org="org.red5" name="red5-client" conf="red5-client->*" rev="1.0.5-RELEASE" transitive="false" >
+			<include type="jar" />
+		</dependency>
+		
+		<exclude org="dom4j" module="dom4j" type="javadoc" ext="*" conf="*" matcher="exact"/>		
+		<exclude org="javax.servlet" module="servlet-api" type="*" ext="*" conf="*" matcher="exact"/>		
+		<exclude org="cglib" module="cglib-nodep" type="*" ext="*" conf="*" matcher="exact"/>
+		<exclude org="pull-parser" module="pull-parser" type="*" ext="*" conf="*" matcher="exact"/>
+		<exclude org="org.apache.mina" module="mina-core" type="*" ext="*" conf="*" matcher="exact"/>
+		<exclude org="com.ibm.websphere" module="websphere_uow_api" type="*" ext="*" conf="*" matcher="exact"/>
+		<exclude org="commons-pool" module="commons-pool" type="*" ext="*" conf="*" matcher="exact"/>
+		<exclude org="org.apache.commons" module="commons-lang3" type="*" ext="*" conf="*" matcher="exact"/>
+	</dependencies>
+</ivy-module>
+
diff --git a/ivysettings.xml b/ivysettings.xml
new file mode 100644
index 0000000..72b02bd
--- /dev/null
+++ b/ivysettings.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<ivysettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="ivysettings.xsd">
+	<settings defaultResolver="chain"/>
+	<resolvers>
+		<chain name="chain">
+			<ibiblio name="central" m2compatible="true"/>
+			<ibiblio name="apache-public" m2compatible="true" root="https://repository.apache.org/content/groups/public" />
+			<ibiblio name="apache-snapshot" m2compatible="true" root="https://repository.apache.org/content/groups/snapshots" />
+			<url name="mavencentral" m2compatible="true">
+				<artifact pattern="http://repo1.maven.org/maven2/[organisation]/[artifact]-[revision].[ext]" />
+			</url>
+			<url name="sonatype" m2compatible="true">
+				<artifact pattern="https://oss.sonatype.org/content/repositories/releases/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]" />
+			</url>
+			<url name="svnkit" m2compatible="true">
+				<artifact pattern="http://maven.tmatesoft.com/content/repositories/releases/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]" />
+			</url>
+			<url name="googlecode" m2compatible="true">
+				<artifact pattern="https://openlaszlo-openmeetings-integration.googlecode.com/svn/repository/[artifact](-[revision]).[ext]" />
+				<artifact pattern="https://openmeetings.googlecode.com/svn/repository/[artifact](-[revision]).[ext]" />
+				<artifact pattern="https://openmeetings.googlecode.com/svn/repository/[organisation]/[artifact]/[revision]/[artifact](-[revision]).[ext]" />
+				<artifact pattern="https://red5.googlecode.com/svn/repository/[organisation]/[artifact]/[revision]/[artifact](-[revision]).[ext]" />
+			</url>
+			<url name="smslib" m2compatible="true">
+				<artifact pattern="http://smslib.org/maven2/v3/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]" />
+			</url>
+			<!--url name="wicket-jquery-ui" m2compatible="true">
+				<artifact pattern="https://oss.sonatype.org/content/repositories/snapshots/[organisation]/[artifact]/6.18.1-SNAPSHOT/[artifact]-[revision].[ext]" />
+			</url-->
+		</chain>
+	</resolvers>
+	<triggers>
+		<ant-call target="-extract-tgz" prefix="dep" event="post-download-artifact" filter="type=tgz"/>
+	</triggers>
+</ivysettings>
+
diff --git a/ivysettings.xsd b/ivysettings.xsd
new file mode 100644
index 0000000..c506c7d
--- /dev/null
+++ b/ivysettings.xsd
@@ -0,0 +1,89 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="ivysettings">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="settings"/>
+        <xs:element ref="resolvers"/>
+        <xs:element ref="triggers" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="settings">
+    <xs:complexType>
+      <xs:attribute name="defaultResolver" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="resolvers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="chain" maxOccurs="unbounded"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="chain">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ibiblio"/>
+        <xs:element maxOccurs="unbounded" ref="url"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ibiblio">
+    <xs:complexType>
+      <xs:attribute name="m2compatible" use="required" type="xs:boolean"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="root" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="url">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="artifact"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="m2compatible" use="optional" type="xs:NCName"/>
+      <xs:attribute name="checksums" use="optional" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="artifact">
+    <xs:complexType>
+      <xs:attribute name="pattern" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="triggers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="ant-call"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ant-call">
+    <xs:complexType>
+      <xs:attribute name="event" use="required" type="xs:NCName"/>
+      <xs:attribute name="filter" use="required"/>
+      <xs:attribute name="prefix" use="required" type="xs:NCName"/>
+      <xs:attribute name="target" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/BaseWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/BaseWebService.java
new file mode 100644
index 0000000..cd9b0c5
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/BaseWebService.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import javax.servlet.ServletContext;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.openmeetings.servlet.BeanUtil;
+import org.apache.openmeetings.servlet.ServerNotInitializedException;
+
+public abstract class BaseWebService {
+	private BeanUtil beanUtil = new BeanUtil();
+	
+	private ServletContext getServletContext() throws AxisFault {
+		try {
+			MessageContext mc = MessageContext.getCurrentMessageContext();
+			return (ServletContext) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETCONTEXT);
+		} catch (Exception err) {
+			throw new AxisFault("Servlet context is not available yet, retry in couple of seconds");
+		}
+	}
+	
+	// package access
+	<T> T getBean(Class<? extends T> clazz) throws AxisFault {
+		try {
+			return beanUtil.getBean(clazz, getServletContext());
+		} catch (ServerNotInitializedException e) {
+			throw new AxisFault(e.getMessage());
+		}
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebService.java
new file mode 100644
index 0000000..9f79c6e
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebService.java
@@ -0,0 +1,563 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.dto.calendar.AppointmentReminderTypeDTO;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * CalendarService contains methods to create, edit delete calendar meetings
+ * 
+ * @author sebawagner
+ * @webservice CalendarService
+ * 
+ */
+public class CalendarWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(CalendarWebService.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDao;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+
+	private List<AppointmentDTO> getAppointments(List<Appointment> list) {
+		List<AppointmentDTO> result = new ArrayList<>(list.size());
+		for (Appointment a : list) {
+			result.add(new AppointmentDTO(a));
+		}
+		return result;
+	}
+	
+	/**
+	 * Load appointments by a start / end range for the current SID
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param starttime
+	 *            start time, yyyy-mm-dd
+	 * @param endtime
+	 *            end time, yyyy-mm-dd
+	 *            
+	 * @return - list of appointments in range
+	 */
+	public List<AppointmentDTO> getAppointmentByRange(String SID, Calendar starttime, Calendar endtime) {
+		log.debug("getAppointmentByRange : startdate - " + starttime.getTime() + ", enddate - " + endtime.getTime());
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				return getAppointments(appointmentDao.getAppointmentsByRange(users_id, starttime.getTime(), endtime.getTime()));
+			}
+		} catch (Exception err) {
+			log.error("[getAppointmentByRange]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Load appointments by a start / end range for the userId
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param userId
+	 *            the userId the calendar events should be loaded
+	 * @param starttime
+	 *            start time, yyyy-mm-dd
+	 * @param endtime
+	 *            end time, yyyy-mm-dd
+	 *            
+	 * @return - list of appointments in range
+	 */
+	public List<AppointmentDTO> getAppointmentByRangeForUserId(String SID, long userId, Calendar starttime, Calendar endtime) {
+		log.debug("getAppointmentByRangeForUserId : startdate - " + starttime.getTime() + ", enddate - " + endtime.getTime());
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return getAppointments(appointmentDao.getAppointmentsByRange(userId, starttime.getTime(), endtime.getTime()));
+			}
+		} catch (Exception err) {
+			log.error("[getAppointmentByRangeForUserId]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the next Calendar event for the current user of the SID
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @return - next Calendar event
+	 */
+	public AppointmentDTO getNextAppointment(String SID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				return new AppointmentDTO(appointmentDao.getNextAppointment(users_id, new Date()));
+			}
+		} catch (Exception err) {
+			log.error("[getNextAppointmentById]", err);
+		}
+		return null;
+
+	}
+
+	/**
+	 * Get the next Calendar event for userId
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 *            
+	 * @return - next Calendar event
+	 */
+	public AppointmentDTO getNextAppointmentForUserId(String SID, long userId) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return new AppointmentDTO(appointmentDao.getNextAppointment(userId, new Date()));
+			}
+		} catch (Exception err) {
+			log.error("[getNextAppointmentById]", err);
+		}
+		return null;
+
+	}
+
+	/**
+	 * Search a calendar event for the current SID
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param appointmentName
+	 *            the search string
+	 *            
+	 * @return - calendar event list
+	 */
+	public List<AppointmentDTO> searchAppointmentByTitle(String SID, String appointmentName) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				return getAppointments(appointmentDao.searchAppointmentsByTitle(users_id, appointmentName));
+			}
+		} catch (Exception err) {
+			log.error("[searchAppointmentByName]", err);
+		}
+		return null;
+
+	}
+
+	/**
+	 * Save an appointment
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param appointmentName
+	 *            name of the calendar event
+	 * @param appointmentLocation
+	 *            location info text of the calendar event
+	 * @param appointmentDescription
+	 *            description test of the calendar event
+	 * @param appointmentstart
+	 *            start as Date yyyy-mm-ddThh:mm:ss
+	 * @param appointmentend
+	 *            end as Date yyyy-mm-ddThh:mm:ss
+	 * @param isDaily
+	 *            if the calendar event should be repeated daily (not
+	 *            implemented)
+	 * @param isWeekly
+	 *            if the calendar event should be repeated weekly (not
+	 *            implemented)
+	 * @param isMonthly
+	 *            if the calendar event should be repeated monthly (not
+	 *            implemented)
+	 * @param isYearly
+	 *            if the calendar event should be repeated yearly (not
+	 *            implemented)
+	 * @param categoryId
+	 *            the category id of the calendar event
+	 * @param remind
+	 *            the reminder type of the calendar event
+	 * @param mmClient
+	 *            List of clients, comma separated string, <br/>
+	 *            sample: '1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+	 *            to add multiple clients you can use the same GET parameter in
+	 *            the URL multiple times, for example:
+	 *            &amp;mmClient='1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+	 *             (Please NOTE mmClient value is enclosed in single quotes)
+	 * @param roomType
+	 *            the room type for the calendar event
+	 * @param languageId
+	 *            the language id of the calendar event, notification emails
+	 *            will be send in this language
+	 * @param isPasswordProtected
+	 *            if the room is password protected
+	 * @param password
+	 *            the password for the room
+	 *            
+	 * @return - id of appointment saved
+	 */
+	public Long saveAppointment(String SID, String appointmentName,
+			String appointmentLocation, String appointmentDescription,
+			Calendar appointmentstart, Calendar appointmentend,
+			Boolean isDaily, Boolean isWeekly, Boolean isMonthly,
+			Boolean isYearly, Long categoryId, Long remind, String[] mmClient,
+			Long roomType, Long languageId,
+			Boolean isPasswordProtected, String password, long roomId) {
+		//Seems to be create
+		log.debug("saveAppointMent SID:" + SID);
+
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			log.debug("saveAppointMent users_id:" + users_id);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				Appointment a = appointmentLogic.getAppointment(appointmentName, appointmentLocation, appointmentDescription,
+						appointmentstart, appointmentend, isDaily, isWeekly, isMonthly, isYearly, categoryId, remind,
+						mmClient, roomType, languageId, isPasswordProtected, password, roomId, users_id);
+				return appointmentDao.update(a, users_id).getId();
+			} else {
+				log.error("saveAppointment : wrong user level");
+			}
+		} catch (Exception err) {
+			log.error("[saveAppointment]", err);
+		}
+		return null;
+
+	}
+
+	/**
+	 * Update an calendar event time only
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param appointmentId
+	 *            the calendar event that should be updated
+	 * @param appointmentstart
+	 *            start yyyy-mm-dd
+	 * @param appointmentend
+	 *            end yyyy-mm-dd
+	 * @param languageId
+	 *            the language id
+	 *            
+	 * @return - id of appointment updated
+	 */
+	public Long updateAppointmentTimeOnly(String SID, Long appointmentId, Date appointmentstart, Date appointmentend, Long languageId) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			Set<Right> rights = userDao.getRights(users_id);
+			if (AuthLevelUtil.hasUserLevel(rights)) {
+				Appointment a = appointmentDao.get(appointmentId);
+				if (!AuthLevelUtil.hasAdminLevel(rights) && !a.getOwner().getUser_id().equals(users_id)) {
+					throw new AxisFault("The Appointment cannot be updated by the given user");
+				}
+				if (!a.getStart().equals(appointmentstart) || !a.getEnd().equals(appointmentend)) {
+					a.setStart(appointmentstart);
+					a.setEnd(appointmentend);
+					//FIXME this might change the owner!!!!!
+					return appointmentDao.update(a, users_id).getId();
+				}					
+			}
+		} catch (Exception err) {
+			log.error("[updateAppointment]", err);
+		}
+		return null;
+
+	}
+
+	/**
+	 * Save an appointment
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param appointmentId
+	 *            the id to update
+	 * @param appointmentName
+	 *            name of the calendar event
+	 * @param appointmentLocation
+	 *            location info text of the calendar event
+	 * @param appointmentDescription
+	 *            description test of the calendar event
+	 * @param appointmentstart
+	 *            start as Date yyyy-mm-ddThh:mm:ss
+	 * @param appointmentend
+	 *            end as Date yyyy-mm-ddThh:mm:ss
+	 * @param isDaily
+	 *            if the calendar event should be repeated daily (not
+	 *            implemented)
+	 * @param isWeekly
+	 *            if the calendar event should be repeated weekly (not
+	 *            implemented)
+	 * @param isMonthly
+	 *            if the calendar event should be repeated monthly (not
+	 *            implemented)
+	 * @param isYearly
+	 *            if the calendar event should be repeated yearly (not
+	 *            implemented)
+	 * @param categoryId
+	 *            the category id of the calendar event
+	 * @param remind
+	 *            the reminder type of the calendar event
+	 * @param mmClient
+	 *            List of clients, comma separated string, <br/>
+	 *            sample: '1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+	 *            to add multiple clients you can use the same GET parameter in
+	 *            the URL multiple times, for example:
+	 *            &amp;mmClient='1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'&amp;mmClient='2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1'
+	 *             (Please NOTE mmClient value is enclosed in single quotes)
+	 * @param roomType
+	 *            the room type for the calendar event
+	 * @param languageId
+	 *            the language id of the calendar event, notification emails
+	 *            will be send in this language
+	 * @param isPasswordProtected
+	 *            if the room is password protected
+	 * @param password
+	 *            the password for the room
+	 *            
+	 * @return - id of appointment updated
+	 */
+	public Long updateAppointment(String SID, Long appointmentId,
+			String appointmentName, String appointmentLocation,
+			String appointmentDescription, Calendar appointmentstart,
+			Calendar appointmentend, Boolean isDaily, Boolean isWeekly,
+			Boolean isMonthly, Boolean isYearly, Long categoryId, Long remind,
+			String[] mmClient, Long roomType, Long languageId,
+			Boolean isPasswordProtected, String password) throws AxisFault {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+			Set<Right> rights = userDao.getRights(users_id);
+
+			if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasAdminLevel(rights)) {
+				// fine
+			} else if (AuthLevelUtil.hasUserLevel(rights)) {
+				// check if the appointment belongs to the current user
+				Appointment a = appointmentDao.get(appointmentId);
+				if (!a.getOwner().getUser_id().equals(users_id)) {
+					throw new AxisFault("The Appointment cannot be updated by the given user");
+				}
+			} else {
+				throw new AxisFault("Not allowed to preform that action, Authenticate the SID first");
+			}
+
+			Appointment a = appointmentDao.get(appointmentId);
+			a.setTitle(appointmentName);
+			a.setLocation(appointmentLocation);
+			a.setDescription(appointmentDescription);
+			a.setStart(appointmentstart.getTime());
+			a.setEnd(appointmentend.getTime());
+			a.setIsDaily(isDaily);
+			a.setIsWeekly(isWeekly);
+			a.setIsMonthly(isMonthly);
+			a.setIsYearly(isYearly);
+			a.setCategory(appointmentCategoryDao.get(categoryId));
+			a.setRemind(appointmentReminderTypDao.get(remind));
+			a.getRoom().setComment(appointmentDescription);
+			a.getRoom().setName(appointmentName);
+			a.getRoom().setRoomtype(roomTypeDao.get(roomType));
+			a.setOwner(userDao.get(users_id));
+			a.setPasswordProtected(isPasswordProtected);
+			a.setPassword(password);
+			a.setMeetingMembers(new ArrayList<MeetingMember>());
+			for (String singleClient : mmClient) {
+				MeetingMember mm = appointmentLogic.getMeetingMember(users_id, languageId, singleClient);
+				mm.setAppointment(a);
+				a.getMeetingMembers().add(mm);
+			}
+			return appointmentDao.update(a, users_id).getId();
+		} catch (Exception err) {
+			log.error("[updateAppointment]", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * 
+	 * delete a calendar event
+	 * 
+	 * If the given SID is from an Administrator or Web-Service user, the user
+	 * can delete any appointment.<br/>
+	 * If the SID is assigned to a simple user, he can only delete appointments
+	 * where he is also the owner/creator of the appointment
+	 * 
+	 * @param SID
+	 *            an authenticated SID
+	 * @param appointmentId
+	 *            the id to delete
+	 * @param language_id
+	 *            the language id in which the notifications for the deleted
+	 *            appointment are send
+	 * @return - id of appointment deleted
+	 */
+	public Long deleteAppointment(String SID, Long appointmentId, Long language_id) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			Set<Right> rights = userDao.getRights(users_id);
+
+			Appointment a = appointmentDao.get(appointmentId);
+			if (AuthLevelUtil.hasWebServiceLevel(rights) || AuthLevelUtil.hasAdminLevel(rights)) {
+				// fine
+			} else if (AuthLevelUtil.hasUserLevel(rights)) {
+				// check if the appointment belongs to the current user
+				if (!a.getOwner().getUser_id().equals(users_id)) {
+					throw new AxisFault("The Appointment cannot be updated by the given user");
+				}
+			} else {
+				throw new AxisFault("Not allowed to preform that action, Authenticate the SID first");
+			}
+			appointmentDao.delete(a, users_id); //FIXME check this !!!!
+			return a.getId();
+		} catch (Exception err) {
+			log.error("[deleteAppointment]", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * 
+	 * Load a calendar event by its room id
+	 * 
+	 * @param SID
+	 * @param room_id
+	 * @return - calendar event by its room id
+	 */
+	public AppointmentDTO getAppointmentByRoomId(String SID, Long room_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				Appointment appStored = appointmentDao.getAppointmentByRoomId(users_id, room_id);
+				if (appStored != null) {
+					return new AppointmentDTO(appStored);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[getAppointmentByRoomId]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Get all categories of calendar events
+	 * 
+	 * @param SID
+	 * @return - all categories of calendar events
+	 */
+	public List<AppointmentCategory> getAppointmentCategoryList(String SID) {
+		log.debug("AppointmenetCategoryService.getAppointmentCategoryList SID : " + SID);
+
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				List<AppointmentCategory> res = appointmentCategoryDao.getAppointmentCategoryList();
+
+				if (res == null || res.size() < 1) {
+					log.debug("no AppointmentCategories found");
+				} else {
+					for (int i = 0; i < res.size(); i++) {
+						AppointmentCategory ac = res.get(i);
+						log.debug("found appCategory : " + ac.getName());
+					}
+				}
+
+				return res;
+			} else {
+				log.error("AppointmenetCategoryService.getAppointmentCategoryList : UserLevel Error");
+			}
+		} catch (Exception err) {
+			log.error("[getAppointmentCategory]", err);
+		}
+		return null;
+
+	}
+
+	private List<AppointmentReminderTypeDTO> getReminders(List<AppointmentReminderTyps> list) {
+		List<AppointmentReminderTypeDTO> result = new ArrayList<>(list.size());
+		for (AppointmentReminderTyps rt : list) {
+			result.add(new AppointmentReminderTypeDTO(rt));
+		}
+		return result;
+	}
+	/**
+	 * Get all reminder types for calendar events
+	 * 
+	 * @param SID
+	 * @return - all reminder types for calendar events
+	 */
+	public List<AppointmentReminderTypeDTO> getAppointmentReminderTypList(String SID) {
+		log.debug("getAppointmentReminderTypList");
+
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				User user = userDao.get(users_id);
+				long language_id = (user == null) ? 1 : user.getLanguage_id();
+				return getReminders(appointmentReminderTypDao.getAppointmentReminderTypList(language_id));
+			} else
+				log.debug("getAppointmentReminderTypList  :error - wrong authlevel!");
+		} catch (Exception err) {
+			log.error("[getAppointmentReminderTypList]", err);
+		}
+		return null;
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebServiceFacade.java
new file mode 100644
index 0000000..b3263b2
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/CalendarWebServiceFacade.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.dto.calendar.AppointmentReminderTypeDTO;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+
+public class CalendarWebServiceFacade extends BaseWebService {
+	
+	public List<AppointmentDTO> getAppointmentByRange(String SID, Calendar starttime, Calendar endtime) throws AxisFault {
+		return getBean(CalendarWebService.class).getAppointmentByRange(SID, starttime, endtime);
+	}
+
+	public List<AppointmentDTO> getAppointmentByRangeForUserId(String SID, long userId, Calendar starttime, Calendar endtime) throws AxisFault {
+		return getBean(CalendarWebService.class).getAppointmentByRangeForUserId(SID, userId, starttime, endtime);
+	}
+
+	public AppointmentDTO getNextAppointment(String SID) throws AxisFault {
+		return getBean(CalendarWebService.class).getNextAppointment(SID);
+	}
+
+	public AppointmentDTO getNextAppointmentForUserId(String SID, long userId) throws AxisFault {
+		return getBean(CalendarWebService.class).getNextAppointmentForUserId(SID, userId);
+	}
+
+	public List<AppointmentDTO> searchAppointmentByTitle(String SID, String appointmentName) throws AxisFault {
+		return getBean(CalendarWebService.class).searchAppointmentByTitle(SID, appointmentName);
+	}
+
+	public Long saveAppointment(String SID, String appointmentName,
+			String appointmentLocation, String appointmentDescription,
+			Calendar appointmentstart, Calendar appointmentend,
+			Boolean isDaily, Boolean isWeekly, Boolean isMonthly,
+			Boolean isYearly, Long categoryId, Long remind, String[] mmClient,
+			Long roomType, Long languageId,
+			Boolean isPasswordProtected, String password, long roomId) throws AxisFault {
+		return getBean(CalendarWebService.class).saveAppointment(SID, appointmentName,
+				appointmentLocation, appointmentDescription, appointmentstart,
+				appointmentend, isDaily, isWeekly, isMonthly, isYearly,
+				categoryId, remind, mmClient, roomType, languageId,
+				isPasswordProtected, password, roomId);
+	}
+
+	public Long updateAppointmentTimeOnly(String SID, Long appointmentId, Date appointmentstart, Date appointmentend, Long languageId) throws AxisFault {
+		return getBean(CalendarWebService.class).updateAppointmentTimeOnly(SID, appointmentId, appointmentstart, appointmentend, languageId);
+	}
+
+	public Long updateAppointment(String SID, Long appointmentId,
+			String appointmentName, String appointmentLocation,
+			String appointmentDescription, Calendar appointmentstart,
+			Calendar appointmentend, Boolean isDaily, Boolean isWeekly,
+			Boolean isMonthly, Boolean isYearly, Long categoryId, Long remind,
+			String[] mmClient, Long roomType, Long languageId,
+			Boolean isPasswordProtected, String password) throws AxisFault {
+		return getBean(CalendarWebService.class).updateAppointment(SID, appointmentId,
+				appointmentName, appointmentLocation, appointmentDescription,
+				appointmentstart, appointmentend, isDaily, isWeekly, isMonthly,
+				isYearly, categoryId, remind, mmClient, roomType, languageId, isPasswordProtected, password);
+	}
+
+	public Long deleteAppointment(String SID, Long appointmentId, Long language_id) throws AxisFault {
+		return getBean(CalendarWebService.class).deleteAppointment(SID, appointmentId, language_id);
+	}
+
+	public AppointmentDTO getAppointmentByRoomId(String SID, Long room_id) throws AxisFault {
+		return getBean(CalendarWebService.class).getAppointmentByRoomId(SID, room_id);
+	}
+
+	public List<AppointmentCategory> getAppointmentCategoryList(String SID) throws AxisFault {
+		return getBean(CalendarWebService.class).getAppointmentCategoryList(SID);
+	}
+
+	public List<AppointmentReminderTypeDTO> getAppointmentReminderTypList(String SID) throws AxisFault {
+		return getBean(CalendarWebService.class).getAppointmentReminderTypList(SID);
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/FileWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/FileWebService.java
new file mode 100644
index 0000000..c1f58fd
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/FileWebService.java
@@ -0,0 +1,1018 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.LinkedHashMap;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.data.file.FileProcessor;
+import org.apache.openmeetings.data.file.FileUtils;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.file.FileExplorerObject;
+import org.apache.openmeetings.db.dto.file.LibraryPresentation;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.documents.LoadLibraryPresentation;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.util.process.FileImportError;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * Contains methods to import and upload files into the Files section of the
+ * conference room and the personal drive of any user
+ * 
+ * @author sebawagner
+ * @webservice FileService
+ * 
+ */
+public class FileWebService {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			FileWebService.class, OpenmeetingsVariables.webAppRootKey);
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+	@Autowired
+	private FileProcessor fileProcessor;
+	@Autowired
+	private FileUtils fileUtils;
+
+	/**
+	 * 
+	 * Import file from external source
+	 * 
+	 * to upload a file to a room-drive you specify: externalUserId, user if of
+	 * openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 0 parentFolderId = 0
+	 * 
+	 * to upload a file to a private-drive you specify: externalUserId, user if
+	 * of openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 1 parentFolderId = -2
+	 * 
+	 * @param SID The logged in session id with minimum webservice level
+	 * @param externalUserId
+	 *            the external user id =&gt; If the file should goto a private
+	 *            section of any user, this number needs to be set
+	 * @param externalFileId
+	 *            the external file-type to identify the file later
+	 * @param externalType
+	 *            the name of the external system
+	 * @param room_id
+	 *            the room Id, if the file goes to the private folder of an
+	 *            user, you can set a random number here
+	 * @param isOwner
+	 *            specify a 1/true AND parentFolderId==-2 to make the file goto
+	 *            the private section
+	 * @param path
+	 *            http-path where we can grab the file from, the file has to be
+	 *            accessible from the OpenMeetings server
+	 * @param parentFolderId
+	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+	 *            the file goto the private section
+	 * @param fileSystemName
+	 *            the filename =&gt; Important WITH file extension!
+	 *            
+	 * @return - array of file import errors
+	 * @throws AxisFault
+	 */
+	public FileImportError[] importFile(String SID, String externalUserId,
+			Long externalFileId, String externalType, Long room_id,
+			boolean isOwner, String path, Long parentFolderId,
+			String fileSystemName) throws AxisFault {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				URL url = new URL(path);
+				URLConnection uc = url.openConnection();
+				InputStream inputstream = new BufferedInputStream(
+						uc.getInputStream());
+
+				User externalUser = userDao.getExternalUser(externalUserId, externalType);
+
+				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
+				hs.put("user", externalUser);
+
+				ConverterProcessResultList returnError = fileProcessor
+						.processFile(externalUser.getUser_id(), room_id,
+								isOwner, inputstream, parentFolderId,
+								fileSystemName,
+								externalFileId, externalType);
+
+				// Flash cannot read the response of an upload
+				// httpServletResponse.getWriter().print(returnError);
+				hs.put("message", "library");
+				hs.put("action", "newFile");
+				hs.put("fileExplorerItem", fileExplorerItemDao
+						.getFileExplorerItemsById(returnError.getFileExplorerItemId()));
+				hs.put("error", returnError.getLogMessage());
+				hs.put("fileName", returnError.getCompleteName());
+				
+				//FIXME: Send event to UI that there is a new file
+
+				return returnError.convertToFileImportErrors();
+
+			}
+		} catch (Exception err) {
+			log.error("[importFile]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Import file from external source
+	 * 
+	 * to upload a file to a room-drive you specify: internalUserId, user if of
+	 * openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 0 parentFolderId = 0
+	 * 
+	 * to upload a file to a private-drive you specify: internalUserId, user if
+	 * of openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 1 parentFolderId = -2
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param internalUserId
+	 *            the openmeetings user id =&gt; If the file should goto a private
+	 *            section of any user, this number needs to be se
+	 * @param externalFileId
+	 *            the external file-type to identify the file later
+	 * @param externalType
+	 *            the name of the external system
+	 * @param room_id
+	 *            the room Id, if the file goes to the private folder of an
+	 *            user, you can set a random number here
+	 * @param isOwner
+	 *            specify a 1/true AND parentFolderId==-2 to make the file goto
+	 *            the private section
+	 * @param path
+	 *            http-path where we can grab the file from, the file has to be
+	 *            accessible from the OpenMeetings server
+	 * @param parentFolderId
+	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+	 *            the file goto the private section
+	 * @param fileSystemName
+	 *            the filename =&gt; Important WITH file extension!
+	 *            
+	 * @return - array of file import errors
+	 * @throws AxisFault
+	 */
+	public FileImportError[] importFileByInternalUserId(String SID,
+			Long internalUserId, Long externalFileId, String externalType,
+			Long room_id, boolean isOwner, String path, Long parentFolderId,
+			String fileSystemName) throws AxisFault {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				URL url = new URL(path);
+				URLConnection uc = url.openConnection();
+				InputStream inputstream = new BufferedInputStream(
+						uc.getInputStream());
+
+				User internalUser = userDao.get(internalUserId);
+
+				LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>();
+				hs.put("user", internalUser);
+
+				ConverterProcessResultList returnError = fileProcessor
+						.processFile(internalUser.getUser_id(), room_id,
+								isOwner, inputstream, parentFolderId,
+								fileSystemName, 
+								externalFileId, externalType);
+
+				// Flash cannot read the response of an upload
+				// httpServletResponse.getWriter().print(returnError);
+				hs.put("message", "library");
+				hs.put("action", "newFile");
+				hs.put("fileExplorerItem", fileExplorerItemDao
+						.getFileExplorerItemsById(returnError.getFileExplorerItemId()));
+				hs.put("error", returnError);
+				hs.put("fileName", returnError.getCompleteName());
+				
+				//FIXME: Notificate UI of clients of new file
+
+				return returnError.convertToFileImportErrors();
+
+			}
+		} catch (Exception err) {
+			log.error("[importFileByInternalUserId]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * to add a folder to the private drive, set parentFileExplorerItemId = 0
+	 * and isOwner to 1/true and externalUserId/externalUserType to a valid user
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param externalUserId
+	 *            the external file-type to identify the file later
+	 * @param parentFileExplorerItemId
+	 * @param folderName
+	 *            the name of the folder
+	 * @param room_id
+	 *            the room Id, if the file goes to the private folder of an
+	 *            user, you can set a random number here
+	 * @param isOwner
+	 *            specify a 1/true AND parentFolderId==-2 to make the file goto
+	 *            the private section
+	 * @param externalFilesid
+	 *            the external file-type to identify the file later
+	 * @param externalType
+	 *            the name of the external system
+	 *            
+	 * @return - id of folder added
+	 * @throws AxisFault
+	 */
+	public Long addFolderByExternalUserIdAndType(String SID,
+			String externalUserId, Long parentFileExplorerItemId,
+			String folderName, Long room_id, Boolean isOwner,
+			Long externalFilesid, String externalType) throws AxisFault {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				User userExternal = userDao.getExternalUser(externalUserId, externalType);
+
+				Long userId = userExternal.getUser_id();
+
+				log.debug("addFolder " + parentFileExplorerItemId);
+
+				if (parentFileExplorerItemId == -2 && isOwner) {
+					// users_id (OwnerID) => only set if its directly root in
+					// Owner Directory,
+					// other Folders and Files maybe are also in a Home
+					// directory
+					// but just because their parent is
+					return fileExplorerItemDao.add(folderName, "", 0L, userId,
+							room_id, userId, true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Path
+							false, // isStoredWML file
+							false, // isXmlFile
+							externalFilesid, externalType);
+				} else {
+					return fileExplorerItemDao.add(folderName, "",
+							parentFileExplorerItemId, null, room_id, userId,
+							true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Path
+							false, // isStoredWML file
+							false, // isXmlFile
+							externalFilesid, externalType);
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[addFolderByExternalUserIdAndType]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * to add a folder to the private drive, set parentFileExplorerItemId = 0
+	 * and isOwner to 1/true and userId to a valid user
+	 * 
+	 * @param SID The SID of the User. This SID must be marked as logged in
+	 * @param userId the openmeetings user id 
+	 * @param parentFileExplorerItemId specify a parentFolderId==-2 AND isOwner == 1/true AND to make the file goto the private section  
+	 * @param folderName the name of the folder 
+	 * @param room_id the room Id, if the file goes to the private folder of an user, you can set a random number here 
+	 * @param isOwner specify a 1/true AND parentFolderId==-2 to make the file goto the private section 
+	 * @param externalFilesid the external file-type to identify the file later 
+	 * @param externalType the name of the external system
+	 *  
+	 * @return - id of the folder
+	 * @throws AxisFault
+	 */
+	public Long addFolderByUserId(String SID, Long userId,
+			Long parentFileExplorerItemId, String folderName, Long room_id,
+			Boolean isOwner, Long externalFilesid, String externalType)
+			throws AxisFault {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				log.debug("addFolder " + parentFileExplorerItemId);
+
+				if (parentFileExplorerItemId == -2 && isOwner) {
+					// users_id (OwnerID) => only set if its directly root in
+					// Owner Directory,
+					// other Folders and Files maybe are also in a Home
+					// directory
+					// but just because their parent is
+					return fileExplorerItemDao.add(folderName, "", 0L, userId,
+							room_id, userId, true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Path
+							false, // isStoredWML file
+							false, // isXmlFile
+							externalFilesid, externalType);
+				} else {
+					return fileExplorerItemDao.add(folderName, "",
+							parentFileExplorerItemId, null, room_id, userId,
+							true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Path
+							false, // isStoredWML file
+							false, // isXmlFile
+							externalFilesid, externalType);
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[addFolderByUserId]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * Add a folder by the current user - similar to RTMP Call
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param parentFileExplorerItemId
+	 *            parent folder id
+	 * @param fileName
+	 *            the file name
+	 * @param room_id
+	 *            the room id
+	 * @param isOwner
+	 * @return - id of the folder
+	 */
+	public Long addFolderSelf(String SID, Long parentFileExplorerItemId,
+			String fileName, Long room_id, Boolean isOwner) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				log.debug("addFolder " + parentFileExplorerItemId);
+
+				if (parentFileExplorerItemId == 0 && isOwner) {
+					// users_id (OwnerID) => only set if its directly root in
+					// Owner Directory,
+					// other Folders and Files maybe are also in a Home
+					// directory
+					// but just because their parent is
+					return fileExplorerItemDao.add(fileName, "",
+							parentFileExplorerItemId, users_id, room_id,
+							users_id, true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Path
+							false, // isStoredWML file
+							false // isXmlFile
+							, 0L, "");
+				} else {
+					return fileExplorerItemDao.add(fileName, "",
+							parentFileExplorerItemId, null, room_id, users_id,
+							true, // isFolder
+							false, // isImage
+							false, // isPresentation
+							"", // WML Paht
+							false, // isStoredWML file
+							false // isXmlFile
+							, 0L, "");
+				}
+			}
+		} catch (Exception err) {
+			log.error("[getFileExplorerByParent] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * deletes a file by its external Id and type
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param externalFilesid
+	 *            the od of the file or folder
+	 * @param externalType
+	 *            the externalType
+	 * @return - null
+	 */
+	public Long deleteFileOrFolderByExternalIdAndType(String SID,
+			Long externalFilesid, String externalType) throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				fileExplorerItemDao.deleteFileExplorerItemByExternalIdAndType(
+						externalFilesid, externalType);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[deleteFileOrFolderByExternalIdAndType]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * deletes files or folders based on it id
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            the id of the file or folder
+	 * @return - null
+	 */
+	public Long deleteFileOrFolder(String SID, Long fileExplorerItemId)
+			throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				fileExplorerItemDao.deleteFileExplorerItem(fileExplorerItemId);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[deleteFileOrFolder]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * deletes files or folders based on it id
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            the id of the file or folder
+	 * @return - null
+	 */
+	public Long deleteFileOrFolderSelf(String SID, Long fileExplorerItemId)
+			throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				// TODO: Check if user has access or not to the file
+
+				fileExplorerItemDao.deleteFileExplorerItem(fileExplorerItemId);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[deleteFileOrFolder]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Get available import File Extension allowed during import
+	 * 
+	 * @return the array of the import file extensions
+	 * @throws AxisFault
+	 */
+	public String[] getImportFileExtensions() throws AxisFault {
+		try {
+
+			return StoredFile.getExtensions();
+
+		} catch (Exception err) {
+			log.error("[getImportFileExtensions]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Get a LibraryPresentation-Object for a certain file
+	 * 
+	 * @param SID
+	 * @param parentFolder
+	 * 
+	 * @return - LibraryPresentation-Object for a certain file
+	 * @throws AxisFault
+	 */
+	public LibraryPresentation getPresentationPreviewFileExplorer(String SID,
+			String parentFolder) throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				File working_dir = new File(OmFileHelper.getUploadProfilesDir(), parentFolder);
+				log.debug("############# working_dir : " + working_dir);
+
+				File file = new File(working_dir, OmFileHelper.libraryFileName);
+
+				if (!file.exists()) {
+					throw new Exception(file.getCanonicalPath() + ": does not exist ");
+				}
+
+				return LoadLibraryPresentation.parseLibraryFileToObject(file);
+
+			} else {
+
+				throw new Exception("not Authenticated");
+
+			}
+
+		} catch (Exception e) {
+			log.error("[getListOfFilesByAbsolutePath]", e);
+			return null;
+		}
+
+	}
+
+	/**
+	 * Get a File Explorer Object by a given Room and owner id
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param room_id
+	 *            Room id
+	 * @param owner_id
+	 *            Owner id
+	 * @return - File Explorer Object by a given Room and owner id
+	 * @throws AxisFault
+	 */
+	public FileExplorerObject getFileExplorerByRoom(String SID, Long room_id,
+			Long owner_id) throws AxisFault {
+
+		try {
+
+			Long webservice_users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) {
+
+				log.debug("room_id " + room_id);
+
+				FileExplorerObject fileExplorerObject = new FileExplorerObject();
+
+				// Home File List
+				FileExplorerItem[] fList = fileExplorerItemDao
+						.getFileExplorerItemsByOwner(owner_id, 0L);
+
+				long homeFileSize = 0;
+
+				for (FileExplorerItem homeChildExplorerItem : fList) {
+					log.debug("FileExplorerItem fList "
+							+ homeChildExplorerItem.getFileName());
+					homeFileSize += fileUtils
+							.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+				}
+
+				fileExplorerObject.setUserHome(fList);
+				fileExplorerObject.setUserHomeSize(homeFileSize);
+
+				// Public File List
+				FileExplorerItem[] rList = fileExplorerItemDao
+						.getFileExplorerItemsByRoom(room_id, 0L);
+
+				long roomFileSize = 0;
+
+				for (FileExplorerItem homeChildExplorerItem : rList) {
+					log.debug("FileExplorerItem rList "
+							+ homeChildExplorerItem.getFileName());
+					roomFileSize += fileUtils
+							.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+				}
+
+				fileExplorerObject.setRoomHome(rList);
+				fileExplorerObject.setRoomHomeSize(roomFileSize);
+
+				return fileExplorerObject;
+
+			} else {
+
+				throw new Exception("not Authenticated");
+
+			}
+
+		} catch (Exception e) {
+			log.error("[getFileExplorerByRoom]", e);
+			return null;
+		}
+	}
+
+	/**
+	 * Get a File Explorer Object by a given Room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param room_id
+	 *            Room Id
+	 * @return - File Explorer Object by a given Room
+	 * @throws AxisFault
+	 */
+	public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long room_id)
+			throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				log.debug("room_id " + room_id);
+
+				FileExplorerObject fileExplorerObject = new FileExplorerObject();
+
+				// Home File List
+				FileExplorerItem[] fList = fileExplorerItemDao
+						.getFileExplorerItemsByOwner(users_id, 0L);
+
+				long homeFileSize = 0;
+
+				for (FileExplorerItem homeChildExplorerItem : fList) {
+					log.debug("FileExplorerItem fList "
+							+ homeChildExplorerItem.getFileName());
+					homeFileSize += fileUtils
+							.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+				}
+
+				fileExplorerObject.setUserHome(fList);
+				fileExplorerObject.setUserHomeSize(homeFileSize);
+
+				// Public File List
+				FileExplorerItem[] rList = fileExplorerItemDao
+						.getFileExplorerItemsByRoom(room_id, 0L);
+
+				long roomFileSize = 0;
+
+				for (FileExplorerItem homeChildExplorerItem : rList) {
+					log.debug("FileExplorerItem rList "
+							+ homeChildExplorerItem.getFileName());
+					roomFileSize += fileUtils
+							.getSizeOfDirectoryAndSubs(homeChildExplorerItem);
+				}
+
+				fileExplorerObject.setRoomHome(rList);
+				fileExplorerObject.setRoomHomeSize(roomFileSize);
+
+				return fileExplorerObject;
+
+			} else {
+
+				throw new Exception("not Authenticated");
+
+			}
+
+		} catch (Exception e) {
+			log.error("[getFileExplorerByRoomSelf]", e);
+			return null;
+		}
+	}
+
+	/**
+	 * Get FileExplorerItem list by parent folder
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged in
+	 * @param parentFileExplorerItemId
+	 *            the parent folder id
+	 * @param room_id
+	 *            the room id
+	 * @param isOwner
+	 *            true if its a private drive
+	 * @param owner_id
+	 *            the owner id
+	 * @return - FileExplorerItem list by parent folder
+	 * @throws AxisFault
+	 */
+	public FileExplorerItem[] getFileExplorerByParent(String SID,
+			Long parentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Long owner_id) throws AxisFault {
+
+		try {
+
+			Long webservice_users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) {
+
+				log.debug("parentFileExplorerItemId "
+						+ parentFileExplorerItemId);
+
+				if (parentFileExplorerItemId == 0) {
+					if (isOwner) {
+						return fileExplorerItemDao.getFileExplorerItemsByOwner(
+								owner_id, parentFileExplorerItemId);
+					} else {
+						return fileExplorerItemDao.getFileExplorerItemsByRoom(
+								room_id, parentFileExplorerItemId);
+					}
+				} else {
+					return fileExplorerItemDao
+							.getFileExplorerItemsByParent(parentFileExplorerItemId);
+				}
+
+			}
+		} catch (Exception err) {
+			log.error("[getFileExplorerByParent] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * Get FileExplorerItem[] by parent and owner id
+	 * 
+	 * @param SID
+	 *            SID The SID of the User. This SID must be marked as logged in
+	 * @param parentFileExplorerItemId
+	 *            the parent folder id
+	 * @param room_id
+	 *            the room id
+	 * @param isOwner
+	 *            true to request private drive
+	 * @return - list of file explorer items
+	 * @throws AxisFault
+	 */
+	public FileExplorerItem[] getFileExplorerByParentSelf(String SID,
+			Long parentFileExplorerItemId, Long room_id, Boolean isOwner)
+			throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				log.debug("parentFileExplorerItemId "
+						+ parentFileExplorerItemId);
+
+				if (parentFileExplorerItemId == 0) {
+					if (isOwner) {
+						return fileExplorerItemDao.getFileExplorerItemsByOwner(
+								users_id, parentFileExplorerItemId);
+					} else {
+						return fileExplorerItemDao.getFileExplorerItemsByRoom(
+								room_id, parentFileExplorerItemId);
+					}
+				} else {
+					return fileExplorerItemDao
+							.getFileExplorerItemsByParent(parentFileExplorerItemId);
+				}
+
+			}
+		} catch (Exception err) {
+			log.error("[getFileExplorerByParentSelf] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * update a file or folder name
+	 * 
+	 * @param SID
+	 *            SID The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            file or folder id
+	 * @param fileName
+	 *            new file or folder name
+	 * @return - null
+	 * @throws AxisFault
+	 */
+	public Long updateFileOrFolderName(String SID, Long fileExplorerItemId,
+			String fileName) throws AxisFault {
+
+		try {
+
+			Long webservice_users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) {
+
+				log.debug("deleteFileOrFolder " + fileExplorerItemId);
+
+				fileExplorerItemDao.updateFileOrFolderName(fileExplorerItemId,
+						fileName);
+
+			}
+		} catch (Exception err) {
+			log.error("[updateFileOrFolderName] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * update a file or folder name
+	 * 
+	 * @param SID
+	 *            SID The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            file or folder id
+	 * @param fileName
+	 *            new file or folder name
+	 * @return - null
+	 * @throws AxisFault
+	 */
+	public Long updateFileOrFolderNameSelf(String SID, Long fileExplorerItemId,
+			String fileName) throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				// TODO: check if this user is allowed to change this file
+				/*
+				 * FileExplorerItem fileExItem =
+				 * fileExplorerItemDao.getFileExplorerItemsById
+				 * (fileExplorerItemId);
+				 * 
+				 * if (fileExItem.getOwnerId() != null &&
+				 * !fileExItem.getOwnerId().equals(users_id)) { throw new
+				 * Exception(
+				 * "This user is not the owner of the file and not allowed to edit its name"
+				 * ); }
+				 */
+
+				log.debug("deleteFileOrFolder " + fileExplorerItemId);
+
+				fileExplorerItemDao.updateFileOrFolderName(fileExplorerItemId,
+						fileName);
+
+			}
+		} catch (Exception err) {
+			log.error("[updateFileOrFolderNameSelf] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * move a file or folder
+	 * 
+	 * @param SID
+	 *            SID The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            current file or folder id to be moved
+	 * @param newParentFileExplorerItemId
+	 *            new parent folder id
+	 * @param room_id
+	 *            room id
+	 * @param isOwner
+	 *            if true owner id will be set
+	 * @param moveToHome
+	 *            if true move to private drive
+	 * @param owner_id
+	 *            owner id
+	 * @return - null
+	 * @throws AxisFault
+	 */
+	public Long moveFile(String SID, Long fileExplorerItemId,
+			Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Boolean moveToHome, Long owner_id) throws AxisFault {
+
+		try {
+
+			Long webservice_users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(webservice_users_id))) {
+
+				log.debug("deleteFileOrFolder " + fileExplorerItemId);
+
+				fileExplorerItemDao
+						.moveFile(fileExplorerItemId,
+								newParentFileExplorerItemId, room_id, isOwner,
+								owner_id);
+
+				FileExplorerItem fileExplorerItem = fileExplorerItemDao
+						.getFileExplorerItemsById(fileExplorerItemId);
+
+				if (moveToHome) {
+					// set this file and all subfiles and folders the ownerId
+					fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem,
+							owner_id, null);
+
+				} else {
+					// set this file and all subfiles and folders the room_id
+					fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem,
+							null, room_id);
+
+				}
+
+			}
+		} catch (Exception err) {
+			log.error("[moveFile] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * move a file or folder
+	 * 
+	 * @param SID
+	 *            SID The SID of the User. This SID must be marked as logged in
+	 * @param fileExplorerItemId
+	 *            current file or folder id to be moved
+	 * @param newParentFileExplorerItemId
+	 *            new parent folder id
+	 * @param room_id
+	 *            room id
+	 * @param isOwner
+	 *            if true owner id will be set
+	 * @param moveToHome
+	 *            move to private drive
+	 * @return - null
+	 * @throws AxisFault
+	 */
+	public Long moveFileSelf(String SID, Long fileExplorerItemId,
+			Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Boolean moveToHome) throws AxisFault {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				
+				// A test is required that checks if the user is allowed to move the file
+
+				log.debug("moveFileSelf " + fileExplorerItemId);
+
+				fileExplorerItemDao
+						.moveFile(fileExplorerItemId,
+								newParentFileExplorerItemId, room_id, isOwner,
+								users_id);
+
+				FileExplorerItem fileExplorerItem = fileExplorerItemDao
+						.getFileExplorerItemsById(fileExplorerItemId);
+
+				if (moveToHome) {
+					// set this file and all subfiles and folders the ownerId
+					fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem,
+							users_id, null);
+
+				} else {
+					// set this file and all subfiles and folders the room_id
+					fileUtils.setFileToOwnerOrRoomByParent(fileExplorerItem,
+							null, room_id);
+
+				}
+
+			}
+		} catch (Exception err) {
+			log.error("[moveFile] ", err);
+		}
+		return null;
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/FileWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/FileWebServiceFacade.java
new file mode 100644
index 0000000..92a3083
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/FileWebServiceFacade.java
@@ -0,0 +1,323 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dto.file.FileExplorerObject;
+import org.apache.openmeetings.db.dto.file.LibraryPresentation;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.process.FileImportError;
+
+public class FileWebServiceFacade extends BaseWebService {
+
+	/**
+	 * 
+	 * Import file from external source
+	 * 
+	 * to upload a file to a room-drive you specify: externalUserId, user if of
+	 * openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 0 parentFolderId = 0
+	 * 
+	 * to upload a file to a private-drive you specify: externalUserId, user if
+	 * of openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 1 parentFolderId = -2
+	 * 
+	 * @param SID
+	 * @param externalUserId
+	 *            the external user id =&gt; If the file should goto a private
+	 *            section of any user, this number needs to be set
+	 * @param externalFileId
+	 *            the external file-type to identify the file later
+	 * @param externalType
+	 *            the name of the external system
+	 * @param room_id
+	 *            the room Id, if the file goes to the private folder of an
+	 *            user, you can set a random number here
+	 * @param isOwner
+	 *            specify a 1/true AND parentFolderId==-2 to make the file goto
+	 *            the private section
+	 * @param path
+	 *            http-path where we can grab the file from, the file has to be
+	 *            accessible from the OpenMeetings server
+	 * @param parentFolderId
+	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+	 *            the file goto the private section
+	 * @param fileSystemName
+	 *            the filename =&gt; Important WITH file extension!
+	 * @return
+	 * @throws AxisFault
+	 */
+	public FileImportError[] importFile(String SID, String externalUserId,
+			Long externalFileId, String externalType, Long room_id,
+			boolean isOwner, String path, Long parentFolderId,
+			String fileSystemName) throws AxisFault {
+		return getBean(FileWebService.class).importFile(SID, externalUserId,
+				externalFileId, externalType, room_id, isOwner, path,
+				parentFolderId, fileSystemName);
+	}
+
+	/**
+	 * 
+	 * Import file from external source
+	 * 
+	 * to upload a file to a room-drive you specify: internalUserId, user if of
+	 * openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 0 parentFolderId = 0
+	 * 
+	 * to upload a file to a private-drive you specify: internalUserId, user if
+	 * of openmeetings user for which we upload the file room_id = openmeetings
+	 * room id isOwner = 1 parentFolderId = -2
+	 * 
+	 * @param SID
+	 * @param internalUserId
+	 *            the openmeetings user id =&gt; If the file should goto a private
+	 *            section of any user, this number needs to be set
+	 * @param externalFileId
+	 *            the external file-type to identify the file later
+	 * @param externalType
+	 *            the name of the external system
+	 * @param room_id
+	 *            the room Id, if the file goes to the private folder of an
+	 *            user, you can set a random number here
+	 * @param isOwner
+	 *            specify a 1/true AND parentFolderId==-2 to make the file goto
+	 *            the private section
+	 * @param path
+	 *            http-path where we can grab the file from, the file has to be
+	 *            accessible from the OpenMeetings server
+	 * @param parentFolderId
+	 *            specify a parentFolderId==-2 AND isOwner == 1/true AND to make
+	 *            the file goto the private section
+	 * @param fileSystemName
+	 *            the filename =&gt; Important WITH file extension!
+	 * @return
+	 * @throws AxisFault
+	 */
+	public FileImportError[] importFileByInternalUserId(String SID,
+			Long internalUserId, Long externalFileId, String externalType,
+			Long room_id, boolean isOwner, String path, Long parentFolderId,
+			String fileSystemName) throws AxisFault {
+		return getBean(FileWebService.class).importFileByInternalUserId(SID,
+				internalUserId, externalFileId, externalType, room_id, isOwner,
+				path, parentFolderId, fileSystemName);
+	}
+
+	/**
+	 * 
+	 * to add a folder to the private drive, set parentFileExplorerItemId = 0
+	 * and isOwner to 1/true and externalUserId/externalUserType to a valid user
+	 * 
+	 * @param SID
+	 * @param externalUserId
+	 * @param externalUserType
+	 * @param parentFileExplorerItemId
+	 * @param fileName
+	 * @param room_id
+	 * @param isOwner
+	 * @param externalFilesid
+	 * @param externalType
+	 * @return
+	 * @throws AxisFault
+	 */
+	public Long addFolderByExternalUserIdAndType(String SID,
+			String externalUserId, Long parentFileExplorerItemId,
+			String folderName, Long room_id, Boolean isOwner,
+			Long externalFilesid, String externalType) throws AxisFault {
+		return getBean(FileWebService.class).addFolderByExternalUserIdAndType(SID,
+				externalUserId, parentFileExplorerItemId, folderName, room_id,
+				isOwner, externalFilesid, externalType);
+
+	}
+
+	/**
+	 * 
+	 * to add a folder to the private drive, set parentFileExplorerItemId = 0
+	 * and isOwner to 1/true and userId to a valid user
+	 * 
+	 * @param SID
+	 * @param userId
+	 * @param parentFileExplorerItemId
+	 * @param fileName
+	 * @param room_id
+	 * @param isOwner
+	 * @param externalFilesid
+	 * @param externalType
+	 * @return
+	 * @throws AxisFault
+	 */
+	public Long addFolderByUserId(String SID, Long userId,
+			Long parentFileExplorerItemId, String folderName, Long room_id,
+			Boolean isOwner, Long externalFilesid, String externalType)
+			throws AxisFault {
+		return getBean(FileWebService.class).addFolderByUserId(SID, userId,
+				parentFileExplorerItemId, folderName, room_id, isOwner,
+				externalFilesid, externalType);
+	}
+
+	/**
+	 * 
+	 * Add a folder by the current user - similar to RTMP Call
+	 * 
+	 * @param SID
+	 * @param parentFileExplorerItemId
+	 * @param fileName
+	 * @param room_id
+	 * @param isOwner
+	 * @return
+	 */
+	public Long addFolderSelf(String SID, Long parentFileExplorerItemId,
+			String fileName, Long room_id, Boolean isOwner) throws AxisFault {
+		return getBean(FileWebService.class).addFolderSelf(SID,
+				parentFileExplorerItemId, fileName, room_id, isOwner);
+	}
+	
+	public Long addFolderSelfInternal(String SID, Long parentFileExplorerItemId,
+			String fileName, Long roomId, Boolean isOwner) throws AxisFault {
+		return getBean(FileWebService.class).addFolderSelf(SID,
+				parentFileExplorerItemId, fileName, roomId, isOwner);
+	}
+	
+
+	/**
+	 * 
+	 * deletes a file by its external Id and type
+	 * 
+	 * @param SID
+	 * @param externalFilesid
+	 * @param externalType
+	 * @return
+	 */
+	public Long deleteFileOrFolderByExternalIdAndType(String SID,
+			Long externalFilesid, String externalType) throws AxisFault {
+		return getBean(FileWebService.class).deleteFileOrFolderByExternalIdAndType(
+				SID, externalFilesid, externalType);
+	}
+
+	/**
+	 * 
+	 * deletes files or folders based on it id
+	 * 
+	 * @param SID
+	 * @param fileExplorerItemId
+	 * @return
+	 */
+	public Long deleteFileOrFolder(String SID, Long fileExplorerItemId)
+			throws AxisFault {
+		return getBean(FileWebService.class).deleteFileOrFolder(SID,
+				fileExplorerItemId);
+	}
+
+	/**
+	 * 
+	 * deletes files or folders based on it id
+	 * 
+	 * @param SID
+	 * @param fileExplorerItemId
+	 * @return
+	 */
+	public Long deleteFileOrFolderSelf(String SID, Long fileExplorerItemId)
+			throws AxisFault {
+		return getBean(FileWebService.class).deleteFileOrFolderSelf(SID,
+				fileExplorerItemId);
+	}
+
+	public String[] getImportFileExtensions() throws AxisFault {
+		return getBean(FileWebService.class).getImportFileExtensions();
+	}
+
+	public LibraryPresentation getPresentationPreviewFileExplorer(String SID,
+			String parentFolder) throws AxisFault {
+		return getBean(FileWebService.class).getPresentationPreviewFileExplorer(
+				SID, parentFolder);
+	}
+
+	public FileExplorerObject getFileExplorerByRoom(String SID, Long room_id,
+			Long owner_id) throws AxisFault {
+		return getBean(FileWebService.class).getFileExplorerByRoom(SID, room_id,
+				owner_id);
+	}
+
+	public FileExplorerObject getFileExplorerByRoomSelf(String SID, Long room_id)
+			throws AxisFault {
+		return getBean(FileWebService.class)
+				.getFileExplorerByRoomSelf(SID, room_id);
+	}
+	
+	public FileExplorerObject getFileExplorerByRoomSelfInternal(String SID, Long roomId)
+			throws AxisFault {
+		return getBean(FileWebService.class)
+				.getFileExplorerByRoomSelf(SID, roomId);
+	}
+
+	public FileExplorerItem[] getFileExplorerByParent(String SID,
+			Long parentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Long owner_id) throws AxisFault {
+		return getBean(FileWebService.class).getFileExplorerByParent(SID,
+				parentFileExplorerItemId, room_id, isOwner, owner_id);
+	}
+
+	public FileExplorerItem[] getFileExplorerByParentSelf(String SID,
+			Long parentFileExplorerItemId, Long room_id, Boolean isOwner)
+			throws AxisFault {
+		return getBean(FileWebService.class).getFileExplorerByParentSelf(SID,
+				parentFileExplorerItemId, room_id, isOwner);
+	}
+	
+	public FileExplorerItem[] getFileExplorerByParentSelfInternal(String SID,
+			Long parentFileExplorerItemId, Long roomId, Boolean isOwner)
+			throws AxisFault {
+		return getBean(FileWebService.class).getFileExplorerByParentSelf(SID,
+				parentFileExplorerItemId, roomId, isOwner);
+	}
+
+	public Long updateFileOrFolderName(String SID, Long fileExplorerItemId,
+			String fileName) throws AxisFault {
+		return getBean(FileWebService.class).updateFileOrFolderName(SID,
+				fileExplorerItemId, fileName);
+	}
+
+	public Long updateFileOrFolderNameSelf(String SID, Long fileExplorerItemId,
+			String fileName) throws AxisFault {
+		return getBean(FileWebService.class).updateFileOrFolderNameSelf(SID,
+				fileExplorerItemId, fileName);
+	}
+
+	public Long moveFile(String SID, Long fileExplorerItemId,
+			Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Boolean moveToHome, Long owner_id) throws AxisFault {
+		return getBean(FileWebService.class).moveFile(SID, fileExplorerItemId,
+				newParentFileExplorerItemId, room_id, isOwner, moveToHome,
+				owner_id);
+	}
+
+	public Long moveFileSelf(String SID, Long fileExplorerItemId,
+			Long newParentFileExplorerItemId, Long room_id, Boolean isOwner,
+			Boolean moveToHome) throws AxisFault {
+		return getBean(FileWebService.class).moveFileSelf(SID, fileExplorerItemId,
+				newParentFileExplorerItemId, room_id, isOwner, moveToHome);
+	}
+	
+	public Long moveFileSelfInternal(String SID, Long fileExplorerItemId,
+			Long newParentFileExplorerItemId, Long roomId, Boolean isOwner,
+			Boolean moveToHome) throws AxisFault {
+		return getBean(FileWebService.class).moveFileSelf(SID, fileExplorerItemId,
+				newParentFileExplorerItemId, roomId, isOwner, moveToHome);
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/JabberWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/JabberWebService.java
new file mode 100644
index 0000000..1cc38e2
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/JabberWebService.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.remote.ConferenceService;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * This class provides method implementations necessary for OM to Jabber integration.
+ * 
+ * @author solomax
+ * @webservice JabberService
+ *
+ */
+public class JabberWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			JabberWebService.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConferenceService conferenceService;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private RoomDao roomDao;
+
+	/**
+	 * Get List&lt;RoomDTO&gt; of all rooms available to the user.
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from UserService.getSession
+	 * @return List&lt;RoomDTO&gt; of Rooms
+	 */
+	public List<RoomDTO> getAvailableRooms(String SID) {
+		log.debug("getAvailableRooms enter");
+		
+		List<Room> rl = new ArrayList<Room>();
+		List<Room> al = conferenceService.getAppointedMeetingRoomsWithoutType(SID);
+		if (al != null) {
+			rl.addAll(al);
+		}
+
+		List<Room> pbl = conferenceService.getRoomsPublicWithoutType(SID);
+		if (pbl != null) {
+			rl.addAll(pbl);
+		}
+
+		Long users_id = sessiondataDao.checkSession(SID);
+		User u = userDao.get(users_id);
+		for (Organisation_Users ou : u.getOrganisation_users()) {
+			List<RoomOrganisation> rol = conferenceService.getRoomsByOrganisationWithoutType(SID
+					, ou.getOrganisation().getOrganisation_id().longValue());
+			if (rol != null) {
+				for (RoomOrganisation ro : rol) {
+					rl.add(ro.getRoom());
+				}
+			}
+		}
+		List<RoomDTO> result = new ArrayList<RoomDTO>();
+		for (Room r : rl) {
+			r.setCurrentusers(null);
+			result.add(new RoomDTO(r));
+		}
+		return result;
+	}
+
+	/**
+	 * Returns the count of users currently in the Room with given id
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from UserService.getSession
+	 * @param roomId id of the room to get users
+	 * @return number of users as int
+	 */
+	public int getUserCount(String SID, Long roomId) {
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return conferenceService.getRoomClientsListByRoomId(roomId).size();
+		}
+		return -1;
+	}
+
+	/**
+	 * Get invitation hash for the room with given id
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from UserService.getSession
+	 * @param username The name of invited user, will be displayed in the rooms user list
+	 * @param room_id id of the room to get users
+	 * @return hash to enter the room
+	 */
+	public String getInvitationHash(String SID, String username, Long room_id) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			User invitee = userDao.getContact(username, username, username, users_id);
+			Invitation invitation = invitationManager.getInvitation(invitee, roomDao.get(room_id),
+							false, "", Valid.OneTime, userDao.get(users_id), 1L, null, null, null);
+	
+			return ((invitation == null) ? null : invitation.getHash());
+		} else {
+			return "Need Admin Privileges to perfom the Action";
+		}
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/JabberWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/JabberWebServiceFacade.java
new file mode 100644
index 0000000..919bab6
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/JabberWebServiceFacade.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.List;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+
+/**
+ * This class provides method entry points necessary for OM to Jabber integration.
+ * 
+ * @author solomax
+ *
+ */
+public class JabberWebServiceFacade extends BaseWebService {
+	
+	/**
+	 * Get list of all rooms available to the user.
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from {@link UserWebService.getSession}
+	 * @return array of Rooms
+	 * @throws AxisFault 
+	 */
+	public List<RoomDTO> getAvailableRooms(String SID) throws AxisFault {
+		return getBean(JabberWebService.class).getAvailableRooms(SID);
+	}
+
+	/**
+	 * Returns the count of users currently in the Room with given id
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from {@link UserWebService.getSession}
+	 * @param roomId id of the room to get users
+	 * @return number of users as int
+	 * @throws AxisFault 
+	 */
+	public int getUserCount(String SID, Long roomId) throws AxisFault {
+		return getBean(JabberWebService.class).getUserCount(SID, roomId);
+	}
+
+	/**
+	 * Get invitation hash for the room with given id
+	 * No admin rights are necessary for this call
+	 * 
+	 * @param SID The SID from {@link UserWebService.getSession}
+	 * @param username The name of invited user, will be displayed in the rooms user list
+	 * @param room_id id of the room to get users
+	 * @return hash to enter the room
+	 * @throws AxisFault 
+	 */
+	public String getInvitationHash(String SID, String username, Long room_id) throws AxisFault {
+		return getBean(JabberWebService.class)
+				.getInvitationHash(SID, username, room_id);
+	}
+}
\ No newline at end of file
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/RoomCountBean.java b/src/axis/java/org/apache/openmeetings/axis/services/RoomCountBean.java
new file mode 100644
index 0000000..caf558a
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/RoomCountBean.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+public class RoomCountBean {
+	
+	private long roomId;
+	private String roomName;
+	private Integer roomCount;
+	private Integer maxUser;
+	
+	public long getRoomId() {
+		return roomId;
+	}
+	public void setRoomId(long roomId) {
+		this.roomId = roomId;
+	}
+	public String getRoomName() {
+		return roomName;
+	}
+	public void setRoomName(String roomName) {
+		this.roomName = roomName;
+	}
+	public Integer getRoomCount() {
+		return roomCount;
+	}
+	public void setRoomCount(Integer roomCount) {
+		this.roomCount = roomCount;
+	}
+	public Integer getMaxUser() {
+		return maxUser;
+	}
+	public void setMaxUser(Integer maxUser) {
+		this.maxUser = maxUser;
+	}
+	
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/RoomReturn.java b/src/axis/java/org/apache/openmeetings/axis/services/RoomReturn.java
new file mode 100644
index 0000000..e86f4f7
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/RoomReturn.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.Date;
+
+public class RoomReturn {
+
+	private Long room_id;
+	private String name;
+	private String creator;
+	private Date created;
+	private RoomUser[] roomUser;
+
+	public Long getRoom_id() {
+		return room_id;
+	}
+
+	public void setRoom_id(Long roomId) {
+		room_id = roomId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getCreator() {
+		return creator;
+	}
+
+	public void setCreator(String creator) {
+		this.creator = creator;
+	}
+
+	public Date getCreated() {
+		return created;
+	}
+
+	public void setCreated(Date created) {
+		this.created = created;
+	}
+
+	public RoomUser[] getRoomUser() {
+		return roomUser;
+	}
+
+	public void setRoomUser(RoomUser[] roomUser) {
+		this.roomUser = roomUser;
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/RoomUser.java b/src/axis/java/org/apache/openmeetings/axis/services/RoomUser.java
new file mode 100644
index 0000000..042be0a
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/RoomUser.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+public class RoomUser {
+	
+	private String firstname;
+	private String lastname;
+	private String publicSID;
+	private long broadcastId;
+	private Boolean isBroadCasting;
+	private String avsettings;
+	
+	public String getFirstname() {
+		return firstname;
+	}
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+	public String getLastname() {
+		return lastname;
+	}
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+	public Boolean getIsBroadCasting() {
+		return isBroadCasting;
+	}
+	public void setIsBroadCasting(Boolean isBroadCasting) {
+		this.isBroadCasting = isBroadCasting;
+	}
+	public String getAvsettings() {
+		return avsettings;
+	}
+	public void setAvsettings(String avsettings) {
+		this.avsettings = avsettings;
+	}
+	public String getPublicSID() {
+		return publicSID;
+	}
+	public void setPublicSID(String publicSID) {
+		this.publicSID = publicSID;
+	}
+	public long getBroadcastId() {
+		return broadcastId;
+	}
+	public void setBroadcastId(long broadcastId) {
+		this.broadcastId = broadcastId;
+	}
+	
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java
new file mode 100644
index 0000000..339440f
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/RoomWebService.java
@@ -0,0 +1,2182 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.record.RecordingDTO;
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+import org.apache.openmeetings.db.dto.room.RoomSearchResult;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.remote.ConferenceService;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.BeanWrapper;
+import org.springframework.beans.BeanWrapperImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * RoomService contains methods to manipulate rooms and create invitation hash
+ * 
+ * @author sebawagner
+ * @webservice RoomService
+ * 
+ */
+public class RoomWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(RoomWebService.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDao;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDao;
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private FlvRecordingDao flvRecordingDao;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private ConferenceService conferenceService;
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	/**
+	 * Returns an Object of Type RoomsList which contains a list of
+	 * Room-Objects. Every Room-Object contains a Roomtype and all informations
+	 * about that Room. The List of current-users in the room is Null if you get
+	 * them via SOAP. The Roomtype can be 1 for conference rooms or 2 for
+	 * audience rooms.
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param roomtypes_id
+	 * @return - list of public rooms
+	 * @throws AxisFault
+	 */
+	public List<RoomDTO> getRoomsPublic(String SID, Long roomtypes_id) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RoomDTO.list(roomDao.getPublicRooms(roomtypes_id));
+			}
+			return null;
+		} catch (Exception err) {
+			log.error("[getRoomsPublic] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Deletes a flv recording
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param flvRecordingId
+	 *            the id of the recording
+	 *            
+	 * @return - true if recording was deleted
+	 * @throws AxisFault
+	 */
+	public boolean deleteFlvRecording(String SID, Long flvRecordingId) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return flvRecordingDao.delete(flvRecordingId);
+			}
+			return false;
+		} catch (Exception err) {
+			log.error("[deleteFlvRecording] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID The SID of the User. This SID must be marked as Loggedin
+	 * @param externalUserId the externalUserId
+	 * @param externalUsertype the externalUserType
+	 *            
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalUserId(String SID,
+			String externalUserId, String externalUserType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getFlvRecordingByExternalUserId(externalUserId, externalUserType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalUserId] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @param insertedBy
+	 *            the userId that created the recording
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeAndCreator(
+			String SID, String externalRoomType, Long insertedBy)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getFlvRecordingByExternalRoomTypeAndCreator(externalRoomType, insertedBy));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomTypeAndCreator] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeByList(
+			String SID, String externalRoomType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getFlvRecordingByExternalRoomType(externalRoomType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomTypeByList] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as logged-in
+	 * @param externalType
+	 *            externalType specified when creating room or user
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getRecordingsByExternalType(String SID, String externalType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getRecordingsByExternalType(externalType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getRecordingsByExternalType] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Gets a list of flv recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param externalRoomType
+	 *            externalRoomType specified when creating the room
+	 * @return - list of flv recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getFlvRecordingByExternalRoomType(String SID, String externalRoomType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getFlvRecordingByExternalRoomType(externalRoomType));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Get list of recordings
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId
+	 *            the room id
+	 * @return - list of recordings
+	 * @throws AxisFault
+	 */
+	public List<RecordingDTO> getFlvRecordingByRoomId(String SID, Long roomId) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return RecordingDTO.list(flvRecordingDao.getFlvRecordingByRoomId(roomId));
+			}
+
+			return null;
+		} catch (Exception err) {
+			log.error("[getFlvRecordingByExternalRoomType] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * List of available room types
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @return - List of available room types
+	 * @throws AxisFault
+	 */
+	public List<RoomType> getRoomTypes(String SID) throws AxisFault {
+		try {
+			return conferenceService.getRoomTypes(SID);
+		} catch (Exception err) {
+			log.error("[getRoomTypes]", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Returns current users for rooms ids
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param roomId
+	 * @return - current users for rooms ids
+	 * @throws AxisFault
+	 */
+	public List<RoomCountBean> getRoomCounters(String SID, Integer[] roomId) throws AxisFault {
+		List<RoomCountBean> roomBeans = new ArrayList<RoomCountBean>();
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				List<Integer> roomIds = new ArrayList<Integer>();
+
+				if (roomId != null) {
+					for (Integer id : roomId) {
+						if (id != null && id > 0) {
+							log.debug("roomId :: " + id);
+							roomIds.add(id);
+						}
+					}
+				}
+
+				List<Room> rooms = roomManager.getRoomsByIds(roomIds);
+
+				for (Room room : rooms) {
+					RoomCountBean rCountBean = new RoomCountBean();
+					rCountBean.setRoomId(room.getRooms_id());
+					rCountBean.setRoomName(room.getName());
+					rCountBean.setMaxUser(room.getNumberOfPartizipants().intValue());
+					rCountBean.setRoomCount(sessionManager.getClientListByRoom(room.getRooms_id()).size());
+
+					roomBeans.add(rCountBean);
+				}
+
+			} else {
+				log.error("Not authorized");
+			}
+		} catch (Exception err) {
+			log.error("[getRoomTypes]", err);
+			throw new AxisFault(err.getMessage());
+		}
+		return roomBeans;
+	}
+
+	/**
+	 * returns a conference room object
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param rooms_id - the room id
+	 * @return - room with the id given
+	 */
+	public RoomDTO getRoomById(String SID, long rooms_id) {
+		return new RoomDTO(conferenceService.getRoomById(SID, rooms_id));
+	}
+
+	/**
+	 * Returns a object of type RoomReturn
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param rooms_id
+	 * @return - object of type RoomReturn
+	 * @throws AxisFault
+	 */
+	public RoomReturn getRoomWithClientObjectsById(String SID, long rooms_id) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				Room room = roomDao.get(rooms_id);
+
+				RoomReturn roomReturn = new RoomReturn();
+
+				roomReturn.setCreated(room.getStarttime());
+				roomReturn.setCreator(null);
+				roomReturn.setName(room.getName());
+				roomReturn.setRoom_id(room.getRooms_id());
+
+				List<Client> map = sessionManager
+						.getClientListByRoom(room.getRooms_id());
+
+				RoomUser[] roomUsers = new RoomUser[map.size()];
+
+				int i = 0;
+				for (Client rcl : map) {
+					RoomUser roomUser = new RoomUser();
+					roomUser.setFirstname(rcl.getFirstname());
+					roomUser.setLastname(rcl.getLastname());
+					roomUser.setBroadcastId(rcl.getBroadCastID());
+					roomUser.setPublicSID(rcl.getPublicSID());
+					roomUser.setIsBroadCasting(rcl.getIsBroadcasting());
+					roomUser.setAvsettings(rcl.getAvsettings());
+
+					roomUsers[i++] = roomUser;
+				}
+
+				roomReturn.setRoomUser(roomUsers);
+
+				return roomReturn;
+			}
+
+			return null;
+
+		} catch (Exception err) {
+			log.error("[getRoomWithClientObjectsById]", err);
+			throw new AxisFault(err.getMessage());
+		}
+
+	}
+
+	/**
+	 * Returns a List of Objects of Rooms You can use "name" as value for
+	 * orderby or rooms_id
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param start - The id you want to start
+	 * @param max - The maximum you want to get
+	 * @param orderby - The column it will be ordered
+	 * @param asc - Asc or Desc sort ordering
+	 *            
+	 * @return - List of Objects of Rooms
+	 */
+	public RoomSearchResult getRooms(String SID, int start, int max, String orderby, boolean asc) {
+		return new RoomSearchResult(conferenceService.getRooms(SID, start, max, orderby, asc, ""));
+	}
+
+	/**
+	 * Returns a List of Objects of Rooms You can use "name" as value for
+	 * orderby or rooms_id. It also fills the attribute currentUsers in the
+	 * Room-Object
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param start - The id you want to start
+	 * @param max - The maximum you want to get
+	 * @param orderby - The column it will be ordered
+	 * @param asc - Asc or Desc sort ordering
+	 *            
+	 * @return - List of Objects of Rooms
+	 */
+	public RoomSearchResult getRoomsWithCurrentUsers(String SID, int start, int max, String orderby, boolean asc) {
+		return new RoomSearchResult(conferenceService.getRoomsWithCurrentUsers(SID, start, max, orderby, asc));
+	}
+
+	// TODO: Add functions to get Users of a Room
+
+	/**
+	 * Create a conference room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            Name of the Room
+	 * @param roomtypes_id
+	 *            Type of that room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            any comment
+	 * @param numberOfPartizipants
+	 *            the maximum users allowed in this room
+	 * @param ispublic
+	 *            If this room is public (use true if you don't deal with
+	 *            different Organizations)
+	 * @param appointment
+	 *            is it a Calendar Room (use false by default)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time (use false by default)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait untill a Moderator arrives. Use the
+	 *            becomeModerator param in setUserObjectAndGenerateRoomHash to
+	 *            set a user as default Moderator
+	 *            
+	 * @return - id of the room or error code
+	 */
+	public Long addRoomWithModeration(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addRoom(name, roomtypes_id, comment,
+						numberOfPartizipants, ispublic, null, appointment,
+						isDemoRoom, demoTime, isModeratedRoom, null, true,
+						false, true, false //isClosed
+						, "", "", null, null,
+						true,  // allowRecording
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing
+						false, // hideWhiteboard
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModeration] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * this SOAP Method has an additional param to enable or disable the buttons
+	 * to apply for moderation this does only work in combination with the
+	 * room-type restricted
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            Name of the Room
+	 * @param roomtypes_id
+	 *            Type of that room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            any comment
+	 * @param numberOfPartizipants
+	 *            the maximum users allowed in this room
+	 * @param ispublic
+	 *            If this room is public (use true if you don't deal with
+	 *            different Organizations)
+	 * @param appointment
+	 *            is it a Calendar Room (use false by default)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time (use false by default)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait untill a Moderator arrives. Use the
+	 *            becomeModerator param in setUserObjectAndGenerateRoomHash to
+	 *            set a user as default Moderator
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 *            
+	 * @return - id of the room or error code
+	 */
+	public Long addRoomWithModerationAndQuestions(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addRoom(name, roomtypes_id, comment,
+						numberOfPartizipants, ispublic, null, appointment,
+						isDemoRoom, demoTime, isModeratedRoom, null,
+						allowUserQuestions, false, true, false //isClosed
+						, "", "", null,
+						null, 
+						true,  // allowRecording
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing
+						false, // hideWhiteboard
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationAndQuestions] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * 
+	 * adds a new room with options for user questions and audio only
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            Name of the Room
+	 * @param roomtypes_id
+	 *            Type of that room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            any comment
+	 * @param numberOfPartizipants
+	 *            the maximum users allowed in this room
+	 * @param ispublic
+	 *            If this room is public (use true if you don't deal with
+	 *            different Organizations)
+	 * @param appointment
+	 *            is it a Calendar Room (use false by default)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time (use false by default)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator param in setUserObjectAndGenerateRoomHash to
+	 *            set a user as default Moderator
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 * 
+	 * @return - id of the room or error code
+	 * @throws AxisFault
+	 */
+	public Long addRoomWithModerationQuestionsAndAudioType(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions, Boolean isAudioOnly) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addRoom(name, roomtypes_id, comment,
+						numberOfPartizipants, ispublic, null, appointment,
+						isDemoRoom, demoTime, isModeratedRoom, null,
+						allowUserQuestions, isAudioOnly, true, false //isClosed
+						, "", "",
+						null, null, 
+						true,  // allowRecording
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing
+						false, // hideWhiteboard
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+			return -1L;
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationQuestionsAndAudioType] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * 
+	 * adds a new room with options for user questions, audio only and hide
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            Name of the Room
+	 * @param roomtypes_id
+	 *            Type of that room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            any comment
+	 * @param numberOfPartizipants
+	 *            the maximum users allowed in this room
+	 * @param ispublic
+	 *            If this room is public (use true if you don't deal with
+	 *            different Organizations)
+	 * @param appointment
+	 *            is it a Calendar Room (use false by default)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time (use false by default)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator param in setUserObjectAndGenerateRoomHash to
+	 *            set a user as default Moderator
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 * @param hideTopBar
+	 *            hide or show TopBar
+	 * @param hideChat
+	 *            hide or show Chat
+	 * @param hideActivitiesAndActions
+	 *            hide or show Activities And Actions
+	 * @param hideFilesExplorer
+	 *            hide or show Files Explorer
+	 * @param hideActionsMenu
+	 *            hide or show Actions Menu
+	 * @param hideScreenSharing
+	 *            hide or show Screen Sharing
+	 * @param hideWhiteboard
+	 *            hide or show Whiteboard. If whitboard is hidden, video pods
+	 *            and scrollbar appear instead.
+	 *            
+	 * @return - id of the room or error code
+	 * @throws AxisFault
+	 */
+	public Long addRoomWithModerationQuestionsAudioTypeAndHideOptions(
+			String SID, String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions, Boolean isAudioOnly,
+			Boolean hideTopBar, Boolean hideChat,
+			Boolean hideActivitiesAndActions, Boolean hideFilesExplorer,
+			Boolean hideActionsMenu, Boolean hideScreenSharing,
+			Boolean hideWhiteboard) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addRoom(name, roomtypes_id, comment,
+						numberOfPartizipants, ispublic, null, appointment,
+						isDemoRoom, demoTime, isModeratedRoom, null,
+						allowUserQuestions, isAudioOnly, true, false //isClosed
+						, "", "",
+						null, null,
+						true,  // allowRecording
+						hideTopBar, hideChat,
+						hideActivitiesAndActions, hideFilesExplorer,
+						hideActionsMenu, hideScreenSharing, hideWhiteboard,
+						false, false, 
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+			return -1L;
+		} catch (Exception err) {
+			log.error(
+					"[addRoomWithModerationQuestionsAudioTypeAndHideOptions] ",
+					err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Checks if a room with this exteralRoomId + externalRoomType does exist,
+	 * if yes it returns the room id if not, it will create the room and then
+	 * return the room id of the newly created room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            Name of the room
+	 * @param roomtypes_id
+	 *            Type of that room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            any comment
+	 * @param numberOfPartizipants
+	 *            the maximum users allowed in this room
+	 * @param ispublic
+	 *            If this room is public (use true if you don't deal with
+	 *            different Organizations)
+	 * @param appointment
+	 *            is it a Calendar Room? (use false if not sure what that means)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait untill a Moderator arrives. Use the
+	 *            becomeModerator param in setUserObjectAndGenerateRoomHash to
+	 *            set a user as default Moderator
+	 * @param externalRoomId
+	 *            your external room id may set here
+	 * @param externalRoomType
+	 *            you can specify your system-name or type of room here, for
+	 *            example "moodle"
+	 *            
+	 * @return - id of the room or error code
+	 * @throws AxisFault
+	 */
+	public Long getRoomIdByExternalId(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, Long externalRoomId,
+			String externalRoomType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				Room room = conferenceService.getRoomByExternalId(SID,
+						externalRoomId, externalRoomType, roomtypes_id);
+				Long roomId = null;
+				if (room == null) {
+					roomId = roomManager.addExternalRoom(name, roomtypes_id,
+							comment, numberOfPartizipants, ispublic, null,
+							appointment, isDemoRoom, demoTime, isModeratedRoom,
+							null, externalRoomId, externalRoomType, true,
+							false, true, false, "", false, true, false);
+				} else {
+					roomId = room.getRooms_id();
+				}
+				return roomId;
+			}
+
+			return -26L;
+		} catch (Exception err) {
+			log.error("[addRoomWithModeration] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+		// return new Long (-1);
+	}
+
+	/**
+	 * Updates a conference room by its room id
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            the room id to update
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 *            
+	 * @return - id of the room updated or error code
+	 */
+	public Long updateRoomWithModeration(String SID, Long room_id, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.updateRoomInternal(room_id, roomtypes_id,
+						name, ispublic, comment, numberOfPartizipants, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, true, false, true, false, "", "", null, null,
+						true,  // allowRecording
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing
+						false, // hideWhiteboard
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+		} catch (Exception err) {
+			log.error("[updateRoomWithModeration] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            the room id to update
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 *            
+	 * @return - id of the room updated or error code
+	 */
+	public Long updateRoomWithModerationAndQuestions(String SID, Long room_id,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.updateRoomInternal(room_id, roomtypes_id,
+						name, ispublic, comment, numberOfPartizipants, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, allowUserQuestions, false, true, false, "", "",
+						null, null, 
+						true,  // allowRecording 
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing
+						false, // hideWhiteboard
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+		} catch (Exception err) {
+			log.error("[updateRoomWithModerationAndQuestions] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * update room with options for user questions, audio only and hide
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            the room id to update
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            number of participants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment (use false if not sure what that
+	 *            means)
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 * @param hideTopBar
+	 *            hide or show TopBar
+	 * @param hideChat
+	 *            hide or show Chat
+	 * @param hideActivitiesAndActions
+	 *            hide or show Activities And Actions
+	 * @param hideFilesExplorer
+	 *            hide or show Files Explorer
+	 * @param hideActionsMenu
+	 *            hide or show Actions Menu
+	 * @param hideScreenSharing
+	 *            hide or show Screen Sharing
+	 * @param hideWhiteboard
+	 *            hide or show Whiteboard. If whitboard is hidden, video pods
+	 *            and scrollbar appear instead.
+	 *            
+	 * @return - id of the room updated or error code
+	 */
+	public Long updateRoomWithModerationQuestionsAudioTypeAndHideOptions(
+			String SID, Long room_id, String name, Long roomtypes_id,
+			String comment, Long numberOfPartizipants, Boolean ispublic,
+			Boolean appointment, Boolean isDemoRoom, Integer demoTime,
+			Boolean isModeratedRoom, Boolean allowUserQuestions,
+			Boolean isAudioOnly, Boolean hideTopBar, Boolean hideChat,
+			Boolean hideActivitiesAndActions, Boolean hideFilesExplorer,
+			Boolean hideActionsMenu, Boolean hideScreenSharing,
+			Boolean hideWhiteboard) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.updateRoomInternal(room_id, roomtypes_id,
+						name, ispublic, comment, numberOfPartizipants, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, allowUserQuestions, isAudioOnly, true, false, "", "",
+						null, null,
+						true,  // allowRecording
+						hideTopBar, hideChat,
+						hideActivitiesAndActions, hideFilesExplorer,
+						hideActionsMenu, hideScreenSharing, hideWhiteboard,
+						false, // showMicrophoneStatus
+						false, // chatModerated
+						false, // chatOpened
+						false, // filesOpened
+						false, // autoVideoSelect
+						false //sipEnabled
+						);
+			}
+		} catch (Exception err) {
+			log.error("[updateRoomWithModerationQuestionsAudioTypeAndHideOptions] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Delete a room by its room id
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param rooms_id
+	 * 
+	 * @return - id of the room deleted
+	 */
+	public Long deleteRoom(String SID, long rooms_id) {
+		return conferenceService.deleteRoom(SID, rooms_id);
+	}
+
+	/**
+	 * kick all uses of a certain room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 *            _Admin
+	 * @param room_id
+	 *            the room id
+	 *            
+	 * @return - true if user was kicked, false otherwise
+	 */
+	public Boolean kickUser(String SID_Admin, Long room_id) {
+		try {
+			Boolean salida = false;
+
+			salida = userManager.kickUserByStreamId(SID_Admin, room_id);
+
+			if (salida == null)
+				salida = false;
+
+			return salida;
+		} catch (Exception err) {
+			log.error("[kickUser]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Add a new conference room with option to set the external room type, the
+	 * external room type should be set if multiple applications use the same
+	 * OpenMeetings instance
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 *            
+	 * @return - id of the room added or error code
+	 */
+	public Long addRoomWithModerationAndExternalType(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, String externalRoomType) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addExternalRoom(name, roomtypes_id,
+						comment, numberOfPartizipants, ispublic, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, null, externalRoomType, true, false, true, false, "",
+						false, true, false);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationAndExternalType] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Adds a new room with options for audio only
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 *            
+	 * @return - id of the room added or error code
+	 */
+	public Long addRoomWithModerationExternalTypeAndAudioType(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, Boolean allowUserQuestions,
+			Boolean isAudioOnly) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addExternalRoom(name, roomtypes_id,
+						comment, numberOfPartizipants, ispublic, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, null, externalRoomType, allowUserQuestions,
+						isAudioOnly, true, false, "", false, true, false);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationExternalTypeAndAudioType] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Adds a new room with options for recording
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 * @param waitForRecording
+	 *            if the users in the room will get a notification that they
+	 *            should start recording before they do a conference
+	 * @param allowRecording
+	 *            if the recording option is available or not
+	 *            
+	 * @return - id of the room added or error code
+	 */
+	public Long addRoomWithModerationAndRecordingFlags(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, String externalRoomType,
+			Boolean allowUserQuestions, Boolean isAudioOnly,
+			Boolean waitForRecording, boolean allowRecording) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addExternalRoom(name, roomtypes_id,
+						comment, numberOfPartizipants, ispublic, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, null, externalRoomType, allowUserQuestions,
+						isAudioOnly, true, false, "", waitForRecording,
+						allowRecording, false);
+			} else {
+				return -26L;
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationAndRecordingFlags] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Add a conference room with options to disable the top menu bar in the
+	 * conference room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 * @param allowUserQuestions
+	 *            enable or disable the button to allow users to apply for
+	 *            moderation
+	 * @param isAudioOnly
+	 *            enable or disable the video / or audio-only
+	 * @param waitForRecording
+	 *            if the users in the room will get a notification that they
+	 *            should start recording before they do a conference
+	 * @param allowRecording
+	 *            if the recording option is available or not
+	 * @param hideTopBar
+	 *            if the top bar in the conference room is visible or not
+	 *            
+	 * @return - id of the room added or error code
+	 */
+	public Long addRoomWithModerationExternalTypeAndTopBarOption(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, Boolean allowUserQuestions,
+			Boolean isAudioOnly, Boolean waitForRecording,
+			boolean allowRecording, Boolean hideTopBar) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				return roomManager.addExternalRoom(name, roomtypes_id,
+						comment, numberOfPartizipants, ispublic, null,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						null, null, externalRoomType, allowUserQuestions,
+						isAudioOnly, true, false, "", waitForRecording,
+						allowRecording, hideTopBar);
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModerationExternalTypeAndTopBarOption] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * 
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin a
+	 *            valid Session Token
+	 * @param username
+	 *            the username of the User that he will get
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param validFromDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validFromTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param validToDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validToTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String getInvitationHash(String SID, String username, Long room_id,
+			Boolean isPasswordProtected, String invitationpass, Integer valid,
+			String validFromDate, String validFromTime, String validToDate,
+			String validToTime) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				Date dFrom = null;
+				Date dTo = null;
+
+				if (valid == 2) {
+					Integer validFromHour = Integer.valueOf(
+							validFromTime.substring(0, 2)).intValue();
+					Integer validFromMinute = Integer.valueOf(
+							validFromTime.substring(3, 5)).intValue();
+
+					Integer validToHour = Integer.valueOf(
+							validToTime.substring(0, 2)).intValue();
+					Integer validToMinute = Integer.valueOf(
+							validToTime.substring(3, 5)).intValue();
+
+					log.info("validFromHour: " + validFromHour);
+					log.info("validFromMinute: " + validFromMinute);
+
+					Date fromDate = CalendarPatterns.parseDate(validFromDate); // dd.MM.yyyy
+					Date toDate = CalendarPatterns.parseDate(validToDate); // dd.MM.yyyy
+
+					Calendar calFrom = Calendar.getInstance();
+					calFrom.setTime(fromDate);
+					calFrom.set(calFrom.get(Calendar.YEAR),
+							calFrom.get(Calendar.MONTH),
+							calFrom.get(Calendar.DATE), validFromHour,
+							validFromMinute, 0);
+
+					Calendar calTo = Calendar.getInstance();
+					calTo.setTime(toDate);
+					calTo.set(calTo.get(Calendar.YEAR),
+							calTo.get(Calendar.MONTH),
+							calTo.get(Calendar.DATE), validToHour,
+							validToMinute, 0);
+
+					dFrom = calFrom.getTime();
+					dTo = calTo.getTime();
+
+					log.info("validFromDate: "
+							+ CalendarPatterns
+									.getDateWithTimeByMiliSeconds(dFrom));
+					log.info("validToDate: "
+							+ CalendarPatterns
+									.getDateWithTimeByMiliSeconds(dTo));
+				}
+				User invitee = userDao.getContact(username, username, username, users_id);
+				Invitation invitation = invitationManager.getInvitation(invitee, roomDao.get(room_id),
+								isPasswordProtected, invitationpass, Valid.fromInt(valid)
+								, userDao.get(users_id), 1L, dFrom, dTo, null);
+
+				if (invitation != null) {
+					return invitation.getHash();
+				} else {
+					return "Sys - Error";
+				}
+			} else {
+				return "Need Admin Privileges to perfom the Action";
+			}
+		} catch (Exception err) {
+			log.error("[sendInvitationHash] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin a
+	 *            valid Session Token
+	 * @param username
+	 *            the Username of the User that he will get
+	 * @param message
+	 *            the Message in the Email Body send with the invitation if
+	 *            sendMail is true
+	 * @param email
+	 *            the Email to send the invitation to if sendMail is true
+	 * @param subject
+	 *            the subject of the Email send with the invitation if sendMail
+	 *            is true
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param conferencedomain
+	 *            the domain of the room (keep empty)
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param validFromDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validFromTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param validToDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validToTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param language_id
+	 *            the language id of the EMail that is send with the invitation
+	 *            if sendMail is true
+	 * @param sendMail
+	 *            if sendMail is true then the RPC-Call will send the invitation
+	 *            to the email
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String sendInvitationHash(String SID, String username,
+			String message, String email, String subject,
+			Long room_id, String conferencedomain, Boolean isPasswordProtected,
+			String invitationpass, Integer valid, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Long language_id, Boolean sendMail) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				Date dFrom = null;
+				Date dTo = null;
+
+				if (valid == 2) {
+					Integer validFromHour = Integer.valueOf(
+							validFromTime.substring(0, 2)).intValue();
+					Integer validFromMinute = Integer.valueOf(
+							validFromTime.substring(3, 5)).intValue();
+
+					Integer validToHour = Integer.valueOf(
+							validToTime.substring(0, 2)).intValue();
+					Integer validToMinute = Integer.valueOf(
+							validToTime.substring(3, 5)).intValue();
+
+					log.info("validFromHour: " + validFromHour);
+					log.info("validFromMinute: " + validFromMinute);
+
+					Date fromDate = CalendarPatterns.parseDate(validFromDate); // dd.MM.yyyy
+					Date toDate = CalendarPatterns.parseDate(validToDate); // dd.MM.yyyy
+
+					Calendar calFrom = Calendar.getInstance();
+					calFrom.setTime(fromDate);
+					calFrom.set(calFrom.get(Calendar.YEAR),
+							calFrom.get(Calendar.MONTH),
+							calFrom.get(Calendar.DATE), validFromHour,
+							validFromMinute, 0);
+
+					Calendar calTo = Calendar.getInstance();
+					calTo.setTime(toDate);
+					calTo.set(calTo.get(Calendar.YEAR),
+							calTo.get(Calendar.MONTH),
+							calTo.get(Calendar.DATE), validToHour,
+							validToMinute, 0);
+
+					dFrom = calFrom.getTime();
+					dTo = calTo.getTime();
+
+					log.info("validFromDate: "
+							+ CalendarPatterns
+									.getDateWithTimeByMiliSeconds(dFrom));
+					log.info("validToDate: "
+							+ CalendarPatterns
+									.getDateWithTimeByMiliSeconds(dTo));
+				}
+
+				User invitee = userDao.getContact(email, users_id);
+				Invitation invitation = invitationManager.getInvitation(invitee, roomDao.get(room_id),
+								isPasswordProtected, invitationpass, Valid.fromInt(valid)
+								, userDao.get(users_id), language_id,
+								dFrom, dTo, null);
+
+				if (invitation != null) {
+					if (sendMail) {
+						invitationManager.sendInvitionLink(invitation, MessageType.Create, subject, message, false);
+					}
+
+					return invitation.getHash();
+				} else {
+					return "Sys - Error";
+				}
+			} else {
+				return "Need Admin Privileges to perfom the Action";
+			}
+
+		} catch (Exception err) {
+			log.error("[sendInvitationHash] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin a
+	 *            valid Session Token
+	 * @param username
+	 *            the Username of the User that he will get
+	 * @param message
+	 *            the Message in the Email Body send with the invitation if
+	 *            sendMail is true
+	 * @param email
+	 *            the Email to send the invitation to if sendMail is true
+	 * @param subject
+	 *            the subject of the Email send with the invitation if sendMail
+	 *            is true
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param conferencedomain
+	 *            the domain of the room (keep empty)
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param fromDate
+	 *            Date as Date Object only of interest if valid is type 2
+	 * @param toDate
+	 *            Date as Date Object only of interest if valid is type 2
+	 * @param language_id
+	 *            the language id of the EMail that is send with the invitation
+	 *            if sendMail is true
+	 * @param sendMail
+	 *            if sendMail is true then the RPC-Call will send the invitation
+	 *            to the email
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String sendInvitationHashWithDateObject(String SID, String username,
+			String message, String email, String subject,
+			Long room_id, String conferencedomain, Boolean isPasswordProtected,
+			String invitationpass, Integer valid, Date fromDate, Date toDate,
+			Long language_id, Boolean sendMail) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				Calendar calFrom = Calendar.getInstance();
+				calFrom.setTime(fromDate);
+
+				Calendar calTo = Calendar.getInstance();
+				calTo.setTime(toDate);
+
+				Date dFrom = calFrom.getTime();
+				Date dTo = calTo.getTime();
+
+				log.info("validFromDate: "
+						+ CalendarPatterns.getDateWithTimeByMiliSeconds(dFrom));
+				log.info("validToDate: "
+						+ CalendarPatterns.getDateWithTimeByMiliSeconds(dTo));
+
+				User invitee = userDao.getContact(email, users_id);
+				Invitation invitation = invitationManager.getInvitation(invitee, roomDao.get(room_id),
+								isPasswordProtected, invitationpass, Valid.fromInt(valid)
+								, userDao.get(users_id), language_id, dFrom, dTo, null);
+
+				if (invitation != null) {
+					if (sendMail) {
+						invitationManager.sendInvitionLink(invitation, MessageType.Create, subject, message, false);
+					}
+
+					return invitation.getHash();
+				} else {
+					return "Sys - Error";
+				}
+			} else {
+				return "Need Admin Privileges to perfom the Action";
+			}
+		} catch (Exception err) {
+			log.error("[sendInvitationHash] ", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Return a RoomReturn Object with information of the current users of a
+	 * conference room
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param start
+	 *            The id you want to start
+	 * @param max
+	 *            The maximum you want to get
+	 * @param orderby
+	 *            The column it will be ordered
+	 * @param asc
+	 *            Asc or Desc sort ordering
+	 *            
+	 * @return - RoomReturn Objects with information of the current users
+	 * @throws AxisFault
+	 */
+	public List<RoomReturn> getRoomsWithCurrentUsersByList(String SID,
+			int start, int max, String orderby, boolean asc) throws AxisFault {
+		try {
+			List<Room> rooms = conferenceService
+					.getRoomsWithCurrentUsersByList(SID, start, max, orderby,
+							asc);
+
+			List<RoomReturn> returnObjList = new LinkedList<RoomReturn>();
+
+			for (Room room : rooms) {
+
+				RoomReturn roomReturn = new RoomReturn();
+
+				roomReturn.setRoom_id(room.getRooms_id());
+				roomReturn.setName(room.getName());
+
+				roomReturn.setCreator("SOAP");
+				roomReturn.setCreated(room.getStarttime());
+
+				RoomUser[] rUser = new RoomUser[room.getCurrentusers().size()];
+
+				int i = 0;
+				for (Client rcl : room.getCurrentusers()) {
+
+					RoomUser ru = new RoomUser();
+					ru.setFirstname(rcl.getFirstname());
+					ru.setLastname(rcl.getLastname());
+
+					rUser[i] = ru;
+
+					i++;
+				}
+
+				roomReturn.setRoomUser(rUser);
+
+				returnObjList.add(roomReturn);
+
+			}
+
+			return returnObjList;
+		} catch (Exception err) {
+			log.error("setUserObjectWithExternalUser", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Return a RoomReturn Object with information of the current users of a
+	 * conference room with option to search for special external room types
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param start
+	 *            The id you want to start
+	 * @param max
+	 *            The maximum you want to get
+	 * @param orderby
+	 *            The column it will be ordered
+	 * @param asc
+	 *            Asc or Desc sort ordering
+	 * @param externalRoomType
+	 *            the external room type
+	 *            
+	 * @return - list of room return objects
+	 * @throws AxisFault
+	 */
+	public List<RoomReturn> getRoomsWithCurrentUsersByListAndType(String SID,
+			int start, int max, String orderby, boolean asc,
+			String externalRoomType) throws AxisFault {
+		try {
+			List<Room> rooms = conferenceService
+					.getRoomsWithCurrentUsersByListAndType(SID, start, max,
+							orderby, asc, externalRoomType);
+
+			List<RoomReturn> returnObjList = new LinkedList<RoomReturn>();
+
+			for (Room room : rooms) {
+
+				RoomReturn roomReturn = new RoomReturn();
+
+				roomReturn.setRoom_id(room.getRooms_id());
+				roomReturn.setName(room.getName());
+
+				roomReturn.setCreator("SOAP");
+				roomReturn.setCreated(room.getStarttime());
+
+				RoomUser[] rUser = new RoomUser[room.getCurrentusers().size()];
+
+				int i = 0;
+				for (Client rcl : room.getCurrentusers()) {
+
+					RoomUser ru = new RoomUser();
+					ru.setFirstname(rcl.getFirstname());
+					ru.setLastname(rcl.getLastname());
+
+					rUser[i] = ru;
+
+					i++;
+				}
+
+				roomReturn.setRoomUser(rUser);
+
+				returnObjList.add(roomReturn);
+
+			}
+
+			return returnObjList;
+		} catch (Exception err) {
+			log.error("setUserObjectWithExternalUser", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Adds a conference room that is only available for a period of time
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param name
+	 *            new name of the room
+	 * @param roomtypes_id
+	 *            new type of room (1 = Conference, 2 = Audience, 3 =
+	 *            Restricted, 4 = Interview)
+	 * @param comment
+	 *            new comment
+	 * @param numberOfPartizipants
+	 *            new numberOfParticipants
+	 * @param ispublic
+	 *            is public
+	 * @param appointment
+	 *            if the room is an appointment
+	 * @param isDemoRoom
+	 *            is it a Demo Room with limited time? (use false if not sure
+	 *            what that means)
+	 * @param demoTime
+	 *            time in seconds after the user will be logged out (only
+	 *            enabled if isDemoRoom is true)
+	 * @param isModeratedRoom
+	 *            Users have to wait until a Moderator arrives. Use the
+	 *            becomeModerator parameter in setUserObjectAndGenerateRoomHash
+	 *            to set a user as default Moderator
+	 * @param externalRoomType
+	 *            the external room type (can be used to identify different
+	 *            external systems using same OpenMeetings instance)
+	 * @param validFromDate
+	 *            valid from as Date format: dd.MM.yyyy
+	 * @param validFromTime
+	 *            valid to as time format: mm:hh
+	 * @param validToDate
+	 *            valid to Date format: dd.MM.yyyy
+	 * @param validToTime
+	 *            valid to time format: mm:hh
+	 * @param isPasswordProtected
+	 *            If the links send via EMail to invited people is password
+	 *            protected
+	 * @param password
+	 *            Password for Invitations send via Mail
+	 * @param reminderTypeId
+	 *            1=none, 2=simple mail, 3=ICAL
+	 * @param redirectURL
+	 *            URL Users will be lead to if the Conference Time is elapsed
+	 *            
+	 * @return - id of the room in case of success, error code otherwise
+	 * @throws AxisFault
+	 */
+	public Long addRoomWithModerationAndExternalTypeAndStartEnd(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Boolean isPasswordProtected, String password, Long reminderTypeId,
+			String redirectURL) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				int validFromHour = Integer.valueOf(validFromTime.substring(0, 2)).intValue();
+				int validFromMinute = Integer.valueOf(validFromTime.substring(3, 5)).intValue();
+
+				int validToHour = Integer.valueOf(validToTime.substring(0, 2)).intValue();
+				int validToMinute = Integer.valueOf(validToTime.substring(3, 5)).intValue();
+
+				log.info("validFromHour: " + validFromHour);
+				log.info("validFromMinute: " + validFromMinute);
+
+				Date fromDate = CalendarPatterns.parseDateBySeparator(validFromDate); // dd.MM.yyyy
+				Date toDate = CalendarPatterns.parseDateBySeparator(validToDate); // dd.MM.yyyy
+
+				Calendar calFrom = Calendar.getInstance();
+				calFrom.setTime(fromDate);
+				calFrom.set(calFrom.get(Calendar.YEAR),
+						calFrom.get(Calendar.MONTH),
+						calFrom.get(Calendar.DATE), validFromHour,
+						validFromMinute, 0);
+
+				Calendar calTo = Calendar.getInstance();
+				calTo.setTime(toDate);
+				calTo.set(calTo.get(Calendar.YEAR), calTo.get(Calendar.MONTH),
+						calTo.get(Calendar.DATE), validToHour, validToMinute, 0);
+
+				Date dFrom = calFrom.getTime();
+				Date dTo = calTo.getTime();
+
+				log.info("validFromDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(dFrom));
+				log.info("validToDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(dTo));
+
+				Long rooms_id = roomManager.addExternalRoom(name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						null, appointment, isDemoRoom, demoTime,
+						isModeratedRoom, null, null, externalRoomType, false, // allowUserQuestions
+						false, // isAudioOnly
+						true,  // allowFontStyles
+						false, // isClosed
+						redirectURL, false, true, false);
+
+				if (rooms_id <= 0) {
+					return rooms_id;
+				}
+
+				Appointment a = new Appointment();
+				a.setTitle("appointmentName");
+				a.setOwner(userDao.get(users_id));
+				a.setLocation("appointmentLocation");
+				a.setDescription("appointmentDescription");
+				a.setStart(dFrom);
+				a.setEnd(dTo);
+				a.setCategory(appointmentCategoryDao.get(1L));
+				a.setRemind(appointmentReminderTypDao.get(reminderTypeId));
+				a.setRoom(roomDao.get(rooms_id));
+				a.setPasswordProtected(isPasswordProtected);
+				a.setPassword(password);
+				a.setLanguageId(1L); //TODO check
+				appointmentDao.update(a, users_id); //FIXME verify !!!
+
+				return rooms_id;
+
+			} else {
+				return -2L;
+			}
+		} catch (Exception err) {
+			log.error("[addRoomWithModeration] ", err);
+
+			throw new AxisFault(err.getMessage());
+		}
+		// return new Long(-1);
+		// return numberOfPartizipants;
+	}
+
+	/**
+	 * Add a meeting member to a certain room. This is the same as adding an
+	 * external user to a event in the calendar.
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            The Room Id the meeting member is going to be added
+	 * @param firstname
+	 *            The first name of the meeting member
+	 * @param lastname
+	 *            The last name of the meeting member
+	 * @param email
+	 *            The email of the Meeting member
+	 * @param language_id
+	 *            The ID of the language, for the email that is send to the
+	 *            meeting member
+	 *            
+	 * @return - id of the member in case of success, error code otherwise
+	 * @throws AxisFault
+	 */
+	public Long addMeetingMemberRemindToRoom(String SID, Long room_id,
+			String firstname, String lastname, String email, Long language_id) throws AxisFault {
+		return addExternalMeetingMemberRemindToRoom(SID, room_id, firstname, lastname, email, language_id, null, null);
+	}
+
+	/**
+	 * Add a meeting member to a certain room. This is the same as adding an
+	 * external user to a event in the calendar. with a certain time zone
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            The Room Id the meeting member is going to be added
+	 * @param firstname
+	 *            The first name of the meeting member
+	 * @param lastname
+	 *            The last name of the meeting member
+	 * @param email
+	 *            The email of the Meeting member
+	 * @param language_id
+	 *            The ID of the language, for the email that is send to the
+	 *            meeting member
+	 * @param jNameTimeZone
+	 *            name of the timezone
+	 * @param invitorName
+	 *            name of invitation creators
+	 *            
+	 * @return - id of the member in case of success, error code otherwise
+	 * @throws AxisFault
+	 */
+	public Long addExternalMeetingMemberRemindToRoom(String SID, Long room_id,
+			String firstname, String lastname, String email, Long language_id, String jNameTimeZone, String invitorName)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				Appointment a = appointmentLogic.getAppointmentByRoom(room_id);
+
+				if (email == null || a == null) {
+					return -1L;
+				}
+				for (MeetingMember mm : a.getMeetingMembers()) {
+					if (email.equals(mm.getUser().getAdresses().getEmail())) {
+						return mm.getId();
+					}
+				}
+				MeetingMember mm = new MeetingMember();
+				mm.setAppointment(a);
+				mm.setUser(userDao.getContact(email, firstname, lastname, language_id, jNameTimeZone, users_id));
+				a.getMeetingMembers().add(mm);
+				appointmentDao.update(a, users_id);
+
+				return mm.getId(); //FIXME check to return ID
+			} else {
+				return -2L;
+			}
+		} catch (Exception err) {
+			log.error("[addExternalMeetingMemberRemindToRoom] ", err);
+
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Method to remotely close or open rooms. If a room is closed all users
+	 * inside the room and all users that try to enter it will be redirected to
+	 * the redirectURL that is defined in the Room-Object.
+	 * 
+	 * Returns positive value if authentication was successful.
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param room_id
+	 *            the room id
+	 * @param status
+	 *            false = close, true = open
+	 *            
+	 * @return - 1 in case of success, -2 otherwise
+	 * @throws AxisFault
+	 */
+	public int closeRoom(String SID, Long room_id, Boolean status)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			log.debug("closeRoom 1 " + room_id);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				log.debug("closeRoom 2 " + status);
+
+				roomManager.closeRoom(room_id, status);
+
+				if (status) {
+					Map<String, String> message = new HashMap<String, String>();
+					message.put("message", "roomClosed");
+					scopeApplicationAdapter.sendMessageByRoomAndDomain(room_id,
+							message);
+				}
+				return 1;
+
+			} else {
+				return -2;
+			}
+		} catch (Exception err) {
+			log.error("[closeRoom] ", err);
+
+			throw new AxisFault(err.getMessage());
+		}
+
+	}
+
+	/**
+	 * Method to update arbitrary room parameter.
+	 * 
+	 * @param SID The SID of the User. This SID must be marked as logged in
+	 * @param room_id the room id
+	 * @param paramName the name of parameter to be updated, please NOTE rooms_id is not updatable as well as fields of type {@link Date} and {@link List}
+	 * @param paramValue the value to be set, please use "type id" to set room type 
+	 * @return 1 in case of success, -2 if permissions are insufficient
+	 * @throws AxisFault if any error occurred
+	 */
+	public int modifyRoomParameter(String SID, Long room_id, String paramName, String paramValue)
+			throws AxisFault {
+		try {
+			if ("rooms_id".equals(paramName)) {
+				throw new AxisFault("Non modifiable parameter");
+			}
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				log.debug(String.format("modifyRoomParameter[%s]: %s = %s", room_id, paramName, paramValue));
+				Room r = roomDao.get(room_id);
+				BeanWrapper rw = new BeanWrapperImpl(r);
+				Class<?> valueClass = rw.getPropertyType(paramName);
+				Object val = null;
+				//don't like this code
+				if (valueClass.isAssignableFrom(String.class)) {
+					val = paramValue;
+				} else if (valueClass.isAssignableFrom(Boolean.class)) {
+					val = Boolean.parseBoolean(paramValue);
+				} else if (valueClass.isAssignableFrom(RoomType.class)) {
+					val = roomTypeDao.get(Long.parseLong(paramValue));
+				} else if (valueClass.isAssignableFrom(Long.class)) {
+					val = Long.parseLong(paramValue);
+				} else if (valueClass.isAssignableFrom(Integer.class)) {
+					val = Integer.parseInt(paramValue);
+				}
+				rw.setPropertyValue(paramName, val);
+				roomDao.update(r, users_id);
+			} else {
+				return -2;
+			}
+			return 1;
+		} catch (Exception err) {
+			log.error("[modifyRoomParameter] ", err);
+
+			throw new AxisFault(err.getMessage());
+		}
+	}
+	
+	/**
+	 * Adds a room to an organization
+	 * 
+	 * @param SID - The SID of the User. This SID must be marked as Loggedin
+	 * @param rooms_id - Id of room to be added
+	 * @param organisation_id - Id of organisation that the room is being paired with
+	 * 
+	 * @return Id of the relation created, null or -1 in case of the error
+	 */
+	public Long addRoomToOrg(String SID, Long rooms_id, Long organisation_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				if (null == roomManager.getRoomsOrganisationByOrganisationIdAndRoomId(organisation_id, rooms_id)) {
+					return roomManager.addRoomToOrganisation(rooms_id, organisation_id);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[addRoomToOrg]", err);
+		}
+		return new Long(-1);
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/RoomWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/RoomWebServiceFacade.java
new file mode 100644
index 0000000..ac0e177
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/RoomWebServiceFacade.java
@@ -0,0 +1,519 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dto.record.RecordingDTO;
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+import org.apache.openmeetings.db.dto.room.RoomSearchResult;
+import org.apache.openmeetings.db.entity.room.RoomType;
+
+public class RoomWebServiceFacade extends BaseWebService {
+
+	public List<RoomDTO> getRoomsPublic(String SID, Long roomtypes_id) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomsPublic(SID, roomtypes_id);
+	}
+
+	/**
+	 * Deletes a flv recording
+	 * 
+	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
+	 * @param flvRecordingId
+	 *            the id of the recording
+	 * @return
+	 * @throws AxisFault
+	 */
+	public boolean deleteFlvRecording(String SID, Long flvRecordingId)
+			throws AxisFault {
+		return getBean(RoomWebService.class).deleteFlvRecording(SID,
+				flvRecordingId);
+	}
+
+	public List<RecordingDTO> getFlvRecordingByExternalUserId(String SID,
+			String externalUserId, String externalUserType) throws AxisFault {
+		return getBean(RoomWebService.class).getFlvRecordingByExternalUserId(SID, externalUserId, externalUserType);
+	}
+
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeAndCreator(
+			String SID, String externalRoomType, Long insertedBy)
+			throws AxisFault {
+		return getBean(RoomWebService.class)
+				.getFlvRecordingByExternalRoomTypeAndCreator(SID,
+						externalRoomType, insertedBy);
+	}
+
+	public List<RecordingDTO> getFlvRecordingByExternalRoomTypeByList(String SID, String externalRoomType) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.getFlvRecordingByExternalRoomTypeByList(SID, externalRoomType);
+	}
+
+	public List<RecordingDTO> getRecordingsByExternalType(String SID, String externalType) throws AxisFault {
+		return getBean(RoomWebService.class).getRecordingsByExternalType(SID, externalType);
+	}
+
+	public List<RecordingDTO> getFlvRecordingByExternalRoomType(String SID, String externalRoomType) throws AxisFault {
+		return getBean(RoomWebService.class).getFlvRecordingByExternalRoomType(SID, externalRoomType);
+	}
+
+	public List<RecordingDTO> getFlvRecordingByRoomId(String SID, Long roomId) throws AxisFault {
+		return getBean(RoomWebService.class).getFlvRecordingByRoomId(SID, roomId);
+	}
+
+	public List<RoomType> getRoomTypes(String SID) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomTypes(SID);
+	}
+
+	public List<RoomCountBean> getRoomCounters(String SID, Integer[] roomId) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomCounters(SID, roomId);
+	}
+
+	public RoomDTO getRoomById(String SID, long rooms_id) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomById(SID, rooms_id);
+	}
+
+	public RoomReturn getRoomWithClientObjectsById(String SID, long rooms_id)
+			throws AxisFault {
+		return getBean(RoomWebService.class).getRoomWithClientObjectsById(SID,
+				rooms_id);
+	}
+
+	public RoomSearchResult getRooms(String SID, int start, int max, String orderby, boolean asc) throws AxisFault {
+		return getBean(RoomWebService.class).getRooms(SID, start, max, orderby, asc);
+	}
+
+	public RoomSearchResult getRoomsWithCurrentUsers(String SID, int start, int max, String orderby , boolean asc) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomsWithCurrentUsers(SID, start, max, orderby, asc);
+	}
+
+	public Long addRoomWithModeration(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom) throws AxisFault {
+		return getBean(RoomWebService.class).addRoomWithModeration(SID, name,
+				roomtypes_id, comment, numberOfPartizipants, ispublic,
+				appointment, isDemoRoom, demoTime, isModeratedRoom);
+	}
+
+	/**
+	 * this SOAP Method has an additional param to enable or disable the buttons
+	 * to apply for moderation this does only work in combination with the
+	 * room-type restricted
+	 * 
+	 * @param SID
+	 * @param name
+	 * @param roomtypes_id
+	 * @param comment
+	 * @param numberOfPartizipants
+	 * @param ispublic
+	 * @param appointment
+	 * @param isDemoRoom
+	 * @param demoTime
+	 * @param isModeratedRoom
+	 * @param allowUserQuestions
+	 * @return
+	 */
+	public Long addRoomWithModerationAndQuestions(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions) throws AxisFault {
+		return getBean(RoomWebService.class).addRoomWithModerationAndQuestions(
+				SID, name, roomtypes_id, comment, numberOfPartizipants,
+				ispublic, appointment, isDemoRoom, demoTime, isModeratedRoom,
+				allowUserQuestions);
+	}
+
+	public Long addRoomWithModerationQuestionsAndAudioType(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions, Boolean isAudioOnly) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.addRoomWithModerationQuestionsAndAudioType(SID, name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						allowUserQuestions, isAudioOnly);
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @param name
+	 * @param roomtypes_id
+	 * @param comment
+	 * @param numberOfPartizipants
+	 * @param ispublic
+	 * @param appointment
+	 * @param isDemoRoom
+	 * @param demoTime
+	 * @param isModeratedRoom
+	 * @param externalRoomId
+	 * @param externalUserType
+	 * @return
+	 */
+	public Long getRoomIdByExternalId(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, Long externalRoomId,
+			String externalRoomType) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomIdByExternalId(SID, name,
+				roomtypes_id, comment, numberOfPartizipants, ispublic,
+				appointment, isDemoRoom, demoTime, isModeratedRoom,
+				externalRoomId, externalRoomType);
+	}
+
+	public Long updateRoomWithModeration(String SID, Long room_id, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom) throws AxisFault {
+		return getBean(RoomWebService.class).updateRoomWithModeration(SID,
+				room_id, name, roomtypes_id, comment, numberOfPartizipants,
+				ispublic, appointment, isDemoRoom, demoTime, isModeratedRoom);
+	}
+
+	public Long updateRoomWithModerationAndQuestions(String SID, Long room_id,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions) throws AxisFault {
+		return getBean(RoomWebService.class).updateRoomWithModerationAndQuestions(
+				SID, room_id, name, roomtypes_id, comment,
+				numberOfPartizipants, ispublic, appointment, isDemoRoom,
+				demoTime, isModeratedRoom, allowUserQuestions);
+	}
+
+	public Long updateRoomWithModerationQuestionsAudioTypeAndHideOptions(
+			String SID, Long room_id, String name, Long roomtypes_id,
+			String comment, Long numberOfPartizipants, Boolean ispublic,
+			Boolean appointment, Boolean isDemoRoom, Integer demoTime,
+			Boolean isModeratedRoom, Boolean allowUserQuestions,
+			Boolean isAudioOnly, Boolean hideTopBar, Boolean hideChat,
+			Boolean hideActivitiesAndActions, Boolean hideFilesExplorer,
+			Boolean hideActionsMenu, Boolean hideScreenSharing,
+			Boolean hideWhiteboard) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.updateRoomWithModerationQuestionsAudioTypeAndHideOptions(SID,
+						room_id, name, roomtypes_id, comment,
+						numberOfPartizipants, ispublic, appointment,
+						isDemoRoom, demoTime, isModeratedRoom,
+						allowUserQuestions, isAudioOnly, hideTopBar, hideChat,
+						hideActivitiesAndActions, hideFilesExplorer,
+						hideActionsMenu, hideScreenSharing, hideWhiteboard);
+
+	}
+
+	public Long deleteRoom(String SID, long rooms_id) throws AxisFault {
+		return getBean(RoomWebService.class).deleteRoom(SID, rooms_id);
+	}
+
+	public Boolean kickUser(String SID_Admin, Long room_id) throws AxisFault {
+		return getBean(RoomWebService.class).kickUser(SID_Admin, room_id);
+	}
+
+	public Long addRoomWithModerationAndExternalType(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, String externalRoomType)
+			throws AxisFault {
+		return getBean(RoomWebService.class).addRoomWithModerationAndExternalType(
+				SID, name, roomtypes_id, comment, numberOfPartizipants,
+				ispublic, appointment, isDemoRoom, demoTime, isModeratedRoom,
+				externalRoomType);
+	}
+
+	public Long addRoomWithModerationExternalTypeAndAudioType(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, Boolean allowUserQuestions,
+			Boolean isAudioOnly) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.addRoomWithModerationExternalTypeAndAudioType(SID, name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						externalRoomType, allowUserQuestions, isAudioOnly);
+	}
+
+	public Long addRoomWithModerationAndRecordingFlags(String SID, String name,
+			Long roomtypes_id, String comment, Long numberOfPartizipants,
+			Boolean ispublic, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom, String externalRoomType,
+			Boolean allowUserQuestions, Boolean isAudioOnly,
+			Boolean waitForRecording, Boolean allowRecording) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.addRoomWithModerationAndRecordingFlags(SID, name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						externalRoomType, allowUserQuestions, isAudioOnly,
+						waitForRecording, allowRecording);
+	}
+
+	public Long addRoomWithModerationExternalTypeAndTopBarOption(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, Boolean allowUserQuestions,
+			Boolean isAudioOnly, Boolean waitForRecording,
+			Boolean allowRecording, Boolean hideTopBar) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.addRoomWithModerationExternalTypeAndTopBarOption(SID, name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						externalRoomType, allowUserQuestions, isAudioOnly,
+						waitForRecording, allowRecording, hideTopBar);
+	}
+
+	public Long addRoomWithModerationQuestionsAudioTypeAndHideOptions(
+			String SID, String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			Boolean allowUserQuestions, Boolean isAudioOnly,
+			Boolean hideTopBar, Boolean hideChat,
+			Boolean hideActivitiesAndActions, Boolean hideFilesExplorer,
+			Boolean hideActionsMenu, Boolean hideScreenSharing,
+			Boolean hideWhiteboard) throws AxisFault {
+		return getBean(RoomWebService.class).addRoomWithModerationQuestionsAudioTypeAndHideOptions(SID, name, roomtypes_id, comment, numberOfPartizipants, ispublic, appointment, isDemoRoom, demoTime, isModeratedRoom, allowUserQuestions, isAudioOnly, hideTopBar, hideChat, hideActivitiesAndActions, hideFilesExplorer, hideActionsMenu, hideScreenSharing, hideWhiteboard);
+	}
+	
+	/**
+	 * 
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            a valid Session Token
+	 * @param username
+	 *            the username of the User that he will get
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param validFromDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validFromTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param validToDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validToTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String getInvitationHash(String SID, String username, Long room_id,
+			Boolean isPasswordProtected, String invitationpass, Integer valid,
+			String validFromDate, String validFromTime, String validToDate,
+			String validToTime) throws AxisFault {
+		return getBean(RoomWebService.class).getInvitationHash(SID, username,
+				room_id, isPasswordProtected, invitationpass, valid,
+				validFromDate, validFromTime, validToDate, validToTime);
+
+	}
+
+	/**
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            a valid Session Token
+	 * @param username
+	 *            the Username of the User that he will get
+	 * @param message
+	 *            the Message in the Email Body send with the invitation if
+	 *            sendMail is true
+	 * @param email
+	 *            the Email to send the invitation to if sendMail is true
+	 * @param subject
+	 *            the subject of the Email send with the invitation if sendMail
+	 *            is true
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param conferencedomain
+	 *            the domain of the room (keep empty)
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param validFromDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validFromTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param validToDate
+	 *            Date in Format of dd.mm.yyyy only of interest if valid is type
+	 *            2
+	 * @param validToTime
+	 *            time in Format of hh:mm only of interest if valid is type 2
+	 * @param language_id
+	 *            the language id of the EMail that is send with the invitation
+	 *            if sendMail is true
+	 * @param sendMail
+	 *            if sendMail is true then the RPC-Call will send the invitation
+	 *            to the email
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String sendInvitationHash(String SID, String username,
+			String message, String email, String subject,
+			Long room_id, String conferencedomain, Boolean isPasswordProtected,
+			String invitationpass, Integer valid, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Long language_id, Boolean sendMail) throws AxisFault {
+		return getBean(RoomWebService.class).sendInvitationHash(SID, username,
+				message, email, subject, room_id, conferencedomain,
+				isPasswordProtected, invitationpass, valid, validFromDate,
+				validFromTime, validToDate, validToTime, language_id, sendMail);
+	}
+
+	/**
+	 * Create a Invitation hash and optionally send it by mail the From to Date
+	 * is as String as some SOAP libraries do not accept Date Objects in SOAP
+	 * Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
+	 * leading zero's)
+	 * 
+	 * @param SID
+	 *            a valid Session Token
+	 * @param username
+	 *            the Username of the User that he will get
+	 * @param message
+	 *            the Message in the Email Body send with the invitation if
+	 *            sendMail is true
+	 * @param email
+	 *            the Email to send the invitation to if sendMail is true
+	 * @param subject
+	 *            the subject of the Email send with the invitation if sendMail
+	 *            is true
+	 * @param room_id
+	 *            the conference room id of the invitation
+	 * @param conferencedomain
+	 *            the domain of the room (keep empty)
+	 * @param isPasswordProtected
+	 *            if the invitation is password protected
+	 * @param invitationpass
+	 *            the password for accessing the conference room via the
+	 *            invitation hash
+	 * @param valid
+	 *            the type of validation for the hash 1: endless, 2: from-to
+	 *            period, 3: one-time
+	 * @param fromDate
+	 *            Date as Date Object only of interest if valid is type 2
+	 * @param toDate
+	 *            Date as Date Object only of interest if valid is type 2
+	 * @param language_id
+	 *            the language id of the EMail that is send with the invitation
+	 *            if sendMail is true
+	 * @param sendMail
+	 *            if sendMail is true then the RPC-Call will send the invitation
+	 *            to the email
+	 * @return a HASH value that can be made into a URL with
+	 *         http://$OPENMEETINGS_HOST
+	 *         :$PORT/openmeetings/?invitationHash="+invitationsHash;
+	 * @throws AxisFault
+	 */
+	public String sendInvitationHashWithDateObject(String SID, String username,
+			String message, String email, String subject,
+			Long room_id, String conferencedomain, Boolean isPasswordProtected,
+			String invitationpass, Integer valid, Date fromDate, Date toDate,
+			Long language_id, Boolean sendMail) throws AxisFault {
+		return getBean(RoomWebService.class).sendInvitationHashWithDateObject(SID,
+				username, message, email, subject, room_id,
+				conferencedomain, isPasswordProtected, invitationpass, valid,
+				fromDate, toDate, language_id, sendMail);
+	}
+
+	public List<RoomReturn> getRoomsWithCurrentUsersByList(String SID,
+			int start, int max, String orderby, boolean asc) throws AxisFault {
+		return getBean(RoomWebService.class).getRoomsWithCurrentUsersByList(SID,
+				start, max, orderby, asc);
+	}
+
+	public List<RoomReturn> getRoomsWithCurrentUsersByListAndType(String SID,
+			int start, int max, String orderby, boolean asc,
+			String externalRoomType) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.getRoomsWithCurrentUsersByListAndType(SID, start, max,
+						orderby, asc, externalRoomType);
+	}
+
+	public Long addRoomWithModerationAndExternalTypeAndStartEnd(String SID,
+			String name, Long roomtypes_id, String comment,
+			Long numberOfPartizipants, Boolean ispublic, Boolean appointment,
+			Boolean isDemoRoom, Integer demoTime, Boolean isModeratedRoom,
+			String externalRoomType, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Boolean isPasswordProtected, String password, Long reminderTypeId,
+			String redirectURL) throws AxisFault {
+		return getBean(RoomWebService.class)
+				.addRoomWithModerationAndExternalTypeAndStartEnd(SID, name,
+						roomtypes_id, comment, numberOfPartizipants, ispublic,
+						appointment, isDemoRoom, demoTime, isModeratedRoom,
+						externalRoomType, validFromDate, validFromTime,
+						validToDate, validToTime, isPasswordProtected,
+						password, reminderTypeId, redirectURL);
+	}
+
+	public Long addMeetingMemberRemindToRoom(String SID, Long room_id,
+			String firstname, String lastname, String email, String phone, Long language_id) throws AxisFault {
+		return getBean(RoomWebService.class).addMeetingMemberRemindToRoom(SID,
+				room_id, firstname, lastname, email, language_id);
+	}
+
+	public Long addExternalMeetingMemberRemindToRoom(String SID, Long room_id,
+			String firstname, String lastname, String email, Long language_id, String jNameTimeZone, String invitorName)
+			throws AxisFault {
+		return getBean(RoomWebService.class).addExternalMeetingMemberRemindToRoom(
+				SID, room_id, firstname, lastname, email, language_id, jNameTimeZone, invitorName);
+	}
+
+	public int closeRoom(String SID, Long room_id, Boolean status)
+			throws AxisFault {
+		return getBean(RoomWebService.class).closeRoom(SID, room_id, status);
+	}
+
+	public int modifyRoomParameter(String SID, Long room_id, String paramName, String paramValue) throws AxisFault {
+		return getBean(RoomWebService.class).modifyRoomParameter(SID, room_id, paramName, paramValue);
+	}
+	
+	public Long addRoomToOrg(String SID, Long rooms_id, Long organisation_id) throws AxisFault {
+		return getBean(RoomWebService.class).addRoomToOrg(SID, rooms_id, organisation_id);
+	}
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/ServerWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/ServerWebService.java
new file mode 100644
index 0000000..5fc960a
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/ServerWebService.java
@@ -0,0 +1,173 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * This class provides method implementations necessary for OM to manage servers
+ * participating in cluster.
+ * 
+ * @author solomax, sebawagner
+ * @webservice ServerService
+ * 
+ */
+public class ServerWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ServerWebService.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private ServerDao serversDao;
+
+	/**
+	 * Method to retrieve the list of the servers participating in cluster
+	 * 
+	 * @param SID
+	 *            - session id to identify the user making request
+	 * @param start
+	 *            - server index to start with
+	 * @param max
+	 *            - Maximum server count
+	 * @return The list of servers participating in cluster
+	 */
+	public Server[] getServers(String SID, int start, int max) throws AxisFault {
+		log.debug("getServers enter");
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			return serversDao.get(start, max).toArray(new Server[0]);
+		} else {
+			log.warn("Insuffisient permissions");
+			return null;
+		}
+	}
+
+	/**
+	 * Method to retrieve the total count of the servers participating in
+	 * cluster
+	 * 
+	 * @param SID
+	 *            - session id to identify the user making request
+	 * @return total count of the servers participating in cluster
+	 */
+	public int getServerCount(String SID) throws AxisFault {
+		log.debug("getServerCount enter");
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			return (int) serversDao.count();
+		} else {
+			log.warn("Insuffisient permissions");
+			return -1;
+		}
+	}
+
+	/**
+	 * Method to add/update server
+	 * 
+	 * @param SID
+	 *            - session id to identify the user making request
+	 * @param id
+	 *            - the id of the server to save
+	 * @param name
+	 *            - the name of the server to save
+	 * @param address
+	 *            - the address(DNS name or IP) of the server to save
+	 * @param port
+	 *            - the http port of the slave
+	 * @param user
+	 *            - REST user to access the slave
+	 * @param pass
+	 *            - REST pass to access the slave
+	 * @param webapp
+	 *            - webapp name of the OpenMeetings instance
+	 * @param protocol
+	 *            - protocol to access the OpenMeetings instance
+	 * @param active
+	 *            - if the server currently participates in the cluster or not
+	 * @param comment
+	 *            - comment for the server
+	 * @return the id of saved server
+	 */
+	public long saveServer(String SID, long id, String name, String address,
+			int port, String user, String pass, String webapp, String protocol,
+			Boolean active, String comment) throws AxisFault {
+		log.debug("saveServerCount enter");
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			Server s = serversDao.get(id);
+			if (s == null) {
+				s = new Server();
+			}
+			s.setName(name);
+			s.setAddress(address);
+			s.setPort(port);
+			s.setUser(user);
+			s.setPass(pass);
+			s.setWebapp(webapp);
+			s.setProtocol(protocol);
+			s.setActive(active);
+			s.setComment(comment);
+			return serversDao.update(s, users_id).getId();
+		} else {
+			log.warn("Insuffisient permissions");
+			return -1;
+		}
+	}
+
+	/**
+	 * Method to delete server
+	 * 
+	 * @param SID
+	 *            - session id to identify the user making request
+	 * @param id
+	 *            - the id of the server to delete
+	 * @return true if the server was deleted, false otherwise
+	 */
+	public boolean deleteServer(String SID, long id) throws AxisFault {
+		log.debug("saveServerCount enter");
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			Server s = serversDao.get(id);
+			if (s != null) {
+				serversDao.delete(s, users_id);
+				return true;
+			}
+		} else {
+			log.warn("Insuffisient permissions");
+		}
+		return false;
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/ServerWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/ServerWebServiceFacade.java
new file mode 100644
index 0000000..af5c40b
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/ServerWebServiceFacade.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.entity.server.Server;
+
+public class ServerWebServiceFacade extends BaseWebService {
+
+	/**
+	 * Proxy method please see
+	 * {@link ServerWebService#getServers(String, int, int)}
+	 */
+	public Server[] getServers(String SID, int start, int max) throws AxisFault {
+		return getBean(ServerWebService.class).getServers(SID, start, max);
+	}
+
+	/**
+	 * Proxy method please see {@link ServerWebService#getServerCount(String)}
+	 */
+	public int getServerCount(String SID) throws AxisFault {
+		return getBean(ServerWebService.class).getServerCount(SID);
+	}
+
+	/**
+	 * Proxy method please see
+	 * {@link ServerWebService#saveServer(String, long, String, String, int, String, String, String, String, Boolean, String)}
+	 */
+	public long saveServer(String SID, long id, String name, String address,
+			int port, String user, String pass, String webapp, String protocol,
+			Boolean active, String comment) throws AxisFault {
+		return getBean(ServerWebService.class).saveServer(SID, id, name, address, port,
+				user, pass, webapp, protocol, active, comment);
+	}
+
+	/**
+	 * Proxy method please see
+	 * {@link ServerWebService#deleteServer(String, long)}
+	 */
+	public boolean deleteServer(String SID, long id) throws AxisFault {
+		return getBean(ServerWebService.class).deleteServer(SID, id);
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java b/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java
new file mode 100644
index 0000000..6dd0cd8
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/UserWebService.java
@@ -0,0 +1,1128 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.ErrorResult;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.user.UserSearchResult;
+import org.apache.openmeetings.db.entity.basic.ErrorType;
+import org.apache.openmeetings.db.entity.basic.ErrorValue;
+import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.remote.MainService;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * The Service contains methods to login and create hash to directly enter
+ * conference rooms, recordings or the application in general
+ * 
+ * @author sebawagner
+ * @webservice UserService
+ * 
+ */
+public class UserWebService {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			UserWebService.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private UserManager userManagement;
+	@Autowired
+	private ErrorDao errorDao;
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private OrganisationUserDao orgUserDao;
+	@Autowired
+	private SOAPLoginDao soapLoginDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private MainService mainService;
+	@Autowired
+	private FieldLanguagesValuesDao labelDao;
+
+	/**
+	 * load this session id before doing anything else Returns an Object of Type
+	 * Sessiondata, this contains a sessionId, use that sessionId in all Methods
+	 * 
+	 * @return - creates new session
+	 */
+	public Sessiondata getSession() {
+		log.debug("SPRING LOADED getSession -- ");
+		return mainService.getsessiondata();
+	}
+
+	/**
+	 * Auth function, use the SID you get by getSession, return positive means
+	 * logged-in, if negative its an ErrorCode, you have to invoke the Method
+	 * getErrorByCode to get the Text-Description of that ErrorCode
+	 * 
+	 * @param SID - The SID from getSession
+	 * @param username - Username from OpenMeetings, the user has to have Admin-rights
+	 * @param userpass - Userpass from OpenMeetings
+	 *            
+	 * @return - id of the logged in user, -1 in case of the error
+	 */
+	public Long loginUser(String SID, String username, String userpass) throws AxisFault {
+		try {
+			log.debug("Login user SID : " + SID);
+			User u = userDao.login(username, userpass);
+			if (u == null) {
+				return -1L;
+			}
+			
+			Boolean bool = sessiondataDao.updateUser(SID, u.getUser_id(), false, u.getLanguage_id());
+			if (bool == null) {
+				// Exception
+				return -1L;
+			} else if (!bool) {
+				// invalid Session-Object
+				return -35L;
+			}
+			
+			return u.getUser_id();
+		} catch (OmException oe) {
+			if (oe.getCode() != null) {
+				return oe.getCode();
+			}
+		} catch (Exception err) {
+			log.error("[loginUser]", err);
+		}
+		return -1L;
+	}
+
+	/**
+	 * loads an Error-Object. If a Method returns a negative Result, its an
+	 * Error-id, it needs a language_id to specify in which language you want to
+	 * display/read the error-message. English has the Language-ID one, for
+	 * different one see the list of languages
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param errorid
+	 *            the error id (negative Value here!)
+	 * @param langId
+	 *            The id of the language
+	 *            
+	 * @return - error with the code given
+	 */
+	public ErrorResult getErrorByCode(String SID, long errorid, long langId) {
+		try {
+			if (errorid < 0) {
+				ErrorValue eValues = errorDao.get(-1 * errorid);
+				if (eValues != null) {
+					ErrorType eType = errorDao.getErrorType(eValues.getErrortype_id());
+					log.debug("eValues.getFieldvalues_id() = " + eValues.getFieldvalues_id());
+					log.debug("eValues.getErrorType() = " + eType);
+					String eValue = labelDao.getString(eValues.getFieldvalues_id(), langId);
+					String tValue = labelDao.getString(eType.getFieldvalues_id(), langId);
+					if (eValue != null) {
+						return new ErrorResult(errorid, eValue, tValue);
+					}
+				}
+			} else {
+				return new ErrorResult(errorid, "Error ... please check your input", "Error");
+			}
+		} catch (Exception err) {
+			log.error("[getErrorByCode] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Adds a new User like through the Frontend, but also does activates the
+	 * Account To do SSO see the methods to create a hash and use those ones!
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param userpass
+	 *            any userpass
+	 * @param lastname
+	 *            any lastname
+	 * @param firstname
+	 *            any firstname
+	 * @param email
+	 *            any email
+	 * @param additionalname
+	 *            any additionalname
+	 * @param street
+	 *            any street
+	 * @param zip
+	 *            any zip
+	 * @param fax
+	 *            any fax
+	 * @param states_id
+	 *            a valid states_id
+	 * @param town
+	 *            any town
+	 * @param language_id
+	 *            the language_id
+	 *            
+	 * @return - id of the user added or error code
+	 * @throws AxisFault
+	 */
+	public Long addNewUser(String SID, String username, String userpass,
+			String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				String jName_timeZone = configurationDao.getConfValue("default.timezone", String.class, "");
+
+				Long user_id = userManagement.registerUser(username, userpass,
+						lastname, firstname, email, new Date(), street,
+						additionalname, fax, zip, states_id, town, language_id,
+						"", false, true, // generate SIP Data if the config is enabled
+						jName_timeZone);
+
+				if (user_id == null || user_id < 0) {
+					return user_id;
+				}
+
+				User user = userDao.get(user_id);
+
+				// activate the User
+				user.getRights().add(Right.Dashboard);
+				user.getRights().add(Right.Login);
+				user.getRights().add(Right.Room);
+				user.setUpdatetime(new Date());
+
+				userDao.update(user, users_id);
+
+				return user_id;
+
+			} else {
+				return new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("addNewUser", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Adds a new User like through the Frontend, but also does activates the
+	 * Account
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param userpass
+	 *            any userpass
+	 * @param lastname
+	 *            any lastname
+	 * @param firstname
+	 *            any firstname
+	 * @param email
+	 *            any email
+	 * @param additionalname
+	 *            any additionalname
+	 * @param street
+	 *            any street
+	 * @param zip
+	 *            any zip
+	 * @param fax
+	 *            any fax
+	 * @param states_id
+	 *            a valid states_id
+	 * @param town
+	 *            any town
+	 * @param language_id
+	 *            the language_id
+	 * @param jNameTimeZone
+	 *            the name of the timezone for the user
+	 *            
+	 * @return - id of the user added or the error code
+	 * @throws AxisFault
+	 */
+	public Long addNewUserWithTimeZone(String SID, String username,
+			String userpass, String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id, String jNameTimeZone) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				Long user_id = userManagement.registerUser(username, userpass,
+						lastname, firstname, email, new Date(), street,
+						additionalname, fax, zip, states_id, town, language_id,
+						"", false, true, // generate
+											// SIP
+											// Data
+											// if
+											// the
+											// config
+											// is
+											// enabled
+						jNameTimeZone); 
+
+				if (user_id == null || user_id < 0) {
+					return user_id;
+				}
+
+				User user = userDao.get(user_id);
+
+				// activate the User
+				user.getRights().add(Right.Login);
+				user.setUpdatetime(new Date());
+
+				userDao.update(user, users_id);
+
+				return user_id;
+
+			} else {
+				return new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("addNewUserWithTimeZone", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Adds a new User like through the Frontend, but also does activates the
+	 * Account, sends NO email (no matter what you configured) and sets the
+	 * users external user id and type
+	 * 
+	 * Use the methods to create a hash for SSO, creating users is not required
+	 * for SSO
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param userpass
+	 *            any userpass
+	 * @param lastname
+	 *            any lastname
+	 * @param firstname
+	 *            any firstname
+	 * @param email
+	 *            any email
+	 * @param additionalname
+	 *            any additionalname
+	 * @param street
+	 *            any street
+	 * @param zip
+	 *            any zip
+	 * @param fax
+	 *            any fax
+	 * @param states_id
+	 *            a valid states_id
+	 * @param town
+	 *            any town
+	 * @param language_id
+	 *            the language_id
+	 * @param jNameTimeZone
+	 *            the name of the timezone for the user
+	 * @param externalUserId
+	 *            externalUserId
+	 * @param externalUserType
+	 *            externalUserType
+	 *            
+	 * @return - id of user added or error code
+	 * @throws AxisFault
+	 */
+	public Long addNewUserWithExternalType(String SID, String username,
+			String userpass, String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id,
+			String jNameTimeZone, String externalUserId, String externalUserType)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+
+				User testUser = userDao.getExternalUser(externalUserId, externalUserType);
+
+				if (testUser != null) {
+					throw new Exception("User does already exist!");
+				}
+
+				// This will send no email to the users
+				Long user_id = userManagement.registerUserNoEmail(username,
+						userpass, lastname, firstname, email, new Date(),
+						street, additionalname, fax, zip, states_id, town,
+						language_id, "", false, true, // generate SIP Data if the config is enabled
+						jNameTimeZone);
+
+				if (user_id == null || user_id < 0) {
+					return user_id;
+				}
+
+				User user = userDao.get(user_id);
+
+				// activate the User
+				user.getRights().add(Right.Login);
+				user.setUpdatetime(new Date());
+				user.setExternalUserId(externalUserId);
+				user.setExternalUserType(externalUserType);
+
+				userDao.update(user, users_id);
+
+				return user_id;
+
+			} else {
+				return new Long(-26);
+			}
+
+		} catch (Exception err) {
+			log.error("addNewUserWithExternalType", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * 
+	 * Delete a certain user by its id
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param userId
+	 *            the openmeetings user id
+	 *            
+	 * @return - id of the user deleted, error code otherwise
+	 * @throws AxisFault
+	 */
+	public Long deleteUserById(String SID, Long userId) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+
+				// Setting user deleted
+				userDao.deleteUserID(userId);
+
+				return userId;
+
+			} else {
+				return new Long(-26);
+			}
+
+		} catch (Exception err) {
+			log.error("deleteUserById", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * 
+	 * Delete a certain user by its external user id
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param externalUserId
+	 *            externalUserId
+	 * @param externalUserType
+	 *            externalUserId
+	 *            
+	 * @return - id of user deleted, or error code
+	 * @throws AxisFault
+	 */
+	public Long deleteUserByExternalUserIdAndType(String SID,
+			String externalUserId, String externalUserType) throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+
+				User userExternal = userDao.getExternalUser(externalUserId, externalUserType);
+
+				Long userId = userExternal.getUser_id();
+
+				// Setting user deleted
+				userDao.deleteUserID(userId);
+
+				return userId;
+
+			} else {
+				return new Long(-26);
+			}
+
+		} catch (Exception err) {
+			log.error("deleteUserByExternalUserIdAndType", err);
+			throw new AxisFault(err.getMessage());
+		}
+	}
+
+	/**
+	 * Description: sets the SessionObject for a certain SID, after setting this
+	 * Session-Object you can use the SID + a RoomId to enter any Room. ...
+	 * Session-Hashs are deleted 15 minutes after the creation if not used.
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param profilePictureUrl
+	 *            any profilePictureUrl
+	 * @param email
+	 *            any email
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 * @param room_id
+	 *            the room id the user should be logged in
+	 * @param becomeModeratorAsInt
+	 *            0 means no Moderator, 1 means Moderator
+	 * @param showAudioVideoTestAsInt
+	 *            0 means don't show Audio/Video Test, 1 means show Audio/Video
+	 *            Test Application before the user is logged into the room
+	 *            
+	 * @return - secure hash or error code
+	 * @throws AxisFault
+	 */
+	public String setUserObjectAndGenerateRoomHash(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType,
+			Long room_id, int becomeModeratorAsInt, int showAudioVideoTestAsInt)
+			throws AxisFault {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, lastname, profilePictureUrl,
+						email, externalUserId, externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				boolean becomeModerator = false;
+				if (becomeModeratorAsInt != 0) {
+					becomeModerator = true;
+				}
+
+				boolean showAudioVideoTest = false;
+				if (showAudioVideoTestAsInt != 0) {
+					showAudioVideoTest = true;
+				}
+
+				String hash = soapLoginDao.addSOAPLogin(SID, room_id,
+						becomeModerator, showAudioVideoTest, false, // allowSameURLMultipleTimes
+						null, // recording_id
+						false, // showNickNameDialogAsInt
+						"room", // LandingZone,
+						true // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectWithAndGenerateRoomHash", err);
+			throw new AxisFault(err.getMessage());
+		}
+		return "" + new Long(-1);
+	}
+
+	/**
+	 * 
+	 * Description: sets the SessionObject for a certain SID, after setting this
+	 * Session-Object you can use the SID + a RoomId to enter any Room.
+	 * 
+	 * ++ the user can press f5 to reload the page / use the link several times,
+	 * the SOAP Gateway does remember the IP of the user and the will only the
+	 * first user that enters the room allow to re-enter. ... Session-Hashs are
+	 * deleted 15 minutes after the creation if not used.
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param profilePictureUrl
+	 *            any profilePictureUrl
+	 * @param email
+	 *            any email any email
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 * @param room_id
+	 *            the room id the user should be logged in
+	 * @param becomeModeratorAsInt
+	 *            0 means no Moderator, 1 means Moderator
+	 * @param showAudioVideoTestAsInt
+	 *            0 means don't show Audio/Video Test, 1 means show Audio/Video
+	 *            Test Application before the user is logged into the room
+	 *            
+	 * @return - secure hash or error code
+	 */
+	public String setUserObjectAndGenerateRoomHashByURL(String SID,
+			String username, String firstname, String lastname,
+			String profilePictureUrl, String email, String externalUserId,
+			String externalUserType, Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt) throws AxisFault {
+
+		log.debug("UserService.setUserObjectAndGenerateRoomHashByURL");
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, lastname, profilePictureUrl,
+						email, externalUserId, externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				boolean becomeModerator = false;
+				if (becomeModeratorAsInt != 0) {
+					becomeModerator = true;
+				}
+
+				boolean showAudioVideoTest = false;
+				if (showAudioVideoTestAsInt != 0) {
+					showAudioVideoTest = true;
+				}
+
+				String hash = soapLoginDao.addSOAPLogin(SID, room_id,
+						becomeModerator, showAudioVideoTest, true, // allowSameURLMultipleTimes
+						null, // recording_id
+						false, // showNickNameDialogAsInt
+						"room", // LandingZone,
+						true // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectAndGenerateRoomHashByURL", err);
+			throw new AxisFault(err.getMessage());
+		}
+		return "" + new Long(-1);
+	}
+
+	/**
+	 * 
+	 * Description: sets the SessionObject for a certain SID, after setting this
+	 * Session-Object you can use the SID + a RoomId to enter any Room.
+	 * 
+	 * ++ the user can press f5 to reload the page / use the link several times,
+	 * the SOAP Gateway does remember the IP of the user and the will only the
+	 * first user that enters the room allow to re-enter. ... Session-Hashs are
+	 * deleted 15 minutes after the creation if not used.
+	 * 
+	 * ++ sets the flag if the user can do recording in the conference room
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param profilePictureUrl
+	 *            any profilePictureUrl
+	 * @param email
+	 *            any email
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 * @param room_id
+	 *            the room id the user should be logged in
+	 * @param becomeModeratorAsInt
+	 *            0 means no Moderator, 1 means Moderator
+	 * @param showAudioVideoTestAsInt
+	 *            0 means don't show Audio/Video Test, 1 means show Audio/Video
+	 *            Test Application before the user is logged into the room
+	 * @param allowRecording
+	 *            0 means don't allow Recording, 1 means allow Recording
+	 *            
+	 * @return - secure hash or error code
+	 */
+	public String setUserObjectAndGenerateRoomHashByURLAndRecFlag(String SID,
+			String username, String firstname, String lastname,
+			String profilePictureUrl, String email, String externalUserId,
+			String externalUserType, Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt, int allowRecording) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, lastname, profilePictureUrl,
+						email, externalUserId, externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				boolean becomeModerator = false;
+				if (becomeModeratorAsInt != 0) {
+					becomeModerator = true;
+				}
+
+				boolean showAudioVideoTest = false;
+				if (showAudioVideoTestAsInt != 0) {
+					showAudioVideoTest = true;
+				}
+
+				boolean allowRecordingBool = false;
+				if (allowRecording != 0) {
+					allowRecordingBool = true;
+				}
+
+				String hash = soapLoginDao.addSOAPLogin(SID, room_id,
+						becomeModerator, showAudioVideoTest, true, // allowSameURLMultipleTimes
+						null, // recording_id
+						false, // showNickNameDialogAsInt
+						"room", // LandingZone,
+						allowRecordingBool // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectWithAndGenerateRoomHash", err);
+		}
+		return "" + new Long(-1);
+	}
+
+	/**
+	 * 
+	 * Description: sets the SessionObject for a certain SID, after setting this
+	 * Session-Object you can use the SID and directly login into the dashboard
+	 * 
+	 * ++ the user can press f5 to reload the page / use the link several times,
+	 * the SOAP Gateway does remember the IP of the user and the will only the
+	 * first user that enters the room allow to re-enter. ... Session-Hashs are
+	 * deleted 15 minutes after the creation if not used.
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param profilePictureUrl
+	 *            any absolute profilePictureUrl
+	 * @param email
+	 *            any email
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 *            
+	 * @return - secure hash or error code
+	 */
+	public String setUserObjectMainLandingZone(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType) {
+		log.debug("UserService.setUserObjectMainLandingZone");
+
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, lastname, profilePictureUrl,
+						email, externalUserId, externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				String hash = soapLoginDao.addSOAPLogin(SID, null, false, true,
+						true, // allowSameURLMultipleTimes
+						null, // recording_id
+						false, // showNickNameDialogAsInt
+						"dashboard", // LandingZone,
+						true // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + -26L;
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectWithAndGenerateRoomHash", err);
+		}
+		return "" + -1L;
+	}
+
+	/**
+	 * 
+	 * Description: sets the SessionObject for a certain SID, after setting this
+	 * Session-Object you can use the SID + a RoomId to enter any Room.
+	 * 
+	 * ++ the user can press f5 to reload the page / use the link several times,
+	 * the SOAP Gateway does remember the IP of the user and the will only the
+	 * first user that enters the room allow to re-enter. ... Session-Hashs are
+	 * deleted 15 minutes after the creation if not used.
+	 * 
+	 * ++ Additionally you can set a param showNickNameDialogAsInt, the effect
+	 * if that param is 1 is, that the user gets a popup where he can enter his
+	 * nickname right before he enters the conference room. All nicknames and
+	 * emails users enter are logged in the conferencelog table.
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param profilePictureUrl
+	 *            any profilePictureUrl
+	 * @param email
+	 *            any email
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 * @param room_id
+	 *            the room id the user should be logged in
+	 * @param becomeModeratorAsInt
+	 *            0 means no Moderator, 1 means Moderator
+	 * @param showAudioVideoTestAsInt
+	 *            0 means don't show Audio/Video Test, 1 means show Audio/Video
+	 *            Test Application before the user is logged into the room
+	 * @param showNickNameDialogAsInt
+	 *            0 means do not show the popup to enter a nichname, 1 means
+	 *            that there is a popup to enter the nickname for the conference
+	 *            
+	 * @return - secure hash, or error code 
+	 */
+	public String setUserAndNickName(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType,
+			Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt, int showNickNameDialogAsInt) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, lastname, profilePictureUrl,
+						email, externalUserId, externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+				log.debug("showNickNameDialogAsInt" + showNickNameDialogAsInt);
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				boolean becomeModerator = false;
+				if (becomeModeratorAsInt != 0) {
+					becomeModerator = true;
+				}
+
+				boolean showAudioVideoTest = false;
+				if (showAudioVideoTestAsInt != 0) {
+					showAudioVideoTest = true;
+				}
+
+				boolean showNickNameDialog = false;
+				if (showNickNameDialogAsInt != 0) {
+					showNickNameDialog = true;
+				}
+
+				String hash = soapLoginDao.addSOAPLogin(SID, room_id,
+						becomeModerator, showAudioVideoTest, true, null,
+						showNickNameDialog, "room", // LandingZone,
+						true // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectWithAndGenerateRoomHash", err);
+		}
+		return "" + new Long(-1);
+	}
+
+	/**
+	 * Use this method to access a Recording instead of Room
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param username
+	 *            any username
+	 * @param firstname
+	 *            any firstname
+	 * @param lastname
+	 *            any lastname
+	 * @param externalUserId
+	 *            if you have any external user Id you may set it here
+	 * @param externalUserType
+	 *            you can specify your system-name here, for example "moodle"
+	 * @param recording_id
+	 *            the id of the recording, get a List of all Recordings with
+	 *            RoomService::getFlvRecordingByExternalRoomType
+	 *            
+	 * @return - hash of the recording, or error id
+	 */
+	public String setUserObjectAndGenerateRecordingHashByURL(String SID,
+			String username, String firstname, String lastname,
+			String externalUserId, String externalUserType, Long recording_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+
+				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
+						username, firstname, "", "", "", externalUserId,
+						externalUserType);
+
+				log.debug(remoteSessionObject.toString());
+
+				String xmlString = remoteSessionObject.toXml();
+
+				log.debug("xmlString " + xmlString);
+
+				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+
+				String hash = soapLoginDao.addSOAPLogin(SID, null, false,
+						false, true, // allowSameURLMultipleTimes
+						recording_id, // recording_id
+						false, // showNickNameDialogAsInt
+						"room", // LandingZone,
+						true // allowRecording
+						);
+
+				if (hash != null) {
+					return hash;
+				}
+
+			} else {
+				return "" + new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("setUserObjectWithAndGenerateRoomHash", err);
+		}
+		return "" + new Long(-1);
+	}
+
+	/**
+	 * 
+	 * Add a user to a certain organization
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param user_id
+	 *            the user id
+	 * @param organisation_id
+	 *            the organization id
+	 * @param insertedby
+	 *            user id of the operating user
+	 * @return - id of the user added, or error id in case of the error
+	 */
+	public Long addUserToOrganisation(String SID, Long user_id,
+			Long organisation_id, Long insertedby) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				if (!orgUserDao.isUserInOrganization(organisation_id, user_id)) {
+					User u = userDao.get(user_id);
+					u.getOrganisation_users().add(new Organisation_Users(orgDao.get(organisation_id)));
+					userDao.update(u, users_id);
+				}
+				return user_id;
+			} else {
+				return new Long(-26);
+			}
+		} catch (Exception err) {
+			log.error("addUserToOrganisation", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Search users and return them
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param organisation_id
+	 *            the organization id
+	 * @param start
+	 *            first record
+	 * @param max
+	 *            max records
+	 * @param orderby
+	 *            orderby clause
+	 * @param asc
+	 *            asc or desc
+	 * @return - users found
+	 */
+	public UserSearchResult getUsersByOrganisation(String SID,
+			long organisation_id, int start, int max, String orderby,
+			boolean asc) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			SearchResult<User> result = new SearchResult<User>();
+			result.setObjectName(User.class.getName());
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				result.setRecords(orgUserDao.count(organisation_id));
+				result.setResult(new ArrayList<User>());
+				for (Organisation_Users ou : orgUserDao.get(organisation_id, null, start, max, orderby + " " + (asc ? "ASC" : "DESC"))) {
+					result.getResult().add(ou.getUser());
+				}
+			} else {
+				log.error("Need Administration Account");
+				result.setErrorId(-26L);
+			}
+			return new UserSearchResult(result);
+		} catch (Exception err) {
+			log.error("getUsersByOrganisation", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Kick a user by its public SID
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param publicSID
+	 *            the publicSID (you can get it from the call to get users in a
+	 *            room)
+	 * @return - <code>true</code> if user was kicked
+	 */
+	public Boolean kickUserByPublicSID(String SID, String publicSID) {
+		try {
+			Boolean success = false;
+
+			success = userManagement.kickUserByPublicSID(SID, publicSID);
+
+			if (success == null)
+				success = false;
+
+			return success;
+		} catch (Exception err) {
+			log.error("[kickUser]", err);
+		}
+		return null;
+	}
+	
+	/**
+	 * add a new organisation
+	 * 
+	 * @param SID
+	 *            The SID from getSession
+	 * @param name
+	 *            the name of the org
+	 * @return the new id of the org or -1 in case an error happened
+	 * @throws AxisFault
+	 */
+	public Long addOrganisation(String SID, String name) throws AxisFault {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			Organisation o = new Organisation();
+			o.setName(name);
+			return orgDao.update(o, users_id).getOrganisation_id();
+		}
+		log.error("Could not create organization");
+		return -1L;
+	}
+
+}
diff --git a/src/axis/java/org/apache/openmeetings/axis/services/UserWebServiceFacade.java b/src/axis/java/org/apache/openmeetings/axis/services/UserWebServiceFacade.java
new file mode 100644
index 0000000..723c039
--- /dev/null
+++ b/src/axis/java/org/apache/openmeetings/axis/services/UserWebServiceFacade.java
@@ -0,0 +1,239 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.axis.services;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.db.dto.basic.ErrorResult;
+import org.apache.openmeetings.db.dto.user.UserSearchResult;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+
+public class UserWebServiceFacade extends BaseWebService {
+
+	/**
+	 * load this session id before doing anything else
+	 * 
+	 * @return Sessiondata-Object
+	 */
+	public Sessiondata getSession() throws AxisFault {
+		return getBean(UserWebService.class).getSession();
+	}
+
+	/**
+	 * auth function, use the SID you get by getSession
+	 * 
+	 * @param SID
+	 * @param Username
+	 * @param Userpass
+	 * @return positive means Loggedin, if negativ its an ErrorCode, you have to
+	 *         invoke the Method getErrorByCode to get the Text-Description of
+	 *         that ErrorCode
+	 */
+	public Long loginUser(String SID, String username, String userpass)
+			throws AxisFault {
+		return getBean(UserWebService.class).loginUser(SID, username, userpass);
+	}
+
+	/**
+	 * Gets the Error-Object
+	 * 
+	 * @param SID
+	 * @param errorid
+	 * @param language_id
+	 * @return
+	 * @throws AxisFault 
+	 */
+	public ErrorResult getErrorByCode(String SID, Long errorid, Long language_id) throws AxisFault {
+		return getBean(UserWebService.class).getErrorByCode(SID, errorid, language_id);
+	}
+
+	public Long addNewUser(String SID, String username, String userpass,
+			String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id)
+			throws AxisFault {
+		return getBean(UserWebService.class).addNewUser(SID, username, userpass,
+				lastname, firstname, email, additionalname, street, zip, fax,
+				states_id, town, language_id);
+	}
+
+	public Long addNewUserWithTimeZone(String SID, String username,
+			String userpass, String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id,
+			String jNameTimeZone) throws AxisFault {
+		return getBean(UserWebService.class).addNewUserWithTimeZone(SID, username,
+				userpass, lastname, firstname, email, additionalname, street,
+				zip, fax, states_id, town, language_id, jNameTimeZone);
+
+	}
+
+	/**
+	 * 
+	 * Adds a user with an externalUserId and type, but checks if the user/type
+	 * does already exist
+	 * 
+	 * @param SID
+	 * @param username
+	 * @param userpass
+	 * @param lastname
+	 * @param firstname
+	 * @param email
+	 * @param additionalname
+	 * @param street
+	 * @param zip
+	 * @param fax
+	 * @param states_id
+	 * @param town
+	 * @param language_id
+	 * @param jNameTimeZone
+	 * @param externalUserId
+	 * @param externalUserType
+	 * @return
+	 * @throws AxisFault
+	 */
+	public Long addNewUserWithExternalType(String SID, String username,
+			String userpass, String lastname, String firstname, String email,
+			String additionalname, String street, String zip, String fax,
+			long states_id, String town, long language_id,
+			String jNameTimeZone, String externalUserId, String externalUserType)
+			throws AxisFault {
+		return getBean(UserWebService.class).addNewUserWithExternalType(SID, username,
+				userpass, lastname, firstname, email, additionalname, street,
+				zip, fax, states_id, town, language_id, jNameTimeZone,
+				externalUserId, externalUserType);
+
+	}
+
+	/**
+	 * 
+	 * delete a user by its id
+	 * 
+	 * @param SID
+	 * @param userId
+	 * @return
+	 * @throws AxisFault
+	 */
+	public Long deleteUserById(String SID, Long userId) throws AxisFault {
+		return getBean(UserWebService.class).deleteUserById(SID, userId);
+	}
+
+	/**
+	 * 
+	 * delete a user by its external user id and type
+	 * 
+	 * @param SID
+	 * @param externalUserId
+	 * @param externalUserType
+	 * @return
+	 * @throws AxisFault
+	 */
+	public Long deleteUserByExternalUserIdAndType(String SID,
+			String externalUserId, String externalUserType) throws AxisFault {
+		return getBean(UserWebService.class).deleteUserByExternalUserIdAndType(SID,
+				externalUserId, externalUserType);
+	}
+
+	public String setUserObjectAndGenerateRoomHash(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType,
+			Long room_id, int becomeModeratorAsInt, int showAudioVideoTestAsInt)
+			throws AxisFault {
+		return getBean(UserWebService.class).setUserObjectAndGenerateRoomHash(SID,
+				username, firstname, lastname, profilePictureUrl, email,
+				externalUserId, externalUserType, room_id,
+				becomeModeratorAsInt, showAudioVideoTestAsInt);
+	}
+
+	public String setUserObjectAndGenerateRoomHashByURL(String SID,
+			String username, String firstname, String lastname,
+			String profilePictureUrl, String email, String externalUserId,
+			String externalUserType, Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt) throws AxisFault {
+		return getBean(UserWebService.class).setUserObjectAndGenerateRoomHashByURL(SID,
+				username, firstname, lastname, profilePictureUrl, email,
+				externalUserId, externalUserType, room_id,
+				becomeModeratorAsInt, showAudioVideoTestAsInt);
+	}
+
+	public String setUserObjectAndGenerateRoomHashByURLAndRecFlag(String SID,
+			String username, String firstname, String lastname,
+			String profilePictureUrl, String email, String externalUserId,
+			String externalUserType, Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt, int allowRecording) throws AxisFault {
+		return getBean(UserWebService.class)
+				.setUserObjectAndGenerateRoomHashByURLAndRecFlag(SID, username,
+						firstname, lastname, profilePictureUrl, email,
+						externalUserId, externalUserType, room_id,
+						becomeModeratorAsInt, showAudioVideoTestAsInt,
+						allowRecording);
+	}
+
+	public String setUserObjectMainLandingZone(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType)
+			throws AxisFault {
+		return getBean(UserWebService.class).setUserObjectMainLandingZone(SID,
+				username, firstname, lastname, profilePictureUrl, email,
+				externalUserId, externalUserType);
+	}
+
+	public String setUserAndNickName(String SID, String username,
+			String firstname, String lastname, String profilePictureUrl,
+			String email, String externalUserId, String externalUserType,
+			Long room_id, int becomeModeratorAsInt,
+			int showAudioVideoTestAsInt, int showNickNameDialogAsInt)
+			throws AxisFault {
+		return getBean(UserWebService.class).setUserAndNickName(SID, username,
+				firstname, lastname, profilePictureUrl, email, externalUserId,
+				externalUserType, room_id, becomeModeratorAsInt,
+				showAudioVideoTestAsInt, showNickNameDialogAsInt);
+	}
+
+	public String setUserObjectAndGenerateRecordingHashByURL(String SID,
+			String username, String firstname, String lastname,
+			String externalUserId, String externalUserType, Long recording_id)
+			throws AxisFault {
+		return getBean(UserWebService.class)
+				.setUserObjectAndGenerateRecordingHashByURL(SID, username,
+						firstname, lastname, externalUserId, externalUserType,
+						recording_id);
+	}
+
+	public Long addUserToOrganisation(String SID, Long user_id,
+			Long organisation_id, Long insertedby)
+			throws AxisFault {
+		return getBean(UserWebService.class).addUserToOrganisation(SID, user_id,
+				organisation_id, insertedby);
+	}
+
+	public UserSearchResult getUsersByOrganisation(String SID, long organisation_id, int start, int max, String orderby,
+			boolean asc) throws AxisFault {
+		return getBean(UserWebService.class).getUsersByOrganisation(SID, organisation_id, start, max, orderby, asc);
+	}
+
+	public Boolean kickUserByPublicSID(String SID, String publicSID)
+			throws AxisFault {
+		return getBean(UserWebService.class).kickUserByPublicSID(SID, publicSID);
+	}
+	
+	public Long addOrganisation(String SID, String name) throws AxisFault {
+		return getBean(UserWebService.class).addOrganisation(SID, name);
+	}
+
+}
diff --git a/src/axis/resources/services.xml b/src/axis/resources/services.xml
new file mode 100644
index 0000000..9aba71f
--- /dev/null
+++ b/src/axis/resources/services.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<serviceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="services.xsd">
+  <service name="UserService">
+	<description>User Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.UserWebServiceFacade</parameter>
+  </service>
+  <service name="RoomService">
+	<description>Room Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.RoomWebServiceFacade</parameter>
+  </service>
+  <service name="FileService">
+	<description>File Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.FileWebServiceFacade</parameter>
+  </service>
+  <service name="CalendarService">
+	<description>Calendar Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.CalendarWebServiceFacade</parameter>
+  </service>
+  <service name="JabberService">
+	<description>Jabber Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.JabberWebServiceFacade</parameter>
+  </service>
+  <service name="ServerService">
+	<description>Server Service</description>
+	<messageReceivers>
+        <messageReceiver 
+            mep="http://www.w3.org/ns/wsdl/in-only"
+			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+        <messageReceiver
+            mep="http://www.w3.org/ns/wsdl/in-out"
+			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass" locked="xsd:false">org.apache.openmeetings.axis.services.ServerWebServiceFacade</parameter>
+  </service>
+</serviceGroup>
diff --git a/src/axis/resources/services.xsd b/src/axis/resources/services.xsd
new file mode 100644
index 0000000..a71b92b
--- /dev/null
+++ b/src/axis/resources/services.xsd
@@ -0,0 +1,59 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="serviceGroup">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="service"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="service">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="description"/>
+        <xs:element ref="messageReceivers"/>
+        <xs:element ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="description" type="xs:string"/>
+  <xs:element name="messageReceivers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageReceiver"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageReceiver">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="mep" use="required" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="parameter">
+    <xs:complexType mixed="true">
+      <xs:attribute name="locked" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/db/java/org/apache/openmeetings/db/dao/IDataProviderDao.java b/src/db/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
new file mode 100644
index 0000000..5b3052d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/IDataProviderDao.java
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+/**
+ * General interface to perform CRUD operations on entities
+ * 
+ * @author solomax, swagner
+ * 
+ * @param <T>
+ */
+public interface IDataProviderDao<T extends IDataProviderEntity> {
+
+	/**
+	 * Get an instance of an {@link T}
+	 * 
+	 * @param id - id of instance to retrieve
+	 * @return instance with the id gived
+	 */
+	T get(long id);
+
+	/**
+	 * Get a list of instances of {@link T}
+	 * 
+	 * @param start - the start to range to retrieve
+	 * @param count - maximum instance count to retrieve
+	 * @return list of instances in the range specified
+	 */
+	List<T> get(int start, int count);
+
+	/**
+	 * Get a list of instances of {@link T}
+	 * 
+	 * @param search - string search criteria to filter entities
+	 * @param start - the start to range to retrieve
+	 * @param count - maximum instance count to retrieve
+	 * @param order - column and sort order
+	 * @return list of instances in the range specified
+	 */
+	List<T> get(String search, int start, int count, String order);
+
+	/**
+	 * Count the number of instances of {@link T}
+	 * 
+	 * @return count of instances
+	 */
+	long count();
+
+	/**
+	 * Count the number of instances of {@link T}
+	 * 
+	 * @param search - string search criteria to filter entities
+	 * @return count of instances satisfying given search criteria
+	 */
+	long count(String search);
+
+	/**
+	 * Update an instance of {@link T}
+	 * 
+	 * @param entity - entity to be updated
+	 * @param userId - user performed update
+	 */
+	T update(T entity, Long userId);
+
+	/**
+	 * Delete an instance of {@link T}
+	 * 
+	 * @param entity - entity to be deleted
+	 * @param userId - user performed delete
+	 */
+	void delete(T entity, Long userId);
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/basic/ChatDao.java b/src/db/java/org/apache/openmeetings/db/dao/basic/ChatDao.java
new file mode 100644
index 0000000..8345424
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/basic/ChatDao.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ChatDao {
+	@PersistenceContext
+	private EntityManager em;
+
+	public ChatMessage get(long id) {
+		return em.createNamedQuery("getChatMessageById", ChatMessage.class)
+				.setParameter("id", id)
+				.getSingleResult();
+	}
+
+	//TODO additional methods should be added to get messages by external email
+	public List<ChatMessage> get(long userId, int start, int count) {
+		return em.createNamedQuery("getChatMessagesByUser", ChatMessage.class)
+				.setParameter("userId", userId)
+				.setFirstResult(start)
+				.setMaxResults(count)
+				.getResultList();
+	}
+
+	public List<ChatMessage> get(int start, int count) {
+		return em.createNamedQuery("getGlobalChatMessages", ChatMessage.class)
+				.setFirstResult(start)
+				.setMaxResults(count)
+				.getResultList();
+	}
+
+	public ChatMessage update(ChatMessage entity) {
+		entity.setSent(new Date());
+		if (entity.getId() == 0) {
+			em.persist(entity);
+		}
+		return entity;
+	}
+
+	public void delete(ChatMessage entity, long userId) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/src/db/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
new file mode 100644
index 0000000..8c0f876
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -0,0 +1,334 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.configKeyCryptClassName;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.whiteboardDrawStatus;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.util.DaoHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Insert/update/Delete on {@link Configuration}<br/>
+ * <br/>
+ * It provides basic mechanism to get a Conf Key:<br/>
+ * {@link #getConfValue(String, Class, String)} <br/>
+ * <br/>
+ * <b> {@link #get(String)} is deprecated!</b>
+ * 
+ * @author swagner
+ * 
+ */
+@Transactional
+public class ConfigurationDao implements IDataProviderDao<Configuration> {
+	private static final Logger log = Red5LoggerFactory.getLogger(ConfigurationDao.class, webAppRootKey);
+	public static final long DEFAULT_MAX_UPLOAD_SIZE = 1024 * 1024 * 1024; // 1GB
+	public static final String DEFAULT_APP_NAME = "OpenMeetings";
+	public final static String[] searchFields = {"conf_key", "conf_value"};
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private UserDao userDao;
+
+	/**
+	 * @deprecated Dao's are not the place to store session variables, also
+	 *             updates to the key won't update this variable
+	 */
+	@Deprecated
+	private String appName = null;
+
+	/**
+	 * Retrieves Configuration regardless of its deleted status
+	 * 
+	 * @param confKey
+	 * @return
+	 */
+	public Configuration forceGet(String confKey) {
+		try {
+			List<Configuration> list = em.createNamedQuery("forceGetConfigurationByKey", Configuration.class)
+					.setParameter("conf_key", confKey).getResultList();
+			return list.isEmpty() ? null : list.get(0);
+		} catch (Exception e) {
+			log.error("[forceGet]: ", e);
+		}
+		return null;
+	}
+
+	public List<Configuration> get(String... keys) {
+		List<Configuration> result = new ArrayList<Configuration>();
+		for (String key : keys) { //iteration is necessary to fill list with all values 
+			List<Configuration> r = em.createNamedQuery("getConfigurationsByKeys", Configuration.class)
+					.setParameter("conf_keys", Arrays.asList(key))
+					.getResultList();
+			result.add(r.isEmpty() ? null : r.get(0));
+		}
+		return result;
+	}
+
+	/**
+	 * Return a object using a custom type and a default value if the key is not
+	 * present, or value is not set
+	 * 
+	 * Example: Integer my_key = getConfValue("my_key", Integer.class, "15");
+	 * 
+	 * @param key
+	 * @param type
+	 * @param defaultValue
+	 * @return
+	 */
+	public <T> T getConfValue(String key, Class<T> type, String defaultValue) {
+		try {
+			List<Configuration> list = get(key);
+
+			if (list == null || list.isEmpty() || list.get(0) == null) {
+				log.warn("Could not find key in configuration CONF_KEY: " + key);
+			} else {
+				String val = list.get(0).getConf_value();
+				// Use the custom value as default value
+				if (val != null) {
+					defaultValue = val;
+				}
+			}
+
+			if (defaultValue == null) {
+				return null;
+			}
+			// Either this can be directly assigned or try to find a constructor
+			// that handles it
+			if (type.isAssignableFrom(defaultValue.getClass())) {
+				return type.cast(defaultValue);
+			}
+			Constructor<T> c = type.getConstructor(defaultValue.getClass());
+			return c.newInstance(defaultValue);
+
+		} catch (Exception err) {
+			log.error("cannot be cast to return type, you have misconfigured your configuration CONF_KEY: " + key, err);
+			return null;
+		}
+	}
+
+	public List<Configuration> getConfigurations(int start, int max, String orderby, boolean asc) {
+		try {
+
+			String query = "SELECT c FROM Configuration c LEFT JOIN FETCH c.user WHERE c.deleted = false ORDER BY " + orderby;
+
+			if (asc) {
+				query += " ASC";
+			} else {
+				query += " DESC";
+			}
+
+			TypedQuery<Configuration> q = em.createQuery(query, Configuration.class);
+			q.setFirstResult(start);
+			q.setMaxResults(max);
+			return q.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getConfigurations]", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 */
+	public Configuration add(String key, String value, Long userId, String comment) {
+		Configuration c = new Configuration();
+		c.setConf_key(key);
+		c.setConf_value(value);
+		c.setComment(comment);
+		return update(c, userId);
+	}
+
+	/**
+	 * @deprecated please use {@link ConfigurationDao#update(Configuration, Long)}
+	 */
+	public Long addConfig(Configuration conf) {
+		try {
+			conf = em.merge(conf);
+			Long configuration_id = conf.getConfiguration_id();
+			return configuration_id;
+		} catch (Exception ex2) {
+			log.error("[updateConfByUID]: ", ex2);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * @deprecated please use {@link ConfigurationDao#update(Configuration, Long)}
+	 * @param conf
+	 * @return
+	 */
+	public Long updateConfig(Configuration conf) {
+		try {
+			if (conf.getConfiguration_id() == null
+					|| conf.getConfiguration_id() == 0
+					|| conf.getConfiguration_id() == 0L) {
+				em.persist(conf);
+			} else {
+				if (!em.contains(conf)) {
+					conf = em.merge(conf);
+				}
+			}
+			if (CONFIG_CRYPT_KEY.equals(conf.getConf_key())) {
+				configKeyCryptClassName = conf.getConf_value();
+			} else if ("show.whiteboard.draw.status".equals(conf.getConf_key())) {
+				whiteboardDrawStatus = "1".equals(conf.getConf_value());
+			}
+			return conf.getConfiguration_id();
+		} catch (Exception ex2) {
+			log.error("[updateConfByUID]: ", ex2);
+		}
+		return new Long(-1);
+	}
+
+	public String getAppName() {
+		if (appName == null) {
+			appName = getConfValue("application.name", String.class, DEFAULT_APP_NAME);
+		}
+		return appName;
+	}
+
+	public String getBaseUrl() {
+		String val = getConfValue(CONFIG_APPLICATION_BASE_URL, String.class, DEFAULT_BASE_URL);
+		if (val != null && !val.endsWith("/")) {
+			val += "/";
+		}
+		return val;
+	}
+
+	public Configuration get(long id) {
+		if (id <= 0) {
+			return null;
+		}
+		return em.createNamedQuery("getConfigurationById", Configuration.class)
+				.setParameter("configuration_id", id).getSingleResult();
+	}
+
+	public List<Configuration> get(int start, int count) {
+		return em.createNamedQuery("getNondeletedConfiguration", Configuration.class)
+				.setFirstResult(start).setMaxResults(count).getResultList();
+	}
+
+	public List<Configuration> get(String search, int start, int count, String sort) {
+		TypedQuery<Configuration> q = em.createQuery(DaoHelper.getSearchQuery("Configuration", "c", search, true, false, sort, searchFields), Configuration.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	public long count() {
+		return em.createNamedQuery("countConfigurations", Long.class).getSingleResult();
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Configuration", "c", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+	
+	public Configuration update(Configuration entity, Long userId) {
+		return update(entity, userId, false);
+	}
+	
+	public Configuration update(Configuration entity, Long userId, boolean deleted) {
+		String key = entity.getConf_key();
+		String value = entity.getConf_value();
+		if (entity.getConfiguration_id() == null || entity.getConfiguration_id() <= 0) {
+			entity.setStarttime(new Date());
+			entity.setDeleted(deleted);
+			em.persist(entity);
+		} else {
+			if (userId != null) {
+				entity.setUser(userDao.get(userId));
+			}
+			entity.setDeleted(deleted);
+			entity.setUpdatetime(new Date());
+			entity = em.merge(entity);
+		}
+		if (CONFIG_CRYPT_KEY.equals(key)) {
+			configKeyCryptClassName = value;
+		} else if ("show.whiteboard.draw.status".equals(key)) {
+			whiteboardDrawStatus = "1".equals(value);
+		} else if ("application.name".equals(key)) {
+			appName = value;
+		}
+		//TODO ensure entity returned is updated
+		return entity;
+	}
+
+	public void delete(Configuration entity, Long userId) {
+		entity.setUpdatetime(new Date());
+		this.update(entity, userId, true);
+	}
+
+	/**
+	 * returns the max upload size configured by max_upload_size config key
+	 * 
+	 * @param configurationDao
+	 * @return
+	 */
+	public long getMaxUploadSize() {
+		try {
+			return getConfValue(CONFIG_MAX_UPLOAD_SIZE_KEY, Long.class, "" + DEFAULT_MAX_UPLOAD_SIZE);
+		} catch (Exception e) {
+			log.error("Invalid value saved for max_upload_size conf key: ", e);
+		}
+		return DEFAULT_MAX_UPLOAD_SIZE;
+	}
+	
+	public String getCryptKey() {
+		if (configKeyCryptClassName == null) {
+			String cryptClass = getConfValue(CONFIG_CRYPT_KEY, String.class, null);
+			if (cryptClass != null) {
+				configKeyCryptClassName = cryptClass;
+			}
+		}
+
+		return configKeyCryptClassName;
+	}
+
+	public boolean getWhiteboardDrawStatus() {
+		if (whiteboardDrawStatus == null) {
+			String drawStatus = getConfValue("show.whiteboard.draw.status", String.class, "0");
+			whiteboardDrawStatus = "1".equals(drawStatus);
+		}
+		return whiteboardDrawStatus;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/basic/ErrorDao.java b/src/db/java/org/apache/openmeetings/db/dao/basic/ErrorDao.java
new file mode 100644
index 0000000..b4af047
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/basic/ErrorDao.java
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.basic.ErrorType;
+import org.apache.openmeetings.db.entity.basic.ErrorValue;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ErrorDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(ErrorDao.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	public Long addErrorType(Long errortype_id, Long fieldvalues_id) {
+		try {
+			ErrorType eType = new ErrorType();
+			eType.setErrortype_id(errortype_id);
+			eType.setStarttime(new Date());
+			eType.setDeleted(false);
+			eType.setFieldvalues_id(fieldvalues_id);
+			eType = em.merge(eType);
+			Long newerrortype_id = eType.getErrortype_id();
+			return newerrortype_id;
+		} catch (Exception ex2) {
+			log.error("[addErrorType]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<ErrorType> getErrorTypes() {
+		try {
+			TypedQuery<ErrorType> query = em.createNamedQuery("getErrorTypes", ErrorType.class);
+			query.setParameter("deleted", true);
+			List<ErrorType> ll = query.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getErrorTypes]: ", ex2);
+		}
+		return null;
+	}
+
+	public ErrorType getErrorType(Long errortype_id) {
+		try {
+			TypedQuery<ErrorType> query = em.createNamedQuery("getErrorType", ErrorType.class);
+			query.setParameter("deleted", true);
+			query.setParameter("errortype_id", errortype_id);
+			return query.getSingleResult();
+		} catch (Exception ex2) {
+			log.error("[getErrorType(" + errortype_id + ")]", ex2);
+		}
+		return null;
+	}
+
+	public Long addErrorValues(Long errorvalues_id, Long errortype_id,
+			Long fieldvalues_id) {
+		try {
+			ErrorValue eValue = new ErrorValue();
+			eValue.setErrorvalues_id(errorvalues_id);
+			eValue.setErrortype_id(errortype_id);
+			eValue.setDeleted(false);
+			eValue.setStarttime(new Date());
+			eValue.setFieldvalues_id(fieldvalues_id);
+			eValue = em.merge(eValue);
+			return eValue.getErrorvalues_id();
+		} catch (Exception ex2) {
+			log.error("[addErrorValues]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long getErrorValueById(Long errortype_id, Long fieldvalues_id) {
+		try {
+			ErrorValue eValue = new ErrorValue();
+			eValue.setErrortype_id(errortype_id);
+			eValue.setStarttime(new Date());
+			eValue.setFieldvalues_id(fieldvalues_id);
+			eValue = em.merge(eValue);
+			Long newerrorvalues_id = eValue.getErrorvalues_id();
+			return newerrorvalues_id;
+		} catch (Exception ex2) {
+			log.error("[getErrorValueById]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long updateErrorValues(Long errortype_id, Long fieldvalues_id) {
+		try {
+			ErrorValue eValue = new ErrorValue();
+			eValue.setErrortype_id(errortype_id);
+			eValue.setStarttime(new Date());
+			eValue.setFieldvalues_id(fieldvalues_id);
+			eValue = em.merge(eValue);
+			Long newerrorvalues_id = eValue.getErrorvalues_id();
+			return newerrorvalues_id;
+		} catch (Exception ex2) {
+			log.error("[addErrorType]: ", ex2);
+		}
+		return null;
+	}
+
+	public ErrorValue get(Long id) {
+		try {
+			TypedQuery<ErrorValue> query = em.createNamedQuery("getErrorValueById", ErrorValue.class);
+			query.setParameter("id", id);
+			ErrorValue e = null;
+			try {
+				e = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+			return e;
+		} catch (Exception ex2) {
+			log.error("[get]", ex2);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java b/src/db/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
new file mode 100644
index 0000000..98cfb0e
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import java.util.Calendar;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.db.entity.basic.MailMessage.Status;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class MailMessageDao  implements IDataProviderDao<MailMessage> {
+	@PersistenceContext
+	private EntityManager em;
+	
+	public MailMessage get(long id) {
+		return em.createNamedQuery("getMailMessageById", MailMessage.class).setParameter("id", id).getSingleResult();
+	}
+
+	public List<MailMessage> get(int start, int count) {
+		return em.createNamedQuery("getMailMessages", MailMessage.class).setParameter("status", Status.NONE)
+				.setFirstResult(start).setMaxResults(count).getResultList();
+	}
+
+	public List<MailMessage> get(String search, int start, int count, String order) {
+		return get(start, count);
+	}
+
+	public long count() {
+		return em.createNamedQuery("countMailMessages", Long.class).setParameter("status", Status.NONE)
+				.getSingleResult();
+	}
+
+	public long count(String search) {
+		return count();
+	}
+
+	public void resetSendingStatus(Calendar date) {
+		em.createQuery("UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus " +
+				"	AND m.updated < :date")
+			.setParameter("noneStatus", Status.NONE)
+			.setParameter("sendingStatus", Status.SENDING)
+			.setParameter("date", date)
+			.executeUpdate();
+	}
+	
+	public MailMessage update(MailMessage m, Long userId) {
+		if (m.getId() == null) {
+			m.setInserted(Calendar.getInstance());
+			em.persist(m);
+		} else {
+			m.setUpdated(Calendar.getInstance());
+			m =	em.merge(m);
+		}
+		return m;
+	}
+
+	public void delete(MailMessage m, Long userId) {
+		em.remove(m);
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java b/src/db/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
new file mode 100644
index 0000000..5d820c3
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/basic/NavigationDao.java
@@ -0,0 +1,144 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.basic;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.entity.basic.Naviglobal;
+import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class NavigationDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(NavigationDao.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private FieldLanguagesValuesDao labelDao;
+
+	public Naviglobal getGlobalMenuEntry(long globalId) {
+		try {
+			TypedQuery<Naviglobal> query = em.createNamedQuery("getNavigationById", Naviglobal.class);
+			query.setParameter("global_id", globalId);
+			return query.getSingleResult();
+		} catch (Exception ex2) {
+			log.error("getGlobalMenuEntry", ex2);
+		}
+		return null;
+
+	}
+
+	public List<Naviglobal> getMainMenu(boolean admin, long USER_ID, long language_id) {
+		List<Naviglobal> ll = getMainMenu(admin, USER_ID);
+		for (Naviglobal navigl : ll) {
+			navigl.setLabel(labelDao.get(navigl.getFieldvalues_id(), language_id));
+			navigl.setTooltip(labelDao.get(navigl.getTooltip_fieldvalues_id(), language_id));
+			for (Navimain navim : navigl.getMainnavi()) {
+				navim.setLabel(labelDao.get(navim.getFieldvalues_id(), language_id));
+				navim.setTooltip(labelDao.get(navim.getTooltip_fieldvalues_id(), language_id));
+			}
+		}
+		return ll;
+	}
+
+	public List<Naviglobal> getMainMenu(boolean admin, long USER_ID) {
+		try {
+			TypedQuery<Naviglobal> query = em.createNamedQuery("getNavigation", Naviglobal.class);
+			query.setParameter("level_id", admin ? 3L : 1L);
+			List<Naviglobal> navi = query.getResultList();
+			return navi;
+		} catch (Exception ex2) {
+			log.error("getMainMenu", ex2);
+		}
+		return null;
+	}
+
+	public void addGlobalStructure(String action, int naviorder, long fieldvalues_id, boolean isleaf, boolean isopen, long level_id,
+			String name, boolean deleted, Long tooltip_fieldvalues_id) {
+		try {
+			Naviglobal ng = new Naviglobal();
+			ng.setAction(action);
+			ng.setComment("");
+			ng.setIcon("");
+			ng.setNaviorder(naviorder);
+			ng.setFieldvalues_id(fieldvalues_id);
+			ng.setIsleaf(isleaf);
+			ng.setIsopen(isopen);
+			ng.setDeleted(deleted);
+			ng.setLevel_id(level_id);
+			ng.setName(name);
+			ng.setStarttime(new Date());
+			ng.setTooltip_fieldvalues_id(tooltip_fieldvalues_id);
+			// CriteriaBuilder crit = em.getCriteriaBuilder();
+
+			em.merge(ng);
+
+		} catch (Exception ex2) {
+			log.error("addGlobalStructure", ex2);
+		}
+	}
+
+	public void addMainStructure(String action, String params, int naviorder, long fieldvalues_id, boolean isleaf, boolean isopen,
+			long level_id, String name, long global_id, boolean deleted, Long tooltip_fieldvalues_id) {
+		try {
+			Naviglobal ng = getGlobalMenuEntry(global_id);
+			List<Navimain> mainEntries = ng.getMainnavi();
+			mainEntries = (mainEntries == null) ? new ArrayList<Navimain>() : mainEntries;
+
+			Navimain nm = new Navimain();
+			nm.setAction(action);
+			nm.setParams(params);
+			nm.setComment("");
+			nm.setIcon("");
+			nm.setFieldvalues_id(fieldvalues_id);
+			nm.setIsleaf(isleaf);
+			nm.setNaviorder(naviorder);
+			nm.setIsopen(isopen);
+			nm.setLevel_id(level_id);
+			nm.setName(name);
+			nm.setDeleted(deleted);
+			nm.setGlobal_id(global_id);
+			nm.setStarttime(new Date());
+			nm.setTooltip_fieldvalues_id(tooltip_fieldvalues_id);
+
+			mainEntries.add(nm);
+			ng.setMainnavi(mainEntries);
+
+			em.merge(ng);
+
+		} catch (Exception ex2) {
+			log.error("addMainStructure", ex2);
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentCategoryDao.java b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentCategoryDao.java
new file mode 100644
index 0000000..53735ca
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentCategoryDao.java
@@ -0,0 +1,163 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class AppointmentCategoryDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(AppointmentCategoryDao.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private UserDao usersDao;
+
+	public AppointmentCategory get(Long categoryId) {
+		try {
+			log.debug("getAppointmentCategoryById: " + categoryId);
+
+			String hql = "select app from AppointmentCategory app "
+					+ "WHERE app.deleted <> :deleted "
+					+ "AND app.categoryId = :categoryId";
+
+			TypedQuery<AppointmentCategory> query = em.createQuery(hql, AppointmentCategory.class);
+			query.setParameter("deleted", true);
+			query.setParameter("categoryId", categoryId);
+
+			AppointmentCategory appointCategory = null;
+			try {
+				appointCategory = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+			return appointCategory;
+		} catch (Exception ex2) {
+			log.error("[getAppointmentCategoryById]: " + ex2);
+		}
+		return null;
+	}
+
+	public Long updateAppointmentCategory(Long categoryId, String name) {
+		try {
+
+			AppointmentCategory ac = this
+					.get(categoryId);
+
+			ac.setName(name);
+			ac.setUpdatetime(new Date());
+
+			if (ac.getCategoryId() == null) {
+				em.persist(ac);
+			} else {
+				if (!em.contains(ac)) {
+					em.merge(ac);
+				}
+			}
+
+			return categoryId;
+		} catch (Exception ex2) {
+			log.error("[updateAppointmentCategory]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long addAppointmentCategory(Long user_id, String name, String comment) {
+		try {
+
+			AppointmentCategory ac = new AppointmentCategory();
+
+			ac.setName(name);
+			ac.setStarttime(new Date());
+			ac.setDeleted(false);
+			ac.setUser(usersDao.get(user_id));
+			ac.setComment(comment);
+
+			ac = em.merge(ac);
+			Long category_id = ac.getCategoryId();
+
+			return category_id;
+		} catch (Exception ex2) {
+			log.error("[addAppointmentCategory]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long deleteAppointmentCategory(Long categoryId) {
+		try {
+
+			AppointmentCategory ac = this
+					.get(categoryId);
+
+			log.debug("ac: " + ac);
+
+			if (ac == null) {
+				log.debug("Already deleted / Could not find: " + categoryId);
+				return categoryId;
+			}
+			ac.setUpdatetime(new Date());
+			ac.setDeleted(true);
+			if (ac.getCategoryId() == null) {
+				em.persist(ac);
+			} else {
+				if (!em.contains(ac)) {
+					em.merge(ac);
+				}
+			}
+			return categoryId;
+		} catch (Exception ex2) {
+			log.error("[deleteAppointmentCategory]: " + ex2);
+		}
+		return null;
+	}
+
+	public List<AppointmentCategory> getAppointmentCategoryList() {
+		try {
+
+			String hql = "select a from AppointmentCategory a "
+					+ "WHERE a.deleted <> :deleted ";
+
+			TypedQuery<AppointmentCategory> query = em.createQuery(hql, AppointmentCategory.class);
+			query.setParameter("deleted", true);
+
+			List<AppointmentCategory> listAppointmentCategory = query
+					.getResultList();
+
+			return listAppointmentCategory;
+		} catch (Exception ex2) {
+			log.error("[AppointmentCategory]: " + ex2);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
new file mode 100644
index 0000000..af03619
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -0,0 +1,353 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.TimeZone;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class AppointmentDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(AppointmentDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDaoImpl;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private ConfigurationDao cfgDao;
+	@Autowired
+	private IInvitationManager invitationManager;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private InvitationDao invitationDao;
+
+	/*
+	 * insert, update, delete, select
+	 */
+
+	/**
+	 * @author o.becherer Retrievment of Appointment for room
+	 */
+	// -----------------------------------------------------------------------------------------------
+	public Appointment getAppointmentByRoom(Long room_id) {
+		log.debug("AppointMentDaoImpl.getAppointmentByRoom");
+
+		TypedQuery<Appointment> query = em.createNamedQuery("getAppointmentByRoomId", Appointment.class);
+		query.setParameter("room_id", room_id);
+
+		List<Appointment> appoint = query.getResultList();
+
+		if (appoint.size() > 0) {
+			return appoint.get(0);
+		}
+
+		return null;
+	}
+
+	// -----------------------------------------------------------------------------------------------
+
+	public Appointment get(Long id) {
+		TypedQuery<Appointment> query = em.createNamedQuery("getAppointmentById", Appointment.class);
+		query.setParameter("id", id);
+
+		Appointment appoint = null;
+		try {
+			appoint = query.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+		return appoint;
+	}
+
+	public Appointment getAppointmentByIdBackup(Long appointmentId) {
+		TypedQuery<Appointment> query = em.createNamedQuery("getAppointmentByIdAny", Appointment.class).setParameter("id", appointmentId);
+
+		Appointment appoint = null;
+		try {
+			appoint = query.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+
+		return appoint;
+	}
+
+	public List<Appointment> getAppointments() {
+		return em.createNamedQuery("getAppointments", Appointment.class).getResultList();
+	}
+
+	public Long addAppointmentObj(Appointment ap) {
+		try {
+			ap.setInserted(new Date());
+			em.persist(ap);
+
+			return ap.getId();
+		} catch (Exception ex2) {
+			log.error("[addAppointmentObj]: ", ex2);
+		}
+		return null;
+	}
+
+	public Appointment update(Appointment a, Long userId) {
+		Room r = a.getRoom();
+		if (r.getRooms_id() == null) {
+			r.setName(a.getTitle());
+			r.setNumberOfPartizipants(cfgDao.getConfValue("calendar.conference.rooms.default.size", Long.class, "50"));
+		}
+		roomDao.update(r, userId);
+		Set<Long> mmIds = a.getId() == null ? new HashSet<Long>()
+				: meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
+		// update meeting members
+		//TODO update email need to be sent on meeting members list update
+		Appointment a0 = a.getId() == null ? null : get(a.getId());
+		boolean sendMail = a0 == null || !a0.getTitle().equals(a.getTitle()) ||
+				!(a0.getDescription() != null ? a0.getDescription().equals(a.getDescription()) : true) ||
+				!(a0.getLocation() != null ? a0.getLocation().equals(a.getLocation()) : true) ||
+				!a0.getStart().equals(a.getStart()) ||
+				!a0.getEnd().equals(a.getEnd());
+		List<MeetingMember> mmList = a.getMeetingMembers();
+		if (mmList != null){
+			for (MeetingMember mm : mmList) {
+				if (mm.getId() == null || !mmIds.contains(mm.getId())) {
+					invitationManager.processInvitation(a, mm, MessageType.Create);
+				} else {
+					mmIds.remove(mm.getId());
+					invitationManager.processInvitation(a, mm, MessageType.Update, sendMail);
+				}
+			}
+		}
+		for (long id : mmIds) {
+			invitationManager.processInvitation(a, meetingMemberDao.get(id), MessageType.Cancel);
+		}
+		//notify owner
+		MeetingMember owner = new MeetingMember();
+		owner.setUser(a.getOwner());
+		if (a.getId() == null) {
+			invitationManager.processInvitation(a, owner, MessageType.Create);
+		} else if (a.isDeleted()) {
+			invitationManager.processInvitation(a, owner, MessageType.Cancel);
+		} else if (sendMail) {
+			invitationManager.processInvitation(a, owner, MessageType.Update, sendMail);
+		}
+		if (a.getId() == null) {
+			a.setInserted(new Date());
+			em.persist(a);
+		} else {
+			a.setUpdated(new Date());
+			a =	em.merge(a);
+		}
+		return a;
+	}
+	
+	// ----------------------------------------------------------------------------------------------------------------------------
+
+	public Long updateAppointment(Appointment appointment) {
+		if (appointment.getId() != null) {
+			appointment = em.merge(appointment);
+			return appointment.getId();
+		} else {
+			log.error("[updateAppointment] " + "Error: No AppointmentId given");
+		}
+		return null;
+	}
+
+	public List<Appointment> getAppointmentsByRoomId(Long roomId) {
+		try {
+
+			String hql = "select a from Appointment a "
+					+ "WHERE a.room.rooms_id = :roomId ";
+
+			TypedQuery<Appointment> query = em.createQuery(hql,
+					Appointment.class);
+			query.setParameter("roomId", roomId);
+			List<Appointment> ll = query.getResultList();
+
+			return ll;
+		} catch (Exception e) {
+			log.error("[getAppointmentsByRoomId]", e);
+		}
+		return null;
+	}
+
+	// ----------------------------------------------------------------------------------------------------------
+
+	public void delete(Appointment a, Long userId) {
+		a.setUpdated(new Date());
+		a.setDeleted(true);
+		a.setMeetingMembers(null);
+		if (Boolean.TRUE.equals(a.getRoom().getAppointment())) {
+			a.getRoom().setDeleted(true);
+		}
+		update(a, userId);
+	}
+	
+	public List<Appointment> getAppointmentsByRange(Long userId, Date start, Date end) {
+		log.debug("Start " + start + " End " + end);
+
+		TypedQuery<Appointment> query = em.createNamedQuery("appointmentsInRange", Appointment.class);
+		query.setParameter("starttime", start);
+		query.setParameter("endtime", end);
+		query.setParameter("userId", userId);
+		
+		List<Appointment> listAppoints = new ArrayList<Appointment>(query.getResultList()); 
+		TypedQuery<Appointment> q1 = em.createNamedQuery("joinedAppointmentsInRange", Appointment.class);
+		q1.setParameter("starttime", start);
+		q1.setParameter("endtime", end);
+		q1.setParameter("userId", userId);
+		for (Appointment a : q1.getResultList()) {
+			a.setConnectedEvent(true); //TODO need to be reviewed
+			listAppoints.add(a);
+		}
+
+		return listAppoints;
+	}
+
+	public List<Appointment> getAppointmentsInRange(Calendar start, Calendar end) {
+		TypedQuery<Appointment> q = em.createNamedQuery("appointmentsInRangeRemind", Appointment.class);
+		q.setParameter("starttime", start.getTime());
+		q.setParameter("endtime", end.getTime());
+		return q.getResultList();
+	}
+	
+	public List<Appointment> getAppointmentsByCat(Long categoryId) {
+		try {
+
+			String hql = "select a from Appointments a "
+					+ "WHERE a.deleted false "
+					+ "AND a.appointmentCategory.categoryId = :categoryId";
+
+			TypedQuery<Appointment> query = em.createQuery(hql,
+					Appointment.class);
+			query.setParameter("categoryId", categoryId);
+
+			List<Appointment> listAppoints = query.getResultList();
+			return listAppoints;
+		} catch (Exception ex2) {
+			log.error("[getAppointements]: ", ex2);
+		}
+		return null;
+	}
+
+	// next appointment to select date
+	public Appointment getNextAppointment(Long userId, Date start) {
+		List<Appointment> list = em.createNamedQuery("getNextAppointment", Appointment.class)
+				.setParameter("start", start).setParameter("userId", userId).getResultList();
+		return list == null || list.isEmpty() ? null : list.get(0);
+	}
+
+	public List<Appointment> searchAppointmentsByTitle(Long userId, String title) {
+		return em.createNamedQuery("getNextAppointment", Appointment.class)
+				.setParameter("title", title).setParameter("userId", userId).getResultList();
+	}
+
+	/**
+	 * @author becherer
+	 * @param userId
+	 * @return
+	 */
+	public List<Appointment> getTodaysAppointmentsbyRangeAndMember(Long userId) {
+		log.debug("getAppoitmentbyRangeAndMember : UserID - " + userId);
+
+		TimeZone timeZone = timezoneUtil.getTimeZone(usersDao.get(userId));
+
+		Calendar startCal = Calendar.getInstance(timeZone);
+		startCal.set(Calendar.MINUTE, 0);
+		startCal.set(Calendar.HOUR, 0);
+		startCal.set(Calendar.SECOND, 1);
+
+		Calendar endCal = Calendar.getInstance(timeZone);
+		endCal.set(Calendar.MINUTE, 23);
+		endCal.set(Calendar.HOUR, 59);
+		endCal.set(Calendar.SECOND, 59);
+
+		TypedQuery<Appointment> query = em.createNamedQuery("appointmentsInRangeByUser", Appointment.class);
+
+		query.setParameter("userId", userId);
+
+		query.setParameter("starttime", startCal.getTime());
+		query.setParameter("endtime", endCal.getTime());
+
+		List<Appointment> listAppoints = query.getResultList();
+		return listAppoints;
+	}
+
+	// ---------------------------------------------------------------------------------------------
+
+	public Appointment getAppointmentByRoomId(Long user_id, Long rooms_id) {
+		try {
+
+			String hql = "select a from Appointment a "
+					+ "WHERE a.deleted <> :deleted "
+					+ "AND a.owner.user_id = :user_id "
+					+ "AND a.room.rooms_id = :rooms_id ";
+
+			TypedQuery<Appointment> query = em.createQuery(hql,
+					Appointment.class);
+
+			query.setParameter("deleted", true);
+			query.setParameter("user_id", user_id);
+			query.setParameter("rooms_id", rooms_id);
+
+			List<Appointment> listAppoints = query.getResultList();
+
+			if (listAppoints.size() > 0) {
+				return listAppoints.get(0);
+			}
+
+			return null;
+
+		} catch (Exception e) {
+			log.error("[getAppointmentByRoomId]", e);
+			return null;
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentReminderTypDao.java b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentReminderTypDao.java
new file mode 100644
index 0000000..45b0021
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentReminderTypDao.java
@@ -0,0 +1,176 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.calendar;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class AppointmentReminderTypDao {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			AppointmentReminderTypDao.class,
+			OpenmeetingsVariables.webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private FieldLanguagesValuesDao fieldLanguagesValuesDao;
+
+	public AppointmentReminderTyps get(Long typId) {
+		try {
+			log.debug("AppointmentReminderTypById: " + typId);
+
+			String hql = "select app from AppointmentReminderTyps app "
+					+ "WHERE app.deleted <> :deleted "
+					+ "AND app.typId = :typId";
+
+			TypedQuery<AppointmentReminderTyps> query = em.createQuery(hql, AppointmentReminderTyps.class);
+			query.setParameter("deleted", true);
+			query.setParameter("typId", typId);
+
+			AppointmentReminderTyps appointmentReminderTyps = null;
+			try {
+				appointmentReminderTyps = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+			return appointmentReminderTyps;
+		} catch (Exception ex2) {
+			log.error("[getAppointmentReminderTypsById]: " + ex2);
+		}
+		return null;
+	}
+
+	public Long updateAppointmentReminderTyps(Long typId, String name) {
+		try {
+
+			AppointmentReminderTyps ac = this
+					.get(typId);
+
+			ac.setName(name);
+			ac.setUpdatetime(new Date());
+
+			if (ac.getTypId() == null) {
+				em.persist(ac);
+			} else {
+				if (!em.contains(ac)) {
+					em.merge(ac);
+				}
+			}
+
+			return typId;
+		} catch (Exception ex2) {
+			log.error("[updateAppointmentReminderTyps]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long addAppointmentReminderTyps(Long user_id, String name, long fieldvalues_id) {
+		try {
+
+			AppointmentReminderTyps ac = new AppointmentReminderTyps();
+
+			ac.setName(name);
+			ac.setStarttime(new Date());
+			ac.setDeleted(false);
+			ac.setUser(usersDao.get(user_id));
+			ac.setFieldvalues_id(fieldvalues_id);
+
+			ac = em.merge(ac);
+			Long category_id = ac.getTypId();
+
+			return category_id;
+		} catch (Exception ex2) {
+			log.error("[addAppointmentReminderTyps]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long deleteAppointmentReminderTyp(Long typId) {
+		try {
+
+			AppointmentReminderTyps ac = this
+					.get(typId);
+
+			log.debug("ac: " + ac);
+
+			if (ac == null) {
+				log.debug("Already deleted / Could not find: " + typId);
+				return typId;
+			}
+			ac.setUpdatetime(new Date());
+			ac.setDeleted(true);
+
+			if (ac.getTypId() == null) {
+				em.persist(ac);
+			} else {
+				if (!em.contains(ac)) {
+					em.merge(ac);
+				}
+			}
+
+			return typId;
+		} catch (Exception ex2) {
+			log.error("[deleteAppointmentReminderTyp]: " + ex2);
+		}
+		return null;
+	}
+
+	public List<AppointmentReminderTyps> getAppointmentReminderTypList(long language_id) {
+		log.debug("getAppointmenetReminderTypList");
+
+		try {
+
+			String hql = "select a from AppointmentReminderTyps a "
+					+ "WHERE a.deleted <> :deleted ";
+
+			TypedQuery<AppointmentReminderTyps> query = em.createQuery(hql, AppointmentReminderTyps.class);
+			query.setParameter("deleted", true);
+
+			List<AppointmentReminderTyps> listAppointmentReminderTyp = query
+					.getResultList();
+			for (AppointmentReminderTyps ti : listAppointmentReminderTyp) {
+				ti.setLabel(fieldLanguagesValuesDao.get(
+						ti.getFieldvalues_id(), language_id));
+			}
+
+			return listAppointmentReminderTyp;
+		} catch (Exception ex2) {
+			log.error("[getAppointmentReminderTypList]: " + ex2);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/calendar/IInvitationManager.java b/src/db/java/org/apache/openmeetings/db/dao/calendar/IInvitationManager.java
new file mode 100644
index 0000000..663496f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/calendar/IInvitationManager.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.calendar;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+
+public interface IInvitationManager {
+	enum MessageType {
+		Create
+		, Update
+		, Cancel
+	}
+	
+	void processInvitation(Appointment a, MeetingMember member, MessageType type);
+	
+	void processInvitation(Appointment a, MeetingMember mm, MessageType type, boolean sendMail);
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java b/src/db/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
new file mode 100644
index 0000000..cfe7521
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class MeetingMemberDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(MeetingMemberDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private UserDao usersDao;
+
+	public MeetingMember get(Long meetingMemberId) {
+		MeetingMember meetingMember = null;
+		try {
+			meetingMember = em.createNamedQuery("getMeetingMemberById", MeetingMember.class)
+					.setParameter("id", meetingMemberId).getSingleResult();
+		} catch (NoResultException ex) {
+		}
+
+		return meetingMember;
+	}
+
+	public List<MeetingMember> getMeetingMembers() {
+		return em.createNamedQuery("getMeetingMembers", MeetingMember.class).getResultList();
+	}
+
+	public Set<Long> getMeetingMemberIdsByAppointment(Long appointmentId) {
+		log.debug("getMeetingMemberIdsByAppointment: " + appointmentId);
+
+		return new HashSet<Long>(em.createNamedQuery("getMeetingMemberIdsByAppointment", Long.class)
+				.setParameter("id", appointmentId)
+				.getResultList());
+	}
+	
+	/**
+	 * Updating MeetingMember
+	 */
+	// -------------------------------------------------------------------------------
+	public MeetingMember update(MeetingMember meetingMember) {
+		if (meetingMember.getId() == null) {
+			em.persist(meetingMember);
+		} else {
+			if (!em.contains(meetingMember)) {
+				meetingMember = em.merge(meetingMember);
+			}
+		}
+		return meetingMember;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java b/src/db/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
new file mode 100644
index 0000000..14f27c4
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
@@ -0,0 +1,415 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.file;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author sebastianwagner
+ * 
+ */
+@Transactional
+public class FileExplorerItemDao {
+
+    private static final Logger log = Red5LoggerFactory.getLogger(
+            FileExplorerItemDao.class,
+            OpenmeetingsVariables.webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+
+    public Long add(String fileName, String fileHash,
+            Long parentFileExplorerItemId, Long ownerId, Long room_id,
+            Long insertedBy, Boolean isFolder, Boolean isImage,
+            Boolean isPresentation, String wmlFilePath,
+            Boolean isStoredWmlFile, Boolean isChart,
+            Long externalFileId, String externalType) {
+        log.debug(".add(): adding file " + fileName+ " roomID: "+room_id);
+        try {
+            FileExplorerItem fileItem = new FileExplorerItem();
+            fileItem.setFileName(fileName);
+            fileItem.setFileHash(fileHash);
+            fileItem.setDeleted(false);
+            fileItem.setParentFileExplorerItemId(parentFileExplorerItemId);
+            fileItem.setOwnerId(ownerId);
+            fileItem.setRoom_id(room_id);
+            fileItem.setInserted(new Date());
+            fileItem.setInsertedBy(insertedBy);
+            fileItem.setIsFolder(isFolder);
+            fileItem.setIsImage(isImage);
+            fileItem.setIsPresentation(isPresentation);
+            fileItem.setUpdated(new Date());
+            fileItem.setWmlFilePath(wmlFilePath);
+            fileItem.setIsStoredWmlFile(isStoredWmlFile);
+            fileItem.setIsChart(isChart);
+            fileItem.setExternalFileId(externalFileId);
+            fileItem.setExternalType(externalType);
+
+			fileItem = em.merge(fileItem);
+			Long fileItemId = fileItem.getFileExplorerItemId();
+
+            log.debug(".add(): file " + fileName + " added as " + fileItemId);
+            return fileItemId;
+        } catch (Exception ex2) {
+            log.error(".add(): ", ex2);
+        }
+        return null;
+    }
+    
+    public Long addFileExplorerItem(FileExplorerItem fileItem) {
+        try {
+
+			fileItem = em.merge(fileItem);
+			Long fileItemId = fileItem.getFileExplorerItemId();
+
+            return fileItemId;
+        } catch (Exception ex2) {
+            log.error("[addFileExplorerItem]", ex2);
+        }
+        return null;
+    }
+
+	public List<FileExplorerItem> getFileExplorerItemsByRoomAndOwner(
+            Long room_id, Long ownerId) {
+        log.debug(".getFileExplorerItemsByRoomAndOwner() started");
+        try {
+            String hql = "SELECT c FROM FileExplorerItem c "
+                    + "WHERE c.deleted <> :deleted "
+                    + "AND c.room_id = :room_id " + "AND c.ownerId = :ownerId "
+                    + "ORDER BY c.isFolder DESC, c.fileName ";
+
+			TypedQuery<FileExplorerItem> query = em.createQuery(hql, FileExplorerItem.class);
+			query.setParameter("deleted", true);
+			query.setParameter("room_id",room_id);
+			query.setParameter("ownerId",ownerId);
+			
+			List<FileExplorerItem> fileExplorerList = query.getResultList();
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerItemsByRoomAndOwner]: ", ex2);
+        }
+        return null;
+    }
+
+    public FileExplorerItem[] getFileExplorerItemsByRoom(Long room_id,
+            Long parentFileExplorerItemId) {
+        log.debug("getFileExplorerItemsByRoom room_id :: "+room_id);
+        try {
+
+			String hql = "SELECT c FROM FileExplorerItem c " +
+					"WHERE c.deleted <> :deleted " +
+					"AND c.room_id = :room_id " +
+					"AND c.ownerId IS NULL " +
+					"AND c.parentFileExplorerItemId = :parentFileExplorerItemId " +
+					"ORDER BY c.isFolder DESC, c.fileName ";
+			
+			TypedQuery<FileExplorerItem> query = em.createQuery(hql, FileExplorerItem.class);
+			query.setParameter("deleted", true);
+			query.setParameter("room_id",room_id);
+			query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
+			
+	        FileExplorerItem[] fileExplorerList = query.getResultList().toArray(new FileExplorerItem[0]);
+			
+			return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerRootItemsByRoom]: ", ex2);
+        }
+        return null;
+    }
+
+    public FileExplorerItem[] getFileExplorerItemsByOwner(Long ownerId,
+            Long parentFileExplorerItemId) {
+        log.debug(".getFileExplorerItemsByOwner() started");
+        try {
+
+            String hql = "SELECT c FROM FileExplorerItem c "
+                    + "WHERE c.deleted <> :deleted "
+                    + "AND c.ownerId = :ownerId "
+                    + "AND c.parentFileExplorerItemId = :parentFileExplorerItemId "
+                    + "ORDER BY c.isFolder DESC, c.fileName ";
+
+			TypedQuery<FileExplorerItem> query = em.createQuery(hql, FileExplorerItem.class);
+			query.setParameter("deleted", true);
+			query.setParameter("ownerId",ownerId);
+			query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
+			
+            FileExplorerItem[] fileExplorerList = query.getResultList().toArray(new FileExplorerItem[0]);
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerRootItemsByOwner]: ", ex2);
+        }
+        return null;
+    }
+
+    public FileExplorerItem[] getFileExplorerItemsByParent(
+            Long parentFileExplorerItemId) {
+        log.debug(".getFileExplorerItemsByParent() started");
+        try {
+
+            String hql = "SELECT c FROM FileExplorerItem c "
+                    + "WHERE c.deleted <> :deleted "
+                    + "AND c.parentFileExplorerItemId = :parentFileExplorerItemId "
+                    + "ORDER BY c.isFolder DESC, c.fileName ";
+
+			TypedQuery<FileExplorerItem> query = em.createQuery(hql, FileExplorerItem.class);
+			query.setParameter("deleted", true);
+			query.setParameter("parentFileExplorerItemId", parentFileExplorerItemId);
+			
+            FileExplorerItem[] fileExplorerList = query.getResultList().toArray(new FileExplorerItem[0]);
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerRootItemsByOwner]: ", ex2);
+        }
+        return null;
+    }
+
+    public FileExplorerItem getFileExplorerItemsByHash(String hash) {
+        try {
+
+			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getByHash", FileExplorerItem.class);
+			query.setParameter("fileHash", hash);
+			
+			FileExplorerItem fileExplorerList = null;
+			try {
+				fileExplorerList = query.getSingleResult();
+		    } catch (NoResultException ex) {
+		    }
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerItemsById]: ", ex2);
+        }
+        return null;
+    }
+    
+    public FileExplorerItem getFileExplorerItemsById(Long fileExplorerItemId) {
+        try {
+
+			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getById", FileExplorerItem.class);
+			query.setParameter("fileExplorerItemId", fileExplorerItemId);
+			
+			FileExplorerItem fileExplorerList = null;
+			try {
+				fileExplorerList = query.getSingleResult();
+		    } catch (NoResultException ex) {
+		    }
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerItemsById]: ", ex2);
+        }
+        return null;
+    }
+    
+    public FileExplorerItem getFileExplorerItemsByExternalIdAndType(Long externalFileId, String externalType) {
+        log.debug(".getFileExplorerItemsByExternalIdAndType() started");
+
+        try {
+
+            String hql = "SELECT c FROM FileExplorerItem c "
+                    + "WHERE c.externalFileId = :externalFileId " +
+            		"AND c.externalType LIKE :externalType";
+
+			TypedQuery<FileExplorerItem> query = em.createQuery(hql, FileExplorerItem.class);
+			query.setParameter("externalFileId", externalFileId);
+			query.setParameter("externalType", externalType);
+			
+			FileExplorerItem fileExplorerList = null;
+			try {
+				fileExplorerList = query.getSingleResult();
+		    } catch (NoResultException ex) {
+		    }
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerItemsByExternalIdAndType]: ", ex2);
+        }
+        return null;
+    }
+
+    public List<FileExplorerItem> getFileExplorerItems() {
+        log.debug(".getFileExplorerItems() started");
+
+        try {
+			TypedQuery<FileExplorerItem> query = em.createNamedQuery("getAllFiles", FileExplorerItem.class);
+
+            List<FileExplorerItem> fileExplorerList = query.getResultList();
+
+            return fileExplorerList;
+        } catch (Exception ex2) {
+            log.error("[getFileExplorerItems]: ", ex2);
+        }
+        return null;
+    }    
+
+    /**
+     * @param fileExplorerItemId
+     */
+    public void deleteFileExplorerItem(Long fileExplorerItemId) {
+        log.debug(".deleteFileExplorerItem() started");
+
+        try {
+
+            FileExplorerItem fId = this
+                    .getFileExplorerItemsById(fileExplorerItemId);
+
+            fId.setDeleted(true);
+            fId.setUpdated(new Date());
+
+			if (fId.getFileExplorerItemId() == 0) {
+				em.persist(fId);
+		    } else {
+		    	if (!em.contains(fId)) {
+		    		em.merge(fId);
+			    }
+			}
+        } catch (Exception ex2) {
+            log.error("[deleteFileExplorerItem]: ", ex2);
+        }
+    }
+    
+    public void deleteFileExplorerItemByExternalIdAndType(Long externalFilesid, String externalType) {
+        log.debug(".deleteFileExplorerItemByExternalIdAndType() started");
+
+        try {
+
+            FileExplorerItem fId = this
+                    .getFileExplorerItemsByExternalIdAndType(externalFilesid, externalType);
+
+            if (fId == null) {
+            	throw new Exception("externalFilesid: "+externalFilesid+" and externalType: "+externalType+" Not found");
+            }
+            
+            fId.setDeleted(true);
+            fId.setUpdated(new Date());
+
+			if (fId.getFileExplorerItemId() == 0) {
+				em.persist(fId);
+		    } else {
+		    	if (!em.contains(fId)) {
+		    		em.merge(fId);
+			    }
+			}
+        } catch (Exception ex2) {
+            log.error("[deleteFileExplorerItemByExternalIdAndType]: ", ex2);
+        }
+    }
+
+    /**
+     * @param fileExplorerItemId
+     * @param fileName
+     */
+    public void updateFileOrFolderName(Long fileExplorerItemId, String fileName) {
+        log.debug(".updateFileOrFolderName() started");
+
+        try {
+
+            FileExplorerItem fId = this
+                    .getFileExplorerItemsById(fileExplorerItemId);
+
+            fId.setFileName(fileName);
+            fId.setUpdated(new Date());
+
+			if (fId.getFileExplorerItemId() == 0) {
+				em.persist(fId);
+		    } else {
+		    	if (!em.contains(fId)) {
+		    		em.merge(fId);
+			    }
+			}
+        } catch (Exception ex2) {
+            log.error("[updateFileOrFolderName]: ", ex2);
+        }
+    }
+
+    public void updateFileOrFolder(FileExplorerItem fId) {
+        log.debug(".updateFileOrFolder() started");
+        try {
+            // fId.setUpdated(new Date());
+
+			if (fId.getFileExplorerItemId() == 0) {
+				em.persist(fId);
+		    } else {
+		    	if (!em.contains(fId)) {
+		    		em.merge(fId);
+			    }
+			}
+        } catch (Exception ex2) {
+            log.error("[updateFileOrFolder]: ", ex2);
+        }
+    }
+
+    /**
+     * @param fileExplorerItemId
+     * @param newParentFileExplorerItemId
+     * @param isOwner
+     */
+    public void moveFile(Long fileExplorerItemId,
+            Long parentFileExplorerItemId, Long room_id, Boolean isOwner,
+            Long ownerId) {
+        log.debug(".moveFile() started");
+        try {
+
+            FileExplorerItem fId = this
+                    .getFileExplorerItemsById(fileExplorerItemId);
+
+            fId.setParentFileExplorerItemId(parentFileExplorerItemId);
+
+            if (parentFileExplorerItemId == 0) {
+                if (isOwner) {
+                    // move to personal Folder
+                    fId.setOwnerId(ownerId);
+                } else {
+                    // move to public room folder
+                    fId.setOwnerId(null);
+                    fId.setRoom_id(room_id);
+                }
+            } else {
+                fId.setOwnerId(null);
+            }
+
+            fId.setUpdated(new Date());
+
+			if (fId.getFileExplorerItemId() == 0) {
+				em.persist(fId);
+		    } else {
+		    	if (!em.contains(fId)) {
+		    		em.merge(fId);
+			    }
+			}
+        } catch (Exception ex2) {
+            log.error("[updateFileOrFolderName]: ", ex2);
+        }
+    }
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguageDao.java b/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguageDao.java
new file mode 100644
index 0000000..0c95c0f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguageDao.java
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.label;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+@Transactional
+public class FieldLanguageDao implements Serializable {
+
+	private static final long serialVersionUID = -2714490167956230305L;
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			FieldLanguageDao.class, OpenmeetingsVariables.webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	public long getNextAvailableId() {
+		TypedQuery<Long> q = em.createQuery("SELECT MAX(fl.language_id) from FieldLanguage fl", Long.class);
+		return q.getSingleResult() + 1;
+	}
+	
+	public FieldLanguage addLanguage(int langId, String langName, Boolean langRtl, String code) {
+		try {
+			FieldLanguage fl = new FieldLanguage();
+			fl.setLanguage_id((long)langId);
+			fl.setStarttime(new Date());
+			fl.setDeleted(false);
+			fl.setName(langName);
+			fl.setRtl(langRtl);
+			fl.setCode(code);
+
+			fl = em.merge(fl);
+
+			//Eagerly FETCH values list
+			TypedQuery<FieldLanguage> q = em.createQuery("select fl from FieldLanguage fl LEFT JOIN FETCH fl.languageValues WHERE fl.language_id = :langId", FieldLanguage.class);
+			q.setParameter("langId", langId);
+			List<FieldLanguage> results = q.getResultList();
+			
+			return results != null && !results.isEmpty() ? results.get(0) : null;
+		} catch (Exception ex2) {
+			log.error("[addLanguage]: ", ex2);
+		}
+		return null;
+	}
+
+	public void emptyFieldLanguage() {
+		try {
+			TypedQuery<FieldLanguage> q = em.createQuery("delete from FieldLanguage", FieldLanguage.class);
+			q.executeUpdate();
+		} catch (Exception ex2) {
+			log.error("[emptyFieldLanguage]: ", ex2);
+		}
+	}
+
+	public void delete(FieldLanguage fl) {
+		fl.setUpdatetime(new Date());
+		fl.setDeleted(true);
+		em.merge(fl);
+	}
+
+	public void updateLanguage(FieldLanguage fl) {
+		if (fl.getLanguage_id() == null) {
+			em.persist(fl);
+		} else {
+			if (!em.contains(fl)) {
+				em.merge(fl);
+			}
+		}
+	}
+
+	public FieldLanguage getFieldLanguageById(Long language_id) {
+		try {
+			String hql = "select c from FieldLanguage as c "
+					+ "WHERE c.deleted <> :deleted "
+					+ "AND c.language_id = :language_id";
+			TypedQuery<FieldLanguage> query = em.createQuery(hql, FieldLanguage.class);
+			query.setParameter("deleted", true);
+			query.setParameter("language_id", language_id);
+			FieldLanguage fl = null;
+			try {
+				fl = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+			return fl;
+		} catch (Exception ex2) {
+			log.error("[getLanguageById]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FieldLanguage> getLanguages() {
+		try {
+			String hql = "select c from FieldLanguage as c "
+					+ "WHERE c.deleted <> :deleted ";
+			TypedQuery<FieldLanguage> query = em.createQuery(hql, FieldLanguage.class);
+			query.setParameter("deleted", true);
+			List<FieldLanguage> ll = query.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getLanguages]: ", ex2);
+		}
+		return null;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguagesValuesDao.java b/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguagesValuesDao.java
new file mode 100644
index 0000000..7c94e69
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/label/FieldLanguagesValuesDao.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.label;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * CRUD operations for {@link Fieldlanguagesvalues}
+ * 
+ * @author solomax, swagner
+ * 
+ */
+@Transactional
+public class FieldLanguagesValuesDao implements IDataProviderDao<Fieldlanguagesvalues> {
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#get(int, int)
+	 */
+	public List<Fieldlanguagesvalues> get(int first, int count) {
+		return get(configurationDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1"), first, count);
+	}
+
+	public List<Fieldlanguagesvalues> get(String search, int start, int count, String sort) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	public List<Fieldlanguagesvalues> get(Long language_id, String search, int start, int count, String sort) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	/**
+	 * Advanced query to set the language id
+	 * 
+	 * @param language_id
+	 * @param first
+	 * @param count
+	 * @return
+	 */
+	public List<Fieldlanguagesvalues> get(Long language_id, int first, int count) {
+		// all Fieldlanguagesvalues in current Language
+		TypedQuery<Fieldlanguagesvalues> q = em.createNamedQuery(
+				"allFieldLanguageValues", Fieldlanguagesvalues.class);
+		q.setParameter("language_id", language_id);
+		q.setFirstResult(first);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#get(long)
+	 */
+	public Fieldlanguagesvalues get(long id) {
+		TypedQuery<Fieldlanguagesvalues> q = em.createNamedQuery(
+				"getFieldLanguagesValuesById", Fieldlanguagesvalues.class);
+		q.setParameter("id", id);
+		Fieldlanguagesvalues flv = null;
+		try {
+			flv = q.getSingleResult();
+		} catch (NoResultException e) {
+
+		}
+		return flv;
+	}
+
+	public Fieldlanguagesvalues get(long fieldValuesId, long langId) {
+		TypedQuery<Fieldlanguagesvalues> q = em.createNamedQuery(
+				"getFieldLanguagesValuesByValueAndLang", Fieldlanguagesvalues.class);
+		q.setParameter("fieldValuesId", fieldValuesId);
+		q.setParameter("lang", langId);
+		Fieldlanguagesvalues flv = null;
+		try {
+			flv = q.getSingleResult();
+		} catch (NoResultException e) {
+		}
+		return flv;
+	}
+
+	public String getString(long fieldValuesId, long langId) {
+		Fieldlanguagesvalues v = get(fieldValuesId, langId);
+		return v == null ? null : v.getValue();
+	}
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#count()
+	 */
+	public long count() {
+		TypedQuery<Long> q = em.createNamedQuery("getFieldCount", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
+	 * .beans.OmEntity, long)
+	 */
+	public Fieldlanguagesvalues update(Fieldlanguagesvalues entity, Long userId) {
+		entity.setUpdatetime(new Date());
+		if (entity.getFieldlanguagesvalues_id() == null) {
+			em.persist(entity);
+		} else {
+			entity = em.merge(entity);
+		}
+		return entity;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
+	 * .beans.OmEntity, long)
+	 */
+	public void delete(Fieldlanguagesvalues entity, Long userId) {
+		entity.setDeleted(true);
+		entity.setUpdatetime(new Date());
+		entity = em.merge(entity);
+	}
+
+	public List<Fieldlanguagesvalues> getMixedFieldValuesList(Long language_id) {
+		// all Fieldlanguagesvalues in current Language
+		TypedQuery<Fieldlanguagesvalues> q = em.createNamedQuery("allFieldLanguageValues", Fieldlanguagesvalues.class);
+		q.setParameter("language_id", language_id);
+		return q.getResultList();
+	}
+
+	public List<Fieldlanguagesvalues> getUntranslatedFieldValuesList(Long language_id) {
+		// all FieldValuesIds in current Language
+		TypedQuery<Long> q0 = em.createNamedQuery("allFieldValuesIds", Long.class);
+		q0.setParameter("language_id", language_id);
+		List<Long> translatedIds = q0.getResultList();
+		
+		// all not translated values from english
+		TypedQuery<Fieldlanguagesvalues> q1 = em.createNamedQuery("allNotTranslatedValues", Fieldlanguagesvalues.class);
+		q1.setParameter("id_list", translatedIds);
+
+		return q1.getResultList();
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java b/src/db/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java
new file mode 100644
index 0000000..d76a93f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/label/FieldValueDao.java
@@ -0,0 +1,139 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.label;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class FieldValueDao implements IDataProviderDao<Fieldvalues> {
+	public final static String[] searchFields = {"value", "fieldvalues.name"};
+	
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private FieldLanguagesValuesDao flvDaoImpl;
+
+	private Long getDefaultLanguage() {
+		return configurationDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1");
+	}
+	
+	public Fieldvalues get(long id) {
+		TypedQuery<Fieldvalues> q = em.createNamedQuery("getFieldByIdAndLanguage", Fieldvalues.class);
+		q.setParameter("id", id);
+		List<Fieldvalues> l = q.getResultList();
+		return l == null || l.isEmpty() ? null : l.get(0);
+	}
+
+	public List<Fieldvalues> get(int start, int count) {
+		return get(getDefaultLanguage(), start, count);
+	}
+
+	public List<Fieldvalues> get(String search, int start, int count, String sort) {
+		return get(getDefaultLanguage(), search, start, count, sort);
+	}
+	
+	public List<Fieldvalues> get(Long language_id, String search, int start, int count, String sort) {
+		String sql = DaoHelper.getSearchQuery("Fieldlanguagesvalues", "flv", null, search, true, false, "flv.fieldvalues.deleted = false AND flv.language_id = :lang", sort, searchFields);
+		TypedQuery<Fieldlanguagesvalues> q = em.createQuery(sql, Fieldlanguagesvalues.class);
+		q.setParameter("lang", language_id);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		
+		//now lets create the list of Fieldvalues
+		List<Fieldlanguagesvalues> flvList = q.getResultList();
+		List<Fieldvalues> r = new ArrayList<Fieldvalues>(flvList.size());
+		for (Fieldlanguagesvalues flv : flvList) {
+			Fieldvalues fv = flv.getFieldvalues();
+			fv.setFieldlanguagesvalue(flv);
+			r.add(fv);
+		}
+		return r;
+	}
+	
+	public List<Fieldvalues> get(Long language_id, int start, int count) {
+		TypedQuery<Fieldvalues> q = em.createNamedQuery("getFieldByLanguage", Fieldvalues.class);
+		//q.setParameter("lang", language_id); //FIXME commented for now
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		List<Fieldvalues> result = q.getResultList();
+		for (Fieldvalues fv : result) {
+			//FIXME ineffective !!!!!!!!!!!!!!!!!!!!
+			Fieldlanguagesvalues flv = flvDaoImpl.get(fv.getFieldvalues_id(), language_id);
+			if (flv == null) {
+				flv = new Fieldlanguagesvalues();
+				flv.setLanguage_id(language_id);
+				flv.setFieldvalues(fv);
+			}
+			fv.setFieldlanguagesvalue(flv);
+		}
+		return result;
+	}
+
+	public long count() {
+		TypedQuery<Long> q = em.createNamedQuery("getFieldCount", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		return count(getDefaultLanguage(), search);
+	}
+	
+	public long count(Long language_id, String search) {
+		String sql = DaoHelper.getSearchQuery("Fieldlanguagesvalues", "flv", null, search, true, true, "flv.fieldvalues.deleted = false AND flv.language_id = :lang", null, searchFields);
+		TypedQuery<Long> q = em.createQuery(sql, Long.class);
+		q.setParameter("lang", language_id);
+		return q.getSingleResult();
+	}
+	
+	public Fieldvalues update(Fieldvalues entity, Long userId) {
+		entity.setDeleted(false);
+		if (entity.getFieldvalues_id() == null) {
+			entity.setFieldvalues_id(count() + 1);
+			entity.setStarttime(new Date());
+			em.persist(entity);
+		} else {
+			entity = em.merge(entity);
+		}
+		return entity;
+	}
+
+	public void delete(Fieldvalues entity, Long userId) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java b/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java
new file mode 100644
index 0000000..dbead7a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.log;
+
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.entity.log.ConferenceLog;
+import org.apache.openmeetings.db.entity.log.ConferenceLogType;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ConferenceLogDao {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(ConferenceLogDao.class, OpenmeetingsVariables.webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private ConferenceLogTypeDao conferenceLogTypeDao;
+
+	public Long addConferenceLog(String eventType, Long userId, String streamid, 
+			Long room_id, String userip, String scopeName, 
+			String externalUserId, String externalUserType, String email,
+			String firstname, String lastname) {
+		try {
+			
+			ConferenceLogType confLogType = conferenceLogTypeDao.getConferenceLogTypeByEventName(eventType);
+			if (confLogType == null) {
+				conferenceLogTypeDao.addConferenceLogType(eventType);
+				confLogType = conferenceLogTypeDao.getConferenceLogTypeByEventName(eventType);
+			}
+			
+			ConferenceLog confLog = new ConferenceLog();
+			confLog.setConferenceLogType(confLogType);
+			confLog.setInserted(new Date());
+			confLog.setUserId(userId);
+			confLog.setStreamid(streamid);
+			confLog.setScopeName(scopeName);
+			confLog.setRoom_id(room_id);
+			confLog.setUserip(userip);
+			confLog.setExternalUserId(externalUserId);
+			confLog.setExternalUserType(externalUserType);
+			confLog.setFirstname(firstname);
+			confLog.setLastname(lastname);
+			confLog.setEmail(email);
+			
+			confLog = em.merge(confLog);
+			Long confLogId = confLog.getConferenceLogId();
+
+			return confLogId;
+		} catch (Exception ex2) {
+			log.error("[addConferenceLog]: ",ex2);
+		}
+		return null;
+	}
+	
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogTypeDao.java b/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogTypeDao.java
new file mode 100644
index 0000000..22472ae
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/log/ConferenceLogTypeDao.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.log;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.log.ConferenceLogType;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ConferenceLogTypeDao {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(ConferenceLogTypeDao.class, OpenmeetingsVariables.webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+
+	public Long addConferenceLogType(String eventType) {
+		try {
+			ConferenceLogType confLogType = new ConferenceLogType();
+			confLogType.setEventType(eventType);
+			confLogType.setInserted(new Date());
+			confLogType = em.merge(confLogType);
+			return confLogType.getConferenceLogTypeId();
+		} catch (Exception ex2) {
+			log.error("[addConferenceLogType]: ", ex2);
+		}
+		return null;
+	}
+	
+	public ConferenceLogType getConferenceLogTypeByEventName(String eventType) {
+		try {
+			TypedQuery<ConferenceLogType> query = em.createNamedQuery("getConferenceLogTypeByEventName", ConferenceLogType.class);
+			query.setParameter("eventType",eventType);
+			
+			//Seems like this does throw an error sometimes cause it does not return a unique Result
+			//ConferenceLogType confLogType = (ConferenceLogType) query.getSingleResult();
+			List<ConferenceLogType> confLogTypes = query.getResultList();
+			if (confLogTypes != null && confLogTypes.size() > 0) {
+				return confLogTypes.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("[getConferenceLogTypeByEventName]: ", ex2);
+		}
+		return null;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
new file mode 100644
index 0000000..3d9c231
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
@@ -0,0 +1,355 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+import static org.apache.openmeetings.util.OmFileHelper.getOggRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.record.RecordingContainerData;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author sebastianwagner
+ * 
+ */
+@Transactional
+public class FlvRecordingDao {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
+	
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private UserDao userDao;
+
+	public FlvRecording get(Long flvRecordingId) {
+		try {
+			TypedQuery<FlvRecording> query = em.createNamedQuery("getRecordingById", FlvRecording.class);
+			query.setParameter("id", flvRecordingId);
+
+			FlvRecording flvRecording = null;
+			try {
+				flvRecording = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+			return flvRecording;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingById]: ", ex2);
+		}
+		return null;
+	}
+
+	public FlvRecording getRecordingByHash(String hash) {
+		try {
+			TypedQuery<FlvRecording> query = em.createNamedQuery("getRecordingByHash", FlvRecording.class);
+			query.setParameter("fileHash", hash);
+
+			try {
+				return query.getSingleResult();
+			} catch (NoResultException ex) {
+				// noop
+			}
+		} catch (Exception ex2) {
+			log.error("[getRecordingByHash]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordings() {
+		try {
+			return em.createQuery("SELECT c FROM FlvRecording c WHERE c.deleted = false", FlvRecording.class)
+					.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordings]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordingByExternalUserId(String externalUserId, String externalUserType) {
+		try {
+			log.debug("getFlvRecordingByExternalUserId :externalUserId: {}; externalType: {}", externalUserId, externalUserType);
+
+			TypedQuery<FlvRecording> query = em.createNamedQuery("getRecordingsByExternalUser", FlvRecording.class);
+			query.setParameter("externalUserId", externalUserId);
+			query.setParameter("externalUserType", externalUserType);
+
+			List<FlvRecording> flvRecordingList = query.getResultList();
+
+			log.debug("getFlvRecordingByExternalUserId :: " + flvRecordingList.size());
+
+			return flvRecordingList;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingByExternalUserId]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordingByExternalRoomTypeAndCreator(String externalRoomType, Long insertedBy) {
+		try {
+
+			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: " + externalRoomType);
+
+			String hql = "SELECT c FROM FlvRecording c, Room r WHERE c.room_id = r.rooms_id "
+					+ "AND r.externalRoomType LIKE :externalRoomType AND c.insertedBy LIKE :insertedBy "
+					+ "AND c.deleted = false";
+
+			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
+			query.setParameter("externalRoomType", externalRoomType);
+			query.setParameter("insertedBy", insertedBy);
+			query.setParameter("deleted", true);
+
+			List<FlvRecording> flvRecordingList = query.getResultList();
+
+			log.debug("getFlvRecordingByExternalRoomType :: " + flvRecordingList.size());
+
+			return flvRecordingList;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingByExternalRoomType]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getAllFlvRecordings() {
+		try {
+			String hql = "SELECT c FROM FlvRecording c LEFT JOIN FETCH c.flvRecordingMetaData ORDER BY c.flvRecordingId";
+
+			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
+
+			return query.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getAllFlvRecordings]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordingByExternalRoomType(String externalRoomType) {
+		try {
+
+			log.debug("getFlvRecordingByExternalRoomType :externalRoomType: " + externalRoomType);
+
+			String hql = "SELECT c FROM FlvRecording c, Room r " + "WHERE c.room_id = r.rooms_id "
+					+ "AND r.externalRoomType LIKE :externalRoomType " + "AND c.deleted <> :deleted ";
+
+			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
+			query.setParameter("externalRoomType", externalRoomType);
+			query.setParameter("deleted", true);
+
+			List<FlvRecording> flvRecordingList = query.getResultList();
+
+			log.debug("getFlvRecordingByExternalRoomType :: " + flvRecordingList.size());
+
+			return flvRecordingList;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingByExternalRoomType]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getRecordingsByExternalType(String externalType) {
+		try {
+			log.debug("getRecordingsByExternalType :externalType: " + externalType);
+
+			TypedQuery<FlvRecording> query = em.createNamedQuery("getRecordingsByExternalType", FlvRecording.class);
+			query.setParameter("externalType", externalType);
+
+			return query.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getRecordingsByExternalType]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordingRootByPublic(Long orgId) {
+		TypedQuery<FlvRecording> q = em.createNamedQuery(orgId == null ? "getRecordingsPublic" : "getRecordingsByOrganization", FlvRecording.class);
+		if (orgId != null) {
+			q.setParameter("organization_id", orgId);
+		}
+		return q.getResultList();
+	}
+
+	public List<FlvRecording> getFlvRecordingRootByOwner(Long ownerId) {
+		return em.createNamedQuery("getRecordingsByOwner", FlvRecording.class).setParameter("ownerId", ownerId).getResultList();
+	}
+
+	public List<FlvRecording> getFlvRecordingByRoomId(Long room_id) {
+		try {
+
+			String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.room_id = :room_id "
+					+ "ORDER BY c.folder DESC, c.fileName ";
+
+			TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
+			query.setParameter("deleted", true);
+			query.setParameter("room_id", room_id);
+
+			List<FlvRecording> flvRecordingList = query.getResultList();
+
+			return flvRecordingList;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingByOwner]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecording> getFlvRecordingByParent(Long parentId) {
+		return em.createNamedQuery("getRecordingsByParent", FlvRecording.class).setParameter("parentId", parentId).getResultList();
+	}
+
+	public void updateFlvRecordingEndTime(Long flvRecordingId, Date recordEnd, Long organization_id) {
+		try {
+
+			FlvRecording fId = get(flvRecordingId);
+
+			fId.setProgressPostProcessing(0);
+			fId.setRecordEnd(recordEnd);
+			fId.setOrganization_id(organization_id);
+
+			update(fId);
+		} catch (Exception ex2) {
+			log.error("[updateFlvRecordingEndTime]: ", ex2);
+		}
+	}
+
+	/**
+	 * @param fileExplorerItemId
+	 */
+	public boolean delete(Long flvRecordingId) {
+		try {
+
+			FlvRecording f = get(flvRecordingId);
+			return delete(f);
+		} catch (Exception ex2) {
+			log.error("[delete]: ", ex2);
+		}
+
+		return false;
+	}
+
+	public boolean delete(FlvRecording f) {
+		if (f == null || f.getFlvRecordingId() == 0) {
+			return false;
+		}
+		f.setDeleted(true);
+		update(f);
+		return true;
+	}
+	
+	public FlvRecording update(FlvRecording f) {
+		try {
+			if (f.getFlvRecordingId() == 0) {
+				f.setInserted(new Date());
+				em.persist(f);
+			} else {
+				f.setUpdated(new Date());
+				if (!em.contains(f)) {
+					f = em.merge(f);
+				}
+			}
+
+		} catch (Exception ex2) {
+			log.error("[update]: ", ex2);
+		}
+		return f;
+	}
+
+	public void resetProcessingStatus() {
+		em.createNamedQuery("resetRecordingProcessingStatus")
+			.setParameter("error", Status.ERROR)
+			.setParameter("recording", Status.RECORDING)
+			.setParameter("converting", Status.CONVERTING)
+			.executeUpdate();
+	}
+	
+	public RecordingContainerData getRecordingContainerData(long userId) {
+		try {
+			RecordingContainerData containerData = new RecordingContainerData();
+	
+			// User Home Recordings
+			List<FlvRecording> homeFlvRecordings = getFlvRecordingRootByOwner(userId);
+			long homeFileSize = 0;
+	
+			for (FlvRecording homeFlvRecording : homeFlvRecordings) {
+				homeFileSize += getRecordingSize(homeFlvRecording);
+			}
+	
+			containerData.setUserHomeSize(homeFileSize);
+			
+			// Public Recordings
+			long publicFileSize = 0;
+			
+			//get all organizations the user can view
+			for (Organisation_Users ou : userDao.get(userId).getOrganisation_users()) {
+				List<FlvRecording>publicFlvRecordings = getFlvRecordingRootByPublic(ou.getOrganisation().getOrganisation_id());
+				//get sizes
+				for (FlvRecording publicFlvRecording : publicFlvRecordings) {
+					publicFileSize += getRecordingSize(publicFlvRecording);
+				}
+			}
+			containerData.setPublicFileSize(publicFileSize);
+
+			return containerData;
+		} catch (Exception ex2) {
+			log.error("[getRecordingContainerData]: ", ex2);
+		}
+		return null;
+	}
+	
+	private long getRecordingSize(FlvRecording r) {
+		long size = 0;
+
+		if (isRecordingExists(r.getFileHash())) {
+			size += getRecording(r.getFileHash()).length();
+		}
+		if (isRecordingExists(r.getAlternateDownload())) {
+			size += getRecording(r.getAlternateDownload()).length();
+		}
+		if (isRecordingExists(r.getPreviewImage())) {
+			size += getRecording(r.getPreviewImage()).length();
+		}
+		if (isRecordingExists(r.getFileHash() + MP4_EXTENSION)) {
+			size += getMp4Recording(r.getFileHash()).length();
+		}
+		if (isRecordingExists(r.getFileHash() + OGG_EXTENSION)) {
+			size += getOggRecording(r.getFileHash()).length();
+		}
+		for (FlvRecording flvRecording : getFlvRecordingByParent(r.getFlvRecordingId())) {
+			size += getRecordingSize(flvRecording);
+		}
+		return size;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
new file mode 100644
index 0000000..5548ffc
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingLogDao.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.record;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class FlvRecordingLogDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	
+	public long countErrors(Long recordingId) {
+		return em.createNamedQuery("countErrorRecordingLogsByRecording", Long.class)
+				.setParameter("recId", recordingId).getSingleResult();
+	}	
+	
+	public List<FlvRecordingLog> getByRecordingId(Long recordingId) {
+		return em.createNamedQuery("getRecordingLogsByRecording", FlvRecordingLog.class)
+				.setParameter("recId", recordingId).getResultList();
+	}	
+	
+	public void deleteByRecordingId(Long recordingId) {
+		em.createNamedQuery("deleteErrorRecordingLogsByRecording").setParameter("recId", recordingId).executeUpdate();
+	}
+	
+	public Long addFLVRecordingLog(String msgType, FlvRecording flvRecording, ConverterProcessResult returnMap) {
+		try { 
+			FlvRecordingLog flvRecordingLog = new FlvRecordingLog();
+			flvRecordingLog.setInserted(new Date());
+			flvRecordingLog.setExitValue(returnMap.getExitValue());
+			flvRecordingLog.setFlvRecording(flvRecording);
+			flvRecordingLog.setFullMessage(returnMap.buildLogMessage());
+			flvRecordingLog.setMsgType(msgType);
+			
+			flvRecordingLog = em.merge(flvRecordingLog);
+			Long flvRecordingLogId = flvRecordingLog.getFlvRecordingLogId();
+			
+			return flvRecordingLogId;
+		} catch (Exception ex2) {
+			log.error("[addFLVRecordingLog]: ",ex2);
+		}
+		return -1L;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
new file mode 100644
index 0000000..1b5677d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDataDao.java
@@ -0,0 +1,162 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.record;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class FlvRecordingMetaDataDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingMetaDataDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private FlvRecordingDao flvRecordingDao;
+
+	public FlvRecordingMetaData get(Long flvRecordingMetaDataId) {
+		try {
+			TypedQuery<FlvRecordingMetaData> query = em.createNamedQuery("getMetaById", FlvRecordingMetaData.class);
+			query.setParameter("id", flvRecordingMetaDataId);
+
+			FlvRecordingMetaData flvRecordingMetaData = null;
+			try {
+				flvRecordingMetaData = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+			return flvRecordingMetaData;
+		} catch (Exception ex2) {
+			log.error("[get]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<FlvRecordingMetaData> getByRecording(Long recordingId) {
+		return em.createNamedQuery("getMetaByRecording", FlvRecordingMetaData.class).setParameter("recordingId", recordingId).getResultList();
+	}
+
+	public List<FlvRecordingMetaData> getAudioMetaDataByRecording(Long flvRecordingId) {
+		try {
+			TypedQuery<FlvRecordingMetaData> query = em.createNamedQuery("getAudioMetaByRecording", FlvRecordingMetaData.class);
+			query.setParameter("recordingId", flvRecordingId);
+			query.setParameter("none", Status.NONE);
+
+			return query.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getAudioMetaDataByRecording]: ", ex2);
+		}
+		return null;
+	}
+
+	public FlvRecordingMetaData getScreenMetaDataByRecording(Long flvRecordingId) {
+		try {
+			TypedQuery<FlvRecordingMetaData> query = em.createNamedQuery("getScreenMetaByRecording", FlvRecordingMetaData.class);
+			query.setParameter("recordingId", flvRecordingId);
+
+			List<FlvRecordingMetaData> flvRecordingMetaDatas = query.getResultList();
+
+			if (flvRecordingMetaDatas.size() > 0) {
+				return flvRecordingMetaDatas.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("[getScreenMetaDataByRecording]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long addFlvRecordingMetaData(Long flvRecordingId, String freeTextUserName, Date recordStart, Boolean isAudioOnly,
+			Boolean isVideoOnly, Boolean isScreenData, String streamName, Integer interiewPodId) {
+		try {
+
+			FlvRecordingMetaData flvRecordingMetaData = new FlvRecordingMetaData();
+
+			flvRecordingMetaData.setDeleted(false);
+
+			flvRecordingMetaData.setFlvRecording(flvRecordingDao.get(flvRecordingId));
+			flvRecordingMetaData.setFreeTextUserName(freeTextUserName);
+			flvRecordingMetaData.setInserted(new Date());
+
+			flvRecordingMetaData.setRecordStart(recordStart);
+
+			flvRecordingMetaData.setAudioOnly(isAudioOnly);
+			flvRecordingMetaData.setVideoOnly(isVideoOnly);
+			flvRecordingMetaData.setScreenData(isScreenData);
+
+			flvRecordingMetaData.setStreamName(streamName);
+
+			flvRecordingMetaData.setInteriewPodId(interiewPodId);
+
+			flvRecordingMetaData = em.merge(flvRecordingMetaData);
+			Long flvRecordingMetaDataId = flvRecordingMetaData.getFlvRecordingMetaDataId();
+
+			return flvRecordingMetaDataId;
+
+		} catch (Exception ex2) {
+			log.error("[addFlvRecordingMetaData]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long updateFlvRecordingMetaDataEndDate(Long metaId, Date recordEnd) {
+		try {
+			FlvRecordingMetaData meta = get(metaId);
+
+			meta.setRecordEnd(recordEnd);
+			
+			log.debug("updateFlvRecordingMetaDataEndDate :: Start Date :" + meta.getRecordStart());
+			log.debug("updateFlvRecordingMetaDataEndDate :: End Date :" + meta.getRecordEnd());
+			
+			update(meta);
+			
+			return metaId;
+		} catch (Exception ex2) {
+			log.error("[updateFlvRecordingMetaDataEndDate]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long update(FlvRecordingMetaData flvRecordingMetaData) {
+		try {
+			if (flvRecordingMetaData.getFlvRecordingMetaDataId() == 0) {
+				em.persist(flvRecordingMetaData);
+			} else {
+				if (!em.contains(flvRecordingMetaData)) {
+					em.merge(flvRecordingMetaData);
+				}
+			}
+		} catch (Exception ex2) {
+			log.error("[update]: ", ex2);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDeltaDao.java b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDeltaDao.java
new file mode 100644
index 0000000..bf89502
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingMetaDeltaDao.java
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.record;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author sebastianwagner
+ *
+ */
+@Transactional
+public class FlvRecordingMetaDeltaDao {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingMetaDeltaDao.class,
+			OpenmeetingsVariables.webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	
+	public List<FlvRecordingMetaDelta> getFlvRecordingMetaDeltaByMetaId(Long flvRecordingMetaDataId) {
+		try { 
+			
+			String hql = "SELECT c FROM FlvRecordingMetaDelta c " +
+					"WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
+			
+			TypedQuery<FlvRecordingMetaDelta> query = em.createQuery(hql, FlvRecordingMetaDelta.class);
+			query.setParameter("flvRecordingMetaDataId", flvRecordingMetaDataId);
+			
+			List<FlvRecordingMetaDelta> flvRecordingMetaDeltas = query.getResultList();
+			
+			return flvRecordingMetaDeltas;
+		} catch (Exception ex2) {
+			log.error("[getFlvRecordingMetaDeltaByMetaId]: ",ex2);
+		}
+		return null;
+	}
+	
+	
+	
+	public Long addFlvRecordingMetaDelta(FlvRecordingMetaDelta flvRecordingMetaDelta) {
+		try { 
+			
+			flvRecordingMetaDelta = em.merge(flvRecordingMetaDelta);
+			Long flvRecordingMetaDeltaId = flvRecordingMetaDelta.getFlvRecordingMetaDeltaId();
+			
+			log.debug("flvRecordingMetaDeltaId "+flvRecordingMetaDeltaId);
+			
+			return flvRecordingMetaDeltaId;
+		} catch (Exception ex2) {
+			log.error("[addFlvRecordingMetaDelta]: ",ex2);
+		}
+		return null;
+	}
+	
+	public Long updateFlvRecordingMetaDelta(FlvRecordingMetaDelta flvRecordingMetaDelta) {
+		try { 
+			if (flvRecordingMetaDelta.getFlvRecordingMetaDataId() == 0) {
+				em.persist(flvRecordingMetaDelta);
+		    } else {
+		    	if (!em.contains(flvRecordingMetaDelta)) {
+		    		em.merge(flvRecordingMetaDelta);
+			    }
+			}
+			
+			return flvRecordingMetaDelta.getFlvRecordingMetaDataId();
+		} catch (Exception ex2) {
+			log.error("[updateFlvRecordingMetaDelta]: ",ex2);
+		}
+		return null;
+	}	
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/ClientDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/ClientDao.java
new file mode 100644
index 0000000..3a56399
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/ClientDao.java
@@ -0,0 +1,177 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Persistence of client objects to database is only available if so configured!
+ * 
+ * @author sebawagner
+ *
+ */
+@Transactional
+public class ClientDao {
+	
+	@PersistenceContext
+	private EntityManager em;
+	
+	private static List<Long> EMPTY_LIST = new ArrayList<Long>(0);
+	
+	public void cleanAllClients() {
+		em.createNamedQuery("deleteAll").executeUpdate();
+	}
+
+	public void cleanClientsByServer(Server server) {
+		em.createNamedQuery("deleteClientsByServer").
+			setParameter("server", server).
+			executeUpdate();
+	}
+	
+	public Client add(Client entity) {
+		em.persist(entity);
+		return entity;
+	}
+	
+	public Client update(Client entity) {
+		em.merge(entity);
+		return entity;
+	}
+	
+	public void delete(Client entity) {
+		Query q = em.createNamedQuery("deletedById");
+		q.setParameter("id", entity.getId());
+		q.executeUpdate();
+	}
+	
+	public void removeClientByServerAndStreamId(Server server, String streamId) {
+		Query q = em.createNamedQuery("deletedByServerAndStreamId");
+		q.setParameter("server", server);
+		q.setParameter("streamid", streamId);
+		q.executeUpdate();
+	}
+	
+	public int countClients() {
+		return em.createNamedQuery("countClients", Long.class).getSingleResult().intValue();
+	}
+	
+	public int countClientsByServer(Server server) {
+		TypedQuery<Long> q = em.createNamedQuery("countClientsByServer", Long.class);
+		q.setParameter("server", server);
+		return q.getSingleResult().intValue();
+	}
+
+	public long countClientsByServerAndStreamId(Server server, String streamId) {
+		TypedQuery<Long> q = em.createNamedQuery("countClientsByServerAndStreamId", Long.class);
+		q.setParameter("streamid", streamId);
+		q.setParameter("server", server);
+		return q.getSingleResult();
+	}
+
+	/**
+	 * Query.getSingleResult would throw an error if result is null, 
+	 * see: http://stackoverflow.com/questions/2002993/jpa-getsingleresult-or-null
+	 * 
+	 * @param server
+	 * @param streamId
+	 * @return
+	 */
+	public Client getClientByServerAndStreamId(Server server, String streamId) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientByServerAndStreamId", Client.class);
+		q.setParameter("streamid", streamId);
+		q.setParameter("server", server);
+		List<Client> ll = q.getResultList();
+		if (ll.size() == 1) {
+			return ll.get(0);
+		} else if (ll.size() == 0) {
+			return null;
+		}
+		throw new RuntimeException("more then one client was found streamId "+ streamId + " server "+server);
+	}
+
+	public List<Client> getClientsByPublicSIDAndServer(Server server, String publicSID) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientsByPublicSIDAndServer", Client.class);
+		q.setParameter("server", server);
+		q.setParameter("publicSID", publicSID);
+		return q.getResultList();
+	}
+
+	public List<Client> getClientsByPublicSID(String publicSID) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientsByPublicSID", Client.class);
+		q.setParameter("publicSID", publicSID);
+		return q.getResultList();
+	}
+
+	public List<Client> getClientsByServer(Server server) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientsByServer", Client.class);
+		q.setParameter("server", server);	
+		return q.getResultList();
+	}
+
+	public List<Client> getClients() {
+		return em.createNamedQuery("getClients", Client.class).getResultList();
+	}
+	
+	public List<Client> getClientsWithServer() {
+		return em.createNamedQuery("getClientsWithServer", Client.class).getResultList();
+	}
+
+	public List<Client> getClientsByUserId(Server server, Long userId) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientsByUserId", Client.class);
+		q.setParameter("server", server);
+		q.setParameter("user_id", userId);	
+		return q.getResultList();
+	}
+
+	public List<Client> getClientsByRoomId(Long roomId) {
+		TypedQuery<Client> q = em.createNamedQuery("getClientsByRoomId", Client.class);
+		q.setParameter("room_id", roomId);	
+		return q.getResultList();
+	}
+
+	/**
+	 * returns a list of servers or an empty list in case no roomIds are found
+	 * 
+	 * @param server
+	 * @return
+	 */
+	public List<Long> getRoomsIdsByServer(Server server) {
+		Query q = em.createNamedQuery("getRoomsIdsByServer");
+		q.setParameter("server", server);
+		@SuppressWarnings("unchecked")
+		List<Long> resultList = q.getResultList();
+		//if the result list contains only a value null, it means it 
+		//was empty and no roomid's have been found
+		if (resultList.size() == 1 && resultList.get(0) == null) {
+			return EMPTY_LIST;
+		}
+		return resultList;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/IRoomManager.java b/src/db/java/org/apache/openmeetings/db/dao/room/IRoomManager.java
new file mode 100644
index 0000000..12cbc36
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/IRoomManager.java
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import org.apache.openmeetings.db.entity.room.Room;
+
+//FIXME HACK to bypass cross project compilation
+public interface IRoomManager {
+	Room  getRoomByOwnerAndTypeId(Long ownerId, Long roomtypesId, String roomName);
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/InvitationDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
new file mode 100644
index 0000000..19859e3
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class InvitationDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(InvitationDao.class, webAppRootKey);
+	
+	@PersistenceContext
+	private EntityManager em;
+	
+	public Invitation update(Invitation invitation) {
+		invitation.setUpdated(new Date());
+		if (invitation.getId() == null) {
+			em.persist(invitation);
+			return invitation;
+		} else {
+			if (!em.contains(invitation)) {
+				return em.merge(invitation);
+			}
+		}
+		return null;
+	}
+	
+	public Invitation get(Long invId) {
+		try {
+			
+			TypedQuery<Invitation> query = em.createNamedQuery("getInvitationbyId", Invitation.class);
+			query.setParameter("invid", invId);
+			
+			try {
+				return query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+		} catch (Exception e) {
+			log.error("get : ", e);
+		}
+		return null;
+	}
+	
+	public Invitation getInvitationByHashCode(String hashCode, boolean hidePass) {
+		try {
+			
+			TypedQuery<Invitation> query = em.createNamedQuery("getInvitationByHashCode", Invitation.class);
+			query.setParameter("hashCode", hashCode);
+			
+			try {
+				return query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+			
+		} catch (Exception e) {
+			log.error("getInvitationByHashCode : ", e);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/PollDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/PollDao.java
new file mode 100644
index 0000000..8b832eb
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/PollDao.java
@@ -0,0 +1,199 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+import org.apache.openmeetings.db.entity.room.RoomPollAnswers;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class PollDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(PollDao.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private FieldValueDao fieldValDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomDao roomDao;
+
+	public Long addPollType(Long labelId, Boolean isNumeric) {
+		log.debug("Adding poll type: " + labelId + ", " + isNumeric);
+		PollType pt = new PollType();
+		pt.setLabel(fieldValDao.get(labelId));
+		pt.setIsNumericAnswer(isNumeric);
+
+		em.persist(pt);
+		
+		return pt.getPollTypesId();
+	}
+	
+	public List<PollType> getPollTypes() {
+		return em.createNamedQuery("getPollTypes", PollType.class)
+				.getResultList();
+	}
+	
+	public PollType getPollType(Long typeId) {
+		TypedQuery<PollType> q = em.createNamedQuery("getPollType", PollType.class);
+		q.setParameter("pollTypesId", typeId);
+		return q.getSingleResult();
+	}
+	
+	public RoomPoll createPoll(Client rc, String pollName, String pollQuestion, Long pollTypeId) {
+		RoomPoll roomP = new RoomPoll();
+		
+		roomP.setCreatedBy(userDao.get(rc.getUser_id()));
+		roomP.setCreated(new Date());
+		roomP.setPollName(pollName);
+		roomP.setPollQuestion(pollQuestion);
+		roomP.setPollType(getPollType(pollTypeId));
+		roomP.setRoom(roomDao.get(rc.getRoom_id()));
+		
+		em.persist(roomP);
+		return roomP;
+	}
+	
+	public void savePollBackup(RoomPoll rp) {
+		em.persist(rp);
+	}
+
+
+	public RoomPoll updatePoll(RoomPoll rp) {
+		return em.merge(rp);
+	}
+
+	public boolean closePoll(Long room_id){
+		try {
+			log.debug(" :: closePoll :: ");
+			Query q = em.createNamedQuery("closePoll");
+			q.setParameter("rooms_id", room_id);
+			q.setParameter("archived", true);
+			return q.executeUpdate() > 0;
+		} catch (Exception err) {
+			log.error("[closePoll]", err);
+		}
+		return false;
+	}
+
+	public boolean deletePoll(Long poll_id){
+		try {
+			log.debug(" :: deletePoll :: ");
+			Query q = em.createNamedQuery("deletePoll");
+			q.setParameter("roomPollId", poll_id);
+			return q.executeUpdate() > 0;
+		} catch (Exception err) {
+			log.error("[deletePoll]", err);
+		}
+		return false;
+	}
+
+	public RoomPoll getPoll(Long room_id) {
+		try {
+			log.debug(" :: getPoll :: " + room_id);
+			TypedQuery<RoomPoll> q = em.createNamedQuery("getPoll", RoomPoll.class);
+			q.setParameter("room_id", room_id);
+			q.setParameter("archived", false);
+			return q.getSingleResult();
+		} catch (NoResultException nre) {
+			//expected
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return null;
+	}
+	
+	public List<RoomPoll> getPollListBackup() {
+		try {
+			TypedQuery<RoomPoll> q = em.createNamedQuery("getPollListBackup", RoomPoll.class);
+			return q.getResultList();
+		} catch (NoResultException nre) {
+			//expected
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return null;
+	}
+	
+	public List<RoomPoll> getArchivedPollList(Long room_id) {
+		try {
+			log.debug(" :: getPoll :: " + room_id);
+			TypedQuery<RoomPoll> q = em.createNamedQuery("getArchivedPollList",RoomPoll.class);
+			q.setParameter("room_id", room_id);
+			q.setParameter("archived", true);
+			return q.getResultList();
+		} catch (NoResultException nre) {
+			//expected
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return null;
+	}
+	
+	public boolean hasPoll(Long room_id) {
+		try {
+			log.debug(" :: hasPoll :: " + room_id);
+			TypedQuery<Long> q = em.createNamedQuery("hasPoll", Long.class);
+			q.setParameter("room_id", room_id);
+			q.setParameter("archived", false);
+			return q.getSingleResult() > 0;
+		} catch (NoResultException nre) {
+			//expected
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return false;
+	}
+	
+	public boolean hasVoted(Long room_id, Long userid) {
+		try {
+			log.debug(" :: hasVoted :: " + room_id + ", " + userid);
+			TypedQuery<RoomPollAnswers> q = em.createNamedQuery("hasVoted", RoomPollAnswers.class);
+			q.setParameter("room_id", room_id);
+			q.setParameter("userid", userid);
+			q.setParameter("archived", false);
+			q.getSingleResult();
+			return true;
+		} catch (NoResultException nre) {
+			//expected
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return false;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/RoomDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/RoomDao.java
new file mode 100644
index 0000000..32a7693
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/RoomDao.java
@@ -0,0 +1,189 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.OpenJPAQuery;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.DaoHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class RoomDao implements IDataProviderDao<Room> {
+	private static final Logger log = Red5LoggerFactory.getLogger(RoomDao.class, webAppRootKey);
+	public final static String[] searchFields = {"name"};
+	
+	@PersistenceContext
+	private EntityManager em;
+    @Autowired
+	private ConfigurationDao cfgDao;
+    @Autowired
+    private SipDao sipDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	public Room get(long id) {
+		TypedQuery<Room> q = em.createNamedQuery("getRoomById", Room.class);
+		q.setParameter("id", id);
+		@SuppressWarnings("unchecked")
+		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+		kq.getFetchPlan().addFetchGroup("roomModerators");
+		List<Room> l = kq.getResultList();
+		return l.isEmpty() ? null : l.get(0);
+	}
+
+	public List<Room> get() {
+		TypedQuery<Room> q = em.createNamedQuery("getBackupRooms", Room.class);
+		@SuppressWarnings("unchecked")
+		OpenJPAQuery<Room> kq = OpenJPAPersistence.cast(q);
+		kq.getFetchPlan().addFetchGroup("roomModerators");
+		return kq.getResultList();
+	}
+	
+	public List<Room> get(int start, int count) {
+		TypedQuery<Room> q = em.createNamedQuery("getNondeletedRooms", Room.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public List<Room> get(String search, int start, int count, String sort) {
+		TypedQuery<Room> q = em.createQuery(DaoHelper.getSearchQuery("Room", "r", search, true, false, sort, searchFields), Room.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public long count() {
+		TypedQuery<Long> q = em.createNamedQuery("countRooms", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Room", "r", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+
+	public List<Room> getPublicRooms() {
+		return em.createNamedQuery("getPublicRoomsOrdered", Room.class).getResultList();
+	}
+	
+	public List<Room> getPublicRooms(Long typeId) {
+		return em.createNamedQuery("getPublicRooms", Room.class).setParameter("typeId", typeId).getResultList();
+	}
+	
+	public List<Long> getSipRooms(List<Long> ids) {
+		TypedQuery<Long> q = em.createNamedQuery("getSipRoomIdsByIds", Long.class);
+		q.setParameter("ids", ids);
+		return q.getResultList();
+	}
+
+	public List<Room> getOrganisationRooms(long orgId) {
+		TypedQuery<Room> q = em.createNamedQuery("getOrganisationRooms", Room.class);
+		q.setParameter("orgId", orgId);
+		return q.getResultList();
+	}
+
+	public List<Room> getAppointedRoomsByUser(long userId) {
+		//TODO generalize with AppointmentDao
+		log.debug("getAppointedRoomsByUser : UserID - " + userId);
+
+		TimeZone timeZone = timezoneUtil.getTimeZone(usersDao.get(userId));
+
+		Calendar startCal = Calendar.getInstance(timeZone);
+		startCal.set(Calendar.MINUTE, 0);
+		startCal.set(Calendar.HOUR, 0);
+		startCal.set(Calendar.SECOND, 1);
+
+		Calendar endCal = Calendar.getInstance(timeZone);
+		endCal.set(Calendar.MINUTE, 23);
+		endCal.set(Calendar.HOUR, 59);
+		endCal.set(Calendar.SECOND, 59);
+
+		return em.createNamedQuery("appointedRoomsInRangeByUser", Room.class)
+				.setParameter("userId", userId)
+				.setParameter("starttime", startCal.getTime())
+				.setParameter("endtime", endCal.getTime())
+				.getResultList();
+	}
+	
+	public Long getRoomsCapacityByIds(List<Long> ids) {
+		return ids == null || ids.isEmpty() ? 0
+			: em.createNamedQuery("getRoomsCapacityByIds", Long.class).setParameter("ids", ids).getSingleResult();
+	}
+	
+	private boolean isSipEnabled() {
+		return "yes".equals(cfgDao.getConfValue("red5sip.enable", String.class, "no"));
+	}
+	
+	private String getSipNumber(long roomId) {
+        if (isSipEnabled()) {
+        	return cfgDao.getConfValue("red5sip.room_prefix", String.class, "400") + roomId;
+        }
+        return null;
+	}
+	
+	public Room update(Room entity, Long userId) {
+		if (entity.getRooms_id() == null) {
+			entity.setStarttime(new Date());
+			em.persist(entity);
+		} else {
+			entity.setUpdatetime(new Date());
+		}
+		if (entity.isSipEnabled() && isSipEnabled()) {
+			String sipNumber = getSipNumber(entity.getRooms_id());
+			if (!sipNumber.equals(entity.getConfno())) {
+				entity.setConfno(sipNumber);
+			}
+			sipDao.update(sipNumber, entity.getPin());
+		} else {
+			sipDao.delete(entity.getConfno());
+			entity.setConfno(null);
+			entity.setPin(null);
+		}
+		entity = em.merge(entity);
+		return entity;
+	}
+
+	public void delete(Room entity, Long userId) {
+		entity.setDeleted(true);
+		entity.setSipEnabled(false);
+		update(entity, userId);
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
new file mode 100644
index 0000000..91c99ea
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class RoomModeratorsDao {
+	@Autowired
+	private UserDao userDao;
+	@PersistenceContext
+	private EntityManager em;
+
+	public RoomModerator get(long id) {
+		List<RoomModerator> list = em.createNamedQuery("getRoomModeratorById", RoomModerator.class)
+				.setParameter("roomModeratorsId", id).getResultList();
+		if (!list.isEmpty()) {
+			return list.get(0);
+		}
+		return null;
+	}
+	
+	public List<RoomModerator> get(Collection<Long> ids) {
+		return em.createNamedQuery("getRoomModeratorsByIds", RoomModerator.class).setParameter("ids", ids).getResultList();
+	}
+
+	public List<RoomModerator> getByRoomId(long roomId) {
+		return em.createNamedQuery("getRoomModeratorByRoomId", RoomModerator.class).setParameter("roomId", roomId).getResultList();
+	}
+
+	public RoomModerator update(RoomModerator rm, Long userId) {
+		if (rm.getRoomModeratorsId() == 0) {
+			rm.setStarttime(new Date());
+			em.persist(rm);
+		} else {
+			rm.setUpdatetime(new Date());
+			rm = em.merge(rm);
+		}
+		return rm;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/RoomOrganisationDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/RoomOrganisationDao.java
new file mode 100644
index 0000000..373a185
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/RoomOrganisationDao.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class RoomOrganisationDao {
+	@PersistenceContext
+	private EntityManager em;
+
+	public List<RoomOrganisation> get() {
+		return em.createNamedQuery("getAllRoomsOrganisations", RoomOrganisation.class).getResultList();
+	}
+
+	public RoomOrganisation update(RoomOrganisation entity, Long userId) {
+		if (entity.getRooms_organisation_id() == null) {
+			entity.setStarttime(new Date());
+			em.persist(entity);
+		} else {
+			entity.setUpdatetime(new Date());
+			entity = em.merge(entity);
+		}
+		return entity;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/RoomTypeDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/RoomTypeDao.java
new file mode 100644
index 0000000..7f2a72d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/RoomTypeDao.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class RoomTypeDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(RoomTypeDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	
+	@Autowired
+	private FieldLanguagesValuesDao fieldLangValueDao;
+	
+	/**
+	 * get all availible RoomTypes
+	 * 
+	 * @return List of RoomTypes
+	 */
+	public List<RoomType> getAll(long langId) {
+		TypedQuery<RoomType> query = em.createNamedQuery("getAllRoomTypes", RoomType.class);
+		query.setParameter("deleted", true);
+		List<RoomType> ll = query.getResultList();
+		for (RoomType ti : ll) {
+			ti.setLabel(fieldLangValueDao.get(ti.getFieldvalues_id(), langId));
+		}
+		return ll;
+	}
+	
+	public RoomType get(long id) {
+		TypedQuery<RoomType> query = em.createNamedQuery("getRoomTypesById", RoomType.class);
+		query.setParameter("roomtypes_id", id);
+		query.setParameter("deleted", true);
+		List<?> ll = query.getResultList();
+		if (ll.size() > 0) {
+			return (RoomType) ll.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * add a new Record to the table roomtypes
+	 * 
+	 * @param name
+	 * @return ID of new created roomtype or null
+	 */
+	public Long addRoomType(String name, long fieldvalues_id, boolean deleted) {
+		try {
+			RoomType rtype = new RoomType();
+			rtype.setName(name);
+			rtype.setStarttime(new Date());
+			rtype.setDeleted(deleted);
+			rtype.setFieldvalues_id(fieldvalues_id);
+			rtype = em.merge(rtype);
+			long returnId = rtype.getRoomtypes_id();
+			return returnId;
+		} catch (Exception ex2) {
+			log.error("[addRoomType] ", ex2);
+		}
+		return null;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/room/SipDao.java b/src/db/java/org/apache/openmeetings/db/dao/room/SipDao.java
new file mode 100644
index 0000000..86ef780
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/room/SipDao.java
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.room;
+
+import org.asteriskjava.manager.ManagerConnection;
+import org.asteriskjava.manager.ManagerConnectionFactory;
+import org.asteriskjava.manager.ResponseEvents;
+import org.asteriskjava.manager.action.ConfbridgeListAction;
+import org.asteriskjava.manager.action.DbDelAction;
+import org.asteriskjava.manager.action.DbDelTreeAction;
+import org.asteriskjava.manager.action.DbGetAction;
+import org.asteriskjava.manager.action.DbPutAction;
+import org.asteriskjava.manager.action.EventGeneratingAction;
+import org.asteriskjava.manager.action.ManagerAction;
+import org.asteriskjava.manager.response.ManagerError;
+import org.asteriskjava.manager.response.ManagerResponse;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class SipDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(SipDao.class);
+	public static final String ASTERISK_OM_FAMILY = "openmeetings";
+	public static final String ASTERISK_OM_KEY = "rooms";
+	private String sipHostname;
+	private int sipPort;
+	private String sipUsername;
+	private String sipPassword;
+	private ManagerConnectionFactory factory;
+	private ManagerConnection connection;
+
+	@SuppressWarnings("unused")
+	private SipDao() {
+		// prohibited default constructor
+	}
+
+	public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword) {
+		this.sipHostname = sipHostname;
+		this.sipPort = sipPort;
+		this.sipUsername = sipUsername;
+		this.sipPassword = sipPassword;
+		factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword);
+		connection = factory.createManagerConnection(); // TODO secure
+	}
+
+	private ManagerResponse exec(ManagerAction action) {
+		if (connection == null) {
+			log.warn("There is no Asterisk configured");
+			return null;
+		}
+		try {
+			connection.login();
+			ManagerResponse r = connection.sendAction(action);
+			connection.logoff();
+			if (log.isDebugEnabled() && r != null) {
+				log.debug(r.toString());
+			}
+			return (r instanceof ManagerError) ? null : r;
+		} catch (Exception e) {
+			if (log.isDebugEnabled()) {
+				log.error("Error while executing ManagerAction: " + action, e);
+			}
+		}
+		return null;
+	}
+
+	private ResponseEvents execEvent(EventGeneratingAction action) {
+		if (connection == null) {
+			log.warn("There is no Asterisk configured");
+			return null;
+		}
+		try {
+			connection.login("on");
+			ResponseEvents r = connection.sendEventGeneratingAction(action);
+			connection.logoff();
+			if (log.isDebugEnabled() && r != null) {
+				log.debug(r.getResponse().toString());
+			}
+			return (r == null || r.getResponse() instanceof ManagerError) ? null : r;
+		} catch (Exception e) {
+			if (log.isDebugEnabled()) {
+				log.error("Error while executing EventGeneratingAction: " + action, e);
+			}
+		}
+		return null;
+	}
+
+	private String getKey(String confno) {
+		return ASTERISK_OM_KEY + "/" + confno;
+	}
+
+	public String get(String confno) {
+		String pin = null;
+		DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, getKey(confno));
+		ManagerResponse r = exec(da);
+		if (r != null) {
+			pin = r.getResponse();
+		}
+		return pin;
+	}
+
+	public void update(String confno, String pin) {
+		delete(confno);
+		DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, getKey(confno), pin);
+		exec(da);
+	}
+
+	public void delete() {
+		DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY);
+		exec(da);
+	}
+
+	public void delete(String confno) {
+		DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, getKey(confno));
+		exec(da);
+	}
+
+	public Integer countUsers(String confno) {
+		if (confno == null) {
+			return null;
+		}
+		ConfbridgeListAction da = new ConfbridgeListAction(confno);
+		ResponseEvents r = execEvent(da);
+		if (r != null) {
+			log.debug("SipDao::countUsers size == " + r.getEvents().size());
+			// "- 1" here means: ListComplete event 
+			return r.getEvents().size() - 1; // TODO check if was successfull
+		}
+		return 0;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/ISessionManager.java b/src/db/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
new file mode 100644
index 0000000..663d20e
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/ISessionManager.java
@@ -0,0 +1,217 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+
+/**
+ * Methods to add/get/remove {@link Client}s to the session
+ * 
+ * 
+ * @author sebawagner
+ *
+ */
+public interface ISessionManager {
+	
+	/**
+	 * Notified on server start, when the session manager should be started and
+	 * eventually caches cleared/setup
+	 */
+	public abstract void sessionStart();
+
+	/**
+	 * add a new client item
+	 * 
+	 * @param streamId
+	 * @param scopeName
+	 * @param remotePort
+	 * @param remoteAddress
+	 * @param swfUrl
+	 * @param isAVClient
+	 * @param server
+	 * @return
+	 */
+	public abstract Client addClientListItem(String streamId,
+			String scopeName, Integer remotePort, String remoteAddress,
+			String swfUrl, boolean isAVClient, Server server);
+
+	public abstract Collection<Client> getClients();
+	
+	/**
+	 * loads the server into the client (only if database cache is used)
+	 * 
+	 * @return
+	 */
+	public abstract Collection<Client> getClientsWithServer();
+
+	/**
+	 * Get a client by its streamId
+	 * 
+	 * @param streamId
+	 * @param server
+	 * @return
+	 */
+	public abstract Client getClientByStreamId(String streamId,
+			Server server);
+
+	/**
+	 * get a client by its publicSID and the server, 
+	 * isAVClient is normally false, as you want the data connection.
+	 * If you set isAVClient to true, you would obtain the RTMP 
+	 * connection that is used for Audio/Video streaming
+	 * 
+	 * @param publicSID
+	 * @param isAVClient
+	 * @param server
+	 * @return
+	 */
+	public abstract Client getClientByPublicSID(String publicSID,
+			boolean isAVClient, Server server);
+	
+	/**
+	 * same as {@link #getClientByPublicSID(String, boolean, Server)} but it ignores 
+	 * if the server part, so it will deliver any client just by its publicSID.<br/>
+	 * <br/>
+	 * <b>Note:</b>
+	 * This method requires more time to find the user, so under normal circumstances 
+	 * you should use {@link #getClientByPublicSID(String, boolean, Server)}!
+	 * 
+	 * @param publicSID
+	 * @param isAVClient
+	 * @return
+	 */
+	public ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID, boolean isAVClient);
+
+	/**
+	 * 
+	 * @param userId
+	 * @return
+	 * 
+	 * @deprecated There could be multiple users logged in with the same userid,
+	 *             then this call would return a list not a single user
+	 */
+	public abstract Client getClientByUserId(Long userId);
+
+	/**
+	 * Update the session object of the audio/video-connection and additionally
+	 * swap the values to the session object of the user that holds the full
+	 * session object
+	 * 
+	 * @param streamId
+	 * @param rcm
+	 * @return
+	 */
+	public abstract Boolean updateAVClientByStreamId(String streamId,
+			Client rcm, Server server);
+
+	/**
+	 * Update the session object
+	 * 
+	 * updateRoomCount is only <i>one</i> time true, in
+	 * ScopeApplicationAdapter#setRoomValues(Long, Boolean, Boolean, Long, String)
+	 * .
+	 * 
+	 * @param streamId
+	 * @param rcm
+	 * @param updateRoomCount
+	 *            true means the count for the room has to be updated
+	 * @return
+	 */
+	public abstract Boolean updateClientByStreamId(String streamId,
+			Client rcm, boolean updateRoomCount, Server server);
+
+	/**
+	 * Remove a client from the session store
+	 * 
+	 * @param streamId
+	 * @return
+	 */
+	public abstract Boolean removeClient(String streamId, Server server);
+
+	/**
+	 * Get all ClientList Objects of that room and domain This Function is
+	 * needed cause it is invoked internally AFTER the current user has been
+	 * already removed from the ClientList to see if the Room is empty again and
+	 * the PollList can be removed
+	 * @param room_id 
+	 * @return
+	 */
+	public abstract List<Client> getClientListByRoom(Long room_id);
+	
+	public abstract Collection<Client> getClientListByRoomAll(Long room_id);
+
+	/**
+	 * get the current Moderator in this room
+	 * 
+	 * @param roomname
+	 * @return
+	 */
+	public abstract List<Client> getCurrentModeratorByRoom(Long room_id);
+
+	/**
+	 * Get list of current client sessions
+	 * 
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @param asc
+	 * @return
+	 */
+	public abstract SearchResult<Client> getListByStartAndMax(int start,
+			int max, String orderby, boolean asc);
+
+	/**
+	 * returns number of current users recording
+	 * 
+	 * @param roomId
+	 * @return
+	 */
+	public abstract long getRecordingCount(long roomId);
+
+	/**
+	 * returns a number of current users publishing screensharing
+	 * 
+	 * @param roomId
+	 * @return
+	 */
+	public abstract long getPublishingCount(long roomId);
+	
+	/**
+	 * Get a list of all servers of all rooms on that server, serverId = null 
+	 * means it is a local session on the master.
+	 * 
+	 * @param server
+	 * @return a set, a roomId can be only one time in this list
+	 */
+	public abstract List<Long> getActiveRoomIdsByServer(Server server);
+
+	/**
+	 * Get some statistics about the current sessions
+	 * 
+	 * @return
+	 */
+	public abstract String getSessionStatistics();
+
+}
\ No newline at end of file
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java b/src/db/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
new file mode 100644
index 0000000..28b90e2
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
@@ -0,0 +1,269 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceException;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.util.DaoHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Insert/Update/Delete {@link LdapConfig}
+ * 
+ * 
+ * @author swagner
+ * 
+ */
+@Transactional
+public class LdapConfigDao implements IDataProviderDao<LdapConfig> {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			LdapConfigDao.class, OpenmeetingsVariables.webAppRootKey);
+	public final static String[] searchFields = {"name", "configFileName", "domain", "comment"};
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private UserDao usersDao;
+
+	public Long addLdapConfig(String name, Boolean addDomainToUserName,
+			String configFileName, String domain, Long insertedby,
+			Boolean isActive) {
+		try {
+
+			LdapConfig ldapConfig = new LdapConfig();
+			ldapConfig.setAddDomainToUserName(addDomainToUserName);
+			ldapConfig.setConfigFileName(configFileName);
+			ldapConfig.setDeleted(false);
+			ldapConfig.setDomain(domain);
+			ldapConfig.setIsActive(isActive);
+			ldapConfig.setName(name);
+			ldapConfig.setInserted(new Date());
+			if (insertedby != null) {
+				log.debug("addLdapConfig :1: " + usersDao.get(insertedby));
+				ldapConfig.setInsertedby(usersDao.get(insertedby));
+			}
+
+			log.debug("addLdapConfig :2: " + insertedby);
+
+			ldapConfig = em.merge(ldapConfig);
+			Long ldapConfigId = ldapConfig.getLdapConfigId();
+
+			if (ldapConfigId > 0) {
+				return ldapConfigId;
+			} else {
+				throw new Exception("Could not store SOAPLogin");
+			}
+
+		} catch (Exception ex2) {
+			log.error("[addLdapConfig]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long addLdapConfigByObject(LdapConfig ldapConfig) {
+		try {
+
+			ldapConfig.setDeleted(false);
+			ldapConfig.setInserted(new Date());
+
+			ldapConfig = em.merge(ldapConfig);
+			Long ldapConfigId = ldapConfig.getLdapConfigId();
+
+			if (ldapConfigId > 0) {
+				return ldapConfigId;
+			} else {
+				throw new Exception("Could not store SOAPLogin");
+			}
+
+		} catch (Exception ex2) {
+			log.error("[addLdapConfig]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long updateLdapConfig(Long ldapConfigId, String name,
+			Boolean addDomainToUserName, String configFileName, String domain,
+			Long updatedby, Boolean isActive) {
+		try {
+
+			LdapConfig ldapConfig = this.get(ldapConfigId);
+
+			if (ldapConfig == null) {
+				return -1L;
+			}
+
+			ldapConfig.setAddDomainToUserName(addDomainToUserName);
+			ldapConfig.setConfigFileName(configFileName);
+			ldapConfig.setDeleted(false);
+			ldapConfig.setDomain(domain);
+			ldapConfig.setIsActive(isActive);
+			ldapConfig.setName(name);
+			ldapConfig.setUpdated(new Date());
+			if (updatedby != null) {
+				log.debug("updateLdapConfig :1: " + usersDao.get(updatedby));
+				ldapConfig.setUpdatedby(usersDao.get(updatedby));
+			}
+
+			log.debug("updateLdapConfig :2: " + updatedby);
+
+			ldapConfig = em.merge(ldapConfig);
+			ldapConfigId = ldapConfig.getLdapConfigId();
+
+			return ldapConfigId;
+
+		} catch (Exception ex2) {
+			log.error("[updateLdapConfig]: ", ex2);
+		}
+		return -1L;
+	}
+
+	public LdapConfig get(long ldapConfigId) {
+		try {
+
+			String hql = "select c from LdapConfig c "
+					+ "WHERE c.ldapConfigId = :ldapConfigId "
+					+ "AND c.deleted = :deleted";
+
+			TypedQuery<LdapConfig> query = em
+					.createQuery(hql, LdapConfig.class);
+			query.setParameter("ldapConfigId", ldapConfigId);
+			query.setParameter("deleted", false);
+
+			LdapConfig ldapConfig = null;
+			try {
+				ldapConfig = query.getSingleResult();
+			} catch (NoResultException ex) {
+			}
+
+			return ldapConfig;
+
+		} catch (Exception ex2) {
+			log.error("[get]: ", ex2);
+		}
+		return null;
+	}
+
+	public List<LdapConfig> getActive() {
+		log.debug("getActiveLdapConfigs");
+
+		// get all users
+		TypedQuery<LdapConfig> query =  em.createNamedQuery("getActiveLdapConfigs", LdapConfig.class);
+		query.setParameter("isActive", true);
+
+		return query.getResultList();
+	}
+
+	public List<LdapConfig> get() {
+		//Add localhost Domain
+		LdapConfig ldapConfig = new LdapConfig();
+		
+		ldapConfig.setName("local DB [internal]");
+		ldapConfig.setLdapConfigId(-1);
+
+		List<LdapConfig> result = new ArrayList<LdapConfig>();
+		result.add(ldapConfig);
+		result.addAll(getActive());
+		return result;
+	}
+
+	public List<LdapConfig> get(int start, int count) {
+		TypedQuery<LdapConfig> q = em.createNamedQuery("getNondeletedLdapConfigs", LdapConfig.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public List<LdapConfig> get(String search, int start, int count, String sort) {
+		TypedQuery<LdapConfig> q = em.createQuery(DaoHelper.getSearchQuery("LdapConfig", "lc", search, true, false, sort, searchFields), LdapConfig.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	public long count() {
+		try {
+			TypedQuery<Long> query = em
+					.createQuery(
+							"select count(c.ldapConfigId) from LdapConfig c where c.deleted = false",
+							Long.class);
+			List<Long> ll = query.getResultList();
+			log.debug("selectMaxFromLdapConfig" + ll.get(0));
+			return ll.get(0);
+		} catch (Exception ex2) {
+			log.error("[selectMaxFromLdapConfig] ", ex2);
+		}
+		return 0L;
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("LdapConfig", "lc", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+	
+	public LdapConfig update(LdapConfig entity, Long userId) {
+		try {
+			if (entity.getLdapConfigId() <= 0) {
+				entity.setInserted(new Date());
+				if (userId != null) {
+					entity.setInsertedby(usersDao.get(userId));
+				}
+				entity.setDeleted(false);
+				em.persist(entity);
+			} else {
+				entity.setUpdated(new Date());
+				if (userId != null) {
+					entity.setUpdatedby(usersDao.get(userId));
+				}
+				entity.setDeleted(false);
+				em.merge(entity);
+			}
+		} catch (PersistenceException ex) {
+			log.error("[update LdapConfig]", ex);
+		}
+		return entity;
+	}
+
+	public void delete(LdapConfig entity, Long userId) {
+		if (entity.getLdapConfigId() >= 0) {
+			entity.setUpdated(new Date());
+			if (userId != null) {
+				entity.setUpdatedby(usersDao.get(userId));
+			}
+			entity.setDeleted(true);
+			em.merge(entity);
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java b/src/db/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
new file mode 100644
index 0000000..b8db099
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
+
+	public final static String[] searchFields = {"name"};
+	@PersistenceContext
+	private EntityManager em;
+	
+	public List<OAuthServer> getActive() {
+		TypedQuery<OAuthServer> query = em.createNamedQuery("getEnabledOAuthServers", OAuthServer.class);
+		return query.getResultList();
+	}
+	
+	public OAuthServer get(long id) {
+		TypedQuery<OAuthServer> query = em.createNamedQuery("getOAuthServerById", OAuthServer.class);
+		query.setParameter("id", id);
+		OAuthServer result = null;
+		try {
+			result = query.getSingleResult();
+		} catch (NoResultException e) {}
+		return result;
+	}
+
+	public List<OAuthServer> get(int start, int count) {
+		TypedQuery<OAuthServer> query = em.createNamedQuery("getAllOAuthServers", OAuthServer.class);
+		query.setFirstResult(start);
+		query.setMaxResults(count);
+		return query.getResultList();
+	}
+
+	public List<OAuthServer> get(String search, int start, int count, String order) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("OAuthServer", "s", search, true, false, null, searchFields), Long.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return null;
+	}
+
+	public long count() {
+		TypedQuery<Long> q = em.createNamedQuery("countOAuthServers", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("OAuthServer", "s", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+
+	public OAuthServer update(OAuthServer server, Long userId) {
+		if (server.getId() == null) {
+			em.persist(server);
+		} else {
+			server = em.merge(server);
+		}
+		return server;
+	}
+
+	public void delete(OAuthServer server, Long userId) {
+		server.setDeleted(true);
+		update(server, userId);
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java b/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
new file mode 100644
index 0000000..ccd88aa
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.server.SOAPLogin;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class SOAPLoginDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(SOAPLoginDao.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	public String addSOAPLogin(String sessionHash, Long room_id,
+			boolean becomemoderator, boolean showAudioVideoTest,
+			boolean allowSameURLMultipleTimes, Long recording_id,
+			boolean showNickNameDialog, String landingZone,
+			boolean allowRecording) {
+		try {
+			String thistime = "TIME_" + (new Date().getTime());
+
+			String hash = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(thistime);
+
+			SOAPLogin soapLogin = new SOAPLogin();
+			soapLogin.setCreated(new Date());
+			soapLogin.setUsed(false);
+			soapLogin.setRoom_id(room_id);
+			soapLogin.setAllowSameURLMultipleTimes(allowSameURLMultipleTimes);
+			soapLogin.setHash(hash);
+			soapLogin.setRoomRecordingId(recording_id);
+			soapLogin.setSessionHash(sessionHash);
+			soapLogin.setBecomemoderator(becomemoderator);
+			soapLogin.setShowAudioVideoTest(showAudioVideoTest);
+			soapLogin.setShowNickNameDialog(showNickNameDialog);
+			soapLogin.setLandingZone(landingZone);
+			soapLogin.setAllowRecording(allowRecording);
+
+			soapLogin = em.merge(soapLogin);
+			Long soapLoginId = soapLogin.getSoapLoginId();
+
+			if (soapLoginId > 0) {
+				return hash;
+			} else {
+				throw new Exception("Could not store SOAPLogin");
+			}
+
+		} catch (Exception ex2) {
+			log.error("[addSOAPLogin]: ", ex2);
+		}
+		return null;
+	}
+
+	public SOAPLogin get(String hash) {
+		try {
+			String hql = "select sl from SOAPLogin as sl WHERE sl.hash LIKE :hash";
+			TypedQuery<SOAPLogin> query = em.createQuery(hql, SOAPLogin.class);
+			query.setParameter("hash", hash);
+			List<SOAPLogin> sList = query.getResultList();
+
+			if (sList.size() > 1) {
+				throw new Exception("there are more then one SOAPLogin with identical hash! " + hash);
+			}
+
+			if (sList.size() == 1) {
+				return sList.get(0);
+			}
+
+		} catch (Exception ex2) {
+			log.error("[get]: ", ex2);
+		}
+		return null;
+	}
+
+	public void update(SOAPLogin soapLogin) {
+		try {
+			if (soapLogin.getSoapLoginId() == 0) {
+				em.persist(soapLogin);
+			} else {
+				if (!em.contains(soapLogin)) {
+					em.merge(soapLogin);
+				}
+			}
+		} catch (Exception ex2) {
+			log.error("[update]: ", ex2);
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/ServerDao.java b/src/db/java/org/apache/openmeetings/db/dao/server/ServerDao.java
new file mode 100644
index 0000000..5f74fe8
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/ServerDao.java
@@ -0,0 +1,210 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.DaoHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * CRUD for {@link Server}
+ * 
+ * @author solomax, sebawagner
+ * 
+ */
+@Transactional
+public class ServerDao implements IDataProviderDao<Server> {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ServerDao.class, OpenmeetingsVariables.webAppRootKey);
+	public final static String[] searchFields = { "name", "address", "comment" };
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private UserDao usersDao;
+	
+	/**
+	 * Get a list of all available servers
+	 * 
+	 * @return
+	 */
+	public List<Server> getServerList() {
+		log.debug("getServerList enter");
+		TypedQuery<Server> q = em.createNamedQuery("getAllServers",
+				Server.class);
+		return q.getResultList();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#get(int, int)
+	 */
+	public List<Server> get(int start, int max) {
+		TypedQuery<Server> q = em.createNamedQuery("getAllServers", Server.class);
+		q.setFirstResult(start);
+		q.setMaxResults(max);
+		return q.getResultList();
+	}
+
+	public List<Server> get(String search, int start, int count, String order) {
+		TypedQuery<Server> q = em.createQuery(DaoHelper.getSearchQuery(
+				"Server", "s", search, true, false, order, searchFields),
+				Server.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	/**
+	 * get the list of all servers in the cluster that are ready to receive a
+	 * ping (active = true)
+	 * 
+	 * @return
+	 */
+	public List<Server> getActiveServers() {
+		return em.createNamedQuery("getActiveServers", Server.class)
+				.getResultList();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#count()
+	 */
+	public long count() {
+		log.debug("getServerCount enter");
+		TypedQuery<Long> q = em.createNamedQuery("getServerCount", Long.class);
+
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Server",
+				"s", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.apache.openmeetings.data.OmDAO#get(long)
+	 */
+	public Server get(long id) {
+		Server result = null;
+		log.debug("getServer enter, id = " + id);
+		TypedQuery<Server> q = em.createNamedQuery("getServerById",
+				Server.class);
+		q.setParameter("id", id);
+		try {
+			result = q.getSingleResult();
+		} catch (NoResultException e) {
+			// noop
+		}
+		return result;
+	}
+
+	/**
+	 * Get server by its address
+	 * 
+	 * @param address
+	 * @return
+	 */
+	public Server getServerByAddress(String address) {
+		log.debug("getServer enter, address = " + address);
+		TypedQuery<Server> q = em.createNamedQuery("getServerByAddress",
+				Server.class);
+		q.setParameter("address", address);
+		List<Server> list = q.getResultList();
+		return list.size() > 0 ? list.get(0) : null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence
+	 * .beans.OmEntity, long)
+	 */
+	public Server update(Server entity, Long userId) {
+		entity.setDeleted(false);
+		if (entity.getId() > 0) {
+			entity.setUpdated(new Date());
+			if (userId != null) {
+				entity.setUpdatedby(usersDao.get(userId));
+			}
+			em.merge(entity);
+		} else {
+			entity.setInserted(new Date());
+			if (userId != null) {
+				entity.setInsertedby(usersDao.get(userId));
+			}
+			em.persist(entity);
+		}
+		return entity;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence
+	 * .beans.OmEntity, long)
+	 */
+	public void delete(Server entity, Long userId) {
+		if (entity.getId() > 0) {
+			entity.setUpdated(new Date());
+			if (userId != null) {
+				entity.setUpdatedby(usersDao.get(userId));
+			}
+			entity.setDeleted(true);
+			em.merge(entity);
+		}
+	}
+
+	/**
+	 * get {@link Server} by name
+	 * 
+	 * @param name
+	 * @return
+	 */
+	public List<Server> getServersByName(String name) {
+		TypedQuery<Server> q = em.createNamedQuery("getServerByName",
+				Server.class);
+		q.setParameter("name", name);
+		return q.getResultList();
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java b/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
new file mode 100644
index 0000000..b954e85
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
@@ -0,0 +1,443 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.server;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * @author swagner This Class handles all session management
+ * 
+ *         TODO: Delete all inactive session by a scheduler
+ * 
+ */
+@Transactional
+public class SessiondataDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(SessiondataDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private ISessionManager sessionManager;
+
+	/**
+	 * creates a new session-object in the database
+	 * 
+	 * @return
+	 */
+	public Sessiondata startsession() {
+		try {
+
+			log.debug("startsession :: startsession");
+
+			long thistime = new Date().getTime();
+			Sessiondata sessiondata = new Sessiondata();
+			sessiondata.setSession_id(ManageCryptStyle.getInstanceOfCrypt()
+					.createPassPhrase(String.valueOf(thistime).toString()));
+			sessiondata.setRefresh_time(new Date());
+			sessiondata.setStarttermin_time(new Date());
+			sessiondata.setUser_id(null);
+
+			sessiondata = em.merge(sessiondata);
+
+			return sessiondata;
+		} catch (Exception ex2) {
+			log.error("[startsession]: ", ex2);
+		}
+
+		return null;
+	}
+
+	public Sessiondata getSessionByHash(String SID) {
+		try {
+			log.debug("updateUser User SID: " + SID);
+
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Sessiondata> cq = cb.createQuery(Sessiondata.class);
+			Root<Sessiondata> c = cq.from(Sessiondata.class);
+			Predicate condition = cb.equal(c.get("session_id"), SID);
+			cq.where(condition);
+
+			TypedQuery<Sessiondata> q = em.createQuery(cq);
+
+			List<Sessiondata> fullList = q.getResultList();
+			if (fullList.size() == 0) {
+				log.error("Could not find session to update: " + SID);
+				return null;
+			}
+
+			Sessiondata sd = fullList.get(0);
+
+			return sd;
+		} catch (Exception ex2) {
+			log.error("[getSessionByHash]: ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @return
+	 */
+	public Long checkSession(String SID) {
+		try {
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
+			query.setParameter("session_id", SID);
+			List<Sessiondata> sessions = query.getResultList();
+
+			Sessiondata sessiondata = null;
+			if (sessions != null && sessions.size() > 0) {
+				sessiondata = sessions.get(0);
+			}
+
+			// Update the Session Object
+			if (sessiondata != null)
+				updatesession(SID);
+
+			// Checks if wether the Session or the User Object of that Session
+			// is set yet
+			if (sessiondata == null || sessiondata.getUser_id() == null
+					|| sessiondata.getUser_id().equals(new Long(0))) {
+				return new Long(0);
+			} else {
+				return sessiondata.getUser_id();
+			}
+		} catch (Exception ex2) {
+			log.error("[checkSession]: ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * update the session of a user with a new user id this is needed to see if
+	 * the session is loggedin
+	 * 
+	 * @param SID
+	 * @param USER_ID
+	 */
+	public Boolean updateUser(String SID, long USER_ID) {
+		try {
+			log.debug("updateUser User: " + USER_ID + " || " + SID);
+
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
+			query.setParameter("session_id", SID);
+
+			List<Sessiondata> sessions = query.getResultList();
+
+			Sessiondata sessiondata = null;
+			if (sessions != null && sessions.size() > 0) {
+				sessiondata = sessions.get(0);
+			}
+
+			if (sessiondata == null) {
+				log.error("Could not find session to Update");
+				return false;
+			}
+			log.debug("Found session to update: " + sessiondata.getSession_id()
+					+ " userId: " + USER_ID);
+
+			sessiondata.setRefresh_time(new Date());
+			sessiondata.setUser_id(USER_ID);
+			if (sessiondata.getId() == null) {
+				em.persist(sessiondata);
+			} else {
+				if (!em.contains(sessiondata)) {
+					em.merge(sessiondata);
+				}
+			}
+			return true;
+		} catch (Exception ex2) {
+			log.error("[updateUser]: ", ex2);
+		}
+		return null;
+	}
+
+	public boolean updateUser(String SID, long USER_ID, boolean storePermanent, Long language_id) {
+		try {
+			log.debug("updateUser User: " + USER_ID + " || " + SID);
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
+			query.setParameter("session_id", SID);
+
+			List<Sessiondata> sessions = query.getResultList();
+
+			Sessiondata sessiondata = null;
+			if (sessions != null && sessions.size() > 0) {
+				sessiondata = sessions.get(0);
+			}
+
+			if (sessiondata == null) {
+				log.error("Could not find session to Update");
+				return false;
+			}
+			log.debug("Found session to update: " + sessiondata.getSession_id() + " userId: " + USER_ID);
+
+			sessiondata.setRefresh_time(new Date());
+			sessiondata.setUser_id(USER_ID);
+			if (storePermanent) {
+				sessiondata.setStorePermanent(storePermanent);
+			}
+			sessiondata.setLanguage_id(language_id);
+			if (sessiondata.getId() == null) {
+				em.persist(sessiondata);
+			} else {
+				if (!em.contains(sessiondata)) {
+					em.merge(sessiondata);
+				}
+			}
+
+			// log.debug("session updated User: "+USER_ID);
+			return true;
+		} catch (Exception ex2) {
+			log.error("[updateUser]: ", ex2);
+		}
+		return false;
+	}
+
+	public Boolean updateUserOrg(String SID, Long organization_id) {
+		try {
+			log.debug("updateUserOrg User: " + organization_id + " || " + SID);
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
+			query.setParameter("session_id", SID);
+
+			List<Sessiondata> sessions = query.getResultList();
+
+			Sessiondata sessiondata = null;
+			if (sessions != null && sessions.size() > 0) {
+				sessiondata = sessions.get(0);
+			}
+
+			if (sessiondata == null) {
+				log.error("Could not find session to Update");
+				return false;
+			}
+			log.debug("Found session to update: " + sessiondata.getSession_id()
+					+ " organisation_id: " + organization_id);
+
+			sessiondata.setRefresh_time(new Date());
+			sessiondata.setOrganization_id(organization_id);
+			if (sessiondata.getId() == null) {
+				em.persist(sessiondata);
+			} else {
+				if (!em.contains(sessiondata)) {
+					em.merge(sessiondata);
+				}
+			}
+			return true;
+		} catch (Exception ex2) {
+			log.error("[updateUser]: ", ex2);
+		}
+		return null;
+	}
+
+	public Boolean updateUserWithoutSession(String SID, Long USER_ID) {
+		try {
+			log.debug("updateUser User: " + USER_ID + " || " + SID);
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
+			query.setParameter("session_id", SID);
+
+			List<Sessiondata> sessions = query.getResultList();
+
+			Sessiondata sessiondata = null;
+			if (sessions != null && sessions.size() > 0) {
+				sessiondata = sessions.get(0);
+			}
+
+			if (sessiondata == null) {
+				log.error("Could not find session to Update");
+				return false;
+			}
+			log.debug("Found session to update: " + sessiondata.getSession_id()
+					+ " userId: " + USER_ID);
+
+			sessiondata.setRefresh_time(new Date());
+			sessiondata.setUser_id(USER_ID);
+			if (sessiondata.getId() == null) {
+				em.persist(sessiondata);
+			} else {
+				if (!em.contains(sessiondata)) {
+					em.merge(sessiondata);
+				}
+			}
+			return true;
+		} catch (Exception ex2) {
+			log.error("[updateUser]: ", ex2);
+		}
+		return null;
+	}
+
+	public Boolean updateUserRemoteSession(String SID, String sessionXml) {
+		try {
+			log.debug("updateUser User SID: " + SID);
+
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Sessiondata> cq = cb.createQuery(Sessiondata.class);
+			Root<Sessiondata> c = cq.from(Sessiondata.class);
+			Predicate condition = cb.equal(c.get("session_id"), SID);
+			cq.where(condition);
+
+			TypedQuery<Sessiondata> q = em.createQuery(cq);
+			List<Sessiondata> fullList = q.getResultList();
+
+			if (fullList.size() == 0) {
+				log.error("Could not find session to update: " + SID);
+				return false;
+			} else {
+				// log.error("Found session to update: "+SID);
+			}
+			Sessiondata sd = fullList.get(0);
+			sd.setRefresh_time(new Date());
+			sd.setSessionXml(sessionXml);
+
+			if (sd.getId() == null) {
+				em.persist(sd);
+			} else {
+				if (!em.contains(sd)) {
+					em.merge(sd);
+				}
+			}
+			return true;
+		} catch (Exception ex2) {
+			log.error("[updateUserRemoteSession]: ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * update the session every time a user makes a request
+	 * 
+	 * @param SID
+	 */
+	private void updatesession(String SID) {
+		try {
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Sessiondata> cq = cb.createQuery(Sessiondata.class);
+			Root<Sessiondata> c = cq.from(Sessiondata.class);
+			Predicate condition = cb.equal(c.get("session_id"), SID);
+			cq.where(condition);
+
+			TypedQuery<Sessiondata> q = em.createQuery(cq);
+
+			List<Sessiondata> fullList = q.getResultList();
+			if (fullList.size() == 0) {
+				log.error("Found NO session to updateSession: ");
+
+			} else {
+				// log.debug("Found session to updateSession: ");
+				Sessiondata sd = fullList.iterator().next();
+				// log.debug("Found session to updateSession sd "+sd.getUser_id()+" "+sd.getSession_id());
+				sd.setRefresh_time(new Date());
+
+				if (sd.getId() == null) {
+					em.persist(sd);
+				} else {
+					if (!em.contains(sd)) {
+						em.merge(sd);
+					}
+				}
+			}
+
+		} catch (Exception ex2) {
+			log.error("[updatesession]: ", ex2);
+		}
+	}
+
+	/**
+	 * 
+	 * @param date
+	 * @return
+	 */
+	private List<Sessiondata> getSessionToDelete(Date refresh_time) {
+		try {
+			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionToDelete", Sessiondata.class);
+			query.setParameter("refresh_time", refresh_time);
+			return query.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getSessionToDelete]: ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 *
+	 */
+	public void clearSessionTable() {
+		try {
+			log.debug("****** clearSessionTable: ");
+			Calendar rightNow = Calendar.getInstance();
+			rightNow.setTimeInMillis(rightNow.getTimeInMillis() - 1800000);
+			List<Sessiondata> l = this.getSessionToDelete(rightNow.getTime());
+			log.debug("clearSessionTable: " + l.size());
+			for (Iterator<Sessiondata> it = l.iterator(); it.hasNext();) {
+				Sessiondata sData = it.next();
+				sData = em.find(Sessiondata.class, sData.getId());
+				em.remove(sData);
+			}
+		} catch (Exception err) {
+			log.error("clearSessionTable", err);
+		}
+	}
+
+	/**
+	 * @param room_id
+	 */
+	public void clearSessionByRoomId(Long room_id) {
+		try {
+			for (Client rcl : sessionManager.getClientListByRoom(room_id)) {
+				String aux = rcl.getSwfurl();
+
+				int init_pos = aux.indexOf("sid=") + 4;
+				int end_pos = init_pos + 32;
+				if (end_pos > aux.length())
+					end_pos = aux.length();
+				String SID = aux.substring(init_pos, end_pos);
+
+				Sessiondata sData = this.getSessionByHash(SID);
+
+				sData = em.find(Sessiondata.class, sData.getId());
+				em.remove(sData);
+			}
+
+		} catch (Exception err) {
+			log.error("clearSessionByRoomId", err);
+		}
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/IUserManager.java b/src/db/java/org/apache/openmeetings/db/dao/user/IUserManager.java
new file mode 100644
index 0000000..83fb539
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/IUserManager.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.user.User.Right;
+
+//FIXME HACK to bypass cross project compilation
+public interface IUserManager {
+	Long registerUserInit(Set<Right> rights, String login, String password, String lastname,
+			String firstname, String email, Date age, String street,
+			String additionalname, String fax, String zip, long states_id,
+			String town, long language_id, boolean sendWelcomeMessage,
+			List<Long> organisations, String phone, boolean sendSMS, Boolean sendConfirmation,
+			TimeZone timezone, Boolean forceTimeZoneCheck,
+			String userOffers, String userSearchs, Boolean showContactData,
+			Boolean showContactDataToContacts, String activatedHash) throws Exception;
+
+	Long registerUserNoEmail(String login, String Userpass,
+			String lastname, String firstname, String email, Date age,
+			String street, String additionalname, String fax, String zip,
+			long states_id, String town, long language_id, String phone, boolean sendSMS, 
+			boolean generateSipUserData, String jNameTimeZone);
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/IUserService.java b/src/db/java/org/apache/openmeetings/db/dao/user/IUserService.java
new file mode 100644
index 0000000..65b5d87
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/IUserService.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+//FIXME HACK to bypass cross project compilation
+public interface IUserService {
+	Boolean kickUserByStreamId(String SID, String streamid, long serverId);
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
new file mode 100644
index 0000000..d178e60
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationDao.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class OrganisationDao implements IDataProviderDao<Organisation> {
+	public final static String[] searchFields = {"name"};
+	@PersistenceContext
+	private EntityManager em;
+
+	public Organisation get(long id) {
+		TypedQuery<Organisation> query = em.createNamedQuery("getOrganisationById", Organisation.class);
+		query.setParameter("organisation_id", id);
+		query.setParameter("deleted", false);
+		Organisation o = null;
+		try {
+			o = query.getSingleResult();
+		} catch (NoResultException e) {
+			// o = null;
+		}
+		return o;
+	}
+
+	public List<Organisation> get(int start, int count) {
+		TypedQuery<Organisation> q = em.createNamedQuery("getNondeletedOrganisations", Organisation.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public List<Organisation> get(String search, int start, int count, String sort) {
+		TypedQuery<Organisation> q = em.createQuery(DaoHelper.getSearchQuery("Organisation", "o", search, true, false, sort, searchFields), Organisation.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	public long count() {
+		TypedQuery<Long> q = em.createNamedQuery("countOrganisations", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Organisation", "o", search, true, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+	
+	public List<Organisation> get(Collection<Long> ids) {
+		return em.createNamedQuery("getOrganisationsByIds", Organisation.class).setParameter("ids", ids).getResultList();
+	}
+
+	public Organisation update(Organisation entity, Long userId) {
+		if (entity.getOrganisation_id() == null) {
+			if (userId != null) {
+				entity.setInsertedby(userId);
+			}
+			entity.setStarttime(new Date());
+			em.persist(entity);
+		} else {
+			if (userId != null) {
+				entity.setUpdatedby(userId);
+			}
+			entity.setUpdatetime(new Date());
+			em.merge(entity);
+		}
+		return entity;
+	}
+
+	public void delete(Organisation entity, Long userId) {
+		em.createNamedQuery("deleteUsersFromOrganisation")
+			.setParameter("id", entity.getOrganisation_id())
+			.executeUpdate();
+
+		entity.setDeleted(true);
+		if (userId != null) {
+			entity.setUpdatedby(userId);
+		}
+
+		em.merge(entity);
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
new file mode 100644
index 0000000..e3dc9cd
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/OrganisationUserDao.java
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.DaoHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class OrganisationUserDao implements IDataProviderDao<Organisation_Users> {
+	@PersistenceContext
+	private EntityManager em;
+	@Autowired
+	private UserDao usersDao;
+	public final static String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.adresses.email"};
+
+	public Organisation_Users get(long id) {
+		TypedQuery<Organisation_Users> q = em.createNamedQuery("getOrganisationUsersById", Organisation_Users.class);
+		q.setParameter("id", id);
+		return q.getSingleResult();
+	}
+
+	public List<Organisation_Users> get(int start, int count) {
+		throw new RuntimeException("Should not be used");
+	}
+
+	public List<Organisation_Users> get(String search, int start, int count, String sort) {
+		throw new RuntimeException("Should not be used");
+	}
+	
+	public List<Organisation_Users> get(long orgId, String search, int start, int count, String sort) {
+		TypedQuery<Organisation_Users> q = em.createQuery(DaoHelper.getSearchQuery("Organisation_Users", "ou", null, search, false, false, "ou.organisation.organisation_id = :orgId", sort, searchFields), Organisation_Users.class);
+		q.setParameter("orgId", orgId);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	public List<Organisation_Users> get(long orgId, int start, int count) {
+		TypedQuery<Organisation_Users> q = em.createNamedQuery("getOrganisationUsersByOrgId", Organisation_Users.class);
+		q.setParameter("id", orgId);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public Organisation_Users getByOrganizationAndUser(long orgId, long userId) {
+		try {
+			List<Organisation_Users> list = em.createNamedQuery("isUserInOrganization", Organisation_Users.class)
+					.setParameter("orgId", orgId).setParameter("userId", userId).getResultList();
+			if (list != null && !list.isEmpty()) {
+				return list.get(0);
+			}
+		} catch (Exception e) {
+			//no-op
+		}
+		return null;
+	}
+	
+	public boolean isUserInOrganization(long orgId, long userId) {
+		return em.createNamedQuery("isUserInOrganization", Organisation_Users.class)
+				.setParameter("orgId", orgId).setParameter("userId", userId).getResultList().size() > 0;
+	}
+	
+	public long count() {
+		throw new RuntimeException("Should not be used");
+	}
+
+	public long count(String search) {
+		throw new RuntimeException("Should not be used");
+	}
+	
+	public long count(long orgId, String search) {
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Organisation_Users", "ou", search, false, true, null, searchFields), Long.class);
+		return q.getSingleResult();
+	}
+	
+	public long count(long orgId) {
+		TypedQuery<Long> q = em.createNamedQuery("countOrganisationUsers", Long.class);
+		q.setParameter("id", orgId);
+		return q.getSingleResult();
+	}
+
+	public void update(List<Organisation_Users> list, Long userId) {
+		for (Organisation_Users ou : list) {
+			update(ou, userId);
+		}
+	}
+	
+	public Organisation_Users update(Organisation_Users entity, Long userId) {
+		if (entity.getOrganisation_users_id() == null) {
+			entity.setStarttime(new Date());
+			em.persist(entity);
+		} else {
+			entity.setUpdatetime(new Date());
+			entity = em.merge(entity);
+		}
+		updateUser(entity, false, userId);
+		return entity;
+	}
+
+	private void updateUser(Organisation_Users entity, boolean delete, Long userId) {
+		//entity has been detached need to re-fetch
+		User u = usersDao.get(entity.getUser().getUser_id());
+		int idx = u.getOrganisation_users().indexOf(entity);
+		if (delete && idx > -1) {
+			Organisation_Users ou = u.getOrganisation_users().remove(idx);
+			em.remove(ou);
+		} else if (!delete && idx < 0) {
+			u.getOrganisation_users().add(entity);
+		}
+		usersDao.update(u, userId);
+	}
+	
+	public void delete(Organisation_Users entity, Long userId) {
+		if (entity.getOrganisation_users_id() != null) {
+			updateUser(entity, true, userId);
+		}
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
new file mode 100644
index 0000000..276f1bd
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class PrivateMessageFolderDao implements IDataProviderDao<PrivateMessageFolder> {
+	private static final Logger log = Red5LoggerFactory.getLogger(PrivateMessageFolderDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	
+	public Long addPrivateMessageFolder(String folderName, Long userId) {
+		try {
+			PrivateMessageFolder privateMessageFolder = new PrivateMessageFolder();
+			privateMessageFolder.setFolderName(folderName);
+			privateMessageFolder.setUserId(userId);
+			privateMessageFolder.setInserted(new Date());
+			
+			privateMessageFolder = em.merge(privateMessageFolder);
+			Long privateMessageFolderId = privateMessageFolder.getPrivateMessageFolderId();
+			
+			return privateMessageFolderId;	
+		} catch (Exception e) {
+			log.error("[addPrivateMessageFolder]",e);
+		}
+		return null;
+	}
+	
+	public Long addPrivateMessageFolderObj(PrivateMessageFolder privateMessageFolder) {
+		try {
+			privateMessageFolder.setInserted(new Date());
+			
+			privateMessageFolder = em.merge(privateMessageFolder);
+			Long privateMessageFolderId = privateMessageFolder.getPrivateMessageFolderId();
+			
+			return privateMessageFolderId;	
+		} catch (Exception e) {
+			log.error("[addPrivateMessageFolder]",e);
+		}
+		return null;
+	}
+	
+	public PrivateMessageFolder get(long privateMessageFolderId) {
+		try {
+			String hql = "select c from PrivateMessageFolder c " +
+						"where c.privateMessageFolderId = :privateMessageFolderId ";
+
+			TypedQuery<PrivateMessageFolder> query = em.createQuery(hql, PrivateMessageFolder.class); 
+			query.setParameter("privateMessageFolderId", privateMessageFolderId);
+			
+			PrivateMessageFolder privateMessageFolder = null;
+			try {
+				privateMessageFolder = query.getSingleResult();
+		    } catch (NoResultException ex) {
+		    }
+			
+			return privateMessageFolder;
+		} catch (Exception e) {
+			log.error("[getPrivateMessageFolderById]",e);
+		}
+		return null;
+	}
+
+	public List<PrivateMessageFolder> get(int start, int count) {
+		return em.createQuery("SELECT c FROM PrivateMessageFolder c ORDER BY c.privateMessageFolderId", PrivateMessageFolder.class)
+				.setFirstResult(start).setMaxResults(count)
+				.getResultList();
+	}
+
+	public PrivateMessageFolder update(PrivateMessageFolder privateMessageFolder, Long userId) {
+		if (privateMessageFolder.getPrivateMessageFolderId() == 0) {
+			em.persist(privateMessageFolder);
+	    } else {
+	    	if (!em.contains(privateMessageFolder)) {
+	    		privateMessageFolder = em.merge(privateMessageFolder);
+		    }
+		}
+		return privateMessageFolder;
+	}
+	
+	public List<PrivateMessageFolder> getPrivateMessageFolderByUserId(Long userId) {
+		try {
+			String hql = "select c from PrivateMessageFolder c " +
+						"where c.userId = :userId ";
+
+			TypedQuery<PrivateMessageFolder> query = em.createQuery(hql, PrivateMessageFolder.class); 
+			query.setParameter("userId", userId);
+			
+			List<PrivateMessageFolder> privateMessageFolders = query.getResultList();
+			
+			return privateMessageFolders;
+		} catch (Exception e) {
+			log.error("[getPrivateMessageFolderByUserId]",e);
+		}
+		return null;
+	}
+
+	public void delete(PrivateMessageFolder privateMessageFolder, Long userId) {
+		privateMessageFolder = em.find(PrivateMessageFolder.class, privateMessageFolder.getPrivateMessageFolderId());
+		em.remove(privateMessageFolder);
+	}
+
+	public List<PrivateMessageFolder> get(String search, int start, int count, String order) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public long count() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public long count(String search) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
new file mode 100644
index 0000000..a32cd2c
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
@@ -0,0 +1,195 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.User;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class PrivateMessagesDao implements IDataProviderDao<PrivateMessage> {
+	private static final Logger log = Red5LoggerFactory.getLogger(PrivateMessagesDao.class, webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+	
+	public Long addPrivateMessage(String subject, String message, Long parentMessageId, 
+			User from, User to, User owner, Boolean bookedRoom, Room room,
+			Boolean isContactRequest, Long userContactId) {
+		try {
+			PrivateMessage privateMessage = new PrivateMessage();
+			privateMessage.setInserted(new Date());
+			privateMessage.setSubject(subject);
+			privateMessage.setMessage(message);
+			privateMessage.setFrom(from);
+			privateMessage.setTo(to);
+			privateMessage.setOwner(owner);
+			privateMessage.setBookedRoom(Boolean.TRUE.equals(bookedRoom));
+			privateMessage.setRoom(room);
+			privateMessage.setParentMessage(parentMessageId);
+			privateMessage.setFolderId(INBOX_FOLDER_ID);
+			privateMessage.setIsRead(false);
+			privateMessage.setIsContactRequest(isContactRequest);
+			privateMessage.setUserContactId(userContactId);
+			
+			privateMessage = em.merge(privateMessage);
+			Long privateMessageId = privateMessage.getFolderId();
+			
+			return privateMessageId;			
+		} catch (Exception e) {
+			log.error("[addPrivateMessage]",e);
+		}
+		return null;
+	}
+	
+	public List<PrivateMessage> get(int first, int count) {
+		return em.createNamedQuery("getPrivateMessages", PrivateMessage.class)
+				.setFirstResult(first).setMaxResults(count)
+				.getResultList();
+	}
+	
+	public PrivateMessage get(long id) {
+		TypedQuery<PrivateMessage> query = em.createNamedQuery("getPrivateMessageById", PrivateMessage.class); 
+		query.setParameter("id", id);
+		PrivateMessage privateMessage = null;
+		try {
+			privateMessage = query.getSingleResult();
+	    } catch (NoResultException ex) {
+	    }
+		return privateMessage;
+	}
+	
+	public PrivateMessage update(PrivateMessage entity, Long userId) {
+		if (entity.getId() < 1) {
+			entity.setInserted(new Date());
+			em.persist(entity);
+	    } else {
+    		entity = em.merge(entity);
+		}
+		return entity;
+	}
+	
+	private String getQuery(boolean isCount, String search, String orderBy, boolean asc) {
+		StringBuilder hql = new StringBuilder("SELECT ");
+		hql.append(isCount ? "COUNT(" : "").append("m").append(isCount ? ")" : "")
+			.append(" FROM PrivateMessage m WHERE m.owner.user_id = :ownerId ")
+			.append(" AND m.folderId = :folderId ");
+		
+		if (!StringUtils.isEmpty(search)) {
+			hql.append(" AND ( ")
+				.append("lower(m.subject) LIKE :search ")
+				.append("OR lower(m.message) LIKE :search ")
+				.append("OR lower(m.from.firstname) LIKE :search ")
+				.append("OR lower(m.from.lastname) LIKE :search ")
+				.append("OR lower(m.from.login) LIKE :search ")
+				.append("OR lower(m.from.adresses.email) LIKE :search ")
+				.append(" ) ");
+		}
+		
+		if (!isCount && !StringUtils.isEmpty(orderBy)) {
+			hql.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
+		}
+		return hql.toString();
+	}
+	
+	public Long count(Long ownerId, Long folderId, String search) {
+		TypedQuery<Long> query = em.createQuery(getQuery(true, search, null, true), Long.class); 
+		query.setParameter("ownerId", ownerId);
+		if (!StringUtils.isEmpty(search)) {
+			query.setParameter("search", StringUtils.lowerCase("%" + search + "%"));
+		}
+		query.setParameter("folderId", folderId);
+		return query.getSingleResult();
+	}
+	
+	public List<PrivateMessage> get(Long ownerId, Long folderId, String search, String orderBy, boolean asc, int start, int max) {
+		TypedQuery<PrivateMessage> query = em.createQuery(getQuery(false, search, orderBy, asc), PrivateMessage.class); 
+		query.setParameter("ownerId", ownerId);
+		query.setParameter("folderId", folderId);
+		if (!StringUtils.isEmpty(search)) {
+			query.setParameter("search", StringUtils.lowerCase("%" + search + "%"));
+		}
+		query.setFirstResult(start);
+		query.setMaxResults(max);
+		return query.getResultList();
+	}
+	
+	public int updateReadStatus(Collection<Long> ids, Boolean isRead) {
+		Query query = em.createNamedQuery("updatePrivateMessagesReadStatus"); 
+		query.setParameter("isRead", isRead);
+		query.setParameter("ids", ids);
+		return query.executeUpdate();
+	}
+
+	public Integer moveMailsToFolder(Collection<Long> ids, Long folderId) {
+		Query query = em.createNamedQuery("moveMailsToFolder"); 
+		query.setParameter("folderId", folderId);
+		query.setParameter("ids", ids);
+		return query.executeUpdate();
+	}
+	
+	public int delete(Collection<Long> ids) {
+		Query query = em.createNamedQuery("deletePrivateMessages"); 
+		query.setParameter("ids", ids);
+		return query.executeUpdate();
+	}
+	
+	public List<PrivateMessage> getPrivateMessagesByRoom(Long roomId) {
+		TypedQuery<PrivateMessage> query = em.createNamedQuery("getPrivateMessagesByRoom", PrivateMessage.class); 
+		query.setParameter("roomId", roomId);
+		return query.getResultList();
+	}
+
+	public List<PrivateMessage> get(String search, int start, int count, String order) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public long count() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public long count(String search) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public void delete(PrivateMessage entity, Long userId) {
+		// TODO Auto-generated method stub
+		
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/SalutationDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/SalutationDao.java
new file mode 100644
index 0000000..1355d7f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/SalutationDao.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.entity.user.Salutation;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * CRUD operations for {@link Salutation}
+ * 
+ * @author swagner
+ * 
+ */
+@Transactional
+public class SalutationDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(SalutationDao.class, webAppRootKey);
+
+	@Autowired
+	private FieldLanguagesValuesDao fieldLangValDao;
+
+	@PersistenceContext
+	private EntityManager em;
+
+	/**
+	 * Adds a new Salutation to the table Titles
+	 * 
+	 * @param titelname
+	 * @param fieldvalues_id
+	 * @return
+	 */
+	public Long addUserSalutation(String titelname, long fieldvalues_id) {
+		try {
+			Salutation ti = new Salutation();
+			ti.setName(titelname);
+			ti.setDeleted(false);
+			ti.setFieldvalues_id(fieldvalues_id);
+			ti.setStarttime(new Date());
+			ti = em.merge(ti);
+			Long salutations_id = ti.getSalutations_id();
+			return salutations_id;
+		} catch (Exception ex2) {
+			log.error("[addUserSalutation]", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * get a Salutation by given id
+	 * 
+	 * @param id
+	 * @param language_id
+	 * @return
+	 */
+	public Salutation get(Long id, long language_id) {
+		List<Salutation> ll = em.createNamedQuery("getSalutationById", Salutation.class)
+				.setParameter("id", id).getResultList();
+		for (Salutation ti : ll) {
+			ti.setLabel(fieldLangValDao.get(ti.getFieldvalues_id(), language_id));
+		}
+		return ll.isEmpty() ? null : ll.get(0);
+	}
+	
+	/**
+	 * get a list of all availible Salutations
+	 * 
+	 * @param language_id
+	 * @return
+	 */
+	public List<Salutation> getUserSalutations(long language_id) {
+		List<Salutation> ll = em.createNamedQuery("getSalutations", Salutation.class).getResultList();
+		for (Salutation ti : ll) {
+			ti.setLabel(fieldLangValDao.get(ti.getFieldvalues_id(), language_id));
+		}
+		return ll;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/StateDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/StateDao.java
new file mode 100644
index 0000000..eb28ef4
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/StateDao.java
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * CRUD operations for {@link State}
+ * 
+ * @author sebawagner
+ * 
+ */
+@Transactional
+public class StateDao {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			StateDao.class, OpenmeetingsVariables.webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	/**
+	 * adds a new State to the states table with no short name and code
+	 * 
+	 * @param name
+	 * @return the id of the new state or null if an error occurred
+	 */
+	public Long addState(String name) {
+		return addState(name, "", 0);
+	}
+	
+	/**
+	 * adds a new State to the states table
+	 * 
+	 * @param name the name of the country
+	 * @param shortName the short name of the country
+	 * @param code the code of the country
+	 * @return the id of the new state or null if an error occurred
+	 */
+	public Long addState(String name, String shortName, int code) {
+		try {
+
+			State st = new State();
+			st.setName(name);
+			st.setShortName(shortName);
+			st.setCode(code);
+			st.setStarttime(new Date());
+			st.setDeleted(false);
+
+			st = em.merge(st);
+			Long id = st.getState_id();
+
+			log.debug("added id " + id);
+
+			return id;
+		} catch (Exception ex2) {
+			log.error("addState", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * selects a state by its id
+	 * 
+	 * @param state_id
+	 * @return the state-object or null
+	 */
+	public State getStateById(long state_id) {
+		try {
+			TypedQuery<State> query = em
+					.createNamedQuery("getStateById", State.class);
+			query.setParameter("state_id", state_id);
+			query.setParameter("deleted", true);
+			List<State> ll = query.getResultList();
+			if (ll.size() > 0) {
+				return ll.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("getStateById", ex2);
+		}
+		return null;
+	}
+	
+	/**
+	 * selects a state by its name
+	 * 
+	 * @param state_id
+	 * @return the state-object or null
+	 */
+	public State getStateByName(String name) {
+		try {
+			if (name == null) {
+				return null;
+			}
+			TypedQuery<State> query = em
+					.createNamedQuery("getStateByName", State.class);
+			query.setParameter("name", name.toLowerCase());
+			query.setParameter("deleted", true);
+			List<State> ll = query.getResultList();
+			if (ll.size() > 0) {
+				return ll.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("getStateByName", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * Get all state-Object
+	 * 
+	 * @return List of State Objects or null
+	 */
+	public List<State> getStates() {
+		try {
+			TypedQuery<State> query = em
+					.createNamedQuery("getStates", State.class);
+			query.setParameter("deleted", true);
+			List<State> ll = query.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("getStates", ex2);
+		}
+		return null;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/UserContactsDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/UserContactsDao.java
new file mode 100644
index 0000000..091778d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/UserContactsDao.java
@@ -0,0 +1,266 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class UserContactsDao {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(UserContactsDao.class, OpenmeetingsVariables.webAppRootKey);
+	@PersistenceContext
+	private EntityManager em;
+    @Autowired
+    private UserDao userDao;
+
+	public Long addUserContact(Long user_id, Long ownerId, Boolean pending, String hash) {
+		try {
+			
+			UserContact userContact = new UserContact();
+			userContact.setInserted(new Date());
+			userContact.setOwner(userDao.get(ownerId));
+			userContact.setContact(userDao.get(user_id));
+			userContact.setPending(pending);
+			userContact.setHash(hash);
+			
+			userContact = em.merge(userContact);
+			Long userContactId = userContact.getUserContactId();
+			
+			return userContactId;			
+		} catch (Exception e) {
+			log.error("[addUserContact]",e);
+		}
+		return null;
+	}
+	
+	public Long addUserContactObj(UserContact userContact) {
+		try {
+			
+			userContact.setInserted(new Date());
+			
+			userContact = em.merge(userContact);
+			Long userContactId = userContact.getUserContactId();
+			
+			return userContactId;			
+		} catch (Exception e) {
+			log.error("[addUserContact]",e);
+		}
+		return null;
+	}
+	
+	/**
+	 * @param userContactDeleteId
+	 * @return rowcount of update
+	 */
+	public Integer deleteUserContact(Long userContactDeleteId) {
+		try {
+			Query query = em.createNamedQuery("deleteUserContact");
+			query.setParameter("userContactDeleteId", userContactDeleteId);
+	        return query.executeUpdate();
+		} catch (Exception e) {
+			log.error("[deleteUserContact]",e);
+		}
+		return null;
+	}
+	
+	/**
+	 * @param ownerId
+	 * @return rowcount of update
+	 */
+	public Integer deleteAllUserContacts(Long ownerId) {
+		try {
+			Query query = em.createNamedQuery("deleteAllUserContacts");
+	        query.setParameter("ownerId",ownerId);
+	        return query.executeUpdate();
+		} catch (Exception e) {
+			log.error("[deleteAllUserContacts]",e);
+		}
+		return null;
+	}
+	
+	public Long checkUserContacts(Long user_id, Long ownerId) {
+		try {
+			TypedQuery<Long> query = em.createNamedQuery("checkUserContacts", Long.class); 
+			query.setParameter("user_id", user_id);
+			query.setParameter("ownerId", ownerId);
+			List<Long> ll = query.getResultList();
+			
+			log.info("checkUserContacts" + ll.get(0));
+			
+			return ll.get(0);
+			
+		} catch (Exception e) {
+			log.error("[checkUserContacts]",e);
+		}
+		return null;
+	}
+	
+	public List<UserContact> get(long ownerId, int first, int count) {
+		TypedQuery<UserContact> q = em.createNamedQuery("getContactsByUser", UserContact.class);
+		q.setParameter("user_id", ownerId);
+		q.setFirstResult(first);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	public long count(long ownerId) {
+		TypedQuery<Long> q = em.createNamedQuery("countContactsByUser", Long.class);
+		q.setParameter("user_id", ownerId);
+		return q.getSingleResult();
+	}
+	
+	public List<UserContact> getContactsByUserAndStatus(Long ownerId, Boolean pending) {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getContactsByUserAndStatus", UserContact.class);
+			query.setParameter("ownerId", ownerId);
+			query.setParameter("pending", pending);
+			return query.getResultList();
+		} catch (Exception e) {
+			log.error("[getContactsByUserAndStatus]",e);
+		}
+		return null;
+	}
+	
+	public UserContact getUserContactByShareCalendar(Long contactId,
+			Boolean shareCalendar, Long userId) {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getUserContactByShareCalendar",
+					UserContact.class);
+			query.setParameter("contactId", contactId);
+			query.setParameter("userId", userId);
+			query.setParameter("shareCalendar", shareCalendar);
+			List<UserContact> ll = query.getResultList();
+			if (ll.size() > 0) {
+				return ll.get(0);
+			}
+		} catch (Exception e) {
+			log.error("[getUserContactByShareCalendar]", e);
+		}
+		return null;
+	}
+
+	public List<UserContact> getContactsByShareCalendar(Long contactId, Boolean shareCalendar) {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getContactsByShareCalendar", UserContact.class); 
+			query.setParameter("contactId", contactId);
+			query.setParameter("shareCalendar", shareCalendar);
+			return query.getResultList();
+		} catch (Exception e) {
+			log.error("[getContactsByShareCalendar]",e);
+		}
+		return null;
+	}
+	
+	public List<UserContact> getContactRequestsByUserAndStatus(Long user_id, Boolean pending) {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getContactRequestsByUserAndStatus", UserContact.class); 
+			query.setParameter("user_id", user_id);
+			query.setParameter("pending", pending);
+			return query.getResultList();
+		} catch (Exception e) {
+			log.error("[getContactRequestsByUserAndStatus]",e);
+		}
+		return null;
+	}
+	
+	public UserContact get(Long id) {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getUserContactsById", UserContact.class); 
+			query.setParameter("userContactId", id);
+			UserContact userContacts = null;
+			try {
+				userContacts = query.getSingleResult();
+		    } catch (NoResultException ex) {
+		    }
+			return userContacts;
+		} catch (Exception e) {
+			log.error("[getUserContacts]",e);
+		}
+		return null;
+	}
+	
+	public List<UserContact> getUserContacts() {
+		try {
+			TypedQuery<UserContact> query = em.createNamedQuery("getUserContacts", UserContact.class); 
+			return query.getResultList();
+		} catch (Exception e) {
+			log.error("[getUserContacts]",e);
+		}
+		return null;
+	}
+	
+	public Long updateContactStatus(Long userContactId, Boolean pending) {
+		try {
+			
+			UserContact userContacts = this.get(userContactId);
+			
+			if (userContacts == null) {
+				return null;
+			}
+			userContacts.setPending(pending);
+			userContacts.setUpdated(new Date());
+			
+			if (userContacts.getUserContactId() == 0) {
+				em.persist(userContacts);
+		    } else {
+		    	if (!em.contains(userContacts)) {
+		    		em.merge(userContacts);
+			    }
+			}
+			
+			return userContactId;
+			
+		} catch (Exception e) {
+			log.error("[updateContactStatus]",e);
+		}
+		return null;
+	}
+	
+	public void updateContact(UserContact userContacts) {
+		try {
+			userContacts.setUpdated(new Date());
+			
+			if (userContacts.getUserContactId() == 0) {
+				em.persist(userContacts);
+		    } else {
+		    	if (!em.contains(userContacts)) {
+		    		em.merge(userContacts);
+			    }
+			}
+			
+		} catch (Exception e) {
+			log.error("[updateContact]",e);
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java b/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
new file mode 100644
index 0000000..fae9b56
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -0,0 +1,666 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dao.user;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+import java.util.UUID;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.OpenJPAQuery;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.DaoHelper;
+import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * CRUD operations for {@link User}
+ * 
+ * @author swagner, solomax, vasya
+ * 
+ */
+@Transactional
+public class UserDao implements IDataProviderDao<User> {
+	private static final Logger log = Red5LoggerFactory.getLogger(UserDao.class, webAppRootKey);
+
+	public final static String[] searchFields = {"lastname", "firstname", "login", "adresses.email", "adresses.town"};
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private ConfigurationDao cfgDao;
+	@Autowired
+	private StateDao stateDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	public static Set<Right> getDefaultRights() {
+		Set<Right> rights = new HashSet<User.Right>();
+		rights.add(Right.Login);
+		rights.add(Right.Dashboard);
+		rights.add(Right.Room);
+		return rights;
+	}
+	/**
+	 * Get a new instance of the {@link User} entity, with all default values
+	 * set
+	 * 
+	 * @param currentUser - the user to copy time zone from
+	 * @return new User instance
+	 */
+	public User getNewUserInstance(User currentUser) {
+		User user = new User();
+		user.setSalutations_id(1L); // TODO: Fix default selection to be configurable
+		user.setRights(getDefaultRights());
+		user.setLanguage_id(cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1"));
+		user.setTimeZoneId(timezoneUtil.getTimeZone(currentUser).getID());
+		user.setForceTimeZoneCheck(false);
+		user.setSendSMS(false);
+		user.setAge(new Date());
+		Address adresses = new Address();
+		adresses.setStates(stateDao.getStateById(1L));
+		user.setAdresses(adresses);
+		user.setShowContactData(false);
+		user.setShowContactDataToContacts(false);
+
+		return user;
+	}
+
+	public List<User> get(int first, int count) {
+		TypedQuery<User> q = em.createNamedQuery("getNondeletedUsers", User.class);
+		q.setFirstResult(first);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+	
+	private String getAdditionalJoin(boolean filterContacts) {
+		return filterContacts ? "LEFT JOIN u.organisation_users ou" : null;
+	}
+	
+	private String getAdditionalWhere(boolean excludeContacts, Map<String, Object> params) {
+		if (excludeContacts) {
+			params.put("contact", Type.contact);
+			return "u.type <> :contact";
+		}
+		return null;
+	}
+	
+	private String getAdditionalWhere(boolean filterContacts, Long ownerId, Map<String, Object> params) {
+		if (filterContacts) {
+			params.put("ownerId", ownerId);
+			params.put("contact", Type.contact);
+			return "((u.type <> :contact AND ou.organisation.organisation_id IN (SELECT ou.organisation.organisation_id FROM Organisation_Users ou WHERE ou.user.user_id = :ownerId)) "
+				+ "OR (u.type = :contact AND u.ownerId = :ownerId))";
+		}
+		return null;
+	}
+	
+	private void setAdditionalParams(TypedQuery<?> q, Map<String, Object> params) {
+		for (String key : params.keySet()) {
+			q.setParameter(key, params.get(key));
+		}
+	}
+
+	public List<User> get(String search, int start, int count, String sort, boolean filterContacts, long currentUserId) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, false
+				, getAdditionalWhere(filterContacts, currentUserId, params), sort, searchFields), User.class);
+		q.setFirstResult(start);
+		q.setMaxResults(count);
+		setAdditionalParams(q, params);
+		return q.getResultList();
+	}
+	
+	public long count() {
+		// get all users
+		TypedQuery<Long> q = em.createNamedQuery("countNondeletedUsers", Long.class);
+		return q.getSingleResult();
+	}
+
+	public long count(String search) {
+		return count(search, false, -1);
+	}
+	
+	public long count(String search, long currentUserId) {
+		return count(search, false, currentUserId);
+	}
+	
+	public long count(String search, boolean filterContacts, long currentUserId) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, true
+				, getAdditionalWhere(filterContacts, currentUserId, params), null, searchFields), Long.class);
+		setAdditionalParams(q, params);
+		return q.getSingleResult();
+	}
+	
+	//This is AdminDao method
+	public List<User> get(String search, boolean excludeContacts, int first, int count) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", null, search, true, true, false
+				, getAdditionalWhere(excludeContacts, params), null, searchFields), User.class);
+		setAdditionalParams(q, params);
+		q.setFirstResult(first);
+		q.setMaxResults(count);
+		return q.getResultList();
+	}
+
+	public List<User> get(String search, boolean filterContacts, long currentUserId) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, false
+				, getAdditionalWhere(filterContacts, currentUserId, params), null, searchFields), User.class);
+		setAdditionalParams(q, params);
+		return q.getResultList();
+	}
+
+	public User update(User u, Long userId) {
+		if (u.getOrganisation_users() != null) {
+			for (Organisation_Users ou : u.getOrganisation_users()) {
+				ou.setUser(u);
+			}
+		}
+		if (u.getUser_id() == null) {
+			u.setStarttime(new Date());
+			em.persist(u);
+		} else {
+			u.setUpdatetime(new Date());
+			u =	em.merge(u);
+		}
+		//this is necessary due to organisation details are lost on update
+		for (Organisation_Users ou : u.getOrganisation_users()) {
+			em.refresh(ou);
+		}
+		return u;
+	}
+	
+	// TODO: Why the password field is not set via the Model is because its
+	// FetchType is Lazy, this extra hook here might be not needed with a
+	// different mechanism to protect the password from being read
+	// sebawagner, 01.10.2012
+	public User update(User user, String password, long updatedBy) throws NoSuchAlgorithmException {
+		User u = update(user, updatedBy);
+		if (password != null && !password.isEmpty()) {
+			//OpenJPA is not allowing to set fields not being fetched before
+			User u1 = get(u.getUser_id(), true);
+			u1.updatePassword(cfgDao, password);
+			update(u1, updatedBy);
+		}
+		return u;
+	}
+	
+	public void delete(User u, Long userId) {
+		deleteUserID(u.getUser_id());
+	}
+
+	public User get(long user_id) {
+		return get(user_id, false);
+	}
+	
+	private User get(long user_id, boolean force) {
+		User u = null;
+		if (user_id > 0) {
+			OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
+			boolean qrce = oem.getFetchPlan().getQueryResultCacheEnabled();
+			oem.getFetchPlan().setQueryResultCacheEnabled(false); //FIXME update in cache during update
+			TypedQuery<User> q = oem.createNamedQuery("getUserById", User.class).setParameter("id", user_id);
+			@SuppressWarnings("unchecked")
+			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
+			kq.getFetchPlan().addFetchGroup("orgUsers");
+			if (force) {
+				kq.getFetchPlan().addFetchGroup("backupexport");
+			}
+			try {
+				u = kq.getSingleResult();
+			} catch (NoResultException ne) {
+				//no-op
+			}
+			oem.getFetchPlan().setQueryResultCacheEnabled(qrce);
+		} else {
+			log.info("[get] " + "Info: No USER_ID given");
+		}
+		return u;
+	}
+
+	public Long deleteUserID(long userId) {
+		try {
+			if (userId != 0) {
+				User us = get(userId);
+				for (Organisation_Users ou : us.getOrganisation_users()){
+					em.remove(ou);
+				}
+				us.setOrganisation_users(null);
+				us.setDeleted(true);
+				us.setUpdatetime(new Date());
+				us.setSipUser(null);
+				Address adr = us.getAdresses();
+				if (adr != null) {
+					adr.setDeleted(true);
+				}
+
+				if (us.getUser_id() == null) {
+					em.persist(us);
+				} else {
+					if (!em.contains(us)) {
+						em.merge(us);
+					}
+				}
+				return us.getUser_id();
+			}
+		} catch (Exception ex2) {
+			log.error("[deleteUserID]", ex2);
+		}
+		return null;
+	}
+
+	public List<User> get(Collection<Long> ids) {
+		return em.createNamedQuery("getUsersByIds", User.class).setParameter("ids", ids).getResultList();
+	}
+
+	public List<User> getAllUsers() {
+		TypedQuery<User> q = em.createNamedQuery("getNondeletedUsers", User.class);
+		return q.getResultList();
+	}
+
+	public List<User> getAllBackupUsers() {
+		try {
+			TypedQuery<User> q = em.createNamedQuery("getAllUsers", User.class);
+			@SuppressWarnings("unchecked")
+			OpenJPAQuery<User> kq = OpenJPAPersistence.cast(q);
+			kq.getFetchPlan().addFetchGroups("backupexport", "orgUsers");
+			return kq.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getAllUsersDeleted] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * check for duplicates
+	 * 
+	 * @param DataValue
+	 * @return
+	 */
+	public boolean checkUserLogin(String login, Long id) {
+		log.debug("checkUserLogin: login = {}, id = {}", login, id);
+		long count = em.createNamedQuery("checkUserLogin", Long.class)
+				.setParameter("login", login)
+				.setParameter("id", id == null ? 0 : id)
+				.getSingleResult();
+		return count == 0;
+	}
+
+	/**
+	 * Checks if a mail is already taken by someone else
+	 * 
+	 * @param email
+	 * @return
+	 */
+	public boolean checkUserEMail(String email, Long id) {
+		log.debug("checkUserMail: email = {}, id = {}", email, id);
+		if (email == null || email.length() == 0) {
+			return true;
+		}
+		long count = em.createNamedQuery("checkUserEmail", Long.class)
+			.setParameter("email", email)
+			.setParameter("id", id == null ? 0 : id)
+			.setParameter("type", Type.contact)
+			.getSingleResult();
+		log.debug("size: " + count);
+
+		return count == 0;
+	}
+	
+	public User getByName(String login, Type type) {
+		User us = null;
+		try {
+			us = em.createNamedQuery("getUserByLogin", User.class)
+					.setParameter("login", login)
+					.setParameter("type", type)
+					.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+		return us;
+	}
+
+	public User getUserByEmail(String email) {
+		User us = null;
+		try {
+			us = em.createNamedQuery("getUserByEmail", User.class)
+					.setParameter("email", email)
+					.setParameter("type", User.Type.user)
+					.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+		return us;
+	}
+
+	public Object getUserByHash(String hash) {
+		if (hash.length() == 0) {
+			return new Long(-5);
+		}
+		User us = null;
+		try {
+			us = em.createNamedQuery("getUserByHash", User.class)
+					.setParameter("resethash", hash)
+					.setParameter("type", User.Type.user)
+					.getSingleResult();
+		} catch (NoResultException ex) {
+		} catch (Exception e) {
+			log.error("[getUserByHash]", e);
+		}
+		if (us != null) {
+			return us;
+		} else {
+			return new Long(-5);
+		}
+	}
+
+	/**
+	 * @param search
+	 * @return
+	 */
+	public Long selectMaxFromUsersWithSearch(String search) {
+		try {
+			// get all users
+			TypedQuery<Long> query = em.createNamedQuery("selectMaxFromUsersWithSearch", Long.class);
+			query.setParameter("search", StringUtils.lowerCase(search));
+			List<Long> ll = query.getResultList();
+			log.info("selectMaxFromUsers" + ll.get(0));
+			return ll.get(0);
+		} catch (Exception ex2) {
+			log.error("[selectMaxFromUsers] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * Returns true if the password is correct
+	 * 
+	 * @param userId
+	 * @param password
+	 * @return
+	 */
+	public boolean verifyPassword(Long userId, String password) {
+		TypedQuery<Long> query = em.createNamedQuery("checkPassword", Long.class);
+		query.setParameter("userId", userId);
+		query.setParameter("password", ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(password));
+		return query.getResultList().get(0) == 1;
+
+	}
+
+	public User getContact(String email, long ownerId) {
+		return getContact(email, "", "", ownerId);
+	}
+	
+	public User getContact(String email, User owner) {
+		return getContact(email, "", "", null, null, owner);
+	}
+	
+	public User getContact(String email, String firstName, String lastName, long ownerId) {
+		return getContact(email, firstName, lastName, null, null, get(ownerId));
+	}
+	
+	public User getContact(String email, String firstName, String lastName, Long langId, String tzId, long ownerId) {
+		return getContact(email, firstName, lastName, langId, tzId, get(ownerId));
+	}
+	
+	public User getContact(String email, String firstName, String lastName, Long langId, String tzId, User owner) {
+		User to = null;
+		try {
+			to = em.createNamedQuery("getContactByEmailAndUser", User.class)
+					.setParameter("email", email).setParameter("type", User.Type.contact).setParameter("ownerId", owner.getUser_id()).getSingleResult();
+		} catch (Exception e) {
+			//no-op
+		}
+		if (to == null) {
+			to = new User();
+			to.setType(Type.contact);
+			String login = owner.getUser_id() + "_" + email; //UserId prefix is used to ensure unique login
+			to.setLogin(login.length() < getMinLoginLength(cfgDao) ? UUID.randomUUID().toString() : login);
+			to.setFirstname(firstName);
+			to.setLastname(lastName);
+			to.setLanguage_id(null == langId ? owner.getLanguage_id() : langId);
+			to.setOwnerId(owner.getUser_id());
+			to.setAdresses(new Address());
+			to.getAdresses().setEmail(email);
+			to.setTimeZoneId(null == tzId ? owner.getTimeZoneId() : tzId);
+		}
+		return to;
+	}
+
+	/**
+	 * @param hash
+	 * @return
+	 */
+	public User getUserByActivationHash(String hash) {
+		TypedQuery<User> query = em.createQuery("SELECT u FROM User as u WHERE u.activatehash = :activatehash"
+				+ " AND u.deleted = false", User.class);
+		query.setParameter("activatehash", hash);
+		User u = null;
+		try {
+			u = query.getSingleResult();
+		} catch (NoResultException e) {
+			// u=null}
+		}
+		return u;
+	}
+
+	private <T> TypedQuery<T> getUserProfileQuery(Class<T> clazz, long userId, String text, String offers, String search, String orderBy, boolean asc) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		boolean filterContacts = true;
+		boolean count = clazz.isAssignableFrom(Long.class);
+		
+		StringBuilder sb = new StringBuilder("SELECT ");
+		sb.append(count ? "COUNT(" : "").append("u").append(count ? ") " : " ")
+			.append("FROM User u ").append(getAdditionalJoin(filterContacts)).append(" WHERE u.deleted = false AND ")
+			.append(getAdditionalWhere(filterContacts, userId, params));
+		if (!Strings.isEmpty(offers)) {
+			sb.append(" AND (LOWER(u.userOffers) LIKE :userOffers) ");
+			params.put("userOffers", getStringParam(offers));
+		}
+		if (!Strings.isEmpty(search)) {
+			sb.append(" AND (LOWER(u.userSearchs) LIKE :userSearchs) ");
+			params.put("userSearchs", getStringParam(search));
+		}
+		if (!Strings.isEmpty(text)) {
+			sb.append(" AND (LOWER(u.login) LIKE :search ")
+				.append("OR LOWER(u.firstname) LIKE :search ")
+				.append("OR LOWER(u.lastname) LIKE :search ")
+				.append("OR LOWER(u.adresses.email) LIKE :search ")
+				.append("OR LOWER(u.adresses.town) LIKE :search " + ") ");
+			params.put("search", getStringParam(text));
+		}
+		if (!count && !Strings.isEmpty(orderBy)) {
+			sb.append(" ORDER BY ").append(orderBy).append(asc ? " ASC" : " DESC");
+		}
+		TypedQuery<T> query = em.createQuery(sb.toString(), clazz);
+		setAdditionalParams(query, params);
+		return query;
+	}
+	
+	private String getStringParam(String param) {
+		return param == null ? "%" : "%" + StringUtils.lowerCase(param) + "%";
+	}
+	
+	public List<User> searchUserProfile(long userId, String text, String offers, String search, String orderBy, int start, int max, boolean asc) {
+		return getUserProfileQuery(User.class, userId, text, offers, search, orderBy, asc).setFirstResult(start).setMaxResults(max).getResultList();
+	}
+
+	public Long searchCountUserProfile(long userId, String text, String offers, String search) {
+		return getUserProfileQuery(Long.class, userId, text, offers, search, null, false).getSingleResult();
+	}
+
+	public User getExternalUser(String extId, String extType) {
+		User u = null;
+		try {
+			u = em.createNamedQuery("getExternalUser", User.class)
+				.setParameter("externalId", extId)
+				.setParameter("externalType", extType)
+				.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+		return u;
+	}
+
+	public List<User> get(String search, int start, int count, String order) {
+		return get(search, start, count, order, false, -1);
+	}
+	
+	public Set<Right> getRights(Long id) {
+		Set<Right> rights = new HashSet<Right>();
+
+		if (id == null) {
+			return rights;
+		}
+		// For direct access of linked users
+		if (id < 0) {
+			rights.add(Right.Room);
+			return rights;
+		}
+
+		User u = get(id);
+		if (u != null) {
+			return u.getRights();
+		}
+		return rights;
+	}
+	
+	/**
+	 * login logic
+	 * 
+	 * @param userOrEmail: login or email of the user being tested
+	 * @param userpass: password of the user being tested
+	 * @return User object in case of successful login
+	 * @throws OmException in case of any issue 
+	 */
+	public User login(String userOrEmail, String userpass) throws OmException {
+		List<User> users = em.createNamedQuery("getUserByLoginOrEmail", User.class)
+				.setParameter("userOrEmail", userOrEmail)
+				.setParameter("type", Type.user)
+				.getResultList();
+
+		log.debug("debug SIZE: " + users.size());
+
+		if (users.size() == 0) {
+			throw new OmException(-10L);
+		}
+		User u = users.get(0);
+
+		if (!verifyPassword(u.getUser_id(), userpass)) {
+			throw new OmException(-11L);
+		}
+		// Check if activated
+		if (!AuthLevelUtil.hasLoginLevel(u.getRights())) {
+			throw new OmException(-41L);
+		}
+		log.debug("loginUser " + u.getOrganisation_users());
+		if (u.getOrganisation_users().isEmpty()) {
+			throw new OmException("No Organization assigned to user");
+		}
+		
+		u.setLastlogin(new Date());
+		return update(u, u.getUser_id());
+	}
+	
+	public Address getAddress(String street, String zip, String town, long states_id, String additionalname, String fax, String phone, String email) {
+		Address a =  new Address();
+		a.setStreet(street);
+		a.setZip(zip);
+		a.setTown(town);
+		a.setStates(stateDao.getStateById(states_id));
+		a.setAdditionalname(additionalname);
+		a.setComment("");
+		a.setFax(fax);
+		a.setPhone(phone);
+		a.setEmail(email);
+		return a;
+	}
+	
+	public User addUser(Set<Right> rights, String firstname, String login, String lastname, long language_id,
+			String userpass, Address adress, boolean sendSMS, Date age, String hash, TimeZone timezone,
+			Boolean forceTimeZoneCheck, String userOffers, String userSearchs, Boolean showContactData,
+			Boolean showContactDataToContacts, String externalId, String externalType, List<Organisation_Users> orgList, String pictureuri) throws NoSuchAlgorithmException {
+		
+		User u = new User();
+		u.setFirstname(firstname);
+		u.setLogin(login);
+		u.setLastname(lastname);
+		u.setAge(age);
+		u.setAdresses(adress);
+		u.setSendSMS(sendSMS);
+		u.setRights(rights);
+		u.setLastlogin(new Date());
+		u.setLasttrans(new Long(0));
+		u.setSalutations_id(1L);
+		u.setStarttime(new Date());
+		u.setActivatehash(hash);
+		u.setTimeZoneId(timezone.getID());
+		u.setForceTimeZoneCheck(forceTimeZoneCheck);
+		u.setExternalUserId(externalId);
+		u.setExternalUserType(externalType);
+
+		u.setUserOffers(userOffers);
+		u.setUserSearchs(userSearchs);
+		u.setShowContactData(showContactData);
+		u.setShowContactDataToContacts(showContactDataToContacts);
+
+		// this is needed cause the language is not a needed data at registering
+		u.setLanguage_id(language_id != 0 ? language_id : null);
+		if (!Strings.isEmpty(userpass)) {
+			u.updatePassword(cfgDao, userpass);
+		}
+		u.setRegdate(new Date());
+		u.setDeleted(false);
+		u.setPictureuri(pictureuri);
+		u.setOrganisation_users(orgList);
+		
+		return update(u, null);
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java b/src/db/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java
new file mode 100644
index 0000000..779d1bb
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.basic;
+
+public class ErrorResult {
+	
+	private Long errorId;
+	private String errmessage;
+	private String errortype;
+
+	public ErrorResult(Long errorId, String errmessage, String errortype) {
+		super();
+		this.errorId = errorId;
+		this.errmessage = errmessage;
+		this.errortype = errortype;
+	}
+
+	public Long getErrorId() {
+		return errorId;
+	}
+
+	public void setErrorId(Long errorId) {
+		this.errorId = errorId;
+	}
+
+	public String getErrmessage() {
+		return errmessage;
+	}
+
+	public void setErrmessage(String errmessage) {
+		this.errmessage = errmessage;
+	}
+
+	public String getErrortype() {
+		return errortype;
+	}
+
+	public void setErrortype(String errortype) {
+		this.errortype = errortype;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/basic/SearchResult.java b/src/db/java/org/apache/openmeetings/db/dto/basic/SearchResult.java
new file mode 100644
index 0000000..afd5260
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/basic/SearchResult.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.basic;
+
+import java.util.Collection;
+
+
+public class SearchResult<T> {
+	private String objectName;
+	private Long records;
+	private Collection<T> result;
+	private Long errorId;
+	
+	public String getObjectName() {
+		return objectName;
+	}
+	public void setObjectName(String objectName) {
+		this.objectName = objectName;
+	}
+	public Long getRecords() {
+		return records;
+	}
+	public void setRecords(Long records) {
+		this.records = records;
+	}
+	public Collection<T> getResult() {
+		return result;
+	}
+	public void setResult(Collection<T> result) {
+		this.result = result;
+	}
+	public Long getErrorId() {
+		return errorId;
+	}
+	public void setErrorId(Long errorId) {
+		this.errorId = errorId;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
new file mode 100644
index 0000000..ab68249
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -0,0 +1,217 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.calendar;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.db.dto.room.RoomDTO;
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+
+public class AppointmentDTO {
+	private Long id;
+	private String title;
+	private String location;
+	private Date start;
+	private Date end;
+	private String description;
+	private UserDTO owner;
+	private Date inserted;
+	private Date updated;
+	private boolean deleted;
+	private AppointmentReminderTypeDTO reminder;
+	private RoomDTO room;
+	private String icalId;
+	private List<MeetingMemberDTO> meetingMembers;
+	private Long languageId;
+	private boolean passwordProtected;
+	private boolean connectedEvent;
+	private boolean reminderEmailSend;
+
+	public AppointmentDTO(Appointment a) {
+		id = a.getId();
+		title = a.getTitle();
+		location = a.getLocation();
+		start = a.getStart();
+		end = a.getEnd();
+		description = a.getDescription();
+		owner = new UserDTO(a.getOwner());
+		inserted = a.getInserted();
+		updated = a.getUpdated();
+		deleted = a.isDeleted();
+		reminder = new AppointmentReminderTypeDTO(a.getRemind());
+		room = new RoomDTO(a.getRoom());
+		icalId = a.getIcalId();
+		meetingMembers = new ArrayList<>();
+		for(MeetingMember mm: a.getMeetingMembers()) {
+			meetingMembers.add(new MeetingMemberDTO(mm));
+		}
+		languageId = a.getLanguageId();
+		passwordProtected = a.isPasswordProtected();
+		connectedEvent = a.isConnectedEvent();
+		reminderEmailSend = a.isReminderEmailSend();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getLocation() {
+		return location;
+	}
+
+	public void setLocation(String location) {
+		this.location = location;
+	}
+
+	public Date getStart() {
+		return start;
+	}
+
+	public void setStart(Date start) {
+		this.start = start;
+	}
+
+	public Date getEnd() {
+		return end;
+	}
+
+	public void setEnd(Date end) {
+		this.end = end;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public UserDTO getOwner() {
+		return owner;
+	}
+
+	public void setOwner(UserDTO owner) {
+		this.owner = owner;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public AppointmentReminderTypeDTO getReminder() {
+		return reminder;
+	}
+
+	public void setReminder(AppointmentReminderTypeDTO reminder) {
+		this.reminder = reminder;
+	}
+
+	public RoomDTO getRoom() {
+		return room;
+	}
+
+	public void setRoom(RoomDTO room) {
+		this.room = room;
+	}
+
+	public String getIcalId() {
+		return icalId;
+	}
+
+	public void setIcalId(String icalId) {
+		this.icalId = icalId;
+	}
+
+	public List<MeetingMemberDTO> getMeetingMembers() {
+		return meetingMembers;
+	}
+
+	public void setMeetingMembers(List<MeetingMemberDTO> meetingMembers) {
+		this.meetingMembers = meetingMembers;
+	}
+
+	public Long getLanguageId() {
+		return languageId;
+	}
+
+	public void setLanguageId(Long languageId) {
+		this.languageId = languageId;
+	}
+
+	public boolean isPasswordProtected() {
+		return passwordProtected;
+	}
+
+	public void setPasswordProtected(boolean passwordProtected) {
+		this.passwordProtected = passwordProtected;
+	}
+
+	public boolean isConnectedEvent() {
+		return connectedEvent;
+	}
+
+	public void setConnectedEvent(boolean connectedEvent) {
+		this.connectedEvent = connectedEvent;
+	}
+
+	public boolean isReminderEmailSend() {
+		return reminderEmailSend;
+	}
+
+	public void setReminderEmailSend(boolean reminderEmailSend) {
+		this.reminderEmailSend = reminderEmailSend;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentReminderTypeDTO.java b/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentReminderTypeDTO.java
new file mode 100644
index 0000000..91de031
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/calendar/AppointmentReminderTypeDTO.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.calendar;
+
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+
+public class AppointmentReminderTypeDTO {
+	private Long id;
+	private String name;
+
+	public AppointmentReminderTypeDTO(AppointmentReminderTyps t) {
+		this.id = t.getTypId();
+		this.name = t.getName();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/src/db/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
new file mode 100644
index 0000000..68604af
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.calendar;
+
+import org.apache.openmeetings.db.dto.user.UserDTO;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+
+public class MeetingMemberDTO {
+	private Long id;
+	private UserDTO user;
+	
+	public MeetingMemberDTO(MeetingMember mm) {
+		this.id = mm.getId();
+		this.user = new UserDTO(mm.getUser());
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public UserDTO getUser() {
+		return user;
+	}
+
+	public void setUser(UserDTO user) {
+		this.user = user;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java b/src/db/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
new file mode 100644
index 0000000..7b2e9dc
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+
+/**
+ * @author sebastianwagner
+ *
+ */
+public class FileExplorerObject {
+
+	private FileExplorerItem[] userHome;
+	private FileExplorerItem[] roomHome;
+	private Long userHomeSize;
+	private Long roomHomeSize;
+	
+	public FileExplorerItem[] getUserHome() {
+		return userHome;
+	}
+	public void setUserHome(FileExplorerItem[] userHome) {
+		this.userHome = userHome;
+	}
+	public FileExplorerItem[] getRoomHome() {
+		return roomHome;
+	}
+	public void setRoomHome(FileExplorerItem[] roomHome) {
+		this.roomHome = roomHome;
+	}
+	public Long getUserHomeSize() {
+		return userHomeSize;
+	}
+	public void setUserHomeSize(Long userHomeSize) {
+		this.userHomeSize = userHomeSize;
+	}
+	public Long getRoomHomeSize() {
+		return roomHomeSize;
+	}
+	public void setRoomHomeSize(Long roomHomeSize) {
+		this.roomHomeSize = roomHomeSize;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/FilesObject.java b/src/db/java/org/apache/openmeetings/db/dto/file/FilesObject.java
new file mode 100644
index 0000000..381f9a1
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/FilesObject.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+/**
+ * This Object will represent a File on the File-System
+ * @author sebastianwagner
+ *
+ */
+public class FilesObject {
+	
+	private String fileName;
+	private String fileNamePure;
+	private String fileNameExt;
+	private String lastModified;
+	private String fileBytes;
+	private String isimage;
+	public String getFileName() {
+		return fileName;
+	}
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+	public String getFileNamePure() {
+		return fileNamePure;
+	}
+	public void setFileNamePure(String fileNamePure) {
+		this.fileNamePure = fileNamePure;
+	}
+	public String getFileNameExt() {
+		return fileNameExt;
+	}
+	public void setFileNameExt(String fileNameExt) {
+		this.fileNameExt = fileNameExt;
+	}
+	public String getLastModified() {
+		return lastModified;
+	}
+	public void setLastModified(String lastModified) {
+		this.lastModified = lastModified;
+	}
+	public String getFileBytes() {
+		return fileBytes;
+	}
+	public void setFileBytes(String fileBytes) {
+		this.fileBytes = fileBytes;
+	}
+	public String getIsimage() {
+		return isimage;
+	}
+	public void setIsimage(String isimage) {
+		this.isimage = isimage;
+	}
+	
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/FoldersObject.java b/src/db/java/org/apache/openmeetings/db/dto/file/FoldersObject.java
new file mode 100644
index 0000000..bba75d5
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/FoldersObject.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+/**
+ * Represents a Folder in the File System
+ * @author sebastianwagner
+ *
+ */
+public class FoldersObject {
+	
+	private String folderName;
+	private String lastModified;
+	
+	public String getFolderName() {
+		return folderName;
+	}
+	public void setFolderName(String folderName) {
+		this.folderName = folderName;
+	}
+	public String getLastModified() {
+		return lastModified;
+	}
+	public void setLastModified(String lastModified) {
+		this.lastModified = lastModified;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java b/src/db/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java
new file mode 100644
index 0000000..9849e26
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/LiberaryObject.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+/**
+ * Response of one Library-Files-Request
+ * @author sebastianwagner
+ *
+ */
+import java.util.LinkedList;
+
+public class LiberaryObject {
+	
+	//These Objects here should only be initialized if needed, 
+	//an empty LinkedList thorws a ServiceInvokationTarget-Exception (makes no sense to me but it
+	//is the way in Axis2 1.3
+	private LinkedList<FilesObject> filesList;
+	private LinkedList<FoldersObject> foldersList;
+	private PresentationObject presentationObject;
+	private String error;
+	public LinkedList<FilesObject> getFilesList() {
+		return filesList;
+	}
+	public void setFilesList(LinkedList<FilesObject> filesList) {
+		this.filesList = filesList;
+	}
+	public LinkedList<FoldersObject> getFoldersList() {
+		return foldersList;
+	}
+	public void setFoldersList(LinkedList<FoldersObject> foldersList) {
+		this.foldersList = foldersList;
+	}
+	public PresentationObject getPresentationObject() {
+		return presentationObject;
+	}
+	public void setPresentationObject(PresentationObject presentationObject) {
+		this.presentationObject = presentationObject;
+	}
+	public String getError() {
+		return error;
+	}
+	public void setError(String error) {
+		this.error = error;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresenationThumbs.java b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresenationThumbs.java
new file mode 100644
index 0000000..8c69846
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresenationThumbs.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+public class LibraryPresenationThumbs {
+
+	private String name = "";
+	private LibraryPresentationThumb[] thumbs = null;
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public LibraryPresentationThumb[] getThumbs() {
+		return thumbs;
+	}
+	public void setThumbs(LibraryPresentationThumb[] thumbs) {
+		this.thumbs = thumbs;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java
new file mode 100644
index 0000000..02ab93f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentation.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+public class LibraryPresentation {
+
+	private LibraryPresentationFile originalDocument = null;
+	private LibraryPresentationFile pdfDocument = null;
+	private LibraryPresentationFile swfDocument = null;
+	private LibraryPresenationThumbs thumbs = null;
+	
+	public LibraryPresentationFile getOriginalDocument() {
+		return originalDocument;
+	}
+	public void setOriginalDocument(LibraryPresentationFile originalDocument) {
+		this.originalDocument = originalDocument;
+	}
+	public LibraryPresentationFile getPdfDocument() {
+		return pdfDocument;
+	}
+	public void setPdfDocument(LibraryPresentationFile pdfDocument) {
+		this.pdfDocument = pdfDocument;
+	}
+	public LibraryPresentationFile getSwfDocument() {
+		return swfDocument;
+	}
+	public void setSwfDocument(LibraryPresentationFile swfDocument) {
+		this.swfDocument = swfDocument;
+	}
+	public LibraryPresenationThumbs getThumbs() {
+		return thumbs;
+	}
+	public void setThumbs(LibraryPresenationThumbs thumbs) {
+		this.thumbs = thumbs;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationFile.java b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationFile.java
new file mode 100644
index 0000000..3b2ab2d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationFile.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+public class LibraryPresentationFile {
+
+	private String name = null;
+	private String filename = null;
+	private String lastmod = null;
+	private Long size = null;
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getFilename() {
+		return filename;
+	}
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+	public String getLastmod() {
+		return lastmod;
+	}
+	public void setLastmod(String lastmod) {
+		this.lastmod = lastmod;
+	}
+	public Long getSize() {
+		return size;
+	}
+	public void setSize(Long size) {
+		this.size = size;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationThumb.java b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationThumb.java
new file mode 100644
index 0000000..2aa4e90
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/LibraryPresentationThumb.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+public class LibraryPresentationThumb {
+	
+	private String name = null;
+	private String filename = null;
+	private String lastmod = null;
+	private Long size = null;
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getFilename() {
+		return filename;
+	}
+	public void setFilename(String filename) {
+		this.filename = filename;
+	}
+	public String getLastmod() {
+		return lastmod;
+	}
+	public void setLastmod(String lastmod) {
+		this.lastmod = lastmod;
+	}
+	public Long getSize() {
+		return size;
+	}
+	public void setSize(Long size) {
+		this.size = size;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/file/PresentationObject.java b/src/db/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
new file mode 100644
index 0000000..b7bcfa1
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+import java.util.LinkedList;
+/**
+ * Represents a Parsed Version of a Library-File-Converted Object
+ * @author sebastianwagner
+ *
+ */
+public class PresentationObject {
+	
+	private FilesObject originalDocument;
+	private FilesObject pdfDocument;
+	private FilesObject swfDocument;
+	LinkedList<FilesObject> thumbs;
+
+	public FilesObject getOriginalDocument() {
+		return originalDocument;
+	}
+	public void setOriginalDocument(FilesObject originalDocument) {
+		this.originalDocument = originalDocument;
+	}
+	public FilesObject getPdfDocument() {
+		return pdfDocument;
+	}
+	public void setPdfDocument(FilesObject pdfDocument) {
+		this.pdfDocument = pdfDocument;
+	}
+	public FilesObject getSwfDocument() {
+		return swfDocument;
+	}
+	public void setSwfDocument(FilesObject swfDocument) {
+		this.swfDocument = swfDocument;
+	}
+	public LinkedList<FilesObject> getThumbs() {
+		return thumbs;
+	}
+	public void setThumbs(LinkedList<FilesObject> thumbs) {
+		this.thumbs = thumbs;
+	}
+	
+	
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/record/RecordingContainerData.java b/src/db/java/org/apache/openmeetings/db/dto/record/RecordingContainerData.java
new file mode 100644
index 0000000..3d0396e
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/record/RecordingContainerData.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.record;
+
+import java.io.Serializable;
+
+public class RecordingContainerData implements Serializable {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -7211000652612571746L;
+	
+	private long userHomeSize;
+	private long publicFileSize;
+	
+	public long getUserHomeSize() {
+		return userHomeSize;
+	}
+	public void setUserHomeSize(long userHomeSize) {
+		this.userHomeSize = userHomeSize;
+	}
+	public long getPublicFileSize() {
+		return publicFileSize;
+	}
+	public void setPublicFileSize(long publicFileSize) {
+		this.publicFileSize = publicFileSize;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java b/src/db/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
new file mode 100644
index 0000000..492c873
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.record;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class RecordingDTO {
+	private Long id;
+	private String name;
+	private String flvName;
+	private String aviName;
+	private Long roomId;
+	private String status;
+	private boolean interview;
+	private Date start;
+	private Date end;
+
+	public RecordingDTO() {}
+	
+	public RecordingDTO(FlvRecording r) {
+		this.id = r.getFlvRecordingId();
+		this.name = r.getFileName();
+		this.flvName = r.getFileHash();
+		this.aviName = r.getAlternateDownload();
+		this.roomId = r.getRoom_id();
+		this.status = r.getStatus().name();
+		this.interview = r.getIsInterview();
+		this.start = r.getRecordStart();
+		this.end = r.getRecordEnd();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getFlvName() {
+		return flvName;
+	}
+
+	public void setFlvName(String flvName) {
+		this.flvName = flvName;
+	}
+
+	public String getAviName() {
+		return aviName;
+	}
+
+	public void setAviName(String aviName) {
+		this.aviName = aviName;
+	}
+
+	public Long getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(Long roomId) {
+		this.roomId = roomId;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public boolean isInterview() {
+		return interview;
+	}
+
+	public void setInterview(boolean interview) {
+		this.interview = interview;
+	}
+
+	public Date getStart() {
+		return start;
+	}
+
+	public void setStart(Date start) {
+		this.start = start;
+	}
+
+	public Date getEnd() {
+		return end;
+	}
+
+	public void setEnd(Date end) {
+		this.end = end;
+	}
+	
+	public static List<RecordingDTO> list(List<FlvRecording> l) {
+		List<RecordingDTO> rList = new ArrayList<RecordingDTO>();
+		if (l != null) {
+			for (FlvRecording r : l) {
+				rList.add(new RecordingDTO(r));
+			}
+		}
+		return rList;
+
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/BrowserStatus.java b/src/db/java/org/apache/openmeetings/db/dto/room/BrowserStatus.java
new file mode 100644
index 0000000..5d707dd
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/BrowserStatus.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+public class BrowserStatus {
+	
+	private boolean browserInited = false;
+	private String currentURL = "";
+	
+	public boolean isBrowserInited() {
+		return browserInited;
+	}
+	public void setBrowserInited(boolean browserInited) {
+		this.browserInited = browserInited;
+	}
+	public String getCurrentURL() {
+		return currentURL;
+	}
+	public void setCurrentURL(String currentURL) {
+		this.currentURL = currentURL;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/Cliparts.java b/src/db/java/org/apache/openmeetings/db/dto/room/Cliparts.java
new file mode 100644
index 0000000..9035406
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/Cliparts.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.List;
+
+public class Cliparts {
+
+	private String folderName;
+	private String[] generalList;
+	private List<Cliparts> subCategories;
+
+	public String[] getGeneralList() {
+		return generalList;
+	}
+
+	public void setGeneralList(String[] generalList) {
+		this.generalList = generalList;
+	}
+
+	public List<Cliparts> getSubCategories() {
+		return subCategories;
+	}
+
+	public void setSubCategories(List<Cliparts> subCategories) {
+		this.subCategories = subCategories;
+	}
+
+	public String getFolderName() {
+		return folderName;
+	}
+
+	public void setFolderName(String folderName) {
+		this.folderName = folderName;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/src/db/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
new file mode 100644
index 0000000..d0a996a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomType;
+
+public class RoomDTO {
+	private Long id;
+	private String name;
+	private String comment;
+	private RoomType roomtype;
+	private Long numberOfPartizipants = new Long(4);
+	private boolean appointment;
+	private String confno;
+	
+	public RoomDTO(Room r) {
+		id = r.getRooms_id();
+		name = r.getName();
+		comment = r.getComment();
+		roomtype = r.getRoomtype();
+		numberOfPartizipants = r.getNumberOfPartizipants();
+		appointment = r.getAppointment();
+		confno = r.getConfno();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public RoomType getRoomtype() {
+		return roomtype;
+	}
+
+	public void setRoomtype(RoomType roomtype) {
+		this.roomtype = roomtype;
+	}
+
+	public Long getNumberOfPartizipants() {
+		return numberOfPartizipants;
+	}
+
+	public void setNumberOfPartizipants(Long numberOfPartizipants) {
+		this.numberOfPartizipants = numberOfPartizipants;
+	}
+
+	public boolean isAppointment() {
+		return appointment;
+	}
+
+	public void setAppointment(boolean appointment) {
+		this.appointment = appointment;
+	}
+
+	public String getConfno() {
+		return confno;
+	}
+
+	public void setConfno(String confno) {
+		this.confno = confno;
+	}
+
+	public static List<RoomDTO> list(List<Room> l) {
+		List<RoomDTO> rList = new ArrayList<RoomDTO>();
+		if (l != null) {
+			for (Room r : l) {
+				rList.add(new RoomDTO(r));
+			}
+		}
+		return rList;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/RoomSearchResult.java b/src/db/java/org/apache/openmeetings/db/dto/room/RoomSearchResult.java
new file mode 100644
index 0000000..57ae324
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/RoomSearchResult.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.entity.room.Room;
+
+public class RoomSearchResult {
+	private String objectName;
+	private Long records;
+	private List<RoomDTO> result;
+	private Long errorId;
+
+	public RoomSearchResult(SearchResult<Room> copy) {
+		this.objectName = copy.getObjectName();
+		this.records = copy.getRecords();
+		this.result = new ArrayList<RoomDTO>(copy.getResult().size());
+		for (Room r : copy.getResult()) {
+			result.add(new RoomDTO(r));
+		}
+		this.errorId = copy.getErrorId();
+	}
+
+	public String getObjectName() {
+		return objectName;
+	}
+
+	public void setObjectName(String objectName) {
+		this.objectName = objectName;
+	}
+
+	public Long getRecords() {
+		return records;
+	}
+
+	public void setRecords(Long records) {
+		this.records = records;
+	}
+
+	public List<RoomDTO> getResult() {
+		return result;
+	}
+
+	public void setResult(List<RoomDTO> result) {
+		this.result = result;
+	}
+
+	public Long getErrorId() {
+		return errorId;
+	}
+
+	public void setErrorId(Long errorId) {
+		this.errorId = errorId;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/RoomStatus.java b/src/db/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
new file mode 100644
index 0000000..441e812
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.room.Client;
+
+public class RoomStatus {
+	
+	List<Client> clientList;
+	BrowserStatus browserStatus;
+	Boolean roomFull = false;
+	
+	public List<Client> getClientList() {
+		return clientList;
+	}
+	public void setClientList(List<Client> clientList) {
+		this.clientList = clientList;
+	}
+	public BrowserStatus getBrowserStatus() {
+		return browserStatus;
+	}
+	public void setBrowserStatus(BrowserStatus browserStatus) {
+		this.browserStatus = browserStatus;
+	}
+	public Boolean getRoomFull() {
+		return roomFull;
+	}
+	public void setRoomFull(Boolean roomFull) {
+		this.roomFull = roomFull;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
new file mode 100644
index 0000000..0466dde
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class WhiteboardObject {
+
+	private Long whiteBoardId;
+	private Integer x = 0;
+	private Integer y = 0;
+	private Integer zoom = 100;
+	private Boolean fullFit = true;
+	@SuppressWarnings("rawtypes")
+	private Map<String, List> roomItems = new HashMap<String, List>();
+	private Date created = new Date();
+
+	public Long getWhiteBoardId() {
+		return whiteBoardId;
+	}
+
+	public void setWhiteBoardId(Long whiteBoardId) {
+		this.whiteBoardId = whiteBoardId;
+	}
+
+	public Integer getX() {
+		return x;
+	}
+
+	public void setX(Integer x) {
+		this.x = x;
+	}
+
+	public Integer getY() {
+		return y;
+	}
+
+	public void setY(Integer y) {
+		this.y = y;
+	}
+
+	@SuppressWarnings("rawtypes")
+	public Map<String, List> getRoomItems() {
+		return roomItems;
+	}
+
+	@SuppressWarnings("rawtypes")
+	public void setRoomItems(Map<String, List> roomItems) {
+		this.roomItems = roomItems;
+	}
+
+	public Date getCreated() {
+		return created;
+	}
+
+	public void setCreated(Date created) {
+		this.created = created;
+	}
+
+	public Integer getZoom() {
+		return zoom;
+	}
+
+	public void setZoom(Integer zoom) {
+		this.zoom = zoom;
+	}
+
+	public Boolean getFullFit() {
+		return fullFit;
+	}
+
+	public void setFullFit(Boolean fullFit) {
+		this.fullFit = fullFit;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
new file mode 100644
index 0000000..1cbcac0
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class WhiteboardObjectList {
+
+	private Long room_id;
+	private Map<Long,WhiteboardObject> whiteboardObjects = new HashMap<Long,WhiteboardObject>();
+	
+	public Long getRoom_id() {
+		return room_id;
+	}
+	public void setRoom_id(Long roomId) {
+		room_id = roomId;
+	}
+	public Map<Long, WhiteboardObject> getWhiteboardObjects() {
+		return whiteboardObjects;
+	}
+	public void setWhiteboardObjects(Map<Long, WhiteboardObject> whiteboardObjects) {
+		this.whiteboardObjects = whiteboardObjects;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardSyncLockObject.java b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardSyncLockObject.java
new file mode 100644
index 0000000..5b20c3c
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/room/WhiteboardSyncLockObject.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.Date;
+
+public class WhiteboardSyncLockObject {
+
+	private String publicSID;
+	private boolean isInitialLoaded = false;
+	private boolean isCurrentLoadingItem = false;
+
+	private Date addtime;
+	private Date starttime;
+
+	public String getPublicSID() {
+		return publicSID;
+	}
+
+	public void setPublicSID(String publicSID) {
+		this.publicSID = publicSID;
+	}
+
+	public boolean isInitialLoaded() {
+		return isInitialLoaded;
+	}
+
+	public void setInitialLoaded(boolean isInitialLoaded) {
+		this.isInitialLoaded = isInitialLoaded;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public boolean isCurrentLoadingItem() {
+		return isCurrentLoadingItem;
+	}
+
+	public void setCurrentLoadingItem(boolean isCurrentLoadingItem) {
+		this.isCurrentLoadingItem = isCurrentLoadingItem;
+	}
+
+	public Date getAddtime() {
+		return addtime;
+	}
+
+	public void setAddtime(Date addtime) {
+		this.addtime = addtime;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/server/ClientSessionInfo.java b/src/db/java/org/apache/openmeetings/db/dto/server/ClientSessionInfo.java
new file mode 100644
index 0000000..1a375be
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/server/ClientSessionInfo.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.server;
+
+import org.apache.openmeetings.db.entity.room.Client;
+
+
+public class ClientSessionInfo {
+	
+	private Client rcl;
+	public Long serverId;
+	
+	public ClientSessionInfo(Client rcl, Long serverId) {
+		super();
+		this.rcl = rcl;
+		this.serverId = serverId;
+	}
+	
+	public Client getRcl() {
+		return rcl;
+	}
+	public void setRcl(Client rcl) {
+		this.rcl = rcl;
+	}
+	public Long getServerId() {
+		return serverId;
+	}
+	public void setServerId(Long serverId) {
+		this.serverId = serverId;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/server/ServerDTO.java b/src/db/java/org/apache/openmeetings/db/dto/server/ServerDTO.java
new file mode 100644
index 0000000..9352c9c9
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/server/ServerDTO.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.server;
+
+import org.apache.openmeetings.db.entity.server.Server;
+
+/**
+ * 
+ * Bean send to the client about the server he is going to use for the conference 
+ * session
+ * 
+ * @author sebawagner
+ *
+ */
+public class ServerDTO {
+
+	private Long id;
+	private String address;
+	private int port;
+	private String protocol;
+	private String webapp;
+
+	public ServerDTO(Server server) {
+		if (server == null) {
+			return;
+		}
+		id = server.getId();
+		address = server.getAddress();
+		port = server.getPort();
+		protocol = server.getProtocol();
+		webapp = server.getWebapp();
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+	public int getPort() {
+		return port;
+	}
+
+	public void setPort(int port) {
+		this.port = port;
+	}
+
+	public String getProtocol() {
+		return protocol;
+	}
+
+	public void setProtocol(String protocol) {
+		this.protocol = protocol;
+	}
+
+	public String getWebapp() {
+		return webapp;
+	}
+
+	public void setWebapp(String webapp) {
+		this.webapp = webapp;
+	}
+	
+	@Override
+	public String toString() {
+		return "id "+id+" address "+address+" port "+port+" protocol "+protocol;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/src/db/java/org/apache/openmeetings/db/dto/user/UserDTO.java
new file mode 100644
index 0000000..5917697
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.user;
+
+import java.util.Set;
+
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+
+public class UserDTO {
+	private Long id;
+	private String firstname;
+	private String lastname;
+	private Set<Right> rights;
+	private String login;
+	private Long language_id;
+	private Address adresses;
+	private String timeZoneId;
+	private Type type = Type.user;
+
+	public UserDTO(User u) {
+		id = u.getUser_id();
+		firstname = u.getFirstname();
+		lastname = u.getLastname();
+		rights = u.getRights();
+		login = u.getLogin();
+		language_id = u.getLanguage_id();
+		adresses = u.getAdresses();
+		timeZoneId = u.getTimeZoneId();
+		type = u.getType();
+	}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getFirstname() {
+		return firstname;
+	}
+
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+
+	public String getLastname() {
+		return lastname;
+	}
+
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+
+	public Set<Right> getRights() {
+		return rights;
+	}
+
+	public void setRights(Set<Right> rights) {
+		this.rights = rights;
+	}
+
+	public String getLogin() {
+		return login;
+	}
+
+	public void setLogin(String login) {
+		this.login = login;
+	}
+
+	public Long getLanguage_id() {
+		return language_id;
+	}
+
+	public void setLanguage_id(Long language_id) {
+		this.language_id = language_id;
+	}
+
+	public Address getAdresses() {
+		return adresses;
+	}
+
+	public void setAdresses(Address adresses) {
+		this.adresses = adresses;
+	}
+
+	public String getTimeZoneId() {
+		return timeZoneId;
+	}
+
+	public void setTimeZoneId(String timeZoneId) {
+		this.timeZoneId = timeZoneId;
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+	public void setType(Type type) {
+		this.type = type;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java b/src/db/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java
new file mode 100644
index 0000000..c11a40e
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.dto.user;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.entity.user.User;
+
+public class UserSearchResult {
+	private String objectName;
+	private Long records;
+	private List<UserDTO> result;
+	private Long errorId;
+	
+	public UserSearchResult(SearchResult<User> copy) {
+		this.objectName = copy.getObjectName();
+		this.records = copy.getRecords();
+		this.result = new ArrayList<UserDTO>(copy.getResult().size());
+		for (User u : copy.getResult()) {
+			result.add(new UserDTO(u));
+		}
+		this.errorId = copy.getErrorId();
+	}
+	
+	public String getObjectName() {
+		return objectName;
+	}
+
+	public void setObjectName(String objectName) {
+		this.objectName = objectName;
+	}
+
+	public Long getRecords() {
+		return records;
+	}
+
+	public void setRecords(Long records) {
+		this.records = records;
+	}
+
+	public List<UserDTO> getResult() {
+		return result;
+	}
+
+	public void setResult(List<UserDTO> result) {
+		this.result = result;
+	}
+
+	public Long getErrorId() {
+		return errorId;
+	}
+
+	public void setErrorId(Long errorId) {
+		this.errorId = errorId;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/IDataProviderEntity.java b/src/db/java/org/apache/openmeetings/db/entity/IDataProviderEntity.java
new file mode 100644
index 0000000..3375185
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/IDataProviderEntity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity;
+
+public interface IDataProviderEntity {
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java b/src/db/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
new file mode 100644
index 0000000..c7ad75a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getChatMessageById", query = "SELECT c FROM ChatMessage c WHERE c.id = :id")
+	, @NamedQuery(name = "getChatMessagesByUser", query = "SELECT DISTINCT c FROM ChatMessage c WHERE c.fromUser.user_id = :userId OR c.toUser.user_id = :userId ORDER BY c.sent ASC")
+	, @NamedQuery(name = "getGlobalChatMessages", query = "SELECT DISTINCT c FROM ChatMessage c WHERE c.toUser IS NULL ORDER BY c.sent ASC")
+})@Table(name = "chat")
+@Root(name = "ChatMessage")
+public class ChatMessage implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 4248081997318897605L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(name = "id", data = true)
+	private long id;
+
+	@ManyToOne
+	@JoinColumn(name = "from_user_id")
+	@Element(name = "fromUserId", data = true, required = false)
+	@ForeignKey(enabled = true)
+	private User fromUser;
+	
+	@ManyToOne
+	@JoinColumn(name = "to_room_id")
+	@Element(name = "toRoomId", data = true, required = false)
+	@ForeignKey(enabled = true)
+	private Room toRoom;
+	
+	@ManyToOne
+	@JoinColumn(name = "to_user_id")
+	@Element(name = "toUserId", data = true, required = false)
+	@ForeignKey(enabled = true)
+	private User toUser;
+
+	@Column(name = "message")
+	@Lob
+	@Element(name = "message", data = true, required = false)
+	private String message;
+	
+	@Column(name = "sent")
+	@Element(name = "sent", data = true, required = false)
+	private Date sent;
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public User getFromUser() {
+		return fromUser;
+	}
+
+	public void setFromUser(User fromUser) {
+		this.fromUser = fromUser;
+	}
+
+	public Room getToRoom() {
+		return toRoom;
+	}
+
+	public void setToRoom(Room toRoom) {
+		this.toRoom = toRoom;
+	}
+
+	public User getToUser() {
+		return toUser;
+	}
+
+	public void setToUser(User toUser) {
+		this.toUser = toUser;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Date getSent() {
+		return sent;
+	}
+
+	public void setSent(Date sent) {
+		this.sent = sent;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/Configuration.java b/src/db/java/org/apache/openmeetings/db/entity/basic/Configuration.java
new file mode 100644
index 0000000..42e56bc
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/Configuration.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+		@NamedQuery(name = "forceGetConfigurationByKey", query = "SELECT c FROM Configuration c " 
+				+ "WHERE c.conf_key LIKE :conf_key"),
+		@NamedQuery(name = "getConfigurationsByKeys", query = "SELECT c FROM Configuration c "
+				+ "WHERE c.conf_key IN :conf_keys and c.deleted = false"),
+		@NamedQuery(name = "getNondeletedConfiguration", query = "SELECT c FROM Configuration c  "
+				+ "LEFT JOIN FETCH c.user WHERE c.deleted = false"),
+		@NamedQuery(name = "getConfigurationById", query = "SELECT c FROM Configuration c "
+				+ "LEFT JOIN FETCH c.user "
+				+ "WHERE c.configuration_id = :configuration_id and c.deleted = false"),
+		@NamedQuery(name = "countConfigurations", query = "SELECT COUNT(c) FROM Configuration c WHERE c.deleted = false")
+})
+@Table(name = "configuration")
+@Root(name = "config")
+public class Configuration implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = -6129473946508963339L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(name = "id", data = true)
+	private Long configuration_id;
+
+	@Column(name = "conf_key", unique = true)
+	@Element(name = "key", data = true, required = false)
+	private String conf_key;
+
+	@Column(name = "conf_value")
+	@Element(name = "value", data = true, required = false)
+	private String conf_value;
+
+	@Column(name = "starttime")
+	@Element(name = "created", data = true, required = false)
+	private Date starttime;
+
+	@Column(name = "updatetime")
+	@Element(name = "updated", data = true, required = false)
+	private Date updatetime;
+
+	@Lob
+	@Column(name = "comment_field", length = 2048)
+	@Element(data = true, required = false)
+	private String comment;
+
+	@Column(name = "deleted")
+	@Element(data = true)
+	private boolean deleted;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "user_id")
+	@ForeignKey(enabled = true)
+	@Element(name = "user_id", data = true, required = false)
+	private User user;
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public String getConf_key() {
+		return conf_key;
+	}
+
+	public void setConf_key(String conf_key) {
+		this.conf_key = conf_key;
+	}
+
+	public String getConf_value() {
+		return conf_value;
+	}
+
+	public void setConf_value(String conf_value) {
+		this.conf_value = conf_value;
+	}
+
+	public Long getConfiguration_id() {
+		return configuration_id;
+	}
+
+	public void setConfiguration_id(Long configuration_id) {
+		this.configuration_id = configuration_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorType.java b/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorType.java
new file mode 100644
index 0000000..5e0a349
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorType.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getErrorTypes", query = "select c from ErrorType as c "
+					+ "WHERE c.deleted <> :deleted"),
+	@NamedQuery(name = "getErrorType", query = "select c from ErrorType as c "
+					+ "WHERE c.deleted <> :deleted AND c.errortype_id = :errortype_id")
+})
+@Table(name = "errortypes")
+public class ErrorType implements Serializable {
+	private static final long serialVersionUID = 1519570470483604258L;
+
+	@Id
+	@Column(name = "id")
+	private Long errortype_id;
+
+	@Column(name = "fieldvalues_id")
+	private Long fieldvalues_id;
+
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	public Long getErrortype_id() {
+		return errortype_id;
+	}
+
+	public void setErrortype_id(Long errortype_id) {
+		this.errortype_id = errortype_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Long getFieldvalues_id() {
+		return this.fieldvalues_id;
+	}
+
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorValue.java b/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorValue.java
new file mode 100644
index 0000000..3bb8cea
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/ErrorValue.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getErrorValueById", query = "SELECT e FROM ErrorValue e WHERE e.errorvalues_id = :id AND e.deleted = false")
+})
+@Table(name = "errorvalue")
+public class ErrorValue implements Serializable {
+	private static final long serialVersionUID = -1892810463706968018L;
+
+	@Id
+	@Column(name = "id")
+	private Long errorvalues_id;
+	
+	@Column(name = "errortype_id")
+	private Long errortype_id;
+	
+	@Column(name = "fieldvalues_id")
+	private Long fieldvalues_id;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	public Long getErrorvalues_id() {
+		return errorvalues_id;
+	}
+
+	public void setErrorvalues_id(Long errorvalues_id) {
+		this.errorvalues_id = errorvalues_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+	public Long getErrortype_id() {
+		//return errorType.getErrortype_id();
+		return errortype_id;
+	}
+
+	public void setErrortype_id(Long errortype_id) {
+		this.errortype_id = errortype_id;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/src/db/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
new file mode 100644
index 0000000..ba569b0
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
@@ -0,0 +1,196 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.util.Calendar;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id")
+	, @NamedQuery(name = "getMailMessages"
+		, query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted")
+	, @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m WHERE m.status = :status")
+})
+@Table(name = "email_queue")
+public class MailMessage implements IDataProviderEntity {
+	public enum Status {
+		NONE
+		, SENDING
+		, ERROR
+		, DONE
+	}
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long id;
+	
+	@Lob
+	@Column(name = "recipients")
+	private String recipients;
+	
+	@Column(name = "replyTo")
+	private String replyTo;
+	
+	@Column(name = "subject")
+	private String subject;
+	
+	@Lob
+	@Column(name = "body")
+	private String body;
+
+	@Lob
+	@Column(name = "ics")
+	private byte[] ics;
+
+	@Column(name = "status", nullable = false)
+	@Enumerated(EnumType.STRING)
+	private Status status = Status.NONE;
+
+	@Column(name = "inserted")
+	private Calendar inserted;
+	
+	@Column(name = "updated")
+	private Calendar updated;
+	
+	@Column(name = "error_count", nullable = false)
+	private int errorCount = 0;
+	
+	@Lob
+	@Column(name = "last_error")
+	private String lastError;
+
+	public MailMessage() {
+		this(null, null, null, null, null);
+	}
+	
+	public MailMessage(String recipients, String replyTo, String subject, String body) {
+		this(recipients, replyTo, subject, body, null);
+	}
+	
+	public MailMessage(String recipients, String replyTo, String subject, String body, byte[] ics) {
+		this.recipients = recipients;
+		this.replyTo = replyTo;
+		this.subject = subject;
+		this.body = body;
+		this.ics = ics;
+	}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getRecipients() {
+		return recipients;
+	}
+
+	public void setRecipients(String recipients) {
+		this.recipients = recipients;
+	}
+
+	public String getReplyTo() {
+		return replyTo;
+	}
+
+	public void setReplyTo(String replyTo) {
+		this.replyTo = replyTo;
+	}
+
+	public String getSubject() {
+		return subject;
+	}
+
+	public void setSubject(String subject) {
+		this.subject = subject;
+	}
+
+	public String getBody() {
+		return body;
+	}
+
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	public Status getStatus() {
+		return status;
+	}
+
+	public void setStatus(Status status) {
+		this.status = status;
+	}
+
+	public Calendar getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Calendar inserted) {
+		this.inserted = inserted;
+	}
+
+	public Calendar getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Calendar updated) {
+		this.updated = updated;
+	}
+
+	public byte[] getIcs() {
+		return ics;
+	}
+
+	public void setIcs(byte[] ics) {
+		this.ics = ics;
+	}
+
+	public int getErrorCount() {
+		return errorCount;
+	}
+
+	public void setErrorCount(int errorCount) {
+		this.errorCount = errorCount;
+	}
+
+	public String getLastError() {
+		return lastError;
+	}
+
+	public void setLastError(String lastError) {
+		this.lastError = lastError;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java b/src/db/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
new file mode 100644
index 0000000..bf850c8
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/Naviglobal.java
@@ -0,0 +1,249 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+
+@Entity
+@NamedQueries({
+		@NamedQuery(name = "getNavigation", query = "SELECT DISTINCT ng from Naviglobal ng " + "LEFT JOIN ng.mainnavi nm "
+				+ "WHERE nm.deleted = false " + "AND ng.level_id <= :level_id " + "AND nm.level_id <= :level_id "
+				+ "AND ng.deleted = false " + "order by ng.naviorder, nm.naviorder"),
+		@NamedQuery(name = "getNavigationById", query = "SELECT ng from Naviglobal ng WHERE ng.global_id = :global_id") })
+@Table(name = "naviglobal")
+public class Naviglobal implements Serializable {
+
+	private static final long serialVersionUID = 515828033813767719L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long global_id;
+
+	@Column(name = "name")
+	private String name;
+
+	@Column(name = "icon")
+	private String icon;
+
+	@Column(name = "isleaf")
+	private Boolean isleaf;
+
+	@Column(name = "isopen")
+	private Boolean isopen;
+
+	@Column(name = "action")
+	private String action;
+
+	@Column(name = "updatetime")
+	private Date updatetime;
+
+	@Column(name = "starttime")
+	private Date starttime;
+
+	@Column(name = "comment_field")
+	private String comment;
+
+	@Column(name = "naviorder")
+	private Integer naviorder;
+
+	@Column(name = "level_id")
+	private Long level_id;
+
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	@Column(name = "fieldvalues_id")
+	private Long fieldvalues_id;
+
+	@Column(name = "tooltip_fieldvalues_id")
+	private Long tooltip_fieldvalues_id;
+
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "global_id")
+	@ForeignKey(enabled = true)
+	private List<Navimain> mainnavi;
+
+	@Transient
+	private Fieldlanguagesvalues label;
+
+	@Transient
+	private Fieldlanguagesvalues tooltip;
+
+	public String getAction() {
+		return action;
+	}
+
+	public void setAction(String action) {
+		this.action = action;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public Long getGlobal_id() {
+		return global_id;
+	}
+
+	public void setGlobal_id(Long global_id) {
+		this.global_id = global_id;
+	}
+
+	public String getIcon() {
+		return icon;
+	}
+
+	public void setIcon(String icon) {
+		this.icon = icon;
+	}
+
+	public Boolean getIsleaf() {
+		return isleaf;
+	}
+
+	public void setIsleaf(Boolean isleaf) {
+		this.isleaf = isleaf;
+	}
+
+	public Boolean getIsopen() {
+		return isopen;
+	}
+
+	public void setIsopen(Boolean isopen) {
+		this.isopen = isopen;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getNaviorder() {
+		return naviorder;
+	}
+
+	public void setNaviorder(Integer naviorder) {
+		this.naviorder = naviorder;
+	}
+
+	public Long getLevel_id() {
+		return level_id;
+	}
+
+	public void setLevel_id(Long level_id) {
+		this.level_id = level_id;
+	}
+
+	public List<Navimain> getMainnavi() {
+		return mainnavi;
+	}
+
+	public void setMainnavi(List<Navimain> mainnavi) {
+		this.mainnavi = mainnavi;
+	}
+
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getLabel() {
+		return label;
+	}
+
+	public void setLabel(Fieldlanguagesvalues label) {
+		this.label = label;
+	}
+
+	public Long getTooltip_fieldvalues_id() {
+		return tooltip_fieldvalues_id;
+	}
+
+	public void setTooltip_fieldvalues_id(Long tooltip_fieldvalues_id) {
+		this.tooltip_fieldvalues_id = tooltip_fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getTooltip() {
+		return tooltip;
+	}
+
+	public void setTooltip(Fieldlanguagesvalues tooltip) {
+		this.tooltip = tooltip;
+	}
+
+	@Override
+	public String toString() {
+		return "Naviglobal [global_id=" + global_id + ", name=" + name + ", action=" + action + ", naviorder=" + naviorder + ", deleted="
+				+ deleted + ", fieldvalues_id=" + fieldvalues_id + ", tooltip_fieldvalues_id=" + tooltip_fieldvalues_id + "]";
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/basic/Navimain.java b/src/db/java/org/apache/openmeetings/db/entity/basic/Navimain.java
new file mode 100644
index 0000000..ff32fb9
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/basic/Navimain.java
@@ -0,0 +1,244 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.basic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+
+@Entity
+@Table(name = "navimain")
+public class Navimain implements Serializable {
+	private static final long serialVersionUID = 1691787896183701877L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long main_id;
+
+	@Column(name = "global_id")
+	private Long global_id;
+
+	@Column(name = "name")
+	private String name;
+
+	@Column(name = "icon")
+	private String icon;
+
+	@Column(name = "isleaf")
+	private Boolean isleaf;
+
+	@Column(name = "isopen")
+	private Boolean isopen;
+
+	@Column(name = "action")
+	private String action;
+
+	@Column(name = "params")
+	private String params;
+
+	@Column(name = "updatetime")
+	private Date updatetime;
+
+	@Column(name = "starttime")
+	private Date starttime;
+
+	@Column(name = "comment_field")
+	private String comment;
+
+	@Column(name = "naviorder")
+	private Integer naviorder;
+
+	@Column(name = "level_id")
+	private Long level_id;
+
+	@Column(name = "fieldvalues_id")
+	private Long fieldvalues_id;
+
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	@Transient
+	private Fieldlanguagesvalues label;
+
+	@Transient
+	private Fieldlanguagesvalues tooltip;
+
+	@Column(name = "tooltip_fieldvalues_id")
+	private Long tooltip_fieldvalues_id;
+
+	public String getAction() {
+		return action;
+	}
+
+	public void setAction(String action) {
+		this.action = action;
+	}
+
+	public Long getLevel_id() {
+		return level_id;
+	}
+
+	public void setLevel_id(Long level_id) {
+		this.level_id = level_id;
+	}
+
+	public Long getGlobal_id() {
+		return global_id;
+	}
+
+	public void setGlobal_id(Long global_id) {
+		this.global_id = global_id;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public Long getMain_id() {
+		return main_id;
+	}
+
+	public void setMain_id(Long main_id) {
+		this.main_id = main_id;
+	}
+
+	public String getIcon() {
+		return icon;
+	}
+
+	public void setIcon(String icon) {
+		this.icon = icon;
+	}
+
+	public Boolean getIsleaf() {
+		return isleaf;
+	}
+
+	public void setIsleaf(Boolean isleaf) {
+		this.isleaf = isleaf;
+	}
+
+	public Boolean getIsopen() {
+		return isopen;
+	}
+
+	public void setIsopen(Boolean isopen) {
+		this.isopen = isopen;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getNaviorder() {
+		return naviorder;
+	}
+
+	public void setNaviorder(Integer naviorder) {
+		this.naviorder = naviorder;
+	}
+
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getLabel() {
+		return label;
+	}
+
+	public void setLabel(Fieldlanguagesvalues label) {
+		this.label = label;
+	}
+
+	public Long getTooltip_fieldvalues_id() {
+		return tooltip_fieldvalues_id;
+	}
+
+	public void setTooltip_fieldvalues_id(Long tooltip_fieldvalues_id) {
+		this.tooltip_fieldvalues_id = tooltip_fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getTooltip() {
+		return tooltip;
+	}
+
+	public void setTooltip(Fieldlanguagesvalues tooltip) {
+		this.tooltip = tooltip;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+
+	@Override
+	public String toString() {
+		return "Navimain [main_id=" + main_id + ", global_id=" + global_id + ", name=" + name + ", action=" + action + ", params=" + params
+				+ ", naviorder=" + naviorder + ", fieldvalues_id=" + fieldvalues_id + ", deleted=" + deleted + ", tooltip_fieldvalues_id="
+				+ tooltip_fieldvalues_id + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/src/db/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
new file mode 100644
index 0000000..8ad0a0e
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -0,0 +1,428 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.calendar;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "appointments")
+@NamedQueries({
+    @NamedQuery(name="getAppointmentById", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.id = :id")
+    , @NamedQuery(name="getAppointmentByIdAny", query="SELECT a FROM Appointment a WHERE a.id = :id")
+    , @NamedQuery(name="getAppointments", query="SELECT a FROM Appointment a LEFT JOIN FETCH a.meetingMembers WHERE a.deleted = false ORDER BY a.id")
+    , @NamedQuery(name="appointmentsInRange",
+    	query="SELECT a FROM Appointment a "
+			+ "WHERE a.deleted = false "
+			+ "	AND ( "
+			+ "		(a.start BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.end BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.start < :starttime AND a.end > :endtime) "
+			+ "	)"
+			+ "	AND a.owner.user_id = :userId"
+    	)
+    , @NamedQuery(name="joinedAppointmentsInRange",
+		query="SELECT a FROM MeetingMember mm INNER JOIN mm.appointment a "
+			+ "WHERE mm.deleted = false AND mm.user.user_id <> a.owner.user_id AND mm.user.user_id = :userId "
+			+ "	AND a.id NOT IN (SELECT a.id FROM Appointment a WHERE a.owner.user_id = :userId)"
+			+ "	AND mm.connectedEvent = false " //TODO review: isConnectedEvent is set for the MeetingMember if event is created from "Private Messages", it is weird
+			+ "	AND ( "
+			+ "		(a.start BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.end BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.start < :starttime AND a.end > :endtime) "
+			+ "	)"
+    	)
+    , @NamedQuery(name="appointmentsInRangeRemind",
+		query="SELECT a FROM Appointment a "
+			//only ReminderType simple mail is concerned!
+			+ "WHERE a.deleted = false AND a.reminderEmailSend = false"
+			+ " AND (a.remind.typId = 2 OR a.remind.typId = 3) "
+			+ "	AND ( "
+			+ "		(a.start BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.end BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.start < :starttime AND a.end > :endtime) "
+			+ "	)"
+    	)
+    , @NamedQuery(name="getAppointmentByRoomId", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.room.rooms_id = :room_id")
+	//TODO this query returns duplicates if the user books an appointment with
+	//his own user as second meeting-member, swagner 19.02.2012
+    , @NamedQuery(name="appointmentsInRangeByUser",
+		query="SELECT a FROM MeetingMember mm, IN(mm.appointment) a "
+			+ "WHERE mm.deleted = false AND mm.user.user_id <> a.owner.user_id AND mm.user.user_id = :userId "
+			+ "	AND ( "
+			+ "		(a.start BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.end BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.start < :starttime AND a.end > :endtime) "
+			+ "	)"
+	    )
+    , @NamedQuery(name="appointedRoomsInRangeByUser",
+		query="SELECT a.room FROM MeetingMember mm, IN(mm.appointment) a "
+			+ "WHERE mm.deleted = false AND mm.user.user_id <> a.owner.user_id AND mm.user.user_id = :userId "
+			+ "	AND ( "
+			+ "		(a.start BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.end BETWEEN :starttime AND :endtime) "
+			+ "		OR (a.start < :starttime AND a.end > :endtime) "
+			+ "	)"
+	    )
+    , @NamedQuery(name="getNextAppointment", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.start > :start AND a.owner.user_id = :userId")
+    , @NamedQuery(name="getAppointmentsByTitle", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.title LIKE :title AND a.owner.user_id = :userId")
+})
+@Root(name="appointment")
+public class Appointment implements Serializable {
+	private static final long serialVersionUID = 2016808778885761525L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(name = "appointmentId", data = true)
+	private Long id;
+	
+	@Column(name = "appointmentname")
+	@Element(name="appointmentName", data=true, required=false)
+	private String title;
+	
+	@Column(name = "location")
+	@Element(name="appointmentLocation", data=true, required=false)
+	private String location;
+	
+	@Column(name = "appointment_starttime")
+	@Element(name="appointmentStarttime", data=true)
+	private Date start;
+	
+	@Column(name = "appointment_endtime")
+	@Element(name="appointmentEndtime", data=true)
+	private Date end;
+	
+	@Lob 
+	@Column(name = "description", length=2048)
+	@Element(name="appointmentDescription", data=true, required=false)
+	private String description;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "category_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(name="categoryId", data=true, required=false)
+	private AppointmentCategory category;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "user_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(name="users_id", data=true, required=false)
+	private User owner;
+
+	@Column(name = "starttime")
+	@Element(name="inserted", data=true, required=false)
+	private Date inserted;
+	
+	@Column(name = "updatetime")
+	@Element(name="updated", data=true, required=false)
+	private Date updated;
+	
+	@Column(name = "deleted")
+	@Element(data=true)
+	private boolean deleted;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "remind_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(name="typId", data=true, required=false)
+	private AppointmentReminderTyps remind;
+
+	@Column(name = "isdaily")
+	@Element(data=true, required = false)
+	private Boolean isDaily;
+	
+	@Column(name = "isweekly")
+	@Element(data=true, required = false)
+	private Boolean isWeekly;
+	
+	@Column(name = "ismonthly")
+	@Element(data=true, required = false)
+	private Boolean isMonthly;
+	
+	@Column(name = "isyearly")
+	@Element(data=true, required = false)
+	private Boolean isYearly;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "room_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(name="room_id", data=true, required=false)
+	private Room room;
+
+	@Column(name = "icalId")
+	@Element(data=true, required=false)
+	private String icalId;
+
+	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "appointment_id")
+	private List<MeetingMember> meetingMembers;
+	
+	@Column(name = "language_id")
+	@Element(name="language_id", data=true, required=false)
+	private Long languageId;
+	
+	@Column(name = "is_password_protected")
+	@Element(name="isPasswordProtected", data=true, required=false)
+	private boolean passwordProtected;
+	
+	@Column(name = "password")
+	@Element(data=true, required=false)
+	private String password;
+
+	@Column(name = "is_connected_event")
+	private boolean connectedEvent;
+
+	@Column(name = "is_reminder_email_send")
+	private boolean reminderEmailSend;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public User getOwner() {
+		return owner;
+	}
+
+	public void setOwner(User owner) {
+		this.owner = owner;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getLocation() {
+		return location;
+	}
+
+	public void setLocation(String location) {
+		this.location = location;
+	}
+
+	public Date getStart() {
+		return start;
+	}
+
+	public Calendar startCalendar(TimeZone timeZone) {
+		Calendar cal = Calendar.getInstance(timeZone);
+		cal.setTime(start);
+		return cal;
+	}
+
+	public void setStart(Date start) {
+		this.start = start;
+	}
+
+	public Date getEnd() {
+		return end;
+	}
+
+	public Calendar endCalendar(TimeZone timeZone) {
+		Calendar cal = Calendar.getInstance(timeZone);
+		cal.setTime(end);
+		return cal;
+	}
+
+	public void setEnd(Date end) {
+		this.end = end;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public AppointmentCategory getCategory() {
+		return category;
+	}
+
+	public void setCategory(AppointmentCategory category) {
+		this.category = category;
+	}
+
+	public AppointmentReminderTyps getRemind() {
+		return remind;
+	}
+
+	public void setRemind(AppointmentReminderTyps remind) {
+		this.remind = remind;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Boolean getIsWeekly() {
+		return isWeekly;
+	}
+
+	public void setIsWeekly(Boolean isWeekly) {
+		this.isWeekly = isWeekly;
+	}
+
+	public Boolean getIsMonthly() {
+		return isMonthly;
+	}
+
+	public void setIsMonthly(Boolean isMonthly) {
+		this.isMonthly = isMonthly;
+	}
+
+	public Boolean getIsYearly() {
+		return isYearly;
+	}
+
+	public void setIsYearly(Boolean isYearly) {
+		this.isYearly = isYearly;
+	}
+
+	public Boolean getIsDaily() {
+		return isDaily;
+	}
+
+	public void setIsDaily(Boolean isDaily) {
+		this.isDaily = isDaily;
+	}
+
+	public List<MeetingMember> getMeetingMembers() {
+		return meetingMembers;
+	}
+
+	public void setMeetingMembers(List<MeetingMember> meetingMembers) {
+		this.meetingMembers = meetingMembers;
+	}
+
+	public Room getRoom() {
+		return room;
+	}
+
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	public String getIcalId() {
+		return icalId;
+	}
+
+	public void setIcalId(String icalId) {
+		this.icalId = icalId;
+	}
+
+	public Long getLanguageId() {
+		return languageId;
+	}
+
+	public void setLanguageId(Long languageId) {
+		this.languageId = languageId;
+	}
+
+	public boolean isPasswordProtected() {
+		return passwordProtected;
+	}
+
+	public void setPasswordProtected(boolean isPasswordProtected) {
+		this.passwordProtected = isPasswordProtected;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public boolean isConnectedEvent() {
+		return connectedEvent;
+	}
+
+	public void setConnectedEvent(boolean isConnectedEvent) {
+		this.connectedEvent = isConnectedEvent;
+	}
+
+	public boolean isReminderEmailSend() {
+		return reminderEmailSend;
+	}
+
+	public void setReminderEmailSend(boolean isReminderEmailSend) {
+		this.reminderEmailSend = isReminderEmailSend;
+	}
+
+	@Override
+	public String toString() {
+		return "Appointment [id=" + id + ", title=" + title + ", start=" + start + ", end=" + end + ", owner=" + owner
+				+ ", deleted=" + deleted + ", icalId=" + icalId + "]";
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentCategory.java b/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentCategory.java
new file mode 100644
index 0000000..4d71c29
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentCategory.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.calendar;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.user.User;
+
+@Entity
+@Table(name = "appointmentcategory")
+public class AppointmentCategory implements Serializable {
+	private static final long serialVersionUID = 595713649933692774L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private Long categoryId;
+	
+	@Column(name="name")
+	private String name;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="user_id", nullable=true)
+	@ForeignKey(enabled = true)
+	private User user;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+	
+	@Lob
+	@Column(name="comment_field", length=2048)
+	private String comment;
+	
+	public Long getCategoryId() {
+		return categoryId;
+	}
+	public void setCategoryId(Long categoryId) {
+		this.categoryId = categoryId;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public User getUser() {
+		return user;
+	}
+	public void setUser(User user) {
+		this.user = user;
+	}
+	
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+	
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	
+	public String getComment() {
+		return comment;
+	}
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+	
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentReminderTyps.java b/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentReminderTyps.java
new file mode 100644
index 0000000..1a2b38f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/calendar/AppointmentReminderTyps.java
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.calendar;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+
+
+@Entity
+@Table(name = "appointmentremindertyps")
+public class AppointmentReminderTyps implements Serializable {
+	private static final long serialVersionUID = -6543593995706839669L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private Long typId;
+	
+	@Column(name="name")
+	private String name;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="user_id", nullable=true)
+	@ForeignKey(enabled = true)
+	private User user;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+	
+	@Column(name="fieldvalues_id")
+	@Element(data=true, required=false)
+	private Long fieldvalues_id;
+	
+	@Transient
+	private Fieldlanguagesvalues label;
+	
+	public Long getTypId() {
+		return typId;
+	}
+	public void setTypId(Long typId) {
+		this.typId = typId;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public User getUser() {
+		return user;
+	}
+	public void setUser(User user) {
+		this.user = user;
+	}
+	
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+	
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+	
+	public Fieldlanguagesvalues getLabel() {
+		return label;
+	}
+
+	public void setLabel(Fieldlanguagesvalues label) {
+		this.label = label;
+	}	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/src/db/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
new file mode 100644
index 0000000..1987956
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.calendar;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "meeting_members")
+@NamedQueries({
+    @NamedQuery(name="getMeetingMemberById"
+    		, query="SELECT mm FROM MeetingMember mm WHERE mm.deleted = false AND mm.id = :id")
+    , @NamedQuery(name="getMeetingMembers", query="SELECT mm FROM MeetingMember mm ORDER BY mm.id")
+    , @NamedQuery(name="getMeetingMemberIdsByAppointment"
+    		, query="SELECT mm.id FROM MeetingMember mm WHERE mm.deleted = false AND mm.appointment.id = :id")
+})
+@Root(name = "meetingmember")
+public class MeetingMember implements Serializable {
+	private static final long serialVersionUID = -3864571325368787524L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(name = "meetingMemberId", data = true)
+	private Long id;
+
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "user_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(name = "userid", data = true, required = false)
+	private User user;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "appointment_id", nullable = true)
+	@ForeignKey(enabled = true)
+	@Element(data = true, required = false)
+	private Appointment appointment;
+
+	@Column(name = "appointment_status")
+	@Element(data = true, required = false)
+	private String appointmentStatus; // status of the appointment denial, acceptance, wait.
+
+	@Column(name = "starttime")
+	private Date inserted;
+
+	@Column(name = "updatetime")
+	private Date updated;
+
+	@Column(name = "deleted")
+	@Element(data = true)
+	private boolean deleted;
+
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "invitation", nullable = true, insertable = false)
+	@ForeignKey(enabled = true)
+	private Invitation invitation;
+
+	@Column(name = "is_connected_event")
+	private boolean connectedEvent;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public String getAppointmentStatus() {
+		return appointmentStatus;
+	}
+
+	public void setAppointmentStatus(String appointmentStatus) {
+		this.appointmentStatus = appointmentStatus;
+	}
+
+	public Appointment getAppointment() {
+		return appointment;
+	}
+
+	public void setAppointment(Appointment appointment) {
+		this.appointment = appointment;
+	}
+
+	public Invitation getInvitation() {
+		return invitation;
+	}
+
+	public void setInvitation(Invitation invitation) {
+		this.invitation = invitation;
+	}
+
+	public Date getStarttime() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public boolean isConnectedEvent() {
+		return connectedEvent;
+	}
+
+	public void setConnectedEvent(boolean connectedEvent) {
+		this.connectedEvent = connectedEvent;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java b/src/db/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
new file mode 100644
index 0000000..1748299
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
@@ -0,0 +1,301 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.file;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name="getAllFiles", query="SELECT c FROM FileExplorerItem c ORDER BY c.fileExplorerItemId")
+    , @NamedQuery(name="getById", query="SELECT c FROM FileExplorerItem c WHERE c.fileExplorerItemId = :fileExplorerItemId")
+    , @NamedQuery(name="getByHash", query="SELECT c FROM FileExplorerItem c WHERE c.fileHash = :fileHash")
+})
+@Table(name = "fileexploreritem")
+@Root
+public class FileExplorerItem implements Serializable {
+	private static final long serialVersionUID = 242843782142620566L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(data=true)
+	private long fileExplorerItemId;
+	
+	@Column(name="filename")
+	@Element(data=true, required = false)
+	private String fileName;
+	
+	@Column(name="filehash")
+	@Element(data=true, required = false)
+	private String fileHash;
+	
+	@Column(name="parent_fileexploreritem_id")
+	@Element(data=true)
+	private Long parentFileExplorerItemId;
+	
+	@Column(name="room_id")
+	@Element(data=true, required=false)
+	private Long room_id;
+	
+	@Column(name="owner_id")
+	@Element(data=true, required=false)
+	private Long ownerId;//OwnerID => only set if its directly root in Owner Directory, other Folders and Files
+	//maybe are also in a Home directory but just because their parent is
+	
+	@Column(name="is_folder")
+	@Element(data=true)
+	private Boolean isFolder;
+	
+	@Column(name="is_image")
+	@Element(data=true)
+	private Boolean isImage;
+	
+	@Column(name="is_presentation")
+	@Element(data=true)
+	private Boolean isPresentation;
+	
+	@Column(name="is_video")
+	@Element(data=true, required=false)
+	private Boolean isVideo;
+	
+	@Column(name="inserted_by")
+	@Element(data=true)
+	private Long insertedBy;
+	
+	@Column(name="inserted")
+	@Element(data=true)
+	private Date inserted;
+	
+	@Column(name="updated")
+	@Element(data=true)
+	private Date updated;
+	
+	@Column(name="deleted")
+	@Element(data=true)
+	private boolean deleted;
+	
+	@Column(name="filesize")
+	@Element(data=true, required=false)
+	private Long fileSize;
+	
+	@Column(name="flv_width")
+	@Element(data=true, required=false)
+	private Integer flvWidth;
+	
+	@Column(name="flv_height")
+	@Element(data=true, required=false)
+	private Integer flvHeight;
+	
+	@Column(name="preview_image")
+	@Element(data=true, required = false)
+	private String previewImage;
+	
+	@Column(name="wml_file_path")
+	@Element(data=true, required = false)
+	private String wmlFilePath;
+	
+	@Column(name="is_stored_wml_file")
+	@Element(data=true, required = false)
+	private Boolean isStoredWmlFile;
+	
+	@Column(name="is_chart")
+	@Element(data=true, required = false)
+    private Boolean isChart;
+    
+	@Column(name="external_file_id")
+    private Long externalFileId;
+	
+	@Column(name="external_type")
+    private String externalType;
+
+		
+	public long getFileExplorerItemId() {
+		return fileExplorerItemId;
+	}
+	public void setFileExplorerItemId(long fileExplorerItemId) {
+		this.fileExplorerItemId = fileExplorerItemId;
+	}
+	
+	public String getFileName() {
+		return fileName;
+	}
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+	
+	public String getFileHash() {
+		return fileHash;
+	}
+	public void setFileHash(String fileHash) {
+		this.fileHash = fileHash;
+	}
+	
+	public Long getParentFileExplorerItemId() {
+		return parentFileExplorerItemId;
+	}
+	public void setParentFileExplorerItemId(Long parentFileExplorerItemId) {
+		this.parentFileExplorerItemId = parentFileExplorerItemId;
+	}
+	
+	public Long getOwnerId() {
+		return ownerId;
+	}
+	public void setOwnerId(Long ownerId) {
+		this.ownerId = ownerId;
+	}
+	
+	public Long getRoom_id() {
+		return room_id;
+	}
+	public void setRoom_id(Long room_id) {
+		this.room_id = room_id;
+	}
+	
+	public Boolean getIsFolder() {
+		return isFolder;
+	}
+	public void setIsFolder(Boolean isFolder) {
+		this.isFolder = isFolder;
+	}
+	
+	public Boolean getIsImage() {
+		return isImage;
+	}
+	public void setIsImage(Boolean isImage) {
+		this.isImage = isImage;
+	}
+	
+	public Boolean getIsVideo() {
+		return isVideo;
+	}
+	public void setIsVideo(Boolean isVideo) {
+		this.isVideo = isVideo;
+	}
+	
+	public Boolean getIsPresentation() {
+		return isPresentation;
+	}
+	public void setIsPresentation(Boolean isPresentation) {
+		this.isPresentation = isPresentation;
+	}
+	
+	public Long getInsertedBy() {
+		return insertedBy;
+	}
+	public void setInsertedBy(Long insertedBy) {
+		this.insertedBy = insertedBy;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	
+	public Date getUpdated() {
+		return updated;
+	}
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+	
+	public Long getFileSize() {
+		return fileSize;
+	}
+	public void setFileSize(Long fileSize) {
+		this.fileSize = fileSize;
+	}
+	
+	public Integer getFlvWidth() {
+		return flvWidth;
+	}
+	public void setFlvWidth(Integer flvWidth) {
+		this.flvWidth = flvWidth;
+	}
+
+	public Integer getFlvHeight() {
+		return flvHeight;
+	}
+	public void setFlvHeight(Integer flvHeight) {
+		this.flvHeight = flvHeight;
+	}
+
+	public String getPreviewImage() {
+		return previewImage;
+	}	
+	public void setPreviewImage(String previewImage) {
+		this.previewImage = previewImage;
+	}
+	
+	public String getWmlFilePath() {
+		return wmlFilePath;
+	}
+	public void setWmlFilePath(String wmlFilePath) {
+		this.wmlFilePath = wmlFilePath;
+	}
+	
+	public Boolean getIsStoredWmlFile() {
+		return isStoredWmlFile;
+	}
+	public void setIsStoredWmlFile(Boolean isStoredWmlFile) {
+		this.isStoredWmlFile = isStoredWmlFile;
+	}
+
+	public Boolean getIsChart() {
+        return isChart;
+    }
+    public void setIsChart(Boolean isChart) {
+        this.isChart = isChart;
+    }
+    
+	public Long getExternalFileId() {
+		return externalFileId;
+	}
+	public void setExternalFileId(Long externalFileId) {
+		this.externalFileId = externalFileId;
+	}
+	
+	public String getExternalType() {
+		return externalType;
+	}
+	public void setExternalType(String externalType) {
+		this.externalType = externalType;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/label/FieldLanguage.java b/src/db/java/org/apache/openmeetings/db/entity/label/FieldLanguage.java
new file mode 100644
index 0000000..14b8771
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/label/FieldLanguage.java
@@ -0,0 +1,139 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.label;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+@Entity
+@Table(name = "fieldlanguage")
+public class FieldLanguage implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 3501643212388395425L;
+	@Id
+	@Column(name="id")
+	private Long language_id;
+	
+	@Column(name="name")
+	private String name;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+	
+	@Column(name="rtl")
+	private Boolean rtl;
+	
+	@Column(name="code")
+	private String code;
+	
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "language_id", insertable = true, updatable = true)
+	private Collection<Fieldlanguagesvalues> languageValues;
+	
+	public Long getLanguage_id() {
+		return language_id;
+	}
+	public void setLanguage_id(Long language_id) {
+		this.language_id = language_id;
+	}
+
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Boolean getRtl() {
+		return rtl;
+	}
+	public void setRtl(Boolean rtl) {
+		this.rtl = rtl;
+	}
+
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
+	
+	public Collection<Fieldlanguagesvalues> getLanguageValues() {
+		return languageValues == null ? new ArrayList<Fieldlanguagesvalues>() : languageValues;
+	}
+	public void setLanguageValues(Collection<Fieldlanguagesvalues> languageValues) {
+		if (languageValues != null) {
+			this.languageValues = languageValues;
+		}
+	}
+	public Map<Long, Fieldlanguagesvalues> getLanguageValuesMap() {
+		Collection<Fieldlanguagesvalues> langVals = getLanguageValues();
+		Map<Long, Fieldlanguagesvalues> result = new Hashtable<Long, Fieldlanguagesvalues>(langVals.size());
+		for (Fieldlanguagesvalues flv : langVals) {
+			result.put(flv.getFieldvalues().getFieldvalues_id(), flv);
+		}
+		return result;
+	}
+	
+	@Override
+	public String toString() {
+		return "FieldLanguage [id=" + language_id + ", name=" + name + ", deleted=" + deleted + ", rtl=" + rtl + ", code=" + code
+				+ "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/label/Fieldlanguagesvalues.java b/src/db/java/org/apache/openmeetings/db/entity/label/Fieldlanguagesvalues.java
new file mode 100644
index 0000000..a5b55db
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/label/Fieldlanguagesvalues.java
@@ -0,0 +1,142 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.label;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "allFieldLanguageValues", query = "SELECT flv FROM Fieldlanguagesvalues flv "
+		+ "WHERE flv.deleted = false "
+		+ "		AND flv.fieldvalues.deleted = false "
+		+ "		AND flv.language_id = :language_id ORDER BY flv.fieldvalues.fieldvalues_id ASC")
+	, @NamedQuery(name="allFieldValuesIds", query = "SELECT flv.fieldvalues.fieldvalues_id FROM Fieldlanguagesvalues flv "
+		+ "WHERE flv.deleted = false "
+		+ "		AND flv.fieldvalues.deleted = false "
+		+ "		AND flv.language_id = :language_id")
+	, @NamedQuery(name="allNotTranslatedValues", query = "SELECT flv FROM Fieldlanguagesvalues flv "
+		+ "WHERE flv.deleted = false "
+		+ "		AND flv.fieldvalues.deleted = false "
+		+ "		AND flv.language_id = 1 AND flv.fieldvalues.fieldvalues_id NOT IN (:id_list)")
+	, @NamedQuery(name="getFieldLanguagesValuesById"
+		, query = "SELECT f FROM Fieldlanguagesvalues f WHERE f.fieldlanguagesvalues_id = :id")
+	, @NamedQuery(name="getFieldLanguagesValuesByValueAndLang"
+		, query = "SELECT f FROM Fieldlanguagesvalues f WHERE f.fieldvalues.fieldvalues_id = :fieldValuesId AND f.language_id = :lang AND f.deleted = false")
+})
+@Table(name = "fieldlanguagesvalues")
+public class Fieldlanguagesvalues implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 1965055047163639210L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private Long fieldlanguagesvalues_id;
+	
+	@Column(name="language_id")
+	private Long language_id;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+	
+	@Lob
+	@Column(name="value")
+	private String value;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "fieldvalues_id")
+	@ForeignKey(enabled = true)
+	private Fieldvalues fieldvalues;
+	
+	public Fieldlanguagesvalues() {
+		super();
+	}
+	
+	public Long getFieldlanguagesvalues_id() {
+		return fieldlanguagesvalues_id;
+	}
+	public void setFieldlanguagesvalues_id(Long fieldlanguagesvalues_id) {
+		this.fieldlanguagesvalues_id = fieldlanguagesvalues_id;
+	}
+	
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	
+	public Long getLanguage_id() {
+		return language_id;
+	}
+	public void setLanguage_id(Long language_id) {
+		this.language_id = language_id;
+	}
+
+	public String getValue() {
+		return value;
+	}
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	public Fieldvalues getFieldvalues() {
+		return fieldvalues;
+	}
+
+	public void setFieldvalues(Fieldvalues fieldvalues) {
+		this.fieldvalues = fieldvalues;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/label/Fieldvalues.java b/src/db/java/org/apache/openmeetings/db/entity/label/Fieldvalues.java
new file mode 100644
index 0000000..cc433af
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/label/Fieldvalues.java
@@ -0,0 +1,124 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.label;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getFieldCount", query = "SELECT COUNT(fv) FROM Fieldvalues fv WHERE fv.deleted = false ")
+	, @NamedQuery(name = "getFieldByIdAndLanguage", query = "SELECT fv FROM Fieldvalues fv " +
+		"LEFT OUTER JOIN FETCH fv.fieldlanguagesvalues WHERE " +
+		"fv.fieldvalues_id = :id AND fv.deleted = false")
+	, @NamedQuery(name = "getFieldByLanguage", query = "SELECT fv FROM Fieldvalues fv WHERE fv.deleted = false") //FIXME no language yet
+})
+@Table(name = "fieldvalues")
+public class Fieldvalues implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = -3439614511218028085L;
+	@Id
+	@Column(name="id")
+	private Long fieldvalues_id;
+	
+	@Column(name="name")
+	private String name;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+
+	@OneToMany(fetch = FetchType.LAZY)
+	@JoinColumn(name="fieldvalues_id")
+	private Set<Fieldlanguagesvalues> fieldlanguagesvalues;
+	
+	@Transient
+	private Fieldlanguagesvalues fieldlanguagesvalue;
+	
+	public Fieldvalues() {
+		super();
+	}
+	
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}	
+
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Set<Fieldlanguagesvalues> getFieldlanguagesvalues() {
+		return fieldlanguagesvalues;
+	}
+	public void setFieldlanguagesvalues(Set<Fieldlanguagesvalues> fieldlanguagesvalues) {
+		this.fieldlanguagesvalues = fieldlanguagesvalues;
+	}
+
+	public Fieldlanguagesvalues getFieldlanguagesvalue() {
+		return fieldlanguagesvalue;
+	}
+	public void setFieldlanguagesvalue(Fieldlanguagesvalues fieldlanguagesvalue) {
+		this.fieldlanguagesvalue = fieldlanguagesvalue;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java b/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
new file mode 100644
index 0000000..5d83d77
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.log;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+
+
+
+@Entity
+@Table(name = "conferencelog")
+public class ConferenceLog implements Serializable {
+	private static final long serialVersionUID = 147341496943518159L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long conferenceLogId;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="conferencelogtype_id", updatable=true, insertable=true)
+	@ForeignKey(enabled = true)
+	private ConferenceLogType conferenceLogType;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="insertedby")
+	private long insertedby;
+	
+	//NULL means its a Guest/Invited User
+	@Column(name="user_id")
+	private Long userId;
+	
+	@Column(name="external_user_id")
+	private String externalUserId;
+	
+	@Column(name="external_user_type")
+	private String externalUserType;
+	
+	@Column(name="streamid")
+	private String streamid;
+	
+	@Column(name="room_id")
+	private Long room_id;
+	
+	@Column(name="userip")
+	private String userip;
+	
+	@Column(name="scopename")
+	private String scopeName;
+	
+	@Column(name="email")
+	private String email;
+	
+	@Column(name="firstname")
+	private String firstname;
+	
+	@Column(name="lastname")
+	private String lastname;
+	
+	public long getConferenceLogId() {
+		return conferenceLogId;
+	}
+	public void setConferenceLogId(long conferenceLogId) {
+		this.conferenceLogId = conferenceLogId;
+	}
+	
+	public ConferenceLogType getConferenceLogType() {
+		return conferenceLogType;
+	}
+	public void setConferenceLogType(ConferenceLogType conferenceLogType) {
+		this.conferenceLogType = conferenceLogType;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public long getInsertedby() {
+		return insertedby;
+	}
+	public void setInsertedby(long insertedby) {
+		this.insertedby = insertedby;
+	}
+	
+	public Long getUserId() {
+		return userId;
+	}
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+	
+	public String getStreamid() {
+		return streamid;
+	}
+	public void setStreamid(String streamid) {
+		this.streamid = streamid;
+	}
+	
+	public Long getRoom_id() {
+		return room_id;
+	}
+	public void setRoom_id(Long room_id) {
+		this.room_id = room_id;
+	}
+	
+	public String getUserip() {
+		return userip;
+	}
+	public void setUserip(String userip) {
+		this.userip = userip;
+	}
+	
+	public String getScopeName() {
+		return scopeName;
+	}
+	public void setScopeName(String scopeName) {
+		this.scopeName = scopeName;
+	}
+	
+	public String getExternalUserId() {
+		return externalUserId;
+	}
+	public void setExternalUserId(String externalUserId) {
+		this.externalUserId = externalUserId;
+	}
+	
+	public String getExternalUserType() {
+		return externalUserType;
+	}
+	public void setExternalUserType(String externalUserType) {
+		this.externalUserType = externalUserType;
+	}
+	
+	public String getEmail() {
+		return email;
+	}
+	public void setEmail(String email) {
+		this.email = email;
+	}
+	
+	public String getFirstname() {
+		return firstname;
+	}
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+	
+	public String getLastname() {
+		return lastname;
+	}
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLogType.java b/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLogType.java
new file mode 100644
index 0000000..1d88b05
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/log/ConferenceLogType.java
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.log;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getConferenceLogTypeByEventName", query = "select a from ConferenceLogType a " +
+					"WHERE a.eventType = :eventType")
+})
+@Table(name = "conferencelogtype")
+public class ConferenceLogType implements Serializable {
+	private static final long serialVersionUID = 4388958579350356294L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long conferenceLogTypeId;
+	
+	@Column(name="eventtype")
+	private String eventType;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="insertedby")
+	private long insertedby;
+	
+	public long getConferenceLogTypeId() {
+		return conferenceLogTypeId;
+	}
+	public void setConferenceLogTypeId(long conferenceLogTypeId) {
+		this.conferenceLogTypeId = conferenceLogTypeId;
+	}
+
+	public String getEventType() {
+		return eventType;
+	}
+	public void setEventType(String eventType) {
+		this.eventType = eventType;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+	
+	public long getInsertedby() {
+		return insertedby;
+	}
+	public void setInsertedby(long insertedby) {
+		this.insertedby = insertedby;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
new file mode 100644
index 0000000..579737c
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
@@ -0,0 +1,498 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.record;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+/**
+ * An item in the file explorer in the recording section. Can be either:<br/>
+ * <ul>
+ * <li>a conference recording</li>
+ * <li>a interview recording</li>
+ * <li>a folder</li>
+ * </ul>
+ * 
+ * Recorded files are situated in: webapps/openmeetings/streams/hibernate.<br/>
+ * The raw recorded files are situated in:
+ * webapps/openmeetings/streams/$ROOM_ID.<br/>
+ * 
+ * @author sebawagner
+ * 
+ */
+@Entity
+@NamedQueries({ 
+	@NamedQuery(name = "getRecordingById", query = "SELECT f FROM FlvRecording f WHERE f.flvRecordingId = :id") 
+	, @NamedQuery(name = "getRecordingByHash", query = "SELECT f FROM FlvRecording f WHERE f.fileHash = :fileHash") 
+	, @NamedQuery(name = "getRecordingsByExternalUser", query = "SELECT c FROM FlvRecording c, User u "
+			+ "WHERE c.insertedBy = u.user_id AND u.externalUserId = :externalUserId  AND u.externalUserType = :externalUserType "
+			+ "AND c.deleted = false") 
+	, @NamedQuery(name = "getRecordingsPublic", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.ownerId IS NULL "
+			+ "AND f.organization_id IS NULL AND (f.parentFileExplorerItemId IS NULL OR f.parentFileExplorerItemId = 0) "
+			+ "ORDER BY f.folder DESC, f.inserted")
+	, @NamedQuery(name = "getRecordingsByOrganization", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.ownerId IS NULL "
+			+ "AND f.organization_id = :organization_id AND (f.parentFileExplorerItemId IS NULL OR f.parentFileExplorerItemId = 0) "
+			+ "ORDER BY f.folder DESC, f.inserted")
+	, @NamedQuery(name = "getRecordingsByOwner", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.ownerId = :ownerId "
+			+ "AND (f.parentFileExplorerItemId IS NULL OR f.parentFileExplorerItemId = 0) "
+			+ "ORDER BY f.folder DESC, f.inserted")
+	, @NamedQuery(name = "getRecordingsByParent", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.parentFileExplorerItemId = :parentId "
+			+ "ORDER BY f.folder DESC, f.inserted")
+	, @NamedQuery(name = "resetRecordingProcessingStatus", query = "UPDATE FlvRecording f SET f.status = :error WHERE f.status IN (:recording, :converting)")
+	, @NamedQuery(name = "getRecordingsByExternalType", query = "SELECT rec FROM FlvRecording rec, Room r, User u "
+			+ "WHERE rec.deleted = false AND rec.room_id = r.rooms_id AND rec.insertedBy = u.user_id "
+			+ "AND (r.externalRoomType = :externalType OR u.externalUserType = :externalType)")
+})
+@Table(name = "flvrecording")
+@Root(name = "flvrecording")
+public class FlvRecording implements Serializable {
+	private static final long serialVersionUID = 1L;
+	
+	public enum Status {
+		NONE
+		, RECORDING
+		, CONVERTING
+		, PROCESSED
+		, ERROR
+	}
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true)
+	private long flvRecordingId;
+
+	@Column(name = "filename")
+	@Element(data = true, required = false)
+	private String fileName;
+
+	@Column(name = "alternate_download")
+	@Element(data = true, required = false)
+	private String alternateDownload;
+
+	@Column(name = "filehash")
+	@Element(data = true, required = false)
+	private String fileHash;
+
+	@Column(name = "comment_field")
+	@Element(data = true, required = false)
+	private String comment;
+
+	@Column(name = "parent_fileexploreritem_id")
+	@Element(data = true, required = false)
+	private Long parentFileExplorerItemId;
+
+	@Column(name = "room_id")
+	@Element(data = true, required = false)
+	private Long room_id;
+
+	@Column(name = "owner_id")
+	@Element(data = true, required = false)
+	private Long ownerId;// OwnerID => only set if its directly root in Owner
+							// Directory, other Folders and Files
+							// maybe are also in a Home directory but just
+							// because their parent is
+
+	@Column(name = "is_folder")
+	@Element(data = true, required = false)
+	private boolean folder;
+
+	@Column(name = "is_image")
+	@Element(data = true, required = false)
+	private Boolean isImage;
+
+	@Column(name = "is_presentation")
+	@Element(data = true, required = false)
+	private Boolean isPresentation;
+
+	@Column(name = "is_recording")
+	@Element(data = true, required = false)
+	private Boolean isRecording;
+
+	@Column(name = "record_start")
+	@Element(data = true, required = false)
+	private Date recordStart;
+
+	@Column(name = "record_end")
+	@Element(data = true, required = false)
+	private Date recordEnd;
+
+	@Column(name = "inserted_by")
+	@Element(data = true, required = false)
+	private Long insertedBy;
+
+	@Column(name = "inserted")
+	@Element(data = true, required = false)
+	private Date inserted;
+
+	@Column(name = "updated")
+	private Date updated;
+
+	@Column(name = "deleted")
+	@Element(data = true, required = false)
+	private boolean deleted;
+
+	@Column(name = "width")
+	@Element(data = true, required = false)
+	private Integer width;
+
+	@Column(name = "height")
+	@Element(data = true, required = false)
+	private Integer height;
+
+	@Column(name = "flv_width")
+	@Element(data = true, required = false)
+	private Integer flvWidth;
+
+	@Column(name = "flv_height")
+	@Element(data = true, required = false)
+	private Integer flvHeight;
+
+	@Column(name = "preview_image")
+	@Element(data = true, required = false)
+	private String previewImage;
+
+	@Column(name = "duration")
+	@Element(data = true, required = false)
+	private String duration;
+
+	@Column(name = "recorder_stream_id")
+	@Element(data = true, required = false)
+	private String recorderStreamId;
+
+	@Column(name = "organization_id")
+	@Element(data = true, required = false)
+	private Long organization_id;
+
+	@Column(name = "is_interview")
+	@Element(data = true, required = false)
+	private Boolean isInterview;
+
+	@Column(name = "progress_post_processing")
+	@Element(data = true, required = false)
+	private Integer progressPostProcessing;
+
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "flvrecording_id")
+	@ElementList(name = "flvrecordingmetadatas", required = false)
+	private List<FlvRecordingMetaData> flvRecordingMetaData;
+
+	@Column(name = "status")
+	@Enumerated(value = EnumType.STRING)
+	@Element(data = true, required = false)
+	private Status status = Status.NONE;
+	
+	// Not Mapped
+	@Transient
+	private User creator;
+
+	@Transient
+	private Room room;
+
+	@Transient
+	private List<FlvRecordingLog> flvRecordingLog;
+
+	public long getFlvRecordingId() {
+		return flvRecordingId;
+	}
+
+	public void setFlvRecordingId(long flvRecordingId) {
+		this.flvRecordingId = flvRecordingId;
+	}
+
+	public String getFileName() {
+		return fileName;
+	}
+
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public String getFileHash() {
+		return fileHash;
+	}
+
+	public void setFileHash(String fileHash) {
+		this.fileHash = fileHash;
+	}
+
+	public Long getParentFileExplorerItemId() {
+		return parentFileExplorerItemId;
+	}
+
+	public void setParentFileExplorerItemId(Long parentFileExplorerItemId) {
+		this.parentFileExplorerItemId = parentFileExplorerItemId;
+	}
+
+	public Long getRoom_id() {
+		return room_id;
+	}
+
+	public void setRoom_id(Long room_id) {
+		this.room_id = room_id;
+	}
+
+	public Long getOwnerId() {
+		return ownerId;
+	}
+
+	public void setOwnerId(Long ownerId) {
+		this.ownerId = ownerId;
+	}
+
+	public boolean isFolder() {
+		return folder;
+	}
+
+	public void setFolder(boolean folder) {
+		this.folder = folder;
+	}
+
+	public Boolean getIsImage() {
+		return isImage;
+	}
+
+	public void setIsImage(Boolean isImage) {
+		this.isImage = isImage;
+	}
+
+	public Boolean getIsPresentation() {
+		return isPresentation;
+	}
+
+	public void setIsPresentation(Boolean isPresentation) {
+		this.isPresentation = isPresentation;
+	}
+
+	public Boolean getIsRecording() {
+		return isRecording;
+	}
+
+	public void setIsRecording(Boolean isRecording) {
+		this.isRecording = isRecording;
+	}
+
+	public Long getInsertedBy() {
+		return insertedBy;
+	}
+
+	public void setInsertedBy(Long insertedBy) {
+		this.insertedBy = insertedBy;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public String getDuration() {
+		return duration;
+	}
+
+	public void setDuration(String duration) {
+		this.duration = duration;
+	}
+
+	public Date getRecordStart() {
+		return recordStart;
+	}
+
+	public void setRecordStart(Date recordStart) {
+		this.recordStart = recordStart;
+	}
+
+	public Date getRecordEnd() {
+		return recordEnd;
+	}
+
+	public void setRecordEnd(Date recordEnd) {
+		this.recordEnd = recordEnd;
+	}
+
+	public String getRecorderStreamId() {
+		return recorderStreamId;
+	}
+
+	public void setRecorderStreamId(String recorderStreamId) {
+		this.recorderStreamId = recorderStreamId;
+	}
+
+	public Long getOrganization_id() {
+		return organization_id;
+	}
+
+	public void setOrganization_id(Long organization_id) {
+		this.organization_id = organization_id;
+	}
+
+	public List<FlvRecordingMetaData> getFlvRecordingMetaData() {
+		return flvRecordingMetaData;
+	}
+
+	public void setFlvRecordingMetaData(
+			List<FlvRecordingMetaData> flvRecordingMetaData) {
+		this.flvRecordingMetaData = flvRecordingMetaData;
+	}
+
+	public User getCreator() {
+		return creator;
+	}
+
+	public void setCreator(User creator) {
+		this.creator = creator;
+	}
+
+	public Room getRoom() {
+		return room;
+	}
+
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	public Integer getWidth() {
+		return width;
+	}
+
+	public void setWidth(Integer width) {
+		this.width = width;
+	}
+
+	public Integer getHeight() {
+		return height;
+	}
+
+	public void setHeight(Integer height) {
+		this.height = height;
+	}
+
+	public Integer getFlvWidth() {
+		return flvWidth;
+	}
+
+	public void setFlvWidth(Integer flvWidth) {
+		this.flvWidth = flvWidth;
+	}
+
+	public Integer getFlvHeight() {
+		return flvHeight;
+	}
+
+	public void setFlvHeight(Integer flvHeight) {
+		this.flvHeight = flvHeight;
+	}
+
+	public String getPreviewImage() {
+		return previewImage;
+	}
+
+	public void setPreviewImage(String previewImage) {
+		this.previewImage = previewImage;
+	}
+
+	public String getAlternateDownload() {
+		return alternateDownload;
+	}
+
+	public void setAlternateDownload(String alternateDownload) {
+		this.alternateDownload = alternateDownload;
+	}
+
+	public List<FlvRecordingLog> getFlvRecordingLog() {
+		return flvRecordingLog;
+	}
+
+	public void setFlvRecordingLog(List<FlvRecordingLog> flvRecordingLog) {
+		this.flvRecordingLog = flvRecordingLog;
+	}
+
+	public Boolean getIsInterview() {
+		return isInterview;
+	}
+
+	public void setIsInterview(Boolean isInterview) {
+		this.isInterview = isInterview;
+	}
+
+	public Integer getProgressPostProcessing() {
+		return progressPostProcessing;
+	}
+
+	public void setProgressPostProcessing(Integer progressPostProcessing) {
+		this.progressPostProcessing = progressPostProcessing;
+	}
+
+	public Status getStatus() {
+		return status;
+	}
+
+	public void setStatus(Status status) {
+		this.status = status;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
new file mode 100644
index 0000000..afafcfe
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.record;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+@Entity
+@NamedQueries({ 
+	@NamedQuery(name = "getRecordingLogsByRecording", query = "SELECT fl FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId ORDER BY fl.inserted")
+	, @NamedQuery(name = "countErrorRecordingLogsByRecording", query = "SELECT COUNT(fl) FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId AND fl.exitValue <> '0'")
+	, @NamedQuery(name = "deleteErrorRecordingLogsByRecording", query = "DELETE FROM FlvRecordingLog fl WHERE fl.flvRecording.flvRecordingId = :recId")
+})
+@Table(name = "flvrecording_log")
+public class FlvRecordingLog implements Serializable {
+	private static final long serialVersionUID = 1L;
+	public static final int MAX_LOG_SIZE = 64 * 1024; //64K until column definition will be fixed
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long flvRecordingLogId;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="flvrecording_id", nullable=true)
+	private FlvRecording flvRecording;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="msg_type")
+	private String msgType;
+	
+	@Lob
+	@Column(name="ful_message", length = MAX_LOG_SIZE)
+	private String fullMessage;
+	
+	@Column(name="exit_value")
+	private String exitValue;
+	
+	public long getFlvRecordingLogId() {
+		return flvRecordingLogId;
+	}
+	public void setFlvRecordingLogId(long flvRecordingLogId) {
+		this.flvRecordingLogId = flvRecordingLogId;
+	}
+	
+	public FlvRecording getFlvRecording() {
+		return flvRecording;
+	}
+	public void setFlvRecording(FlvRecording flvRecording) {
+		this.flvRecording = flvRecording;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+	
+	public String getMsgType() {
+		return msgType;
+	}
+	public void setMsgType(String msgType) {
+		this.msgType = msgType;
+	}
+	
+	public String getFullMessage() {
+		return fullMessage;
+	}
+	public void setFullMessage(String fullMessage) {
+		this.fullMessage = fullMessage == null || fullMessage.length() < MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
+	}
+	
+	public String getExitValue() {
+		return exitValue;
+	}
+	public void setExitValue(String exitValue) {
+		this.exitValue = exitValue;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
new file mode 100644
index 0000000..bedb5e4
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaData.java
@@ -0,0 +1,292 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.record;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+/**
+ * contains meta data about each stream, for example if it is a screen sharing or
+ * audio/video stream. There is also a {@link Status} value
+ * {@link #streamStatus}, as long as this variable is not set
+ * to {@link Status.STOPPED}, the recording process will not proceed and start to convert all
+ * input sources to a single recording file.
+ * 
+ * @author sebawagner
+ */
+@Entity
+@NamedQueries({ 
+	@NamedQuery(name = "getMetaById", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecordingMetaDataId = :id")
+	, @NamedQuery(name = "getMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId AND c.deleted = false")
+	, @NamedQuery(name = "getAudioMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId "
+			+ "AND c.screenData = false AND c.streamStatus <> :none AND (c.audioOnly = true OR (c.audioOnly = false AND c.videoOnly = false))")
+	, @NamedQuery(name = "getScreenMetaByRecording", query = "SELECT c FROM FlvRecordingMetaData c WHERE c.flvRecording.flvRecordingId = :recordingId"
+			+ " AND c.screenData = true")
+})
+@Table(name = "flvrecording_metadata")
+@Root(name = "flvrecordingmetadata")
+public class FlvRecordingMetaData implements Serializable {
+	private static final long serialVersionUID = 1L;
+	public enum Status {
+		NONE
+		, STARTED
+		, STOPPING
+		, STOPPED
+	}
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(name = "flvRecordingMetaDataId", data = true, required = false)
+	private long flvRecordingMetaDataId;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "flvrecording_id", nullable = true)
+	@ForeignKey(enabled = true)
+	private FlvRecording flvRecording;
+
+	@Column(name = "record_start")
+	@Element(data = true)
+	private Date recordStart;
+
+	@Column(name = "record_end")
+	@Element(data = true, required = false)
+	private Date recordEnd;
+
+	@Column(name = "stream_name")
+	@Element(data = true)
+	private String streamName;
+
+	@Column(name = "free_text_user_name")
+	@Element(data = true)
+	private String freeTextUserName;
+
+	@Column(name = "is_audio_only")
+	@Element(name = "isAudioOnly", data = true)
+	private boolean audioOnly;
+
+	@Column(name = "is_video_only")
+	@Element(name = "isVideoOnly", data = true)
+	private boolean videoOnly;
+
+	@Column(name = "is_screen_data")
+	@Element(name = "isScreenData", data = true)
+	private boolean screenData;
+
+	@Column(name = "inserted_by")
+	@Element(data = true, required = false)
+	private Long insertedBy;
+
+	@Column(name = "inserted")
+	@Element(data = true)
+	private Date inserted;
+
+	@Column(name = "updated")
+	@Element(data = true, required = false)
+	private Date updated;
+
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	@Column(name = "wav_audio_data")
+	@Element(data = true, required = false)
+	private String wavAudioData;
+
+	@Column(name = "full_wav_audio_data")
+	@Element(data = true, required = false)
+	private String fullWavAudioData;
+
+	@Column(name = "audio_is_valid")
+	@Element(name="audioIsValid", data = true, required = false)
+	private boolean audioValid;
+
+	@Column(name = "interiew_pod_id")
+	@Element(data = true, required = false)
+	private Integer interiewPodId;
+
+	/**
+	 * this is only STOPPED when the asynchronous stream writer's have completed to write packets to the file.
+	 * @see BaseStreamWriter#closeStream()
+	 */
+	@Column(name = "stream_status")
+	@Enumerated(EnumType.STRING)
+	private Status streamStatus = Status.NONE;
+
+	public long getFlvRecordingMetaDataId() {
+		return flvRecordingMetaDataId;
+	}
+
+	public void setFlvRecordingMetaDataId(long flvRecordingMetaDataId) {
+		this.flvRecordingMetaDataId = flvRecordingMetaDataId;
+	}
+
+	public FlvRecording getFlvRecording() {
+		return flvRecording;
+	}
+
+	public void setFlvRecording(FlvRecording flvRecording) {
+		this.flvRecording = flvRecording;
+	}
+
+	public Date getRecordStart() {
+		return recordStart;
+	}
+
+	public void setRecordStart(Date recordStart) {
+		this.recordStart = recordStart;
+	}
+
+	public Date getRecordEnd() {
+		return recordEnd;
+	}
+
+	public void setRecordEnd(Date recordEnd) {
+		this.recordEnd = recordEnd;
+	}
+
+	public String getFreeTextUserName() {
+		return freeTextUserName;
+	}
+
+	public void setFreeTextUserName(String freeTextUserName) {
+		this.freeTextUserName = freeTextUserName;
+	}
+
+	public boolean isAudioOnly() {
+		return audioOnly;
+	}
+
+	public void setAudioOnly(boolean audioOnly) {
+		this.audioOnly = audioOnly;
+	}
+
+	public boolean isVideoOnly() {
+		return videoOnly;
+	}
+
+	public void setVideoOnly(boolean videoOnly) {
+		this.videoOnly = videoOnly;
+	}
+
+	public Long getInsertedBy() {
+		return insertedBy;
+	}
+
+	public void setInsertedBy(Long insertedBy) {
+		this.insertedBy = insertedBy;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean isScreenData() {
+		return screenData;
+	}
+
+	public void setScreenData(boolean screenData) {
+		this.screenData = screenData;
+	}
+
+	public String getStreamName() {
+		return streamName;
+	}
+
+	public void setStreamName(String streamName) {
+		this.streamName = streamName;
+	}
+
+	public String getWavAudioData() {
+		return wavAudioData;
+	}
+
+	public void setWavAudioData(String wavAudioData) {
+		this.wavAudioData = wavAudioData;
+	}
+
+	public String getFullWavAudioData() {
+		return fullWavAudioData;
+	}
+
+	public void setFullWavAudioData(String fullWavAudioData) {
+		this.fullWavAudioData = fullWavAudioData;
+	}
+
+	public boolean isAudioValid() {
+		return audioValid;
+	}
+
+	public void setAudioValid(boolean audioValid) {
+		this.audioValid = audioValid;
+	}
+
+	public Integer getInteriewPodId() {
+		return interiewPodId;
+	}
+
+	public void setInteriewPodId(Integer interiewPodId) {
+		this.interiewPodId = interiewPodId;
+	}
+
+	public Status getStreamStatus() {
+		return streamStatus;
+	}
+
+	public void setStreamStatus(Status status) {
+		this.streamStatus = status;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
new file mode 100644
index 0000000..ce84b7c
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingMetaDelta.java
@@ -0,0 +1,220 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.record;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+/**
+ * 
+ *
+ */
+@Entity
+@Table(name = "flvrecording_meta_delta")
+public class FlvRecordingMetaDelta implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long flvRecordingMetaDeltaId;
+	
+	@Column(name="flvrecording_metadata_id")
+	private Long flvRecordingMetaDataId;
+	
+	@Column(name="time_stamp")
+	private Integer timeStamp;
+	
+	@Column(name="delta_time")
+	private Long deltaTime;
+	
+	@Column(name="last_time_stamp")
+	private Long lastTimeStamp;
+	
+	@Column(name="start_time")
+	private Date startTime;
+	
+	@Column(name="current_event_time")
+	private Date currentTime;
+	
+	@Column(name="delta_time_stamp")
+	private Long deltaTimeStamp;
+	
+	@Column(name="missing_time")
+	private Long missingTime;
+	
+	@Column(name="duration")
+	private Integer duration;
+	
+	@Column(name="start_time_stamp")
+	private Integer startTimeStamp;
+	
+	@Column(name="packet_time_stamp")
+	private Integer packetTimeStamp;
+	
+	@Column(name="wave_out_put_name")
+	private String waveOutPutName;
+	
+	@Column(name="data_length_packet")
+	private Integer dataLengthPacket;
+	
+	@Column(name="received_audio_data_length")
+	private Long receivedAudioDataLength;
+	
+	@Column(name="is_end_padding")
+	private boolean endPadding;
+	
+	@Column(name="is_start_padding")
+	private boolean startPadding;
+	
+	@Column(name="debug_status")
+	private String debugStatus;
+	
+	public long getFlvRecordingMetaDeltaId() {
+		return flvRecordingMetaDeltaId;
+	}
+	public void setFlvRecordingMetaDeltaId(long flvRecordingMetaDeltaId) {
+		this.flvRecordingMetaDeltaId = flvRecordingMetaDeltaId;
+	}
+	
+	public Long getFlvRecordingMetaDataId() {
+		return flvRecordingMetaDataId;
+	}
+	public void setFlvRecordingMetaDataId(Long flvRecordingMetaDataId) {
+		this.flvRecordingMetaDataId = flvRecordingMetaDataId;
+	}
+	
+	public Integer getTimeStamp() {
+		return timeStamp;
+	}
+	public void setTimeStamp(Integer timeStamp) {
+		this.timeStamp = timeStamp;
+	}
+	
+	public Long getDeltaTime() {
+		return deltaTime;
+	}
+	public void setDeltaTime(Long deltaTime) {
+		this.deltaTime = deltaTime;
+	}
+	
+	public Long getLastTimeStamp() {
+		return lastTimeStamp;
+	}
+	public void setLastTimeStamp(Long lastTimeStamp) {
+		this.lastTimeStamp = lastTimeStamp;
+	}
+	
+	public Long getDeltaTimeStamp() {
+		return deltaTimeStamp;
+	}
+	public void setDeltaTimeStamp(Long deltaTimeStamp) {
+		this.deltaTimeStamp = deltaTimeStamp;
+	}
+	
+	public Integer getPacketTimeStamp() {
+		return packetTimeStamp;
+	}
+	public void setPacketTimeStamp(Integer packetTimeStamp) {
+		this.packetTimeStamp = packetTimeStamp;
+	}
+	
+	public Integer getStartTimeStamp() {
+		return startTimeStamp;
+	}
+	public void setStartTimeStamp(Integer startTimeStamp) {
+		this.startTimeStamp = startTimeStamp;
+	}
+	
+	public Long getMissingTime() {
+		return missingTime;
+	}
+	public void setMissingTime(Long missingTime) {
+		this.missingTime = missingTime;
+	}
+	
+	public Integer getDuration() {
+		return duration;
+	}
+	public void setDuration(Integer duration) {
+		this.duration = duration;
+	}
+	
+	public Date getStartTime() {
+		return startTime;
+	}
+	public void setStartTime(Date startTime) {
+		this.startTime = startTime;
+	}
+	
+	public Date getCurrentTime() {
+		return currentTime;
+	}
+	public void setCurrentTime(Date currentTime) {
+		this.currentTime = currentTime;
+	}
+	
+	public boolean isEndPadding() {
+		return endPadding;
+	}
+	public void setEndPadding(boolean endPadding) {
+		this.endPadding = endPadding;
+	}
+	
+	public boolean isStartPadding() {
+		return startPadding;
+	}
+	public void setStartPadding(boolean startPadding) {
+		this.startPadding = startPadding;
+	}
+	
+	public String getDebugStatus() {
+		return debugStatus;
+	}
+	public void setDebugStatus(String debugStatus) {
+		this.debugStatus = debugStatus;
+	}
+	
+	public String getWaveOutPutName() {
+		return waveOutPutName;
+	}
+	public void setWaveOutPutName(String waveOutPutName) {
+		this.waveOutPutName = waveOutPutName;
+	}
+	
+	public Integer getDataLengthPacket() {
+		return dataLengthPacket;
+	}
+	public void setDataLengthPacket(Integer dataLengthPacket) {
+		this.dataLengthPacket = dataLengthPacket;
+	}
+	
+	public Long getReceivedAudioDataLength() {
+		return receivedAudioDataLength;
+	}
+	public void setReceivedAudioDataLength(Long receivedAudioDataLength) {
+		this.receivedAudioDataLength = receivedAudioDataLength;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/Client.java b/src/db/java/org/apache/openmeetings/db/entity/room/Client.java
new file mode 100644
index 0000000..9eec190
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/Client.java
@@ -0,0 +1,886 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.CalendarPatterns;
+
+/**
+ * Can be configured to be stored in memory or in database
+ * 
+ * @author sebawagner
+ */
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "deleteAll", query = "DELETE FROM Client"),
+	@NamedQuery(name = "deletedById", query = "DELETE FROM Client c WHERE c.id = :id"),
+	@NamedQuery(name = "deleteClientsByServer", query = "DELETE FROM Client c WHERE c.server = :server"),
+	@NamedQuery(name = "deletedByServerAndStreamId", query = "DELETE FROM Client c WHERE c.server = :server AND c.streamid LIKE :streamid"),
+	@NamedQuery(name = "countClients", query = "SELECT count(c.id) FROM Client c"),
+	@NamedQuery(name = "countClientsByServer", query = "SELECT count(c.id) FROM Client c WHERE c.server = :server"),
+	@NamedQuery(name = "countClientsByServerAndStreamId", query = "SELECT count(c.id) FROM Client c WHERE c.streamid LIKE :streamid AND c.server = :server"),
+	@NamedQuery(name = "getClientByServerAndStreamId", query = "SELECT c FROM Client c WHERE c.streamid LIKE :streamid AND c.server = :server"),
+	@NamedQuery(name = "getClientsByPublicSIDAndServer", query = "SELECT c FROM Client c WHERE c.publicSID LIKE :publicSID AND c.server = :server"),
+	@NamedQuery(name = "getClientsByPublicSID", query = "SELECT c FROM Client c WHERE c.publicSID LIKE :publicSID"),
+	@NamedQuery(name = "getClientsByServer", query = "SELECT c FROM Client c WHERE c.server = :server"),
+	@NamedQuery(name = "getClients", query = "SELECT c FROM Client c"),
+	@NamedQuery(name = "getClientsWithServer", query = "SELECT c FROM Client c LEFT JOIN FETCH c.server"),
+	@NamedQuery(name = "getClientsByUserId", query = "SELECT c FROM Client c WHERE c.server = :server AND c.user_id = :user_id"),
+	@NamedQuery(name = "getClientsByRoomId", query = "SELECT c FROM Client c WHERE c.room_id = :room_id"),
+	@NamedQuery(name = "getRoomsIdsByServer", query = "SELECT c.room_id FROM Client c WHERE c.server = :server GROUP BY c.room_id")
+})
+@Table(name = "client")
+public class Client implements IDataProviderEntity, Serializable {
+	private static final long serialVersionUID = -5980636447877077730L;
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private long id;
+	
+	/**
+	 * @see Client#getUsername()
+	 */
+	@Column(name = "username")
+	private String username = "";
+	
+	/**
+	 * @see Client#getStreamid()
+	 */
+	@Column(name = "streamid")
+	private String streamid = "";
+	
+	/**
+	 * @see Client#getScope()
+	 */
+	@Column(name = "scope")
+	private String scope = "";
+	
+	/**
+	 * @see Client#getVWidth()
+	 */
+	@Column(name = "vwidth")
+	private int vWidth = 0;
+	
+	/**
+	 * @see Client#getVHeight()
+	 */
+	@Column(name = "vheight")
+	private int vHeight = 0;
+	
+	/**
+	 * @see Client#getVX()
+	 */
+	@Column(name = "vx")
+	private int vX = 0;
+	
+	/**
+	 * @see Client#getVY()
+	 */
+	@Column(name = "vy")
+	private int vY = 0;
+	
+	/**
+	 * @see Client#getStreamPublishName()
+	 */
+	@Column(name = "stream_publish_name")
+	private String streamPublishName = "";
+	
+	/**
+	 * @see Client#getPublicSID()
+	 */
+	@Column(name = "public_sid")
+	private String publicSID = "";
+	
+	/**
+	 * @see Client#getIsMod()
+	 */
+	@Column(name = "is_mod")
+	private Boolean isMod = false;
+	
+	/**
+	 * @see Client#getIsSuperModerator()
+	 */
+	@Column(name = "is_supermoderator")
+	private Boolean isSuperModerator = false;
+	
+	/**
+	 * @see Client#getCanDraw()
+	 */
+	@Column(name = "can_draw")
+	private Boolean canDraw = false;
+	
+	/**
+	 * @see Client#getCanShare()
+	 */
+	@Column(name = "can_share")
+	private Boolean canShare = false;
+	
+	/**
+	 * @see Client#getCanRemote()
+	 */
+	@Column(name = "can_remote")
+	private Boolean canRemote = false;
+	
+	/**
+	 * @see Client#getCanGiveAudio()
+	 */
+	@Column(name = "can_giveaudio")
+	private Boolean canGiveAudio = false;
+	
+	/**
+	 * @see Client#getConnectedSince()
+	 */
+	@Column(name = "connected_since")
+	private Date connectedSince;
+	
+	/**
+	 * @see Client#getFormatedDate()
+	 */
+	@Column(name = "formated_date")
+	private String formatedDate;
+	
+	/**
+	 * @see Client#getIsScreenClient()
+	 */
+	@Column(name = "is_screenclient")
+	private Boolean isScreenClient = false;
+	
+	/**
+	 * @see Client#getIsAVClient()
+	 */
+	@Column(name = "is_avclient")
+	private boolean isAVClient = false;
+	
+	/**
+	 * @see Client#getUsercolor()
+	 */
+	@Column(name = "usercolor")
+	private String usercolor;
+	
+	/**
+	 * @see Client#getUserpos()
+	 */
+	@Column(name = "userpos")
+	private Integer userpos;
+	
+	/**
+	 * @see Client#getUserip()
+	 */
+	@Column(name = "userip")
+	private String userip;
+	
+	/**
+	 * @see Client#getUserport()
+	 */
+	@Column(name = "userport")
+	private int userport;
+	
+	/**
+	 * @see Client#getRoom_id()
+	 */
+	@Column(name = "room_id")
+	private Long room_id;
+	
+	/**
+	 * @see Client#getRoomEnter()
+	 */
+	@Column(name = "room_enter")
+	private Date roomEnter = null;
+	
+	/**
+	 * @see Client#getBroadCastID()
+	 */
+	@Column(name = "broadcast_id")
+	private long broadCastID = -2;
+	
+	/**
+	 * @see Client#getUser_id()
+	 */
+	@Column(name = "user_id")
+	private Long user_id = null;
+	
+	/**
+	 * @see Client#getFirstname()
+	 */
+	@Column(name = "firstname")
+	private String firstname = "";
+	
+	/**
+	 * @see Client#getLastname()
+	 */
+	@Column(name = "lastname")
+	private String lastname = "";
+	
+	/**
+	 * @see Client#getMail()
+	 */
+	@Column(name = "email")
+	private String email;
+	
+	/**
+	 * @see Client#getLastLogin()
+	 */
+	@Column(name = "last_login")
+	private String lastLogin;
+	
+	/**
+	 * @see Client#getOfficial_code()
+	 */
+	@Column(name = "official_code")
+	private String official_code;
+	
+	/**
+	 * @see Client#getPicture_uri()
+	 */
+	@Column(name = "picture_uri")
+	private String picture_uri;
+	
+	/**
+	 * @see Client#getLanguage()
+	 */
+	@Column(name = "language")
+	private String language = "";
+	
+	/**
+	 * @see Client#getAvsettings()
+	 */
+	@Column(name = "avsettings")
+	private String avsettings = "";
+	
+	/**
+	 * @see Client#getSwfurl()
+	 */
+	// FIXME: Move to {@link ClientSession}
+	@Column(name = "swfurl")
+	private String swfurl;
+	
+	/**
+	 * @see Client#getIsRecording()
+	 */
+	@Column(name = "is_recording")
+	private Boolean isRecording = false;
+	
+	/**
+	 * @see Client#getRoomRecordingName()
+	 */
+	@Column(name = "room_recording_name")
+	private String roomRecordingName;
+	
+	/**
+	 * @see Client#getFlvRecordingId()
+	 */
+	@Column(name = "flvrecording_id")
+	private Long flvRecordingId;
+	
+	/**
+	 * @see Client#getFlvRecordingMetaDataId()
+	 */
+	@Column(name = "flvrecordingmetadata_id")
+	private Long flvRecordingMetaDataId;
+	
+	/**
+	 * @see Client#getOrganization_id()
+	 */
+	@Column(name = "organization_id")
+	private Long organization_id;
+	
+	/**
+	 * @see Client#isStartRecording()
+	 */
+	@Column(name = "start_recording")
+	private boolean startRecording = false;
+	
+	/**
+	 * @see Client#isStartStreaming()
+	 */
+	@Column(name = "start_streaming")
+	private boolean startStreaming = false;
+	
+	/**
+	 * @see Client#isScreenPublishStarted()
+	 */
+	@Column(name = "screen_publish_started")
+	private boolean screenPublishStarted = false;
+	
+	/**
+	 * @see Client#isStreamPublishStarted()
+	 */
+	@Column(name = "stream_publish_started")
+	private boolean streamPublishStarted = false;
+	
+	/**
+	 * @see Client#getIsBroadcasting()
+	 */
+	@Column(name = "is_broadcasting")
+	private Boolean isBroadcasting = false;
+	
+	/**
+	 * @see Client#getExternalUserId()
+	 */
+	@Column(name = "external_user_id")
+	private String externalUserId;
+	
+	/**
+	 * @see Client#getExternalUserType()
+	 */
+	@Column(name = "external_user_type")
+	private String externalUserType;
+	
+	/**
+	 * @see Client#getInterviewPodId()
+	 */
+	@Column(name = "interview_pod_id")
+	private Integer interviewPodId = null;
+	
+	/**
+	 * @see Client#isAllowRecording()
+	 */
+	@Column(name = "allow_recording")
+	private boolean allowRecording = true;
+	
+	/**
+	 * @see Client#getZombieCheckFlag()
+	 */
+	@Column(name = "zombie_check_flag")
+	private Boolean zombieCheckFlag = false;
+	
+	/**
+	 * @see Client#getMicMuted()
+	 */
+	@Column(name = "mic_muted")
+	private Boolean micMuted = false;
+	
+	/**
+	 * @see Client#isSipTransport()
+	 */
+	@Column(name = "sip_transport")
+	private boolean sipTransport = false;
+	
+	@Column(name = "mobile")
+	private boolean mobile = false;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "server_id")
+	private Server server;
+    
+	public Client() {}
+    
+	public Client(String streamid, String publicSID, Long room_id,
+			Long user_id, String firstname, String lastname, boolean isAVClient,
+			String username, String connectedSince, String scope) {
+		super();
+		this.streamid = streamid;
+		this.publicSID = publicSID;
+		this.room_id = room_id;
+		this.user_id = user_id;
+		this.firstname = firstname;
+		this.lastname = lastname;
+		this.isAVClient = isAVClient;
+		this.username = username;
+		this.connectedSince = CalendarPatterns.parseDateWithHour(connectedSince);
+		this.scope = scope;
+	}
+
+	public void setUserObject(Long user_id, String username, String firstname, String lastname) {
+		this.user_id = user_id;
+		this.username = username;
+		this.firstname = firstname;
+		this.lastname = lastname;
+	}
+
+	public void setUserObject(String username, String firstname, String lastname) {
+		this.username = username;
+		this.firstname = firstname;
+		this.lastname = lastname;
+	}
+	
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public Date getConnectedSince() {
+		return connectedSince;
+	}
+
+	public void setConnectedSince(Date connectedSince) {
+		this.connectedSince = connectedSince;
+	}
+
+	public Boolean getIsMod() {
+		return isMod;
+	}
+
+	public void setIsMod(Boolean isMod) {
+		this.isMod = isMod;
+	}
+	
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getStreamid() {
+		return streamid;
+	}
+
+	public void setStreamid(String streamid) {
+		this.streamid = streamid;
+	}
+
+	public String getScope() {
+		return scope;
+	}
+
+	public void setScope(String scope) {
+		this.scope = scope;
+	}
+
+	public String getFormatedDate() {
+		return formatedDate;
+	}
+
+	public void setFormatedDate(String formatedDate) {
+		this.formatedDate = formatedDate;
+	}
+
+	public String getUsercolor() {
+		return usercolor;
+	}
+
+	public void setUsercolor(String usercolor) {
+		this.usercolor = usercolor;
+	}
+
+	public Integer getUserpos() {
+		return userpos;
+	}
+
+	public void setUserpos(Integer userpos) {
+		this.userpos = userpos;
+	}
+
+	public String getUserip() {
+		return userip;
+	}
+
+	public void setUserip(String userip) {
+		this.userip = userip;
+	}
+
+	public String getSwfurl() {
+		return swfurl;
+	}
+
+	public void setSwfurl(String swfurl) {
+		this.swfurl = swfurl;
+	}
+
+	public int getUserport() {
+		return userport;
+	}
+
+	public void setUserport(int userport) {
+		this.userport = userport;
+	}
+
+	public String getFirstname() {
+		return firstname;
+	}
+
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+
+	public String getLanguage() {
+		return language;
+	}
+
+	public void setLanguage(String language) {
+		this.language = language;
+	}
+
+	public String getLastLogin() {
+		return lastLogin;
+	}
+
+	public void setLastLogin(String lastLogin) {
+		this.lastLogin = lastLogin;
+	}
+
+	public String getLastname() {
+		return lastname;
+	}
+
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getOfficial_code() {
+		return official_code;
+	}
+
+	public void setOfficial_code(String official_code) {
+		this.official_code = official_code;
+	}
+
+	public String getPicture_uri() {
+		return picture_uri;
+	}
+
+	public void setPicture_uri(String picture_uri) {
+		this.picture_uri = picture_uri;
+	}
+
+	public Long getUser_id() {
+		return user_id;
+	}
+
+	public void setUser_id(Long user_id) {
+		this.user_id = user_id;
+	}
+
+	public Long getRoom_id() {
+		return room_id;
+	}
+
+	public void setRoom_id(Long room_id) {
+		this.room_id = room_id;
+	}
+
+	public Date getRoomEnter() {
+		return roomEnter;
+	}
+
+	public void setRoomEnter(Date roomEnter) {
+		this.roomEnter = roomEnter;
+	}
+
+	public Boolean getIsRecording() {
+		return isRecording;
+	}
+
+	public void setIsRecording(Boolean isRecording) {
+		this.isRecording = isRecording;
+	}
+
+	public String getRoomRecordingName() {
+		return roomRecordingName;
+	}
+
+	public void setRoomRecordingName(String roomRecordingName) {
+		this.roomRecordingName = roomRecordingName;
+	}
+
+	public String getAvsettings() {
+		return avsettings;
+	}
+
+	public void setAvsettings(String avsettings) {
+		this.avsettings = avsettings;
+	}
+
+	public long getBroadCastID() {
+		return broadCastID;
+	}
+
+	public void setBroadCastID(long broadCastID) {
+		this.broadCastID = broadCastID;
+	}
+
+	public String getPublicSID() {
+		return publicSID;
+	}
+	
+	public void setPublicSID(String publicSID) {
+		this.publicSID = publicSID;
+	}
+
+	public Boolean getZombieCheckFlag() {
+		return zombieCheckFlag;
+	}
+	
+	public void setZombieCheckFlag(Boolean zombieCheckFlag) {
+		this.zombieCheckFlag = zombieCheckFlag;
+	}
+
+	public Boolean getMicMuted() {
+		return micMuted;
+	}
+
+	public void setMicMuted(Boolean micMuted) {
+		this.micMuted = micMuted;
+	}
+
+	public Boolean getCanDraw() {
+		return canDraw;
+	}
+
+	public void setCanDraw(Boolean canDraw) {
+		this.canDraw = canDraw;
+	}
+
+	public Boolean getIsBroadcasting() {
+		return isBroadcasting;
+	}
+
+	public void setIsBroadcasting(Boolean isBroadcasting) {
+		this.isBroadcasting = isBroadcasting;
+	}
+
+	public Boolean getCanShare() {
+		return canShare;
+	}
+
+	public void setCanShare(Boolean canShare) {
+		this.canShare = canShare;
+	}
+
+	public String getExternalUserId() {
+		return externalUserId;
+	}
+
+	public void setExternalUserId(String externalUserId) {
+		this.externalUserId = externalUserId;
+	}
+
+	public String getExternalUserType() {
+		return externalUserType;
+	}
+
+	public void setExternalUserType(String externalUserType) {
+		this.externalUserType = externalUserType;
+	}
+
+	public Boolean getIsSuperModerator() {
+		return isSuperModerator;
+	}
+
+	public void setIsSuperModerator(Boolean isSuperModerator) {
+		this.isSuperModerator = isSuperModerator;
+	}
+
+	public Boolean getIsScreenClient() {
+		return isScreenClient;
+	}
+
+	public void setIsScreenClient(Boolean isScreenClient) {
+		this.isScreenClient = isScreenClient;
+	}
+
+	public int getVWidth() {
+		return vWidth;
+	}
+
+	public void setVWidth(int width) {
+		vWidth = width;
+	}
+
+	public int getVHeight() {
+		return vHeight;
+	}
+
+	public void setVHeight(int height) {
+		vHeight = height;
+	}
+
+	public int getVX() {
+		return vX;
+	}
+
+	public void setVX(int vx) {
+		vX = vx;
+	}
+
+	public int getVY() {
+		return vY;
+	}
+
+	public void setVY(int vy) {
+		vY = vy;
+	}
+
+	public String getStreamPublishName() {
+		return streamPublishName;
+	}
+
+	public void setStreamPublishName(String streamPublishName) {
+		this.streamPublishName = streamPublishName;
+	}
+
+	public Long getFlvRecordingId() {
+		return flvRecordingId;
+	}
+
+	public void setFlvRecordingId(Long flvRecordingId) {
+		this.flvRecordingId = flvRecordingId;
+	}
+
+	public Long getFlvRecordingMetaDataId() {
+		return flvRecordingMetaDataId;
+	}
+
+	public void setFlvRecordingMetaDataId(Long flvRecordingMetaDataId) {
+		this.flvRecordingMetaDataId = flvRecordingMetaDataId;
+	}
+
+	public boolean isScreenPublishStarted() {
+		return screenPublishStarted;
+	}
+
+	public void setScreenPublishStarted(boolean screenPublishStarted) {
+		this.screenPublishStarted = screenPublishStarted;
+	}
+
+	public Long getOrganization_id() {
+		return organization_id;
+	}
+
+	public void setOrganization_id(Long organization_id) {
+		this.organization_id = organization_id;
+	}
+
+	public boolean isStartRecording() {
+		return startRecording;
+	}
+
+	public void setStartRecording(boolean startRecording) {
+		this.startRecording = startRecording;
+	}
+
+	public boolean isStartStreaming() {
+		return startStreaming;
+	}
+
+	public void setStartStreaming(boolean startStreaming) {
+		this.startStreaming = startStreaming;
+	}
+
+	public Integer getInterviewPodId() {
+		return interviewPodId;
+	}
+
+	public void setInterviewPodId(Integer interviewPodId) {
+		this.interviewPodId = interviewPodId;
+	}
+
+	public Boolean getCanRemote() {
+		return canRemote;
+	}
+
+	public void setCanRemote(Boolean canRemote) {
+		this.canRemote = canRemote;
+	}
+
+	public Boolean getCanGiveAudio() {
+		return canGiveAudio;
+	}
+
+	public void setCanGiveAudio(Boolean canGiveAudio) {
+		this.canGiveAudio = canGiveAudio;
+	}
+
+	public boolean isAllowRecording() {
+		return allowRecording;
+	}
+
+	public void setAllowRecording(boolean allowRecording) {
+		this.allowRecording = allowRecording;
+	}
+
+	public boolean getIsAVClient() {
+		return isAVClient;
+	}
+
+	public void setIsAVClient(boolean isAVClient) {
+		this.isAVClient = isAVClient;
+	}
+
+	public boolean isStreamPublishStarted() {
+		return streamPublishStarted;
+	}
+
+	public void setStreamPublishStarted(boolean streamPublishStarted) {
+		this.streamPublishStarted = streamPublishStarted;
+	}
+
+	public boolean isSipTransport() {
+		return sipTransport;
+	}
+
+	public void setSipTransport(boolean sipTransport) {
+		this.sipTransport = sipTransport;
+	}
+	
+	public Server getServer() {
+		return server;
+	}
+
+	public void setServer(Server server) {
+		this.server = server;
+	}
+
+	public boolean isMobile() {
+		return mobile;
+	}
+
+	public void setMobile(boolean mobile) {
+		this.mobile = mobile;
+	}
+
+	@Override
+	public String toString() {
+		return "Client [streamid=" + streamid + ", publicSID=" + publicSID + ", isScreenClient=" + isScreenClient
+				+ ", isAVClient=" + isAVClient + ", isMobile = " + mobile + ", room_id=" + room_id + ", broadCastID=" + broadCastID + ", user_id="
+				+ user_id + ", avsettings=" + avsettings + ", isRecording=" + isRecording + ", flvRecordingId="
+				+ flvRecordingId + ", flvRecordingMetaDataId=" + flvRecordingMetaDataId + ", screenPublishStarted="
+				+ screenPublishStarted + ", interviewPodId=" + interviewPodId + ", server=" + server + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/Invitation.java b/src/db/java/org/apache/openmeetings/db/entity/room/Invitation.java
new file mode 100644
index 0000000..bf62c65
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/Invitation.java
@@ -0,0 +1,255 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.user.User;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getInvitationbyId", query = "SELECT i FROM Invitation i "
+					+ "WHERE i.deleted = false AND i.id = :invid"),
+	@NamedQuery(name = "getInvitationByHashCode", query = "SELECT i FROM Invitation i "
+					+ "where i.hash LIKE :hashCode AND i.deleted = false"),
+	@NamedQuery(name = "getInvitationByAppointment", query = "SELECT i FROM Invitation i "
+					+ "WHERE i.appointment.id = :appointmentId  ")
+})
+@Table(name = "invitations")
+public class Invitation implements Serializable {
+	private static final long serialVersionUID = 1153321347974705506L;
+
+	public enum Valid {
+		OneTime
+		, Period
+		, Endless;
+		
+		public static Valid fromInt(int valid) {
+			return valid == 1 ? Endless : (valid == 2 ? Period : OneTime);
+		}
+	}
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long id;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "invited_by", nullable = true)
+	@ForeignKey(enabled = true)
+	private User invitedBy;
+	
+	@Column(name = "inserted")
+	private Date inserted;
+	
+	@Column(name = "updated")
+	private Date updated;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "room_id", nullable = true)
+	@ForeignKey(enabled = true)
+	private Room room;
+
+	// the hash for the link
+	@Column(name = "hash")
+	private String hash;
+	
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "invitee_id", nullable = true)
+	@ForeignKey(enabled = true)
+	private User invitee;
+
+	@Column(name = "password_protected")
+	private boolean passwordProtected;
+	
+	@Column(name = "password")
+	private String password;
+
+	// Invitations by Time are only valid between the validFrom validTo
+	// TimeStamp
+	@Column(name = "valid")
+	@Enumerated(EnumType.STRING)
+	private Valid valid = Valid.Period;
+	
+	@Column(name = "valid_from")
+	private Date validFrom;
+	
+	@Column(name = "valid_to")
+	private Date validTo;
+	
+	@Column(name = "was_used")
+	private boolean used;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "appointment_id", nullable = true)
+	@ForeignKey(enabled = true)
+	private Appointment appointment;
+
+	//variable used in Flash
+	private boolean allowEntry = true;
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Room getRoom() {
+		return room;
+	}
+
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	public User getInvitedBy() {
+		return invitedBy;
+	}
+
+	public void setInvitedBy(User invitedBy) {
+		this.invitedBy = invitedBy;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getHash() {
+		return hash;
+	}
+
+	public void setHash(String hash) {
+		this.hash = hash;
+	}
+
+	public User getInvitee() {
+		return invitee;
+	}
+
+	public void setInvitee(User invitee) {
+		this.invitee = invitee;
+	}
+
+	public boolean isPasswordProtected() {
+		return passwordProtected;
+	}
+
+	public void setPasswordProtected(boolean passwordProtected) {
+		this.passwordProtected = passwordProtected;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public Date getValidFrom() {
+		return validFrom;
+	}
+
+	public void setValidFrom(Date validFrom) {
+		this.validFrom = validFrom;
+	}
+
+	public Date getValidTo() {
+		return validTo;
+	}
+
+	public void setValidTo(Date validTo) {
+		this.validTo = validTo;
+	}
+
+	public boolean isUsed() {
+		return used;
+	}
+
+	public void setUsed(boolean used) {
+		this.used = used;
+	}
+
+	public Appointment getAppointment() {
+		return appointment;
+	}
+
+	public void setAppointment(Appointment appointment) {
+		this.appointment = appointment;
+	}
+
+	public Valid getValid() {
+		return valid;
+	}
+
+	public void setValid(Valid valid) {
+		this.valid = valid;
+	}
+	
+	public boolean isAllowEntry() {
+		return allowEntry;
+	}
+
+	public void setAllowEntry(boolean allowEntry) {
+		this.allowEntry = allowEntry;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/PollType.java b/src/db/java/org/apache/openmeetings/db/entity/room/PollType.java
new file mode 100644
index 0000000..0ed70dc
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/PollType.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getPollTypes", query = "SELECT pt FROM PollType pt"),
+	@NamedQuery(name = "getPollType", query = "SELECT pt FROM PollType pt " +
+			"WHERE pt.pollTypesId = :pollTypesId")		
+})
+@Table(name = "poll_types")
+public class PollType {
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long pollTypesId;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "fieldvalues_id")
+	@ForeignKey(enabled = true)
+	private Fieldvalues label;
+	
+	@Column(name = "numeric_answer")
+	private Boolean isNumericAnswer;
+	
+	/**
+	 * @return the pollTypesId
+	 */
+	public Long getPollTypesId() {
+		return pollTypesId;
+	}
+	/**
+	 * @param pollTypesId the pollTypesId to set
+	 */
+	public void setPollTypesId(Long pollTypesId) {
+		this.pollTypesId = pollTypesId;
+	}
+	/**
+	 * @return the isNumericAnswer
+	 */
+	public Boolean getIsNumericAnswer() {
+		return isNumericAnswer;
+	}
+	/**
+	 * @param isNumericAnswer the isNumericAnswer to set
+	 */
+	public void setIsNumericAnswer(Boolean isNumericAnswer) {
+		this.isNumericAnswer = isNumericAnswer;
+	}
+	/**
+	 * @return the pollTypeLabelid
+	 */
+	public Fieldvalues getLabel() {
+		return label;
+	}
+	/**
+	 * @param pollTypeLabelid the pollTypeLabelid to set
+	 */
+	public void setLabel(Fieldvalues label) {
+		this.label = label;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/Room.java b/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
new file mode 100644
index 0000000..ef1d829
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -0,0 +1,588 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openjpa.persistence.ElementDependent;
+import org.apache.openjpa.persistence.FetchAttribute;
+import org.apache.openjpa.persistence.FetchGroup;
+import org.apache.openjpa.persistence.FetchGroups;
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+@Entity
+@FetchGroups({
+	@FetchGroup(name = "roomModerators", attributes = { @FetchAttribute(name = "moderators"), @FetchAttribute(name = "roomOrganisations") })
+})
+@NamedQueries({
+	@NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false"),
+	@NamedQuery(name = "getPublicRooms", query = "SELECT r from Room r WHERE r.ispublic = true and r.deleted = false and r.roomtype.roomtypes_id = :typeId"),
+	@NamedQuery(name = "getRoomByOwnerAndTypeId", query = "select c from Room as c "
+					+ "where c.ownerId = :ownerId "
+					+ "AND c.roomtype.roomtypes_id = :roomtypesId "
+					+ "AND c.deleted = false"),	
+										
+	@NamedQuery(name = "selectMaxFromRooms", query = "select count(c.rooms_id) from Room c "
+			+ "where c.deleted = false AND c.name LIKE :search "),
+	@NamedQuery(name = "getRoomByExternalId", query = "select c from Room as c JOIN c.roomtype as rt "
+			+ "where c.externalRoomId = :externalRoomId AND c.externalRoomType = :externalRoomType "
+			+ "AND rt.roomtypes_id = :roomtypes_id AND c.deleted = false"),
+	@NamedQuery(name = "getPublicRoomsOrdered", query = "SELECT r from Room r WHERE r.ispublic= true AND r.deleted= false AND r.appointment = false ORDER BY r.name ASC"),
+	@NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.rooms_id = :id"),
+	@NamedQuery(name = "getSipRoomIdsByIds", query = "SELECT r.rooms_id FROM Room r WHERE r.deleted = false AND r.sipEnabled = true AND r.rooms_id IN :ids"),
+	@NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE r.deleted = false"),
+	@NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r ORDER BY r.rooms_id"),
+	@NamedQuery(name = "getRoomsCapacityByIds", query = "SELECT SUM(r.numberOfPartizipants) FROM Room r WHERE r.deleted = false AND r.rooms_id IN :ids")
+	, @NamedQuery(name = "getOrganisationRooms", query = "SELECT DISTINCT c.room FROM RoomOrganisation c LEFT JOIN FETCH c.room "
+				+ "WHERE c.organisation.organisation_id = :orgId AND c.deleted = false AND c.room.deleted = false AND c.room.appointment = false "
+				+ "AND c.organisation.deleted = false ORDER BY c.room.name ASC")
+})
+@Table(name = "room")
+@Root(name = "room")
+public class Room implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true, required=false)
+	private Long rooms_id;
+
+	@Column(name = "name")
+	@Element(data = true, required=false)
+	private String name;
+
+	@Lob
+	@Column(name = "comment_field")
+	@Element(data = true, required = false)
+	private String comment;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "roomtypes_id")
+	@ForeignKey(enabled = true)
+	@Element(name = "roomtypeId", data = true, required = false)
+	private RoomType roomtype;
+
+	@Column(name = "starttime")
+	private Date starttime;
+
+	@Column(name = "updatetime")
+	private Date updatetime;
+
+	@Column(name = "deleted")
+	@Element(data = true)
+	private boolean deleted;
+
+	@Column(name = "ispublic")
+	@Element(name = "ispublic", data = true, required = false)
+	private boolean ispublic;
+
+	@Column(name = "numberOfPartizipants")
+	@Element(data = true, required = false)
+	private Long numberOfPartizipants = new Long(4);
+
+	@Column(name = "appointment")
+	@Element(data = true, required = false)
+	private boolean appointment;
+
+	// Vars to simulate external Room
+	@Column(name = "externalRoomId")
+	@Element(data = true, required = false)
+	private Long externalRoomId;
+
+	@Column(name = "externalRoomType")
+	@Element(data = true, required = false)
+	private String externalRoomType;
+
+	@Column(name = "isdemoroom")
+	@Element(data = true, required = false)
+	private Boolean isDemoRoom;
+
+	@Column(name = "demo_time")
+	@Element(data = true, required = false)
+	private Integer demoTime; // In Seconds
+
+	// If this is true all participants of a meeting have to wait for the
+	// moderator to come into the room
+	@Column(name = "ismoderatedroom")
+	@Element(name="isModeratedRoom", data = true, required = false)
+	private boolean isModeratedRoom;
+
+	@Column(name = "allow_user_questions")
+	@Element(data = true, required = false)
+	private Boolean allowUserQuestions;
+
+	@Column(name = "is_audio_only")
+	@Element(name = "isAudioOnly", data = true, required = false)
+	private Boolean isAudioOnly;
+	
+	@Column(name = "allow_font_styles", nullable = false)
+	@Element(data = true, required = false)
+	private boolean allowFontStyles = false;
+
+	@Column(name = "is_closed")
+	@Element(data = true, required = false)
+	private Boolean isClosed;
+
+	@Column(name = "redirect_url")
+	@Element(data = true, required = false)
+	private String redirectURL;
+
+	@Column(name = "owner_id")
+	@Element(name = "ownerid", data = true, required = false)
+	private Long ownerId; // Those are the rooms from the myrooms section
+
+	@Column(name = "wait_for_recording")
+	@Element(data = true, required = false)
+	private Boolean waitForRecording; // Show warning that user has to start
+										// recording
+
+	@Column(name = "allow_recording")
+	@Element(name = "allowRecording", data = true, required = false)
+	private boolean allowRecording = true; // Show or show not the recording option in a conference room
+	/**
+	 * Layout of Room
+	 */
+	@Column(name = "hide_top_bar")
+	@Element(data = true, required = false)
+	private Boolean hideTopBar = false;
+
+	@Column(name = "hide_chat")
+	@Element(name = "hideChat", data = true, required = false)
+	private Boolean hideChat = false;
+
+	@Column(name = "hide_activities_and_actions")
+	@Element(name = "hideActivitiesAndActions", data = true, required = false)
+	private Boolean hideActivitiesAndActions = false;
+
+	@Column(name = "hide_files_explorer")
+	@Element(data = true, required = false)
+	private Boolean hideFilesExplorer = false;
+
+	@Column(name = "hide_actions_menu")
+	@Element(data = true, required = false)
+	private Boolean hideActionsMenu = false;
+
+	@Column(name = "hide_screen_sharing")
+	@Element(data = true, required = false)
+	private Boolean hideScreenSharing = false;
+
+	@Column(name = "hide_whiteboard")
+	@Element(data = true, required = false)
+	private Boolean hideWhiteboard = false;
+
+	@Column(name = "show_microphone_status")
+	@Element(data = true, required = false)
+	private Boolean showMicrophoneStatus = false;
+
+	@Column(name = "chat_moderated")
+	@Element(data = true, required = false)
+	private Boolean chatModerated = false;
+
+	@Column(name = "chat_opened")
+	@Element(data = true, required = false)
+	private boolean chatOpened = false;
+
+	@Column(name = "files_opened")
+	@Element(data = true, required = false)
+	private boolean filesOpened = false;
+
+	@Column(name = "auto_video_select")
+	@Element(data = true, required = false)
+	private boolean autoVideoSelect = false;
+
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "roomId")
+	@ForeignKey(enabled = true)
+	@ElementList(name = "room_moderators", required=false)
+	private List<RoomModerator> moderators = new ArrayList<RoomModerator>();
+
+	@Column(name = "sip_enabled")
+	@Element(data = true, required = false)
+	private boolean sipEnabled;
+	
+	@Column(name = "confno")
+	@Element(data = true, required = false)
+	private String confno;
+	
+	@Column(name = "pin")
+	@Element(data = true, required = false)
+	private String pin;
+	
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "rooms_id", insertable = true, updatable = true)
+	@ElementDependent
+	@org.simpleframework.xml.Transient
+	private List<RoomOrganisation> roomOrganisations = new ArrayList<RoomOrganisation>();
+
+	@Transient
+	private List<Client> currentusers;
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getRooms_id() {
+		return rooms_id;
+	}
+
+	public void setRooms_id(Long rooms_id) {
+		this.rooms_id = rooms_id;
+	}
+
+	public RoomType getRoomtype() {
+		return roomtype;
+	}
+
+	public void setRoomtype(RoomType roomtype) {
+		this.roomtype = roomtype;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Boolean getIspublic() {
+		return ispublic;
+	}
+
+	public void setIspublic(Boolean ispublic) {
+		this.ispublic = ispublic;
+	}
+
+	public List<Client> getCurrentusers() {
+		return currentusers;
+	}
+
+	public void setCurrentusers(List<Client> currentusers) {
+		this.currentusers = currentusers;
+	}
+
+	public Long getNumberOfPartizipants() {
+		return numberOfPartizipants;
+	}
+
+	public void setNumberOfPartizipants(Long numberOfPartizipants) {
+		this.numberOfPartizipants = numberOfPartizipants;
+	}
+
+	public Boolean getAppointment() {
+		return appointment;
+	}
+
+	public void setAppointment(Boolean appointment) {
+		this.appointment = appointment;
+	}
+
+	public Boolean getIsDemoRoom() {
+		return isDemoRoom;
+	}
+
+	public void setIsDemoRoom(Boolean isDemoRoom) {
+		this.isDemoRoom = isDemoRoom;
+	}
+
+	public Integer getDemoTime() {
+		return demoTime;
+	}
+
+	public void setDemoTime(Integer demoTime) {
+		this.demoTime = demoTime;
+	}
+
+	public Boolean getIsModeratedRoom() {
+		return isModeratedRoom;
+	}
+
+	public void setIsModeratedRoom(Boolean isModeratedRoom) {
+		this.isModeratedRoom = isModeratedRoom;
+	}
+
+	public Long getExternalRoomId() {
+		return externalRoomId;
+	}
+
+	public void setExternalRoomId(Long externalRoomId) {
+		this.externalRoomId = externalRoomId;
+	}
+
+	public String getExternalRoomType() {
+		return externalRoomType;
+	}
+
+	public void setExternalRoomType(String externalRoomType) {
+		this.externalRoomType = externalRoomType;
+	}
+
+	public Boolean getAllowUserQuestions() {
+		return allowUserQuestions;
+	}
+
+	public void setAllowUserQuestions(Boolean allowUserQuestions) {
+		this.allowUserQuestions = allowUserQuestions;
+	}
+
+	public Boolean getIsAudioOnly() {
+		return isAudioOnly;
+	}
+
+	public void setIsAudioOnly(Boolean isAudioOnly) {
+		this.isAudioOnly = isAudioOnly;
+	}
+
+	public boolean getAllowFontStyles() {
+		return allowFontStyles;
+	}
+
+	public void setAllowFontStyles(boolean allowFontStyles) {
+		this.allowFontStyles = allowFontStyles;
+	}
+
+	public Boolean getIsClosed() {
+		return isClosed;
+	}
+
+	public void setIsClosed(Boolean isClosed) {
+		this.isClosed = isClosed;
+	}
+
+	public String getRedirectURL() {
+		return redirectURL;
+	}
+
+	public void setRedirectURL(String redirectURL) {
+		this.redirectURL = redirectURL;
+	}
+
+	public Long getOwnerId() {
+		return ownerId;
+	}
+
+	public void setOwnerId(Long ownerId) {
+		this.ownerId = ownerId;
+	}
+
+	public Boolean getWaitForRecording() {
+		return waitForRecording;
+	}
+
+	public void setWaitForRecording(Boolean waitForRecording) {
+		this.waitForRecording = waitForRecording;
+	}
+
+	public boolean isAllowRecording() {
+		return allowRecording;
+	}
+
+	public void setAllowRecording(boolean allowRecording) {
+		this.allowRecording = allowRecording;
+	}
+
+	public Boolean getHideTopBar() {
+		return hideTopBar;
+	}
+
+	public void setHideTopBar(Boolean hideTopBar) {
+		this.hideTopBar = hideTopBar;
+	}
+
+	public Boolean getHideChat() {
+		return hideChat;
+	}
+
+	public void setHideChat(Boolean hideChat) {
+		this.hideChat = hideChat;
+	}
+
+	public Boolean getHideActivitiesAndActions() {
+		return hideActivitiesAndActions;
+	}
+
+	public void setHideActivitiesAndActions(Boolean hideActivitiesAndActions) {
+		this.hideActivitiesAndActions = hideActivitiesAndActions;
+	}
+
+	public Boolean getHideFilesExplorer() {
+		return hideFilesExplorer;
+	}
+
+	public void setHideFilesExplorer(Boolean hideFilesExplorer) {
+		this.hideFilesExplorer = hideFilesExplorer;
+	}
+
+	public Boolean getHideActionsMenu() {
+		return hideActionsMenu;
+	}
+
+	public void setHideActionsMenu(Boolean hideActionsMenu) {
+		this.hideActionsMenu = hideActionsMenu;
+	}
+
+	public Boolean getHideScreenSharing() {
+		return hideScreenSharing;
+	}
+
+	public void setHideScreenSharing(Boolean hideScreenSharing) {
+		this.hideScreenSharing = hideScreenSharing;
+	}
+
+	public Boolean getHideWhiteboard() {
+		return hideWhiteboard;
+	}
+
+	public void setHideWhiteboard(Boolean hideWhiteboard) {
+		this.hideWhiteboard = hideWhiteboard;
+	}
+
+	public Boolean getShowMicrophoneStatus() {
+		return showMicrophoneStatus;
+	}
+
+	public void setShowMicrophoneStatus(Boolean showMicrophoneStatus) {
+		this.showMicrophoneStatus = showMicrophoneStatus;
+	}
+
+	public List<RoomModerator> getModerators() {
+		return moderators;
+	}
+
+	public void setModerators(List<RoomModerator> moderators) {
+		if (moderators != null) {
+			this.moderators = moderators;
+		}
+	}
+
+	public Boolean getChatModerated() {
+		return chatModerated;
+	}
+
+	public void setChatModerated(Boolean chatModerated) {
+		this.chatModerated = chatModerated;
+	}
+
+	public List<RoomOrganisation> getRoomOrganisations() {
+		return roomOrganisations;
+	}
+
+	public void setRoomOrganisations(List<RoomOrganisation> roomOrganisations) {
+		this.roomOrganisations = roomOrganisations;
+	}
+
+	public boolean isChatOpened() {
+		return chatOpened;
+	}
+
+	public void setChatOpened(boolean chatOpened) {
+		this.chatOpened = chatOpened;
+	}
+
+	public boolean isFilesOpened() {
+		return filesOpened;
+	}
+
+	public void setFilesOpened(boolean filesOpened) {
+		this.filesOpened = filesOpened;
+	}
+
+	public boolean isAutoVideoSelect() {
+		return autoVideoSelect;
+	}
+
+	public void setAutoVideoSelect(boolean autoVideoSelect) {
+		this.autoVideoSelect = autoVideoSelect;
+	}
+
+	public boolean isSipEnabled() {
+		return sipEnabled;
+	}
+
+	public void setSipEnabled(boolean sipEnabled) {
+		this.sipEnabled = sipEnabled;
+	}
+
+	public String getConfno() {
+		return confno;
+	}
+
+	public void setConfno(String confno) {
+		this.confno = confno;
+	}
+
+	public String getPin() {
+		return pin;
+	}
+
+	public void setPin(String pin) {
+		this.pin = pin;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/RoomModerator.java b/src/db/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
new file mode 100644
index 0000000..a5a7f8a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getRoomModeratorById", query = "select c from RoomModerator as c where c.roomModeratorsId = :roomModeratorsId"),
+	@NamedQuery(name = "getRoomModeratorsByIds", query = "select c from RoomModerator as c where c.roomModeratorsId IN :ids"),
+	@NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from RoomModerator as c where c.roomId = :roomId AND c.deleted = false"),
+	@NamedQuery(name = "getRoomModeratorByUserAndRoomId", query = "select c from RoomModerator as c "
+			+ "where c.roomId = :roomId "
+			+ "AND c.deleted <> :deleted "
+			+ "AND c.user.user_id = :user_id")
+})
+@Table(name = "rooms_moderator")
+@Root(name = "room_moderator")
+public class RoomModerator implements Serializable {
+	private static final long serialVersionUID = 5407758673591515018L;
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long roomModeratorsId;
+	
+	@Column(name = "roomId")
+	private Long roomId;
+	
+	@Column(name="is_supermoderator")
+	@Element(name="is_supermoderator", data = true)
+	private Boolean isSuperModerator;
+	
+	@ManyToOne(fetch = FetchType.EAGER) 
+	@JoinColumn (name="user_id")
+	@ForeignKey(enabled = true)
+	@Element(name="user_id", data = true, required=false)
+	private User user;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+	
+	public long getRoomModeratorsId() {
+		return roomModeratorsId;
+	}
+	public void setRoomModeratorsId(long roomModeratorsId) {
+		this.roomModeratorsId = roomModeratorsId;
+	}
+	
+	public Boolean getIsSuperModerator() {
+		return isSuperModerator;
+	}
+	public void setIsSuperModerator(Boolean isSuperModerator) {
+		this.isSuperModerator = isSuperModerator;
+	}
+	
+	
+	public User getUser() {
+		return user;
+	}
+	public void setUser(User user) {
+		this.user = user;
+	}
+	
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+	
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	
+	public Long getRoomId() {
+		return roomId;
+	}
+	public void setRoomId(Long roomId) {
+		this.roomId = roomId;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java b/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
new file mode 100644
index 0000000..6d9fe26
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
@@ -0,0 +1,147 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getAllRoomsOrganisations", query = "select ro from RoomOrganisation ro ORDER BY ro.rooms_organisation_id"),
+	@NamedQuery(name = "getRoomsOrganisationByOrganisationIdAndRoomType", query = "select c from RoomOrganisation as c "
+			+ "where c.room.roomtypes_id = :roomtypes_id "
+			+ "AND c.organisation.organisation_id = :organisation_id "
+			+ "AND c.deleted <> :deleted"),
+	@NamedQuery(name = "getRoomsOrganisationByOrganisationId", query = "SELECT c FROM RoomOrganisation c "
+			+ "LEFT JOIN FETCH c.room "
+			+ "WHERE c.organisation.organisation_id = :organisation_id "
+			+ "AND c.deleted <> :deleted AND c.room.deleted <> :deleted AND c.room.appointment = false "
+			+ "AND c.organisation.deleted <> :deleted "
+			+ "ORDER BY c.room.name ASC"),
+	@NamedQuery(name = "selectMaxFromRoomsByOrganisation", query = "select c from Rooms_Organisation as c "
+			+ "where c.organisation.organisation_id = :organisation_id "
+			+ "AND c.deleted <> :deleted"),
+	@NamedQuery(name = "getRoomsOrganisationByOrganisationIdAndRoomId", query = "select c from RoomOrganisation as c "
+			+ "where c.room.rooms_id = :rooms_id "
+			+ "AND c.organisation.organisation_id = :organisation_id "
+			+ "AND c.deleted <> :deleted"),
+	@NamedQuery(name = "getRoomsOrganisationByRoomsId", query = "select c from RoomOrganisation as c "
+			+ "where c.room.rooms_id = :rooms_id "
+			+ "AND c.deleted <> :deleted")
+})
+@Table(name = "rooms_organisation")
+@Root(name="room_organisation")
+public class RoomOrganisation implements Serializable {
+	private static final long serialVersionUID = 4153935045968138984L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(data=true)
+	private Long rooms_organisation_id;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="rooms_id", nullable=true)
+	@ForeignKey(enabled = true)
+	@Element(name="rooms_id", data=true, required=false)
+	private Room room;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="organisation_id", nullable=true)
+	@ForeignKey(enabled = true)
+	@Element(name="organisation_id", data=true, required=false)
+	private Organisation organisation;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	@Element(data=true)
+	private boolean deleted;
+
+	public RoomOrganisation(Organisation org, Room room) {
+		this.organisation = org;
+		this.room = room;
+	}
+
+	public RoomOrganisation() {
+	}
+
+	public Organisation getOrganisation() {
+		return organisation;
+	}
+	public void setOrganisation(Organisation organisation) {
+		this.organisation = organisation;
+	}
+	
+	public Room getRoom() {
+		return room;
+	}
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	public Long getRooms_organisation_id() {
+		return rooms_organisation_id;
+	}
+	public void setRooms_organisation_id(Long rooms_organisation_id) {
+		this.rooms_organisation_id = rooms_organisation_id;
+	}
+    
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}	
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/RoomPoll.java b/src/db/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
new file mode 100644
index 0000000..5f87710
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
@@ -0,0 +1,230 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "closePoll", query = "UPDATE RoomPoll rp SET rp.archived = :archived " +
+			"WHERE rp.room.rooms_id = :rooms_id"),
+	@NamedQuery(name = "deletePoll", query = "DELETE FROM RoomPoll rp WHERE rp.roomPollId = :roomPollId"),
+	@NamedQuery(name = "getPoll", query = "SELECT rp FROM RoomPoll rp " +
+			"WHERE rp.room.rooms_id = :room_id AND rp.archived = :archived"),
+	@NamedQuery(name = "getPollListBackup", query = "SELECT rp FROM RoomPoll rp ORDER BY rp.roomPollId"),
+	@NamedQuery(name = "getArchivedPollList", query = "SELECT rp FROM RoomPoll rp " +
+			"WHERE rp.room.rooms_id = :room_id AND rp.archived = :archived"),
+	@NamedQuery(name = "hasPoll", query = "SELECT COUNT(rp) FROM RoomPoll rp " +
+			"WHERE rp.room.rooms_id = :room_id AND rp.archived = :archived")
+})
+@Table(name = "room_polls")
+@Root(name="roompoll")
+public class RoomPoll {
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long roomPollId;
+	
+	@Column(name = "poll_name")
+	@Element(name="pollname", data=true, required=false)
+	private String pollName;
+	
+	@Column(name = "poll_question")
+	@Element(name="pollquestion", data=true, required=false)
+	private String pollQuestion;
+	
+	@Column(name = "created")
+	@Element(data=true, required=false)
+	private Date created;
+	
+	@Column(name = "archived")
+	@Element(data=true, required=false)
+	private boolean archived;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "poll_type_id")
+	@ForeignKey(enabled = true)
+	@Element(name="polltypeid", data=true, required=false)
+	private PollType pollType;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "users_id")
+	@ForeignKey(enabled = true)
+	@Element(name="createdbyuserid", data=true, required=false)
+	private User createdBy;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "rooms_id")
+	@ForeignKey(enabled = true)
+	@Element(name="roomid", data=true, required=false)
+	private Room room;
+	
+	@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
+	@JoinColumn(name = "room_poll_id")
+	@ElementList(name="roompollanswers", required=false)
+	private List<RoomPollAnswers> roomPollAnswerList;
+
+	/**
+	 * @return the createdBy
+	 */
+	public User getCreatedBy() {
+		return createdBy;
+	}
+
+	/**
+	 * @param createdBy
+	 *            the createdBy to set
+	 */
+	public void setCreatedBy(User createdBy) {
+		this.createdBy = createdBy;
+	}
+
+	/**
+	 * @return the created
+	 */
+	public Date getCreated() {
+		return created;
+	}
+
+	/**
+	 * @param created
+	 *            the created to set
+	 */
+	public void setCreated(Date created) {
+		this.created = created;
+	}
+
+	/**
+	 * @return the pollQuestion
+	 */
+	public String getPollQuestion() {
+		return pollQuestion;
+	}
+
+	/**
+	 * @param pollQuestion
+	 *            the pollQuestion to set
+	 */
+	public void setPollQuestion(String pollQuestion) {
+		this.pollQuestion = pollQuestion;
+	}
+
+	/**
+	 * @return the roomPollAnswerList
+	 */
+	public List<RoomPollAnswers> getRoomPollAnswerList() {
+		if (roomPollAnswerList == null) {
+			roomPollAnswerList = new LinkedList<RoomPollAnswers>();
+		}
+		return roomPollAnswerList;
+	}
+
+	/**
+	 * @param roomPollAnswerList
+	 *            the roomPollAnswerList to set
+	 */
+	public void setRoomPollAnswerList(List<RoomPollAnswers> roomPollAnswerList) {
+		this.roomPollAnswerList = roomPollAnswerList;
+	}
+
+	/**
+	 * @return the roomPollId
+	 */
+	public Long getRoomPollId() {
+		return roomPollId;
+	}
+
+	/**
+	 * @param roomPollId
+	 *            the roomPollId to set
+	 */
+	public void setRoomPollId(Long roomPollId) {
+		this.roomPollId = roomPollId;
+	}
+
+	/**
+	 * @return the pollTypeId
+	 */
+	public PollType getPollType() {
+		return pollType;
+	}
+
+	public void setPollType(PollType pollType) {
+		this.pollType = pollType;
+	}
+
+	public Room getRoom() {
+		return room;
+	}
+
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	/**
+	 * @return the archived
+	 */
+	public boolean isArchived() {
+		return archived;
+	}
+
+	/**
+	 * @param archived the archived to set
+	 */
+	public void setArchived(boolean archived) {
+		this.archived = archived;
+	}
+
+	/**
+	 * @return the pollName
+	 */
+	public String getPollName() {
+		return pollName;
+	}
+
+	/**
+	 * @param pollName the pollName to set
+	 */
+	public void setPollName(String pollName) {
+		this.pollName = pollName;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/RoomPollAnswers.java b/src/db/java/org/apache/openmeetings/db/entity/room/RoomPollAnswers.java
new file mode 100644
index 0000000..8ab0489
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/RoomPollAnswers.java
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "hasVoted", query = "SELECT rpa FROM RoomPollAnswers rpa "
+				+ "WHERE rpa.roomPoll.room.rooms_id = :room_id " +
+				"AND rpa.votedUser.user_id = :userid AND rpa.roomPoll.archived = :archived")
+})
+@Table(name = "room_poll_answers")
+@Root(name="roompollanswer")
+public class RoomPollAnswers {
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long id;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "users_id")
+	@ForeignKey(enabled = true)
+	@Element(name="voteduserid", data=false, required=false)
+	private User votedUser;
+	
+	@Column(name = "answer")
+	@Element(data=false, required=false)
+	private Boolean answer;
+	
+	@Column(name = "pointList")
+	@Element(name="pointlist", data=false, required=false)
+	private Integer pointList;
+	
+	@Column(name = "voteDate")
+	@Element(name="votedate", data=false)
+	private Date voteDate;
+	
+	@OneToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "room_poll_id")
+	private RoomPoll roomPoll;
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	/**
+	 * @return the answer
+	 */
+	public Boolean getAnswer() {
+		return answer;
+	}
+
+	/**
+	 * @param answer
+	 *            the answer to set
+	 */
+	public void setAnswer(Boolean answer) {
+		this.answer = answer;
+	}
+
+	/**
+	 * @return the pointList
+	 */
+	public Integer getPointList() {
+		return pointList;
+	}
+
+	/**
+	 * @param pointList
+	 *            the pointList to set
+	 */
+	public void setPointList(Integer pointList) {
+		this.pointList = pointList;
+	}
+
+	/**
+	 * @return the voteDate
+	 */
+	public Date getVoteDate() {
+		return voteDate;
+	}
+
+	/**
+	 * @param voteDate
+	 *            the voteDate to set
+	 */
+	public void setVoteDate(Date voteDate) {
+		this.voteDate = voteDate;
+	}
+
+	/**
+	 * @return the votedClient
+	 */
+	public User getVotedUser() {
+		return votedUser;
+	}
+
+	/**
+	 * @param votedClient
+	 *            the votedClient to set
+	 */
+	public void setVotedUser(User votedUser) {
+		this.votedUser = votedUser;
+	}
+
+	public RoomPoll getRoomPoll() {
+		return roomPoll;
+	}
+
+	public void setRoomPoll(RoomPoll roomPoll) {
+		this.roomPoll = roomPoll;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/RoomType.java b/src/db/java/org/apache/openmeetings/db/entity/room/RoomType.java
new file mode 100644
index 0000000..a9b2b17
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/RoomType.java
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.simpleframework.xml.Element;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getAllRoomTypes", query = "select c from RoomType as c where c.deleted <> :deleted"),
+	@NamedQuery(name = "getRoomTypesById", query = "select c from RoomType as c " +
+			"where c.roomtypes_id = :roomtypes_id AND c.deleted <> :deleted")
+})
+@Table(name = "roomtype")
+public class RoomType implements Serializable {
+	private static final long serialVersionUID = -4441029424324591356L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private Long roomtypes_id;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name="name")
+	private String name;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+	
+	@Column(name="fieldvalues_id")
+	@Element(data=true, required=false)
+	private Long fieldvalues_id;
+	
+	@Transient
+	private Fieldlanguagesvalues label;	
+
+    
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+    
+	public Long getRoomtypes_id() {
+		return roomtypes_id;
+	}
+	public void setRoomtypes_id(Long roomtypes_id) {
+		this.roomtypes_id = roomtypes_id;
+	}
+    
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}	
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getLabel() {
+		return label;
+	}
+
+	public void setLabel(Fieldlanguagesvalues label) {
+		this.label = label;
+	}	
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/Whiteboard.java b/src/db/java/org/apache/openmeetings/db/entity/room/Whiteboard.java
new file mode 100644
index 0000000..17a274d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/Whiteboard.java
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import java.util.Calendar;
+import java.util.Collection;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ElementJoinColumn;
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+
+@Entity
+@Table(name = "whiteboard")
+public class Whiteboard {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private long id;
+
+	@Column(name = "room_id")
+	private Integer roomId = 0;
+
+	@Column(name = "x")
+	private Integer x = 0;
+
+	@Column(name = "y")
+	private Integer y = 0;
+
+	@Column(name = "zoom")
+	private Integer zoom = 100;
+
+	@Column(name = "full_fit")
+	private Boolean fullFit;
+
+	@Column(name = "created")
+	private Calendar created;
+
+	@OneToMany
+	@ElementJoinColumn(name = "whiteboarditem_id", referencedColumnName = "id")
+	@ForeignKey(enabled = true)
+	private Collection<WhiteboardItem> roomItems;
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public Integer getX() {
+		return x;
+	}
+
+	public void setX(Integer x) {
+		this.x = x;
+	}
+
+	public Integer getY() {
+		return y;
+	}
+
+	public void setY(Integer y) {
+		this.y = y;
+	}
+
+	public Integer getZoom() {
+		return zoom;
+	}
+
+	public void setZoom(Integer zoom) {
+		this.zoom = zoom;
+	}
+
+	public Boolean getFullFit() {
+		return fullFit;
+	}
+
+	public void setFullFit(Boolean fullFit) {
+		this.fullFit = fullFit;
+	}
+
+	public Calendar getCreated() {
+		return created;
+	}
+
+	public void setCreated(Calendar created) {
+		this.created = created;
+	}
+
+	public Integer getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(Integer roomId) {
+		this.roomId = roomId;
+	}
+
+	public Collection<WhiteboardItem> getRoomItems() {
+		return roomItems;
+	}
+
+	public void setRoomItems(Collection<WhiteboardItem> roomItems) {
+		this.roomItems = roomItems;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/room/WhiteboardItem.java b/src/db/java/org/apache/openmeetings/db/entity/room/WhiteboardItem.java
new file mode 100644
index 0000000..fd97ac7
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/room/WhiteboardItem.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.room;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "whiteboard_item")
+public class WhiteboardItem {
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private long id;
+	
+	@Column(name = "keyx")
+	private String key;
+	
+	@Column(name = "value")
+	private String value;
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/LdapConfig.java b/src/db/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
new file mode 100644
index 0000000..850aef8
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
@@ -0,0 +1,185 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name="getNondeletedLdapConfigs", query="SELECT u FROM LdapConfig u WHERE u.deleted = false")
+	, @NamedQuery(name="getActiveLdapConfigs", query="SELECT c FROM LdapConfig c WHERE c.deleted = false AND c.isActive = :isActive ORDER BY c.ldapConfigId")
+})
+@Table(name = "ldapconfig")
+@Root(name="ldapconfig")
+public class LdapConfig implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long ldapConfigId = 0L;
+	
+	@Column(name="name")
+	@Element(data=true)
+	private String name;
+	
+	@Column(name="config_file_name")
+	@Element(data=true, required = false)
+	private String configFileName;
+	
+	@Column(name="add_domain_to_user_name")
+	@Element(data=true)
+	private boolean addDomainToUserName;
+	
+	@Column(name="domain")
+	@Element(data=true, required = false)
+	private String domain;
+	
+	@Column(name="is_active")
+	@Element(data=true)
+	private boolean isActive;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="updated")
+	private Date updated;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="insertedby_id", updatable=true, insertable=true)
+	@ForeignKey(enabled = true)
+	private User insertedby;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="updatedby_id", updatable=true, insertable=true)
+	@ForeignKey(enabled = true)
+	private User updatedby;
+	
+	@Column(name="deleted")
+	private boolean deleted;
+	
+	@Lob
+	@Column(name = "comment_field", length = 2048)
+	@Element(data = true, required = false)
+	private String comment;
+
+	public long getLdapConfigId() {
+		return ldapConfigId;
+	}
+	public void setLdapConfigId(long ldapConfigId) {
+		this.ldapConfigId = ldapConfigId;
+	}
+    
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+    
+	public String getConfigFileName() {
+		return configFileName;
+	}
+	public void setConfigFileName(String configFileName) {
+		this.configFileName = configFileName;
+	}
+    
+	public boolean getAddDomainToUserName() {
+		return addDomainToUserName;
+	}
+	public void setAddDomainToUserName(boolean addDomainToUserName) {
+		this.addDomainToUserName = addDomainToUserName;
+	}
+    
+	public String getDomain() {
+		return domain;
+	}
+	public void setDomain(String domain) {
+		this.domain = domain;
+	}
+    
+	public boolean getIsActive() {
+		return isActive;
+	}
+	public void setIsActive(boolean isActive) {
+		this.isActive = isActive;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+	
+	public Date getUpdated() {
+		return updated;
+	}
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+	
+	public User getInsertedby() {
+		return insertedby;
+	}
+	public void setInsertedby(User insertedby) {
+		this.insertedby = insertedby;
+	}
+	
+	public User getUpdatedby() {
+		return updatedby;
+	}
+	public void setUpdatedby(User updatedby) {
+		this.updatedby = updatedby;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/OAuthServer.java b/src/db/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
new file mode 100644
index 0000000..cbe01ad
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
@@ -0,0 +1,267 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "oauth_servers")
+@NamedQueries({
+		@NamedQuery(name = "getEnabledOAuthServers", query = "select s from OAuthServer as s where s.enabled = true and s.deleted = false"),
+		@NamedQuery(name = "getOAuthServerById", query = "select s from OAuthServer as s where s.id = :id"),
+		@NamedQuery(name = "getAllOAuthServers", query = "SELECT s FROM OAuthServer s WHERE s.deleted = false ORDER BY s.id"),
+		@NamedQuery(name = "countOAuthServers", query = "select count(s) from OAuthServer s WHERE s.deleted = false") })
+@Root
+public class OAuthServer implements Serializable, IDataProviderEntity {
+
+	private static final long serialVersionUID = -9034438721147720175L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true)
+	private Long id;
+	
+	@Column(name = "name")
+	@Element(data = true)
+	private String name;
+	
+	@Column(name = "icon_url")
+	@Element(data = true)
+	private String iconUrl;
+	
+	@Column(name = "enabled")
+	@Element(data = true)
+	private boolean enabled;
+	
+	@Column(name = "client_id")
+	@Element(data = true)
+	private String clientId;
+	
+	@Column(name = "client_secret")
+	@Element(data = true)
+	private String clientSecret;
+	
+	@Column(name = "request_key_url")
+	@Element(data = true)
+	private String requestKeyUrl;
+	
+	@Column(name = "request_token_url")
+	@Element(data = true)
+	private String requestTokenUrl;
+	
+	@Column(name = "request_token_attributes")
+	@Element(data = true)
+	private String requestTokenAttributes;
+	
+	@Column(name = "request_method")
+	@Element(data = true)
+	private RequestMethod requestTokenMethod;
+	
+	@Column(name = "request_info_url")
+	@Element(data = true)
+	private String requestInfoUrl;
+	
+	@Column(name = "login_param_name")
+	@Element(data = true)
+	private String loginParamName;
+	
+	@Column(name = "email_param_name")
+	@Element(data = true, required = false)
+	private String emailParamName;
+	
+	@Column(name = "firstname_param_name")
+	@Element(data = true, required = false)
+	private String firstnameParamName;
+	
+	@Column(name = "lastname_param_name")
+	@Element(data = true, required = false)
+	private String lastnameParamName;
+	
+	@Column(name = "deleted")
+	@Element(data = true)
+	private boolean deleted;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getIconUrl() {
+		return iconUrl;
+	}
+
+	public void setIconUrl(String iconUrl) {
+		this.iconUrl = iconUrl;
+	}
+
+	public boolean isEnabled() {
+		return enabled;
+	}
+
+	public void setEnabled(boolean enabled) {
+		this.enabled = enabled;
+	}
+
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+
+	public String getClientSecret() {
+		return clientSecret;
+	}
+
+	public void setClientSecret(String clientSecret) {
+		this.clientSecret = clientSecret;
+	}
+
+	public String getRequestKeyUrl() {
+		return requestKeyUrl;
+	}
+
+	public void setRequestKeyUrl(String requestKeyUrl) {
+		this.requestKeyUrl = requestKeyUrl;
+	}
+
+	public String getRequestTokenUrl() {
+		return requestTokenUrl;
+	}
+
+	public void setRequestTokenUrl(String requestTokenUrl) {
+		this.requestTokenUrl = requestTokenUrl;
+	}
+
+	public String getRequestTokenAttributes() {
+		return requestTokenAttributes;
+	}
+
+	public void setRequestTokenAttributes(String requestTokenAttributes) {
+		this.requestTokenAttributes = requestTokenAttributes;
+	}
+
+	public RequestMethod getRequestTokenMethod() {
+		return requestTokenMethod;
+	}
+
+	public void setRequestTokenMethod(RequestMethod requestTokenMethod) {
+		this.requestTokenMethod = requestTokenMethod;
+	}
+
+	public String getRequestInfoUrl() {
+		return requestInfoUrl;
+	}
+
+	public void setRequestInfoUrl(String requestInfoUrl) {
+		this.requestInfoUrl = requestInfoUrl;
+	}
+
+	public String getLoginParamName() {
+		return loginParamName;
+	}
+
+	public void setLoginParamName(String loginParamName) {
+		this.loginParamName = loginParamName;
+	}
+
+	public String getEmailParamName() {
+		return emailParamName;
+	}
+
+	public void setEmailParamName(String emailParamName) {
+		this.emailParamName = emailParamName;
+	}
+
+	public String getFirstnameParamName() {
+		return firstnameParamName;
+	}
+
+	public void setFirstnameParamName(String firstnameParamName) {
+		this.firstnameParamName = firstnameParamName;
+	}
+
+	public String getLastnameParamName() {
+		return lastnameParamName;
+	}
+
+	public void setLastnameParamName(String lastnameParamName) {
+		this.lastnameParamName = lastnameParamName;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	@Override
+	public String toString() {
+		return "OAuthServer [id=" + id + ", name=" + name + ", iconUrl=" + iconUrl + ", enabled=" + enabled
+				+ ", clientId=" + clientId + ", clientSecret=" + clientSecret + ", requestKeyUrl=" + requestKeyUrl
+				+ ", requestTokenUrl=" + requestTokenUrl + ", requestTokenAttributes=" + requestTokenAttributes
+				+ ", requestTokenMethod=" + requestTokenMethod + ", requestInfoUrl=" + requestInfoUrl
+				+ ", loginParamName=" + loginParamName + ", emailParamName=" + emailParamName + ", firstnameParamName="
+				+ firstnameParamName + ", lastnameParamName=" + lastnameParamName + ", deleted=" + deleted + "]";
+	}
+
+	public enum RequestMethod {
+		POST("post"), GET("get");
+
+		private String name;
+
+		private RequestMethod(String name) {
+			this.name = name;
+		}
+
+		@Override
+		public String toString() {
+			return name;
+		}
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java b/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java
new file mode 100644
index 0000000..1ab500c
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/RemoteSessionObject.java
@@ -0,0 +1,162 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.core.Persister;
+import org.slf4j.Logger;
+
+/**
+ * This Class is marshaled as an XML-Object and stored as a String in the DB to make
+ * it more easy to extend it
+ * 
+ * @author sebastianwagner
+ *
+ */
+@Root
+public class RemoteSessionObject {
+	private static final Logger log = Red5LoggerFactory.getLogger(RemoteSessionObject.class, webAppRootKey);
+	@Element(required = false)
+	private String username;
+	@Element(required = false)
+	private String firstname;
+	@Element(required = false)
+	private String lastname;
+	@Element(required = false)
+	private String pictureUrl;
+	@Element(required = false)
+	private String email;
+	@Element
+	private String externalUserId;
+	@Element
+	private String externalUserType;
+	
+	public RemoteSessionObject() {
+	}
+	
+	public RemoteSessionObject(String username, String firstname, String lastname,
+			String pictureUrl, String email) {
+		this(username, firstname, lastname, pictureUrl, email, "0", "");
+	}
+	
+	
+	/**
+	 * @param username
+	 * @param firstname
+	 * @param lastname
+	 * @param pictureUrl
+	 * @param email
+	 * @param externalUserId
+	 * @param externalUserType
+	 *
+	 * 06.09.2009 17:05:48
+	 * sebastianwagner
+	 * 
+	 * 
+	 */
+	public RemoteSessionObject(String username, String firstname,
+			String lastname, String pictureUrl, String email,
+			String externalUserId, String externalUserType) {
+		super();
+		this.username = username;
+		this.firstname = firstname;
+		this.lastname = lastname;
+		this.pictureUrl = pictureUrl;
+		this.email = email;
+		this.externalUserId = externalUserId;
+		this.externalUserType = externalUserType;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+	public void setUsername(String username) {
+		this.username = username;
+	}
+	public String getFirstname() {
+		return firstname;
+	}
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+	public String getLastname() {
+		return lastname;
+	}
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+	public String getPictureUrl() {
+		return pictureUrl;
+	}
+	public void setPictureUrl(String pictureUrl) {
+		this.pictureUrl = pictureUrl;
+	}
+	public String getEmail() {
+		return email;
+	}
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getExternalUserId() {
+		return externalUserId;
+	}
+	public void setExternalUserId(String externalUserId) {
+		this.externalUserId = externalUserId;
+	}
+
+	public String getExternalUserType() {
+		return externalUserType;
+	}
+	public void setExternalUserType(String externalUserType) {
+		this.externalUserType = externalUserType;
+	}
+
+	public String toXml() throws Exception {
+		StringWriter sw = new StringWriter();
+		Serializer serializer = new Persister();
+		serializer.write(this, sw);
+		return sw.toString();
+	}
+
+	public static RemoteSessionObject fromXml(String xml) {
+		Serializer serializer = new Persister();
+		try {
+			return serializer.read(RemoteSessionObject.class, new StringReader(xml));
+		} catch (Exception e) {
+			log.error("Unexpected error while restoring object from XML: " + xml, e);
+		}
+		return null;
+	}
+	
+	@Override
+	public String toString() {
+		return "RemoteSessionObject [username=" + username + ", firstname=" + firstname + ", lastname=" + lastname
+				+ ", pictureUrl=" + pictureUrl + ", email=" + email + ", externalUserId=" + externalUserId
+				+ ", externalUserType=" + externalUserType + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java b/src/db/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java
new file mode 100644
index 0000000..badff56
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "soaplogin")
+public class SOAPLogin implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private long soapLoginId;
+	
+	@Column(name="hash")
+	private String hash;
+	
+	@Column(name="room_id")
+	private Long room_id;
+	
+	@Column(name="session_hash")
+	private String sessionHash;
+	
+	@Column(name="created")
+	private Date created;
+	
+	@Column(name="used")
+	private boolean used;
+	
+	@Column(name="use_date")
+	private Date useDate;
+	
+	@Column(name="becomemoderator")
+	private boolean becomemoderator;
+	
+	@Column(name="showaudiovideotest")
+	private boolean showAudioVideoTest;
+	
+	@Column(name="allow_same_url_multiple_times")
+	private boolean allowSameURLMultipleTimes;
+	
+	@Column(name="show_nick_name_dialog")
+	private boolean showNickNameDialog;
+	
+	@Column(name="client_url")
+	private String clientURL;
+	
+	@Column(name="room_recording_id")
+	private Long roomRecordingId;
+	
+	@Column(name="landing_zone")
+	private String landingZone;
+	
+	@Column(name="allow_recording")
+	private boolean allowRecording;
+	
+	public long getSoapLoginId() {
+		return soapLoginId;
+	}
+	public void setSoapLoginId(long soapLoginId) {
+		this.soapLoginId = soapLoginId;
+	}
+	
+	public String getHash() {
+		return hash;
+	}
+	public void setHash(String hash) {
+		this.hash = hash;
+	}
+	
+	public Long getRoom_id() {
+		return room_id;
+	}
+	public void setRoom_id(Long room_id) {
+		this.room_id = room_id;
+	}
+	
+	public String getSessionHash() {
+		return sessionHash;
+	}
+	public void setSessionHash(String sessionHash) {
+		this.sessionHash = sessionHash;
+	}
+	
+	public Date getCreated() {
+		return created;
+	}
+	public void setCreated(Date created) {
+		this.created = created;
+	}
+	
+	public boolean getUsed() {
+		return used;
+	}
+	public void setUsed(boolean used) {
+		this.used = used;
+	}
+	
+	public Date getUseDate() {
+		return useDate;
+	}
+	public void setUseDate(Date useDate) {
+		this.useDate = useDate;
+	}
+	
+	public boolean getBecomemoderator() {
+		return becomemoderator;
+	}
+	public void setBecomemoderator(boolean becomemoderator) {
+		this.becomemoderator = becomemoderator;
+	}
+	
+	public boolean getShowAudioVideoTest() {
+		return showAudioVideoTest;
+	}
+	public void setShowAudioVideoTest(boolean showAudioVideoTest) {
+		this.showAudioVideoTest = showAudioVideoTest;
+	}
+	
+	public boolean getAllowSameURLMultipleTimes() {
+		return allowSameURLMultipleTimes;
+	}
+	public void setAllowSameURLMultipleTimes(boolean allowSameURLMultipleTimes) {
+		this.allowSameURLMultipleTimes = allowSameURLMultipleTimes;
+	}
+
+	public boolean getShowNickNameDialog() {
+		return showNickNameDialog;
+	}
+	public void setShowNickNameDialog(boolean showNickNameDialog) {
+		this.showNickNameDialog = showNickNameDialog;
+	}
+	
+	public String getClientURL() {
+		return clientURL;
+	}
+	public void setClientURL(String clientURL) {
+		this.clientURL = clientURL;
+	}
+	
+	public Long getRoomRecordingId() {
+		return roomRecordingId;
+	}
+	public void setRoomRecordingId(Long roomRecordingId) {
+		this.roomRecordingId = roomRecordingId;
+	}
+	
+	public String getLandingZone() {
+		return landingZone;
+	}
+	public void setLandingZone(String landingZone) {
+		this.landingZone = landingZone;
+	}
+	
+	public boolean isAllowRecording() {
+		return allowRecording;
+	}
+	public void setAllowRecording(boolean allowRecording) {
+		this.allowRecording = allowRecording;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/Server.java b/src/db/java/org/apache/openmeetings/db/entity/server/Server.java
new file mode 100644
index 0000000..03a7402
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/Server.java
@@ -0,0 +1,302 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.io.Serializable;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+		@NamedQuery(name = "getAllServers", query = "SELECT s FROM Server s WHERE s.deleted = false ORDER BY s.id"),
+		@NamedQuery(name = "getServerCount", query = "SELECT COUNT(s) FROM Server s WHERE s.deleted = false"),
+		@NamedQuery(name = "getServerById", query = "SELECT s FROM Server s LEFT JOIN FETCH s.insertedby LEFT JOIN FETCH s.updatedby WHERE s.deleted = false AND s.id = :id"),
+		@NamedQuery(name = "getServerByName", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.name LIKE :name"),
+		@NamedQuery(name = "getServerByAddress", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.address LIKE :address"),
+		@NamedQuery(name = "getServersWithNoUsers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT u.server.id FROM User u where u.server.id IS NOT NULL)"),
+		@NamedQuery(name = "getServerWithMinimumUsers", query = "SELECT s.id, COUNT(u) AS cnt FROM User u JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt"),
+		@NamedQuery(name = "getActiveServers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.active = true") //
+})
+@Table(name = "server")
+@Root
+public class Server implements Serializable, IDataProviderEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true)
+	private long id = 0;
+
+	@Column(name = "name")
+	@Element(data = true)
+	private String name;
+
+	@Column(name = "address")
+	@Element(data = true)
+	private String address;
+
+	@Column(name = "inserted")
+	public Date inserted;
+
+	@Column(name = "updated")
+	public Date updated;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "insertedby_id", updatable = true, insertable = true)
+	@ForeignKey(enabled = true)
+	public User insertedby;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "updatedby_id", updatable = true, insertable = true)
+	@ForeignKey(enabled = true)
+	public User updatedby;
+
+	@Lob
+	@Column(name = "comment_field", length = 2048)
+	@Element(data = true, required = false)
+	private String comment;
+
+	@Column(name = "last_ping", nullable = true)
+	@Element(data = true, required = false)
+	private Calendar lastPing;
+	
+	@Column(name = "port", nullable = true)
+	@Element(data = true, required = false)
+	private int port;
+
+	@Column(name = "protocol", nullable = true)
+	@Element(data = true, required = false)
+	private String protocol;
+
+	@Column(name = "webapp", nullable = true)
+	@Element(data = true, required = false)
+	private String webapp;
+
+	@Column(name = "login", nullable = true)
+	@Element(data = true, required = false)
+	private String user;
+
+	@Column(name = "pass", nullable = true)
+	@Element(data = true, required = false)
+	private String pass;
+
+	@Column(name = "active", nullable = true)
+	@Element(data = true, required = false)
+	private boolean active;
+	
+	@Column(name = "deleted", nullable = false)
+	@Element(data = true)
+	private boolean deleted = false;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+	public boolean isDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public Date getUpdated() {
+		return updated;
+	}
+
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+	public User getInsertedby() {
+		return insertedby;
+	}
+
+	public void setInsertedby(User insertedby) {
+		this.insertedby = insertedby;
+	}
+
+	public User getUpdatedby() {
+		return updatedby;
+	}
+
+	public void setUpdatedby(User updatedby) {
+		this.updatedby = updatedby;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+	
+	public Calendar getLastPing() {
+		return lastPing;
+	}
+
+	public void setLastPing(Calendar lastPing) {
+		this.lastPing = lastPing;
+	}
+
+	public int getPort() {
+		return port;
+	}
+
+	public void setPort(int port) {
+		this.port = port;
+	}
+
+	public String getProtocol() {
+		return protocol;
+	}
+
+	public void setProtocol(String protocol) {
+		this.protocol = protocol;
+	}
+
+	public String getWebapp() {
+		return webapp;
+	}
+
+	public void setWebapp(String webapp) {
+		this.webapp = webapp;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getPass() {
+		return pass;
+	}
+
+	public void setPass(String pass) {
+		this.pass = pass;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public boolean isActive() {
+		return active;
+	}
+
+	public void setActive(boolean active) {
+		this.active = active;
+	}
+
+	@Override
+	public String toString() {
+		return "Server [id=" + id + ", name=" + name + ", address=" + address
+				+ ", port=" + port + ", user=" + user + ", pass=" + pass
+				+ ", protocol=" + protocol 
+				+ ", active=" + active + ", webapp=" + webapp + ", deleted="
+				+ deleted + "]";
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((address == null) ? 0 : address.hashCode());
+		result = prime * result + (int) (id ^ (id >>> 32));
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (obj == null) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		Server other = (Server) obj;
+		if (address == null) {
+			if (other.address != null) {
+				return false;
+			}
+		} else if (!address.equals(other.address)) {
+			return false;
+		}
+		if (id != other.id) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/server/Sessiondata.java b/src/db/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
new file mode 100644
index 0000000..f878e10
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
@@ -0,0 +1,144 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.server;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getSessionById", query = "select c from Sessiondata as c "
+					+ "where c.session_id LIKE :session_id"),
+	@NamedQuery(name = "getSessionToDelete", query = "Select c from Sessiondata c "
+					+ "WHERE c.refresh_time < :refresh_time " + "AND ( "
+					+ "c.storePermanent IS NULL " + "OR "
+					+ "c.storePermanent = false " + ")")
+})
+@Table(name = "sessiondata")
+public class Sessiondata implements Serializable {
+	private static final long serialVersionUID = 1928177917452866750L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	private Long id;
+	
+	@Column(name="user_id")
+	private Long user_id;
+	
+	@Column(name="session_id")
+	private String session_id;
+	
+	@Column(name="starttermin_time")
+	private Date starttermin_time;
+	
+	@Column(name="refresh_time")
+	private Date refresh_time;
+	
+	@Lob
+	@Column(name="sessionXml")
+	private String sessionXml;
+	
+	@Column(name="storePermanent")
+	private Boolean storePermanent;
+	
+	@Column(name="language_id")
+	private Long language_id;
+	
+	@Column(name="organization_id")
+	private Long organization_id;
+	
+	public Sessiondata() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+    
+    public Long getId() {
+        return id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+    public Date getRefresh_time() {
+        return refresh_time;
+    }
+    public void setRefresh_time(Date refresh_time) {
+        this.refresh_time = refresh_time;
+    }
+    
+    public String getSession_id() {
+        return session_id;
+    }
+    public void setSession_id(String session_id) {
+        this.session_id = session_id;
+    }
+    
+    public Date getStarttermin_time() {
+        return starttermin_time;
+    }
+    public void setStarttermin_time(Date starttermin_time) {
+        this.starttermin_time = starttermin_time;
+    }
+    
+    public Long getUser_id() {
+        return user_id;
+    }
+    public void setUser_id(Long user_id) {
+        this.user_id = user_id;
+    }
+
+	public String getSessionXml() {
+		return sessionXml;
+	}
+	public void setSessionXml(String sessionXml) {
+		this.sessionXml = sessionXml;
+	}
+
+	public Boolean getStorePermanent() {
+		return storePermanent;
+	}
+	public void setStorePermanent(Boolean storePermanent) {
+		this.storePermanent = storePermanent;
+	}
+
+	public Long getLanguage_id() {
+		return language_id;
+	}
+	public void setLanguage_id(Long language_id) {
+		this.language_id = language_id;
+	}
+
+	public Long getOrganization_id() {
+		return organization_id;
+	}
+	public void setOrganization_id(Long organization_id) {
+		this.organization_id = organization_id;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/Address.java b/src/db/java/org/apache/openmeetings/db/entity/user/Address.java
new file mode 100644
index 0000000..24b9f3a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/Address.java
@@ -0,0 +1,207 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "address")
+@Root(name="address")
+public class Address implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long adresses_id;
+	
+	@Column(name = "additionalname")
+	@Element(data=true, required=false)
+	private String additionalname;
+	
+	@Lob
+	@Column(name = "comment_field", length=2048)
+	@Element(data=true, required=false)
+	private String comment;
+	
+	@Column(name = "fax")
+	@Element(data=true, required=false)
+	private String fax;
+	
+	@Column(name = "starttime")
+	@Element(data=true, required=false)
+	private Date starttime;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "state_id")
+	@Element(name="state_id", data=true, required=false)
+	private State states;
+	
+	@Column(name = "street")
+	@Element(data=true, required=false)
+	private String street;
+	
+	@Column(name = "town")
+	@Element(data=true, required=false)
+	private String town;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "zip")
+	@Element(data=true, required=false)
+	private String zip;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+
+	@Column(name = "email")
+	@Element(name="mail", data=true, required=false)
+	private String email;
+	
+	@Column(name = "phone")
+	@Element(data=true, required=false)
+	private String phone;
+
+	public String getAdditionalname() {
+		return additionalname;
+	}
+
+	public void setAdditionalname(String additionalname) {
+		this.additionalname = additionalname;
+	}
+
+	public Long getAdresses_id() {
+		return adresses_id;
+	}
+
+	public void setAdresses_id(Long adresses_id) {
+		this.adresses_id = adresses_id;
+	}
+
+	public String getComment() {
+		return comment;
+	}
+
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public String getFax() {
+		return fax;
+	}
+
+	public void setFax(String fax) {
+		this.fax = fax;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public State getStates() {
+		return states;
+	}
+
+	public void setStates(State states) {
+		this.states = states;
+	}
+
+	public String getStreet() {
+		return street;
+	}
+
+	public void setStreet(String street) {
+		this.street = street;
+	}
+
+	public String getTown() {
+		return town;
+	}
+
+	public void setTown(String town) {
+		this.town = town;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public String getZip() {
+		return zip;
+	}
+
+	public void setZip(String zip) {
+		this.zip = zip;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	@Override
+	public String toString() {
+		return "Address [id=" + adresses_id + ", states=" + states
+				+ ", street=" + street + ", town=" + town + ", zip=" + zip
+				+ ", deleted=" + deleted + ", email=" + email + ", phone="
+				+ phone + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java b/src/db/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
new file mode 100644
index 0000000..f95e934
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
@@ -0,0 +1,264 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "sipusers")
+@Root(name="asterisksipuser")
+public class AsteriskSipUser implements Serializable {
+	private static final long serialVersionUID = -565831761546365623L;
+	public enum Type {
+		friend,
+		user,
+		peer
+	}
+
+	@Id
+	@Column(name = "id")
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Element(data = true)
+	private long id;
+
+	@Column(name = "type", nullable = false, length=6)
+	@Enumerated(EnumType.STRING)
+	@Element(data=true, required=false)
+	private Type type = Type.friend;
+	
+	@Column(name = "name", nullable = false, length=128)
+	@Element(data=true, required=false)
+	private String name = ""; //	Varchar 128
+	
+	@Column(name = "secret", length=128)
+	@Element(data=true, required = false)
+	private String secret; //	Varchar 128
+	
+	@Column(name = "context", length=128)
+	@Element(data=true, required = false)
+	private String context; //	Varchar 128
+	
+	@Column(name = "host", nullable = false, length=128)
+	@Element(data=true, required = false)
+	private String host = "dynamic"; //	Varchar 128
+	
+	@Column(name = "ipaddr", nullable = false, length=128)
+	@Element(data=true, required=false)
+	private String ipaddr = ""; //	Varchar 128
+	
+	@Column(name = "port", nullable = false, length=8)
+	@Element(data=true, required=false)
+	private Integer port = 0; //	mediumint(8)
+	
+	@Column(name = "regseconds", nullable = false)
+	@Element(data=true, required = false)
+	private Long regseconds = 0L; //	Bigint
+	
+	@Column(name = "defaultuser", nullable = true, length=128)
+	@Element(data=true, required = false)
+	private String defaultuser; //	Varchar 128
+	
+	@Column(name = "fullcontact", length=512)
+	@Element(data=true, required = false)
+	private String fullcontact;
+	
+	@Column(name = "regserver", nullable = true, length=128)
+	@Element(data=true, required = false)
+	private String regserver; //	Varchar 128
+	
+	@Column(name = "useragent", nullable = true, length=128)
+	@Element(data=true, required = false)
+	private String useragent; //	Varchar 128
+	
+	@Column(name = "lastms")
+	@Element(data=true, required = false)
+	private Integer lastms; //	Integer
+	
+	@Column(name = "md5secret")
+	@Element(data=true, required = false)
+	private String md5secret;
+
+	@Column(name = "nat", nullable=false)
+	@Element(data=true, required = false)
+	private String nat = "force_rport,comedia";
+	
+	@Column(name = "callbackextension", nullable=true, length=250)
+	@Element(data=true, required = false)
+	private String callbackextension;
+
+	@Column(name = "allow", nullable=false, length=100)
+	@Element(data=true, required = false)
+	private String allow = "ulaw;alaw;h264";
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+	public void setType(Type type) {
+		this.type = type;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getSecret() {
+		return secret;
+	}
+
+	public void setSecret(String secret) {
+		this.secret = secret;
+	}
+
+	public String getContext() {
+		return context;
+	}
+
+	public void setContext(String context) {
+		this.context = context;
+	}
+
+	public String getHost() {
+		return host;
+	}
+
+	public void setHost(String host) {
+		this.host = host;
+	}
+
+	public String getIpaddr() {
+		return ipaddr;
+	}
+
+	public void setIpaddr(String ipaddr) {
+		this.ipaddr = ipaddr;
+	}
+
+	public Integer getPort() {
+		return port;
+	}
+
+	public void setPort(Integer port) {
+		this.port = port;
+	}
+
+	public Long getRegseconds() {
+		return regseconds;
+	}
+
+	public void setRegseconds(Long regseconds) {
+		this.regseconds = regseconds;
+	}
+
+	public String getDefaultuser() {
+		return defaultuser;
+	}
+
+	public void setDefaultuser(String defaultuser) {
+		this.defaultuser = defaultuser;
+	}
+
+	public String getFullcontact() {
+		return fullcontact;
+	}
+
+	public void setFullcontact(String fullcontact) {
+		this.fullcontact = fullcontact;
+	}
+
+	public String getRegserver() {
+		return regserver;
+	}
+
+	public void setRegserver(String regserver) {
+		this.regserver = regserver;
+	}
+
+	public String getUseragent() {
+		return useragent;
+	}
+
+	public void setUseragent(String useragent) {
+		this.useragent = useragent;
+	}
+
+	public Integer getLastms() {
+		return lastms;
+	}
+
+	public void setLastms(Integer lastms) {
+		this.lastms = lastms;
+	}
+
+	public String getMd5secret() {
+		return md5secret;
+	}
+
+	public void setMd5secret(String md5secret) {
+		this.md5secret = md5secret;
+	}
+
+	public String getNat() {
+		return nat;
+	}
+
+	public void setNat(String nat) {
+		this.nat = nat;
+	}
+
+	public String getCallbackextension() {
+		return callbackextension;
+	}
+
+	public void setCallbackextension(String callbackextension) {
+		this.callbackextension = callbackextension;
+	}
+
+	public String getAllow() {
+		return allow;
+	}
+
+	public void setAllow(String allow) {
+		this.allow = allow;
+	}
+}
\ No newline at end of file
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java b/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
new file mode 100644
index 0000000..85917bc
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/Organisation.java
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name="getOrganisationById",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id AND c.deleted = :deleted")
+	, @NamedQuery(name="getAnyOrganisationById",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id = :organisation_id")
+	, @NamedQuery(name="getOrganisationsByIds",
+		query="SELECT c FROM Organisation AS c WHERE c.organisation_id IN :ids")
+	, @NamedQuery(name="getOrganisationsByUserId",
+		query="SELECT ou.organisation FROM User u, IN(u.organisation_users) ou WHERE u.deleted = false AND u.user_id = :user_id")
+	, @NamedQuery(name="getNondeletedOrganisations", query="SELECT o FROM Organisation o WHERE o.deleted = false ORDER BY o.organisation_id")
+	, @NamedQuery(name="countOrganisations", query="SELECT COUNT(c) FROM Organisation AS c WHERE c.deleted = false")
+})
+@Table(name = "organisation")
+@Root(name="organisation")
+public class Organisation implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 99123580264065654L;
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(data=true)
+	private Long organisation_id;
+	
+	@Column(name="name")
+	@Element(data=true)
+	private String name;
+	
+	@Column(name="insertedby")
+	private Long insertedby;
+	
+	@Column(name="updatedby")
+	private Long updatedby;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	@Element(data=true)
+	private boolean deleted;
+	
+
+	public Long getInsertedby() {
+		return insertedby;
+	}
+	public void setInsertedby(Long insertedby) {
+		this.insertedby = insertedby;
+	}
+
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getOrganisation_id() {
+		return organisation_id;
+	}
+	public void setOrganisation_id(Long organisation_id) {
+		this.organisation_id = organisation_id;
+	}
+
+	public Long getUpdatedby() {
+		return updatedby;
+	}
+	public void setUpdatedby(Long updatedby) {
+		this.updatedby = updatedby;
+	}	
+	
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+	@Override
+	public String toString() {
+		return "Organisation [id=" + organisation_id + ", name="
+				+ name + ", deleted=" + deleted + "]";
+	}	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java b/src/db/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java
new file mode 100644
index 0000000..6fc328f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/Organisation_Users.java
@@ -0,0 +1,175 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name="deleteUsersFromOrganisation", query="DELETE FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
+	, @NamedQuery(name="countOrganisationUsers", query="SELECT COUNT(c) FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
+	, @NamedQuery(name="getOrganisationUsersById", query="SELECT c FROM Organisation_Users c WHERE c.organisation_users_id = :id")
+	, @NamedQuery(name="getOrganisationUsersByOrgId", query="SELECT c FROM Organisation_Users c WHERE c.organisation.organisation_id = :id")
+	, @NamedQuery(name="isUserInOrganization", query="SELECT c FROM Organisation_Users c WHERE c.organisation.organisation_id = :orgId AND c.user.user_id = :userId")
+})
+@Table(name = "organisation_users")
+@Root(name="user_organisation")
+public class Organisation_Users implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long organisation_users_id;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "organisation_id", insertable = true, updatable = true)
+	@ForeignKey(enabled = true)
+	@Element(name="organisation_id", required=false)
+	private Organisation organisation;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "user_id", insertable = true, updatable = true)
+	@ForeignKey(enabled = true)
+	private User user;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	@Element(data=true)
+	private boolean deleted;
+	
+	@Column(name = "is_moderator")
+	@Element(data = true, required = false)
+	private Boolean isModerator;
+	
+	public Organisation_Users(Organisation organisation) {
+		this.organisation = organisation;
+	}
+	
+	public Organisation getOrganisation() {
+		return organisation;
+	}
+
+	public void setOrganisation(Organisation organisation) {
+		this.organisation = organisation;
+	}
+
+	public Long getOrganisation_users_id() {
+		return organisation_users_id;
+	}
+
+	public void setOrganisation_users_id(Long organisation_users_id) {
+		this.organisation_users_id = organisation_users_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Boolean getIsModerator() {
+		return isModerator;
+	}
+
+	public void setIsModerator(Boolean isModerator) {
+		this.isModerator = isModerator;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((organisation_users_id == null) ? 0 : organisation_users_id.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		Organisation_Users other = (Organisation_Users) obj;
+		if (organisation_users_id == null) {
+			if (other.organisation_users_id != null)
+				return false;
+		} else if (!organisation_users_id.equals(other.organisation_users_id))
+			return false;
+		return true;
+	}
+
+	@Override
+	public String toString() {
+		return "Organisation_Users [id="
+				+ organisation_users_id + ", organisation=" + organisation
+				+ ", user=" + user + ", deleted=" + deleted + "]";
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java b/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
new file mode 100644
index 0000000..89c5c3d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
@@ -0,0 +1,274 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getPrivateMessages", query = "SELECT c FROM PrivateMessage c ORDER BY c.id"),
+	@NamedQuery(name = "getPrivateMessageById", query = "SELECT c FROM PrivateMessage c WHERE c.id = :id "),
+	@NamedQuery(name = "updatePrivateMessagesReadStatus", query = "UPDATE PrivateMessage c SET c.isRead = :isRead " +
+			"WHERE c.id IN (:ids) "),
+	@NamedQuery(name = "moveMailsToFolder", query = "UPDATE PrivateMessage c SET c.folderId = :folderId " +
+			"WHERE c.id IN (:ids) "),
+	@NamedQuery(name = "deletePrivateMessages", query = "DELETE FROM PrivateMessage c WHERE c.id IN (:ids) "),
+	@NamedQuery(name = "getPrivateMessagesByRoom", query = "SELECT c FROM PrivateMessage c WHERE c.room.rooms_id = :roomId ")
+})
+@Table(name = "private_message")
+@Root(name = "privatemessage")
+public class PrivateMessage implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 1L;
+	public final static long INBOX_FOLDER_ID = 0;
+	public final static long SENT_FOLDER_ID = -1;
+	public final static long TRASH_FOLDER_ID = -2;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true, name = "privateMessageId")
+	private long id;
+
+	@Column(name = "subject")
+	@Element(data = true, required = false)
+	private String subject;
+
+	@Lob
+	@Column(name = "message")
+	@Element(data = true, required = false)
+	private String message;
+
+	@Column(name = "inserted")
+	@Element(data = true)
+	private Date inserted;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "from_id")
+	@ForeignKey(enabled = true)
+	@Element(data = true, required = false)
+	private User from;
+
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
+	@JoinColumn(name = "to_id")
+	@ForeignKey(enabled = true)
+	@Element(data = true, required = false)
+	private User to;
+
+	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
+	@JoinColumn(name = "owner_id")
+	@ForeignKey(enabled = true)
+	@Element(data = true, required = false)
+	private User owner;
+
+	@Column(name = "booked_room")
+	@Element(data = true)
+	private boolean bookedRoom;
+
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name = "rooms_id")
+	@ForeignKey(enabled = true)
+	@Element(data = true, required = false)
+	private Room room;
+
+	@Column(name = "is_read")
+	@Element(data = true)
+	private boolean isRead;
+
+	@Element(data = true)
+	private boolean isTrash;
+
+	@Column(name = "parent_message_id")
+	@Element(data = true, required = false)
+	private Long parentMessage;
+
+	@Column(name = "private_message_folder_id")
+	@Element(data = true, name = "privateMessageFolderId")
+	private Long folderId;
+
+	@Column(name = "is_contact_request")
+	@Element(data = true)
+	private boolean isContactRequest;
+
+	@Column(name = "user_contact_id")
+	@Element(data = true, required = false)
+	private Long userContactId;
+
+	public PrivateMessage() {
+	}
+	
+	public PrivateMessage(PrivateMessage copy) {
+		subject = copy.subject;
+		message = copy.message;
+		from = copy.from;
+		to = copy.to;
+		owner = copy.owner;
+		bookedRoom = copy.bookedRoom;
+		room = copy.room;
+		isRead = copy.isRead;
+		parentMessage = copy.parentMessage;
+		folderId = copy.folderId;
+		isContactRequest = copy.isContactRequest;
+		userContactId = copy.userContactId;
+	}
+	
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public String getSubject() {
+		return subject;
+	}
+
+	public void setSubject(String subject) {
+		this.subject = subject;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Date getInserted() {
+		return inserted;
+	}
+
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+
+	public User getFrom() {
+		return from;
+	}
+
+	public void setFrom(User from) {
+		this.from = from;
+	}
+
+	public User getTo() {
+		return to;
+	}
+
+	public void setTo(User to) {
+		this.to = to;
+	}
+
+	public User getOwner() {
+		return owner;
+	}
+
+	public void setOwner(User owner) {
+		this.owner = owner;
+	}
+
+	public boolean isBookedRoom() {
+		return bookedRoom;
+	}
+
+	public void setBookedRoom(boolean bookedRoom) {
+		this.bookedRoom = bookedRoom;
+	}
+
+	public Room getRoom() {
+		return room;
+	}
+
+	public void setRoom(Room room) {
+		this.room = room;
+	}
+
+	public Long getParentMessage() {
+		return parentMessage;
+	}
+
+	public void setParentMessage(Long parentMessage) {
+		this.parentMessage = parentMessage;
+	}
+
+	@Deprecated
+	public boolean getIsTrash() {
+		return TRASH_FOLDER_ID == folderId;
+	}
+
+	@Deprecated
+	public void setIsTrash(boolean isTrash) {
+		if (isTrash) {
+			folderId = TRASH_FOLDER_ID;
+		}
+	}
+
+	public Long getFolderId() {
+		return folderId;
+	}
+
+	public void setFolderId(Long folderId) {
+		this.folderId = folderId;
+	}
+
+	public Boolean getIsRead() {
+		return isRead;
+	}
+
+	public void setIsRead(Boolean isRead) {
+		this.isRead = isRead;
+	}
+
+	public Boolean getIsContactRequest() {
+		return isContactRequest;
+	}
+
+	public void setIsContactRequest(Boolean isContactRequest) {
+		this.isContactRequest = isContactRequest;
+	}
+
+	public Long getUserContactId() {
+		return userContactId;
+	}
+
+	public void setUserContactId(Long userContactId) {
+		this.userContactId = userContactId;
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java b/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
new file mode 100644
index 0000000..aa51e35
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "private_messages_folder")
+@Root(name="privatemessagefolder")
+public class PrivateMessageFolder implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = 3689814412815025816L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(data=true)
+	private long privateMessageFolderId;
+	
+	@Column(name="folder_name")
+	@Element(data=true)
+	private String folderName;
+	
+	@Column(name="user_id")
+	@Element(data=true)
+	private Long userId;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="updated")
+	private Date updated;
+	
+	public long getPrivateMessageFolderId() {
+		return privateMessageFolderId;
+	}
+	public void setPrivateMessageFolderId(long privateMessageFolderId) {
+		this.privateMessageFolderId = privateMessageFolderId;
+	}
+	
+	public String getFolderName() {
+		return folderName;
+	}
+	public void setFolderName(String folderName) {
+		this.folderName = folderName;
+	}
+	
+	public Long getUserId() {
+		return userId;
+	}
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+	
+	public Date getUpdated() {
+		return updated;
+	}
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/Salutation.java b/src/db/java/org/apache/openmeetings/db/entity/user/Salutation.java
new file mode 100644
index 0000000..f8453ee
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/Salutation.java
@@ -0,0 +1,125 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@Table(name = "salutation")
+@NamedQueries({
+	@NamedQuery(name = "getSalutationById", query = "SELECT s FROM Salutation AS s WHERE s.salutations_id = :id")
+	, @NamedQuery(name = "getSalutations", query = "SELECT s FROM Salutation AS s")
+})
+@Root
+public class Salutation implements Serializable {
+	private static final long serialVersionUID = -5806449519074435223L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(name="id", data=true)
+	private Long salutations_id;
+	
+	@Column(name="name")
+	@Element(data=true, required=false)
+	private String name;
+	
+	@Column(name="starttime")
+	private Date starttime;
+	
+	@Column(name="updatetime")
+	private Date updatetime;
+	
+	@Column(name="deleted")
+	@Element(data=true, required=false)
+	private boolean deleted;
+	
+	@Column(name="fieldvalues_id")
+	@Element(data=true, required=false)
+	private Long fieldvalues_id;
+	
+	@Transient
+	private Fieldlanguagesvalues label;	
+
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+    
+	public Long getSalutations_id() {
+		return salutations_id;
+	}
+	public void setSalutations_id(Long salutations_id) {
+		this.salutations_id = salutations_id;
+	}
+
+    
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Long getFieldvalues_id() {
+		return fieldvalues_id;
+	}
+	public void setFieldvalues_id(Long fieldvalues_id) {
+		this.fieldvalues_id = fieldvalues_id;
+	}
+
+	public Fieldlanguagesvalues getLabel() {
+		return label;
+	}
+
+	public void setLabel(Fieldlanguagesvalues label) {
+		this.label = label;
+	}	
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/State.java b/src/db/java/org/apache/openmeetings/db/entity/user/State.java
new file mode 100644
index 0000000..a6c6fec
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/State.java
@@ -0,0 +1,128 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "getStateById", query = "select c from State as c " +
+			"where c.state_id = :state_id AND c.deleted <> :deleted"),
+	@NamedQuery(name = "getStates", query = "select c from State as c where c.deleted <> :deleted"),
+	@NamedQuery(name = "getStateByName", query = "select c from State as c " +
+			"where lower(c.name) LIKE :name AND c.deleted <> :deleted")
+})
+@Table(name = "state")
+public class State implements Serializable {
+	private static final long serialVersionUID = 1L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	private Long state_id;
+	
+	@Column(name = "name")
+	private String name;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Column(name = "deleted")
+	private boolean deleted;
+	
+	@Column(name = "shortName")
+	private String shortName;
+	
+	@Column(name = "code")
+	private int code;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getState_id() {
+		return state_id;
+	}
+
+	public void setState_id(Long state_id) {
+		this.state_id = state_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getShortName() {
+		return shortName;
+	}
+
+	public void setShortName(String shortName) {
+		this.shortName = shortName;
+	}
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	@Override
+	public String toString() {
+		return "State [id=" + state_id + ", name=" + name + ", deleted="
+				+ deleted + ", shortName=" + shortName + ", code=" + code + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/User.java b/src/db/java/org/apache/openmeetings/db/entity/user/User.java
new file mode 100644
index 0000000..1b642c5
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/User.java
@@ -0,0 +1,598 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import static org.apache.openmeetings.db.util.UserHelper.invalidPassword;
+
+import java.io.Serializable;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.CollectionTable;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.PrimaryKeyJoinColumn;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.openjpa.persistence.ElementDependent;
+import org.apache.openjpa.persistence.FetchAttribute;
+import org.apache.openjpa.persistence.FetchGroup;
+import org.apache.openjpa.persistence.FetchGroups;
+import org.apache.openjpa.persistence.LoadFetchGroup;
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.util.crypt.MD5;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.ElementList;
+import org.simpleframework.xml.Root;
+
+/**
+ * Entity to store user data, password field is {@link FetchType#LAZY}, so that
+ * is why there is an extra udpate statement at this moment
+ * 
+ * @author sebawagner, solomax
+ * 
+ */
+@Entity
+@FetchGroups({
+	@FetchGroup(name = "backupexport", attributes = { @FetchAttribute(name = "password") })
+	, @FetchGroup(name = "orgUsers", attributes = { @FetchAttribute(name = "organisation_users")})
+})
+@NamedQueries({
+	@NamedQuery(name = "getUserById", query = "SELECT u FROM User u WHERE u.user_id = :id"),
+	@NamedQuery(name = "getUsersByIds", query = "select c from User c where c.user_id IN :ids"),
+	@NamedQuery(name = "checkUserLogin", query = "SELECT COUNT(u) FROM User u WHERE ((:id > 0 AND u.user_id <> :id) OR (:id = 0)) "
+			+ "AND u.login = :login AND u.deleted = false"),
+	@NamedQuery(name = "checkUserEmail", query = "SELECT COUNT(u) FROM User u WHERE ((:id > 0 AND u.user_id <> :id) OR (:id = 0)) "
+			+ "AND u.adresses.email = :email AND u.deleted = false AND u.type <> :type"),
+	@NamedQuery(name = "getUserByLogin", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.login = :login"),
+	@NamedQuery(name = "getUserByEmail", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.adresses.email = :email"),
+	@NamedQuery(name = "getUserByHash",  query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.resethash = :resethash"),
+	@NamedQuery(name = "getContactByEmailAndUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.adresses.email = :email AND u.type = :type AND u.ownerId = :ownerId"), 
+	@NamedQuery(name = "selectMaxFromUsersWithSearch", query = "select count(c.user_id) from User c "
+			+ "where c.deleted = false " + "AND ("
+			+ "lower(c.login) LIKE :search "
+			+ "OR lower(c.firstname) LIKE :search "
+			+ "OR lower(c.lastname) LIKE :search )"),
+	@NamedQuery(name = "getAllUsers", query = "SELECT u FROM User u ORDER BY u.user_id"),
+	@NamedQuery(name = "checkPassword", query = "select count(c.user_id) from User c "
+			+ "where c.deleted = false " //
+			+ "AND c.user_id = :userId " //
+			+ "AND c.password LIKE :password"), //
+	@NamedQuery(name = "updatePassword", query = "UPDATE User u SET u.password = :password WHERE u.user_id = :userId"), //
+	@NamedQuery(name = "getNondeletedUsers", query = "SELECT u FROM User u WHERE u.deleted = false"),
+	@NamedQuery(name = "countNondeletedUsers", query = "SELECT COUNT(u) FROM User u WHERE u.deleted = false"),
+	@NamedQuery(name = "getUsersByOrganisationId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.organisation_users.organisation.organisation_id = :organisation_id"), 
+	@NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalUserId LIKE :externalId AND u.externalUserType LIKE :externalType"),
+	@NamedQuery(name = "getUserByLoginOrEmail", query = "SELECT u from User u WHERE u.deleted = false AND u.type = :type AND (u.login = :userOrEmail OR u.adresses.email = :userOrEmail)")
+})
+@Table(name = "om_user")
+@Root(name = "user")
+public class User implements Serializable, IDataProviderEntity {
+	private static final long serialVersionUID = -2265479712596674065L;
+	
+	@XmlType(namespace="org.apache.openmeetings.user.user.right")
+	public enum Right {
+		Admin			// access to Admin module
+		, Room			// enter the room
+		, Dashboard		// access the dashboard
+		, Login			// login to Om internal DB
+		, Soap			// use rest/soap calls
+	}
+	
+	@XmlType(namespace="org.apache.openmeetings.user.user.type")
+	public enum Type {
+		user
+		, ldap
+		, oauth
+		, external
+		, contact
+	}
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name = "id")
+	@Element(data = true)
+	private Long user_id;
+
+	@Column(name = "age")
+	@Element(data = true, required = false)
+	private Date age;
+
+	@Column(name = "firstname")
+	@Element(data = true, required = false)
+	private String firstname;
+
+	@Column(name = "lastlogin")
+	private Date lastlogin;
+
+	@Column(name = "lastname")
+	@Element(data = true, required = false)
+	private String lastname;
+
+	@Column(name = "lasttrans")
+	@Element(data = true, required = false)
+	private Long lasttrans;
+
+	@Column(name = "login")
+	@Element(data = true, required = false)
+	private String login;
+
+	@Basic(fetch = FetchType.LAZY)
+	@Column(name = "password")
+	@LoadFetchGroup("backupexport")
+	@Element(name = "pass", data = true, required = false)
+	private String password;
+
+	@Column(name = "regdate")
+	@Element(data = true, required = false)
+	private Date regdate;
+
+	@Column(name = "salutations_id")
+	@Element(name = "title_id", data = true, required = false)
+	private Long salutations_id;
+
+	@Column(name = "starttime")
+	private Date starttime;
+
+	@Column(name = "updatetime")
+	private Date updatetime;
+
+	@Column(name = "pictureuri")
+	@Element(data = true, required = false)
+	private String pictureuri;
+
+	@Column(name = "deleted")
+	@Element(data = true, required = false)
+	private boolean deleted;
+
+	@Column(name = "language_id")
+	@Element(data = true, required = false)
+	private Long language_id;
+
+	@Column(name = "resethash")
+	@Element(data = true, required = false)
+	private String resethash;
+
+	@Column(name = "activatehash")
+	@Element(data = true, required = false)
+	private String activatehash;
+
+	@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@JoinColumn(name = "adresses_id", insertable = true, updatable = true)
+	@ForeignKey(enabled = true)
+	@Element(name = "address", required = false)
+	private Address adresses;
+
+	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+	@JoinColumn(name = "user_id", insertable = true, updatable = true)
+	@ElementList(name = "organisations", required = false)
+	@ElementDependent
+	private List<Organisation_Users> organisation_users = new ArrayList<Organisation_Users>();
+
+	@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+	@PrimaryKeyJoinColumn(name="sip_user_id", referencedColumnName="id")
+	@Element(name = "sipUser", required = false)
+	private AsteriskSipUser sipUser;
+
+	// Vars to simulate external Users
+	@Column(name = "externalUserId")
+	@Element(data = true, required = false)
+	private String externalUserId;
+
+	@Column(name = "externalUserType")
+	@Element(data = true, required = false)
+	private String externalUserType;
+
+	/**
+	 * java.util.TimeZone Id
+	 */
+	@Column(name = "time_zone_id")
+	@Element(data = true, required = false)
+	private String timeZoneId;
+
+	@Transient
+	private Sessiondata sessionData;
+
+	@Column(name = "forceTimeZoneCheck")
+	@Element(data = true, required = false)
+	private Boolean forceTimeZoneCheck;
+
+	@Column(name = "sendSMS")
+	@Element(data = false, required = false)
+	private boolean sendSMS;
+
+	@Column(name = "user_offers")
+	@Element(data = true, required = false)
+	private String userOffers;
+
+	@Column(name = "user_searchs")
+	@Element(data = true, required = false)
+	private String userSearchs;
+
+	@Column(name = "show_contact_data")
+	@Element(data = true, required = false)
+	private Boolean showContactData;
+
+	@Column(name = "show_contact_data_to_contacts")
+	@Element(data = true, required = false)
+	private Boolean showContactDataToContacts;
+
+	@Column(name = "type")
+	@Element(data = true, required = false)
+	@Enumerated(EnumType.STRING)
+	private Type type = Type.user;
+
+	@Column(name = "owner_id")
+	@Element(data = true, required = false)
+	private Long ownerId;
+	
+	@ElementCollection(fetch = FetchType.EAGER)
+	@Column(name = "om_right")
+	@CollectionTable(name = "om_user_right", joinColumns = @JoinColumn(name = "user_id"))
+	@Enumerated(EnumType.STRING)
+	@ElementList(name="rights", data = true, required = false)
+	private Set<Right> rights = new HashSet<User.Right>();
+	
+	@Column(name = "domain_id")
+	@Element(data = true, required = false)
+	private Long domainId; // LDAP config id for LDAP, OAuth server id for OAuth
+	
+	public Long getUser_id() {
+		return user_id;
+	}
+
+	public void setUser_id(Long user_id) {
+		this.user_id = user_id;
+	}
+
+	public Address getAdresses() {
+		return adresses;
+	}
+
+	public void setAdresses(Address adresses) {
+		this.adresses = adresses;
+	}
+
+	public Date getAge() {
+		return age;
+	}
+
+	public void setAge(Date age) {
+		this.age = age == null ? new Date() :age;
+	}
+
+	public String getFirstname() {
+		return firstname;
+	}
+
+	public void setFirstname(String firstname) {
+		this.firstname = firstname;
+	}
+
+	public Date getLastlogin() {
+		return lastlogin;
+	}
+
+	public void setLastlogin(Date lastlogin) {
+		this.lastlogin = lastlogin;
+	}
+
+	public String getLastname() {
+		return lastname;
+	}
+
+	public void setLastname(String lastname) {
+		this.lastname = lastname;
+	}
+
+	public Long getLasttrans() {
+		return lasttrans;
+	}
+
+	public void setLasttrans(Long lasttrans) {
+		this.lasttrans = lasttrans;
+	}
+
+	public String getLogin() {
+		return login;
+	}
+
+	public void setLogin(String login) {
+		this.login = login;
+	}
+
+	public void updatePassword(ConfigurationDao configDao, String pass) throws NoSuchAlgorithmException {
+		updatePassword(configDao, pass, false);
+	}
+	
+	public void updatePassword(ConfigurationDao configDao, String pass, boolean empty) throws NoSuchAlgorithmException {
+		if (!empty) {
+			if (invalidPassword(pass, configDao)) {
+				throw new RuntimeException("Password of invalid length is provided");
+			}
+		}
+		String sipEnabled = configDao.getConfValue("red5sip.enable", String.class, "no");
+        if("yes".equals(sipEnabled)) {
+        	if (getSipUser() == null) {
+        		setSipUser(new AsteriskSipUser());
+        	}
+        	AsteriskSipUser u = getSipUser();
+        	String defaultRoomContext = configDao.getConfValue("red5sip.exten_context", String.class, "rooms");
+        	u.setName(login);
+        	u.setDefaultuser(login);
+        	u.setMd5secret(MD5.do_checksum(login + ":asterisk:" + pass));
+        	u.setContext(defaultRoomContext);
+        	u.setHost("dynamic");
+        } else {
+        	setSipUser(null);
+        }
+		password = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(pass);
+	}
+	
+	public String getPassword() {
+		return password;
+	}
+
+	@Deprecated //should not be used directly (for bean usage only)
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public Date getRegdate() {
+		return regdate;
+	}
+
+	public void setRegdate(Date regdate) {
+		this.regdate = regdate;
+	}
+
+	public Long getSalutations_id() {
+		return salutations_id;
+	}
+
+	public void setSalutations_id(Long salutations_id) {
+		this.salutations_id = salutations_id;
+	}
+
+	public Date getStarttime() {
+		return starttime;
+	}
+
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+
+	public boolean getDeleted() {
+		return deleted;
+	}
+
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public String getPictureuri() {
+		return pictureuri;
+	}
+
+	public void setPictureuri(String pictureuri) {
+		this.pictureuri = pictureuri;
+	}
+
+	public Long getLanguage_id() {
+		return language_id;
+	}
+
+	public void setLanguage_id(Long language_id) {
+		this.language_id = language_id;
+	}
+
+	public List<Organisation_Users> getOrganisation_users() {
+		if (organisation_users == null) {
+			organisation_users = new ArrayList<Organisation_Users>();
+		}
+		return organisation_users;
+	}
+
+	public void setOrganisation_users(List<Organisation_Users> organisation_users) {
+		if (organisation_users != null) {
+			this.organisation_users = organisation_users;
+		}
+	}
+
+	public String getResethash() {
+		return resethash;
+	}
+
+	public void setResethash(String resethash) {
+		this.resethash = resethash;
+	}
+
+	public String getActivatehash() {
+		return activatehash;
+	}
+
+	public void setActivatehash(String activatehash) {
+		this.activatehash = activatehash;
+	}
+
+	public String getExternalUserId() {
+		return externalUserId;
+	}
+
+	public void setExternalUserId(String externalUserId) {
+		this.externalUserId = externalUserId;
+	}
+
+	public String getExternalUserType() {
+		return externalUserType;
+	}
+
+	public void setExternalUserType(String externalUserType) {
+		this.externalUserType = externalUserType;
+	}
+
+	public Sessiondata getSessionData() {
+		return sessionData;
+	}
+
+	public void setSessionData(Sessiondata sessionData) {
+		this.sessionData = sessionData;
+	}
+
+	public AsteriskSipUser getSipUser() {
+		return sipUser;
+	}
+
+	public void setSipUser(AsteriskSipUser sipUser) {
+		this.sipUser = sipUser;
+	}
+
+	public String getTimeZoneId() {
+		return timeZoneId;
+	}
+	public void setTimeZoneId(String timeZoneId) {
+		this.timeZoneId = timeZoneId;
+	}
+
+	public Boolean getForceTimeZoneCheck() {
+		return forceTimeZoneCheck;
+	}
+
+	public void setForceTimeZoneCheck(Boolean forceTimeZoneCheck) {
+		this.forceTimeZoneCheck = forceTimeZoneCheck;
+	}
+
+	public boolean getSendSMS() {
+		return sendSMS;
+	}
+
+	public void setSendSMS(boolean sendSMS) {
+		this.sendSMS = sendSMS;
+	}
+
+	public String getUserOffers() {
+		return userOffers;
+	}
+
+	public void setUserOffers(String userOffers) {
+		this.userOffers = userOffers;
+	}
+
+	public String getUserSearchs() {
+		return userSearchs;
+	}
+
+	public void setUserSearchs(String userSearchs) {
+		this.userSearchs = userSearchs;
+	}
+
+	public Boolean getShowContactData() {
+		return showContactData;
+	}
+
+	public void setShowContactData(Boolean showContactData) {
+		this.showContactData = showContactData;
+	}
+
+	public Boolean getShowContactDataToContacts() {
+		return showContactDataToContacts;
+	}
+
+	public void setShowContactDataToContacts(Boolean showContactDataToContacts) {
+		this.showContactDataToContacts = showContactDataToContacts;
+	}
+
+	public String getPhoneForSMS() {
+		return getSendSMS() ? getAdresses().getPhone() : "";
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+	public void setType(Type type) {
+		this.type = type;
+	}
+	
+	public Long getOwnerId(){
+		return ownerId;
+	}
+	
+	public void setOwnerId(Long ownerId){
+		this.ownerId = ownerId;
+	}
+
+	public Set<Right> getRights() {
+		return rights;
+	}
+
+	public void setRights(Set<Right> rights) {
+		this.rights = rights;
+	}
+
+	public Long getDomainId() {
+		return domainId;
+	}
+
+	public void setDomainId(Long domainId) {
+		this.domainId = domainId;
+	}
+
+	@Override
+	public String toString() {
+		return "User [id=" + user_id + ", firstname=" + firstname
+				+ ", lastname=" + lastname + ", login=" + login
+				+ ", pictureuri=" + pictureuri + ", deleted=" + deleted
+				+ ", language_id=" + language_id + ", adresses=" + adresses
+				+ ", externalId=" + externalUserId + ", externalType=" + externalUserType
+				+ ", type=" + type + "]";
+	}
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/UserContact.java b/src/db/java/org/apache/openmeetings/db/entity/user/UserContact.java
new file mode 100644
index 0000000..0f7992d
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/UserContact.java
@@ -0,0 +1,169 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+	@NamedQuery(name = "deleteUserContact", query = "delete from UserContact u where u.userContactId = :userContactDeleteId"),
+	@NamedQuery(name = "deleteAllUserContacts", query = "delete from UserContact u where u.owner.user_id = :ownerId"),
+	@NamedQuery(name = "checkUserContacts", query = "select count(c.userContactId) from UserContact c " +
+			"where c.contact.user_id = :user_id AND c.owner.user_id = :ownerId "),
+	@NamedQuery(name = "getContactsByHash", query = "select c from UserContact c " +
+			"where c.hash like :hash "),
+	@NamedQuery(name = "getContactsByUserAndStatus", query = "select c from UserContact c " +
+			"where c.owner.user_id = :ownerId " +
+			"AND c.pending = :pending " +
+			"AND c.contact.deleted <> true"),
+	@NamedQuery(name = "getUserContactByShareCalendar", query = "select c from UserContact c "
+			+ "where c.contact.user_id = :userId "
+			+ "AND c.owner.user_id = :contactId "
+			+ "AND c.shareCalendar = :shareCalendar "
+			+ "AND c.contact.deleted <> true"),
+	@NamedQuery(name = "getContactsByShareCalendar", query = "select c from UserContact c " +
+			"where c.contact.user_id = :contactId " +
+			"AND c.shareCalendar = :shareCalendar " +
+			"AND c.contact.deleted <> true"),
+	@NamedQuery(name = "getContactRequestsByUserAndStatus", query = "select c from UserContact c " +
+			"where c.contact.user_id = :user_id " +
+			"AND c.pending = :pending " +
+			"AND c.contact.deleted <> true"),
+	@NamedQuery(name = "getContactsByUser", query = "SELECT c FROM UserContact c " +
+			"WHERE c.contact.user_id = :user_id " +
+			"AND c.contact.deleted <> true ORDER BY c.pending DESC"),
+	@NamedQuery(name = "countContactsByUser", query = "select COUNT(c) from UserContact c " +
+			"where c.contact.user_id = :user_id " +
+			"AND c.contact.deleted <> true"),
+	@NamedQuery(name = "getUserContactsById", query = "SELECT c FROM UserContact c WHERE c.userContactId = :userContactId"),
+	@NamedQuery(name = "getUserContacts", query = "SELECT c FROM UserContact c ORDER BY c.userContactId")
+})
+@Table(name = "user_contact")
+@Root(name="usercontact")
+public class UserContact implements Serializable {
+	private static final long serialVersionUID = 2391405538978996206L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+	@Element(data=true)
+	private long userContactId;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="user_id")
+	@Element(data=true, required=false)
+	private User contact;
+	
+	@ManyToOne(fetch = FetchType.EAGER)
+	@JoinColumn(name="owner_id")
+	@ForeignKey(enabled = true)
+	@Element(data=true, required=false)
+	private User owner;
+	
+	@Column(name="pending")
+	@Element(data=true)
+	private boolean pending;
+	
+	@Column(name="hash")
+	@Element(data=true, required = false)
+	private String hash;
+	
+	@Column(name="inserted")
+	private Date inserted;
+	
+	@Column(name="updated")
+	private Date updated;
+	
+	@Column(name="share_calendar")
+	@Element(data=true, required=false)
+	private boolean shareCalendar;
+	
+	public long getUserContactId() {
+		return userContactId;
+	}
+	public void setUserContactId(long userContactId) {
+		this.userContactId = userContactId;
+	}
+	
+	public User getContact() {
+		return contact;
+	}
+	public void setContact(User contact) {
+		this.contact = contact;
+	}
+	
+	public User getOwner() {
+		return owner;
+	}
+	public void setOwner(User owner) {
+		this.owner = owner;
+	}
+	
+	public boolean getPending() {
+		return pending;
+	}
+	public void setPending(boolean pending) {
+		this.pending = pending;
+	}
+	
+	public Date getInserted() {
+		return inserted;
+	}
+	public void setInserted(Date inserted) {
+		this.inserted = inserted;
+	}
+	
+	public Date getUpdated() {
+		return updated;
+	}
+	public void setUpdated(Date updated) {
+		this.updated = updated;
+	}
+	
+	public String getHash() {
+		return hash;
+	}
+	public void setHash(String hash) {
+		this.hash = hash;
+	}
+	
+	public boolean getShareCalendar() {
+		return shareCalendar;
+	}
+	public void setShareCalendar(boolean shareCalendar) {
+		this.shareCalendar = shareCalendar;
+	}
+	
+}
diff --git a/src/db/java/org/apache/openmeetings/db/entity/user/Userdata.java b/src/db/java/org/apache/openmeetings/db/entity/user/Userdata.java
new file mode 100644
index 0000000..4942482
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/entity/user/Userdata.java
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.entity.user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "user_data")
+public class Userdata implements Serializable {
+	private static final long serialVersionUID = 8365799229794940172L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	@Column(name="id")
+    private Long data_id;
+	
+	@Column(name="user_id")
+    private Long user_id;
+	
+	@Column(name="data_key")
+    private String data_key;
+	
+	@Column(name="data")
+    private String data;
+	
+	@Column(name = "starttime")
+	private Date starttime;
+	
+	@Column(name = "updatetime")
+	private Date updatetime;
+	
+	@Lob
+	@Column(name = "comment_field")
+    private String comment;
+	
+	@Column(name = "deleted")
+    private boolean deleted;
+
+	public String getComment() {
+		return comment;
+	}
+	public void setComment(String comment) {
+		this.comment = comment;
+	}
+
+	public String getData() {
+		return data;
+	}
+	public void setData(String data) {
+		this.data = data;
+	}
+
+	public String getData_key() {
+		return data_key;
+	}
+	public void setData_key(String data_key) {
+		this.data_key = data_key;
+	}
+    
+	public Long getData_id() {
+		return data_id;
+	}
+	public void setData_id(Long data_id) {
+		this.data_id = data_id;
+	}
+
+    
+	public Date getStarttime() {
+		return starttime;
+	}
+	public void setStarttime(Date starttime) {
+		this.starttime = starttime;
+	}
+    
+	public Date getUpdatetime() {
+		return updatetime;
+	}
+	public void setUpdatetime(Date updatetime) {
+		this.updatetime = updatetime;
+	}
+	
+	public boolean getDeleted() {
+		return deleted;
+	}
+	public void setDeleted(boolean deleted) {
+		this.deleted = deleted;
+	}
+
+	public Long getUser_id() {
+		return user_id;
+	}
+	public void setUser_id(Long user_id) {
+		this.user_id = user_id;
+	}
+
+
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/util/TimezoneUtil.java b/src/db/java/org/apache/openmeetings/db/util/TimezoneUtil.java
new file mode 100644
index 0000000..70df99a
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/util/TimezoneUtil.java
@@ -0,0 +1,226 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getLanguagesDir;
+import static org.apache.openmeetings.util.OmFileHelper.nameOfTimeZoneFile;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TimezoneUtil {
+	private static final Logger log = Red5LoggerFactory.getLogger(TimezoneUtil.class, webAppRootKey);
+	private static final Map<String, String> ICAL_TZ_MAP = new Hashtable<String, String>();
+	private static final Map<Long, String> ID_TZ_MAP = new Hashtable<Long, String>();
+
+	private static void initTimeZones() {
+		SAXReader reader = new SAXReader();
+		Document document;
+		try {
+			ICAL_TZ_MAP.clear();
+			ID_TZ_MAP.clear();
+			document = reader.read(new File(getLanguagesDir(), nameOfTimeZoneFile));
+
+			Element root = document.getRootElement();
+
+			// HACK based on the fact timezones are not changed
+			long id = 1;
+			for (@SuppressWarnings("rawtypes")
+			Iterator it = root.elementIterator("timezone"); it.hasNext();) {
+				Element item = (Element) it.next();
+				String timeZoneName = item.attributeValue("name");
+				String iCal = item.attributeValue("iCal");
+				ICAL_TZ_MAP.put(timeZoneName, iCal);
+				ID_TZ_MAP.put(id++, iCal);
+			}
+		} catch (DocumentException e) {
+			log.error("Unexpected error while reading old time zone list", e);
+		}
+	}
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	/**
+	 * Parameters: ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as
+	 * "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x
+	 * compatibility only and full names should be used.
+	 * 
+	 * Returns: the specified TimeZone, or the GMT zone if the given ID cannot be understood. <br/>
+	 * <br/>
+	 * TODO: Fall-back mechanism and maybe a log output if the given timeZoneId is not found in the list of available
+	 * TimeZones of the current java.util.TimeZone package of the Java SDK the the user is running <br/>
+	 * 
+	 * @param timeZoneId
+	 * @return
+	 */
+
+	public TimeZone getTimeZone(String timeZoneId) {
+
+		if (timeZoneId == null || timeZoneId.equals("")) {
+			return getDefaultTimeZone();
+		}
+
+		// see TODO in comments
+
+		return TimeZone.getTimeZone(timeZoneId);
+	}
+
+	/**
+	 * @return The current server configured time zone in the table configuration key: "default.timezone"
+	 */
+	public TimeZone getDefaultTimeZone() {
+
+		String defaultTzName = configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin");
+
+		TimeZone timeZoneByOmTimeZone = TimeZone.getTimeZone(defaultTzName);
+
+		if (timeZoneByOmTimeZone != null) {
+			return timeZoneByOmTimeZone;
+		}
+
+		// If everything fails take the servers default one
+		log.error("There is no correct time zone set in the configuration of OpenMeetings for the key default.timezone or key is missing in table, using default locale!");
+		return TimeZone.getDefault();
+
+	}
+
+	/**
+	 * Returns the timezone based on the user profile, if not return the timezone from the server
+	 * 
+	 * @param user
+	 * @return
+	 */
+	public TimeZone getTimeZone(User user) {
+
+		if (user != null && user.getTimeZoneId() != null) {
+
+			TimeZone timeZone = TimeZone.getTimeZone(user.getTimeZoneId());
+
+			if (timeZone != null) {
+				return timeZone;
+			}
+
+		}
+
+		// if user has not time zone get one from the server configuration
+		return getDefaultTimeZone();
+	}
+
+	/**
+	 * Return the timezone based on our internal jName
+	 * 
+	 * @param jName
+	 * @return
+	 */
+	public TimeZone getTimezoneByInternalJName(String jName) {
+		if (ICAL_TZ_MAP.isEmpty()) {
+			initTimeZones();
+		}
+		String omTimeZone = ICAL_TZ_MAP.get(jName);
+
+		if (omTimeZone == null) {
+			String err = String.format("There is not omTimeZone for this jName: '%s'", jName);
+			log.error(err);
+			throw new RuntimeException(err);
+		}
+		
+		TimeZone timeZone = TimeZone.getTimeZone(omTimeZone);
+
+		if (timeZone != null) {
+			return timeZone;
+		}
+		// if user has not time zone get one from the server configuration
+		return getDefaultTimeZone();
+	}
+
+	/**
+	 * Return the timezone based Id from omTimeZone table
+	 * 
+	 * @param jName
+	 * @return
+	 */
+	public TimeZone getTimezoneByOmTimeZoneId(Long omtimezoneId) {
+		if (ID_TZ_MAP.isEmpty()) {
+			initTimeZones();
+		}
+		String omTimeZone = ID_TZ_MAP.get(omtimezoneId);
+
+		TimeZone timeZone = TimeZone.getTimeZone(omTimeZone);
+
+		if (timeZone != null) {
+			return timeZone;
+		}
+
+		// if user has not time zone get one from the server configuration
+		return getDefaultTimeZone();
+	}
+
+	/**
+	 * We ignore the fact that a Date Object is always in UTC internally and treat it as if it contains only dd.mm.yyyy
+	 * HH:mm:ss. We need to do this cause we cannot trust the Date Object send from the client. We have the timeZone
+	 * information additional to the Date, so we use it to transform it now to a Calendar Object.
+	 * 
+	 * @param dateTime
+	 * @param timezone
+	 * @return
+	 */
+	public static Calendar getCalendarInTimezone(String dateTimeStr, TimeZone timezone) {
+
+		Date dateTime = CalendarPatterns.parseImportDate(dateTimeStr);
+
+		Calendar calOrig = Calendar.getInstance();
+		calOrig.setTime(dateTime);
+
+		Calendar cal = Calendar.getInstance(timezone);
+		cal.set(Calendar.YEAR, calOrig.get(Calendar.YEAR));
+		cal.set(Calendar.MONTH, calOrig.get(Calendar.MONTH));
+		cal.set(Calendar.DATE, calOrig.get(Calendar.DATE));
+		cal.set(Calendar.HOUR_OF_DAY, calOrig.get(Calendar.HOUR_OF_DAY));
+		cal.set(Calendar.MINUTE, calOrig.get(Calendar.MINUTE));
+		cal.set(Calendar.SECOND, calOrig.get(Calendar.SECOND));
+		cal.set(Calendar.MILLISECOND, 0);
+
+		return cal;
+	}
+
+	public static long _getOffset(TimeZone timezone) {
+		Calendar cal = Calendar.getInstance();
+		cal.setTimeZone(timezone);
+		return cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+	}
+
+}
diff --git a/src/db/java/org/apache/openmeetings/db/util/UserHelper.java b/src/db/java/org/apache/openmeetings/db/util/UserHelper.java
new file mode 100644
index 0000000..9983b7f
--- /dev/null
+++ b/src/db/java/org/apache/openmeetings/db/util/UserHelper.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.db.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PASS_MIN_LENGTH_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+
+public class UserHelper {
+	public static int getMinLoginLength(ConfigurationDao cfgDao) {
+		return cfgDao.getConfValue(CONFIG_LOGIN_MIN_LENGTH_KEY, Integer.class, "" + USER_LOGIN_MINIMUM_LENGTH);
+	}
+	
+	public static int getMinPasswdLength(ConfigurationDao cfgDao) {
+		return cfgDao.getConfValue(CONFIG_PASS_MIN_LENGTH_KEY, Integer.class, "" + USER_PASSWORD_MINIMUM_LENGTH);
+	}
+	
+	public static boolean invalidPassword(String pass, ConfigurationDao cfgDao) {
+		return (pass == null || pass.length() < getMinPasswdLength(cfgDao));
+	}
+}
diff --git a/src/doc/java/org/apache/openmeetings/doc/WebServiceDoclet.java b/src/doc/java/org/apache/openmeetings/doc/WebServiceDoclet.java
new file mode 100644
index 0000000..97094a8
--- /dev/null
+++ b/src/doc/java/org/apache/openmeetings/doc/WebServiceDoclet.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.doc;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.Tag;
+import com.sun.tools.doclets.standard.Standard;
+
+public class WebServiceDoclet extends Standard {
+	private static final Logger log = Red5LoggerFactory.getLogger(WebServiceDoclet.class, webAppRootKey);
+	
+	static final String baseTemplatePath = "xdocs";
+	static final String basePath = "docs";
+	static final String templateName = "ApiMethodsTemplate.vm";
+	static final String templateNameIndex = "ApiClassesTemplate.vm";
+
+	public static boolean start(RootDoc root) {
+
+		try {
+			
+			Velocity.init();
+			out("Start WebServiceDoclet templateNameNew " + templateName);
+			
+			ArrayList<Map<String,String>> classesParsed = new ArrayList<Map<String,String>>(root.classes().length);
+			
+			// iterate over all classes.
+			ClassDoc[] classes = root.classes();
+			for (int i = 0; i < classes.length; i++) {
+				// iterate over all methods and print their names.
+				
+				VelocityContext vContext = new VelocityContext();
+				vContext.put("className", classes[i].name());
+				vContext.put("classComment", classes[i].commentText());
+				
+				String defaultOutputName = classes[i].name();
+				for (Tag tag : classes[i].tags()) {
+					if (tag.name().equals("@webservice")) {
+						defaultOutputName = tag.text();
+					}
+				}
+				
+				vContext.put("webServiceName", defaultOutputName);
+				
+				HashMap<String,String> classItem = new HashMap<String,String>();
+				classItem.put("name",defaultOutputName);
+				classItem.put("comment",classes[i].commentText());
+				classesParsed.add(classItem);
+				
+				vContext.put("methods", classes[i].methods());
+				
+				FileWriter strWriter = new FileWriter(basePath
+						+ File.separatorChar + defaultOutputName + ".html");
+
+				Velocity.mergeTemplate(baseTemplatePath + File.separatorChar
+						+ templateName, "UTF-8", vContext, strWriter);
+				
+				strWriter.flush();
+				strWriter.close();
+
+			}
+			
+			
+			VelocityContext vIndexContext = new VelocityContext();
+			vIndexContext.put("classes", classesParsed);
+			
+			FileWriter newFileIndexWriter = new FileWriter(basePath
+					+ File.separatorChar + "WebserviceIndex.html");
+
+			Velocity.mergeTemplate(baseTemplatePath + File.separatorChar
+					+ templateNameIndex, "UTF-8", vIndexContext, newFileIndexWriter);
+			
+			newFileIndexWriter.flush();
+			newFileIndexWriter.close();
+			
+
+		} catch (Exception err) {
+			log.error("[start]", err);
+		}
+
+		// No error processing done, simply return true.
+		return true;
+	}
+
+	private static void out(String msg) {
+		System.out.println(msg);
+	}
+
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/AppointmentCategoryConverter.java b/src/install/java/org/apache/openmeetings/backup/AppointmentCategoryConverter.java
new file mode 100644
index 0000000..560b13f
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/AppointmentCategoryConverter.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class AppointmentCategoryConverter  extends OmConverter<AppointmentCategory> {
+	private AppointmentCategoryDao appointmentCategoryDaoImpl;
+	
+	public AppointmentCategoryConverter() {
+		//default constructor is for export
+	}
+	
+	public AppointmentCategoryConverter(AppointmentCategoryDao appointmentCategoryDaoImpl) {
+		this.appointmentCategoryDaoImpl = appointmentCategoryDaoImpl;
+	}
+	
+	public AppointmentCategory read(InputNode node) throws Exception {
+		return appointmentCategoryDaoImpl.get(getlongValue(node));
+	}
+
+	public void write(OutputNode node, AppointmentCategory value)
+			throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getCategoryId());
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/AppointmentConverter.java b/src/install/java/org/apache/openmeetings/backup/AppointmentConverter.java
new file mode 100644
index 0000000..947d769
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/AppointmentConverter.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class AppointmentConverter extends OmConverter<Appointment> {
+	private AppointmentDao appointmentDao;
+	private Map<Long, Long> idMap;
+	
+	public AppointmentConverter() {
+		//default constructor is for export
+	}
+	
+	public AppointmentConverter(AppointmentDao appointmentDao, Map<Long, Long> idMap) {
+		this.appointmentDao = appointmentDao;
+		this.idMap = idMap;
+	}
+	
+	public Appointment read(InputNode node) throws Exception {
+		long oldId = getlongValue(node);
+		long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+		
+		Appointment a = appointmentDao.getAppointmentByIdBackup(newId);
+		return a == null ? new Appointment() : a;
+	}
+
+	public void write(OutputNode node, Appointment value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getId());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java b/src/install/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
new file mode 100644
index 0000000..62c7172
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/AppointmentReminderTypeConverter.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class AppointmentReminderTypeConverter extends OmConverter<AppointmentReminderTyps> {
+	private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
+	
+	public AppointmentReminderTypeConverter() {
+		//default constructor is for export
+	}
+	
+	public AppointmentReminderTypeConverter(AppointmentReminderTypDao appointmentReminderTypDaoImpl) {
+		this.appointmentReminderTypDaoImpl = appointmentReminderTypDaoImpl;
+	}
+	
+	public AppointmentReminderTyps read(InputNode node) throws Exception {
+		return appointmentReminderTypDaoImpl.get(getlongValue(node));
+	}
+
+	public void write(OutputNode node, AppointmentReminderTyps value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getTypId());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/BackupExport.java b/src/install/java/org/apache/openmeetings/backup/BackupExport.java
new file mode 100644
index 0000000..b6e0be5
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/BackupExport.java
@@ -0,0 +1,594 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomOrganisationDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.convert.Registry;
+import org.simpleframework.xml.convert.RegistryStrategy;
+import org.simpleframework.xml.core.Persister;
+import org.simpleframework.xml.strategy.Strategy;
+import org.simpleframework.xml.stream.Format;
+import org.simpleframework.xml.stream.NodeBuilder;
+import org.simpleframework.xml.stream.OutputNode;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+public class BackupExport {
+	private static final Logger log = Red5LoggerFactory.getLogger(BackupExport.class, webAppRootKey);
+	private static final String BACKUP_COMMENT = 
+			"###############################################\n"
+			+ "This File is auto-generated by the Backup Tool \n"
+			+ "you should use the BackupPanel to modify or change this file \n"
+			+ "see http://openmeetings.apache.org/Upgrade.html for Details \n"
+			+ "###############################################\n";
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+	@Autowired
+	private FlvRecordingDao flvRecordingDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private LdapConfigDao ldapConfigDao;
+	@Autowired
+	private PrivateMessagesDao privateMessagesDao;
+	@Autowired
+	private PrivateMessageFolderDao privateMessageFolderDao;
+	@Autowired
+	private UserContactsDao userContactsDao;
+	@Autowired
+	private PollDao pollManager;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private ChatDao chatDao;
+	@Autowired
+	private OAuth2Dao auth2Dao;
+	@Autowired
+	private ServerDao serverDao;
+	@Autowired
+	private OrganisationDao organisationDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private RoomOrganisationDao roomOrganisationDao;
+
+	public void performExport(File filePath, File backup_dir, boolean includeFiles, ProgressHolder progressHolder) throws Exception {
+		if (!backup_dir.exists()) {
+			backup_dir.mkdirs();
+		}
+		Serializer simpleSerializer = new Persister();
+		
+		progressHolder.setProgress(0);
+		/*
+		 * ##################### Backup Organizations
+		 */
+		writeList(simpleSerializer, backup_dir, "organizations.xml",
+				"organisations", organisationDao.get(0, Integer.MAX_VALUE));
+		progressHolder.setProgress(5);
+		/*
+		 * ##################### Backup Users
+		 */
+		exportUsers(backup_dir, usersDao.getAllBackupUsers());
+		progressHolder.setProgress(10);
+
+		/*
+		 * ##################### Backup Room
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(RoomType.class, RoomTypeConverter.class);
+			
+			writeList(serializer, backup_dir, "rooms.xml", "rooms", roomDao.get());
+			progressHolder.setProgress(15);
+		}
+
+		/*
+		 * ##################### Backup Room Organizations
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(Organisation.class, OrganisationConverter.class);
+			registry.bind(Room.class, RoomConverter.class);
+			
+			writeList(serializer, backup_dir, "rooms_organisation.xml",
+					"room_organisations", roomOrganisationDao.get());
+			progressHolder.setProgress(20);
+		}
+
+		/*
+		 * ##################### Backup Appointments
+		 */
+		{
+			List<Appointment> list = appointmentDao.getAppointments();
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(AppointmentCategory.class, AppointmentCategoryConverter.class);
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(AppointmentReminderTyps.class, AppointmentReminderTypeConverter.class);
+			registry.bind(Room.class, RoomConverter.class);
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getStart().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "appointements.xml", "appointments", list);
+			progressHolder.setProgress(25);
+		}
+
+		/*
+		 * ##################### Backup Meeting Members
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(Appointment.class, AppointmentConverter.class);
+			
+			writeList(serializer, backup_dir, "meetingmembers.xml",
+					"meetingmembers", meetingMemberDao.getMeetingMembers());
+			progressHolder.setProgress(30);
+		}
+
+		/*
+		 * ##################### LDAP Configs
+		 */
+		List<LdapConfig> ldapList = ldapConfigDao.get();
+		if (!ldapList.isEmpty()) {
+			ldapList.remove(0);
+		}
+		writeList(simpleSerializer, backup_dir, "ldapconfigs.xml", "ldapconfigs", ldapList);
+		progressHolder.setProgress(35);
+
+		/*
+		 * ##################### Cluster servers
+		 */
+		writeList(simpleSerializer, backup_dir, "servers.xml", "servers", serverDao.get(0, Integer.MAX_VALUE));
+		progressHolder.setProgress(40);
+
+		/*
+		 * ##################### OAuth2 servers
+		 */
+		writeList(simpleSerializer, backup_dir, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE));
+		progressHolder.setProgress(45);
+
+		/*
+		 * ##################### Private Messages
+		 */
+		{
+			List<PrivateMessage> list = privateMessagesDao.get(0, Integer.MAX_VALUE);
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(Room.class, RoomConverter.class);
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "privateMessages.xml",
+					"privatemessages", list);
+			progressHolder.setProgress(50);
+		}
+
+		/*
+		 * ##################### Private Message Folders
+		 */
+		writeList(simpleSerializer, backup_dir, "privateMessageFolder.xml",
+				"privatemessagefolders", privateMessageFolderDao.get(0, Integer.MAX_VALUE));
+		progressHolder.setProgress(55);
+
+		/*
+		 * ##################### User Contacts
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			
+			writeList(serializer, backup_dir, "userContacts.xml",
+					"usercontacts", userContactsDao.getUserContacts());
+			progressHolder.setProgress(60);
+		}
+
+		/*
+		 * ##################### File-Explorer
+		 */
+		{
+			List<FileExplorerItem> list = fileExplorerItemDao.getFileExplorerItems();
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "fileExplorerItems.xml",
+					"fileExplorerItems", list);
+			progressHolder.setProgress(65);
+		}
+
+		/*
+		 * ##################### Recordings
+		 */
+		{
+			List<FlvRecording> list = flvRecordingDao.getAllFlvRecordings();
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "flvRecordings.xml",
+					"flvrecordings", list);
+			progressHolder.setProgress(70);
+		}
+
+		/*
+		 * ##################### Polls
+		 */
+		{
+			List<RoomPoll> list = pollManager.getPollListBackup();
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(Room.class, RoomConverter.class);
+			registry.bind(PollType.class, PollTypeConverter.class);
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getCreated().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "roompolls.xml", "roompolls", list);
+			progressHolder.setProgress(75);
+		}
+
+		/*
+		 * ##################### Config
+		 */
+		{
+			List<Configuration> list = configurationDao.getConfigurations(
+					0, Integer.MAX_VALUE, "c.configuration_id", true);
+			Registry registry = new Registry();
+			registry.bind(State.class, StateConverter.class);
+			registry.bind(User.class, UserConverter.class);
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getStarttime().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "configs.xml", "configs", list);
+			progressHolder.setProgress(80);
+		}
+		
+		/*
+		 * ##################### Chat
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, UserConverter.class);
+			registry.bind(Room.class, RoomConverter.class);
+			List<ChatMessage> list = chatDao.get(0, Integer.MAX_VALUE);
+			if (list != null && list.size() > 0) {
+				registry.bind(list.get(0).getSent().getClass(), DateConverter.class);
+			}
+			
+			writeList(serializer, backup_dir, "chat_messages.xml", "chat_messages", list);
+			progressHolder.setProgress(85);
+		}
+		if (includeFiles) {
+			/*
+			 * ##################### Backup Room Files
+			 */
+			File targetRootDir = new File(backup_dir, "roomFiles");
+
+			if (!targetRootDir.exists()) {
+				targetRootDir.mkdir();
+			}
+
+			File sourceDir = OmFileHelper.getUploadDir();
+
+			File[] files = sourceDir.listFiles();
+			for (File file : files) {
+				if (file.isDirectory()) {
+					if (!file.getName().equals("backup") && !file.getName().equals("import")) {
+						log.debug("### " + file.getName());
+
+						FileHelper.copyRec(file, new File(targetRootDir, file.getName()));
+					}
+				}
+			}
+
+			/*
+			 * ##################### Backup Recording Files
+			 */
+			File targetDirRec = new File(backup_dir, "recordingFiles");
+
+			if (!targetDirRec.exists()) {
+				targetDirRec.mkdir();
+			}
+
+			File sourceDirRec = OmFileHelper.getStreamsHibernateDir();
+
+			FileHelper.copyRec(sourceDirRec, targetDirRec);
+			progressHolder.setProgress(90);
+		}
+
+		writeZipDir(backup_dir, filePath);
+		progressHolder.setProgress(100);
+		log.debug("---Done");
+	}
+	
+	private <T> void writeList(Serializer ser, File backup_dir, String fileName, String listElement, List<T> list) throws Exception {
+		FileOutputStream fos = new FileOutputStream(new File(backup_dir, fileName));
+		writeList(ser, fos, listElement, list);
+	}
+	
+	private <T> void writeList(Serializer ser, OutputStream os, String listElement, List<T> list) throws Exception {
+		Format format = new Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+		OutputNode doc = NodeBuilder.write(new OutputStreamWriter(os, "UTF-8"), format);
+		OutputNode root = doc.getChild("root");
+		root.setComment(BACKUP_COMMENT);
+		OutputNode listNode = root.getChild(listElement);
+
+		if (list != null) {
+			for (T t : list) {
+				try {
+					ser.write(t, listNode);
+				} catch (Exception e) {
+					log.debug("Exception While writing node of type: " + t.getClass(), e);
+				}
+			}
+		}
+		root.commit();
+	}
+
+	public void exportUsers(File backup_dir, List<User> list) throws Exception {
+		FileOutputStream fos = new FileOutputStream(new File(backup_dir, "users.xml"));
+		exportUsers(fos, list);
+	}
+	
+	public void exportUsers(OutputStream os, List<User> list) throws Exception {
+		Registry registry = new Registry();
+		Strategy strategy = new RegistryStrategy(registry);
+		Serializer serializer = new Persister(strategy);
+
+		registry.bind(Organisation.class, OrganisationConverter.class);
+		registry.bind(State.class, StateConverter.class);
+		if (list != null && list.size() > 0) {
+			registry.bind(list.get(0).getRegdate().getClass(), DateConverter.class);
+		}
+		
+		writeList(serializer, os, "users", list);
+	}
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
+	 * , javax.servlet.http.HttpServletResponse)
+	 */
+	public void service(HttpServletRequest request, HttpServletResponse response, ServletContext ctx) throws ServletException, IOException {
+		String sid = request.getParameter("sid");
+		if (sid == null) {
+			sid = "default";
+		}
+		log.debug("sid: " + sid);
+
+		Long users_id = sessiondataDao.checkSession(sid);
+		Set<Right> rights = usersDao.get(users_id).getRights();
+
+		log.debug("users_id: " + users_id);
+		log.debug("user_level: " + rights);
+
+		if (AuthLevelUtil.hasAdminLevel(rights)) {
+			// if (true) {
+
+			String includeFileOption = request.getParameter("includeFileOption");
+			boolean includeFiles = includeFileOption == null || "yes".equals(includeFileOption);
+
+			String moduleName = request.getParameter("moduleName");
+			if (moduleName == null) {
+				moduleName = "moduleName";
+			}
+			log.debug("moduleName: " + moduleName);
+
+			if (moduleName.equals("backup")) {
+
+				/*
+				 * ##################### Create Base Folder structure
+				 */
+
+				File working_dir = OmFileHelper.getUploadBackupDir();
+
+				String dateString = "backup_"
+						+ CalendarPatterns.getTimeForStreamId(new Date());
+
+				File backup_dir = new File(working_dir, dateString);
+				String requestedFile = dateString + ".zip";
+				File backupFile = new File(backup_dir, requestedFile);
+
+				try {
+					performExport(backupFile, backup_dir, includeFiles, new ProgressHolder());
+
+					response.reset();
+					response.resetBuffer();
+					response.setContentType("APPLICATION/OCTET-STREAM");
+					response.setHeader("Content-Disposition", "attachment; filename=\"" + requestedFile + "\"");
+					response.setHeader("Content-Length", "" + backupFile.length());
+
+					OutputStream out = response.getOutputStream();
+					OmFileHelper.copyFile(backupFile, out);
+
+					out.flush();
+					out.close();
+				} catch (Exception er) {
+					log.error("Error exporting: ", er);
+				}
+
+				if (backupFile.exists()) {
+					// log.debug("DELETE :1: "+backupFile.getCanonicalPath());
+					backupFile.delete();
+				}
+
+				FileHelper.removeRec(backup_dir);
+			}
+		} else {
+			log.debug("ERROR LangExport: not authorized FileDownload "
+					+ (new Date()));
+		}
+	}
+
+	private void writeZipDir(File directoryToZip, File zipFile) throws IOException {
+		FileOutputStream fos = null;
+		ZipOutputStream zos = null;
+		try {
+			fos = new FileOutputStream(zipFile);
+			zos = new ZipOutputStream(fos);
+			
+			writeZipDir(directoryToZip.toURI(), directoryToZip, zos, zipFile);
+		} finally {
+			if (zos != null) {
+				try {
+					zos.close();
+				} catch (IOException e) {
+					log.debug("Enexpected error while closing ZipOutputStream", e);
+				}
+			}
+			if (fos != null) {
+				try {
+					fos.close();
+				} catch (IOException e) {
+					log.debug("Enexpected error while closing FileOutputStream", e);
+				}
+			}
+		}
+	}
+	
+	private void writeZipDir(URI base, File dir, ZipOutputStream zos, File zipFile) throws IOException {
+		for (File file : dir.listFiles()) {
+			if (zipFile.equals(file)) {
+				continue;
+			}
+			if (file.isDirectory()) {
+				writeZipDir(base, file, zos, zipFile);
+			} else {
+				String path = base.relativize(file.toURI()).toString();
+				log.debug("Writing '" + path + "' to zip file");
+				ZipEntry zipEntry = new ZipEntry(path);
+				zos.putNextEntry(zipEntry);
+
+				OmFileHelper.copyFile(file, zos);
+				zos.closeEntry();
+			}
+		}
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/BackupImport.java b/src/install/java/org/apache/openmeetings/backup/BackupImport.java
new file mode 100644
index 0000000..9ca21e6
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/BackupImport.java
@@ -0,0 +1,1016 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import static org.apache.commons.transaction.util.FileHelper.copyRec;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.TRASH_FOLDER_ID;
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadProfilesUserDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadRoomDir;
+import static org.apache.openmeetings.util.OmFileHelper.profilesPrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomOrganisationDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+import org.apache.openmeetings.db.entity.room.RoomPollAnswers;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.crypt.MD5Implementation;
+import org.red5.logging.Red5LoggerFactory;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.convert.Registry;
+import org.simpleframework.xml.convert.RegistryStrategy;
+import org.simpleframework.xml.core.Persister;
+import org.simpleframework.xml.strategy.Strategy;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.NodeBuilder;
+import org.simpleframework.xml.transform.RegistryMatcher;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+public class BackupImport {
+	private static final Logger log = Red5LoggerFactory.getLogger(BackupImport.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private StateDao statemanagement;
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDaoImpl;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private FlvRecordingDao flvRecordingDao;
+	@Autowired
+	private PrivateMessageFolderDao privateMessageFolderDao;
+	@Autowired
+	private PrivateMessagesDao privateMessagesDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private LdapConfigDao ldapConfigDao;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+	@Autowired
+	private UserContactsDao userContactsDao;
+	@Autowired
+	private PollDao pollManager;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private TimezoneUtil tzUtil;
+	@Autowired
+	private ChatDao chatDao;
+	@Autowired
+	private ServerDao serverDao;
+	@Autowired
+	private OAuth2Dao auth2Dao;
+	@Autowired
+	private OrganisationDao organisationDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+	@Autowired
+	private RoomOrganisationDao roomOrganisationDao;
+
+	private final Map<Long, Long> usersMap = new HashMap<Long, Long>();
+	private final Map<Long, Long> organisationsMap = new HashMap<Long, Long>();
+	private final Map<Long, Long> appointmentsMap = new HashMap<Long, Long>();
+	private final Map<Long, Long> roomsMap = new HashMap<Long, Long>();
+	private final Map<Long, Long> messageFoldersMap = new HashMap<Long, Long>();
+	private final Map<Long, Long> userContactsMap = new HashMap<Long, Long>();
+	private final Map<String, Integer> userEmailMap = new HashMap<String, Integer>();
+
+	private enum Maps {
+		USERS, ORGANISATIONS, APPOINTMENTS, ROOMS, MESSAGEFOLDERS, USERCONTACTS
+	};
+
+	public void performImport(InputStream is) throws Exception {
+		File working_dir = OmFileHelper.getUploadImportDir();
+		if (!working_dir.exists()) {
+			working_dir.mkdir();
+		}
+		usersMap.clear();
+		organisationsMap.clear();
+		appointmentsMap.clear();
+		roomsMap.clear();
+		messageFoldersMap.clear();
+		userContactsMap.clear();
+		userEmailMap.clear();
+		messageFoldersMap.put(INBOX_FOLDER_ID, INBOX_FOLDER_ID);
+		messageFoldersMap.put(SENT_FOLDER_ID, SENT_FOLDER_ID);
+		messageFoldersMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID);
+		File f = OmFileHelper.getNewDir(working_dir, "import_" + CalendarPatterns.getTimeForStreamId(new Date()));
+
+		log.debug("##### WRITE FILE TO: " + f);
+		
+		ZipInputStream zipinputstream = new ZipInputStream(is);
+		ZipEntry zipentry = zipinputstream.getNextEntry();
+		while (zipentry != null) {
+			String fName = zipentry.getName();
+			if (File.pathSeparatorChar != '\\' && fName.indexOf('\\') > -1) {
+				fName = fName.replace('\\', '/');
+			}
+			// for each entry to be extracted
+			File fentry = new File(f, fName);
+			File dir = fentry.isDirectory() ? fentry : fentry.getParentFile();
+			dir.mkdirs();
+			if (fentry.isDirectory()) {
+				zipentry = zipinputstream.getNextEntry();
+				continue;
+			}
+
+			FileHelper.copy(zipinputstream, fentry);
+			zipinputstream.closeEntry();
+			zipentry = zipinputstream.getNextEntry();
+
+		}
+		zipinputstream.close();
+
+		/*
+		 * ##################### Import Configs
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
+			Serializer serializer = new Persister(strategy, matcher);
+
+			matcher.bind(Long.class, LongTransform.class);
+			registry.bind(Date.class, DateConverter.class);
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			
+			List<Configuration> list = readList(serializer, f, "configs.xml", "configs", Configuration.class, true);
+			for (Configuration c : list) {
+				if (c.getConf_key() == null || c.isDeleted()) {
+					continue;
+				}
+				Configuration cfg = configurationDao.forceGet(c.getConf_key());
+				if (cfg != null && !cfg.isDeleted()) {
+					log.warn("Non deleted configuration with same key is found! old value: {}, new value: {}", cfg.getConf_value(), c.getConf_value());
+				}
+				c.setConfiguration_id(cfg == null ? null : cfg.getConfiguration_id());
+				if (c.getUser() != null && c.getUser().getUser_id() == null) {
+					c.setUser(null);
+				}
+				if (CONFIG_CRYPT_KEY.equals(c.getConf_key())) {
+					try {
+						Class.forName(c.getConf_value());
+					} catch (ClassNotFoundException e) {
+						c.setConf_value(MD5Implementation.class.getCanonicalName());
+					}
+				}
+				configurationDao.update(c, null);
+			}
+		}
+
+		log.info("Configs import complete, starting organization import");
+		/*
+		 * ##################### Import Organizations
+		 */
+		Serializer simpleSerializer = new Persister();
+		{
+			List<Organisation> list = readList(simpleSerializer, f, "organizations.xml", "organisations", Organisation.class);
+			for (Organisation o : list) {
+				long oldId = o.getOrganisation_id();
+				o.setOrganisation_id(null);
+				o = organisationDao.update(o, null);
+				organisationsMap.put(oldId, o.getOrganisation_id());
+			}
+		}
+
+		log.info("Organizations import complete, starting user import");
+		/*
+		 * ##################### Import Users
+		 */
+		{
+			String jNameTimeZone = configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin");
+			List<User> list = readUserList(f, "users.xml", "users");
+			int minLoginLength = getMinLoginLength(configurationDao);
+			for (User u : list) {
+				if (u.getLogin() == null) {
+					continue;
+				}
+				if (u.getType() == Type.contact && u.getLogin().length() < minLoginLength) {
+					u.setLogin(UUID.randomUUID().toString());
+				}
+				//FIXME: OPENMEETINGS-750
+				//Convert old Backups with OmTimeZone to new schema
+				
+				String tz = u.getTimeZoneId();
+				if (tz == null) {
+					u.setTimeZoneId(jNameTimeZone);
+					u.setForceTimeZoneCheck(true);
+				} else {
+					u.setForceTimeZoneCheck(false);
+				}
+				
+				u.setStarttime(new Date());
+				long userId = u.getUser_id();
+				u.setUser_id(null);
+				if (u.getSipUser() != null && u.getSipUser().getId() != 0) {
+					u.getSipUser().setId(0);
+				}
+				usersDao.update(u, -1L);
+				usersMap.put(userId, u.getUser_id());
+			}
+		}
+
+		log.info("Users import complete, starting room import");
+		/*
+		 * ##################### Import Rooms
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
+			Serializer serializer = new Persister(strategy, matcher);
+
+			matcher.bind(Long.class, LongTransform.class);
+			matcher.bind(Integer.class, IntegerTransform.class);
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			registry.bind(RoomType.class, new RoomTypeConverter(roomTypeDao));
+			
+			List<Room> list = readList(serializer, f, "rooms.xml", "rooms", Room.class);
+			for (Room r : list) {
+				Long roomId = r.getRooms_id();
+
+				// We need to reset ids as openJPA reject to store them otherwise
+				r.setRooms_id(null);
+				if (r.getModerators() != null) {
+					for (Iterator<RoomModerator> i = r.getModerators().iterator(); i.hasNext();) {
+						RoomModerator rm = i.next();
+						if (rm.getUser().getUser_id() == null) {
+							i.remove();
+						}
+					}
+				}
+				r = roomDao.update(r, null);
+				roomsMap.put(roomId, r.getRooms_id());
+			}
+		}
+
+		log.info("Room import complete, starting room organizations import");
+		/*
+		 * ##################### Import Room Organisations
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(Organisation.class, new OrganisationConverter(orgDao, organisationsMap));
+			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
+			
+			List<RoomOrganisation> list = readList(serializer, f, "rooms_organisation.xml", "room_organisations", RoomOrganisation.class);
+			for (RoomOrganisation ro : list) {
+				if (!ro.getDeleted() && ro.getRoom() != null && ro.getOrganisation() != null && ro.getOrganisation().getOrganisation_id() != null) {
+					// We need to reset this as openJPA reject to store them otherwise
+					ro.setRooms_organisation_id(null);
+					roomOrganisationDao.update(ro, null);
+				}
+			}
+		}
+
+		log.info("Room organizations import complete, starting chat messages import");
+		/*
+		 * ##################### Import Chat messages
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<ChatMessage> list = readList(serializer, f, "chat_messages.xml", "chat_messages", ChatMessage.class, true);
+			for (ChatMessage m : list) {
+				chatDao.update(m);
+			}
+		}
+		
+		log.info("Chat messages import complete, starting appointement import");
+		/*
+		 * ##################### Import Appointements
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(AppointmentCategory.class, new AppointmentCategoryConverter(appointmentCategoryDaoImpl));
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			registry.bind(AppointmentReminderTyps.class, new AppointmentReminderTypeConverter(appointmentReminderTypDaoImpl));
+			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<Appointment> list = readList(serializer, f, "appointements.xml", "appointments", Appointment.class);
+			for (Appointment a : list) {
+				Long appId = a.getId();
+
+				// We need to reset this as openJPA reject to store them otherwise
+				a.setId(null);
+				if (a.getOwner() != null && a.getOwner().getUser_id() == null) {
+					a.setOwner(null);
+				}
+				if (a.getRoom() != null && a.getRoom().getRooms_id() == null) {
+					a.setRoom(null);
+				}
+				Long newAppId = appointmentDao.addAppointmentObj(a);
+				appointmentsMap.put(appId, newAppId);
+			}
+		}
+
+		log.info("Appointement import complete, starting meeting members import");
+		/*
+		 * ##################### Import MeetingMembers
+		 * 
+		 * Reminder Invitations will be NOT send!
+		 */
+		{
+			List<MeetingMember> list = readMeetingMemberList(f, "meetingmembers.xml", "meetingmembers");
+			for (MeetingMember ma : list) {
+				meetingMemberDao.update(ma);
+			}
+		}
+
+		log.info("Meeting members import complete, starting ldap config import");
+		/*
+		 * ##################### Import LDAP Configs
+		 */
+		{
+			List<LdapConfig> list = readList(simpleSerializer, f, "ldapconfigs.xml", "ldapconfigs", LdapConfig.class, true);
+			for (LdapConfig c : list) {
+				if (!"local DB [internal]".equals(c.getName())) {
+					ldapConfigDao.addLdapConfigByObject(c);
+				}
+			}
+		}
+
+		log.info("Ldap config import complete, starting cluster servers import");
+		/*
+		 * ##################### Cluster servers
+		 */
+		{
+			List<Server> list = readList(simpleSerializer, f, "servers.xml", "servers", Server.class, true);
+			for (Server s : list) {
+				serverDao.update(s, null);
+			}
+		}
+
+		log.info("Cluster servers import complete, starting OAuth2 servers import");
+		/*
+		 * ##################### OAuth2 servers
+		 */
+		{
+			List<OAuthServer> list = readList(simpleSerializer, f, "oauth2servers.xml", "oauth2servers", OAuthServer.class, true);
+			for (OAuthServer s : list) {
+				auth2Dao.update(s, null);
+			}
+		}
+
+		log.info("OAuth2 servers import complete, starting recordings import");
+		/*
+		 * ##################### Import Recordings
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
+			Serializer serializer = new Persister(strategy, matcher);
+
+			matcher.bind(Long.class, LongTransform.class);
+			matcher.bind(Integer.class, IntegerTransform.class);
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<FlvRecording> list = readList(serializer, f, "flvRecordings.xml", "flvrecordings", FlvRecording.class, true);
+			for (FlvRecording fr : list) {
+				fr.setFlvRecordingId(0);
+				if (fr.getRoom_id() != null) {
+					fr.setRoom_id(roomsMap.get(fr.getRoom_id()));
+				}
+				if (fr.getOwnerId() != null) {
+					fr.setOwnerId(usersMap.get(fr.getOwnerId()));
+				}
+				if (fr.getFlvRecordingMetaData() != null) {
+					for (FlvRecordingMetaData meta : fr.getFlvRecordingMetaData()) {
+						meta.setFlvRecordingMetaDataId(0);
+						meta.setFlvRecording(fr);
+					}
+				}
+				flvRecordingDao.update(fr);
+			}
+		}
+
+		log.info("FLVrecording import complete, starting private message folder import");
+		/*
+		 * ##################### Import Private Message Folders
+		 */
+		{
+			List<PrivateMessageFolder> list = readList(simpleSerializer, f, "privateMessageFolder.xml"
+				, "privatemessagefolders", PrivateMessageFolder.class, true);
+			for (PrivateMessageFolder p : list) {
+				Long folderId = p.getPrivateMessageFolderId();
+				PrivateMessageFolder storedFolder = privateMessageFolderDao.get(folderId);
+				if (storedFolder == null) {
+					p.setPrivateMessageFolderId(0);
+					Long newFolderId = privateMessageFolderDao.addPrivateMessageFolderObj(p);
+					messageFoldersMap.put(folderId, newFolderId);
+				}
+			}
+		}
+
+		log.info("Private message folder import complete, starting user contacts import");
+		/*
+		 * ##################### Import User Contacts
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			
+			List<UserContact> list = readList(serializer, f, "userContacts.xml", "usercontacts", UserContact.class, true);
+			for (UserContact uc : list) {
+				Long ucId = uc.getUserContactId();
+				UserContact storedUC = userContactsDao.get(ucId);
+
+				if (storedUC == null && uc.getContact() != null && uc.getContact().getUser_id() != null) {
+					uc.setUserContactId(0);
+					if (uc.getOwner() != null && uc.getOwner().getUser_id() == null) {
+						uc.setOwner(null);
+					}
+					Long newId = userContactsDao.addUserContactObj(uc);
+					userContactsMap.put(ucId, newId);
+				}
+			}
+		}
+
+		log.info("Usercontact import complete, starting private messages item import");
+		/*
+		 * ##################### Import Private Messages
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			Serializer serializer = new Persister(strategy);
+	
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<PrivateMessage> list = readList(serializer, f, "privateMessages.xml", "privatemessages", PrivateMessage.class, true);
+			boolean oldBackup = true;
+			for (PrivateMessage p : list) {
+				if (p.getFolderId() < 0) {
+					oldBackup = false;
+					break;
+				}
+				
+			}
+			for (PrivateMessage p : list) {
+				p.setId(0);
+				p.setFolderId(getNewId(p.getFolderId(), Maps.MESSAGEFOLDERS));
+				p.setUserContactId(getNewId(p.getUserContactId(), Maps.USERCONTACTS));
+				if (p.getRoom() != null && p.getRoom().getRooms_id() == null) {
+					p.setRoom(null);
+				}
+				if (p.getTo() != null && p.getTo().getUser_id() == null) {
+					p.setTo(null);
+				}
+				if (p.getFrom() != null && p.getFrom().getUser_id() == null) {
+					p.setFrom(null);
+				}
+				if (p.getOwner() != null && p.getOwner().getUser_id() == null) {
+					p.setOwner(null);
+				}
+				if (oldBackup && p.getOwner() != null && p.getOwner().getUser_id() != null 
+						&& p.getFrom() != null && p.getFrom().getUser_id() != null 
+						&& p.getOwner().getUser_id() == p.getFrom().getUser_id())
+				{
+					p.setFolderId(SENT_FOLDER_ID);
+				}
+				privateMessagesDao.update(p, null);
+			}
+		}
+
+		log.info("Private message import complete, starting file explorer item import");
+		/*
+		 * ##################### Import File-Explorer Items
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
+			Serializer serializer = new Persister(strategy, matcher);
+
+			matcher.bind(Long.class, LongTransform.class);
+			matcher.bind(Integer.class, IntegerTransform.class);
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<FileExplorerItem> list = readList(serializer, f, "fileExplorerItems.xml", "fileExplorerItems", FileExplorerItem.class, true);
+			for (FileExplorerItem file : list) {
+				// We need to reset this as openJPA reject to store them otherwise
+				file.setFileExplorerItemId(0);
+				Long roomId = file.getRoom_id();
+				file.setRoom_id(roomsMap.containsKey(roomId) ? roomsMap.get(roomId) : null);
+				if (file.getOwnerId() != null) {
+					file.setOwnerId(usersMap.get(file.getOwnerId()));
+				}
+				fileExplorerItemDao.addFileExplorerItem(file);
+			}
+		}
+
+		log.info("File explorer item import complete, starting file poll import");
+		/*
+		 * ##################### Import Room Polls
+		 */
+		{
+			Registry registry = new Registry();
+			Strategy strategy = new RegistryStrategy(registry);
+			RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions
+			Serializer serializer = new Persister(strategy, matcher);
+	
+			matcher.bind(Integer.class, IntegerTransform.class);
+			registry.bind(User.class, new UserConverter(usersDao, usersMap));
+			registry.bind(Room.class, new RoomConverter(roomDao, roomsMap));
+			registry.bind(PollType.class, new PollTypeConverter(pollManager));
+			registry.bind(Date.class, DateConverter.class);
+			
+			List<RoomPoll> list = readList(serializer, f, "roompolls.xml", "roompolls", RoomPoll.class, true);
+			for (RoomPoll rp : list) {
+				if (rp.getRoom() == null || rp.getRoom().getRooms_id() == null) {
+					//room was deleted
+					continue;
+				}
+				if (rp.getCreatedBy() == null || rp.getCreatedBy().getUser_id() == null) {
+					rp.setCreatedBy(null);
+				}
+				for (RoomPollAnswers rpa : rp.getRoomPollAnswerList()) {
+					if (rpa.getVotedUser() == null || rpa.getVotedUser().getUser_id() == null) {
+						rpa.setVotedUser(null);
+					}
+				}
+				pollManager.savePollBackup(rp);
+			}
+		}
+		
+		log.info("Poll import complete, starting copy of files and folders");
+		/*
+		 * ##################### Import real files and folders
+		 */
+		importFolders(f);
+
+		log.info("File explorer item import complete, clearing temp files");
+		
+		FileHelper.removeRec(f);
+	}
+	
+	private <T> List<T> readList(Serializer ser, File baseDir, String fileName, String listNodeName, Class<T> clazz) throws Exception {
+		return readList(ser, baseDir, fileName, listNodeName, clazz, false);
+	}
+	
+	private <T> List<T> readList(Serializer ser, File baseDir, String fileName, String listNodeName, Class<T> clazz, boolean notThow) throws Exception {
+		List<T> list = new ArrayList<T>();
+		File xml = new File(baseDir, fileName);
+		if (!xml.exists()) {
+			final String msg = fileName + " missing";
+			if (notThow) {
+				log.debug(msg);
+			} else {
+				throw new Exception(msg);
+			}
+		} else {
+			InputNode root = NodeBuilder.read(new FileInputStream(xml));
+			InputNode listNode = root.getNext();
+			if (listNodeName.equals(listNode.getName())) {
+				InputNode item = listNode.getNext();
+				while (item != null) {
+					T o = ser.read(clazz, item, false);
+					list.add(o);
+					item = listNode.getNext();
+				}
+			}
+		}
+		return list;
+	}
+	
+	private Node getNode(Node doc, String name) {
+		NodeList nl = doc.getChildNodes();
+		for (int i = 0; i < nl.getLength(); ++i) {
+			Node node = nl.item(i);
+			if (node.getNodeType() == Node.ELEMENT_NODE && name.equals(node.getNodeName())) {
+				return node;
+			}
+		}
+		return null;
+	}
+	
+	public List<User> readUserList(InputStream xml, String listNodeName) throws Exception {
+		return readUserList(new InputSource(xml), listNodeName);
+	}
+	
+	public List<User> readUserList(File baseDir, String fileName, String listNodeName) throws Exception {
+		File xml = new File(baseDir, fileName);
+		if (!xml.exists()) {
+			throw new Exception(fileName + " missing");
+		}
+		
+		return readUserList(new InputSource(xml.toURI().toASCIIString()), listNodeName);
+	}
+	
+	//FIXME (need to be removed in later versions) HACK to add external attendees previously stored in MeetingMember structure
+	private List<MeetingMember> readMeetingMemberList(File baseDir, String filename, String listNodeName) throws Exception {
+		Registry registry = new Registry();
+		Strategy strategy = new RegistryStrategy(registry);
+		Serializer ser = new Persister(strategy);
+
+		registry.bind(User.class, new UserConverter(usersDao, usersMap));
+		registry.bind(Appointment.class, new AppointmentConverter(appointmentDao, appointmentsMap));
+		
+		File xml = new File(baseDir, filename);
+		if (!xml.exists()) {
+			throw new Exception(filename + " missing");
+		}
+		
+		DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+		Document doc = dBuilder.parse(new InputSource(xml.toURI().toASCIIString()));
+		
+		StringWriter sw = new StringWriter();
+		Transformer xformer = TransformerFactory.newInstance().newTransformer();
+        xformer.transform(new DOMSource(doc), new StreamResult(sw));
+        
+		List<MeetingMember> list = new ArrayList<MeetingMember>();
+		InputNode root = NodeBuilder.read(new StringReader(sw.toString()));
+		InputNode root1 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle external attendee's firstname, lastname, email
+		InputNode listNode = root.getNext();
+		InputNode listNode1 = root1.getNext(); //HACK to handle external attendee's firstname, lastname, email
+		if (listNodeName.equals(listNode.getName())) {
+			InputNode item = listNode.getNext();
+			InputNode item1 = listNode1.getNext(); //HACK to handle external attendee's firstname, lastname, email
+			while (item != null) {
+				MeetingMember mm = ser.read(MeetingMember.class, item, false);
+
+				boolean needToSkip1 = true;
+				if (mm.getUser() == null) {
+					mm.setUser(new User());
+				}
+				if (mm.getUser().getUser_id() == null) {
+					//HACK to handle external attendee's firstname, lastname, email
+					boolean contactValid = false;
+					do {
+						if (Type.contact == mm.getUser().getType() && "firstname".equals(item1.getName())) {
+							mm.getUser().setFirstname(item1.getValue());
+						}
+						if (Type.contact == mm.getUser().getType() && "lastname".equals(item1.getName())) {
+							mm.getUser().setLastname(item1.getValue());
+						}
+						if ("email".equals(item1.getName())) {
+							String email = item1.getValue();
+							if (mm.getAppointment() != null && mm.getAppointment().getOwner() != null) {
+								mm.setUser(usersDao.getContact(email, mm.getAppointment().getOwner()));
+							}
+							contactValid = true;
+						}
+						item1 = listNode1.getNext(); //HACK to handle old om_time_zone
+					} while (item1 != null && !"meetingmember".equals(item1.getName()));
+					if (!contactValid) {
+						mm = null;
+					}
+					needToSkip1 = false;
+				}
+				if (needToSkip1) {
+					do {
+						item1 = listNode1.getNext(); //HACK to handle Address inside user
+					} while (item1 != null && !"meetingmember".equals(item1.getName()));
+				}
+				item = listNode.getNext();
+				if (mm != null && !mm.isDeleted() && mm.getUser() != null && mm.getAppointment() != null && mm.getAppointment().getId() != null) {
+					mm.setId(null);
+					list.add(mm);
+				}
+			}
+		}
+		return list;
+	}
+	
+	//FIXME (need to be removed in later versions) HACK to fix 2 deleted nodes in users.xml and inline Adresses and sipData
+	private List<User> readUserList(InputSource xml, String listNodeName) throws Exception {
+		Registry registry = new Registry();
+		Strategy strategy = new RegistryStrategy(registry);
+		Serializer ser = new Persister(strategy);
+
+		registry.bind(Organisation.class, new OrganisationConverter(orgDao, organisationsMap));
+		registry.bind(State.class, new StateConverter(statemanagement));
+		registry.bind(Date.class, DateConverter.class);
+
+		DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+		Document doc = dBuilder.parse(xml);
+		NodeList nl = getNode(getNode(doc, "root"), listNodeName).getChildNodes();
+		userEmailMap.clear();
+		//add existence email from database
+		List<User>  users = usersDao.getAllUsers();
+		for (User u : users){
+			if (u.getAdresses() == null || u.getAdresses().getEmail() == null || Type.user != u.getType()) {
+				continue;
+			}
+			userEmailMap.put(u.getAdresses().getEmail(), -1);
+		}
+		// one of the old OM version created 2 nodes "deleted" this code block handles this
+		for (int i = 0; i < nl.getLength(); ++i) {
+			Node user = nl.item(i);
+			NodeList nl1 = user.getChildNodes();
+			boolean deletedFound = false;
+			for (int j = 0; j < nl1.getLength(); ++j) {
+				Node node = nl1.item(j);
+				if (node.getNodeType() == Node.ELEMENT_NODE && "deleted".equals(node.getNodeName())) {
+					if (deletedFound) {
+						user.removeChild(node);
+						break;
+					}
+					deletedFound = true;
+				}
+			}
+		}
+		
+		StringWriter sw = new StringWriter();
+		Transformer xformer = TransformerFactory.newInstance().newTransformer();
+        xformer.transform(new DOMSource(doc), new StreamResult(sw));
+        
+		List<User> list = new ArrayList<User>();
+		InputNode root = NodeBuilder.read(new StringReader(sw.toString()));
+		InputNode root1 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle Address inside user
+		InputNode root2 = NodeBuilder.read(new StringReader(sw.toString())); //HACK to handle old om_time_zone, level_id, status
+		InputNode listNode = root.getNext();
+		InputNode listNode1 = root1.getNext(); //HACK to handle Address inside user
+		InputNode listNode2 = root2.getNext(); //HACK to handle old om_time_zone
+		if (listNodeName.equals(listNode.getName())) {
+			InputNode item = listNode.getNext();
+			InputNode item1 = listNode1.getNext(); //HACK to handle Address inside user
+			InputNode item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
+			while (item != null) {
+				User u = ser.read(User.class, item, false);
+				
+				boolean needToSkip1 = true;
+				//HACK to handle Address inside user
+				if (u.getAdresses() == null) {
+					Address a = ser.read(Address.class, item1, false);
+					u.setAdresses(a);
+					needToSkip1 = false;
+				}
+				if (needToSkip1) {
+					do {
+						item1 = listNode1.getNext(); //HACK to handle Address inside user
+					} while (item1 != null && !"user".equals(item1.getName()));
+				}
+				String level_id = null, status = null;
+				do {
+					if (u.getTimeZoneId() == null && "omTimeZone".equals(item2.getName())) {
+						String jName = item2.getValue();
+						u.setTimeZoneId(jName == null ? null : tzUtil.getTimezoneByInternalJName(jName).getID());
+					}
+					if ("level_id".equals(item2.getName())) {
+						level_id = item2.getValue();
+					}
+					if ("status".equals(item2.getName())) {
+						status = item2.getValue();
+					}
+					item2 = listNode2.getNext(); //HACK to handle old om_time_zone, level_id, status
+				} while (item2 != null && !"user".equals(item2.getName()));
+				if (u.getRights().isEmpty()) {
+					u.getRights().add(Right.Room);
+					if ("1".equals(status)) {
+						u.getRights().add(Right.Dashboard);
+						u.getRights().add(Right.Login);
+					}
+					if ("3".equals(level_id)) {
+						u.getRights().add(Right.Admin);
+						u.getRights().add(Right.Soap);
+					}
+					if ("4".equals(level_id)) {
+						u.getRights().add(Right.Soap);
+					}
+				}
+				// check that email is unique
+				if (u.getAdresses() != null && u.getAdresses().getEmail() != null && Type.user == u.getType()) {
+					if (userEmailMap.containsKey(u.getAdresses().getEmail())) {
+						log.warn("Email is duplicated for user " + u.toString());
+						String updateEmail = "modified_by_import_<" + list.size() + ">" + u.getAdresses().getEmail();
+						u.getAdresses().setEmail(updateEmail);
+					}
+					userEmailMap.put(u.getAdresses().getEmail(), userEmailMap.size());
+				}
+				list.add(u);
+				item = listNode.getNext();
+			}
+		}
+		return list;
+	}
+	
+	private Long getProfileId(File f) {
+		String n = f.getName();
+		if (n.indexOf(profilesPrefix) > -1) {
+			return importLongType(n.substring(profilesPrefix.length()));
+		}
+		return null;
+	}
+	
+	private void importFolders(File importBaseDir) throws IOException {
+		// Now check the room files and import them
+		File roomFilesFolder = new File(importBaseDir, "roomFiles");
+
+		File uploadDir = getUploadDir();
+
+		log.debug("roomFilesFolder PATH " + roomFilesFolder.getCanonicalPath());
+
+		if (roomFilesFolder.exists()) {
+			for (File file : roomFilesFolder.listFiles()) {
+				if (file.isDirectory()) {
+					String fName = file.getName();
+					if ("profiles".equals(fName)) {
+						// profile should correspond to the new user id
+						for (File profile : file.listFiles()) {
+							Long oldId = getProfileId(profile);
+							Long id = oldId != null ? getNewId(oldId, Maps.USERS) : null;
+							if (id != null) {
+								copyRec(profile, getUploadProfilesUserDir(id));
+							}
+						}
+						continue;
+					} else {
+						// check if folder is room folder, store it under new id if necessary
+						Long oldId = importLongType(fName);
+						Long id = oldId != null ? getNewId(oldId, Maps.ROOMS) : null;
+						if (id != null) {
+							copyRec(file, getUploadRoomDir(id.toString()));
+							continue;
+						}
+					}
+					copyRec(file, new File(uploadDir, fName));
+				}
+			}
+		}
+
+		// Now check the recordings and import them
+
+		File sourceDirRec = new File(importBaseDir, "recordingFiles");
+
+		log.debug("sourceDirRec PATH " + sourceDirRec.getCanonicalPath());
+		if (sourceDirRec.exists()) {
+			copyRec(sourceDirRec, getStreamsHibernateDir());
+		}
+	}
+
+	private Long importLongType(String value) {
+		Long val = null;
+		try {
+			val = Long.valueOf(value);
+		} catch (Exception e) {
+			// no-op
+		}
+		return val;
+	}
+
+	private Long getNewId(Long oldId, Maps map) {
+		Long newId = oldId;
+		switch (map) {
+			case USERS:
+				if (usersMap.containsKey(oldId)) {
+					newId = usersMap.get(oldId);
+				}
+				break;
+			case ORGANISATIONS:
+				if (organisationsMap.containsKey(oldId)) {
+					newId = organisationsMap.get(oldId);
+				}
+				break;
+			case APPOINTMENTS:
+				if (appointmentsMap.containsKey(oldId)) {
+					newId = appointmentsMap.get(oldId);
+				}
+				break;
+			case ROOMS:
+				if (roomsMap.containsKey(oldId)) {
+					newId = roomsMap.get(oldId);
+				}
+				break;
+			case MESSAGEFOLDERS:
+				if (messageFoldersMap.containsKey(oldId)) {
+					newId = messageFoldersMap.get(oldId);
+				}
+				break;
+			case USERCONTACTS:
+				if (userContactsMap.containsKey(oldId)) {
+					newId = userContactsMap.get(oldId);
+				}
+				break;
+			default:
+				break;
+		}
+		return newId;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/DateConverter.java b/src/install/java/org/apache/openmeetings/backup/DateConverter.java
new file mode 100644
index 0000000..57ec4f9
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/DateConverter.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Date;
+
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.simpleframework.xml.convert.Converter;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class DateConverter implements Converter<Date> {
+	public Date read(InputNode node) throws Exception {
+		String val = node.getValue();
+		return val == null || "null".equals(val) ? new Date() : CalendarPatterns.parseImportDate(val);
+	}
+
+	public void write(OutputNode node, Date value) throws Exception {
+		node.setAttribute("class", "java.util.Date");
+		node.setData(true);
+		node.setValue(value == null ? "0" : CalendarPatterns.getExportDate(value));
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/InlineConverter.java b/src/install/java/org/apache/openmeetings/backup/InlineConverter.java
new file mode 100644
index 0000000..4ab9f24
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/InlineConverter.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.stream.InputNode;
+
+public abstract class InlineConverter<T> extends OmConverter<T> {
+	
+	String getNextValue(InputNode parent, String name) throws Exception {
+		InputNode node = parent.getNext(name);
+		return node != null ? node.getValue() : null;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/IntegerTransform.java b/src/install/java/org/apache/openmeetings/backup/IntegerTransform.java
new file mode 100644
index 0000000..031c22f
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/IntegerTransform.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.transform.Transform;
+
+public class IntegerTransform implements Transform<Integer>{
+	public Integer read(String value) throws Exception {
+		return OmConverter.getintValue(value, 0);
+	}
+
+	public String write(Integer value) throws Exception {
+		return "" + value;
+	}
+
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/LanguageImport.java b/src/install/java/org/apache/openmeetings/backup/LanguageImport.java
new file mode 100644
index 0000000..da9b475
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/LanguageImport.java
@@ -0,0 +1,100 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class LanguageImport {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			LanguageImport.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private FieldValueDao fieldValueDao;
+	@Autowired
+	private FieldLanguagesValuesDao fieldLangValueDao;
+	@Autowired
+	private FieldLanguageDao fieldLanguageDaoImpl;
+
+	public Long addLanguageByDocument(Long language_id, InputStream is, long userId)
+			throws Exception {
+
+		// return null if no language availible
+		if (fieldLanguageDaoImpl.getFieldLanguageById(language_id) == null) {
+			return null;
+		}
+
+		SAXReader reader = new SAXReader();
+		Document document = reader.read(is);
+
+		Element root = document.getRootElement();
+
+		for (@SuppressWarnings("unchecked")
+		Iterator<Element> i = root.elementIterator(); i.hasNext();) {
+			Element itemObject = i.next();
+			Long fieldvalues_id = Long.valueOf(
+					itemObject.attribute("id").getText()).longValue();
+			String fieldName = itemObject.attribute("name").getText();
+			String value = itemObject.element("value").getText();
+			log.info("CHECK " + language_id + "," + fieldvalues_id + ","
+					+ fieldName + "," + value);
+			addFieldValueById(language_id, fieldvalues_id, fieldName, value, userId);
+		}
+
+		return null;
+	}
+
+	private void addFieldValueById(Long language_id, Long fieldvalues_id,
+			String fieldName, String value, long userId) throws Exception {
+
+		Fieldvalues fv = fieldValueDao.get(fieldvalues_id);
+
+		if (fv == null) {
+			fv = new Fieldvalues();
+			fv.setFieldvalues_id(fieldvalues_id);
+			fv.setName(fieldName);
+			fv = fieldValueDao.update(fv, userId);
+		}
+
+		Fieldlanguagesvalues flv = fieldLangValueDao.get(fieldvalues_id, language_id);
+		if (flv == null) {
+			flv = new Fieldlanguagesvalues();
+			flv.setFieldvalues(fv);
+			flv.setLanguage_id(language_id);
+			flv.setValue(value);
+		} else {
+			flv.setValue(value);
+		}
+		fieldLangValueDao.update(flv, userId);
+	}
+
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/LongTransform.java b/src/install/java/org/apache/openmeetings/backup/LongTransform.java
new file mode 100644
index 0000000..f3238a8
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/LongTransform.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.transform.Transform;
+
+public class LongTransform implements Transform<Long>{
+	public Long read(String value) throws Exception {
+		return OmConverter.getlongValue(value);
+	}
+
+	public String write(Long value) throws Exception {
+		return "" + value;
+	}
+
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/OmConverter.java b/src/install/java/org/apache/openmeetings/backup/OmConverter.java
new file mode 100644
index 0000000..67a3d4c
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/OmConverter.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.simpleframework.xml.convert.Converter;
+import org.simpleframework.xml.stream.InputNode;
+
+public abstract class OmConverter<T> implements Converter<T> {
+	static long getlongValue(InputNode node) throws Exception {
+		return getlongValue(node.getValue());
+	}
+
+	static long getlongValue(String value) {
+		return getlongValue(value, 0);
+	}
+	
+	static long getlongValue(String value, long def) {
+		long result = def;
+		try {
+			result = Long.valueOf(value).longValue();
+		} catch (Exception e) {
+			//no op
+		}
+		return result;
+	}
+
+	static int getintValue(String value, int def) {
+		int result = def;
+		try {
+			result = Integer.valueOf(value).intValue();
+		} catch (Exception e) {
+			//no op
+		}
+		return result;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/OrganisationConverter.java b/src/install/java/org/apache/openmeetings/backup/OrganisationConverter.java
new file mode 100644
index 0000000..a0a8a4c
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/OrganisationConverter.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class OrganisationConverter extends OmConverter<Organisation> {
+	private OrganisationDao orgDao;
+	private Map<Long, Long> idMap;
+	
+	public OrganisationConverter() {
+		//default constructor is for export
+	}
+	
+	public OrganisationConverter(OrganisationDao orgDao, Map<Long, Long> idMap) {
+		this.orgDao = orgDao;
+		this.idMap = idMap;
+	}
+	
+	public Organisation read(InputNode node) throws Exception {
+		long oldId = getlongValue(node);
+		long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+		
+		Organisation o = orgDao.get(newId);
+		return o == null ? new Organisation() : o;
+	}
+
+	public void write(OutputNode node, Organisation value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getOrganisation_id());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/PollTypeConverter.java b/src/install/java/org/apache/openmeetings/backup/PollTypeConverter.java
new file mode 100644
index 0000000..89e7e5f
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/PollTypeConverter.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class PollTypeConverter extends OmConverter<PollType> {
+	private PollDao pollManager;
+	
+	public PollTypeConverter() {
+		//default constructor is for export
+	}
+	
+	public PollTypeConverter(PollDao pollManagement) {
+		this.pollManager = pollManagement;
+	}
+	
+	public PollType read(InputNode node) throws Exception {
+		return pollManager.getPollType(getlongValue(node));
+	}
+
+	public void write(OutputNode node, PollType value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getPollTypesId());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/ProgressHolder.java b/src/install/java/org/apache/openmeetings/backup/ProgressHolder.java
new file mode 100644
index 0000000..3f53b78
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/ProgressHolder.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.io.Serializable;
+
+public class ProgressHolder implements Serializable {
+	private static final long serialVersionUID = 1L;
+	
+	private int progress;
+
+	public int getProgress() {
+		return progress;
+	}
+
+	public void setProgress(int progress) {
+		this.progress = progress;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/backup/RoomConverter.java b/src/install/java/org/apache/openmeetings/backup/RoomConverter.java
new file mode 100644
index 0000000..e0f8eda
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/RoomConverter.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class RoomConverter extends OmConverter<Room> {
+	private RoomDao roomDao;
+	private Map<Long, Long> idMap;
+	
+	public RoomConverter() {
+		//default constructor is for export
+	}
+	
+	public RoomConverter(RoomDao roomDao, Map<Long, Long> idMap) {
+		this.roomDao = roomDao;
+		this.idMap = idMap;
+	}
+	
+	public Room read(InputNode node) throws Exception {
+		long oldId = getlongValue(node);
+		long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+
+		Room r = roomDao.get(newId);
+		return r == null ? new Room() : r;
+	}
+
+	public void write(OutputNode node, Room value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getRooms_id());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/RoomTypeConverter.java b/src/install/java/org/apache/openmeetings/backup/RoomTypeConverter.java
new file mode 100644
index 0000000..5401722
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/RoomTypeConverter.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class RoomTypeConverter extends OmConverter<RoomType> {
+	private RoomTypeDao dao;
+	
+	public RoomTypeConverter() {
+		//default constructor is for export
+	}
+	
+	public RoomTypeConverter(RoomTypeDao dao) {
+		this.dao = dao;
+	}
+	
+	public RoomType read(InputNode node) throws Exception {
+		RoomType rt = dao.get(getlongValue(node));
+		return rt != null ? rt : dao.get(1); // conference type will be used in case of bad type
+	}
+
+	public void write(OutputNode node, RoomType value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getRoomtypes_id());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/StateConverter.java b/src/install/java/org/apache/openmeetings/backup/StateConverter.java
new file mode 100644
index 0000000..9188089
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/StateConverter.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.entity.user.State;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class StateConverter extends OmConverter<State> {
+	private StateDao statemanagement;
+	
+	public StateConverter() {
+		//default constructor is for export
+	}
+	
+	public StateConverter(StateDao statemanagement) {
+		this.statemanagement = statemanagement;
+	}
+	
+	public State read(InputNode node) throws Exception {
+		return statemanagement.getStateById(getlongValue(node));
+	}
+
+	public void write(OutputNode node, State value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getState_id());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/backup/UserConverter.java b/src/install/java/org/apache/openmeetings/backup/UserConverter.java
new file mode 100644
index 0000000..1b805fa
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/backup/UserConverter.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.backup;
+
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.simpleframework.xml.stream.InputNode;
+import org.simpleframework.xml.stream.OutputNode;
+
+public class UserConverter extends OmConverter<User> {
+	private UserDao userDao;
+	private Map<Long, Long> idMap;
+	
+	public UserConverter() {
+		//default constructor is for export
+	}
+	
+	public UserConverter(UserDao userDao, Map<Long, Long> idMap) {
+		this.userDao = userDao;
+		this.idMap = idMap;
+	}
+	
+	public User read(InputNode node) throws Exception {
+		long oldId = getlongValue(node);
+		long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : oldId;
+		
+		User u = userDao.get(newId);
+		return u == null ? new User() : u;
+	}
+
+	public void write(OutputNode node, User value) throws Exception {
+		node.setData(true);
+		node.setValue(value == null ? "0" : "" + value.getUser_id());
+	}
+}
\ No newline at end of file
diff --git a/src/install/java/org/apache/openmeetings/cli/Admin.java b/src/install/java/org/apache/openmeetings/cli/Admin.java
new file mode 100644
index 0000000..016c983
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/Admin.java
@@ -0,0 +1,652 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.db.util.UserHelper.invalidPassword;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Date;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.servlet.ServletContextEvent;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.OptionGroup;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.Parser;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.schema.SchemaTool;
+import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.log.LogFactoryImpl.LogImpl;
+import org.apache.openmeetings.backup.BackupExport;
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.backup.ProgressHolder;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.installation.ImportInitvalues;
+import org.apache.openmeetings.installation.InstallationConfig;
+import org.apache.openmeetings.installation.InstallationDocumentHandler;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.ImportHelper;
+import org.apache.openmeetings.util.OMContextListener;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.mail.MailUtil;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+
+public class Admin {
+	private static final Logger log = Red5LoggerFactory.getLogger(Admin.class);
+	
+	private boolean verbose = false;
+	private InstallationConfig cfg = null;
+	private Options opts = null;
+	private CommandLine cmdl = null;
+	private ClassPathXmlApplicationContext ctx = null;
+	private final static String PERSISTENCE_NAME = "classes/META-INF/persistence.xml";
+
+	private Admin() {
+		cfg = new InstallationConfig();
+		opts = buildOptions();
+	}
+	
+	private Options buildOptions() {
+		Options options = new Options();
+		OptionGroup group = new OptionGroup()
+			.addOption(new OmOption("h", 0, "h", "help", false, "prints this message"))
+			.addOption(new OmOption("b", 1, "b", "backup", false, "Backups OM"))
+			.addOption(new OmOption("r", 2, "r", "restore", false, "Restores OM"))
+			.addOption(new OmOption("i", 3, "i", "install", false, "Fill DB table, and make OM usable"))
+			.addOption(new OmOption("l", 3, "l", "languages", false, "Reimport All language files into DB"))
+			.addOption(new OmOption("f", 4, "f", "files", false, "File operations - statictics/cleanup"));
+		group.setRequired(true); 
+		options.addOptionGroup(group);
+		//general
+		options.addOption(new OmOption(null, "v", "verbose", false, "verbose error messages"));
+		//backup/restore
+		options.addOption(new OmOption("b", null, "exclude-files", false, "should backup exclude files [default: include]", true));
+		options.addOption(new OmOption("b,r,i", "file", null, true, "file used for backup/restore/install", "b"));
+		//install
+		options.addOption(new OmOption("i", "user", null, true, "Login name of the default user, minimum " + USER_LOGIN_MINIMUM_LENGTH + " characters (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", "email", null, true, "Email of the default user (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", "group", null, true, "The name of the default user group (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", "tz", null, true, "Default server time zone, and time zone for the selected user (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", null, "password", true, "Password of the default user, minimum " + USER_PASSWORD_MINIMUM_LENGTH + " characters (will be prompted if not set)", true));
+		options.addOption(new OmOption("i", null, "system-email-address", true, "System e-mail address [default: " + cfg.mailReferer + "]", true));
+		options.addOption(new OmOption("i", null, "smtp-server", true, "SMTP server for outgoing e-mails [default: " + cfg.smtpServer + "]", true));
+		options.addOption(new OmOption("i", null, "smtp-port", true, "SMTP server for outgoing e-mails [default: " + cfg.smtpPort + "]", true));
+		options.addOption(new OmOption("i", null, "email-auth-user", true, "Email auth username (anonymous connection will be used if not set)", true));
+		options.addOption(new OmOption("i", null, "email-auth-pass", true, "Email auth password (anonymous connection will be used if not set)", true));
+		options.addOption(new OmOption("i", null, "email-use-tls", false, "Is secure e-mail connection [default: no]", true));
+		options.addOption(new OmOption("i", null, "skip-default-rooms", false, "Do not create default rooms [created by default]", true));
+		options.addOption(new OmOption("i", null, "disable-frontend-register", false, "Do not allow front end register [allowed by default]", true));
+
+		options.addOption(new OmOption("i", null, "db-type", true, "The type of the DB to be used", true));
+		options.addOption(new OmOption("i", null, "db-host", true, "DNS name or IP address of database", true));
+		options.addOption(new OmOption("i", null, "db-port", true, "Database port", true));
+		options.addOption(new OmOption("i", null, "db-name", true, "The name of Openmeetings database", true));
+		options.addOption(new OmOption("i", null, "db-user", true, "User with write access to the DB specified", true));
+		options.addOption(new OmOption("i", null, "db-pass", true, "Password of the user with write access to the DB specified", true));
+		options.addOption(new OmOption("i", null, "drop", false, "Drop database before installation", true));
+		options.addOption(new OmOption("i", null, "force", false, "Install without checking the existence of old data in the database.", true));
+		//languages
+		options.addOption(new OmOption("l", "lang", "language", true, "Single language to be imported (id or name)", true));
+		//files
+		options.addOption(new OmOption("f", null, "cleanup", false, "Should intermediate files be clean up", true));
+		
+		return options;
+	}
+	
+	private enum Command {
+		install
+		, backup
+		, restore
+		, languages
+		, files
+		, usage
+	}
+	
+	private void usage() {
+		OmHelpFormatter formatter = new OmHelpFormatter();
+		formatter.setWidth(100);
+		formatter.printHelp("admin", "Please specify one of the required parameters.", opts, "Examples:\n" +
+				"\t./admin.sh -b\n" +
+				"\t./admin.sh -i -v -file backup_31_07_2012_12_07_51.zip --drop\n" +
+				"\t./admin.sh -i -v -user admin -email someemail@gmail.com -tz \"Asia/Tehran\" -group \"yourgroup\" --db-type mysql --db-host localhost");
+	}
+	
+	private void handleError(String msg, Exception e) {
+		handleError(msg, e, false);
+	}
+	
+	private void handleError(String msg, Exception e, boolean printUsage) {
+		if (printUsage) {
+			usage();
+		}
+		if (verbose) {
+			log.error(msg, e);
+		} else {
+			log.error(msg + " " + e.getMessage());
+		}
+		System.exit(1);
+	}
+	
+	private ClassPathXmlApplicationContext getApplicationContext(final String ctxName) {
+		if (ctx == null) {
+			OMContextListener omcl = new OMContextListener();
+			omcl.contextInitialized(new ServletContextEvent(new DummyServletContext(ctxName)));
+			try {
+				ctx = new ClassPathXmlApplicationContext("openmeetings-applicationContext.xml");
+			} catch (Exception e) {
+				handleError("Unable to obtain application context", e);
+			}
+			SchedulerFactoryBean sfb = ctx.getBean(SchedulerFactoryBean.class);
+			try {
+				sfb.getScheduler().shutdown(false);
+			} catch (Exception e) {
+				handleError("Unable to shutdown schedulers", e);
+			}
+		}
+		return ctx;
+	}
+	
+	private void process(String[] args) {
+		String ctxName = System.getProperty("context", "openmeetings");
+		File home = new File(System.getenv("RED5_HOME"));
+		OmFileHelper.setOmHome(new File(new File(home, "webapps"), ctxName));
+		
+		Parser parser = new PosixParser();
+		try {
+			cmdl = parser.parse(opts, args);
+		} catch (ParseException e) {
+			System.out.println(e.getMessage());
+			usage();
+			System.exit(1);
+		}
+		verbose = cmdl.hasOption('v');
+
+		Command cmd = Command.usage;
+		if (cmdl.hasOption('i')) {
+			cmd = Command.install;
+		} else if (cmdl.hasOption('b')) {
+			cmd = Command.backup;
+		} else if (cmdl.hasOption('r')) {
+			cmd = Command.restore;
+		} else if (cmdl.hasOption('l')) {
+			cmd = Command.languages;
+		} else if (cmdl.hasOption('f')) {
+			cmd = Command.files;
+		}
+
+		String file = cmdl.getOptionValue("file", "");
+		switch(cmd) {
+			case install:
+				try {
+					if (cmdl.hasOption("file") && (cmdl.hasOption("user") || cmdl.hasOption("email") || cmdl.hasOption("group"))) {
+						System.out.println("Please specify even 'file' option or 'admin user'.");
+						System.exit(1);
+					}
+					boolean force = cmdl.hasOption("force");
+					if (cmdl.hasOption("skip-default-rooms")) {
+						cfg.createDefaultRooms = "0";
+					}
+					if (cmdl.hasOption("disable-frontend-register")) {
+						cfg.allowFrontendRegister = "0";
+					}
+					if (cmdl.hasOption("system-email-address")) {
+						cfg.mailReferer = cmdl.getOptionValue("system-email-address");
+					}
+					if (cmdl.hasOption("smtp-server")) {
+						cfg.smtpServer = cmdl.getOptionValue("smtp-server");
+					}
+					if (cmdl.hasOption("smtp-port")) {
+						cfg.smtpPort = Integer.valueOf(cmdl.getOptionValue("smtp-port"));
+					}
+					if (cmdl.hasOption("email-auth-user")) {
+						cfg.mailAuthName = cmdl.getOptionValue("email-auth-user");
+					}
+					if (cmdl.hasOption("email-auth-pass")) {
+						cfg.mailAuthPass = cmdl.getOptionValue("email-auth-pass");
+					}
+					if (cmdl.hasOption("email-use-tls")) {
+						cfg.mailUseTls = "1";
+					}
+					ConnectionProperties connectionProperties = new ConnectionProperties();
+					File conf = new File(OmFileHelper.getWebinfDir(), PERSISTENCE_NAME);
+					if (!conf.exists() || cmdl.hasOption("db-type") || cmdl.hasOption("db-host") || cmdl.hasOption("db-port") || cmdl.hasOption("db-name") || cmdl.hasOption("db-user") || cmdl.hasOption("db-pass")) {
+						String dbType = cmdl.getOptionValue("db-type", "derby");
+						File srcConf = new File(OmFileHelper.getWebinfDir(), "classes/META-INF/" + dbType + "_persistence.xml");
+						ConnectionPropertiesPatcher.getPatcher(dbType, connectionProperties).patch(
+								srcConf
+								, conf
+								, cmdl.getOptionValue("db-host", "localhost")
+								, cmdl.getOptionValue("db-port", null)
+								, cmdl.getOptionValue("db-name", null)
+								, cmdl.getOptionValue("db-user", null)
+								, cmdl.getOptionValue("db-pass", null)
+								);
+					} else {
+						//get properties from existent persistence.xml
+						connectionProperties = ConnectionPropertiesPatcher.getConnectionProperties(conf);
+					}
+					if (cmdl.hasOption("file")) {
+						File backup = checkRestoreFile(file);
+						dropDB(connectionProperties);
+						
+						ImportInitvalues importInit = getApplicationContext(ctxName).getBean(ImportInitvalues.class);
+						importInit.loadSystem(cfg, force); 
+						restoreOm(ctxName, backup);
+					} else {
+						checkAdminDetails(ctxName);
+						dropDB(connectionProperties);
+						
+						ImportInitvalues importInit = getApplicationContext(ctxName).getBean(ImportInitvalues.class);
+						importInit.loadAll(cfg, force);
+					}					
+					
+					InstallationDocumentHandler.createDocument(3);
+				} catch(Exception e) {
+					handleError("Install failed", e);
+				}
+				break;
+			case backup:
+				try {
+					File f;
+					if (!cmdl.hasOption("file")) {
+						file = "backup_" + CalendarPatterns.getTimeForStreamId(new Date()) + ".zip";
+						f = new File(home, file);
+						System.out.println("File name was not specified, '" + file + "' will be used");
+					} else {
+						f = new File(file);
+					}
+					boolean includeFiles = !cmdl.hasOption("exclude-files");
+					File backup_dir = new File(OmFileHelper.getUploadTempDir(), "" + System.currentTimeMillis());
+					backup_dir.mkdirs();
+					
+					BackupExport export = getApplicationContext(ctxName).getBean(BackupExport.class);
+					export.performExport(f, backup_dir, includeFiles, new ProgressHolder());
+					FileHelper.removeRec(backup_dir);
+					backup_dir.delete();
+				} catch (Exception e) {
+					handleError("Backup failed", e);
+				}
+				break;
+			case restore:
+				try {
+					restoreOm(ctxName, checkRestoreFile(file));
+				} catch (Exception e) {
+					handleError("Restore failed", e);
+				}
+				break;
+			case languages:
+				System.out.println("All language files will be reimported");
+				try {
+					ImportInitvalues importInit = getApplicationContext(ctxName).getBean(ImportInitvalues.class);
+					if (cmdl.hasOption("lang")) {
+						String lang = cmdl.getOptionValue("lang");
+						System.out.println("Only '" + lang + "' language will be reimported");
+						try {
+							int id = Integer.parseInt(lang);
+							importInit.loadLanguagesFile(id);
+						} catch (NumberFormatException e) {
+							importInit.loadLanguagesFile(lang);
+						}
+					} else {
+						System.out.println("All language files will be reimported");
+						importInit.loadLanguagesFiles();
+					}
+				} catch (Exception e) {
+					handleError("Language reimport failed", e);
+				}
+				break;
+			case files:
+				try {
+					boolean cleanup = cmdl.hasOption("cleanup");
+					if (cleanup) {
+						System.out.println("WARNING: all intermadiate files will be clean up!");
+					}
+					StringBuilder report = new StringBuilder();
+					report.append("Temporary files allocates: ").append(OmFileHelper.getHumanSize(OmFileHelper.getUploadTempDir())).append("\n");
+					{ //UPLOAD
+						long sectionSize = OmFileHelper.getSize(OmFileHelper.getUploadDir());
+						report.append("Upload totally allocates: ").append(OmFileHelper.getHumanSize(sectionSize)).append("\n");
+						//Profiles
+						File profiles = OmFileHelper.getUploadProfilesDir();
+						long invalid = 0;
+						long deleted = 0;
+						ClassPathXmlApplicationContext ctx = getApplicationContext(ctxName);
+						UserDao udao = ctx.getBean(UserDao.class);
+						for (File profile : profiles.listFiles()) {
+							long pSize = OmFileHelper.getSize(profile);
+							long userId = getUserIdByProfile(profile.getName());
+							User u = udao.get(userId);
+							if (profile.isFile() || userId < 0 || u == null) {
+								if (cleanup) {
+									FileHelper.removeRec(profile);
+								} else {
+									invalid += pSize;
+								}
+							} else if (u.getDeleted()) {
+								if (cleanup) {
+									FileHelper.removeRec(profile);
+								} else {
+									deleted += pSize;
+								}
+							}
+						}
+						long missing = 0;
+						for (User u : udao.getAllBackupUsers()) {
+							if (!u.getDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getUser_id()), u.getPictureuri()).exists()) {
+								missing++;
+							}
+						}
+						long size = OmFileHelper.getSize(profiles);
+						long restSize = sectionSize - size;
+						report.append("\t\tprofiles: ").append(OmFileHelper.getHumanSize(size)).append("\n");
+						report.append("\t\t\tinvalid: ").append(OmFileHelper.getHumanSize(invalid)).append("\n");
+						report.append("\t\t\tdeleted: ").append(OmFileHelper.getHumanSize(deleted)).append("\n");
+						report.append("\t\t\tmissing count: ").append(missing).append("\n");
+						size = OmFileHelper.getSize(OmFileHelper.getUploadImportDir());
+						restSize -= size;
+						report.append("\t\timport: ").append(OmFileHelper.getHumanSize(size)).append("\n");
+						size = OmFileHelper.getSize(OmFileHelper.getUploadBackupDir());
+						restSize -= size;
+						report.append("\t\tbackup: ").append(OmFileHelper.getHumanSize(size)).append("\n");
+						//Files
+						File files = OmFileHelper.getUploadFilesDir();
+						size = OmFileHelper.getSize(files);
+						restSize -= size;
+						FileExplorerItemDao fileDao = ctx.getBean(FileExplorerItemDao.class);
+						invalid = 0;
+						deleted = 0;
+						for (File f : files.listFiles()) {
+							long fSize = OmFileHelper.getSize(f);
+							FileExplorerItem item = fileDao.getFileExplorerItemsByHash(f.getName());
+							if (item == null) {
+								if (cleanup) {
+									FileHelper.removeRec(f);
+								} else {
+									invalid += fSize;
+								}
+							} else if (item.getDeleted()) {
+								if (cleanup) {
+									FileHelper.removeRec(f);
+								} else {
+									deleted += fSize;
+								}
+							}
+						}
+						missing = 0;
+						for (FileExplorerItem item : fileDao.getFileExplorerItems()) {
+							if (!item.getDeleted() && item.getFileHash() != null && !new File(files, item.getFileHash()).exists()) {
+								missing++;
+							}
+						}
+						report.append("\t\tfiles: ").append(OmFileHelper.getHumanSize(size)).append("\n");
+						report.append("\t\t\tinvalid: ").append(OmFileHelper.getHumanSize(invalid)).append("\n");
+						report.append("\t\t\tdeleted: ").append(OmFileHelper.getHumanSize(deleted)).append("\n");
+						report.append("\t\t\tmissing count: ").append(missing).append("\n");
+						report.append("\t\trest: ").append(OmFileHelper.getHumanSize(restSize)).append("\n");
+					}
+					{ //STREAMS
+						File streamsDir = OmFileHelper.getStreamsDir();
+						File hibernateDir = OmFileHelper.getStreamsHibernateDir();
+						if (cleanup) {
+							String hiberPath = hibernateDir.getCanonicalPath();
+							for (File f : streamsDir.listFiles()) {
+								if (!f.getCanonicalPath().equals(hiberPath)) {
+									FileHelper.removeRec(f);
+								}
+							}
+						}
+						long sectionSize = OmFileHelper.getSize(streamsDir);
+						report.append("Recordings allocates: ").append(OmFileHelper.getHumanSize(sectionSize)).append("\n");
+						long size = OmFileHelper.getSize(hibernateDir);
+						long restSize = sectionSize - size;
+						FlvRecordingDao recordDao = getApplicationContext(ctxName).getBean(FlvRecordingDao.class);
+						long[] params = {0, 0}; // [0] == deleted [1] == missing
+						for (FlvRecording rec : recordDao.getAllFlvRecordings()) {
+							checkRecordingFile(hibernateDir, rec.getFileHash(), rec.getDeleted(), params, cleanup);
+							checkRecordingFile(hibernateDir, rec.getAlternateDownload(), rec.getDeleted(), params, cleanup);
+							checkRecordingFile(hibernateDir, rec.getPreviewImage(), rec.getDeleted(), params, cleanup);
+						}
+						long invalid = 0;
+						for (File f : hibernateDir.listFiles()) {
+							if (f.isFile() && f.getName().endsWith(".flv")) {
+								FlvRecording rec = recordDao.getRecordingByHash(f.getName());
+								if (rec == null) {
+									cleanUpFile(invalid, cleanup, f);
+									String name = f.getName().substring(0, f.getName().length() - 5);
+									cleanUpFile(invalid, cleanup, new File(hibernateDir, name + ".avi"));
+									cleanUpFile(invalid, cleanup, new File(hibernateDir, name + ".jpg"));
+									cleanUpFile(invalid, cleanup, new File(hibernateDir, name + ".flv.meta"));
+								}
+							}
+						}
+						report.append("\t\tfinal: ").append(OmFileHelper.getHumanSize(size)).append("\n");
+						report.append("\t\t\tinvalid: ").append(OmFileHelper.getHumanSize(invalid)).append("\n");
+						report.append("\t\t\tdeleted: ").append(OmFileHelper.getHumanSize(params[0])).append("\n");
+						report.append("\t\t\tmissing count: ").append(params[1]).append("\n");
+						report.append("\t\trest: ").append(OmFileHelper.getHumanSize(restSize)).append("\n");
+					}
+					System.out.println(report);
+				} catch (Exception e) {
+					handleError("Files failed", e);
+				}
+				break;
+			case usage:
+			default:
+				usage();
+				break;
+		}
+		
+		System.out.println("... Done");
+		System.exit(0);
+	}
+	
+	private long cleanUpFile(long invalid, boolean cleanup, File f) {
+		if (f.exists()) {
+			if (cleanup) {
+				FileHelper.removeRec(f);
+			} else {
+				invalid += f.length();
+			}
+		}
+		return invalid;
+	}
+	private void checkRecordingFile(File hibernateDir, String name, boolean deleted, long[] params, boolean cleanup) {
+		File flv = name != null ? new File(hibernateDir, name) : null;
+		if (flv != null) {
+			if (flv.exists() && flv.isFile()) {
+				if (deleted) {
+					params[0] += flv.length();
+					if (cleanup) {
+						FileHelper.removeRec(flv);
+					}
+				}
+			} else {
+				params[1]++;
+			}
+		}
+	}
+	
+	private long getUserIdByProfile(String name) {
+		long result = -1;
+		if (name.startsWith(OmFileHelper.profilesPrefix)) {
+			try {
+				result = Long.parseLong(name.substring(OmFileHelper.profilesPrefix.length()));
+			} catch (Exception e) {
+				//noop
+			}
+		}
+		return result;
+	}
+	
+	private void checkAdminDetails(String ctxName) throws Exception {
+		cfg.username = cmdl.getOptionValue("user");
+		cfg.email = cmdl.getOptionValue("email");
+		cfg.group = cmdl.getOptionValue("group");
+		if (cfg.username == null || cfg.username.length() < USER_LOGIN_MINIMUM_LENGTH) {
+			System.out.println("User login was not provided, or too short, should be at least " + USER_LOGIN_MINIMUM_LENGTH + " character long.");
+			System.exit(1);
+		}
+		
+		try {
+			if (cfg.email == null || !MailUtil.matches(cfg.email)) {
+			    throw new AddressException("Invalid address");
+			}
+			new InternetAddress(cfg.email, true);
+		} catch (AddressException ae) {
+			System.out.println("Please provide non-empty valid email: '" + cfg.email + "' is not valid.");
+			System.exit(1);
+		}
+		if (cfg.group == null || cfg.group.length() < 1) {
+			System.out.println("User group was not provided, or too short, should be at least 1 character long: " + cfg.group);
+			System.exit(1);
+		}
+		cfg.password = cmdl.getOptionValue("password");
+		ConfigurationDao cfgDao = getApplicationContext(ctxName).getBean(ConfigurationDao.class);
+		if (invalidPassword(cfg.password, cfgDao)) {
+			System.out.print("Please enter password for the user '" + cfg.username + "':");
+			cfg.password = new BufferedReader(new InputStreamReader(System.in)).readLine();
+			if (invalidPassword(cfg.password, cfgDao)) {
+				System.out.println("Password was not provided, or too short, should be at least " + getMinPasswdLength(cfgDao) + " character long.");
+				System.exit(1);
+			}
+		}
+		Map<String, String> tzMap = ImportHelper.getAllTimeZones(TimeZone.getAvailableIDs());
+		cfg.ical_timeZone = null;
+		if (cmdl.hasOption("tz")) {
+			cfg.ical_timeZone = cmdl.getOptionValue("tz");
+			cfg.ical_timeZone = tzMap.containsKey(cfg.ical_timeZone) ? cfg.ical_timeZone : null;
+		}
+		if (cfg.ical_timeZone == null) {
+			System.out.println("Please enter timezone, Possible timezones are:");
+			
+			for (String tzIcal : tzMap.keySet()) {
+				System.out.println(String.format("%1$-25s%2$s", "\"" + tzIcal + "\"", tzMap.get(tzIcal)));
+			}
+			System.exit(1);
+		}
+	}
+	
+	public void dropDB() throws Exception {
+		File conf = new File(OmFileHelper.getWebinfDir(), PERSISTENCE_NAME);
+		ConnectionProperties connectionProperties = ConnectionPropertiesPatcher.getConnectionProperties(conf);
+		immediateDropDB(connectionProperties);
+	}
+	
+	private void dropDB(ConnectionProperties props) throws Exception {
+		if(cmdl.hasOption("drop")) {
+			immediateDropDB(props);
+		}
+	}
+	
+	private static LogImpl getLogImpl(JDBCConfiguration conf) {
+		return (LogImpl)conf.getLog(JDBCConfiguration.LOG_SCHEMA);
+	}
+
+	private static void runSchemaTool(JDBCConfigurationImpl conf, String action) throws Exception {
+		SchemaTool st = new SchemaTool(conf, action);
+		st.setIgnoreErrors(true);
+		st.setOpenJPATables(true);
+		st.setIndexes(false);
+		st.setPrimaryKeys(false);
+		if (!SchemaTool.ACTION_DROPDB.equals(action)) {
+			st.setSchemaGroup(st.getDBSchemaGroup());
+		}
+		st.run();
+	}
+	
+	private void immediateDropDB(ConnectionProperties props) throws Exception {
+		if (ctx != null) {
+			ctx.destroy();
+			ctx = null;
+		}
+    	JDBCConfigurationImpl conf = new JDBCConfigurationImpl();
+        try {
+        	conf.setPropertiesFile(new File(OmFileHelper.getWebinfDir(), PERSISTENCE_NAME));
+        	conf.setConnectionDriverName(props.getDriver());
+        	conf.setConnectionURL(props.getURL());
+        	conf.setConnectionUserName(props.getLogin());
+        	conf.setConnectionPassword(props.getPassword());
+    		//HACK to suppress all warnings
+    		getLogImpl(conf).setLevel(Log.INFO);
+    		runSchemaTool(conf, SchemaTool.ACTION_DROPDB);
+    		runSchemaTool(conf, SchemaTool.ACTION_CREATEDB);
+        } finally {
+            conf.close();
+        }
+	}
+
+	private File checkRestoreFile(String file) {
+		File backup = new File(file);
+		if (!cmdl.hasOption("file") || !backup.exists() || !backup.isFile()) {
+			System.out.println("File should be specified, and point the existent zip file");
+			usage();
+			System.exit(1);
+		}
+		
+		return backup;
+	}
+	
+	private void restoreOm(String ctxName, File backup) {
+		InputStream is = null;
+		try {
+			BackupImport importCtrl = getApplicationContext(ctxName).getBean(BackupImport.class);
+			is = new FileInputStream(backup);
+			importCtrl.performImport(is);
+		} catch (Exception e) {
+			handleError("Restore failed", e);
+		} finally {
+			if (is != null) {
+				try {
+					is.close();
+				} catch (IOException e) {
+					throw new RuntimeException("Error while closing ldap config file", e);
+				}
+			}
+		}
+	}
+	
+	public static void main(String[] args) {
+		new Admin().process(args);
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/ConnectionProperties.java b/src/install/java/org/apache/openmeetings/cli/ConnectionProperties.java
new file mode 100644
index 0000000..f3d3373
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/ConnectionProperties.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class ConnectionProperties {
+	public enum DbType {
+		db2
+		, derby
+		, mssql
+		, mysql
+		, oracle
+		, postgresql
+	}
+
+	private String driver = "org.apache.derby.jdbc.ClientDriver";
+	private String url = "jdbc:derby:openmeetings";
+	private String login = "user";
+	private String password = "secret";
+	private DbType dbType = DbType.derby;
+
+	public String getDriver() {
+		return driver;
+	}
+
+	public void setDriver(String driverName) {
+		this.driver = driverName;
+	}
+
+	public String getURL() {
+		return url;
+	}
+
+	public void setURL(String connectionURL) {
+		this.url = connectionURL;
+	}
+
+	public String getLogin() {
+		return login;
+	}
+
+	public void setLogin(String connectionLogin) {
+		this.login = connectionLogin;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String connectionPass) {
+		this.password = connectionPass;
+	}
+
+	public DbType getDbType() {
+		return dbType;
+	}
+
+	public void setDbType(DbType dbType) {
+		this.dbType = dbType;
+	}
+	
+	@Override
+	public String toString() {
+		return "ConnectionProperties [type=" + dbType + ", driver=" + driver + ", url=" + url
+				+ ", login=" + login + ", password=" + password + "]";
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java b/src/install/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
new file mode 100644
index 0000000..25fac69
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.cli.ConnectionProperties.DbType;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public abstract class ConnectionPropertiesPatcher {
+	protected static final String URL_PREFIX = "Url=";
+	protected ConnectionProperties connectionProperties;
+	
+	public static ConnectionPropertiesPatcher getPatcher(String _dbType, ConnectionProperties connectionProperties) {
+		DbType dbType = DbType.valueOf(_dbType);
+		ConnectionPropertiesPatcher patcher = null;
+		switch (dbType) {
+			case db2:
+				patcher = new Db2Patcher();
+				break;
+			case mssql:
+				patcher = new MssqlPatcher();
+				break;
+			case mysql:
+				patcher = new MysqlPatcher();
+				break;
+			case oracle:
+				patcher = new OraclePatcher();
+				break;
+			case postgresql:
+				patcher = new PostgresPatcher();
+				break;
+			case derby:
+			default:
+				patcher = new DerbyPatcher();
+				break;
+		}
+		patcher.connectionProperties = connectionProperties;
+		return patcher;
+	}
+	
+	static ConnectionProperties getConnectionProperties(File conf) throws Exception {
+		ConnectionProperties connectionProperties = new ConnectionProperties();
+		Document doc = getDocument(conf);
+		Attr attr = getConnectionProperties(doc);
+		String[] tokens = attr.getValue().split(",");
+		processBasicProperties(tokens, null, null, connectionProperties);
+		
+		return connectionProperties;
+	}
+	
+	private static Document getDocument(File xml) throws Exception {
+		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+		//dbFactory.setNamespaceAware(true);
+		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+		return dBuilder.parse(xml);
+	}
+	
+	private static Attr getConnectionProperties(Document doc) throws Exception {
+		XPath xPath = XPathFactory.newInstance().newXPath();
+		XPathExpression expr = xPath.compile("/persistence/persistence-unit/properties/property[@name='openjpa.ConnectionProperties']");
+
+		Element element = (Element)expr.evaluate(doc, XPathConstants.NODE);
+		return element.getAttributeNode("value");
+	}
+	
+	public void patch(File srcXml, File destXml, String host, String port, String db, String user, String pass) throws Exception {
+		Document doc = getDocument(srcXml);
+		
+		Attr val = getConnectionProperties(doc);
+		val = patchAttribute(val, host, port, db, user, pass);
+		
+		TransformerFactory transformerFactory = TransformerFactory.newInstance();
+		Transformer transformer = transformerFactory.newTransformer();
+		DOMSource source = new DOMSource(doc);
+		transformer.transform(source, new StreamResult(destXml.getCanonicalPath())); //this constructor is used to avoid transforming path to URI
+	}
+	
+	protected Attr patchAttribute(Attr attr, String host, String port, String db, String user, String pass) {
+		String[] tokens = attr.getValue().split(",");
+		processBasicProperties(tokens, user, pass, connectionProperties);
+		patchDb(tokens, host, port, db);
+		attr.setValue(StringUtils.join(tokens, ","));
+		return attr;
+	}
+
+	protected static void patchProp(String[] tokens, int idx, String name, String value) {
+		String prop = tokens[idx].trim();
+		if (prop.startsWith(name)) {
+			prop = name + "=" + StringEscapeUtils.escapeXml10(value);
+			tokens[idx] = prop;
+		}
+	}
+	
+	private static void processBasicProperties(String[] tokens, String user,
+			String pass, ConnectionProperties connectionProperties) {
+		String prop;
+		for (int i = 0; i < tokens.length; ++i) {
+			prop = getPropFromPersistence(tokens, i, "DriverClassName");
+			if (prop != null) {
+				connectionProperties.setDriver(prop);
+			}
+			
+			if (user != null) {
+				patchProp(tokens, i, "Username", user);
+				connectionProperties.setLogin(user);
+			} else {
+				prop = getPropFromPersistence(tokens, i, "Username");
+				if (prop != null) {
+					connectionProperties.setLogin(prop);
+				}
+			}
+			
+			if (pass != null) {
+				patchProp(tokens, i, "Password", pass);
+				connectionProperties.setPassword(pass);
+			} else {
+				prop = getPropFromPersistence(tokens, i, "Password");
+				if (prop != null) {
+					connectionProperties.setPassword(prop);
+				}
+			}
+			prop = getPropFromPersistence(tokens, i, "Url");
+			if (prop != null) {
+				try {
+					//will try to "guess" dbType
+					String[] parts = prop.split(":");
+					connectionProperties.setDbType(DbType.valueOf(parts[1]));
+				} catch (Exception e) {
+					//ignore
+				}
+				connectionProperties.setURL(prop);
+			}
+		}
+	}
+	
+	protected static String getPropFromPersistence(String[] tokens, int idx, String name){
+		String prop = tokens[idx].trim();
+		if (prop.startsWith(name)) {
+			//From "Username=root" getting only "root"
+			return prop.substring(prop.indexOf("=") + 1);
+		}
+		return null;
+	}
+	
+	private void patchDb(String[] tokens, String host, String _port, String _db) {
+		for (int i = 0; i < tokens.length; ++i) {
+			String prop = tokens[i].trim();
+			if (prop.startsWith(URL_PREFIX)) {
+				String url = getUrl(prop.substring(URL_PREFIX.length()), host, _port, _db);
+				connectionProperties.setURL(url);
+				tokens[i] = URL_PREFIX + url;
+				break;
+			}
+		}
+	}
+	
+	protected abstract String getUrl(String url, String host, String port, String db);
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/Db2Patcher.java b/src/install/java/org/apache/openmeetings/cli/Db2Patcher.java
new file mode 100644
index 0000000..b681979
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/Db2Patcher.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class Db2Patcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String port = (_port == null) ? "50000" : _port;
+		String db = (_db == null) ? "openmeet" : _db;
+		return "jdbc:db2://" + host + ":" + port + "/" + db; 
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/DerbyPatcher.java b/src/install/java/org/apache/openmeetings/cli/DerbyPatcher.java
new file mode 100644
index 0000000..465d060
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/DerbyPatcher.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class DerbyPatcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String db = (_db == null) ? "openmeetings" : _db;
+		String suffix = _url.substring(_url.indexOf(';'));
+		
+		if (host != null && _port != null) {
+			return "jdbc:derby" + "://" + host + ":" + _port + "/" + db + suffix;
+		}
+		
+		return "jdbc:derby" + ":" + db + suffix; 
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/DummyServletContext.java b/src/install/java/org/apache/openmeetings/cli/DummyServletContext.java
new file mode 100644
index 0000000..fe517e6
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/DummyServletContext.java
@@ -0,0 +1,304 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import javax.servlet.SessionCookieConfig;
+import javax.servlet.SessionTrackingMode;
+import javax.servlet.ServletRegistration.Dynamic;
+import javax.servlet.descriptor.JspConfigDescriptor;
+
+public class DummyServletContext implements ServletContext {
+	private String ctx;
+	
+	public DummyServletContext(String ctx) {
+		this.ctx = ctx;
+	}
+	
+	public ServletContext getContext(String uripath) {
+		// stab
+		return null;
+	}
+
+	public String getContextPath() {
+		return ctx;
+	}
+
+	public int getMajorVersion() {
+		// stab
+		return 0;
+	}
+
+	public int getMinorVersion() {
+		// stab
+		return 0;
+	}
+
+	public int getEffectiveMajorVersion() {
+		// stab
+		return 0;
+	}
+
+	public int getEffectiveMinorVersion() {
+		// stab
+		return 0;
+	}
+
+	public String getMimeType(String file) {
+		// stab
+		return null;
+	}
+
+	public Set<String> getResourcePaths(String path) {
+		// stab
+		return null;
+	}
+
+	public URL getResource(String path)
+			throws MalformedURLException {
+		// stab
+		return null;
+	}
+
+	public InputStream getResourceAsStream(String path) {
+		// stab
+		return null;
+	}
+
+	public RequestDispatcher getRequestDispatcher(String path) {
+		// stab
+		return null;
+	}
+
+	public RequestDispatcher getNamedDispatcher(String name) {
+		// stab
+		return null;
+	}
+
+	public Servlet getServlet(String name) throws ServletException {
+		// stab
+		return null;
+	}
+
+	public Enumeration<Servlet> getServlets() {
+		// stab
+		return null;
+	}
+
+	public Enumeration<String> getServletNames() {
+		// stab
+		return null;
+	}
+
+	public void log(String msg) {
+		// stab
+	}
+
+	public void log(Exception exception, String msg) {
+		// stab
+	}
+
+	public void log(String message, Throwable throwable) {
+		// stab
+	}
+
+	public String getRealPath(String path) {
+		// stab
+		return null;
+	}
+
+	public String getServerInfo() {
+		// stab
+		return null;
+	}
+
+	public String getInitParameter(String name) {
+		// stab
+		return null;
+	}
+
+	public Enumeration<String> getInitParameterNames() {
+		// stab
+		return null;
+	}
+
+	public boolean setInitParameter(String name, String value) {
+		// stab
+		return false;
+	}
+
+	public Object getAttribute(String name) {
+		// stab
+		return null;
+	}
+
+	public Enumeration<String> getAttributeNames() {
+		// stab
+		return null;
+	}
+
+	public void setAttribute(String name, Object object) {
+		// stab
+	}
+
+	public void removeAttribute(String name) {
+		// stab
+	}
+
+	public String getServletContextName() {
+		// stab
+		return null;
+	}
+
+	public Dynamic addServlet(String servletName, String className) {
+		// stab
+		return null;
+	}
+
+	public Dynamic addServlet(String servletName, Servlet servlet) {
+		// stab
+		return null;
+	}
+
+	public Dynamic addServlet(String servletName,
+			Class<? extends Servlet> servletClass) {
+		// stab
+		return null;
+	}
+
+	public <T extends Servlet> T createServlet(Class<T> c)
+			throws ServletException {
+		// stab
+		return null;
+	}
+
+	public ServletRegistration getServletRegistration(
+			String servletName) {
+		// stab
+		return null;
+	}
+
+	public Map<String, ? extends ServletRegistration> getServletRegistrations() {
+		// stab
+		return null;
+	}
+
+	public javax.servlet.FilterRegistration.Dynamic addFilter(
+			String filterName, String className) {
+		// stab
+		return null;
+	}
+
+	public javax.servlet.FilterRegistration.Dynamic addFilter(
+			String filterName, Filter filter) {
+		// stab
+		return null;
+	}
+
+	public javax.servlet.FilterRegistration.Dynamic addFilter(
+			String filterName, Class<? extends Filter> filterClass) {
+		// stab
+		return null;
+	}
+
+	public <T extends Filter> T createFilter(Class<T> c)
+			throws ServletException {
+		// stab
+		return null;
+	}
+
+	public FilterRegistration getFilterRegistration(
+			String filterName) {
+		// stab
+		return null;
+	}
+
+	public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
+		// stab
+		return null;
+	}
+
+	public SessionCookieConfig getSessionCookieConfig() {
+		// stab
+		return null;
+	}
+
+	public void setSessionTrackingModes(
+			Set<SessionTrackingMode> sessionTrackingModes)
+			throws IllegalStateException, IllegalArgumentException {
+		// stab
+	}
+
+	public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
+		// stab
+		return null;
+	}
+
+	public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
+		// stab
+		return null;
+	}
+
+	public void addListener(
+			Class<? extends EventListener> listenerClass) {
+		// stab
+	}
+
+	public void addListener(String className) {
+		// stab
+	}
+
+	public <T extends EventListener> void addListener(T t) {
+		// stab
+	}
+
+	public <T extends EventListener> T createListener(Class<T> c)
+			throws ServletException {
+		// stab
+		return null;
+	}
+
+	public void declareRoles(String... roleNames) {
+		// stab
+	}
+
+	public ClassLoader getClassLoader() {
+		// stab
+		return null;
+	}
+
+	public JspConfigDescriptor getJspConfigDescriptor() {
+		// stab
+		return null;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/MssqlPatcher.java b/src/install/java/org/apache/openmeetings/cli/MssqlPatcher.java
new file mode 100644
index 0000000..681331d
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/MssqlPatcher.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class MssqlPatcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String port = (_port == null) ? "1433" : _port;
+		String db = (_db == null) ? "openmeetings" : _db;
+		return "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + db;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/MysqlPatcher.java b/src/install/java/org/apache/openmeetings/cli/MysqlPatcher.java
new file mode 100644
index 0000000..163e710
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/MysqlPatcher.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class MysqlPatcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String port = (_port == null) ? "3306" : _port;
+		String db = (_db == null) ? "openmeetings" : _db;
+		String suffix = _url.substring(_url.indexOf('?'));
+		return "jdbc:mysql://" + host + ":" + port + "/" + db + suffix;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/OmHelpFormatter.java b/src/install/java/org/apache/openmeetings/cli/OmHelpFormatter.java
new file mode 100644
index 0000000..cffae53
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/OmHelpFormatter.java
@@ -0,0 +1,206 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionGroup;
+import org.apache.commons.cli.Options;
+
+public class OmHelpFormatter extends HelpFormatter {
+	private static String GENERAL_OPTION_GROUP = "";
+	private int maxPrefixLength = 0;
+	
+	@SuppressWarnings("unchecked")
+	private List<OmOption> getReqOptions(Options opts) {
+		//suppose we have only 1 group (for now)
+		OptionGroup g = ((List<OptionGroup>)opts.getRequiredOptions()).get(0);
+		List<OmOption> result = new ArrayList<OmOption>(g.getOptions());
+		Collections.sort(result, new Comparator<OmOption>() {
+			public int compare(OmOption o1, OmOption o2) {
+				return o1.getOrder() - o2.getOrder();
+			}
+		});
+		return result;
+	}
+	
+	@SuppressWarnings("unchecked")
+	private LinkedHashMap<String, List<OmOption>> getOptions(Options opts, int leftPad) {
+		final String longOptSeparator = " ";
+		final String lpad = createPadding(leftPad);
+		final String lpadParam = createPadding(leftPad + 2);
+		List<OmOption> reqOptions = getReqOptions(opts);
+		LinkedHashMap<String, List<OmOption>> map = new LinkedHashMap<String, List<OmOption>>(reqOptions.size());
+		map.put(GENERAL_OPTION_GROUP, new ArrayList<OmOption>());
+		for (OmOption o : reqOptions) {
+			map.put(o.getOpt(), new ArrayList<OmOption>());
+		}
+		for (OmOption o : (Collection<OmOption>)opts.getOptions()) {
+			//TODO need better check (required option should go first and should not be duplicated
+			boolean skipOption = map.containsKey(o.getOpt());
+			boolean mainOption = skipOption || o.getGroup() == null;
+			
+			// first create list containing only <lpad>-a,--aaa where
+			// -a is opt and --aaa is long opt; in parallel look for
+			// the longest opt string this list will be then used to
+			// sort options ascending
+			StringBuilder optBuf = new StringBuilder();
+			if (o.getOpt() == null) {
+				optBuf.append(mainOption ? lpad : lpadParam).append("   ").append(getLongOptPrefix())
+						.append(o.getLongOpt());
+			} else {
+				optBuf.append(mainOption ? lpad : lpadParam).append(getOptPrefix())
+						.append(o.getOpt());
+
+				if (o.hasLongOpt()) {
+					optBuf.append(',').append(getLongOptPrefix())
+							.append(o.getLongOpt());
+				}
+			}
+
+			if (o.hasArg()) {
+				String argName = o.getArgName();
+				if (argName != null && argName.length() == 0) {
+					// if the option has a blank argname
+					optBuf.append(' ');
+				} else {
+					optBuf.append(o.hasLongOpt() ? longOptSeparator : " ");
+					optBuf.append("<")
+							.append(argName != null ? o.getArgName()
+									: getArgName()).append(">");
+				}
+			}
+
+			o.setHelpPrefix(optBuf);
+			maxPrefixLength = Math.max(optBuf.length(), maxPrefixLength);
+			
+			if (skipOption) {
+				//TODO need better check (required option should go first and should not be duplicated
+				continue;
+			}
+			String grp = o.getGroup();
+			grp = grp == null ? GENERAL_OPTION_GROUP : grp;
+			String[] grps = grp.split(",");
+			for(String g : grps) {
+				map.get(g).add(o);
+			}
+		}
+		for (String _key : map.keySet()) {
+			final String key = _key;
+			List<OmOption> options = map.get(key);
+			Collections.sort(options, new Comparator<OmOption>(){
+				public int compare(OmOption o1, OmOption o2) {
+					boolean o1opt = !o1.isOptional(key);
+					boolean o2opt = !o2.isOptional(key);
+					return (o1opt && o2opt || !o1opt && !o2opt) ? (o1.getOpt() == null ? 1 : -1) : (o1opt ? -1 : 1);
+				}
+				
+			});
+			if (opts.hasOption(key)) {
+				options.add(0, (OmOption)opts.getOption(key));
+			}
+		}
+		return map;
+	}
+	
+	private StringBuilder getReqOptionsString(Options opts) {
+		String delim = "";
+		StringBuilder result = new StringBuilder();
+		for (Option o : getReqOptions(opts)) {
+			result.append(delim).append("-").append(o.getOpt());
+			delim = "|";
+		}
+		return result;
+	}
+	
+	@Override
+	protected StringBuffer renderOptions(StringBuffer sb, int width, Options options, int leftPad, int descPad) {
+		final String dpad = createPadding(descPad);
+		final String optional = "(optional) ";
+
+		LinkedHashMap<String, List<OmOption>> optList = getOptions(options, leftPad);
+
+		char[] delimiter = new char[width - 2];
+		Arrays.fill(delimiter, '-');
+
+		for (String key : optList.keySet()) {
+			if (GENERAL_OPTION_GROUP.equals(key)) {
+				sb.append("General options:").append(getNewLine());
+			}
+			for (OmOption option : optList.get(key)) {
+				StringBuilder optBuf = new StringBuilder(option.getHelpPrefix());
+
+				if (optBuf.length() < maxPrefixLength) {
+					optBuf.append(createPadding(maxPrefixLength - optBuf.length()));
+				}
+
+				optBuf.append(dpad);
+
+				int nextLineTabStop = maxPrefixLength + descPad;
+
+				if (option.isOptional(key)) {
+					optBuf.append(optional);
+				}
+				if (option.getDescription() != null) {
+					optBuf.append(option.getDescription());
+				}
+
+				renderWrappedText(sb, width, nextLineTabStop, optBuf.toString());
+
+				sb.append(getNewLine());
+			}
+			sb.append(delimiter).append(getNewLine());
+		}
+		return sb;
+	}
+
+	@Override
+	public void printHelp(PrintWriter pw, int width, String cmdLineSyntax,
+			String header, Options options, int leftPad, int descPad,
+			String footer, boolean autoUsage) {
+		if ((cmdLineSyntax == null) || (cmdLineSyntax.length() == 0)) {
+			throw new IllegalArgumentException("cmdLineSyntax not provided");
+		}
+
+		printUsage(pw, width, cmdLineSyntax, options);
+
+		if ((header != null) && (header.trim().length() > 0)) {
+			printWrapped(pw, width, header);
+		}
+
+		printOptions(pw, width, options, leftPad, descPad);
+
+		if ((footer != null) && (footer.trim().length() > 0)) {
+			printWrapped(pw, width, footer);
+		}
+	}
+    
+	public void printUsage(PrintWriter pw, int width, String app, Options opts) {
+		pw.println(String.format("usage: %1$s [%2$s] [options]", app, getReqOptionsString(opts)));
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/OmOption.java b/src/install/java/org/apache/openmeetings/cli/OmOption.java
new file mode 100644
index 0000000..c9a15d0
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/OmOption.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.cli.Option;
+
+public class OmOption extends Option {
+	private static final long serialVersionUID = -544426769898915573L;
+	private String group = null;
+	private Map<String, Boolean> optional = null;
+	private int order = 0;
+	private String helpPrefix = "";
+
+	public OmOption(String group, String opt, String longOpt, boolean hasArg,
+			String description, boolean optional) throws IllegalArgumentException {
+		this(group, 0, opt, longOpt, hasArg, description);
+		setOptional(optional);
+	}
+
+	public OmOption(String group, String opt, String longOpt, boolean hasArg,
+			String description, String optional) throws IllegalArgumentException {
+		this(group, 0, opt, longOpt, hasArg, description);
+		setOptional(optional);
+	}
+
+	public OmOption(String group, int order, String opt, String longOpt, boolean hasArg,
+			String description) throws IllegalArgumentException {
+		super(opt, longOpt, hasArg, description);
+		this.group = group;
+		this.setOrder(order);
+	}
+
+	public OmOption(String group, String opt, String longOpt, boolean hasArg,
+			String description) throws IllegalArgumentException {
+		this(group, 0, opt, longOpt, hasArg, description);
+	}
+
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	public boolean isOptional(String group) {
+		boolean result = false;
+		if (optional != null) {
+			String[] grps = group.split(",");
+			for(String g : grps) {
+				result |= optional.containsKey(g) ? optional.get(g) : false;
+			}
+		}
+		return result;
+	}
+
+	public void setOptional(boolean val) {
+		setOptional(group);
+	}
+	
+	public void setOptional(String group) {
+		String[] grps = group.split(",");
+		optional = new HashMap<String, Boolean>(grps.length);
+		for(String g : grps) {
+			optional.put(g, true);
+		}
+	}
+
+	public int getOrder() {
+		return order;
+	}
+
+	public void setOrder(int order) {
+		this.order = order;
+	}
+
+	public String getHelpPrefix() {
+		return helpPrefix;
+	}
+
+	public void setHelpPrefix(StringBuilder helpPrefix) {
+		this.helpPrefix = helpPrefix.toString();
+	}
+
+	public void setHelpPrefix(String helpPrefix) {
+		this.helpPrefix = helpPrefix;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/OraclePatcher.java b/src/install/java/org/apache/openmeetings/cli/OraclePatcher.java
new file mode 100644
index 0000000..6cc9428
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/OraclePatcher.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class OraclePatcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String port = (_port == null) ? "1521" : _port;
+		String db = (_db == null) ? "openmeetings" : _db;
+		return "jdbc:oracle:thin:@" + host + ":" + port + ":" + db; 
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/cli/PostgresPatcher.java b/src/install/java/org/apache/openmeetings/cli/PostgresPatcher.java
new file mode 100644
index 0000000..e1b885c
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/cli/PostgresPatcher.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cli;
+
+public class PostgresPatcher extends ConnectionPropertiesPatcher {
+	@Override
+	protected String getUrl(String _url, String host, String _port, String _db) {
+		String port = (_port == null) ? "5432" : _port;
+		String db = (_db == null) ? "openmeetings" : _db;
+		return "jdbc:postgresql://" + host + ":" + port + "/" + db; 
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java b/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java
new file mode 100644
index 0000000..245524b
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -0,0 +1,994 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.installation;
+
+import static org.apache.openmeetings.db.dao.basic.ConfigurationDao.DEFAULT_MAX_UPLOAD_SIZE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_FIRST_DAY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANDING_ZONE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PASS_MIN_LENGTH_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED1_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED2_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_ALLOW_REMOTE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
+import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.room.SipDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.SalutationDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.server.OAuthServer.RequestMethod;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ImportInitvalues {
+	private static final Logger log = Red5LoggerFactory.getLogger(ImportInitvalues.class, webAppRootKey);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private FieldLanguageDao fieldLanguageDaoImpl;
+	@Autowired
+	private FieldValueDao fieldValueDao;
+	@Autowired
+	private StateDao statemanagement;
+	@Autowired
+	private NavigationDao navimanagement;
+	@Autowired
+	private ErrorDao errorManagement;
+	@Autowired
+	private SalutationDao salutationmanagement;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDaoImpl;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
+	@Autowired
+	private PollDao pollManager;
+	@Autowired
+	private SipDao sipDao;
+	@Autowired
+	private OAuth2Dao oauthDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+	@Autowired
+	private OrganisationDao organisationDao;
+	@Autowired
+	private IUserManager userManager;
+	@Autowired
+	private RoomDao roomDao;
+	
+	
+	private int progress = 0;
+
+	public int getProgress() {
+		return progress;
+	}
+	
+	public void loadMainMenu() {
+		/*
+		 * ######################## Dashboard Menu Points
+		 */
+		navimanagement.addGlobalStructure("home", 1, 124, false, true, 1,
+				"home", false, 582L);
+		navimanagement.addMainStructure("dashboardModuleStartScreen", null, 1,
+				290, true, false, 1, "Dashboard Module", 1, false, 1450L);
+		navimanagement.addMainStructure("dashboardModuleCalendar", null, 2,
+				291, true, false, 1, "Module Calendar", 1, false, 1451L);
+
+		/*
+		 * ######################## Conference Menu Points
+		 */
+
+		navimanagement.addGlobalStructure("meetings", 2, 792, false, true, 1,
+				"List of Conference Rooms Global Navi", false, 793L);
+
+		navimanagement.addMainStructure("conferenceModuleRoomList",
+				"publicTabButton", 1, 777, true, false, 1,
+				"List of Conference Rooms Main Navi", 2, false, 1506L);
+
+		navimanagement.addMainStructure("conferenceModuleRoomList",
+				"privateTabButton", 2, 779, true, false, 1,
+				"List of Conference Rooms Main Navi", 2, false, 1507L);
+
+		navimanagement.addMainStructure("conferenceModuleRoomList",
+				"myTabButton", 3, 781, true, false, 1,
+				"List of Conference Rooms Main Navi", 2, false, 1508L);
+
+		/*
+		 * ######################## Recording Menu Points - disabled by default
+		 */
+
+		navimanagement.addGlobalStructure("record", 3, 395, false, true, 1,
+				"record", false, 583L);
+		navimanagement.addMainStructure("recordModule", null, 1, 395, true,
+				false, 1, "Module Recording Player", 3, false, 1452L);
+
+		/*
+		 * ######################## Event Menu Points
+		 */
+
+		navimanagement.addGlobalStructure("events", 4, 3, false, true, 1,
+				"List of Event Rooms Global Navi", true, 585L);
+
+		navimanagement
+				.addMainStructure("eventModuleRoomList", null, 1, 3, true,
+						false, 1, "List of Event Rooms Main Navi", 4, false,
+						null);
+
+		/*
+		 * ######################## Moderation Menu Points - disabled by default
+		 */
+		navimanagement.addGlobalStructure("moderate", 5, 649L, false, true, 2,
+				"Moderation Menu", true, 660L);
+
+		navimanagement.addMainStructure("moderatorModuleUser", null, 1, 650,
+				true, false, 1, "Moderate Users", 5, false, null);
+
+		navimanagement.addMainStructure("moderatorModuleRoom", null, 1, 651,
+				true, false, 1, "Moderate Rooms", 5, false, null);
+
+		/*
+		 * ######################## Administration Menu Points
+		 */
+
+		navimanagement.addGlobalStructure("admin", 6, 6, false, true, 3,
+				"Administration Menu", false, 586L);
+
+		navimanagement.addMainStructure("adminModuleUser", null, 14, 125, true,
+				false, 2, "Administration of Users", 6, false, 1454L);
+
+		navimanagement.addMainStructure("adminModuleConnections", null, 15,
+				597, true, false, 3, "Aministration of Connections", 6, false,
+				1455L);
+
+		navimanagement.addMainStructure("adminModuleOrg", null, 16, 127, true,
+				false, 3, "Administration of Organizations", 6, false, 1456L);
+
+		navimanagement.addMainStructure("adminModuleRoom", null, 17, 186, true,
+				false, 3, "Administration of Rooms", 6, false, 1457L);
+
+		navimanagement.addMainStructure("adminModuleConfiguration", null, 18,
+				263, true, false, 3, "Administration of Configuration", 6,
+				false, 1458L);
+
+		navimanagement.addMainStructure("adminModuleLanguages", null, 19, 348,
+				true, false, 3, "Administration of Languages", 6, false, 1459L);
+
+		navimanagement.addMainStructure("adminModuleLDAP", null, 20, 1103,
+				true, false, 3, "Administration of LDAP Configs", 6, false,
+				1460L);
+
+		navimanagement.addMainStructure("adminModuleOAuth", null, 21, 1571, 
+				true, false, 3, "Administration of OAuth2 servers", 6, false, 1572L);
+
+		navimanagement.addMainStructure("adminModuleBackup", null, 22, 367,
+				true, false, 3, "Administration of Backups", 6, false, 1461L);
+
+		navimanagement.addMainStructure("adminModuleServers", null, 23, 1498,
+				true, false, 3, "Administration of Servers", 6, false, 1499L);
+		log.debug("MainMenu ADDED");
+	}
+	
+	public void loadErrorTypes() {
+		errorManagement.addErrorType(new Long(1), new Long(322));
+		errorManagement.addErrorType(new Long(2), new Long(323));
+		log.debug("Error types ADDED");
+	}
+
+	public void loadErrorMappingsFromXML() throws Exception {
+		SAXReader reader = new SAXReader();
+		Document document = reader.read(new File(
+				OmFileHelper.getLanguagesDir(), OmFileHelper.nameOfErrorFile));
+
+		Element root = document.getRootElement();
+
+		for (@SuppressWarnings("unchecked")
+		Iterator<Element> it = root.elementIterator("row"); it.hasNext();) {
+
+			Element row = it.next();
+
+			Long errorvalues_id = null;
+			Long fieldvalues_id = null;
+			Long errortype_id = null;
+
+			for (@SuppressWarnings("unchecked")
+			Iterator<Element> itSub = row.elementIterator("field"); itSub
+					.hasNext();) {
+
+				Element field = itSub.next();
+
+				String name = field.attributeValue("name");
+				String text = field.getText();
+				// System.out.println("NAME | TEXT "+name+" | "+text);
+				if (name.equals("errorvalues_id"))
+					errorvalues_id = Long.valueOf(text).longValue();
+				if (name.equals("fieldvalues_id"))
+					fieldvalues_id = Long.valueOf(text).longValue();
+				if (name.equals("errortype_id"))
+					errortype_id = Long.valueOf(text).longValue();
+			}
+
+			errorManagement.addErrorValues(errorvalues_id, errortype_id,
+					fieldvalues_id);
+		}
+		log.debug("ErrorMappings ADDED");
+	}
+
+	public void loadSalutations() {
+		salutationmanagement.addUserSalutation("Mr", 261);
+		salutationmanagement.addUserSalutation("Ms", 262);
+		salutationmanagement.addUserSalutation("Mrs", 841);
+		salutationmanagement.addUserSalutation("Dr", 842);
+		salutationmanagement.addUserSalutation("Prof", 1464);
+		log.debug("Salutations ADDED");
+	}
+
+	public void loadConfiguration(InstallationConfig cfg) {
+		configurationDao
+				.add(
+						CONFIG_CRYPT_KEY,
+						cfg.cryptClassName,
+						null,
+						"This Class is used for Authentification-Crypting. "
+								+ "Be carefull what you do here! If you change it while "
+								+ "running previous Pass of users will not be workign anymore! "
+								+ "for more Information see http://openmeetings.apache.org/CustomCryptMechanism.html");
+
+		configurationDao.add(CONFIG_FRONTEND_REGISTER_KEY,
+				cfg.allowFrontendRegister, null, "Is user register available on login screen");
+		configurationDao.add(CONFIG_SOAP_REGISTER_KEY, "1", null, "Is user register available via SOAP/REST");
+		configurationDao.add("default_group_id", "1", null, "");
+
+		// this domain_id is the Organisation of users who register through the
+		// frontend
+		configurationDao.add("default_domain_id", "1", null, "");
+
+
+		configurationDao.add("smtp_server", cfg.smtpServer, null,
+				"this is the smtp server to send messages");
+
+		configurationDao.add("smtp_port", "" + cfg.smtpPort, null,
+				"this is the smtp server port normally 25");
+
+		configurationDao.add("system_email_addr", cfg.mailReferer,
+				null, "all send EMails by the system will have this address");
+
+		configurationDao.add("email_username", cfg.mailAuthName,
+				null, "System auth email username");
+
+		configurationDao.add("email_userpass", cfg.mailAuthPass,
+				null, "System auth email password");
+
+		configurationDao.add("mail.smtp.starttls.enable",
+				cfg.mailUseTls, null, "Enable TLS 1=true, 0=false");
+		
+		configurationDao.add("mail.smtp.connection.timeout", "30000", null,
+				"Socket connection timeout value in milliseconds. Default is infinite timeout.");
+		
+		configurationDao.add("mail.smtp.timeout", "30000", null,
+				"Socket I/O timeout value in milliseconds. Default is infinite timeout.");
+
+		configurationDao.add("application.name",
+				ConfigurationDao.DEFAULT_APP_NAME, null,
+				"Name of the Browser Title window");
+
+		// "1" == "EN"
+		configurationDao.add(CONFIG_DEFAUT_LANG_KEY, cfg.defaultLangId,
+				null, "Default System Language ID see languages.xml");
+
+		configurationDao.add("swftools_zoom", "" + cfg.swfZoom, null,
+				"dpi for conversion of PDF to SWF (should be an integer between 50 and  600 with a default value of 100 dpi)");
+
+		configurationDao.add("swftools_jpegquality",
+				"" + cfg.swfJpegQuality, null,
+				"compression quality for conversion of PDF to SWF (should be an integer between 1 and 100, with a default value of 85)");
+
+		configurationDao.add("swftools_path", cfg.swfPath, null,
+				"Path To SWF-Tools");
+
+		configurationDao.add("imagemagick_path",
+				cfg.imageMagicPath, null, "Path to ImageMagick tools");
+
+		configurationDao.add("sox_path", cfg.soxPath, null,
+				"Path To SoX-Tools");
+
+		configurationDao.add("ffmpeg_path", cfg.ffmpegPath, null,
+				"Path To FFMPEG");
+		configurationDao.add(
+						"office.path",
+						cfg.officePath,
+						null,
+						"The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically");
+		configurationDao.add(
+						"jod.path",
+						cfg.jodPath,
+						null,
+						"The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar");
+
+		configurationDao.add(CONFIG_RSS_FEED1_KEY, cfg.urlFeed, null,
+				"Feed URL");
+
+		configurationDao.add(CONFIG_RSS_FEED2_KEY, cfg.urlFeed2, null,
+				"Feed URL 2");
+
+		configurationDao.add("sendEmailAtRegister", cfg.sendEmailAtRegister,
+						null,
+						"User get a EMail with their Account data. Values: 0(No) or 1(Yes)");
+
+		configurationDao.add(
+						"sendEmailWithVerficationCode",
+						cfg.sendEmailWithVerficationCode,
+						null,
+						"User must activate their account by clicking on the "
+								+ "activation-link in the registering Email. Values: 0(No) or 1(Yes) "
+								+ "It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while "
+								+ "sendEmailAtRegister is 0(No) cause you need"
+								+ "to send a EMail.");
+		configurationDao.add(
+						"default_export_font",
+						cfg.defaultExportFont,
+						null,
+						"The Name of the Font used for exporting/render Images from Whiteboard"
+								+ "The Font has to exist on the Server which runs Red5");
+
+		configurationDao.add("default.rpc.userid", "" + 1, null,
+				"The User-Id of the Control User in OpenMeetings");
+
+		configurationDao.add(CONFIG_APPLICATION_BASE_URL, cfg.baseUrl, null, "Base URL your OPenmeetings installation will be accessible at.");
+		
+		// ***************************************
+		// ***************************************
+		// red5SIP Integration Coniguration Values
+		// ***************************************
+
+		configurationDao.add("red5sip.enable", cfg.red5SipEnable,
+				null, "Enable to enable the red5SIP integration ");
+		configurationDao.add("red5sip.room_prefix",
+				cfg.red5SipRoomPrefix, null,
+				"Numerical prefix for OM rooms created inside the SIP");
+		configurationDao.add("red5sip.exten_context",
+				cfg.red5SipExtenContext, null,
+				"Enable to enable the red5SIP integration ");
+
+		// ***************************************
+		// ***************************************
+		// Timezone settings
+		// ***************************************
+
+		configurationDao.add("default.timezone",
+				cfg.ical_timeZone, null,
+				"This is the default timezone if nothing is specified");
+
+		// ***************************************
+		// ***************************************
+		// additional settings
+		// ***************************************
+
+		configurationDao.add("show.facebook.login", "" + 0, null,
+				"Show Facebook Login");
+
+		configurationDao.add(CONFIG_SCREENSHARING_QUALITY, "1", null,
+				"Default selection in ScreenSharing Quality:\n 0 - bigger frame rate, no resize\n 1 - no resize\n 2 - size == 1/2 of selected area\n 3 - size == 3/8 of selected area");
+
+		configurationDao.add(CONFIG_SCREENSHARING_FPS, "10", null, "Default selection in ScreenSharing FPS");
+		configurationDao.add(CONFIG_SCREENSHARING_FPS_SHOW, "true", null, "Is screensharing FPS should be displayed or not (true/false)");
+		configurationDao.add(CONFIG_SCREENSHARING_ALLOW_REMOTE, "true", null, "Is remote control will be enabled while screensharing. Allowing remote control will be not possible in case it is set to 'false' (true/false)");
+
+		configurationDao.add(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, "1", null, "Show My Rooms Tab");
+
+		configurationDao.add("dashboard.show.chat", "1", null, "Show Chat Tab");
+
+		configurationDao.add(CONFIG_DASHBOARD_SHOW_RSS_KEY, "0", null, "Show RSS Tab");
+
+		configurationDao
+				.add(
+						"show.whiteboard.draw.status",
+						"0",
+						null,
+						"Display name of the user who draw the current object (User Name auto-disapper after 3 seconds.");
+
+		configurationDao.add(CONFIG_MAX_UPLOAD_SIZE_KEY, ""
+				+ DEFAULT_MAX_UPLOAD_SIZE, null,
+				"Maximum size of upload file (bytes)"); // defaults to 1GB
+
+		configurationDao
+				.add(
+						CONFIG_APPOINTMENT_REMINDER_MINUTES,
+						"15",
+						null,
+						"The number of minutes before reminder emails are send. Set to 0 to disable reminder emails");
+
+		configurationDao.add(CONFIG_LOGIN_MIN_LENGTH_KEY, ""
+				+ USER_LOGIN_MINIMUM_LENGTH, null,
+				"Number of chars needed in a user login");
+
+		configurationDao.add(CONFIG_PASS_MIN_LENGTH_KEY, ""
+				+ USER_PASSWORD_MINIMUM_LENGTH, null,
+				"Number of chars needed in a user login");
+
+		configurationDao
+				.add("calendar.conference.rooms.default.size", "50",
+						null,
+						"Default number of participants conference room created via calendar");
+
+		configurationDao
+				.add(
+						"use.old.style.ffmpeg.map.option",
+						"0",
+						null,
+						"specify a 1 if you would like to use old FFMPEG -map option with 0.0 instead of 0:0");
+
+		// give exclusive audio key code
+		configurationDao
+				.add(
+						"exclusive.audio.keycode",
+						"123",
+						null,
+						"A hot key code for the 'give exclusive audio' functionality. Keycode 123 is F12");
+		// mute/unmute audio key code
+		configurationDao
+				.add(
+						"mute.keycode",
+						"118",
+						null,
+						"A hot key code for the 'mute/unmute audio' functionality. Keycode 118 is F7");
+		
+		// system-wide ldap params
+		configurationDao.add(CONFIG_DEFAULT_LDAP_ID, "0", null,
+				"Ldap domain selected by default in the login screen");
+
+		// set inviter's email address as ReplyTo in email invitations
+		configurationDao
+				.add(
+						"inviter.email.as.replyto",
+						cfg.replyToOrganizer,
+						null,
+						"Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)");
+
+		configurationDao.add(CONFIG_DEFAULT_LANDING_ZONE,
+				"user/dashboard"
+				, null
+				, "Area to be shown to the user after login. Possible values are: "
+					+ "user/dashboard, user/calendar, user/record, rooms/my, rooms/group, rooms/public, admin/user, admin/connection"
+					+ ", admin/group, admin/room, admin/config, admin/lang, admin/ldap, admin/backup, admin/server, admin/oauth2");
+		
+		// oauth2 params
+		configurationDao
+				.add(
+						CONFIG_IGNORE_BAD_SSL,
+						"no", 
+						null, 
+						"Set \"yes\" or \"no\" to enable/disable ssl certifications checking for OAuth2");
+
+		configurationDao.add(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, "", null,
+				"Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost");
+		configurationDao.add(CONFIG_CALENDAR_FIRST_DAY, "0", null, "The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc.");
+		
+		log.debug("Configurations ADDED");
+	}
+
+	public void loadRoomTypes() {
+		long conference_Id = roomTypeDao.addRoomType(
+				"conference", 1541, false);
+		log.debug("conference_Id: " + conference_Id);
+
+		// Audience room type is not in use anymore
+		roomTypeDao.addRoomType("audience", -1, true);
+
+		long restricted_Id = roomTypeDao.addRoomType(
+				"restricted", 1542, false);
+		log.debug("restricted_Id: " + restricted_Id);
+
+		long interview_Id = roomTypeDao.addRoomType(
+				"interview", 1543, false);
+		log.debug("interview_Id: " + interview_Id);
+
+		// Custom room type is not in use anymore
+		roomTypeDao.addRoomType("custom", -2, true);
+		log.debug("RoomTypes ADDED");
+	}
+
+	private Room createRoom(String name, long typeId, long capacity, boolean isPublic, Long orgId) {
+		Room r = new Room();
+		r.setName(name);
+		r.setComment("");
+		r.setStarttime(new Date());
+		r.setNumberOfPartizipants(capacity);
+		r.setRoomtype(roomTypeDao.get(typeId));
+		r.setIspublic(isPublic);
+		r.setAllowUserQuestions(true);
+		r.setIsAudioOnly(false);
+		r.setAllowFontStyles(true);
+
+		r.setAppointment(false);
+
+		r.setIsDemoRoom(false);
+		r.setDemoTime(null);
+
+		r.setIsModeratedRoom(false);
+		r.setHideTopBar(false);
+
+		r.setDeleted(false);
+
+		r.setIsClosed(false);
+		r.setRedirectURL(null);
+
+		r.setOwnerId(null);
+
+		r.setWaitForRecording(false);
+		r.setAllowRecording(true);
+		
+		r.setHideChat(false);
+		r.setHideActivitiesAndActions(false);
+		r.setHideActionsMenu(false);
+		r.setHideFilesExplorer(false);
+		r.setHideScreenSharing(false);	
+		r.setHideWhiteboard(false);
+		if (orgId != null) {
+			RoomOrganisation ro = new RoomOrganisation();
+			ro.setRoom(r);
+			ro.setOrganisation(organisationDao.get(orgId));
+			ro.setStarttime(new Date());
+		}
+		r = roomDao.update(r, null);
+		return r;
+	}
+	public void loadDefaultRooms(boolean createRooms) {
+		if (createRooms) {
+			// hardcoded IDs (they are not intended to be changed)
+			long conference_Id = 1;
+			long restricted_Id = 3;
+			long interview_Id = 4;
+
+			createRoom("public Interview Room", interview_Id, 16L, true, null);
+			createRoom("public Conference Room", conference_Id, 32L, true, null);
+			Room r = createRoom("public Video Only Room", conference_Id, 32L, true, null);
+			r.setHideWhiteboard(true);
+			roomDao.update(r, null);
+			createRoom("public Video And Whiteboard Room", conference_Id, 32L, true, null);
+			createRoom("public Restricted Room", restricted_Id, 100L, true, null);
+			r = createRoom("restricted room with micro option set", restricted_Id, 100L, true, null);
+			r.setShowMicrophoneStatus(true);
+			roomDao.update(r, null);
+
+			r = createRoom("conference room with micro option set", conference_Id, 32L, true, null);
+			r.setShowMicrophoneStatus(true);
+			roomDao.update(r, null);
+
+			createRoom("private Conference Room", conference_Id, 32L, false, 1L);
+		}
+	}
+
+	public void loadInitUserAndOrganisation(InstallationConfig cfg) throws Exception {
+		Long default_lang_id = Long.parseLong(cfg.defaultLangId);
+		if (default_lang_id == null) {
+			default_lang_id = 1L;
+		}
+
+		// Add default group
+		Organisation org = new Organisation();
+		org.setName(cfg.group);
+		org.setInsertedby(1L);
+		org.setDeleted(false);
+		org.setStarttime(new Date());
+		org = organisationDao.update(org, null);
+
+		Set<Right> rights = UserDao.getDefaultRights();
+		rights.add(Right.Admin);
+		rights.add(Right.Soap);
+		Long user_id = userManager.registerUserInit(rights, cfg.username, cfg.password, "lastname"
+				, "firstname", cfg.email, new Date() /* age/birthday */, "street", "no", "fax", "zip", 1
+				, "town", default_lang_id, false /* sendWelcomeMessage */
+				, Arrays.asList(org.getOrganisation_id()), "phone", false, false, timezoneUtil.getTimeZone(cfg.ical_timeZone),
+				false /* forceTimeZoneCheck */, "" /* userOffers */, "" /* userSearchs */, false /* showContactData */,
+				true /* showContactDataToContacts */, null);
+
+		log.debug("Installation - User Added user-Id " + user_id);
+
+		if (user_id < 0) {
+			throw new Exception("Could not add user user returns a negative error message: " + user_id);
+		}
+	}
+
+	/**
+	 * import all language Names from the xml file
+	 * 
+	 * @param filePath
+	 * @throws Exception
+	 */
+	private void loadCountriesFiles() throws Exception {
+		SAXReader reader = new SAXReader();
+		Document document = reader.read(new File(
+				OmFileHelper.getLanguagesDir(),
+				OmFileHelper.nameOfCountriesFile));
+
+		Element root = document.getRootElement();
+
+		for (@SuppressWarnings("rawtypes")
+		Iterator it = root.elementIterator("country"); it.hasNext();) {
+			Element item = (Element) it.next();
+
+			statemanagement.addState(item.attributeValue("name"),
+					item.attributeValue("short"),
+					Integer.parseInt(item.attributeValue("code")));
+		}
+		log.debug("Countries ADDED");
+	}
+
+	/**
+	 * load all availible languages File names and language name's from the
+	 * config file
+	 * 
+	 * @param filePath
+	 * @return
+	 * @throws Exception
+	 */
+	public static Map<Integer, Map<String, Object>> getLanguageFiles() throws Exception {
+		Map<Integer, Map<String, Object>> languages = new LinkedHashMap<Integer, Map<String, Object>>();
+
+		SAXReader reader = new SAXReader();
+		Document document = reader
+				.read(new File(OmFileHelper.getLanguagesDir(),
+						OmFileHelper.nameOfLanguageFile));
+
+		Element root = document.getRootElement();
+
+		for (@SuppressWarnings("unchecked")
+		Iterator<Element> it = root.elementIterator("lang"); it.hasNext();) {
+			Element item = it.next();
+			String country = item.getText();
+			Integer id = Integer.valueOf(item.attribute("id").getValue())
+					.intValue();
+
+			String rtl = item.attribute("rightToLeft").getValue();
+			String code = item.attribute("code").getValue();
+
+			LinkedHashMap<String, Object> lang = new LinkedHashMap<String, Object>();
+			lang.put("id", id);
+			lang.put("name", country);
+			lang.put("rtl", rtl);
+			lang.put("code", code);
+			// log.error("getLanguageFiles "+country);
+			languages.put(id, lang);
+		}
+		log.debug("Language files are loaded");
+		return languages;
+	}
+
+	/**
+	 * @author o.becherer initial fillment of Appointmentcategories
+	 */
+	// ------------------------------------------------------------------------------
+	public void loadInitAppointmentCategories() {
+		log.debug("ImportInitValues.loadInitAppointmentCategories");
+
+		appointmentCategoryDaoImpl.addAppointmentCategory(new Long(-1),
+				"default", "default");
+	}
+
+	// ------------------------------------------------------------------------------
+
+	/**
+	 * @author o.becherer initial fillment of AppointMentReminderTypes
+	 */
+	// ------------------------------------------------------------------------------
+	public void loadInitAppointmentReminderTypes() {
+		log.debug("ImportInitValues.loadInitAppointmentReminderTypes");
+
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "do not send notification", 1568);
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "simple email", 1569);
+		appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L, "iCal email", 1570);
+	}
+
+	public void loadLanguagesFile(int langId) throws Exception {
+		Map<Integer, Map<String, Object>> listlanguages = getLanguageFiles();
+		loadLanguagesFile(listlanguages, new Hashtable<Long, Fieldvalues>(3000), langId);
+	}
+
+	public void loadLanguagesFile(String langName) throws Exception {
+		Map<Integer, Map<String, Object>> listlanguages = getLanguageFiles();
+		log.debug("Number of languages found: " + listlanguages.size());
+		for (int langId : listlanguages.keySet()) {
+			Map<String, Object> langMap = listlanguages.get(langId);
+			if (langName.equals(langMap.get("name"))) {
+				loadLanguagesFile(listlanguages, new Hashtable<Long, Fieldvalues>(3000), langId);
+				break;
+			}
+		}
+	}
+
+	public void loadLanguagesFile(Map<Integer, Map<String, Object>> listlanguages, Map<Long, Fieldvalues> fieldCache, int langId)
+			throws Exception {
+		Map<String, Object> langMap = listlanguages.get(langId);
+		log.debug("loadInitLanguages lang: " + langMap);
+
+		String langName = (String) langMap.get("name");
+		String rtl = (String) langMap.get("rtl");
+		String code = (String) langMap.get("code");
+
+		log.debug("loadInitLanguages rtl from xml: " + rtl);
+
+		Boolean langRtl = false;
+
+		if (rtl != null && rtl.equals("true")) {
+			langRtl = true;
+		}
+
+		long ticks = System.currentTimeMillis();
+		FieldLanguage lang = fieldLanguageDaoImpl.addLanguage(langId, langName, langRtl, code);
+
+		SAXReader reader = new SAXReader();
+		Document document = reader.read(new File(
+				OmFileHelper.getLanguagesDir(), langName + ".xml"));
+
+		Element root = document.getRootElement();
+
+		Map<Long, Fieldlanguagesvalues> flvMap = lang.getLanguageValuesMap();
+		for (@SuppressWarnings("rawtypes")
+		Iterator it = root.elementIterator("string"); it.hasNext();) {
+			Element item = (Element) it.next();
+			// log.error(item.getName());
+
+			Long id = Long.valueOf(item.attributeValue("id")).longValue();
+			String name = item.attributeValue("name");
+			String value = "";
+
+			for (@SuppressWarnings("rawtypes")
+			Iterator t2 = item.elementIterator("value"); t2.hasNext();) {
+				Element val = (Element) t2.next();
+				value = val.getText();
+			}
+
+			// log.error("result: "+langFieldIdIsInited+" "+id+" "+name+" "+value);
+
+			if (flvMap.containsKey(id)) {
+				Fieldlanguagesvalues flv = flvMap.get(id);
+				flv.setUpdatetime(new Date());
+				flv.setValue(value);
+			} else {
+				Fieldvalues fv = null;
+				// Only do that for the first field-set
+				if (!fieldCache.containsKey(id)) {
+					fv = new Fieldvalues();
+					fv.setFieldvalues_id(id);
+					fv.setStarttime(new Date());
+					fv.setName(name);
+					fv.setDeleted(false);
+					fv = fieldValueDao.update(fv, null);
+					fieldCache.put(id, fv);
+				} else {
+					fv = fieldCache.get(id);
+				}
+				Fieldlanguagesvalues flv = new Fieldlanguagesvalues();
+				flv.setStarttime(new Date());
+				flv.setValue(value);
+				flv.setLanguage_id(lang.getLanguage_id());
+				flv.setFieldvalues(fv);
+				flv.setDeleted(false);
+				flvMap.put(id, flv);
+			}
+		}
+		lang.setLanguageValues(flvMap.values());
+		fieldLanguageDaoImpl.updateLanguage(lang);
+		log.debug("Lang ADDED: " + lang + "; seconds passed: " + (System.currentTimeMillis() - ticks) / 1000);
+	}
+	
+	public static void main(String... args) {
+		int pr = 22;
+		int progressDelta = 50 - pr;
+		
+		double deltaProgressPerLanguageFile = new Double(progressDelta)/new Double(34);
+		
+		pr += (2 * deltaProgressPerLanguageFile);
+		
+		System.err.println("deltaProgressPerLanguageFile: "+deltaProgressPerLanguageFile +" "+ pr);
+	}
+
+	public void loadLanguagesFiles() throws Exception {
+		Map<Integer, Map<String, Object>> listlanguages = getLanguageFiles();
+
+		Map<Long, Fieldvalues> fieldCache = new Hashtable<Long, Fieldvalues>(3000);
+		
+		int initProgress = progress;
+		int progressDelta = 76 - progress;
+		double deltaProgressPerLanguageFile = ((double)progressDelta) / listlanguages.size();
+		
+		/** Read all languages files */
+		for (int langId : listlanguages.keySet()) {
+			loadLanguagesFile(listlanguages, fieldCache, langId);
+			progress = (int)(initProgress + Math.round(deltaProgressPerLanguageFile * langId));
+		}
+		log.debug("All languages are imported");
+	}
+
+	public void loadInitialOAuthServers() throws Exception {
+		// Yandex
+		OAuthServer yandexServer = new OAuthServer();
+		yandexServer.setName("Yandex");
+		yandexServer.setIconUrl("http://yandex.st/morda-logo/i/favicon.ico");
+		yandexServer.setClientId("<put your client_id>");
+		yandexServer.setClientSecret("<put your client_secret>");
+		yandexServer.setEmailParamName("default_email");
+		yandexServer.setEnabled(false);
+		yandexServer.setLoginParamName("default_email");
+		yandexServer.setRequestInfoUrl("https://login.yandex.ru/info?format=json&oauth_token={$access_token}");
+		yandexServer.setRequestTokenUrl("https://oauth.yandex.ru/token");
+		yandexServer.setRequestKeyUrl("https://oauth.yandex.ru/authorize?response_type=code&client_id={$client_id}");
+		yandexServer.setRequestTokenAttributes("grant_type=authorization_code&code={$code}&client_id={$client_id}&client_secret={$client_secret}");
+		yandexServer.setRequestTokenMethod(RequestMethod.POST);
+		oauthDao.update(yandexServer, null);
+		
+		// Google
+		OAuthServer googleServer = new OAuthServer();
+		googleServer.setName("Google");
+		googleServer.setIconUrl("https://www.google.ru/images/google_favicon_128.png");
+		googleServer.setEnabled(false);
+		googleServer.setClientId("<put your client_id>");
+		googleServer.setClientSecret("<put your client_secret>");
+		googleServer.setRequestKeyUrl("https://accounts.google.com/o/oauth2/auth?redirect_uri={$redirect_uri}&response_type=code&client_id={$client_id}"
+				+ "&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile");
+		googleServer.setRequestTokenUrl("https://accounts.google.com/o/oauth2/token");
+		googleServer.setRequestTokenMethod(RequestMethod.POST);
+		googleServer.setRequestTokenAttributes("code={$code}&client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uri}&grant_type=authorization_code");
+		googleServer.setRequestInfoUrl("https://www.googleapis.com/oauth2/v1/userinfo?access_token={$access_token}");
+		googleServer.setLoginParamName("email");
+		googleServer.setEmailParamName("email");
+		googleServer.setFirstnameParamName("given_name");
+		googleServer.setLastnameParamName("family_name");
+		oauthDao.update(googleServer, null);
+		
+		// Facebook
+		OAuthServer facebookServer = new OAuthServer();
+		facebookServer.setName("Facebook");
+		facebookServer.setIconUrl("https://www.facebook.com/images/fb_icon_325x325.png");
+		facebookServer.setEnabled(false);
+		facebookServer.setClientId("<put your client_id>");
+		facebookServer.setClientSecret("<put your client_secret>");
+		facebookServer.setRequestKeyUrl("https://www.facebook.com/dialog/oauth?client_id={$client_id}&redirect_uri={$redirect_uri}&scope=email");
+		facebookServer.setRequestTokenUrl("https://graph.facebook.com/oauth/access_token");
+		facebookServer.setRequestTokenMethod(RequestMethod.POST);
+		facebookServer.setRequestTokenAttributes("client_id={$client_id}&redirect_uri={$redirect_uri}&client_secret={$client_secret}&code={$code}");
+		facebookServer.setRequestInfoUrl("https://graph.facebook.com/me?access_token={$access_token}&fields=username,first_name,last_name,email");
+		facebookServer.setLoginParamName("username");
+		facebookServer.setEmailParamName("email");
+		facebookServer.setFirstnameParamName("first_name");
+		facebookServer.setLastnameParamName("last_name");
+		oauthDao.update(facebookServer, null);
+	}
+	
+	// ------------------------------------------------------------------------------
+
+	/**
+	 * Loading initial Language from xml Files into database
+	 */
+	// ------------------------------------------------------------------------------
+	public void loadPollTypes() {
+		pollManager.addPollType(26L, false);
+		pollManager.addPollType(27L, true);
+	}
+
+	// ------------------------------------------------------------------------------
+
+	public void loadSystem(InstallationConfig cfg, boolean force) throws Exception {
+		// FIXME dummy check if installation was performed before
+		if (!force && usersDao.count() > 0) {
+			log.debug("System contains users, no need to install data one more time.");
+		}
+		sipDao.delete();
+		progress = 6;
+		loadMainMenu();
+		progress = 9;
+		loadErrorTypes();
+		progress = 12;
+		loadErrorMappingsFromXML();
+		progress = 15;
+		loadCountriesFiles();
+		progress = 22;
+		loadLanguagesFiles();
+		progress = 76;
+		loadSalutations();
+		progress = 78;
+		// AppointMent Categories
+		loadInitAppointmentCategories();
+		progress = 80;
+		// Appointment Reminder types
+		loadInitAppointmentReminderTypes();
+		progress = 82;
+		// Appointment poll types
+		loadPollTypes();
+		progress = 84;
+		loadRoomTypes();
+		progress = 86;
+
+		loadConfiguration(cfg);
+		progress = 88;
+		loadInitialOAuthServers();
+		progress = 91;
+	}
+
+	public void loadAll(InstallationConfig cfg, boolean force) throws Exception {
+		// FIXME dummy check if installation was performed before
+		if (!force && usersDao.count() > 0) {
+			log.debug("System contains users, no need to install data one more time.");
+			return;
+		}
+		loadSystem(cfg, force);
+		loadInitUserAndOrganisation(cfg);
+		progress = 94;
+
+		loadDefaultRooms("1".equals(cfg.createDefaultRooms));
+		progress = 100;
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/installation/InstallationConfig.java b/src/install/java/org/apache/openmeetings/installation/InstallationConfig.java
new file mode 100644
index 0000000..ca3ba68
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/installation/InstallationConfig.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.installation;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
+
+import java.io.Serializable;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.crypt.MD5Implementation;
+
+public class InstallationConfig implements Serializable {
+	private static final long serialVersionUID = 1L;
+	
+	public String appName = ConfigurationDao.DEFAULT_APP_NAME;
+	public String username;
+	public String password;
+	public String email;
+	public String group;
+	public String allowFrontendRegister = "1";
+	public String createDefaultRooms = "1";
+	public String ical_timeZone = "Europe/Berlin";
+	
+	public String cryptClassName = MD5Implementation.class.getCanonicalName();
+	//email
+	public Integer smtpPort = 25;
+	public String smtpServer = "localhost";
+	public String mailAuthName = "";
+	public String mailAuthPass = "";
+	public String mailReferer = "noreply@openmeetings.apache.org";
+	public String mailUseTls = "0";
+	//paths
+	public Integer swfZoom = 100;
+	public Integer swfJpegQuality = 85;
+	public String swfPath = "";
+	public String imageMagicPath = "";
+	public String ffmpegPath = "";
+	public String soxPath = "";
+	public String jodPath = "/opt/jod/lib";
+	public String officePath = "";
+	
+	public String defaultLangId = "1";
+	public String sendEmailAtRegister = "0";
+	public String urlFeed = "http://mail-archives.apache.org/mod_mbox/openmeetings-user/?format=atom";
+	public String urlFeed2 = "http://mail-archives.apache.org/mod_mbox/openmeetings-dev/?format=atom";
+	public String sendEmailWithVerficationCode = "0";
+	public String defaultExportFont = "TimesNewRoman";
+    public String red5SipEnable = "no";
+    public String red5SipRoomPrefix = "400";
+    public String red5SipExtenContext = "rooms";
+    public String replyToOrganizer = "1";
+    public String baseUrl = DEFAULT_BASE_URL;
+    
+	@Override
+	public String toString() {
+		return "InstallationConfig [allowFrontendRegister="
+				+ allowFrontendRegister + ", createDefaultRooms="
+				+ createDefaultRooms + ", cryptClassName=" + cryptClassName
+				+ ", smtpPort=" + smtpPort + ", smtpServer=" + smtpServer
+				+ ", mailAuthName=" + mailAuthName + ", mailAuthPass="
+				+ mailAuthPass + ", mailReferer=" + mailReferer
+				+ ", mailUseTls=" + mailUseTls + ", swfZoom=" + swfZoom
+				+ ", swfJpegQuality=" + swfJpegQuality  + ", swfPath=" + swfPath
+				+ ", imageMagicPath=" + imageMagicPath + ", ffmpegPath="
+				+ ffmpegPath + ", soxPath=" + soxPath + ", jodPath=" + jodPath
+				+ ", defaultLangId=" + defaultLangId + ", sendEmailAtRegister="
+				+ sendEmailAtRegister + ", urlFeed=" + urlFeed + ", urlFeed2="
+				+ urlFeed2 + ", sendEmailWithVerficationCode="
+				+ sendEmailWithVerficationCode + ", defaultExportFont="
+				+ defaultExportFont + ", red5SipEnable="
+				+ red5SipEnable + ", red5SipRoomPrefix=" + red5SipRoomPrefix
+				+ ", red5SipExtenContext=" + red5SipExtenContext
+				+ ", replyToOrganizer=" + replyToOrganizer
+				+ ", ical_timeZone=" + ical_timeZone 
+				+ "]";
+	}
+}
diff --git a/src/install/java/org/apache/openmeetings/installation/InstallationDocumentHandler.java b/src/install/java/org/apache/openmeetings/installation/InstallationDocumentHandler.java
new file mode 100644
index 0000000..cd355ad
--- /dev/null
+++ b/src/install/java/org/apache/openmeetings/installation/InstallationDocumentHandler.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.installation;
+
+import java.io.FileWriter;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+
+public class InstallationDocumentHandler {
+	public static void createDocument(Integer stepNo) throws Exception {
+		
+		Document document = DocumentHelper.createDocument();
+		
+		Element root = document.addElement( "install" );
+		Element step = root.addElement("step");
+		
+		step.addElement("stepnumber").addText(stepNo.toString());
+		step.addElement("stepname").addText("Step "+stepNo);
+		
+		XMLWriter writer = new XMLWriter(new FileWriter(OmFileHelper.getInstallFile()));
+        writer.write( document );
+        writer.close();
+		
+	}
+	
+	public static int getCurrentStepNumber() throws Exception{
+		
+	    SAXReader reader = new SAXReader();
+        Document document = reader.read(OmFileHelper.getInstallFile());
+        
+        Node node = document.selectSingleNode( "//install/step/stepnumber" );
+        
+        return Integer.valueOf(node.getText()).intValue();
+        
+	}
+	
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/batik/beans/PrintBean.java b/src/main/java/org/apache/openmeetings/batik/beans/PrintBean.java
new file mode 100644
index 0000000..63b42f6
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/batik/beans/PrintBean.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.batik.beans;
+
+import java.util.List;
+
+public class PrintBean {
+
+	public String hash;
+	@SuppressWarnings("rawtypes")
+	public List map;
+	public int width;
+	public int height;
+
+	public PrintBean(String hash, @SuppressWarnings("rawtypes") List map,
+			int width, int height) {
+		super();
+		this.hash = hash;
+		this.height = height;
+		this.map = map;
+		this.width = width;
+	}
+
+	public String getHash() {
+		return hash;
+	}
+
+	public void setHash(String hash) {
+		this.hash = hash;
+	}
+
+	@SuppressWarnings("rawtypes")
+	public List getMap() {
+		return map;
+	}
+
+	@SuppressWarnings("rawtypes")
+	public void setMap(List map) {
+		this.map = map;
+	}
+
+	public int getWidth() {
+		return width;
+	}
+
+	public void setWidth(int width) {
+		this.width = width;
+	}
+
+	public int getHeight() {
+		return height;
+	}
+
+	public void setHeight(int height) {
+		this.height = height;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/cluster/SlaveHTTPConnectionManager.java b/src/main/java/org/apache/openmeetings/cluster/SlaveHTTPConnectionManager.java
new file mode 100644
index 0000000..4a2fc86
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/cluster/SlaveHTTPConnectionManager.java
@@ -0,0 +1,102 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cluster;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.openmeetings.cluster.sync.RestClient;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Manages connections to the other nodes of the cluster.
+ * 
+ * Use-case: When you kick a user via the admin-panel, it is probably on anther server.
+ * So you need to perform a REST call to the node and let that node do the actual disconnect.
+ * 
+ * @author sebawagner
+ *
+ */
+public class SlaveHTTPConnectionManager {
+
+	private static Logger log = Red5LoggerFactory.getLogger(
+			SlaveHTTPConnectionManager.class, OpenmeetingsVariables.webAppRootKey);
+
+	/**
+	 * We store the list of RestClients in the memory, so that we can simply
+	 * call ping to get the load, without the need to get a new session Hash and
+	 * to login again. <br/>
+	 * There can be only one RestClient per server, so we use the primary key of
+	 * the server to store the RestClient.
+	 */
+	private static Map<Long, RestClient> restClientsSessionStore = new HashMap<Long, RestClient>();
+
+	/**
+	 * Synchronized, cause nobody should manipulate the object while another
+	 * process requests it, the scheduler could run several times and request
+	 * the same object, add or remove it.<br/>
+	 * If there is no object yet, create one.
+	 * 
+	 * @param server
+	 */
+	private synchronized RestClient getRestClient(Server server) {
+		RestClient restClient = restClientsSessionStore.get(server.getId());
+
+		// check if any values of the server have been changed,
+		// if yes, we need a new RestClient to make sure it will re-login to the
+		// changed server details
+		if (restClient != null && restClient.hasServerDetailsChanged(server)) {
+			log.debug("Server details changed, get new rest client");
+			restClient = null;
+		}
+
+		if (restClient == null) {
+			restClient = new RestClient(server);
+			restClientsSessionStore.put(server.getId(), restClient);
+		}
+		return restClient;
+	}
+
+	/**
+	 * Gets the current {@link RestClient} from the session store and then
+	 * performs a kickUser on that. It is not possible that there is no
+	 * {@link RestClient}, because if you want to kick a user from a slave, the
+	 * master <i>must</i> already have loaded the sessions from the slave, so
+	 * there logically <i>must</i> by a {@link RestClient} available that has an 
+	 * open connection to that slave / {@link Server}
+	 * 
+	 * @param serverId
+	 * @param publicSID
+	 */
+	public void kickSlaveUser(Server server, String publicSID) throws Exception {
+		
+		RestClient rClient = getRestClient(server);
+		
+		if (rClient == null) {
+			throw new Exception("No RestClient found for server " + server);
+		}
+		
+		rClient.kickUser(publicSID);
+		
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/cluster/sync/RestClient.java b/src/main/java/org/apache/openmeetings/cluster/sync/RestClient.java
new file mode 100644
index 0000000..5f88693
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/cluster/sync/RestClient.java
@@ -0,0 +1,395 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.cluster.sync;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * 
+ * Performs call to the WebService Gateway to load the server load from the
+ * slave's of the cluster
+ * 
+ * @author sebawagner
+ * 
+ */
+public class RestClient {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			RestClient.class, OpenmeetingsVariables.webAppRootKey);
+	
+	private enum Action {
+		//kick the user from the server
+		KICK_USER,
+	}
+
+	private final String host;
+	private final int port;
+	private final String protocol;
+	private final String webapp;
+	private final String user;
+	private final String pass;
+
+	private boolean loginSuccess = false;
+	private String sessionId;
+	
+	private String publicSID;
+
+//	private static String nameSpaceForSlaveDto = "http://room.conference.openmeetings.apache.org/xsd";
+	
+	private static String NAMESPACE_PREFIX = "http://services.axis.openmeetings.apache.org";
+
+	private String getUserServiceEndPoint() {
+		return protocol + "://" + host + ":" + port + "/" + webapp
+				+ "/services/UserService";
+	}
+//
+//	private String getRoomServiceEndPoint() {
+//		return protocol + "://" + host + ":" + port + "/" + webapp
+//				+ "/services/RoomService";
+//	}
+
+	/**
+	 * The observerInstance will be notified whenever a ping was completed
+	 * 
+	 * @param observerInstance
+	 * @param host
+	 * @param port
+	 * @param protocol
+	 * @param webapp
+	 * @param user
+	 * @param pass
+	 */
+	public RestClient(Server server) {
+		//this.server = server;
+		this.host = server.getAddress();
+		this.port = server.getPort();
+		this.protocol = server.getProtocol();
+		this.webapp = server.getWebapp();
+		this.user = server.getUser();
+		this.pass = server.getPass();
+	}
+	
+	/**
+	 * Main method to perform tests
+	 * 
+	 * @param strings
+	 */
+	public static void main(String... strings) {
+		RestClient rClient = new RestClient("127.0.0.1", 5080, "http",
+				"openmeetings", "swagner", "qweqwe");
+		try {
+			rClient.loginUser(Action.KICK_USER);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * for simple testing this method provides a version of the constructor
+	 * without need for a server entity.<br/>
+	 * <br/>
+	 * There is no spring or JPA enhanced class in use here. This Object is
+	 * stored in session/memory
+	 * 
+	 * @param host
+	 * @param port
+	 * @param protocol
+	 * @param webapp
+	 * @param user
+	 * @param pass
+	 */
+	private RestClient(String host, int port, String protocol, String webapp,
+			String user, String pass) {
+		this.host = host;
+		this.port = port;
+		this.protocol = protocol;
+		this.webapp = webapp;
+		this.user = user;
+		this.pass = pass;
+	}
+
+	/**
+	 * compare if the details here and the one stored are still the same
+	 * 
+	 * @param server2
+	 * @return
+	 */
+	public boolean hasServerDetailsChanged(Server server2) {
+
+		if (!host.equals(server2.getAddress())) {
+			return true;
+		}
+		if (port != server2.getPort()) {
+			return true;
+		}
+		if (!user.equals(server2.getUser())) {
+			return true;
+		}
+		if (!pass.equals(server2.getPass())) {
+			return true;
+		}
+		if (!webapp.equals(server2.getWebapp())) {
+			return true;
+		}
+		if (!protocol.equals(server2.getProtocol())) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Login the user via REST
+	 * 
+	 * @throws Exception
+	 */
+	public void loginUser(Action action) throws Exception {
+
+		ServiceClient sender = createServiceClient(getUserServiceEndPoint());
+		
+		OMElement getSessionResult = sender
+				.sendReceive(getPayloadMethodGetSession());
+		sessionId = getSessionIdFromResult(getSessionResult);
+
+		OMElement loginUserResult = sender
+				.sendReceive(getPayloadMethodLoginUser());
+
+		loginSuccess = loginSuccessFromResult(loginUserResult);
+
+		switch (action) {
+			case KICK_USER:
+				kickUserInternl();
+				break;
+			default:
+				throw new Exception("No action defined");
+		}
+
+	}
+	
+	private ServiceClient createServiceClient(String serviceEndPoint) throws Exception {
+		ServiceClient sender = new ServiceClient();
+		sender.engageModule(new QName(Constants.MODULE_ADDRESSING)
+				.getLocalPart());
+		Options options = new Options();
+		options.setTo(new EndpointReference(serviceEndPoint));
+		options.setProperty(Constants.Configuration.ENABLE_REST,
+				Constants.VALUE_TRUE);
+		int timeOutInMilliSeconds = 2000;
+		// setting timeout to 2 second should be sufficient, if the server is
+		// not available within the 3 second interval you got a problem anyway
+		options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
+		options.setProperty(HTTPConstants.SO_TIMEOUT, timeOutInMilliSeconds);
+		options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, timeOutInMilliSeconds);
+		sender.setOptions(options);
+		
+		return sender;
+	}
+	
+	private OMElement createOMElement(OMFactory fac, OMNamespace omNs, String name, String value) {
+		OMElement omElement = fac.createOMElement(name, omNs);
+		omElement.addChild(fac.createOMText(omElement, value));
+		return omElement;
+	}
+
+	/**
+	 * sets the publicSID and removes a user from a slave host by calling a REST service
+	 * 
+	 * @param publicSID
+	 */
+	public void kickUser(String publicSID) {
+		this.publicSID = publicSID;
+		kickUserInternl();
+	}
+	
+	private void kickUserInternl() {
+		try {
+			
+			if (!loginSuccess) {
+				loginUser(Action.KICK_USER);
+			}
+
+			ServiceClient sender = createServiceClient(getUserServiceEndPoint());
+			
+			OMElement kickUserByPublicSIDResult = sender
+					.sendReceive(getPayloadMethodKickUserByPublicSID());
+			Boolean result = kickUserByPublicSIDFromResult(kickUserByPublicSIDResult);
+			
+			if (!result) {
+				throw new Exception("Could not delete user from slave host");
+			}
+
+		} catch (Exception err) {
+			log.error("[kickUser failed]", err);
+		}
+	}
+
+	private Boolean kickUserByPublicSIDFromResult(OMElement result) throws Exception {
+		QName kickUserResult = new QName(NAMESPACE_PREFIX, "return");
+
+		@SuppressWarnings("unchecked")
+		Iterator<OMElement> elements = result.getChildrenWithName(kickUserResult);
+		if (elements.hasNext()) {
+			OMElement resultElement = elements.next();
+			if (resultElement.getText().equals("true")) {
+				return true;
+			} else {
+				throw new Exception("Could not delete user from slave host, returns: "
+						+ resultElement.getText());
+			}
+		} else {
+			throw new Exception("Could not parse kickUserByPublicSID result");
+		}
+	}
+
+	private OMElement getPayloadMethodKickUserByPublicSID() throws Exception {
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+		OMNamespace omNs = fac.createOMNamespace(NAMESPACE_PREFIX, "pre");
+		OMElement method = fac.createOMElement("kickUserByPublicSID", omNs);
+		method.addChild(createOMElement(fac, omNs, "SID", sessionId));
+		method.addChild(createOMElement(fac, omNs, "publicSID", publicSID));
+		return method;
+	}
+
+	/**
+	 * Create the REST request to get a new session Id
+	 * 
+	 * @return
+	 */
+	private OMElement getPayloadMethodGetSession() throws Exception {
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+		OMNamespace omNs = fac.createOMNamespace(NAMESPACE_PREFIX, "pre");
+		OMElement method = fac.createOMElement("getSession", omNs);
+		return method;
+	}
+
+	/**
+	 * Parse the session Id from the REST request
+	 * 
+	 * @param result
+	 * @return
+	 * @throws Exception
+	 */
+	private String getSessionIdFromResult(OMElement result) throws Exception {
+		QName sessionElements = new QName(null, "session_id");
+
+		@SuppressWarnings("unchecked")
+		Iterator<OMElement> elements = result.getFirstElement()
+				.getChildrenWithName(sessionElements);
+		if (elements.hasNext()) {
+			OMElement sessionElement = elements.next();
+			return sessionElement.getText();
+		} else {
+			throw new Exception("Could not find session id");
+		}
+	}
+
+	/**
+	 * create the payload to login to another OpenMeetings instance via REST
+	 * 
+	 * @return
+	 */
+	private OMElement getPayloadMethodLoginUser() throws Exception {
+		OMFactory fac = OMAbstractFactory.getOMFactory();
+		OMNamespace omNs = fac.createOMNamespace(NAMESPACE_PREFIX, "pre");
+		OMElement method = fac.createOMElement("loginUser", omNs);
+		method.addChild(createOMElement(fac, omNs, "SID", sessionId));
+		method.addChild(createOMElement(fac, omNs, "username", user));
+		method.addChild(createOMElement(fac, omNs, "userpass", pass));
+		return method;
+	}
+
+	/**
+	 * check the result of the REST request if the login was successful
+	 * 
+	 * @param result
+	 * @return
+	 * @throws Exception
+	 */
+	private boolean loginSuccessFromResult(OMElement result) throws Exception {
+
+		QName loginResult = new QName(NAMESPACE_PREFIX, "return");
+
+		@SuppressWarnings("unchecked")
+		Iterator<OMElement> elements = result.getChildrenWithName(loginResult);
+		if (elements.hasNext()) {
+			OMElement resultElement = elements.next();
+			if (resultElement.getText().equals("1")) {
+				return true;
+			} else {
+				throw new Exception("Could not login user at, error code is: "
+						+ resultElement.getText());
+			}
+		} else {
+			throw new Exception("Could not parse login result");
+		}
+
+	}
+
+	/**
+	 * Get and cast the element's text (if there is any)
+	 * 
+	 * @param resultElement
+	 * @param elementName
+	 * @param typeObject
+	 * @return
+	 */
+//	private <T> T getElementTextByName(OMElement resultElement, String elementName, Class<T> typeObject) {
+//		try {
+//			OMElement userIdElement = resultElement
+//					.getFirstChildWithName(new QName(nameSpaceForSlaveDto, elementName));
+//			if (userIdElement != null && userIdElement.getText() != null
+//					&& userIdElement.getText().length() > 0) {
+//				
+//				String defaultValue = userIdElement.getText();
+//				
+//				// Either this can be directly assigned or try to find a constructor
+//				// that handles it
+//				if (typeObject.isAssignableFrom(defaultValue.getClass())) {
+//					return typeObject.cast(defaultValue);
+//				}
+//				Constructor<T> c = typeObject.getConstructor(defaultValue
+//						.getClass());
+//				return c.newInstance(defaultValue);
+//				
+//			}
+//		} catch (Exception err) {
+//			//Catch any class cast exception, but log only
+//			log.error("[getElementTextByName]", err);
+//		}
+//		return null;
+//	}
+	
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/BaseConverter.java b/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
new file mode 100644
index 0000000..564f406
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
@@ -0,0 +1,373 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.data.flvrecord.listener.async.BaseStreamWriter.TIME_TO_WAIT_FOR_FRAME;
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.io.flv.impl.FLVWriter;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class BaseConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(BaseConverter.class, webAppRootKey);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private FlvRecordingMetaDataDao metaDataDao;
+	@Autowired
+	private FlvRecordingMetaDeltaDao metaDeltaDao;
+
+	private String getPath(String key, String app) {
+		String path = configurationDao.getConfValue(key, String.class, "");
+		if (!"".equals(path) && !path.endsWith(File.separator)) {
+			path += File.separator;
+		}
+		path += app;
+		return path;
+	}
+	
+	public String getPathToFFMPEG() {
+		return getPath("ffmpeg_path", "ffmpeg");
+	}
+
+	protected String getPathToSoX() {
+		return getPath("sox_path", "sox");
+	}
+
+	protected String getPathToImageMagick() {
+		return getPath("imagemagick_path", "convert") + GenerateSWF.execExt;
+	}
+
+	protected boolean isUseOldStyleFfmpegMap() {
+		return "1".equals(configurationDao.getConfValue("use.old.style.ffmpeg.map.option", String.class, "0"));
+	}
+	
+	protected File getStreamFolder(FlvRecording flvRecording) {
+		return getStreamsSubDir(flvRecording.getRoom_id());
+	}
+
+	protected long diff(Date from, Date to) {
+		return from.getTime() - to.getTime();
+	}
+
+	protected double diffSeconds(Date from, Date to) {
+		return diffSeconds(diff(from, to));
+	}
+	
+	protected double diffSeconds(long val) {
+		return ((double)val) / 1000;
+	}
+	
+	protected String formatMillis(long millis) {
+		long hours = TimeUnit.MILLISECONDS.toHours(millis);
+		millis -= TimeUnit.HOURS.toMillis(hours);
+		long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
+		millis -= TimeUnit.MINUTES.toMillis(minutes);
+		long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
+		millis -= TimeUnit.SECONDS.toMillis(seconds);
+		return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, millis);
+	}
+
+	protected void updateDuration(FlvRecording r) {
+		r.setDuration(formatMillis(diff(r.getRecordEnd(), r.getRecordStart())));
+	}
+	
+	protected void deleteFileIfExists(String name) {
+		File f = new File(name);
+
+		if (f.exists()) {
+			f.delete();
+		}
+	}
+	
+	protected String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav) {
+		List<String> argv = new ArrayList<String>();
+		
+		argv.add(getPathToSoX());
+		argv.add("-m");
+		for (String arg : listOfFullWaveFiles) {
+			argv.add(arg);
+		}
+		argv.add(outputFullWav);
+		
+		return argv.toArray(new String[0]);
+	}
+	
+	protected void stripAudioFirstPass(FlvRecording flvRecording, List<ConverterProcessResult> returnLog,
+			List<String> listOfFullWaveFiles, File streamFolder)
+	{
+		stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder
+				, metaDataDao.getAudioMetaDataByRecording(flvRecording.getFlvRecordingId()));
+	}
+	
+	private String[] addSoxPad(List<ConverterProcessResult> returnLog, String job, double length, double position, File inFile, File outFile) throws IOException {
+		//FIXME need to check this
+		if (length < 0 || position < 0) {
+			log.debug("::addSoxPad " + job + " Invalid parameters: "
+					+ " length = " + length + "; position = " + position + "; inFile = " + inFile);
+		}
+		length = length < 0 ? 0 : length;
+		position = position < 0 ? 0 : position;
+
+		String[] argv = new String[] { getPathToSoX(), inFile.getCanonicalPath(), outFile.getCanonicalPath(), "pad", "" + length, "" + position };
+
+		returnLog.add(ProcessHelper.executeScript(job, argv));
+		return argv;
+	}
+	
+	private static File getMetaFlvSer(FlvRecordingMetaData metaData) {
+		File metaDir = getStreamsSubDir(metaData.getFlvRecording().getRoom_id());
+		return new File(metaDir, metaData.getStreamName() + ".flv.ser");
+	}
+	
+	public static void printMetaInfo(FlvRecordingMetaData metaData, String prefix) {
+		if (log.isDebugEnabled()) {
+			log.debug(String.format("### %s:: recording id %s; stream with id %s; current status: %s ", prefix, metaData.getFlvRecording().getFlvRecordingId()
+					, metaData.getFlvRecordingMetaDataId(), metaData.getStreamStatus()));
+			File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoom_id(), metaData.getStreamName());
+			File metaSer = getMetaFlvSer(metaData);
+			log.debug(String.format("### %s:: Flv file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaFlv.getPath(), metaFlv.exists(), metaFlv.length(), metaFlv.lastModified()));
+			log.debug(String.format("### %s:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
+		}
+	}
+	
+	protected FlvRecordingMetaData waitForTheStream(long metaId) throws InterruptedException {
+		FlvRecordingMetaData metaData = metaDataDao.get(metaId);
+		if (metaData.getStreamStatus() != Status.STOPPED) {
+			log.debug("### meta Stream not yet written to disk " + metaId);
+			long counter = 0;
+			long maxTimestamp = 0;
+			while(true) {
+				log.trace("### Stream not yet written Thread Sleep - " + metaId);
+				
+				metaData = metaDataDao.get(metaId);
+				
+				if (metaData.getStreamStatus() == Status.STOPPED) {
+					printMetaInfo(metaData, "Stream now written");
+					log.debug("### Thread continue ... " );
+					break;
+				} else {
+					File metaFlv = getRecordingMetaData(metaData.getFlvRecording().getRoom_id(), metaData.getStreamName());
+					if (metaFlv.exists() && maxTimestamp < metaFlv.lastModified()) {
+						maxTimestamp = metaFlv.lastModified();
+					}
+					File metaSer = getMetaFlvSer(metaData);
+					if (metaSer.exists() && maxTimestamp < metaSer.lastModified()) {
+						maxTimestamp = metaSer.lastModified();
+					}
+					if (maxTimestamp + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
+						if (metaSer.exists()) {
+							log.debug("### long time without any update, trying to repair ... ");
+							try {
+								if (FLVWriter.repair(metaSer.getCanonicalPath(), null, null) && !metaSer.exists()) {
+									log.debug("### Repairing was successful ... ");
+								} else {
+									log.debug("### Repairing was NOT successful ... ");
+								}
+							} catch (IOException e) {
+								log.error("### Error while file repairing ... ", e);
+							}
+						} else {
+							log.debug("### long time without any update, closing ... ");
+						}
+						metaData.setStreamStatus(Status.STOPPED);
+						metaDataDao.update(metaData);
+						break;
+					}
+				}
+				if (++counter % 1000 == 0) {
+					printMetaInfo(metaData, "Still waiting");
+				}
+				
+				Thread.sleep(100L);
+			}
+		}
+		return metaData;
+	}
+	
+	protected void stripAudioFirstPass(FlvRecording flvRecording,
+			List<ConverterProcessResult> returnLog,
+			List<String> listOfFullWaveFiles, File streamFolder,
+			List<FlvRecordingMetaData> metaDataList) {
+		try {
+			// Init variables
+			log.debug("### meta Data Number - " + metaDataList.size());
+			log.debug("###################################################");
+	
+			for (FlvRecordingMetaData metaData : metaDataList) {
+				long metaId = metaData.getFlvRecordingMetaDataId();
+				log.debug("### processing metadata: " + metaId);
+				if (metaData.getStreamStatus() == Status.NONE) {
+					log.debug("Stream has not been started, error in recording " + metaId);
+					continue;
+				}
+				
+				metaData = waitForTheStream(metaId);
+	
+				File inputFlvFile = new File(streamFolder, metaData.getStreamName() + ".flv");
+	
+				File outputWav = new File(streamFolder, metaData.getStreamName() + "_WAVE.wav");
+	
+				metaData.setWavAudioData(outputWav.getName());
+	
+				
+				log.debug("FLV File Name: {} Length: {} ", inputFlvFile.getName(), inputFlvFile.length());
+	
+				if (inputFlvFile.exists()) {
+					String[] argv = new String[] {
+							getPathToFFMPEG(), "-y"
+							, "-i", inputFlvFile.getCanonicalPath()
+							, "-af", "aresample=32k:min_comp=0.001:min_hard_comp=0.100000"
+							, outputWav.getCanonicalPath()};
+	
+					returnLog.add(ProcessHelper.executeScript("stripAudioFromFLVs", argv));
+				}
+	
+				if (outputWav.exists() && outputWav.length() != 0) {
+					metaData.setAudioValid(true);
+					// Strip Wave to Full Length
+					File outputGapFullWav = outputWav;
+	
+					// Fix Start/End in Audio
+					List<FlvRecordingMetaDelta> flvRecordingMetaDeltas = metaDeltaDao.getFlvRecordingMetaDeltaByMetaId(metaId);
+	
+					int counter = 0;
+	
+					for (FlvRecordingMetaDelta metaDelta : flvRecordingMetaDeltas) {
+						File inputFile = outputGapFullWav;
+	
+						// Strip Wave to Full Length
+						String hashFileGapsFullName = metaData.getStreamName() + "_GAP_FULL_WAVE_" + counter + ".wav";
+						outputGapFullWav = new File(streamFolder, hashFileGapsFullName);
+	
+						metaDelta.setWaveOutPutName(hashFileGapsFullName);
+	
+						String[] argv_sox = null;
+	
+						if (metaDelta.getDeltaTime() != null) {
+							double gapSeconds = diffSeconds(metaDelta.getDeltaTime());
+							if (metaDelta.isStartPadding()) {
+								argv_sox = addSoxPad(returnLog, "fillGap", gapSeconds, 0, inputFile, outputGapFullWav);
+							} else if (metaDelta.isEndPadding()) {
+								argv_sox = addSoxPad(returnLog, "fillGap", 0, gapSeconds, inputFile, outputGapFullWav);
+							}
+						}
+	
+						if (argv_sox != null) {
+							log.debug("START fillGap ################# Delta-ID :: " + metaDelta.getFlvRecordingMetaDeltaId());
+	
+							metaDeltaDao.updateFlvRecordingMetaDelta(metaDelta);
+							counter++;
+						} else {
+							outputGapFullWav = inputFile;
+						}
+					}
+	
+					// Strip Wave to Full Length
+					String hashFileFullName = metaData.getStreamName() + "_FULL_WAVE.wav";
+					File outputFullWav = new File(streamFolder, hashFileFullName);
+	
+					// Calculate delta at beginning
+					double startPad = diffSeconds(metaData.getRecordStart(), flvRecording.getRecordStart());
+	
+					// Calculate delta at ending
+					double endPad = diffSeconds(flvRecording.getRecordEnd(), metaData.getRecordEnd());
+	
+					addSoxPad(returnLog, "addStartEndToAudio", startPad, endPad, outputGapFullWav, outputFullWav);
+	
+					// Fix for Audio Length - Invalid Audio Length in Recorded Files
+					// Audio must match 100% the Video
+					log.debug("############################################");
+					log.debug("Trim Audio to Full Length -- Start");
+	
+					if (!outputFullWav.exists()) {
+						throw new Exception("Audio File does not exist , could not extract the Audio correctly");
+					}
+					metaData.setFullWavAudioData(hashFileFullName);
+	
+					// Finally add it to the row!
+					listOfFullWaveFiles.add(outputFullWav.getCanonicalPath());
+				}
+	
+				metaDataDao.update(metaData);
+			}
+		} catch (Exception err) {
+			log.error("[stripAudioFirstPass]", err);
+		}
+	}
+	
+	public void convertToMp4(FlvRecording r, List<ConverterProcessResult> returnLog) throws IOException {
+		//TODO add faststart, move filepaths to helpers
+		if (!isRecordingExists(r.getFileHash())) {
+			return;
+		}
+		File file = getRecording(r.getFileHash());
+		String path = file.getCanonicalPath();
+		String mp4path = path + MP4_EXTENSION;
+		String[] argv = new String[] {
+				getPathToFFMPEG(), "-y",
+				"-i", path,
+				"-c:v", "libx264",
+				"-crf", "24",
+				"-pix_fmt", "yuv420p",
+				"-preset", "medium",
+				"-profile:v", "baseline",
+				"-c:a", "libfaac",
+				"-c:a", "libfdk_aac", "-b:a", "32k", //FIXME add quality constants 
+				"-s", r.getFlvWidth() + "x" + r.getFlvHeight(), //
+				mp4path
+				};
+		returnLog.add(ProcessHelper.executeScript("generate MP4", argv));
+		
+		argv = new String[] {
+				getPathToFFMPEG(), "-y",
+				"-i", mp4path,
+				"-vcodec", "libtheora",
+				"-acodec", "libvorbis",
+				path + OGG_EXTENSION
+				};
+
+		returnLog.add(ProcessHelper.executeScript("generate OGG", argv));
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java b/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java
new file mode 100644
index 0000000..e37d220
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/FlvExplorerConverter.java
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FlvExplorerConverter extends BaseConverter {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			FlvExplorerConverter.class, OpenmeetingsVariables.webAppRootKey);
+
+	// Spring loaded Beans
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDaoImpl;
+	@Autowired
+	private FlvRecordingLogDao flvRecordingLogDaoImpl;
+	
+	private class FlvDimension {
+		public FlvDimension(int width, int height) {
+			this.width = width;
+			this.height = height;
+		}
+		public int width = 0;
+		public int height = 0;
+	}
+
+	public List<ConverterProcessResult> startConversion(Long fileExplorerItemId, String moviePath) {
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
+		try {
+			FileExplorerItem fileExplorerItem = fileExplorerItemDaoImpl.getFileExplorerItemsById(fileExplorerItemId);
+
+			log.debug("fileExplorerItem " + fileExplorerItem.getFileExplorerItemId());
+
+			//  Convert to FLV
+			return convertToFLV(fileExplorerItem, moviePath);
+
+			// Add empty pieces at the beginning and end of the wav
+			// FIXME: Is this really needed anymore?!
+
+		} catch (Exception err) {
+			log.error("[startConversion]", err);
+			returnLog.add(new ConverterProcessResult("startConversion", err.getMessage(), err));
+		}
+
+		return returnLog;
+	}
+
+	private List<ConverterProcessResult> convertToFLV(FileExplorerItem fileExplorerItem, String moviePath) {
+		List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
+		try {
+			String name = "UPLOADFLV_" + fileExplorerItem.getFileExplorerItemId();
+			File outputFullFlv = new File(getStreamsHibernateDir(), name + ".flv");
+
+			fileExplorerItem.setIsVideo(true);
+
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y", "-i", moviePath,
+					"-ar", "22050", "-acodec", "libmp3lame", "-ab", "32k",
+					"-vcodec", "flv",
+					outputFullFlv.getCanonicalPath() };
+			// "-s", flvWidth + "x" + flvHeight, 
+
+			ConverterProcessResult returnMapConvertFLV = ProcessHelper.executeScript("uploadFLV ID :: "
+					+ fileExplorerItem.getFileExplorerItemId(), argv_fullFLV);
+			
+			//Parse the width height from the FFMPEG output
+			FlvDimension flvDimension = getFlvDimension(returnMapConvertFLV.getError());
+			int flvWidth = flvDimension.width;
+			int flvHeight = flvDimension.height;
+			
+			
+			fileExplorerItem.setFlvWidth(flvWidth);
+			fileExplorerItem.setFlvHeight(flvHeight);
+
+			returnLog.add(returnMapConvertFLV);
+
+			String hashFileFullNameJPEG = "UPLOADFLV_" + fileExplorerItem.getFileExplorerItemId() + ".jpg";
+			File outPutJpeg = new File(getStreamsHibernateDir(), name + ".jpg");
+
+			fileExplorerItem.setPreviewImage(hashFileFullNameJPEG);
+
+			String[] argv_previewFLV = new String[] { getPathToFFMPEG(), "-y", "-i",
+					outputFullFlv.getCanonicalPath(), "-vcodec", "mjpeg", "-vframes", "1", "-an",
+					"-f", "rawvideo", "-s", flvWidth + "x" + flvHeight,
+					outPutJpeg.getCanonicalPath() };
+
+			returnLog.add(ProcessHelper.executeScript("previewUpload ID :: "
+							+ fileExplorerItem.getFileExplorerItemId(),
+							argv_previewFLV));
+
+			fileExplorerItemDaoImpl.updateFileOrFolder(fileExplorerItem);
+
+			for (ConverterProcessResult returnMap : returnLog) {
+				flvRecordingLogDaoImpl.addFLVRecordingLog("generateFFMPEG", null, returnMap);
+			}
+		} catch (Exception err) {
+			log.error("[convertToFLV]", err);
+			returnLog.add(new ConverterProcessResult("convertToFLV", err.getMessage(), err));
+		}
+
+		return returnLog;
+	}
+	
+	private FlvDimension getFlvDimension(String txt) throws Exception {
+		
+		Pattern p = Pattern.compile("\\d{2,4}(x)\\d{2,4}");
+		
+		Matcher matcher = p.matcher(txt);
+		
+		while ( matcher.find() ) {
+			String foundResolution = txt.substring(matcher.start(), matcher.end());
+			
+			String[] resultions = foundResolution.split("x");
+			
+			return new FlvDimension(Integer.valueOf(resultions[0]).intValue(), Integer.valueOf(resultions[1]).intValue());
+			
+	    }
+		
+		return null;
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java b/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
new file mode 100644
index 0000000..b732f63
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
@@ -0,0 +1,320 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FlvInterviewConverter extends BaseConverter implements IRecordingConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvInterviewConverter.class, webAppRootKey);
+	private static class ReConverterParams {
+		private int leftSideLoud = 1;
+		private int rightSideLoud = 1;
+		@SuppressWarnings("unused")
+		private Integer leftSideTime = 0;
+		@SuppressWarnings("unused")
+		private Integer rightSideTime = 0;
+	}
+
+	// Spring loaded Beans
+	@Autowired
+	private FlvRecordingDao recordingDao;
+	@Autowired
+	private FlvRecordingMetaDataDao metaDataDao;
+	@Autowired
+	private FlvRecordingLogDao logDao;
+	@Autowired
+	private GenerateThumbs generateThumbs;
+
+	private String[] mergeAudioToWaves(List<String> listOfFullWaveFiles, String outputFullWav,
+			List<FlvRecordingMetaData> metaDataList, ReConverterParams rcv) {
+		String[] argv_full_sox = new String[listOfFullWaveFiles.size() + 5];
+		argv_full_sox[0] = this.getPathToSoX();
+		argv_full_sox[1] = "-m";
+
+		int counter = 2;
+		for (int i = 0; i < listOfFullWaveFiles.size(); i++) {
+			for (FlvRecordingMetaData flvRecordingMetaData : metaDataList) {
+				String hashFileFullNameStored = flvRecordingMetaData.getFullWavAudioData();
+
+				String fullFilePath = listOfFullWaveFiles.get(i);
+				String fileNameOnly = new File(fullFilePath).getName();
+
+				if (hashFileFullNameStored.equals(fileNameOnly)) {
+					if (flvRecordingMetaData.getInteriewPodId() == 1) {
+						argv_full_sox[counter] = "-v " + rcv.leftSideLoud;
+						counter++;
+					}
+					if (flvRecordingMetaData.getInteriewPodId() == 2) {
+						argv_full_sox[counter] = "-v " + rcv.rightSideLoud;
+						counter++;
+					}
+				}
+			}
+			argv_full_sox[counter] = listOfFullWaveFiles.get(i);
+			counter++;
+		}
+
+		argv_full_sox[counter] = outputFullWav;
+
+		return argv_full_sox;
+	}
+
+	public void startConversion(Long flvRecordingId) {
+		startConversion(flvRecordingId, false, new ReConverterParams());
+	}
+
+	public void startConversion(Long flvRecordingId, boolean reconversion, ReConverterParams rcv) {
+		FlvRecording flvRecording = null;
+		try {
+			flvRecording = recordingDao.get(flvRecordingId);
+			log.debug("flvRecording " + flvRecording.getFlvRecordingId());
+			flvRecording.setStatus(FlvRecording.Status.CONVERTING);
+			flvRecording = recordingDao.update(flvRecording);
+
+			List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
+			List<String> listOfFullWaveFiles = new LinkedList<String>();
+			File streamFolder = getStreamFolder(flvRecording);
+			List<FlvRecordingMetaData> metaDataList = metaDataDao.getAudioMetaDataByRecording(flvRecording.getFlvRecordingId());
+	
+			stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder, metaDataList);
+		
+			// Merge Wave to Full Length
+			File streamFolderGeneral = getStreamsHibernateDir();
+
+			String hashFileFullName = "INTERVIEW_" + flvRecording.getFlvRecordingId() + "_FINAL_WAVE.wav";
+			String outputFullWav = streamFolder.getAbsolutePath() + File.separatorChar + hashFileFullName;
+			deleteFileIfExists(outputFullWav);
+
+			if (listOfFullWaveFiles.size() == 1) {
+				outputFullWav = listOfFullWaveFiles.get(0);
+			} else if (listOfFullWaveFiles.size() > 0) {
+				String[] argv_full_sox;
+				if (reconversion) {
+					argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav, metaDataList, rcv);
+				} else {
+					argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);
+				}
+
+				returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
+			} else {
+				// create default Audio to merge it.
+				// strip to content length
+				File outputWav = new File(streamFolderGeneral, "one_second.wav");
+
+				// Calculate delta at beginning
+				double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
+
+				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", "" + deltaPadding };
+
+				returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
+			}
+			// Default Image for empty interview video pods
+			final File defaultInterviewImageFile = new File(streamFolderGeneral, "default_interview_image.png");
+
+			if (!defaultInterviewImageFile.exists()) {
+				throw new Exception("defaultInterviewImageFile does not exist!");
+			}
+
+			final int flvWidth = 320;
+			final int flvHeight = 260;
+			final int frameRate = 25;
+			// Merge Audio with Video / Calculate resulting FLV
+
+			String[] pods = new String[2];
+			boolean found = false;
+			for (FlvRecordingMetaData meta : metaDataList) {
+				File flv = getRecordingMetaData(flvRecording.getRoom_id(), meta.getStreamName());
+
+				Integer pod = meta.getInteriewPodId();
+				if (flv.exists() && pod != null && pod > 0 && pod < 3) {
+					String path = flv.getCanonicalPath();
+					/*
+					 * CHECK FILE:
+					 * ffmpeg -i rec_316_stream_567_2013_08_28_11_51_45.flv -v error -f null file.null
+					 */ 
+					String[] args = new String[] {getPathToFFMPEG(), "-y"
+							, "-i", path
+							, "-an" // only input files with video will be treated as video sources
+							, "-v", "error"
+							, "-f", "null"
+							, "file.null"};
+					ConverterProcessResult r = ProcessHelper.executeScript("checkFlvPod_" + pod , args);
+					returnLog.add(r);
+					if ("0".equals(r.getExitValue())) {
+						//TODO need to remove smallest gap
+						long diff = diff(meta.getRecordStart(), meta.getFlvRecording().getRecordStart());
+						if (diff != 0L) {
+							// stub to add
+							// ffmpeg -y -loop 1 -i /home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt yuv420p out.flv
+							File podFB = new File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
+							String podPB = podFB.getCanonicalPath();
+							String[] argsPodB = new String[] { getPathToFFMPEG(), "-y" //
+									, "-loop", "1", "-i", defaultInterviewImageFile.getCanonicalPath() //
+									, "-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
+									, "-c:v", "libx264" //
+									, "-t", formatMillis(diff) //
+									, "-pix_fmt", "yuv420p" //
+									, podPB };
+							returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
+							
+							//ffmpeg -y -i out.flv -i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex '[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
+							File podF = new File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
+							String podP = podF.getCanonicalPath();
+							String[] argsPod = new String[] { getPathToFFMPEG(), "-y"//
+									, "-i", podPB //
+									, "-i", path //
+									, "-filter_complex", String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix] [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
+									, "-map", "[v]" //
+									, podP };
+							returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
+	
+							pods[pod - 1] = podP;
+						} else {
+							pods[pod - 1] = path;
+						}
+					}
+					found = true;
+				}
+			}
+			if (!found) {
+				ConverterProcessResult r = new ConverterProcessResult();
+				r.setProcess("CheckFlvFilesExists");
+				r.setError("No valid pods found");
+				returnLog.add(r);
+				return;
+			}
+			boolean shortest = false;
+			List<String> args = new ArrayList<String>();
+			args.add(getPathToFFMPEG());
+			args.add("-y"); 
+			for (int i = 0; i < 2; ++i) {
+				/*
+				 * INSERT BLANK INSTEAD OF BAD PAD:
+				 * ffmpeg -loop 1 -i default_interview_image.jpg -i rec_316_stream_569_2013_08_28_11_51_45.flv -filter_complex '[0:v]scale=320:260,pad=2*320:260[left];[1:v]scale=320:260[right];[left][right]overlay=main_w/2:0' -shortest -y out4.flv
+				 *
+				 * JUST MERGE:
+				 * ffmpeg -i rec_316_stream_569_2013_08_28_11_51_45.flv -i rec_316_stream_569_2013_08_28_11_51_45.flv -filter_complex '[0:v]scale=320:260,pad=2*320:260[left];[1:v]scale=320:260[right];[left][right]overlay=main_w/2:0' -y out4.flv
+				 */
+				if (pods[i] == null) {
+					shortest = true;
+					args.add("-loop"); args.add("1");
+					args.add("-i"); args.add(defaultInterviewImageFile.getCanonicalPath());
+				} else {
+					args.add("-i"); args.add(pods[i]);
+				}
+			}
+			args.add("-i"); args.add(outputFullWav);
+			args.add("-ar"); args.add("22050");
+			args.add("-ab"); args.add("32k");
+			args.add("-filter_complex");
+			args.add(String.format("[0:v]scale=%1$d:%2$d,pad=2*%1$d:%2$d[left];[1:v]scale=%1$d:%2$d[right];[left][right]overlay=main_w/2:0%3$s"
+					, flvWidth, flvHeight, shortest ? ":shortest=1" : ""));
+			if (shortest) {
+				args.add("-shortest");
+			}
+			args.add("-map"); args.add("0:0");
+			args.add("-map"); args.add("1:0");
+			args.add("-map"); args.add("2:0");
+			args.add("-r"); args.add("" + frameRate);
+			args.add("-qmax"); args.add("1");
+			args.add("-qmin"); args.add("1");
+			args.add("-y");
+			String hashFileFullNameFlv = "flvRecording_" + flvRecording.getFlvRecordingId() + ".flv";
+			String outputFullFlv = new File(streamFolderGeneral, hashFileFullNameFlv).getCanonicalPath();
+			args.add(outputFullFlv);
+			// TODO additional flag to 'quiet' output should be added
+			returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV", args.toArray(new String[]{})));
+
+			flvRecording.setFlvWidth(2 * flvWidth);
+			flvRecording.setFlvHeight(flvHeight);
+
+			flvRecording.setFileHash(hashFileFullNameFlv);
+
+			// Extract first Image for preview purpose
+			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
+			// 320x240 movie.jpg
+
+			String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getFlvRecordingId() + ".jpg";
+			String outPutJpeg = new File(streamFolderGeneral, hashFileFullNameJPEG).getCanonicalPath();
+			deleteFileIfExists(outPutJpeg);
+
+			flvRecording.setPreviewImage(hashFileFullNameJPEG);
+
+			String[] argv_previewFLV = new String[] { //
+					getPathToFFMPEG(), "-y", //
+					"-i", outputFullFlv, //
+					"-vcodec", "mjpeg", //
+					"-vframes", "100", "-an", //
+					"-f", "rawvideo", //
+					"-s", (2 * flvWidth) + "x" + flvHeight, //
+					outPutJpeg };
+
+			returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV));
+
+			String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
+			String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName).getCanonicalPath();
+			deleteFileIfExists(alternateDownloadFullName);
+
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, alternateDownloadFullName };
+
+			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
+
+			flvRecording.setAlternateDownload(alternateDownloadName);
+
+			updateDuration(flvRecording);
+			convertToMp4(flvRecording, returnLog);
+			flvRecording.setStatus(FlvRecording.Status.PROCESSED);
+
+			logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
+			for (ConverterProcessResult returnMap : returnLog) {
+				logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
+			}
+
+			// Delete Wave Files
+			for (String fileName : listOfFullWaveFiles) {
+				File audio = new File(fileName);
+				if (audio.exists()) {
+					audio.delete();
+				}
+			}
+		} catch (Exception err) {
+			log.error("[startConversion]", err);
+			flvRecording.setStatus(FlvRecording.Status.ERROR);
+		}
+		recordingDao.update(flvRecording);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java b/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
new file mode 100644
index 0000000..da133e1
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
@@ -0,0 +1,202 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FlvRecorderConverter extends BaseConverter implements IRecordingConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverter.class, webAppRootKey);
+
+	// Spring loaded Beans
+	@Autowired
+	private FlvRecordingDao recordingDao;
+	@Autowired
+	private FlvRecordingMetaDataDao metaDataDao;
+	@Autowired
+	private FlvRecordingLogDao logDao;
+
+	private String FFMPEG_MAP_PARAM = ":";
+
+	public void startConversion(Long flvRecordingId) {
+		FlvRecording flvRecording = null;
+		try {
+			if (isUseOldStyleFfmpegMap()) {
+				FFMPEG_MAP_PARAM = ".";
+			}
+
+			String finalNamePrefix = "flvRecording_" + flvRecordingId;
+			flvRecording = recordingDao.get(flvRecordingId);
+			log.debug("flvRecording " + flvRecording.getFlvRecordingId());
+
+			List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
+			List<String> listOfFullWaveFiles = new ArrayList<String>();
+			File streamFolder = getStreamFolder(flvRecording);
+			
+			FlvRecordingMetaData screenMetaData = metaDataDao.getScreenMetaDataByRecording(flvRecording.getFlvRecordingId());
+
+			if (screenMetaData == null) {
+				throw new Exception("screenMetaData is Null FlvRecordingId " + flvRecording.getFlvRecordingId());
+			}
+
+			if (screenMetaData.getStreamStatus() == Status.NONE) {
+				throw new Exception("Stream has not been started, error in recording");
+			}
+			flvRecording.setStatus(FlvRecording.Status.CONVERTING);
+			flvRecording = recordingDao.update(flvRecording);
+
+			screenMetaData = waitForTheStream(screenMetaData.getFlvRecordingMetaDataId());
+
+			stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder);
+
+			// Merge Wave to Full Length
+			String hashFileFullName = screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
+			String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();
+
+			if (listOfFullWaveFiles.size() == 1) {
+				outputFullWav = listOfFullWaveFiles.get(0);
+			} else if (listOfFullWaveFiles.size() > 0) {
+				String[] argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);
+
+				returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
+			} else {
+				// create default Audio to merge it. strip to content length
+				String outputWav = new File(getStreamsHibernateDir(), "one_second.wav").getCanonicalPath();
+
+				// Calculate delta at beginning
+				double deltaPadding = diffSeconds(flvRecording.getRecordEnd(), flvRecording.getRecordStart());
+
+				String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", "" + deltaPadding };
+
+				returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
+			}
+			screenMetaData.setFullWavAudioData(hashFileFullName);
+			metaDataDao.update(screenMetaData);
+
+			// Merge Audio with Video / Calculate resulting FLV
+
+			String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv").getCanonicalPath();
+
+			File outputFullFlv = new File(getStreamsHibernateDir(), finalNamePrefix + ".flv");
+
+			// ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 32k -s 320x240
+			// -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav
+			// -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
+			// final1.flv
+
+			int flvWidth = flvRecording.getWidth();
+			int flvHeight = flvRecording.getHeight();
+
+			log.debug("flvWidth -1- " + flvWidth);
+			log.debug("flvHeight -1- " + flvHeight);
+
+			flvWidth = Double.valueOf((Math.floor(flvWidth / 16)) * 16).intValue();
+			flvHeight = Double.valueOf((Math.floor(flvHeight / 16)) * 16).intValue();
+
+			log.debug("flvWidth -2- " + flvWidth);
+			log.debug("flvHeight -2- " + flvHeight);
+
+			flvRecording.setFlvWidth(flvWidth);
+			flvRecording.setFlvHeight(flvHeight);
+
+			String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
+					"-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), flvRecording.getRecordStart())),
+					"-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
+					"-acodec", "libmp3lame", //
+					"-ab", "32k", //
+					"-s", flvWidth + "x" + flvHeight, //
+					"-vcodec", "flashsv", //
+					"-map", "0" + FFMPEG_MAP_PARAM + "0", //
+					"-map", "1" + FFMPEG_MAP_PARAM + "0", //
+					outputFullFlv.getCanonicalPath() };
+
+			returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));
+
+			flvRecording.setFileHash(outputFullFlv.getName());
+
+			// Extract first Image for preview purpose
+			// ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
+			// 320x240 movie.jpg
+
+			File outPutJpeg = new File(getStreamsHibernateDir(), finalNamePrefix + ".jpg");
+
+			flvRecording.setPreviewImage(outPutJpeg.getName());
+
+			String[] argv_previewFLV = new String[] { //
+					getPathToFFMPEG(), "-y",//
+					"-i", outputFullFlv.getCanonicalPath(), //
+					"-vcodec", "mjpeg", //
+					"-vframes", "1", "-an", //
+					"-f", "rawvideo", //
+					"-s", flvWidth + "x" + flvHeight, //
+					outPutJpeg.getCanonicalPath() };
+
+			returnLog.add(ProcessHelper.executeScript("previewFullFLV", argv_previewFLV));
+
+			File alternateDownload = new File(getStreamsHibernateDir(), finalNamePrefix + ".avi");
+
+			String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv.getCanonicalPath(), "-vcodec",
+					"copy", alternateDownload.getCanonicalPath() };
+
+			returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));
+
+			flvRecording.setAlternateDownload(alternateDownload.getName());
+
+			updateDuration(flvRecording);
+			convertToMp4(flvRecording, returnLog);
+			flvRecording.setStatus(FlvRecording.Status.PROCESSED);
+
+			logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
+			for (ConverterProcessResult returnMap : returnLog) {
+				logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
+			}
+
+			// Delete Wave Files
+			for (String fileName : listOfFullWaveFiles) {
+				File audio = new File(fileName);
+				if (audio.exists()) {
+					audio.delete();
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[startConversion]", err);
+			flvRecording.setStatus(FlvRecording.Status.ERROR);
+		}
+		if (flvRecording != null) {
+			recordingDao.update(flvRecording);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/GenerateImage.java b/src/main/java/org/apache/openmeetings/converter/GenerateImage.java
new file mode 100644
index 0000000..dc2fdcc
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/GenerateImage.java
@@ -0,0 +1,144 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OmFileHelper.bigImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.chatImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadProfilesUserDir;
+import static org.apache.openmeetings.util.OmFileHelper.JPG_EXTENTION;
+import static org.apache.openmeetings.util.OmFileHelper.profileFileName;
+import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class GenerateImage extends BaseConverter {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(GenerateImage.class, webAppRootKey);
+
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private GenerateThumbs generateThumbs;
+
+	public ConverterProcessResultList convertImage(String fileName, String fileExt,
+			String roomName, String fileNameShort, boolean fullProcessing)
+			throws Exception {
+
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
+
+		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), fileName + fileExt);
+
+		File destinationFile = OmFileHelper.getNewFile(OmFileHelper.getUploadRoomDir(roomName), fileName, ".jpg");
+
+		log.debug("##### convertImage destinationFile: " + destinationFile);
+
+		ConverterProcessResult processJPG = convertSingleJpg(fileFullPath.getCanonicalPath(), destinationFile);
+		ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, destinationFile, 50);
+
+		returnMap.addItem("processJPG", processJPG);
+		returnMap.addItem("processThumb", processThumb);
+
+		// Delete old one
+		fileFullPath.delete();
+
+		return returnMap;
+	}
+
+	public ConverterProcessResultList convertImageUserProfile(File file, Long users_id, boolean skipConvertion) throws Exception {
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
+		
+		// User Profile Update
+		for (File f : getUploadProfilesUserDir(users_id).listFiles(new FileFilter() {
+			public boolean accept(File pathname) {
+				return pathname.getName().endsWith(JPG_EXTENTION);
+			}
+		})) {
+			FileHelper.removeRec(f);
+		}
+		
+		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(users_id), profileFileName, JPG_EXTENTION);
+		if (!skipConvertion) {
+			returnMap.addItem("processJPG", convertSingleJpg(file.getCanonicalPath(), destinationFile));
+		} else {
+			FileHelper.copy(file, destinationFile);
+		}
+		returnMap.addItem("processThumb1", generateThumbs.generateThumb(chatImagePrefix, destinationFile, 40));
+		returnMap.addItem("processThumb2", generateThumbs.generateThumb(profileImagePrefix, destinationFile, 126));
+		returnMap.addItem("processThumb3", generateThumbs.generateThumb(bigImagePrefix, destinationFile, 240));
+
+		if (!skipConvertion) {
+			// Delete old one
+			file.delete();
+		}
+
+		String pictureuri = destinationFile.getName();
+		User us = usersDao.get(users_id);
+		us.setUpdatetime(new java.util.Date());
+		us.setPictureuri(pictureuri);
+		usersDao.update(us, users_id);
+
+		//FIXME: After uploading a new picture all other clients should refresh
+		//scopeApplicationAdapter.updateUserSessionObject(users_id, pictureuri);
+
+		return returnMap;
+	}
+
+	/**
+	 * -density 150 -resize 800
+	 * @throws IOException 
+	 * 
+	 */
+	private ConverterProcessResult convertSingleJpg(String inputFile, File outputfile) throws IOException {
+		String[] argv = new String[] { getPathToImageMagick(), inputFile, outputfile.getCanonicalPath() };
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult convertImageByTypeAndSize(String inputFile,
+			String outputfile, int width, int height) {
+		String[] argv = new String[] { getPathToImageMagick(), "-size",
+				width + "x" + height, inputFile, outputfile };
+		return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv);
+	}
+
+	public ConverterProcessResult convertImageByTypeAndSizeAndDepth(
+			String inputFile, String outputfile, int width, int height,
+			int depth) {
+		String[] argv = new String[] { getPathToImageMagick(), "-size",
+				width + "x" + height, "-depth", Integer.toString(depth),
+				inputFile, outputfile };
+		return ProcessHelper.executeScript("convertImageByTypeAndSizeAndDepth", argv);
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/GenerateSWF.java b/src/main/java/org/apache/openmeetings/converter/GenerateSWF.java
new file mode 100644
index 0000000..7ae7601
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/GenerateSWF.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class GenerateSWF {
+
+	public static final Logger log = Red5LoggerFactory.getLogger(GenerateSWF.class, webAppRootKey);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	public final static boolean isPosix = System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1;
+
+	public final static String execExt = isPosix ? "" : ".exe";
+
+	private String getPathToSwfTools() {
+		String pathToSWFTools = configurationDao.getConfValue("swftools_path", String.class, "");
+		// If SWFTools Path is not blank a File.separator at the end of the path
+		// is needed
+		if (!"".equals(pathToSWFTools) && !pathToSWFTools.endsWith(File.separator)) {
+			pathToSWFTools = pathToSWFTools + File.separator;
+		}
+		return pathToSWFTools;
+	}
+
+	private String getSwfZoom() {
+		String valueForSwfZoom = configurationDao.getConfValue("swftools_zoom", String.class, "");
+		// WARNING CODE NOT COMPLETE: If SWFTools zoom (dpi) should be an integer between 50 and  600 with a default value of 100 dpi
+		if ("".equals(valueForSwfZoom)) {
+			valueForSwfZoom = "72";
+		}
+		return valueForSwfZoom;
+	}
+
+	private String getSwfJpegQuality() {
+		String valueForSwfJpegQuality = configurationDao.getConfValue("swftools_jpegquality", String.class, "");
+		// WARNING CODE NOT COMPLETE: If SWFTools JPEG Quality should be an integer between 1 and 100, with a default value of 85
+		if ("".equals(valueForSwfJpegQuality)) {
+			valueForSwfJpegQuality = "85";
+		}
+		return valueForSwfJpegQuality;
+	}
+
+	public ConverterProcessResult generateSwf(File originalFolder, File destinationFolder, String fileNamePure) throws IOException {
+		
+		// Create the Content of the Converter Script (.bat or .sh File)
+		String[] argv = new String[] {
+				getPathToSwfTools() + "pdf2swf" + execExt, "-s",
+				"insertstop", // insert Stop command into every frame
+				"-s","poly2bitmap", //http://www.swftools.org/gfx_tutorial.html#Rendering_pages_to_SWF_files
+				"-i", // change draw order to reduce pdf complexity
+				"-j", "" + getSwfJpegQuality(), // JPEG Quality 
+				"-s", "zoom=" + getSwfZoom(), // set zoom dpi 
+				new File(originalFolder, fileNamePure + ".pdf").getCanonicalPath(),
+				new File(destinationFolder, fileNamePure + ".swf").getCanonicalPath() };
+
+		return ProcessHelper.executeScript("generateSwf", argv);
+	}
+
+	/**
+	 * Generates an SWF from the list of files.
+	 */
+	public ConverterProcessResult generateSwfByImages(List<String> images, String outputfile, int fps) {
+		List<String> argvList = Arrays.asList(new String[] {
+				getPathToSwfTools() + "png2swf" + execExt, "-s", 
+				"insertstop", // Insert Stop command into every frame
+				"-o", outputfile, "-r", Integer.toString(fps), "-z" });
+
+		argvList.addAll(images);
+		return ProcessHelper.executeScript("generateSwfByImages", argvList.toArray(new String[0]));
+	}
+
+	/**
+	 * Combines a bunch of SWFs into one SWF by concatenate.
+	 */
+	public ConverterProcessResult generateSWFByCombine(List<String> swfs, String outputswf, int fps) {
+		List<String> argvList = Arrays.asList(new String[] {
+				getPathToSwfTools() + "swfcombine" + execExt, "-s",
+				"insertstop", // Insert Stop command into every frame
+				"-o", outputswf, "-r", Integer.toString(fps), "-z", "-a" });
+
+		argvList.addAll(swfs);
+		return ProcessHelper.executeScript("generateSWFByCombine", argvList.toArray(new String[0]));
+	}
+
+	public ConverterProcessResult generateSWFByFFMpeg(String inputWildCard,
+			String outputswf, int fps, int width, int height) {
+		// FIXME: ffmpeg should be on the system path
+		String[] argv = new String[] { "ffmpeg" + execExt, "-r",
+				Integer.toString(fps), "-i", inputWildCard, "-s",
+				width + "x" + height, "-b", "750k", "-ar", "44100", "-y",
+				outputswf };
+
+		return ProcessHelper.executeScript("generateSWFByFFMpeg", argv);
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/GenerateThumbs.java b/src/main/java/org/apache/openmeetings/converter/GenerateThumbs.java
new file mode 100644
index 0000000..2817b62
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/GenerateThumbs.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class GenerateThumbs extends BaseConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(GenerateThumbs.class, webAppRootKey);
+
+	public ConverterProcessResult generateThumb(String pre, File f, Integer thumbSize) throws IOException {
+		log.debug("generateThumb");
+		// Init variables
+		String name = f.getName();
+		File parent = f.getParentFile();
+
+		String[] argv = new String[] {
+			getPathToImageMagick()
+			, "-thumbnail"
+			, Integer.toString(thumbSize) + "x" + Integer.toString(thumbSize)
+			, f.getCanonicalPath()
+			, new File(parent, pre + name).getCanonicalPath()
+			};
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult decodePDF(String inputfile, String outputfile) {
+		log.debug("decodePDF");
+		String[] argv = new String[] { getPathToImageMagick(), inputfile, outputfile };
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult generateBatchThumb(File inputfile, File outputpath, Integer thumbSize, String pre) throws IOException {
+		log.debug("generateBatchThumbByWidth");
+		String[] argv = new String[] {
+			getPathToImageMagick()
+			, "-thumbnail" // FIXME
+			, Integer.toString(thumbSize)
+			, inputfile.getCanonicalPath()
+			, new File(outputpath, "_" + pre + "_page-%04d.jpg").getCanonicalPath()
+			};
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult generateImageBatchByWidth(
+			String current_dir, String inputfile, String outputpath,
+			Integer thumbWidth, String pre) {
+		log.debug("generateImageBatchByWidth");
+
+		String[] argv = new String[] { getPathToImageMagick(),
+				"-resize", Integer.toString(thumbWidth), inputfile,
+				outputpath + "_" + pre + "_page.png" };
+
+		return ProcessHelper.executeScript("generateImageBatchByWidth", argv);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/converter/IRecordingConverter.java b/src/main/java/org/apache/openmeetings/converter/IRecordingConverter.java
new file mode 100644
index 0000000..1a53c2e
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/converter/IRecordingConverter.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.converter;
+
+public interface IRecordingConverter {
+	void startConversion(Long recordingId);
+}
diff --git a/src/main/java/org/apache/openmeetings/data/basic/FieldManager.java b/src/main/java/org/apache/openmeetings/data/basic/FieldManager.java
new file mode 100644
index 0000000..d1b06d3
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/basic/FieldManager.java
@@ -0,0 +1,325 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.basic;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+@Transactional
+public class FieldManager {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			FieldManager.class, OpenmeetingsVariables.webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private FieldLanguageDao fieldLanguageDaoImpl;
+
+	@Autowired
+	private FieldLanguagesValuesDao fieldLanguagesValuesDAO;
+
+	@Autowired
+	private ConfigurationDao configurationDaoImpl;
+	
+	public String getString(Long fieldvalues_id, Long language_id) {
+		String result = null;
+		Fieldlanguagesvalues flv = fieldLanguagesValuesDAO.get(fieldvalues_id, language_id);
+		if (flv != null) {
+			result = performReplace(flv).getValue();
+		}
+		return result;
+	}
+	
+	public List<Fieldlanguagesvalues> getAllFieldsByLanguage(Long language_id) {
+		try {
+
+			TypedQuery<Fieldlanguagesvalues> query = em
+					.createQuery("select f from Fieldlanguagesvalues f WHERE f.language_id = :language_id ", Fieldlanguagesvalues.class);
+			query.setParameter("language_id", language_id);
+			List<Fieldlanguagesvalues> returnList = performReplace(query.getResultList());
+
+			return returnList;
+		} catch (Exception ex2) {
+			log.error("[getConfKey]: " + ex2);
+		}
+		return null;
+	}
+
+	public List<Map<String, Object>> getLabelsByLanguage(Long language_id,
+			int start, int max) {
+		try {
+
+			String sql = "select f.fieldvalues.fieldvalues_id, f.value from Fieldlanguagesvalues as f "
+					+ "WHERE f.language_id = :language_id ";
+
+			TypedQuery<Object> query = em.createQuery(sql, Object.class);
+			query.setParameter("language_id", language_id);
+			query.setFirstResult(start);
+			query.setMaxResults(max);
+
+			String appName = configurationDaoImpl.getAppName();
+			List<Map<String, Object>> returnList = new LinkedList<Map<String, Object>>();
+			for (Object fl : query.getResultList()) {
+				Map<String, Object> map = new HashMap<String, Object>();
+				Object[] row = (Object[])fl;
+				map.put("id", row[0]);
+				map.put("value", performReplace((String)row[1], appName));
+				returnList.add(map);
+			}
+			FieldLanguage fieldLanguage = fieldLanguageDaoImpl
+					.getFieldLanguageById(language_id);
+
+			log.debug("Getting Labels for Language " + fieldLanguage.getName());
+
+			// Check for Right To Left Languages
+			if (fieldLanguage.getRtl()) {
+				log.debug("Language requieres RTL!");
+
+				List<Map<String, Object>> returnRtlList = new LinkedList<Map<String, Object>>();
+
+				for (Iterator<Map<String, Object>> iter = returnList.iterator(); iter
+						.hasNext();) {
+					Map<String, Object> remote = iter.next();
+
+					Map<String, Object> toAdd = new HashMap<String, Object>();
+					toAdd.put("id", remote.get("id"));
+
+					String value = remote.get("value").toString();
+
+					String[] splitted = value.split(" ");
+					String reverseOrder = "";
+					for (int i = splitted.length - 1; i >= 0; i--) {
+						reverseOrder += splitted[i];
+						if (splitted.length != 1) {
+							reverseOrder += " ";
+						}
+					}
+					log.debug("reverseOrder " + reverseOrder);
+					toAdd.put("value", value);
+
+					returnRtlList.add(toAdd);
+				}
+
+				return returnRtlList;
+			} else {
+				log.debug("Language doesnt requiere RTL!");
+
+				return returnList;
+
+			}
+
+		} catch (Exception ex2) {
+			log.error("[getLabelsByLanguage]: ", ex2);
+			ex2.printStackTrace();
+		}
+		return null;
+	}
+
+	public List<Fieldlanguagesvalues> getAllFieldsByLanguage(Long language_id,
+			int start, int max) {
+		try {
+
+			String sql = "select f from Fieldlanguagesvalues f WHERE f.language_id = :language_id "
+					+ "AND f.fieldvalues_id >= :start AND f.fieldvalues_id <  :max";
+
+			TypedQuery<Fieldlanguagesvalues> query = em.createQuery(sql, Fieldlanguagesvalues.class);
+			query.setParameter("language_id", language_id);
+			query.setParameter("start", start);
+			query.setParameter("max", start + max);
+
+			List<Fieldlanguagesvalues> returnList = performReplace(query.getResultList());
+			FieldLanguage fieldLanguage = fieldLanguageDaoImpl
+					.getFieldLanguageById(language_id);
+
+			log.debug("GEtting all fields by language : "
+					+ fieldLanguage.getName());
+
+			// Check for Right To Left Languages
+			if (fieldLanguage.getRtl()) {
+				log.debug("language : " + fieldLanguage.getName()
+						+ " requieres RTL");
+
+				List<Fieldlanguagesvalues> returnRtlList = new LinkedList<Fieldlanguagesvalues>();
+
+				for (Iterator<Fieldlanguagesvalues> iter = returnList
+						.iterator(); iter.hasNext();) {
+					Fieldlanguagesvalues remote = iter.next();
+					Fieldlanguagesvalues toAdd = new Fieldlanguagesvalues();
+					toAdd.setFieldlanguagesvalues_id(remote
+							.getFieldlanguagesvalues_id());
+					toAdd.setFieldvalues(remote.getFieldvalues());
+					toAdd.setLanguage_id(remote.getLanguage_id());
+
+					String[] splitted = remote.getValue().split(" ");
+					String reverseOrder = "";
+					for (int i = splitted.length - 1; i >= 0; i--) {
+						reverseOrder += splitted[i];
+						if (splitted.length != 1) {
+							reverseOrder += " ";
+						}
+					}
+					toAdd.setValue(reverseOrder);
+
+					returnRtlList.add(toAdd);
+				}
+
+				return returnRtlList;
+			} else {
+				log.debug("language : " + fieldLanguage.getName()
+						+ " requieres NO RTL");
+
+				return returnList;
+
+			}
+
+		} catch (Exception ex2) {
+			log.error("[getConfKey]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long addFieldValueByFieldAndLanguage(Fieldvalues fv,
+			Long language_id, String fieldvalue) {
+		try {
+
+			Fieldlanguagesvalues flv = new Fieldlanguagesvalues();
+			flv.setStarttime(new Date());
+			flv.setValue(fieldvalue);
+			flv.setLanguage_id(language_id);
+			flv.setFieldvalues(fv);
+			flv.setDeleted(false);
+
+			flv = em.merge(flv);
+			Long fieldlanguagesvaluesId = flv.getFieldlanguagesvalues_id();
+
+			return fieldlanguagesvaluesId;
+		} catch (Exception ex2) {
+			log.error("[getConfKey]: ", ex2);
+		}
+		return null;
+	}
+
+	public void updateFieldValueByFieldAndLanguage(Fieldlanguagesvalues flv) {
+		try {
+
+			if (flv.getFieldlanguagesvalues_id() == null) {
+				em.persist(flv);
+			} else {
+				if (!em.contains(flv)) {
+					em.merge(flv);
+				}
+			}
+
+		} catch (Exception ex2) {
+			log.error("[updateFieldValueByFieldAndLanguage]: ", ex2);
+		}
+
+	}
+
+	public Fieldvalues addFieldById(String fieldName, Long fieldvalues_id) {
+		try {
+			Fieldvalues fl = new Fieldvalues();
+			fl.setFieldvalues_id(fieldvalues_id);
+			fl.setStarttime(new Date());
+			fl.setName(fieldName);
+			fl.setDeleted(false);
+
+			return em.merge(fl);
+		} catch (Exception ex2) {
+			log.error("[getConfKey]: ", ex2);
+		}
+		return null;
+	}
+
+	public long getNextFieldvaluesId() {
+		return fieldLanguagesValuesDAO.count() + 1;
+	}
+	
+	public Fieldvalues getFieldvaluesById(Long fieldvalues_id) {
+		String hql = "select f from Fieldvalues f WHERE f.fieldvalues_id = :fieldvalues_id ";
+		TypedQuery<Fieldvalues> query = em.createQuery(hql, Fieldvalues.class);
+		query.setParameter("fieldvalues_id", fieldvalues_id);
+		Fieldvalues fv = null;
+		try {
+			fv = query.getSingleResult();
+		} catch (NoResultException ex) {
+		}
+		return fv;
+	}
+
+	private Fieldlanguagesvalues performReplace(Fieldlanguagesvalues f) {
+		String appName = configurationDaoImpl.getAppName();
+		return performReplace(f, appName);
+	}
+	
+	private String performReplace(String val, String appName) {
+		return val == null ? val : val.replaceAll("\\$APP_NAME", appName);
+	}
+	
+	private Fieldlanguagesvalues performReplace(Fieldlanguagesvalues f, String appName) {
+		Fieldlanguagesvalues r = new Fieldlanguagesvalues();
+		r.setDeleted(f.getDeleted());
+		r.setFieldlanguagesvalues_id(f.getFieldlanguagesvalues_id());
+		r.setFieldvalues(f.getFieldvalues());
+		r.setLanguage_id(f.getLanguage_id());
+		r.setStarttime(f.getStarttime());
+		r.setUpdatetime(f.getUpdatetime());
+		r.setValue(performReplace(f.getValue(), appName));
+		return r;
+	}
+	
+	private <T extends Collection<Fieldlanguagesvalues>> T performReplace(T flv) {
+		String appName = configurationDaoImpl.getAppName();
+		
+		for (Fieldlanguagesvalues f : flv) {
+			performReplace(f, appName);
+		}
+		return flv;
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/data/beans/rooms/RoomsList.java b/src/main/java/org/apache/openmeetings/data/beans/rooms/RoomsList.java
new file mode 100644
index 0000000..0228088
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/beans/rooms/RoomsList.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.beans.rooms;
+
+import org.apache.openmeetings.db.entity.room.Room;
+
+public class RoomsList {
+	
+	Room[] roomList = null;
+
+	public Room[] getRoomList() {
+		return roomList;
+	}
+	public void setRoomList(Room[] roomList) {
+		this.roomList = roomList;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java b/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
new file mode 100644
index 0000000..aff9d18
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
@@ -0,0 +1,295 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.calendar.management;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.web.mail.template.AppointmentReminderTemplate;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class AppointmentLogic {
+	private static final Logger log = Red5LoggerFactory.getLogger(AppointmentLogic.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDao;
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private FieldLanguagesValuesDao langDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private InvitationDao invitationDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+
+	private static int DEFAULT_MINUTES_REMINDER_SEND = 15;
+
+	public List<Appointment> getTodaysAppointmentsForUser(Long userId) {
+		try {
+			log.debug("getTodaysAppointmentsForUser");
+			List<Appointment> points = appointmentDao.getTodaysAppointmentsbyRangeAndMember(userId);
+			log.debug("Count Appointments for Today : " + points.size());
+			return points;
+		} catch (Exception err) {
+			log.error("[getTodaysAppointmentsForUser]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * @author o.becherer
+	 * @param room_id
+	 * @return
+	 */
+	// --------------------------------------------------------------------------------------------
+	public Appointment getAppointmentByRoom(Long room_id) throws Exception {
+		log.debug("getAppointmentByRoom");
+
+		Room room = roomDao.get(room_id);
+
+		if (room == null) {
+			throw new Exception("Room does not exist in database!");
+		}
+
+		if (!room.getAppointment()) {
+			throw new Exception("Room " + room.getName() + " isnt part of an appointed meeting");
+		}
+
+		return appointmentDao.getAppointmentByRoom(room_id);
+	}
+
+	// --------------------------------------------------------------------------------------------
+
+	private void sendReminder(User u, Appointment a) throws Exception {
+		Invitation i = new Invitation();
+		i.setInvitedBy(u);
+		i.setInvitee(u);
+		i.setAppointment(a);
+		i.setRoom(a.getRoom());
+		sendReminder(u, a, i);
+	}
+	
+	private void sendReminder(User u, Appointment a, Invitation inv) throws Exception {
+		if (inv == null) {
+			log.error(String.format("Error retrieving Invitation for member %s in Appointment %s"
+					, u.getAdresses().getEmail(), a.getTitle()));
+			return;
+		}
+
+		TimeZone tz = timezoneUtil.getTimeZone(u.getTimeZoneId());
+
+		long langId = u.getLanguage_id();
+		// Get the required labels one time for all meeting members. The
+		// Language of the email will be the system default language
+
+		String smsSubject = generateSMSSubject(langDao.getString(1158L, langId), a);
+
+		AppointmentReminderTemplate t = AppointmentReminderTemplate.get(langId, a, tz);
+		invitationManager.sendInvitionLink(inv, MessageType.Create, t.getSubject(), t.getEmail(), false);
+
+		invitationManager.sendInvitationReminderSMS(u.getAdresses().getPhone(), smsSubject, langId);
+		if (inv.getHash() != null) {
+			inv.setUpdated(new Date());
+			invitationDao.update(inv);
+		}
+	}
+	
+	/**
+	 * Sending Reminder in Simple mail format 5 minutes before Meeting begins
+	 */
+	// ----------------------------------------------------------------------------------------------
+	public void doScheduledMeetingReminder() throws Exception {
+		// log.debug("doScheduledMeetingReminder");
+
+		String baseUrl = configurationDao.getConfValue(CONFIG_APPLICATION_BASE_URL, String.class, DEFAULT_BASE_URL);
+		if (baseUrl == null || baseUrl.length() < 1) {
+			log.error("Error retrieving baseUrl for application");
+			return;
+		}
+		Integer minutesReminderSend = configurationDao.getConfValue(CONFIG_APPOINTMENT_REMINDER_MINUTES, Integer.class
+				, "" + DEFAULT_MINUTES_REMINDER_SEND);
+		if (minutesReminderSend == null) {
+			throw new Exception("minutesReminderSend is null!");
+		}
+
+		if (minutesReminderSend == 0) {
+			log.warn("minutesReminderSend is 0, disabling reminder scheduler");
+			return;
+		}
+
+		long milliseconds = (minutesReminderSend * 60 * 1000);
+		Calendar start = Calendar.getInstance();
+		if (milliseconds < 0) {
+			start.setTimeInMillis(start.getTimeInMillis() + milliseconds);
+		}
+		Calendar end = Calendar.getInstance();
+		if (milliseconds > 0) {
+			end.setTimeInMillis(end.getTimeInMillis() + milliseconds);
+		}
+
+		for (Appointment a : appointmentDao.getAppointmentsInRange(start, end)) {
+			// Prevent email from being send twice, even if the cycle takes
+			// very long to send each
+			if (a.isReminderEmailSend()) {
+				continue;
+			}
+			TimeZone ownerZone = timezoneUtil.getTimeZone(a.getOwner().getTimeZoneId());
+			Calendar aNow = Calendar.getInstance(ownerZone);
+			Calendar aStart = a.startCalendar(ownerZone);
+			aStart.add(Calendar.MINUTE, -minutesReminderSend);
+			if (aStart.after(aNow)) {
+				// to early to send reminder
+				continue;
+			}
+			// Update Appointment to not send invitation twice
+			a.setReminderEmailSend(true);
+			appointmentDao.updateAppointment(a);
+
+			List<MeetingMember> members = a.getMeetingMembers();
+
+			sendReminder(a.getOwner(), a);
+			if (members == null) {
+				log.debug("doScheduledMeetingReminder : no members in meeting!");
+				continue;
+			}
+			//TODO should we add reminder for the owner????
+
+			// Iterate through all MeetingMembers
+			for (MeetingMember mm : members) {
+				log.debug("doScheduledMeetingReminder : Member " + mm.getUser().getAdresses().getEmail());
+
+				Invitation inv = mm.getInvitation();
+
+				sendReminder(mm.getUser(), a, inv);
+			}
+		}
+	}
+
+	private String generateSMSSubject(String labelid1158, Appointment ment) {
+		String subj = configurationDao.getConfValue("sms.subject", String.class, null);
+		return subj == null || subj.length() == 0 ? 
+				labelid1158 + " " + ment.getTitle() : subj;
+	}
+	
+	public Appointment getAppointment(String appointmentName,
+			String appointmentLocation, String appointmentDescription,
+			Calendar appointmentstart, Calendar appointmentend,
+			Boolean isDaily, Boolean isWeekly, Boolean isMonthly,
+			Boolean isYearly, Long categoryId, Long remind, String[] mmClient,
+			Long roomType, Long languageId,
+			Boolean isPasswordProtected, String password, long roomId, Long users_id) {
+		Appointment a = new Appointment();
+		a.setTitle(appointmentName);
+		a.setLocation(appointmentLocation);
+		a.setDescription(appointmentDescription);
+		a.setStart(appointmentstart.getTime());
+		a.setEnd(appointmentend.getTime());
+		a.setIsDaily(isDaily);
+		a.setIsWeekly(isWeekly);
+		a.setIsMonthly(isMonthly);
+		a.setIsYearly(isYearly);
+		a.setCategory(appointmentCategoryDao.get(categoryId));
+		a.setRemind(appointmentReminderTypDao.get(remind));
+		if (roomId > 0) {
+			a.setRoom(roomDao.get(roomId));
+		} else {
+			a.setRoom(new Room());
+			a.getRoom().setComment(appointmentDescription);
+			a.getRoom().setName(appointmentName);
+			a.getRoom().setRoomtype(roomTypeDao.get(roomType));
+		}
+		a.setOwner(userDao.get(users_id));
+		a.setPasswordProtected(isPasswordProtected);
+		a.setPassword(password);
+		a.setMeetingMembers(new ArrayList<MeetingMember>());
+		for (String singleClient : mmClient) {
+			if (Strings.isEmpty(singleClient)) {
+				continue;
+			}
+			MeetingMember mm = getMeetingMember(users_id, languageId, singleClient);
+			mm.setAppointment(a);
+			a.getMeetingMembers().add(mm);
+		}
+		return a;
+	}
+
+	public MeetingMember getMeetingMember(Long userId, Long langId, String str) {
+		String[] params = str.split(",");
+		
+		try {
+			return meetingMemberDao.get(Long.valueOf(params[0]));
+		} catch (Exception e) {
+			//no-op
+		}
+		MeetingMember mm = new MeetingMember();
+		try {
+			mm.setUser(userDao.get(Long.valueOf(params[4])));
+		} catch (Exception e) {
+			//no-op
+		}
+		if (mm.getUser() == null) {
+			mm.setUser(userDao.getContact(params[3], params[1], params[2], langId, params[5], userId));
+		}
+		
+		return mm;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java b/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
new file mode 100644
index 0000000..fa11a5f
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/conference/InvitationManager.java
@@ -0,0 +1,398 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.conference;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.TimeZone;
+import java.util.Vector;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.IInvitationManager;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
+import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.mail.SMSHandler;
+import org.apache.openmeetings.util.LinkHelper;
+import org.apache.openmeetings.util.crypt.MD5;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.openmeetings.util.mail.IcalHandler;
+import org.apache.openmeetings.web.mail.template.AbstractAppointmentTemplate;
+import org.apache.openmeetings.web.mail.template.CanceledAppointmentTemplate;
+import org.apache.openmeetings.web.mail.template.CreatedAppointmentTemplate;
+import org.apache.openmeetings.web.mail.template.InvitationTemplate;
+import org.apache.openmeetings.web.mail.template.UpdatedAppointmentTemplate;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class InvitationManager implements IInvitationManager {
+	private static final Logger log = Red5LoggerFactory.getLogger(InvitationManager.class, webAppRootKey);
+
+	@Autowired
+	private InvitationDao invitationDao;
+	@Autowired
+	private MailHandler mailHandler;
+	@Autowired
+	private SMSHandler smsHandler;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private ConfigurationDao configDao;
+
+	/**
+	 * Sending invitation within plain mail
+	 * 
+	 * @param user_level
+	 * @param username
+	 * @param message
+	 * @param email
+	 * @param subject
+	 * @param rooms_id
+	 * @param conferencedomain
+	 * @param isPasswordProtected
+	 * @param invitationpass
+	 * @param valid
+	 * @param validFrom
+	 * @param validTo
+	 * @param createdBy
+	 * @return
+	 */
+	// ---------------------------------------------------------------------------------------------------------
+	public Invitation getInvitation(User inveetee, Room room
+			, boolean isPasswordProtected, String invitationpass, Valid valid,
+			User createdBy, Long language_id, Date gmtTimeStart, Date gmtTimeEnd
+			, Appointment appointment)
+	{
+		Invitation i = getInvitation(null, inveetee, room, isPasswordProtected, invitationpass, valid, createdBy
+				, language_id, gmtTimeStart, gmtTimeEnd, appointment);
+		i = invitationDao.update(i);
+		return i;
+	}
+	
+	public Invitation getInvitation(Invitation _invitation, User inveetee, Room room
+			, boolean isPasswordProtected, String invitationpass, Valid valid,
+			User createdBy, Long language_id, Date gmtTimeStart, Date gmtTimeEnd
+			, Appointment appointment) {
+		
+		Invitation invitation = _invitation;
+		if (null == _invitation) {
+			invitation = new Invitation();
+			String hashRaw = "HASH" + (System.currentTimeMillis());
+			try {
+				invitation.setHash(MD5.do_checksum(hashRaw));
+			} catch (NoSuchAlgorithmException e) {
+				log.error("Unexpected error while creating invitation", e);
+				throw new RuntimeException(e);
+			}
+		}
+
+		invitation.setPasswordProtected(isPasswordProtected);
+		if (isPasswordProtected) {
+			invitation.setPassword(ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(invitationpass));
+		}
+
+		invitation.setUsed(false);
+		invitation.setValid(valid);
+		
+		// valid period of Invitation
+		switch (valid) {
+			case Period:
+				invitation.setValidFrom(new Date(gmtTimeStart.getTime() - (5 * 60 * 1000)));
+				invitation.setValidTo(gmtTimeEnd);
+				break;
+			case Endless:
+			case OneTime:
+			default:
+				break;
+		}
+
+		invitation.setDeleted(false);
+
+		invitation.setInvitedBy(createdBy);
+		invitation.setInvitee(inveetee);
+		if (language_id != null && Type.contact == invitation.getInvitee().getType()) {
+			invitation.getInvitee().setLanguage_id(language_id);
+		}
+		invitation.setRoom(room);
+		invitation.setInserted(new Date());
+		invitation.setAppointment(appointment);
+
+		return invitation;
+	}
+	
+	/**
+	 * @author vasya
+	 * 
+	 * @param member
+	 * @param a
+	 */
+	public void processInvitation(Appointment a, MeetingMember member, MessageType type) {
+		processInvitation(a, member, type, true);
+	}
+	
+	public void processInvitation(Appointment a, MeetingMember mm, MessageType type, boolean sendMail) {
+		if (a.getRemind() == null) {
+			log.error("Appointment doesn't have reminder set!");
+			return;
+		}
+		long remindType = a.getRemind().getTypId();
+		if (remindType < 2) {
+			log.error("MeetingMember should not have invitation!");
+			return;
+		}
+
+		log.debug(":::: processInvitation ..... " + remindType);
+
+		// appointment.getRemind().getTypId() == 1 will not receive emails
+		if (remindType > 1) {
+			log.debug("Invitation for Appointment : simple email");
+
+			try {
+				mm.setInvitation(getInvitation(mm.getInvitation()
+						, mm.getUser(), a.getRoom(), a.isPasswordProtected(), a.getPassword()
+						, Valid.Period, a.getOwner(), null, a.getStart(), a.getEnd(), a));
+				if (sendMail) {
+					sendInvitionLink(a, mm, type, remindType > 2);
+				}
+			} catch (Exception e) {
+				log.error("Unexpected error while setting invitation", e);
+			}
+		}
+	}
+
+	/**
+	 * @author vasya
+	 * 
+     * @param mm
+     * @param a
+     * @param message
+     * @param subject
+	 * @throws Exception 
+	 */
+	private void sendInvitionLink(Appointment a, MeetingMember mm, MessageType type, boolean ical) throws Exception	{
+		User owner = a.getOwner();
+		String invitorName = owner.getFirstname() + " " + owner.getLastname();
+		Long langId = mm.getUser().getLanguage_id();
+		TimeZone tz = timezoneUtil.getTimeZone(mm.getUser());
+		AbstractAppointmentTemplate t = null;
+		switch (type) {
+			case Cancel:
+				t = CanceledAppointmentTemplate.get(langId, a, tz, invitorName);
+				break;
+			case Create:
+				t = CreatedAppointmentTemplate.get(langId, a, tz, invitorName);
+				break;
+			case Update:
+			default:
+				t = UpdatedAppointmentTemplate.get(langId, a, tz, invitorName);
+				break;
+			
+		}
+		sendInvitionLink(mm.getInvitation(), type, t.getSubject(), t.getEmail(), ical);
+	}
+	
+	public void sendInvitionLink(Invitation i, MessageType type, String subject, String message, boolean ical) throws Exception {
+		String invitation_link = type == MessageType.Cancel ? null : LinkHelper.getInvitationLink(configDao.getBaseUrl(), i);
+		User owner = i.getInvitedBy();
+		
+		String invitorName = owner.getFirstname() + " " + owner.getLastname();
+		String template = InvitationTemplate.getEmail(i.getInvitee().getLanguage_id(), invitorName, message, invitation_link);
+		String email = i.getInvitee().getAdresses().getEmail();
+		String replyToEmail = owner.getAdresses().getEmail();
+		
+		if (ical) {
+			String username = i.getInvitee().getLogin();
+			boolean isOwner = owner.getUser_id().equals(i.getInvitee().getUser_id());
+			IcalHandler handler = new IcalHandler(MessageType.Cancel == type ? IcalHandler.ICAL_METHOD_CANCEL : IcalHandler.ICAL_METHOD_REQUEST);
+
+			HashMap<String, String> attendeeList = handler.getAttendeeData(email, username, isOwner);
+
+			Vector<HashMap<String, String>> atts = new Vector<HashMap<String, String>>();
+			atts.add(attendeeList);
+
+			// Defining Organizer
+
+			HashMap<String, String> organizerAttendee = handler.getAttendeeData(email, username, isOwner);
+			organizerAttendee = handler.getAttendeeData(replyToEmail, owner.getLogin(), isOwner);
+
+			Appointment a = i.getAppointment();
+			// Create ICal Message
+			//FIXME should be checked to generate valid time
+			String meetingId = handler.addNewMeeting(a.getStart(), a.getEnd(),
+					a.getTitle(), atts, invitation_link,
+					organizerAttendee, a.getIcalId(), timezoneUtil.getTimeZone(owner));
+
+			// Writing back meetingUid
+			if (Strings.isEmpty(a.getIcalId())) {
+				a.setIcalId(meetingId);
+				// TODO should it be saved ???
+			}
+
+			log.debug(handler.getICalDataAsString());
+			mailHandler.send(new MailMessage(email, replyToEmail, subject, template, handler.getIcalAsByteArray()));
+		} else {
+			mailHandler.send(email, replyToEmail, subject, template);
+		}
+	}
+
+	/**
+	 * This method sends invitation reminder SMS
+	 * @param phone user's phone
+	 * @param subject 
+	 * @return
+	 */
+	public boolean sendInvitationReminderSMS(String phone, String subject, long language_id) {
+		if (!Strings.isEmpty(phone)) {
+			log.debug("sendInvitationReminderSMS to " + phone + ": " + subject);
+			try {
+				return smsHandler.sendSMS(phone, subject, language_id);
+			} catch (Exception e) {
+				log.error("sendInvitationReminderSMS", e);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 
+	 * @param hashCode
+	 * @param hidePass
+	 * @return
+	 */
+	public Object getInvitationByHashCode(String hashCode, boolean hidePass) {
+		try {
+			Invitation invitation = invitationDao.getInvitationByHashCode(hashCode, hidePass);
+
+			if (invitation == null) {
+				// already deleted or does not exist
+				return new Long(-31);
+			} else {
+				switch (invitation.getValid()) {
+					case OneTime:
+						// do this only if the user tries to get the Invitation, not
+						// while checking the PWD
+						if (hidePass) {
+							// one-time invitation
+							if (invitation.isUsed()) {
+								// Invitation is of type *only-one-time* and was
+								// already used
+								return new Long(-32);
+							} else {
+								// set to true if this is the first time / a normal
+								// getInvitation-Query
+								invitation.setUsed(true);
+								invitationDao.update(invitation);
+								// invitation.setInvitationpass(null);
+								invitation.setAllowEntry(true);
+							}
+						} else {
+							invitation.setAllowEntry(true);
+						}
+						break;
+					case Period:
+						TimeZone tz = timezoneUtil.getTimeZone(invitation.getInvitee());
+						Calendar now = Calendar.getInstance(tz);
+						Calendar start = Calendar.getInstance(tz);
+						start.setTime(invitation.getValidFrom());
+
+						Calendar end = Calendar.getInstance(tz);
+						end.setTime(invitation.getValidTo());
+						if (now.after(start) && now.before(end)) {
+							invitationDao.update(invitation);
+							// invitation.setInvitationpass(null);
+							invitation.setAllowEntry(true);
+						} else {
+
+							// Invitation is of type *period* and is not valid
+							// anymore, this is an extra hook to display the time
+							// correctly
+							// in the method where it shows that the hash code does
+							// not work anymore
+							invitation.setAllowEntry(false);
+						}
+						break;
+					case Endless:
+					default:
+						invitationDao.update(invitation);
+
+						invitation.setAllowEntry(true);
+						// invitation.setInvitationpass(null);
+						break;
+				}
+				return invitation;
+			}
+
+		} catch (Exception err) {
+			log.error("[getInvitationByHashCode]", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * 
+	 * @param hashCode
+	 * @param pass
+	 * @return
+	 */
+	public Object checkInvitationPass(String hashCode, String pass) {
+		try {
+			Object obj = this.getInvitationByHashCode(hashCode, false);
+			log.debug("checkInvitationPass - obj: " + obj);
+			if (obj instanceof Invitation) {
+				Invitation invitation = (Invitation) obj;
+
+				// log.debug("invitationId "+invitation.getInvitations_id());
+				// log.debug("pass "+pass);
+				// log.debug("getInvitationpass "+invitation.getInvitationpass());
+
+				if (ManageCryptStyle.getInstanceOfCrypt().verifyPassword(pass, invitation.getPassword())) {
+					return new Long(1);
+				} else {
+					return new Long(-34);
+				}
+			} else {
+				return obj;
+			}
+		} catch (Exception ex2) {
+			log.error("[checkInvitationPass] ", ex2);
+		}
+		return new Long(-1);
+	}
+
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java b/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java
new file mode 100644
index 0000000..5c4ab78
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/conference/RoomManager.java
@@ -0,0 +1,1106 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.conference;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.openmeetings.db.dao.room.IRoomManager;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomModeratorsDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.room.SipDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+@Transactional
+public class RoomManager implements IRoomManager {
+	private static final Logger log = Red5LoggerFactory.getLogger(RoomManager.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private RoomModeratorsDao roomModeratorsDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private ISessionManager sessionManager;
+    @Autowired
+	private RoomDao roomDao;
+    @Autowired
+	private SipDao sipDao;
+    @Autowired
+	private RoomTypeDao roomTypeDao;
+
+	/**
+	 * Get a Rooms-Object or NULL
+	 * 
+	 * @param externalRoomId
+	 * @return Rooms-Object or NULL
+	 */
+	public Room getRoomByExternalId(Long externalRoomId,
+			String externalRoomType, long roomtypes_id) {
+		log.debug("getRoombyExternalId : " + externalRoomId + " - "
+				+ externalRoomType + " - " + roomtypes_id);
+		try {
+			TypedQuery<Room> query = em.createNamedQuery("getRoomByExternalId", Room.class);
+			query.setParameter("externalRoomId", externalRoomId);
+			query.setParameter("externalRoomType", externalRoomType);
+			query.setParameter("roomtypes_id", roomtypes_id);
+			List<?> ll = query.getResultList();
+			if (ll.size() > 0) {
+				return (Room) ll.get(0);
+			} else {
+				log.error("Could not find room " + externalRoomId);
+			}
+		} catch (Exception ex2) {
+			log.error("[getRoomByExternalId] ", ex2);
+		}
+		return null;
+	}
+
+	public SearchResult<Room> getRooms(int start, int max, String orderby, boolean asc, String search) {
+		try {
+			SearchResult<Room> sResult = new SearchResult<Room>();
+			sResult.setRecords(this.selectMaxFromRooms(search));
+			sResult.setObjectName(Room.class.getName());
+			sResult.setResult(this.getRoomsInternatlByHQL(start, max,
+					orderby, asc, search));
+			return sResult;
+		} catch (Exception ex2) {
+			log.error("[getRooms] ", ex2);
+		}
+		return null;
+	}
+	
+	public SearchResult<Room> getRoomsWithCurrentUsers(int start, int max, String orderby, boolean asc) {
+		try {
+			SearchResult<Room> sResult = new SearchResult<Room>();
+			sResult.setRecords(this.selectMaxFromRooms(""));
+			sResult.setObjectName(Room.class.getName());
+
+			List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
+					asc);
+
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+			}
+
+			sResult.setResult(rooms);
+			return sResult;
+		} catch (Exception ex2) {
+			log.error("[getRooms] ", ex2);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsWithCurrentUsersByList(int start, int max, String orderby, boolean asc) {
+		try {
+			List<Room> rooms = this.getRoomsInternatl(start, max, orderby,
+					asc);
+
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+			}
+
+			return rooms;
+		} catch (Exception ex2) {
+			log.error("[getRooms] ", ex2);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsWithCurrentUsersByListAndType(int start, int max, String orderby, boolean asc, String externalRoomType) {
+		try {
+			List<Room> rooms = this.getRoomsInternatlbyType(start, max,
+					orderby, asc, externalRoomType);
+
+			for (Room room : rooms) {
+				room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+			}
+
+			return rooms;
+		} catch (Exception ex2) {
+			log.error("[getRooms] ", ex2);
+		}
+		return null;
+	}
+
+	public Long selectMaxFromRooms(String search) {
+		try {
+			if (search.length() == 0) {
+				search = "%";
+			} else {
+				search = "%" + search + "%";
+			}
+			// get all users
+			TypedQuery<Long> query = em.createNamedQuery("selectMaxFromRooms", Long.class);
+			query.setParameter("search", search);
+			List<Long> ll = query.getResultList();
+			log.debug("Number of records" + ll.get(0));
+			return ll.get(0);
+		} catch (Exception ex2) {
+			log.error("[selectMaxFromRooms] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * gets a list of all availible rooms
+	 * 
+	 * @param user_level
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @param asc
+	 * @return
+	 */
+	public List<Room> getRoomsInternatl(int start, int max, String orderby,
+			boolean asc) {
+		try {
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Room> cq = cb.createQuery(Room.class);
+			Root<Room> c = cq.from(Room.class);
+			Predicate condition = cb.equal(c.get("deleted"), false);
+			cq.where(condition);
+			cq.distinct(asc);
+			if (asc) {
+				cq.orderBy(cb.asc(c.get(orderby)));
+			} else {
+				cq.orderBy(cb.desc(c.get(orderby)));
+			}
+			TypedQuery<Room> q = em.createQuery(cq);
+			q.setFirstResult(start);
+			q.setMaxResults(max);
+			List<Room> ll = q.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getRooms ] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * gets a list of all availible rooms
+	 * 
+	 * @param user_level
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @param asc
+	 * @return
+	 */
+	public List<Room> getRoomsInternatlByHQL(int start, int max,
+			String orderby, boolean asc, String search) {
+		try {
+
+			String hql = "select c from Room c where c.deleted = false AND c.name LIKE :search ";
+
+			if (search.length() == 0) {
+				search = "%";
+			} else {
+				search = "%" + search + "%";
+			}
+			if (orderby != null) {
+				hql += " ORDER BY " + (orderby.startsWith("c.") ? "" : "c.") + orderby;
+	
+				if (asc) {
+					hql += " ASC";
+				} else {
+					hql += " DESC";
+				}
+			}
+			TypedQuery<Room> query = em.createQuery(hql, Room.class);
+			query.setParameter("search", search);
+			query.setFirstResult(start);
+			query.setMaxResults(max);
+
+			return query.getResultList();
+
+		} catch (Exception ex2) {
+			log.error("[getRooms ] ", ex2);
+		}
+		return null;
+	}
+
+	public List<Room> getAllRooms() {
+		try {
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Room> cq = cb.createQuery(Room.class);
+			Root<Room> c = cq.from(Room.class);
+			Predicate condition = cb.equal(c.get("deleted"), false);
+			cq.where(condition);
+			TypedQuery<Room> q = em.createQuery(cq);
+			List<Room> ll = q.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getAllRooms]", ex2);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsInternatlbyType(int start, int max,
+			String orderby, boolean asc, String externalRoomType) {
+		try {
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<Room> cq = cb.createQuery(Room.class);
+			Root<Room> c = cq.from(Room.class);
+			Predicate condition = cb.equal(c.get("deleted"), false);
+			Predicate subCondition = cb.equal(c.get("externalRoomType"),
+					externalRoomType);
+			cq.where(condition, subCondition);
+			cq.distinct(asc);
+			if (asc) {
+				cq.orderBy(cb.asc(c.get(orderby)));
+			} else {
+				cq.orderBy(cb.desc(c.get(orderby)));
+			}
+			TypedQuery<Room> q = em.createQuery(cq);
+			q.setFirstResult(start);
+			q.setMaxResults(max);
+			List<Room> ll = q.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getRooms ] ", ex2);
+		}
+		return null;
+	}
+
+	public List<RoomOrganisation> getOrganisationsByRoom(long rooms_id) {
+		try {
+			String hql = "select c from RoomOrganisation as c "
+					+ "where c.room.rooms_id = :rooms_id "
+					+ "AND c.deleted = false";
+			TypedQuery<RoomOrganisation> q = em.createQuery(hql, RoomOrganisation.class);
+
+			q.setParameter("rooms_id", rooms_id);
+			List<RoomOrganisation> ll = q.getResultList();
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getOrganisationsByRoom] ", ex2);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsByIds(List<Integer> roomIds) {
+		try {
+			if (roomIds == null || roomIds.size() == 0) {
+				return new LinkedList<Room>();
+			}
+
+			String queryString = "SELECT r from Room r " + "WHERE ";
+
+			queryString += "(";
+
+			int i = 0;
+			for (Integer room_id : roomIds) {
+				if (i != 0) {
+					queryString += " OR ";
+				}
+				queryString += " r.rooms_id = " + room_id;
+				i++;
+			}
+
+			queryString += ")";
+
+			TypedQuery<Room> q = em.createQuery(queryString, Room.class);
+
+			List<Room> ll = q.getResultList();
+
+			return ll;
+
+		} catch (Exception ex2) {
+			log.error("[getRoomsByIds] ", ex2);
+		}
+		return null;
+	}
+
+	// ---------------------------------------------------------------------------------------------
+
+    /**
+     * Returns number of SIP conference participants
+     * @param rooms_id id of room
+     * @return number of participants
+     */
+    public Integer getSipConferenceMembersNumber(Long rooms_id) {
+    	Room r = roomDao.get(rooms_id);
+    	return r == null || r.getConfno() == null ? null : sipDao.countUsers(r.getConfno());
+    }
+
+    private List<RoomModerator> getModerators(List<Map<String, Object>> list, Long roomId) {
+		List<RoomModerator> result = new ArrayList<RoomModerator>();
+
+		for (Map<String, Object> roomModeratorObj : list) {
+			Long roomModeratorsId = roomModeratorObj.containsKey("roomModeratorsId") ? Long.parseLong(roomModeratorObj.get("roomModeratorsId").toString()) : null;
+			Long userId = Long.parseLong(roomModeratorObj.get("userId").toString());
+			Boolean isSuperModerator = Boolean.parseBoolean(roomModeratorObj.get("isSuperModerator").toString());
+
+			RoomModerator rm = new RoomModerator();
+			rm.setRoomModeratorsId(roomModeratorsId);
+			rm.setRoomId(roomId);
+			rm.setUser(usersDao.get(userId));
+			rm.setIsSuperModerator(isSuperModerator);
+			
+			result.add(rm);
+		}
+		return result;
+    }
+
+	/**
+	 * adds a new Record to the table rooms
+	 * @param name
+	 * @param roomtypes_id
+	 * @param ispublic
+	 * @param hideActivitiesAndActions TODO
+	 * @param hideFilesExplorer TODO
+	 * @param hideActionsMenu TODO
+	 * @param hideScreenSharing TODO
+	 * @param hideWhiteboard TODO
+	 * @return id of the newly created room or NULL
+	 */
+	public Long addRoom(String name, long roomtypes_id,
+			String comment, Long numberOfPartizipants, boolean ispublic,
+			List<Integer> organisations, Boolean appointment, Boolean isDemoRoom,
+			Integer demoTime, Boolean isModeratedRoom,
+			List<Map<String, Object>> roomModerators,
+			Boolean allowUserQuestions, Boolean isAudioOnly, Boolean allowFontStyles, Boolean isClosed,
+			String redirectURL, String conferencePin,
+			Long ownerId, Boolean waitForRecording, boolean allowRecording,
+			Boolean hideTopBar, Boolean hideChat, Boolean hideActivitiesAndActions, Boolean hideFilesExplorer, 
+			Boolean hideActionsMenu, Boolean hideScreenSharing, Boolean hideWhiteboard,
+			Boolean showMicrophoneStatus, Boolean chatModerated, boolean chatOpened
+			, boolean filesOpened, boolean autoVideoSelect, boolean sipEnabled) {
+
+		try {
+			Room r = new Room();
+			r.setName(name);
+			r.setComment(comment);
+			r.setStarttime(new Date());
+			r.setNumberOfPartizipants(numberOfPartizipants);
+			r.setRoomtype(roomTypeDao.get(roomtypes_id));
+			r.setIspublic(ispublic);
+			r.setAllowUserQuestions(allowUserQuestions);
+			r.setIsAudioOnly(isAudioOnly);
+			r.setAllowFontStyles(allowFontStyles);
+
+			r.setAppointment(appointment);
+
+			r.setIsDemoRoom(isDemoRoom);
+			r.setDemoTime(demoTime);
+
+			r.setIsModeratedRoom(isModeratedRoom);
+			r.setHideTopBar(hideTopBar);
+
+			r.setDeleted(false);
+
+			r.setIsClosed(isClosed);
+			r.setRedirectURL(redirectURL);
+
+			r.setOwnerId(ownerId);
+
+			r.setWaitForRecording(waitForRecording);
+			r.setAllowRecording(allowRecording);
+			
+			r.setHideChat(hideChat);
+			r.setHideActivitiesAndActions(hideActivitiesAndActions);
+			r.setHideActionsMenu(hideActionsMenu);
+			r.setHideFilesExplorer(hideFilesExplorer);
+			r.setHideScreenSharing(hideScreenSharing);	
+			r.setHideWhiteboard(hideWhiteboard);
+			r.setShowMicrophoneStatus(showMicrophoneStatus);
+			r.setChatModerated(chatModerated);
+			r.setChatOpened(chatOpened);
+			r.setFilesOpened(filesOpened);
+			r.setAutoVideoSelect(autoVideoSelect);
+			r.setSipEnabled(sipEnabled);
+			r.setPin(conferencePin);
+			
+			r = roomDao.update(r, ownerId);
+
+			if (organisations != null) {
+				Long t = this.updateRoomOrganisations(organisations, r);
+				if (t == null) {
+					return null;
+				}
+			}
+
+			if (roomModerators != null) {
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, ownerId);
+			}
+
+			return r.getRooms_id();
+		} catch (Exception ex2) {
+			log.error("[addRoom] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * adds/check a new Record to the table rooms with external fields
+	 * 
+	 * @param name
+	 * @param roomtypes_id
+	 * @param comment
+	 * @param numberOfPartizipants
+	 * @param ispublic
+	 * @param organisations
+	 * @param appointment
+	 * @param isDemoRoom
+	 * @param demoTime
+	 * @param isModeratedRoom
+	 * @param roomModerators
+	 * @param externalRoomId
+	 * @param externalRoomType
+	 * @param allowUserQuestions
+	 * @param isAudioOnly
+	 * @param allowFontStyles
+	 * @param isClosed
+	 * @param redirectURL
+	 * @param waitForRecording
+	 * @param allowRecording
+	 * @param hideTopBar
+	 * @return id of (the newly created) room or NULL
+	 */
+	public Long addExternalRoom(String name, long roomtypes_id, String comment,
+			Long numberOfPartizipants, boolean ispublic, List<Integer> organisations,
+			Boolean appointment, Boolean isDemoRoom, Integer demoTime,
+			Boolean isModeratedRoom, List<Map<String, Object>> roomModerators,
+			Long externalRoomId, String externalRoomType,
+			Boolean allowUserQuestions, Boolean isAudioOnly, Boolean allowFontStyles, Boolean isClosed,
+			String redirectURL, Boolean waitForRecording,
+			boolean allowRecording, Boolean hideTopBar) {
+
+		log.debug("addExternalRoom");
+
+		try {
+			Room r = new Room();
+			r.setName(name);
+			r.setComment(comment);
+			r.setStarttime(new Date());
+			r.setNumberOfPartizipants(numberOfPartizipants);
+			r.setRoomtype(roomTypeDao.get(roomtypes_id));
+			r.setIspublic(ispublic);
+
+			r.setAllowUserQuestions(allowUserQuestions);
+			r.setIsAudioOnly(isAudioOnly);
+			r.setAllowFontStyles(allowFontStyles);
+
+			r.setAppointment(appointment);
+
+			r.setIsDemoRoom(isDemoRoom);
+			r.setDemoTime(demoTime);
+
+			r.setIsModeratedRoom(isModeratedRoom);
+
+			r.setDeleted(false);
+
+			r.setExternalRoomId(externalRoomId);
+			r.setExternalRoomType(externalRoomType);
+
+			r.setIsClosed(isClosed);
+			r.setRedirectURL(redirectURL);
+
+			r.setWaitForRecording(waitForRecording);
+			r.setAllowRecording(allowRecording);
+
+			r.setHideTopBar(hideTopBar);
+
+			r = em.merge(r);
+
+			long returnId = r.getRooms_id();
+
+			if (organisations != null) {
+				Long t = this.updateRoomOrganisations(organisations, r);
+				if (t == null) {
+					return null;
+				}
+			}
+
+			if (roomModerators != null) {
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, null);
+			}
+
+			return returnId;
+		} catch (Exception ex2) {
+			log.error("[addExternalRoom] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * adds a new record to the table rooms_organisation
+	 * 
+	 * @param rooms_id
+	 * @param organisation_id
+	 * @return the id of the newly created Rooms_Organisation or NULL
+	 */
+	public Long addRoomToOrganisation(long rooms_id,
+			long organisation_id) {
+		try {
+			RoomOrganisation rOrganisation = new RoomOrganisation();
+			rOrganisation.setRoom(roomDao.get(rooms_id));
+			log.debug("addRoomToOrganisation rooms '"
+					+ rOrganisation.getRoom().getName() + "'");
+			rOrganisation.setStarttime(new Date());
+			rOrganisation.setOrganisation(orgDao.get(organisation_id));
+			rOrganisation.setDeleted(false);
+
+			rOrganisation = em.merge(rOrganisation);
+			long returnId = rOrganisation.getRooms_organisation_id();
+			return returnId;
+		} catch (Exception ex2) {
+			log.error("[addRoomToOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param rooms_organisation_id
+	 * @return
+	 */
+	public RoomOrganisation getRoomsOrganisationById(
+			long rooms_organisation_id) {
+		try {
+			CriteriaBuilder cb = em.getCriteriaBuilder();
+			CriteriaQuery<RoomOrganisation> cq = cb
+					.createQuery(RoomOrganisation.class);
+			Root<RoomOrganisation> c = cq.from(RoomOrganisation.class);
+			Predicate condition = cb.equal(c.get("rooms_organisation_id"),
+					rooms_organisation_id);
+			cq.where(condition);
+			TypedQuery<RoomOrganisation> q = em.createQuery(cq);
+			List<RoomOrganisation> ll = q.getResultList();
+
+			if (ll.size() > 0) {
+				return ll.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("[getRoomsByOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * get List of Rooms_Organisation by organisation and roomtype
+	 * 
+	 * @param user_level
+	 * @param organisation_id
+	 * @param roomtypes_id
+	 * @return
+	 */
+	public List<RoomOrganisation> getRoomsOrganisationByOrganisationIdAndRoomType(long organisation_id, long roomtypes_id) {
+		try {
+			TypedQuery<RoomOrganisation> q = em.
+					createNamedQuery("getRoomsOrganisationByOrganisationIdAndRoomType", RoomOrganisation.class);
+			q.setParameter("roomtypes_id", roomtypes_id);
+			q.setParameter("organisation_id", organisation_id);
+			q.setParameter("deleted", true);
+			return q.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getRoomsByOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * Gets all rooms by an organisation
+	 * 
+	 * @param organisation_id
+	 * @return list of Rooms_Organisation with Rooms as Sub-Objects or null
+	 */
+	public List<RoomOrganisation> getRoomsOrganisationByOrganisationId(long organisation_id) {
+		try {
+			TypedQuery<RoomOrganisation> query = em.
+					createNamedQuery("getRoomsOrganisationByOrganisationId", RoomOrganisation.class);
+
+			query.setParameter("organisation_id", organisation_id);
+			query.setParameter("deleted", true);
+
+			List<RoomOrganisation> ll = query.getResultList();
+
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getPublicRoomsWithoutType] ", ex2);
+		}
+		return null;
+	}
+
+	public SearchResult<RoomOrganisation> getRoomsOrganisationsByOrganisationId(long organisation_id, int start, int max, String orderby,
+			boolean asc) {
+		try {
+			SearchResult<RoomOrganisation> sResult = new SearchResult<RoomOrganisation>();
+			sResult.setObjectName(RoomOrganisation.class.getName());
+			sResult.setRecords(this.selectMaxFromRoomsByOrganisation(
+					organisation_id).longValue());
+			sResult.setResult(getRoomsOrganisationByOrganisationId(organisation_id, start, max, orderby, asc));
+			return sResult;
+		} catch (Exception ex2) {
+			log.error("[getRoomsByOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	public Integer selectMaxFromRoomsByOrganisation(long organisation_id) {
+		try {
+			// get all users
+			TypedQuery<RoomOrganisation> q = em.createNamedQuery("selectMaxFromRoomsByOrganisation", RoomOrganisation.class);
+
+			q.setParameter("organisation_id", organisation_id);
+			q.setParameter("deleted", true);
+			List<RoomOrganisation> ll = q.getResultList();
+
+			return ll.size();
+		} catch (Exception ex2) {
+			log.error("[selectMaxFromRooms] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param organisation_id
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @param asc
+	 * @return
+	 */
+	private List<RoomOrganisation> getRoomsOrganisationByOrganisationId(
+			long organisation_id, int start, int max, String orderby,
+			boolean asc) {
+		try {
+			String hql = "select c from RoomOrganisation as c "
+					+ "where c.organisation.organisation_id = :organisation_id "
+					+ "AND c.deleted = false";
+			if (orderby.startsWith("c.")) {
+				hql += "ORDER BY " + orderby;
+			} else {
+				hql += "ORDER BY " + "c." + orderby;
+			}
+			if (asc) {
+				hql += " ASC";
+			} else {
+				hql += " DESC";
+			}
+
+			TypedQuery<RoomOrganisation> q = em.createQuery(hql, RoomOrganisation.class);
+
+			q.setParameter("organisation_id", organisation_id);
+			q.setFirstResult(start);
+			q.setMaxResults(max);
+			List<RoomOrganisation> ll = q.getResultList();
+
+			return ll;
+		} catch (Exception ex2) {
+			log.error("[getRoomsByOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	public RoomOrganisation getRoomsOrganisationByOrganisationIdAndRoomId(
+			long organisation_id, long rooms_id) {
+		try {
+			TypedQuery<RoomOrganisation> q = em.
+					createNamedQuery("getRoomsOrganisationByOrganisationIdAndRoomId", RoomOrganisation.class);
+
+			q.setParameter("rooms_id", rooms_id);
+			q.setParameter("organisation_id", organisation_id);
+			q.setParameter("deleted", true);
+			List<RoomOrganisation> ll = q.getResultList();
+
+			if (ll.size() > 0) {
+				return ll.get(0);
+			}
+		} catch (Exception ex2) {
+			log.error("[getRoomsOrganisationByOrganisationIdAndRoomId] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param organisation_id
+	 * @return
+	 */
+	public List<RoomOrganisation> getRoomsOrganisationByRoomsId(long rooms_id) {
+		try {
+			TypedQuery<RoomOrganisation> q = em.createNamedQuery("getRoomsOrganisationByRoomsId", RoomOrganisation.class);
+			q.setParameter("rooms_id", rooms_id);
+			q.setParameter("deleted", true);
+			return q.getResultList();
+		} catch (Exception ex2) {
+			log.error("[getRoomsByOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	public Long updateRoomInternal(long rooms_id, long roomtypes_id,
+			String name, boolean ispublic, String comment,
+			Long numberOfPartizipants, List<Integer> organisations,
+			Boolean appointment, Boolean isDemoRoom, Integer demoTime,
+			Boolean isModeratedRoom, List<Map<String, Object>> roomModerators,
+			Boolean allowUserQuestions, Boolean isAudioOnly, Boolean allowFontStyles, Boolean isClosed,
+			String redirectURL, String conferencePin,
+			Long ownerId, Boolean waitForRecording, boolean allowRecording,
+			Boolean hideTopBar, Boolean hideChat, Boolean hideActivitiesAndActions, Boolean hideFilesExplorer, 
+			Boolean hideActionsMenu, Boolean hideScreenSharing, Boolean hideWhiteboard, 
+			Boolean showMicrophoneStatus, Boolean chatModerated, boolean chatOpened, boolean filesOpened
+			, boolean autoVideoSelect, boolean sipEnabled) {
+		try {
+			log.debug("*** updateRoom numberOfPartizipants: "
+					+ numberOfPartizipants);
+			Room r = roomDao.get(rooms_id);
+			r.setComment(comment);
+
+			r.setIspublic(ispublic);
+			r.setNumberOfPartizipants(numberOfPartizipants);
+			r.setName(name);
+			r.setRoomtype(roomTypeDao.get(roomtypes_id));
+			r.setUpdatetime(new Date());
+			r.setAllowUserQuestions(allowUserQuestions);
+			r.setIsAudioOnly(isAudioOnly);
+			r.setAllowFontStyles(allowFontStyles);
+
+			r.setIsDemoRoom(isDemoRoom);
+			r.setDemoTime(demoTime);
+
+			r.setAppointment(appointment);
+
+			r.setIsModeratedRoom(isModeratedRoom);
+			r.setHideTopBar(hideTopBar);
+
+			r.setIsClosed(isClosed);
+			r.setRedirectURL(redirectURL);
+			r.setOwnerId(ownerId);
+			r.setWaitForRecording(waitForRecording);
+			r.setAllowRecording(allowRecording);
+			
+			r.setHideChat(hideChat);
+			r.setHideActivitiesAndActions(hideActivitiesAndActions);
+			r.setHideActionsMenu(hideActionsMenu);
+			r.setHideFilesExplorer(hideFilesExplorer);
+			r.setHideScreenSharing(hideScreenSharing);
+			r.setHideWhiteboard(hideWhiteboard);
+			r.setShowMicrophoneStatus(showMicrophoneStatus);
+			r.setChatModerated(chatModerated);
+			r.setChatOpened(chatOpened);
+			r.setFilesOpened(filesOpened);
+			r.setAutoVideoSelect(autoVideoSelect);
+			r.setPin(conferencePin);
+			r.setSipEnabled(sipEnabled);
+			r = roomDao.update(r, ownerId);
+
+			if (organisations != null) {
+				Long t = this.updateRoomOrganisations(organisations, r);
+				if (t == null) {
+					return null;
+				}
+			}
+			if (roomModerators != null) {
+				r.setModerators(getModerators(roomModerators, r.getRooms_id()));
+				r = roomDao.update(r, null);
+			}
+
+			return r.getRooms_id();
+		} catch (Exception ex2) {
+			log.error("[updateRoom] ", ex2);
+		}
+		return null;
+	}
+
+	@SuppressWarnings("rawtypes")
+	private boolean checkRoomAlreadyInOrg(Long orgid, List organisations)
+			throws Exception {
+		for (Iterator it = organisations.iterator(); it.hasNext();) {
+			RoomOrganisation rOrganisation = (RoomOrganisation) it.next();
+			if (rOrganisation.getOrganisation().getOrganisation_id()
+					.equals(orgid))
+				return true;
+		}
+		return false;
+	}
+
+	private boolean checkRoomShouldByDeleted(long orgId, List<Integer> organisations) throws Exception {
+		for (Iterator<Integer> it = organisations.iterator(); it.hasNext();) {
+			Integer key = it.next();
+			Long storedOrgId = key.longValue();
+			if (storedOrgId.equals(orgId))
+				return true;
+		}
+		return false;
+	}
+
+	private Long updateRoomOrganisations(List<Integer> organisations, Room room) throws Exception {
+		List<RoomOrganisation> roomOrganisations = getOrganisationsByRoom(room.getRooms_id());
+
+		List<Long> roomsToAdd = new LinkedList<Long>();
+		List<Long> roomsToDel = new LinkedList<Long>();
+
+		for (Iterator<Integer> it = organisations.iterator(); it.hasNext();) {
+			Integer key = it.next();
+			Long orgIdToAdd = key.longValue();
+			if (!this.checkRoomAlreadyInOrg(orgIdToAdd, roomOrganisations))
+				roomsToAdd.add(orgIdToAdd);
+		}
+
+		for (Iterator<RoomOrganisation> it = roomOrganisations.iterator(); it.hasNext();) {
+			RoomOrganisation rOrganisation = it.next();
+			Long orgIdToDel = rOrganisation.getOrganisation()
+					.getOrganisation_id();
+			if (!this.checkRoomShouldByDeleted(orgIdToDel, organisations))
+				roomsToDel.add(orgIdToDel);
+		}
+
+		// log.error("updateRoomOrganisations roomsToAdd: "+roomsToAdd.size());
+		// log.error("updateRoomOrganisations roomsToDel: "+roomsToDel.size());
+
+		for (Iterator<Long> it = roomsToAdd.iterator(); it.hasNext();) {
+			Long orgIdToAdd = it.next();
+			addRoomToOrganisation(room.getRooms_id(), orgIdToAdd);
+		}
+		for (Iterator<Long> it = roomsToDel.iterator(); it.hasNext();) {
+			Long orgToDel = it.next();
+			deleteRoomFromOrganisationByRoomAndOrganisation(room.getRooms_id(), orgToDel);
+		}
+
+		return new Long(1);
+	}
+
+	/**
+	 * delete all Rooms_Organisations and Room by a given room_id
+	 * 
+	 * @param rooms_id
+	 */
+	public Long deleteRoomById(long rooms_id) {
+		try {
+			deleteAllRoomsOrganisationOfRoom(rooms_id);
+			roomDao.delete(roomDao.get(rooms_id), -1L);
+			return rooms_id;
+		} catch (Exception ex2) {
+			log.error("[deleteRoomById] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * delete all Rooms_Organisation by a rooms_id
+	 * 
+	 * @param rooms_id
+	 */
+	@SuppressWarnings("rawtypes")
+	public void deleteAllRoomsOrganisationOfRoom(long rooms_id) {
+		try {
+			List ll = this.getRoomsOrganisationByRoomsId(rooms_id);
+			for (Iterator it = ll.iterator(); it.hasNext();) {
+				RoomOrganisation rOrg = (RoomOrganisation) it.next();
+				this.deleteRoomsOrganisation(rOrg);
+			}
+		} catch (Exception ex2) {
+			log.error("[deleteAllRoomsOrganisationOfRoom] ", ex2);
+		}
+	}
+
+	/**
+	 * Delete all room of a given Organisation
+	 * 
+	 * @param organisation_id
+	 */
+	public void deleteAllRoomsOrganisationOfOrganisation(long organisation_id) {
+		try {
+			for (RoomOrganisation rOrg : getRoomsOrganisationByOrganisationId(organisation_id)) {
+				this.deleteRoomsOrganisation(rOrg);
+			}
+		} catch (Exception ex2) {
+			log.error("[deleteAllRoomsOfOrganisation] ", ex2);
+		}
+	}
+
+	/**
+	 * Delete a Rooms_Organisation by its id
+	 * 
+	 * @param rooms_organisation_id
+	 */
+	public Long deleteRoomsOrganisationByID(long rooms_organisation_id) {
+		try {
+			RoomOrganisation rOrg = this
+					.getRoomsOrganisationById(rooms_organisation_id);
+			return this.deleteRoomsOrganisation(rOrg);
+		} catch (Exception ex2) {
+			log.error("[deleteRoomsOrganisationByID] ", ex2);
+		}
+		return null;
+	}
+
+	private Long deleteRoomFromOrganisationByRoomAndOrganisation(long rooms_id,
+			long organisation_id) {
+		try {
+			RoomOrganisation rOrganisation = this
+					.getRoomsOrganisationByOrganisationIdAndRoomId(
+							organisation_id, rooms_id);
+			return this.deleteRoomsOrganisation(rOrganisation);
+		} catch (Exception ex2) {
+			log.error("[deleteRoomFromOrganisationByRoomAndOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	/**
+	 * delete a Rooms_Organisation-Object
+	 * 
+	 * @param rOrg
+	 */
+	public Long deleteRoomsOrganisation(RoomOrganisation rOrg) {
+		try {
+			rOrg.setDeleted(true);
+			rOrg.setUpdatetime(new Date());
+			if (rOrg.getRooms_organisation_id() == null) {
+				em.persist(rOrg);
+			} else {
+				if (!em.contains(rOrg)) {
+					em.merge(rOrg);
+				}
+			}
+			return rOrg.getRooms_organisation_id();
+		} catch (Exception ex2) {
+			log.error("[deleteRoomsOrganisation] ", ex2);
+		}
+		return null;
+	}
+
+	// --------------------------------------------------------------------------------------------
+
+	public void closeRoom(Long rooms_id, Boolean status) {
+		try {
+
+			Room room = roomDao.get(rooms_id);
+
+			room.setIsClosed(status);
+
+			roomDao.update(room, -1L);
+
+		} catch (Exception e) {
+			log.error("Error updateRoomObject : ", e);
+		}
+	}
+
+	/**
+	 * Get a Rooms-Object or NULL
+	 * 
+	 * @param rooms_id
+	 * @return Rooms-Object or NULL
+	 */
+	public Room getRoomByOwnerAndTypeId(Long ownerId, Long roomtypesId, String roomName) {
+		try {
+
+			if (roomtypesId == null || roomtypesId == 0) {
+				return null;
+			}
+			log.debug("getRoomByOwnerAndTypeId : " + ownerId + " || " + roomtypesId);
+			Room room = null;
+			TypedQuery<Room> query = em.createNamedQuery("getRoomByOwnerAndTypeId", Room.class);
+			query.setParameter("ownerId", ownerId);
+			query.setParameter("roomtypesId", roomtypesId);
+			List<Room> ll = query.getResultList();
+			if (ll.size() > 0) {
+				room = ll.get(0);
+			}
+
+			if (room != null) {
+				return room;
+			} else {
+				log.debug("Could not find room " + ownerId + " || " + roomtypesId);
+				
+				Long rooms_id = addRoom(roomName, roomtypesId,
+						"My Rooms of ownerId " + ownerId,
+						(roomtypesId == 1) ? 25L : 150L, // numberOfPartizipants
+						false, // ispublic
+						null, // organisations
+						false, // appointment
+						false, // isDemoRoom
+						null, // demoTime
+						false, // isModeratedRoom
+						null, // roomModerators
+						true, // allowUserQuestions
+						false, // isAudioOnly
+						true, // allowFontStyle
+						false, // isClosed
+						"", // redirectURL
+						"", // conferencePin
+						ownerId, null,
+						true,  // allowRecording 
+						false, // hideTopBar
+						false, // hideChat
+						false, // hideActivitiesAndActions
+						false, // hideFilesExplorer
+						false, // hideActionsMenu
+						false, // hideScreenSharing 
+						false, // hideWhiteboard
+						false, //showMicrophoneStatus
+						false, // chatModerated
+						false, //chatOpened
+						false, //filesOpened
+						false, //autoVideoSelect
+						false //sipEnabled
+						);
+
+				if (rooms_id != null) {
+					return roomDao.get(rooms_id);
+				}
+			}
+		} catch (Exception ex2) {
+			log.error("[getRoomByOwnerAndTypeId] ", ex2);
+		}
+		return null;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/file/FileProcessor.java b/src/main/java/org/apache/openmeetings/data/file/FileProcessor.java
new file mode 100644
index 0000000..bf09ac0
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/file/FileProcessor.java
@@ -0,0 +1,182 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.file;
+
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.converter.FlvExplorerConverter;
+import org.apache.openmeetings.converter.GenerateImage;
+import org.apache.openmeetings.converter.GenerateThumbs;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.documents.GeneratePDF;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.util.crypt.MD5;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FileProcessor {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+
+	//Spring loaded Beans
+	@Autowired
+	private FlvExplorerConverter flvExplorerConverter;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+	@Autowired
+	private GenerateImage generateImage;
+	@Autowired
+	private GenerateThumbs generateThumbs;
+	@Autowired
+	private GeneratePDF generatePDF;
+
+	public ConverterProcessResultList processFile(Long userId, Long room_id, 
+			boolean isOwner, InputStream is, Long parentFolderId, String fileSystemName, 
+			Long externalFileId, String externalType) throws Exception {
+		
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
+		
+		int dotidx = fileSystemName.lastIndexOf('.');
+
+        // Generate a random string to prevent any problems with
+        // foreign characters and duplicates
+        Date d = new Date();
+        String newFileSystemName = MD5.do_checksum("FILE_" + d.getTime());
+
+        String newFileExtDot = fileSystemName.substring(dotidx, fileSystemName.length()).toLowerCase();
+        String newFileExt = newFileExtDot.substring(1);
+        log.debug("newFileExt: " + newFileExt);
+        StoredFile storedFile = new StoredFile(newFileSystemName, newFileExt); 
+
+        // Check variable to see if this file is a presentation
+        // check if this is a a file that can be converted by
+        // openoffice-service
+        boolean canBeConverted = storedFile.isConvertable();
+        boolean isPdf = storedFile.isPdf();
+        boolean isImage = storedFile.isImage();
+        boolean isChart = storedFile.isChart();
+        boolean isAsIs = storedFile.isAsIs();
+        boolean isVideo = storedFile.isVideo();
+
+        log.debug("isAsIs: " + isAsIs);
+
+        // add outputfolders for profiles
+        // if it is a presenation it will be copied to another place
+        if (!(canBeConverted || isPdf || isImage || isVideo || isAsIs)) {
+        	returnError.addItem("wrongType", new ConverterProcessResult("The file type cannot be converted"));
+            return returnError;
+        }
+
+        File completeName = new File(
+        	isAsIs ? OmFileHelper.getUploadFilesDir() : OmFileHelper.getUploadTempFilesDir()
+        	, newFileSystemName + newFileExtDot);
+        log.debug("writing file to: " + completeName);
+        FileHelper.copy(is, completeName);
+        is.close();
+
+        Long ownerId = null;
+        if (parentFolderId == -2) {
+            parentFolderId = 0L;
+            ownerId = userId;
+        }
+        if (isOwner) {
+            ownerId = userId;
+        }
+
+        String fileHashName = newFileSystemName + newFileExtDot;
+        Boolean isPresentation = false;
+        if (canBeConverted || isPdf) {
+            // In case of a presentation the hash is a folder-name
+            fileHashName = newFileSystemName;
+            isPresentation = true;
+        }
+        if (isImage) {
+            fileHashName = newFileSystemName + ".jpg";
+        }
+        if (isVideo) {
+            fileHashName = newFileSystemName + ".flv";
+        }
+
+        FileExplorerItem fileExplorerItem = fileExplorerItemDao.getFileExplorerItemsById(parentFolderId);
+
+        if (fileExplorerItem != null) {
+            if (fileExplorerItem.getIsFolder() == null
+                    || !fileExplorerItem.getIsFolder()) {
+                parentFolderId = 0L;
+            }
+        }
+
+        Long fileExplorerItemId = fileExplorerItemDao.add(
+                fileSystemName, fileHashName, // The Hashname of the file
+                parentFolderId, ownerId, room_id, userId, false, // isFolder
+                isImage, isPresentation, "", false, isChart, 
+                externalFileId, externalType);
+        log.debug("fileExplorerItemId: " + fileExplorerItemId);
+        
+        
+        
+        log.debug("canBeConverted: " + canBeConverted);
+        if (canBeConverted) {
+            // convert to pdf, thumbs, swf and xml-description
+            returnError = generatePDF.convertPDF(newFileSystemName, "files", true, completeName);
+        } else if (isPdf) {
+            // convert to thumbs, swf and xml-description
+            returnError = generatePDF.convertPDF(newFileSystemName, "files", false, completeName);
+        } else if (isChart) {
+            log.debug("uploaded chart file");
+        } else if (isImage && !isAsIs) {
+            // convert it to JPG
+            log.debug("##### convert it to JPG: ");
+            returnError = generateImage.convertImage(newFileSystemName, newFileExtDot, "files",
+                    newFileSystemName, false);
+        } else if (isAsIs) {
+        	ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
+            returnError.addItem("processThumb", processThumb);
+        } else if (isVideo) {
+        	List<ConverterProcessResult> returnList = flvExplorerConverter.startConversion(fileExplorerItemId, completeName.getCanonicalPath());
+        	
+        	int i=0;
+        	for (ConverterProcessResult returnMap : returnList) {
+        		returnError.addItem("processFLV "+i, returnMap);
+        	}
+        	
+        }
+        
+        // has to happen at the end, otherwise it will be overwritten
+        //cause the variable is new initialized
+        returnError.setCompleteName(completeName.getName());
+        returnError.setFileExplorerItemId(fileExplorerItemId);
+        
+		return returnError;
+		
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/data/file/FileUtils.java b/src/main/java/org/apache/openmeetings/data/file/FileUtils.java
new file mode 100644
index 0000000..930299d
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/file/FileUtils.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.file;
+
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FileUtils {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			FileProcessor.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+
+	public long getSizeOfDirectoryAndSubs(FileExplorerItem fileExplorerItem) {
+		try {
+
+			long fileSize = 0;
+
+			File base = OmFileHelper.getUploadFilesDir();
+			if (fileExplorerItem.getIsImage()) {
+
+				File tFile = new File(base, fileExplorerItem.getFileHash());
+				if (tFile.exists()) {
+					fileSize += tFile.length();
+				}
+
+				File thumbFile = new File(base, thumbImagePrefix + fileExplorerItem.getFileHash());
+				if (thumbFile.exists()) {
+					fileSize += thumbFile.length();
+				}
+
+			}
+
+			if (fileExplorerItem.getIsPresentation()) {
+
+				File tFolder = new File(base, fileExplorerItem.getFileHash());
+
+				if (tFolder.exists()) {
+					fileSize += OmFileHelper.getSize(tFolder);
+				}
+
+			}
+
+			log.debug("calling [1] FileExplorerItemDaoImpl.updateFileOrFolder()");
+			fileExplorerItemDao.updateFileOrFolder(fileExplorerItem);
+
+			FileExplorerItem[] childElements = fileExplorerItemDao
+					.getFileExplorerItemsByParent(fileExplorerItem
+							.getFileExplorerItemId());
+
+			for (FileExplorerItem childExplorerItem : childElements) {
+
+				fileSize += this.getSizeOfDirectoryAndSubs(childExplorerItem);
+
+			}
+
+			return fileSize;
+
+		} catch (Exception err) {
+			log.error("[getSizeOfDirectoryAndSubs] ", err);
+		}
+		return 0;
+	}
+
+	public void setFileToOwnerOrRoomByParent(FileExplorerItem fileExplorerItem,
+			Long users_id, Long room_id) {
+		try {
+
+			fileExplorerItem.setOwnerId(users_id);
+			fileExplorerItem.setRoom_id(room_id);
+
+			log.debug("calling [2] FileExplorerItemDaoImpl.updateFileOrFolder()");
+			fileExplorerItemDao.updateFileOrFolder(fileExplorerItem);
+
+			FileExplorerItem[] childElements = fileExplorerItemDao
+					.getFileExplorerItemsByParent(fileExplorerItem
+							.getFileExplorerItemId());
+
+			for (FileExplorerItem childExplorerItem : childElements) {
+
+				this.setFileToOwnerOrRoomByParent(childExplorerItem, users_id,
+						room_id);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[setFileToOwnerOrRoomByParent] ", err);
+		}
+	}
+
+	public String formatDate(Date date) {
+		SimpleDateFormat formatter;
+		String pattern = "dd/MM/yy H:mm:ss";
+		Locale locale = new Locale("en", "US");
+		formatter = new SimpleDateFormat(pattern, locale);
+		return formatter.format(date);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverterTask.java b/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverterTask.java
new file mode 100644
index 0000000..c6bb890
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvInterviewConverterTask.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.converter;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.apache.openmeetings.converter.FlvInterviewConverter;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.task.TaskExecutor;
+
+public class FlvInterviewConverterTask {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvInterviewConverterTask.class, webAppRootKey);
+
+	@Autowired
+	private TaskExecutor taskExecutor;
+	@Autowired
+	private FlvInterviewConverter flvInterviewConverter;
+
+	public void startConversionThread(final Long flvRecordingId) {
+		try {
+			log.debug("[-1-]" + taskExecutor);
+
+			taskExecutor.execute(new Runnable() {
+				public void run() {
+					flvInterviewConverter.startConversion(flvRecordingId);
+				}
+			});
+		} catch (Exception err) {
+			log.error("[startConversionThread]", err);
+		}
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverterTask.java b/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverterTask.java
new file mode 100644
index 0000000..05b85bd
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/converter/FlvRecorderConverterTask.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.converter;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.apache.openmeetings.converter.FlvRecorderConverter;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.task.TaskExecutor;
+
+public class FlvRecorderConverterTask {
+	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverterTask.class, webAppRootKey);
+
+	@Autowired
+	private TaskExecutor taskExecutor;
+	@Autowired
+	private FlvRecorderConverter flvRecorderConverter;
+
+	public void startConversionThread(final Long flvRecordingId) {
+		try {
+			log.debug("[-1-]" + taskExecutor);
+
+			taskExecutor.execute(new Runnable() {
+				public void run() {
+					flvRecorderConverter.startConversion(flvRecordingId);
+				}
+			});
+		} catch (Exception err) {
+			log.error("[startConversionThread]", err);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/listener/StreamListener.java b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/StreamListener.java
new file mode 100644
index 0000000..3c738b8
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/StreamListener.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.listener;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+
+import org.apache.openmeetings.data.flvrecord.listener.async.BaseStreamWriter;
+import org.apache.openmeetings.data.flvrecord.listener.async.CachedEvent;
+import org.apache.openmeetings.data.flvrecord.listener.async.StreamAudioWriter;
+import org.apache.openmeetings.data.flvrecord.listener.async.StreamVideoWriter;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.stream.IBroadcastStream;
+import org.red5.server.api.stream.IStreamListener;
+import org.red5.server.api.stream.IStreamPacket;
+import org.red5.server.net.rtmp.event.VideoData;
+import org.slf4j.Logger;
+
+public class StreamListener implements IStreamListener {
+	private static final Logger log = Red5LoggerFactory.getLogger(StreamListener.class, webAppRootKey);
+
+	private final BaseStreamWriter streamWriter;
+
+	public StreamListener(boolean isAudio, String streamName, IScope scope, Long metaDataId,
+			boolean isScreenData, boolean isInterview, FlvRecordingMetaDataDao metaDataDao
+			, FlvRecordingMetaDeltaDao metaDeltaDao) {
+		streamWriter = isAudio
+			? new StreamAudioWriter(streamName, scope, metaDataId, isScreenData, isInterview, metaDataDao, metaDeltaDao)
+			: new StreamVideoWriter(streamName, scope, metaDataId, isScreenData, isInterview, metaDataDao);
+	}
+
+	public void packetReceived(IBroadcastStream broadcastStream, IStreamPacket streampacket) {
+		try {
+			CachedEvent cachedEvent = new CachedEvent();
+			cachedEvent.setData(streampacket.getData().duplicate());
+			cachedEvent.setDataType(streampacket.getDataType());
+			cachedEvent.setTimestamp(streampacket.getTimestamp());
+			cachedEvent.setCurrentTime(new Date());
+			if (streampacket instanceof VideoData) {
+				cachedEvent.setFrameType(((VideoData) streampacket).getFrameType());
+			}
+
+			if (log.isTraceEnabled()) {
+				log.trace("##REC:: Packet recieved. type: {} frame type: {}", cachedEvent.getDataType(), cachedEvent.getFrameType());
+			}
+			streamWriter.append(cachedEvent);
+		} catch (Exception e) {
+			log.error("##REC:: [packetReceived]", e);
+		}
+	}
+
+	public void closeStream() {
+		streamWriter.stop();
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/BaseStreamWriter.java b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/BaseStreamWriter.java
new file mode 100644
index 0000000..1db384c
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/BaseStreamWriter.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.listener.async;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.io.IStreamableFile;
+import org.red5.io.ITagWriter;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.service.IStreamableFileService;
+import org.red5.server.api.stream.IStreamableFileFactory;
+import org.red5.server.stream.StreamableFileFactory;
+import org.red5.server.util.ScopeUtils;
+import org.slf4j.Logger;
+
+public abstract class BaseStreamWriter implements Runnable {
+	private static final Logger log = Red5LoggerFactory.getLogger(BaseStreamWriter.class, webAppRootKey);
+	private final static int MINUTE_MULTIPLIER = 60 * 1000;
+	public final static int TIME_TO_WAIT_FOR_FRAME = 15 * MINUTE_MULTIPLIER;
+	protected int startTimeStamp = -1;
+	protected long initialDelta = 0;
+
+	// thread is running
+	private boolean running = false;
+	// thread is stopped
+	private boolean stopping = false;
+	// thread will be stopped as soon as the queue is empty
+	private boolean dostopping = false;
+
+	protected ITagWriter writer = null;
+
+	protected Long metaDataId = null;
+
+	protected Date startedSessionTimeDate = null;
+
+	protected File file;
+
+	protected IScope scope;
+
+	protected boolean isScreenData = false;
+
+	protected String streamName = "";
+	protected final FlvRecordingMetaDataDao metaDataDao;
+	private final BlockingQueue<CachedEvent> queue = new LinkedBlockingQueue<CachedEvent>();
+
+	public BaseStreamWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData, FlvRecordingMetaDataDao metaDataDao) {
+		startedSessionTimeDate = new Date();
+		this.isScreenData = isScreenData;
+		this.streamName = streamName;
+		this.metaDataId = metaDataId;
+		this.metaDataDao = metaDataDao;
+		this.scope = scope;
+		try {
+			init();
+		} catch (IOException ex) {
+			log.error("##REC:: [BaseStreamWriter] Could not init Thread", ex);
+		}
+		FlvRecordingMetaData metaData = metaDataDao.get(metaDataId);
+		metaData.setStreamStatus(Status.STARTED);
+		metaDataDao.update(metaData);
+		
+		open();
+	}
+
+	/**
+	 * Initialization
+	 * 
+	 * @throws IOException
+	 *             I/O exception
+	 */
+	private void init() throws IOException {
+		file = new File(OmFileHelper.getStreamsSubDir(scope.getName()), streamName + ".flv");
+
+		IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils.getScopeService(scope, IStreamableFileFactory.class,
+				StreamableFileFactory.class);
+
+		if (!file.isFile()) {
+			// Maybe the (previously existing) file has been deleted
+			file.createNewFile();
+
+		} else if (!file.canWrite()) {
+			throw new IOException("The file is read-only");
+		}
+
+		IStreamableFileService service = factory.getService(file);
+		IStreamableFile flv = service.getStreamableFile(file);
+		writer = flv.getWriter();
+	}
+
+	private void open() {
+		running = true;
+		new Thread(this, "Recording " + file.getName()).start();
+	}
+
+	public void stop() {
+		dostopping = true;
+	}
+
+	public void run() {
+		log.debug("##REC:: stream writer started");
+		long lastPackedRecieved = System.currentTimeMillis() + TIME_TO_WAIT_FOR_FRAME;
+		long counter = 0;
+		while (!stopping) {
+			try {
+				CachedEvent item = queue.poll(100, TimeUnit.MICROSECONDS);
+				if (item != null) {
+					log.trace("##REC:: got packet"); 
+					lastPackedRecieved = System.currentTimeMillis();
+					if (dostopping) {
+						log.trace("metadatId: {} :: Recording stopped but still packets to write to file!", metaDataId);
+					}
+
+					packetReceived(item);
+				} else if (dostopping || lastPackedRecieved + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
+					log.debug(String.format("##REC:: none packets received for: %s minutes, exiting", (System.currentTimeMillis() - lastPackedRecieved) / MINUTE_MULTIPLIER)); 
+					stopping = true;
+					closeStream();
+				}
+				if (++counter % 5000 == 0) {
+					log.debug("##REC:: Stream writer is still listening:: " + file.getName());;
+				}
+			} catch (InterruptedException e) {
+				log.error("##REC:: [run]", e);
+			}
+		}
+		log.debug("##REC:: stream writer stopped");
+	}
+
+	/**
+	 * Write the actual packet data to the disk and do calculate any needed additional information
+	 * 
+	 * @param streampacket
+	 */
+	public abstract void packetReceived(CachedEvent streampacket);
+
+	protected abstract void internalCloseStream();
+	/**
+	 * called when the stream is finished written on the disk
+	 */
+	public void closeStream() {
+		try {
+			writer.close();
+		} catch (Exception err) {
+			log.error("[closeStream, close writer]", err);
+		}
+		internalCloseStream();
+		// Write the complete Bit to the meta data, the converter task will wait for this bit!
+		try {
+			FlvRecordingMetaData metaData = metaDataDao.get(metaDataId);
+			log.debug("##REC:: Stream Status was: {} has been written for: {}", metaData.getStreamStatus(), metaDataId);
+			metaData.setStreamStatus(Status.STOPPED);
+			metaDataDao.update(metaData);
+		} catch (Exception err) {
+			log.error("##REC:: [closeStream, complete Bit]", err);
+		}
+	}
+
+	public void append(CachedEvent streampacket) {
+		if (!running) {
+			throw new IllegalStateException("Append called before the Thread was started!");
+		}
+		try {
+			queue.put(streampacket);
+			log.trace("##REC:: Q put, successful: " + queue.size());
+		} catch (InterruptedException ignored) {
+			log.error("##REC:: [append]", ignored);
+		}
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/CachedEvent.java b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/CachedEvent.java
new file mode 100644
index 0000000..6e160dd
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/CachedEvent.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.listener.async;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.red5.server.api.stream.IStreamPacket;
+import org.red5.server.net.rtmp.event.VideoData.FrameType;
+
+public class CachedEvent implements IStreamPacket {
+	private byte dataType;
+	private int timestamp; //this is the timeStamp, showing the time elapsed since the microphone was turned on
+	private IoBuffer data;
+	private Date currentTime; //this is the actually current timeStamp when the packet with audio data did enter the server
+	private FrameType frameType = FrameType.UNKNOWN;
+
+	public Date getCurrentTime() {
+		return currentTime;
+	}
+
+	public void setCurrentTime(Date currentTime) {
+		this.currentTime = currentTime;
+	}
+
+	public void setDataType(byte dataType) {
+		this.dataType = dataType;
+	}
+
+	public void setTimestamp(int timestamp) {
+		this.timestamp = timestamp;
+	}
+
+	public void setData(IoBuffer data) {
+		this.data = data;
+	}
+
+	public byte getDataType() {
+		return dataType;
+	}
+
+	public int getTimestamp() {
+		return timestamp;
+	}
+
+	public IoBuffer getData() {
+		return data;
+	}
+
+	public FrameType getFrameType() {
+		return frameType;
+	}
+
+	public void setFrameType(FrameType frameType) {
+		this.frameType = frameType;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
new file mode 100644
index 0000000..cd2cbbf
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamAudioWriter.java
@@ -0,0 +1,228 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.listener.async;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.io.IoConstants.TYPE_AUDIO;
+import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta;
+import org.red5.io.ITag;
+import org.red5.io.flv.impl.Tag;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+
+public class StreamAudioWriter extends BaseStreamWriter {
+	private static final Logger log = Red5LoggerFactory.getLogger(StreamAudioWriter.class, webAppRootKey);
+
+	private int duration = 0;
+
+	private Integer lastTimeStamp = -1;
+	private Date lastcurrentTime = null;
+
+	private int lastStreamPacketTimeStamp = -1;
+
+	private long byteCount = 0;
+
+	// Autowire is not possible
+	protected final FlvRecordingMetaDeltaDao metaDeltaDao;
+
+	private boolean isInterview = false;
+
+	public StreamAudioWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
+			boolean isInterview, FlvRecordingMetaDataDao metaDataDao, FlvRecordingMetaDeltaDao metaDeltaDao) {
+		super(streamName, scope, metaDataId, isScreenData, metaDataDao);
+
+		this.metaDeltaDao = metaDeltaDao;
+		this.isInterview = isInterview;
+	}
+
+	@Override
+	public void packetReceived(CachedEvent streampacket) {
+		try {
+			// We only care about audio at this moment
+			if (isInterview || TYPE_AUDIO == streampacket.getDataType()) {
+				if (streampacket.getTimestamp() <= 0) {
+					log.warn("##REC:: Negative TimeStamp");
+					return;
+				}
+				// we should not skip audio data in case it is Audio only interview
+				if (isInterview && isScreenData && startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
+					//skip until keyframe
+					log.trace("##REC:: no KEYFRAME, skipping");
+					return;
+				}
+				IoBuffer data = streampacket.getData().asReadOnlyBuffer();
+				if (data.limit() == 0) {
+					log.trace("##REC:: data.limit() == 0 ");
+					return;
+				}
+
+				byteCount += data.limit();
+
+				lastcurrentTime = streampacket.getCurrentTime();
+				int timeStamp = streampacket.getTimestamp();
+				Date virtualTime = streampacket.getCurrentTime();
+
+				if (startTimeStamp == -1) {
+					// Calculate the delta between the initial start and the first audio-packet data
+
+					initialDelta = virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+					FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
+
+					metaDelta.setDeltaTime(initialDelta);
+					metaDelta.setFlvRecordingMetaDataId(metaDataId);
+					metaDelta.setTimeStamp(0);
+					metaDelta.setDebugStatus("INIT AUDIO");
+					metaDelta.setStartPadding(true);
+					metaDelta.setEndPadding(false);
+					metaDelta.setDataLengthPacket(data.limit());
+					metaDelta.setReceivedAudioDataLength(byteCount);
+					metaDelta.setStartTime(startedSessionTimeDate);
+					metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
+
+					Long deltaTimeStamp = virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+					metaDelta.setDuration(0);
+
+					Long missingTime = deltaTimeStamp - 0;
+
+					metaDelta.setMissingTime(missingTime);
+
+					metaDelta.setCurrentTime(virtualTime);
+					metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+					metaDelta.setStartTimeStamp(startTimeStamp);
+
+					metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
+
+					// That will be not bigger then long value
+					startTimeStamp = streampacket.getTimestamp();
+				
+					FlvRecordingMetaData metaData = metaDataDao.get(metaDataId);
+					metaData.setRecordStart(virtualTime);
+					metaDataDao.update(metaData);
+				}
+
+				lastStreamPacketTimeStamp = streampacket.getTimestamp();
+
+				timeStamp -= startTimeStamp;
+
+				// Offset at the beginning is calculated above
+				long deltaTime = lastTimeStamp == -1 ? 0 : timeStamp - lastTimeStamp;
+
+				Long preLastTimeStamp = Long.parseLong(lastTimeStamp.toString());
+
+				lastTimeStamp = timeStamp;
+
+				if (deltaTime > 75) {
+					FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
+
+					metaDelta.setDeltaTime(deltaTime);
+					metaDelta.setFlvRecordingMetaDataId(metaDataId);
+					metaDelta.setTimeStamp(timeStamp);
+					metaDelta.setDebugStatus("RUN AUDIO");
+					metaDelta.setStartPadding(false);
+					metaDelta.setLastTimeStamp(preLastTimeStamp);
+					metaDelta.setEndPadding(false);
+					metaDelta.setDataLengthPacket(data.limit());
+					metaDelta.setReceivedAudioDataLength(byteCount);
+					metaDelta.setStartTime(startedSessionTimeDate);
+					metaDelta.setPacketTimeStamp(streampacket.getTimestamp());
+
+					Date current_date = new Date();
+					Long deltaTimeStamp = current_date.getTime() - startedSessionTimeDate.getTime();
+
+					duration = Math.max(duration, timeStamp + writer.getOffset());
+					metaDelta.setDuration(duration);
+
+					Long missingTime = deltaTimeStamp - timeStamp;
+
+					metaDelta.setMissingTime(missingTime);
+
+					metaDelta.setCurrentTime(current_date);
+					metaDelta.setDeltaTimeStamp(deltaTimeStamp);
+					metaDelta.setStartTimeStamp(startTimeStamp);
+
+					metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
+				}
+
+				log.trace("##REC:: timeStamp :: " + timeStamp);
+				ITag tag = new Tag();
+				tag.setDataType(streampacket.getDataType());
+
+				// log.debug("data.limit() :: "+data.limit());
+				tag.setBodySize(data.limit());
+				tag.setTimestamp(timeStamp);
+				tag.setBody(data);
+
+				writer.writeTag(tag);
+
+			}
+		} catch (Exception e) {
+			log.error("##REC:: [packetReceived]", e);
+		}
+	}
+
+	@Override
+	protected void internalCloseStream() {
+		try {
+			// We do not add any End Padding or count the gaps for the
+			// Screen Data, cause there is no!
+
+			Date virtualTime = lastcurrentTime;
+			log.debug("##REC:: virtualTime: " + virtualTime);
+			log.debug("##REC:: startedSessionTimeDate: " + startedSessionTimeDate);
+
+			long deltaRecordingTime = virtualTime == null ? 0 : virtualTime.getTime() - startedSessionTimeDate.getTime();
+
+			log.debug("##REC:: lastTimeStamp :closeStream: " + lastTimeStamp);
+			log.debug("##REC:: lastStreamPacketTimeStamp :closeStream: " + lastStreamPacketTimeStamp);
+			log.debug("##REC:: deltaRecordingTime :closeStream: " + deltaRecordingTime);
+
+			long deltaTimePaddingEnd = deltaRecordingTime - lastTimeStamp - initialDelta;
+
+			log.debug("##REC:: deltaTimePaddingEnd :: " + deltaTimePaddingEnd);
+
+			FlvRecordingMetaDelta metaDelta = new FlvRecordingMetaDelta();
+
+			metaDelta.setDeltaTime(deltaTimePaddingEnd);
+			metaDelta.setFlvRecordingMetaDataId(metaDataId);
+			metaDelta.setTimeStamp(lastTimeStamp);
+			metaDelta.setDebugStatus("END AUDIO");
+			metaDelta.setStartPadding(false);
+			metaDelta.setEndPadding(true);
+			metaDelta.setDataLengthPacket(null);
+			metaDelta.setReceivedAudioDataLength(byteCount);
+			metaDelta.setStartTime(startedSessionTimeDate);
+			metaDelta.setCurrentTime(new Date());
+
+			metaDeltaDao.addFlvRecordingMetaDelta(metaDelta);
+		} catch (Exception err) {
+			log.error("##REC:: [internalCloseStream]", err);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
new file mode 100644
index 0000000..5a40eea
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.flvrecord.listener.async;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.server.net.rtmp.event.VideoData.FrameType.KEYFRAME;
+
+import java.util.Date;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.red5.io.ITag;
+import org.red5.io.flv.impl.Tag;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+
+public class StreamVideoWriter extends BaseStreamWriter {
+	private static final Logger log = Red5LoggerFactory.getLogger(StreamVideoWriter.class, webAppRootKey);
+	private Date startedSessionScreenTimeDate = null;
+
+	public StreamVideoWriter(String streamName, IScope scope, Long metaDataId, boolean isScreenData,
+			boolean isInterview, FlvRecordingMetaDataDao metaDataDao) {
+
+		super(streamName, scope, metaDataId, isScreenData, metaDataDao);
+	}
+
+	@Override
+	public void packetReceived(CachedEvent streampacket) {
+		try {
+			int timeStamp = streampacket.getTimestamp();
+			log.trace("incoming timeStamp :: " + timeStamp);
+			if (startTimeStamp == -1 && KEYFRAME != streampacket.getFrameType()) {
+				//skip until keyframe
+				log.trace("no KEYFRAME, skipping ::" + streampacket.getFrameType());
+				return;
+			}
+			if (timeStamp <= 0) {
+				log.warn("Negative TimeStamp");
+				return;
+			}
+			IoBuffer data = streampacket.getData().asReadOnlyBuffer();
+			if (data.limit() == 0) {
+				log.trace("Data.limit() == 0");
+				return;
+			}
+			Date virtualTime = streampacket.getCurrentTime();
+
+			if (startedSessionScreenTimeDate == null) {
+				startedSessionScreenTimeDate = virtualTime;
+
+				FlvRecordingMetaData metaData = metaDataDao.get(metaDataId);
+				metaData.setRecordStart(virtualTime);
+				metaDataDao.update(metaData);
+			}
+
+			if (startTimeStamp == -1) {
+				// That will be not bigger then long value
+				startTimeStamp = timeStamp;
+			}
+
+			timeStamp -= startTimeStamp;
+
+			log.trace("timeStamp :: " + timeStamp);
+			ITag tag = new Tag();
+			tag.setDataType(streampacket.getDataType());
+
+			tag.setBodySize(data.limit());
+			tag.setTimestamp(timeStamp);
+			tag.setBody(data);
+
+			writer.writeTag(tag);
+		} catch (Exception e) {
+			log.error("[packetReceived]", e);
+		}
+	}
+
+	@Override
+	protected void internalCloseStream() {
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/record/BatikMethods.java b/src/main/java/org/apache/openmeetings/data/record/BatikMethods.java
new file mode 100644
index 0000000..909fb6f
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/record/BatikMethods.java
@@ -0,0 +1,525 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.record;
+
+import java.awt.AlphaComposite;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.JTextArea;
+
+import org.apache.batik.dom.svg.SVGDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.geom.ArrowStyle;
+import org.apache.openmeetings.util.geom.GeomPoint;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class BatikMethods {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(BatikMethods.class, OpenmeetingsVariables.webAppRootKey);
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	public void paintTextByWidthHeight(SVGGraphics2D g2d, int x1, int y1, int width, int height,
+			String text, int style, int size, Color fontColor) throws Exception {
+
+		//String default_export_font = Configurationmanagement.getInstance().getConfKey(3,"default_export_font").getConf_value();
+		
+		this.drawTextByJTextArea(g2d, x1, y1, width, height, text, "Verdana", style, size, fontColor);
+
+	}
+	
+	public void _paintTextByWidthHeight(SVGGraphics2D g2d, int x1, int y1, int width, int height,
+			String text, int style, int size, Color fontColor) throws Exception {
+
+		String default_export_font = configurationDao.getConfValue("default_export_font", String.class, "");
+		
+		this.drawTextByString(g2d, x1, y1, width, height, text, default_export_font, style, size, fontColor);
+
+	}
+	
+	@SuppressWarnings("rawtypes")
+	public void drawPointsObject(Graphics2D g2d, List pointsList, Color lineColor, int size, 
+			double xObj, double yObj, float alpha) throws Exception {
+		
+		for (Iterator iter = pointsList.iterator();iter.hasNext();) {
+			List point = (List) iter.next();
+			
+//			log.debug("POINT FROM TO :" +
+//					Double.valueOf(point.get(1).toString()).doubleValue()+","+
+//					Double.valueOf(point.get(2).toString()).doubleValue()+","+ 
+//					Double.valueOf(point.get(3).toString()).doubleValue()+","+
+//					Double.valueOf(point.get(4).toString()).doubleValue());
+			
+			this.drawThickLine2DPaint(g2d, Double.valueOf(point.get(1).toString()).doubleValue(), 
+					Double.valueOf(point.get(2).toString()).doubleValue(), 
+					Double.valueOf(point.get(3).toString()).doubleValue(), 
+					Double.valueOf(point.get(4).toString()).doubleValue(),  
+					size, lineColor, xObj, yObj, alpha);
+		}
+		
+		
+	}
+	
+	public void drawLine(Graphics2D g2d, Double x1, Double y1, Double x2, Double y2, Color lineColor, int size, 
+			double xObj, double yObj, float alpha) throws Exception {
+		
+		this.drawThickLine2D(g2d, x1, y1, x2, y2,  
+				size, lineColor, xObj, yObj, alpha);
+		
+	}
+	
+	public void paintEllipse2D(Graphics2D g2d, double x, double y, double width, double height, 
+			Color linecoler, int thickness, Color fillColor, float alpha) throws Exception {
+		
+		g2d.setStroke(new BasicStroke(thickness, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+		
+		int[] rules = new int[8]; 
+		
+		//all possible Compositing Rules:
+		rules[0] = AlphaComposite.SRC_OVER;
+		rules[1] = AlphaComposite.DST_OVER;
+		rules[2] = AlphaComposite.CLEAR;
+		rules[3] = AlphaComposite.SRC;
+		rules[4] = AlphaComposite.SRC_IN;
+		rules[5] = AlphaComposite.DST_IN;
+		rules[6] = AlphaComposite.SRC_OUT;
+		rules[7] = AlphaComposite.DST_OUT;
+		
+		g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC,alpha));
+		
+        //int x, int y, int width, int height
+        
+        if (linecoler != null) {
+	        g2d.setPaint(linecoler);
+	        g2d.draw(new Ellipse2D.Double(x,y,width,height));
+        }
+        
+        if (fillColor != null) {
+        	g2d.setPaint(fillColor);
+            g2d.fill(new Ellipse2D.Double(x,y,width,height));
+        }
+        
+    }
+	
+	public void paintRect2D(Graphics2D g2d, double x, double y, double width, double height, 
+			Color linecoler, int thickness, Color fillColor, float alpha) throws Exception {
+		
+		g2d.setStroke(new BasicStroke(thickness, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+		
+		int[] rules = new int[8]; 
+		
+		//all possible Compositing Rules:
+		rules[0] = AlphaComposite.SRC_OVER;
+		rules[1] = AlphaComposite.DST_OVER;
+		rules[2] = AlphaComposite.CLEAR;
+		rules[3] = AlphaComposite.SRC;
+		rules[4] = AlphaComposite.SRC_IN;
+		rules[5] = AlphaComposite.DST_IN;
+		rules[6] = AlphaComposite.SRC_OUT;
+		rules[7] = AlphaComposite.DST_OUT;
+		
+		g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC,alpha));
+		
+        //int x, int y, int width, int height
+        
+        if (linecoler != null) {
+	        g2d.setPaint(linecoler);
+	        g2d.draw(new Rectangle2D.Double(x,y,width,height));
+        }
+        
+        if (fillColor != null) {
+        	g2d.setPaint(fillColor);
+            g2d.fill(new Rectangle2D.Double(x,y,width,height));
+        }
+        
+    }
+	
+	public void paintRect(Graphics2D g2d, int x, int y, int width, int height, 
+			Color linecoler, int thickness, Color fillColor) throws Exception {
+		
+		//int x, int y, int width, int height
+        //g2d.fill(new Rectangle(x,y,width,height));
+        
+        g2d.setStroke(new BasicStroke(thickness));
+        
+        if (linecoler != null) {
+	        g2d.setPaint(linecoler);
+	        g2d.drawRect(x, y, width, height);
+        }
+        
+        if (fillColor != null) {
+        	g2d.setPaint(fillColor);
+	        g2d.fillRect(x, y, width, height);
+        }
+        
+    }
+	
+	public void paintLine(Graphics2D g2d, int x1, int y1, int x2, int y2, Color col) throws Exception {
+		g2d.setPaint(col);
+		g2d.drawLine(x1, y1, x2, y2);
+	}
+	
+	public void drawThickLine2DPaint(Graphics2D g2d, double x1, double y1, double x2, double y2, 
+			int width, Color c, double xObj, double yObj, float alpha) throws Exception {
+		g2d.setPaint(c);
+		
+		int[] rules = new int[8]; 
+		
+		//all possible Compositing Rules:
+		rules[0] = AlphaComposite.SRC_OVER;
+		rules[1] = AlphaComposite.DST_OVER;
+		rules[2] = AlphaComposite.CLEAR;
+		rules[3] = AlphaComposite.SRC;
+		rules[4] = AlphaComposite.SRC_IN;
+		rules[5] = AlphaComposite.DST_IN;
+		rules[6] = AlphaComposite.SRC_OUT;
+		rules[7] = AlphaComposite.DST_OUT;
+		
+		g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC,alpha));
+		g2d.setStroke(new BasicStroke(width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
+		Line2D line = new Line2D.Double(x1, y1, x2, y2);
+	    g2d.draw(line);
+	}
+
+	
+	public void drawThickLine2D(Graphics2D g2d, double x1, double y1, double x2, double y2, 
+			int width, Color c, double xObj, double yObj, float alpha) throws Exception {
+		g2d.setPaint(c);
+		
+		int[] rules = new int[8]; 
+		
+		//all possible Compositing Rules:
+		rules[0] = AlphaComposite.SRC_OVER;
+		rules[1] = AlphaComposite.DST_OVER;
+		rules[2] = AlphaComposite.CLEAR;
+		rules[3] = AlphaComposite.SRC;
+		rules[4] = AlphaComposite.SRC_IN;
+		rules[5] = AlphaComposite.DST_IN;
+		rules[6] = AlphaComposite.SRC_OUT;
+		rules[7] = AlphaComposite.DST_OUT;
+		
+		g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC,alpha));
+		g2d.setStroke(new BasicStroke(width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
+		Line2D line = new Line2D.Double(x1+xObj, y1+yObj, x2+xObj, y2+yObj);
+	    g2d.draw(line);
+	}
+
+	public void drawThickLine(Graphics2D g2d, int x1, int y1, int x2, int y2, int width, Color c) throws Exception {
+		g2d.setPaint(c);
+		g2d.setStroke(new BasicStroke(width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
+	    g2d.drawLine(x1, y1, x2, y2);
+	}	
+	
+	public void paintTextByWidthHeightAndDocument(SVGGraphics2D g2d, int x1, int y1, int width, int height,
+			String text, int style, int size, Color fontColor, Document document) throws Exception {
+
+		// String default_export_font =
+		// Configurationmanagement.getInstance().getConfKey("default_export_font").getConf_value();
+		
+		this.drawText(g2d, x1, y1, width, height, text, "Verdana", style, size, fontColor, document);
+
+	}
+
+	public void drawText(SVGGraphics2D g2d, int x, int y, int width, int height, 
+			String text, String default_export_font, int style, int size, Color fontColor,
+			Document document) throws Exception {
+		
+//		g2d.setClip(x, y, width, height);
+//		g2d.setColor(Color.black);
+//		g2d.drawString(text, x, y+20);
+		
+		String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
+
+		// Get the root element (the 'svg' element).
+		Element svgRoot = document.getDocumentElement();
+
+		log.debug("svgNS DEBUG: "+svgNS);
+		
+		//Element textElement = g2d.getDOMFactory().createElementNS(svgNS,"text");
+		Element rectangle = document.createElementNS(svgNS, "rect");
+		rectangle.setAttributeNS(svgNS, "x", "10");
+		rectangle.setAttributeNS(svgNS, "y", "20");
+		rectangle.setAttributeNS(svgNS, "width", "100");
+		rectangle.setAttributeNS(svgNS, "height", "50");
+		rectangle.setAttributeNS(svgNS, "fill", "red");
+
+		// Attach the rectangle to the root 'svg' element.
+		svgRoot.appendChild(rectangle);
+
+
+	}
+	
+	public void drawTextByString(SVGGraphics2D g2d, int x, int y, int width, int height, 
+			String text, String default_export_font, int style, int size, Color fontColor) throws Exception {
+		
+		//g2d.setClip(x, y, width, height);
+		g2d.setColor(Color.black);
+		g2d.drawString(text, x, y);
+		
+		
+	}
+
+	public void drawTextByJTextArea(Graphics2D g2d, int x, int y, int width, int height, 
+			String text, String default_export_font, int style, int size, Color fontColor) throws Exception {
+		
+//		g2d.setClip(x, y, width, height);
+//		g2d.setColor(Color.black);
+//		g2d.drawString(text, x, y+20);
+		
+		//Font font = new Font("Verdana", Font.PLAIN, 11);
+		Font font = new Font(default_export_font, style, size);
+
+		String[] stringsText = text.split("\r");
+		//log.debug("TEXT: "+stringsText);
+		//log.debug("TEXT: "+stringsText.length);
+		
+		String newText = "";
+		
+		for (int i=0;i<stringsText.length;i++) {
+			newText += stringsText[i];
+			if (i+1<stringsText.length) {
+				newText += "\n";
+			}
+		}
+		
+		JTextArea n = new JTextArea( newText );
+		n.setFont(font);
+		n.setWrapStyleWord( true );
+		n.setLineWrap( true );
+		n.setForeground( fontColor );
+		
+		//log.debug("Text at: "+x+" "+y);
+			//int x, int y, int width, int height
+		n.setBounds( x, y , width, height );
+		n.setOpaque( false );
+		
+		//Text
+		SVGGraphics2D svgGenerator2 = (SVGGraphics2D) g2d.create(x, y, width, height);
+
+		//svgGenerator2.create(x, y, width, height);
+		//svgGenerator2.draw(.dra)
+		n.paint( svgGenerator2 );
+		
+	}
+	
+
+	public void drawArrow(SVGGraphics2D g2d,
+			GeomPoint start, GeomPoint end, float thickness, float alpha,
+			Color linecoler, Color fillColor) {
+		
+		if (start.equals(end)) return;
+		
+		
+//		(double edgeControlPosition, double edgeControlSize,
+//				double headLength, double headWidth, double shaftControlPosition,
+//				double shaftControlSize, float shaftPosition, double shaftThickness)
+		ArrowStyle arrowStyle = new ArrowStyle(0.5, 0.5, thickness*5, 
+				thickness*5, 0.5, 0.5, 0, thickness);
+		
+		GeomPoint fullVect = end.subtract(start);
+		double halfWidth = (arrowStyle.headWidth != -1) ? arrowStyle.headWidth/2 : arrowStyle.headLength/2; 
+		
+		//Figure out the line start/end points
+		GeomPoint startNorm = new GeomPoint();
+		startNorm.setLocation(fullVect.getY(),-fullVect.getX());
+		startNorm.normalize(arrowStyle.shaftThickness/2);
+		GeomPoint start1 = start.add(startNorm);
+		GeomPoint start2 = start.subtract(startNorm);
+		GeomPoint end1 = end.add(startNorm);
+		GeomPoint end2 = end.subtract(startNorm);
+				
+		//log.debug("startNorm: "+startNorm.toString());
+        //log.debug("start1: "+start1.toString());
+        //log.debug("start2: "+start2.toString());
+        //log.debug("end1: "+end1.toString());
+        //log.debug("end2: "+end2.toString());
+		
+		//figure out where the arrow head starts
+		GeomPoint headPnt = fullVect.clone();
+		//log.debug("headPnt 1: "+headPnt.toString());
+		//log.debug("headPnt.length 1: "+headPnt.length());
+		//log.debug("arrowStyle.headLength 1: "+arrowStyle.headLength);
+		headPnt.normalize(headPnt.length()-arrowStyle.headLength);
+		//log.debug("headPnt 2: "+headPnt.toString());
+		headPnt = headPnt.add(start);
+		//log.debug("headPnt 3: "+headPnt.toString());
+		
+		//calculate the arrowhead corners
+		GeomPoint headPntNorm = startNorm.clone();
+		//log.debug("headPntNorm ^^: "+headPntNorm.toString());
+		//log.debug("halfWidth ^^: "+halfWidth);
+		headPntNorm.normalize(halfWidth);
+		//log.debug("headPntNorm: "+headPntNorm.toString());
+		GeomPoint edge1 = headPnt.add(headPntNorm);
+		GeomPoint edge2 = headPnt.subtract(headPntNorm);
+		
+		//log.debug("edge1: "+edge1.toString());
+        //log.debug("edge2: "+edge2.toString());
+		
+		//Figure out where the arrow connects the the shaft, then calc the intersections
+		GeomPoint shaftCenter = GeomPoint.interpolate(end,headPnt,arrowStyle.shaftPosition);
+		//log.debug("end"+end.toString());
+		//log.debug("headPnt: "+headPnt.toString());
+		//log.debug("arrowStyle.shaftPosition: "+arrowStyle.shaftPosition);
+		//log.debug("shaftCenter: "+shaftCenter);
+		//log.debug("edge1: "+edge1);
+		//shaftCenter.setLocation(185.857864376269, 185.857864376269);
+		GeomPoint inter1 = GeomPoint.getLineIntersection(start1,end1,shaftCenter,edge1);
+		GeomPoint inter2 = GeomPoint.getLineIntersection(start2,end2,shaftCenter,edge2);
+		
+		//log.debug("inter1: "+inter1.toString());
+        //log.debug("inter2: "+inter2.toString());
+		
+		//Figure out the control points
+		GeomPoint edgeCenter = GeomPoint.interpolate(end,headPnt,(float) arrowStyle.edgeControlPosition);
+		GeomPoint edgeNorm = startNorm.clone();
+		edgeNorm.normalize(halfWidth*arrowStyle.edgeControlSize);
+		//log.debug("halfWidth*arrowStyle.edgeControlSize: "+(halfWidth*arrowStyle.edgeControlSize));
+		//log.debug("edgeNorm: "+edgeNorm.toString());
+		GeomPoint edgeCntrl1 = edgeCenter.add(edgeNorm);
+		GeomPoint edgeCntrl2 = edgeCenter.subtract(edgeNorm);
+		
+		//log.debug("edgeCntrl1: "+edgeCntrl1.toString());
+        //log.debug("edgeCntrl2: "+edgeCntrl2.toString());
+
+		g2d.setPaint(new Color(255,0,0));
+		
+//		graphics.moveTo(start1.x,start1.y);
+//		graphics.lineTo(inter1.x,inter1.y);
+//		graphics.lineTo(edge1.x,edge1.y);
+//		graphics.curveTo(edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+//		graphics.curveTo(edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+//		graphics.lineTo(inter2.x,inter2.y);
+//		graphics.lineTo(start2.x,start2.y);
+//		graphics.lineTo(start1.x,start1.y);
+		
+//		log.debug("moveTo"+start1.x+","+start1.y);
+//		log.debug("lineTo"+inter1.x+","+inter1.y);
+//		log.debug("lineTo"+edge1.x+","+edge1.y);
+//		log.debug("quadTo"+edgeCntrl1.x+","+edgeCntrl1.y+","+end.x+","+end.y);
+//		log.debug("quadTo"+edgeCntrl2.x+","+edgeCntrl2.y+","+edge2.x+","+edge2.y);
+//		log.debug("lineTo"+inter2.x+","+inter2.y);
+//		log.debug("lineTo"+start2.x+","+start2.y);
+//		log.debug("lineTo"+start1.x+","+start1.y);
+		
+		GeneralPath graphics = new GeneralPath();
+		graphics.moveTo(start1.x,start1.y);
+		graphics.lineTo(inter1.x,inter1.y);
+		graphics.lineTo(edge1.x,edge1.y);
+		graphics.quadTo(edgeCntrl1.x,edgeCntrl1.y,end.x,end.y);
+		graphics.quadTo(edgeCntrl2.x,edgeCntrl2.y,edge2.x,edge2.y);
+		graphics.lineTo(inter2.x,inter2.y);
+		graphics.lineTo(start2.x,start2.y);
+		graphics.lineTo(start1.x,start1.y);
+		graphics.closePath();
+		
+		int[] rules = new int[8]; 
+		
+		//all possible Compositing Rules:
+		rules[0] = AlphaComposite.SRC_OVER;
+		rules[1] = AlphaComposite.DST_OVER;
+		rules[2] = AlphaComposite.CLEAR;
+		rules[3] = AlphaComposite.SRC;
+		rules[4] = AlphaComposite.SRC_IN;
+		rules[5] = AlphaComposite.DST_IN;
+		rules[6] = AlphaComposite.SRC_OUT;
+		rules[7] = AlphaComposite.DST_OUT;
+		
+		g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC,alpha));
+		g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
+		
+		if (linecoler != null) {
+	        g2d.setPaint(linecoler);
+	        g2d.draw(graphics);
+        }
+        
+        if (fillColor != null) {
+        	g2d.setPaint(fillColor);
+	        g2d.fill(graphics);
+        }
+        
+	}
+	
+
+	
+	
+	
+	
+	
+	public String workAroundPixelErrorInSVG(String xmlDef) throws Exception {
+		String resultingString = "";
+        
+        boolean byPassedFirst = false;
+        
+        while (xmlDef.indexOf("font-size:") != -1) {
+        	
+        	log.debug("xmlDef "+xmlDef);
+        	int i = xmlDef.indexOf("font-size:");
+        	
+        	log.debug("Found i "+i);
+        	if (byPassedFirst) {
+        		log.debug("byPassedFirst DO PROCESS ");
+	        	String start = xmlDef.substring(0, i+10);
+	        	xmlDef = xmlDef.substring(i+10, xmlDef.length());
+	        	log.debug("byPassedFirst FIRST PART Process "+start);
+	        	log.debug("byPassedFirst END PART Process "+xmlDef);
+	        	
+	        	int firstSemicolon = xmlDef.indexOf(";");
+	        	log.debug("firstSemicolon "+firstSemicolon);
+	        	String fontSize = xmlDef.substring(0, firstSemicolon);
+	        	log.debug("fontSize "+fontSize);
+	        	
+	        	xmlDef = xmlDef.substring(firstSemicolon, xmlDef.length());
+	        	
+	        	resultingString += start + fontSize + "px";
+        	} else {
+        		log.debug("byPassedFirst DO NOT PROCESS ");
+        		String start = xmlDef.substring(0, i+10);
+        		log.debug("byPassedFirst FIRST PART "+start);
+        		xmlDef = xmlDef.substring(i+10, xmlDef.length());
+        		log.debug("byPassedFirst END PART "+xmlDef);
+        		resultingString += start;
+        		byPassedFirst = true;
+        	}
+        }
+        
+        resultingString += xmlDef;
+        
+        log.debug("###################### ");
+        log.debug("resultingString "+resultingString);
+        
+        return resultingString;
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/data/record/WhiteboardMapToSVG.java b/src/main/java/org/apache/openmeetings/data/record/WhiteboardMapToSVG.java
new file mode 100644
index 0000000..080ee8e
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/record/WhiteboardMapToSVG.java
@@ -0,0 +1,305 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.record;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Image;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.imageio.ImageIO;
+
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.geom.GeomPoint;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class WhiteboardMapToSVG extends BatikMethods {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardMapToSVG.class, OpenmeetingsVariables.webAppRootKey);
+
+	private WhiteboardMapToSVG() {
+	}
+
+	private static WhiteboardMapToSVG instance = null;
+
+	public static synchronized WhiteboardMapToSVG getInstance() {
+		if (instance == null) {
+			instance = new WhiteboardMapToSVG();
+		}
+
+		return instance;
+	}
+	
+	@SuppressWarnings("rawtypes")
+	public SVGGraphics2D convertMapToSVG(SVGGraphics2D svgGenerator, List whiteBoardMap) throws Exception {
+		
+		//log.debug("convertMapToSVG: "+whiteBoardMap.size());
+		
+        for (Iterator iter = whiteBoardMap.iterator();iter.hasNext();) {
+        	
+        	List graphObject = (List) iter.next();
+        	
+        	String graphType = graphObject.get(0).toString();
+        	
+        	//log.debug("graphType: "+graphType);
+        	
+        	if (graphType.equals("paint")) {
+        		
+        		List pointsList = (List) graphObject.get(1);
+        		
+        		Integer lineWidth = Integer.valueOf(graphObject.get(3).toString()).intValue();
+        		Integer col = Integer.valueOf(graphObject.get(4).toString()).intValue();
+        		
+        		Float alpha = Float.valueOf(graphObject.get(5).toString()).floatValue();
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		
+        		//log.debug("x,y,width,height: "+x+","+y+","+width+","+height);
+        		
+        		//Draw a Painting
+    	        SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+    	        //SVGGraphics2D svgGenerator2 = new SVGGraphics2D(document);
+    	         
+    	        log.debug("pointsList: "+pointsList);
+    	        this.drawPointsObject(svgGenerator_temp, pointsList, new Color(col), lineWidth, x, y, alpha);
+    	        
+        	} else if (graphType.equals("rectangle")) {
+        		
+        		/*actionObject[0] = 'rectangle';
+		        actionObject[1] = stroke;
+		        actionObject[2] = line;
+		        actionObject[3] = fill;
+		        actionObject[4] = strokeDis;
+		        actionObject[5] = fillDis;
+		        actionObject[6] = this.currentrectangleOpacity;*/
+        		
+        		Integer lineWidth = Integer.valueOf(graphObject.get(2).toString()).intValue();
+        		
+        		Integer stroke = Integer.valueOf(graphObject.get(1).toString()).intValue();
+        		Integer strokeDis= Integer.valueOf(graphObject.get(4).toString()).intValue();
+        		
+        		Color strokeColor = null;
+        		if (strokeDis != -1) {
+        			strokeColor = new Color(stroke);
+        		}
+        		
+        		Integer fill = Integer.valueOf(graphObject.get(3).toString()).intValue();
+        		Integer fillDis= Integer.valueOf(graphObject.get(5).toString()).intValue();
+        		
+        		Color fillColor = null;
+        		if (fillDis != -1) {
+        			fillColor = new Color(fill);
+        		}
+        		
+        		Float alpha = Float.valueOf(graphObject.get(6).toString()).floatValue();
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		Double width = Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
+        		Double height = Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
+        	
+        		SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+        		this.paintRect2D(svgGenerator_temp, x, y, width, height, strokeColor, lineWidth, fillColor, alpha);
+        		
+        	} else if (graphType.equals("ellipse")) {
+        		
+        		Integer lineWidth = Integer.valueOf(graphObject.get(2).toString()).intValue();
+        		
+        		Integer stroke = Integer.valueOf(graphObject.get(1).toString()).intValue();
+        		Integer strokeDis= Integer.valueOf(graphObject.get(4).toString()).intValue();
+        		
+        		Color strokeColor = null;
+        		if (strokeDis != -1) {
+        			strokeColor = new Color(stroke);
+        		}
+        		
+        		Integer fill = Integer.valueOf(graphObject.get(3).toString()).intValue();
+        		Integer fillDis= Integer.valueOf(graphObject.get(5).toString()).intValue();
+        		
+        		Color fillColor = null;
+        		if (fillDis != -1) {
+        			fillColor = new Color(fill);
+        		}
+        		
+        		Float alpha = Float.valueOf(graphObject.get(6).toString()).floatValue();
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		Double width = Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
+        		Double height = Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
+        	
+        		SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+        		this.paintEllipse2D(svgGenerator_temp, x, y, width, height, strokeColor, lineWidth, fillColor, alpha);
+        		
+        	} else if (graphType.equals("letter")) {
+        		
+        		String text = graphObject.get(1).toString();
+        		Color fontColor = new Color (Integer.valueOf(graphObject.get(2).toString()).intValue());
+        		Integer fontSize = Integer.valueOf(graphObject.get(3).toString()).intValue();
+        		
+        		String fontStyle = graphObject.get(4).toString();
+        		Integer style = null;
+        		if (fontStyle.equals("plain")) {
+        			style = Font.PLAIN;
+        		} else if (fontStyle.equals("bold")) {
+        			style = Font.BOLD;
+        		} else if (fontStyle.equals("italic")) {
+        			style = Font.ITALIC;
+        		} else if (fontStyle.equals("bolditalic")) {
+        			style = Font.ITALIC+Font.BOLD;
+        		}
+        		
+        		log.debug("fontStyle,style "+style+" fs: "+fontStyle);
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		Double width = Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
+        		Double height = Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
+        		
+        		SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+        		this.paintTextByWidthHeight(svgGenerator_temp, (int) Math.round(x), (int) Math.round(y), (int) Math.round(width), 
+        					(int) Math.round(height), text, style, fontSize, fontColor);
+        		
+        	} else if (graphType.equals("drawarrow")) {
+        		
+        		Integer thickness = Integer.valueOf(graphObject.get(2).toString()).intValue();
+        		
+        		Integer stroke = Integer.valueOf(graphObject.get(1).toString()).intValue();
+        		Integer strokeDis= Integer.valueOf(graphObject.get(4).toString()).intValue();
+        		
+        		Color strokeColor = null;
+        		if (strokeDis != -1) {
+        			strokeColor = new Color(stroke);
+        		}
+        		
+        		Integer fill = Integer.valueOf(graphObject.get(3).toString()).intValue();
+        		Integer fillDis= Integer.valueOf(graphObject.get(5).toString()).intValue();
+        		
+        		Color fillColor = null;
+        		if (fillDis != -1) {
+        			fillColor = new Color(fill);
+        		}
+        		
+        		Float alpha = Float.valueOf(graphObject.get(6).toString()).floatValue();
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		//Double width = Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
+        		//Double height = Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
+        		
+        		Double x1 = Double.valueOf(graphObject.get(7).toString()).doubleValue();
+        		Double y1 = Double.valueOf(graphObject.get(8).toString()).doubleValue();
+        		Double x2 = Double.valueOf(graphObject.get(9).toString()).doubleValue();
+        		Double y2 = Double.valueOf(graphObject.get(10).toString()).doubleValue();
+        		
+        		GeomPoint start = new GeomPoint();
+    	        start.setLocation(x+x1,y+y1);
+    	        GeomPoint end = new GeomPoint();
+    	        end.setLocation(x+x2,y+y2);
+    	        
+    	        SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+    	        this.drawArrow(svgGenerator_temp, start, end, thickness, alpha, strokeColor,fillColor);
+        	} else if (graphType.equals("image")) {
+        		
+        		//log.debug("graphObject image "+graphObject);
+        		//log.debug("",graphObject);
+        		
+        		String room = graphObject.get(6).toString();
+        		String parentPath = graphObject.get(5).toString();
+        		String fileItemName = graphObject.get(3).toString();
+        		
+        		File imageFile = new File(OmFileHelper.getUploadDir(), room);
+        		
+        		if (parentPath.length() > 1) {
+        			imageFile = new File(imageFile, parentPath);
+        		}
+        		
+        		//log.debug("fileItemName: "+fileItemName);
+        		
+        		File myFile = new File(imageFile, fileItemName);
+        		
+        		if (myFile.exists() && myFile.canRead()) {
+        			
+        			Image myImage = ImageIO.read(myFile);
+        			
+        			int x = (int) Math.round(Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue());
+        			int y = (int) Math.round(Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue());
+        			int width = (int) Math.round(Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue());
+        			int height = (int) Math.round(Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue());
+	        		
+	        		SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+	        		svgGenerator_temp.drawImage(myImage, x, y, width, height, null);
+        			
+        		} else {
+        			log.error("tried to inculde a non existing File into SVG/Image Export Path: " + myFile);
+        		}
+        		
+        	} else if(graphType.equals("line") || graphType.equals("uline")) {
+        		
+//        		actionObject[0] = 'line';
+//                actionObject[1] = stroke;
+//                actionObject[2] = line;
+//                actionObject[3] = opacity;
+//                actionObject[4] = x1  
+//                actionObject[5] = y1;  
+//                actionObject[6] = x2;    
+//                actionObject[7] = y2;    
+//                actionObject[8] = this.counter; 
+//                actionObject[9] = x;
+//                actionObject[10] = y;
+//                actionObject[11] = width;
+//                actionObject[12] = height;  
+//                actionObject[13] = newName;
+        		
+    			Integer lineWidth = Integer.valueOf(graphObject.get(2).toString()).intValue();
+        		
+        		Integer stroke = Integer.valueOf(graphObject.get(1).toString()).intValue();
+        		Color strokeColor = new Color(stroke);
+        		
+        		Float alpha = Float.valueOf(graphObject.get(3).toString()).floatValue();
+        		
+        		Double x = Double.valueOf(graphObject.get(graphObject.size()-5).toString()).doubleValue();
+        		Double y = Double.valueOf(graphObject.get(graphObject.size()-4).toString()).doubleValue();
+        		//Double width = Double.valueOf(graphObject.get(graphObject.size()-3).toString()).doubleValue();
+        		//Double height = Double.valueOf(graphObject.get(graphObject.size()-2).toString()).doubleValue();
+
+        		Double x1 = Double.valueOf(graphObject.get(4).toString()).doubleValue();
+        		Double y1 = Double.valueOf(graphObject.get(5).toString()).doubleValue();
+        		Double x2 = Double.valueOf(graphObject.get(6).toString()).doubleValue();
+        		Double y2 = Double.valueOf(graphObject.get(7).toString()).doubleValue();
+        		
+        		SVGGraphics2D svgGenerator_temp = new SVGGraphics2D(svgGenerator);
+        		this.drawLine(svgGenerator_temp, x1, y1, x2, y2, strokeColor, lineWidth, x, y, alpha);
+        		
+        	} else {
+        		log.error("tried to include a non supported Graph-Object graphType: "+graphType);
+        	}
+        	
+        }
+        
+        return svgGenerator;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/user/EmailManager.java b/src/main/java/org/apache/openmeetings/data/user/EmailManager.java
new file mode 100644
index 0000000..b8d08fa
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/user/EmailManager.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.user;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.mail.template.FeedbackTemplate;
+import org.apache.openmeetings.web.mail.template.RegisterUserTemplate;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @author swagner
+ *
+ */
+public class EmailManager {
+	private static final Logger log = Red5LoggerFactory.getLogger(EmailManager.class, webAppRootKey);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private MailHandler mailHandler;
+
+	/**
+	 * sends a mail adress to the user with his account data
+	 * 
+	 * @param username
+	 * @param userpass
+	 * @param email
+	 * @return
+	 * @throws Exception
+	 */
+	public String sendMail(String username, String userpass, String email, String link, Boolean sendEmailWithVerficationCode) {
+		log.debug("sendMail:: username = {}, email = {}", username, email);
+		Integer sendEmailAtRegister = configurationDao.getConfValue("sendEmailAtRegister", Integer.class, "0");
+
+		if (sendEmailAtRegister == 1) {
+			mailHandler.send(email, WebSession.getString(512)
+				, RegisterUserTemplate.getEmail(username, userpass, email, sendEmailWithVerficationCode ? link : null));
+		}
+		return "success";
+	}
+
+	//FIXME, seems to be not used
+	public void sendFeedback(String username, String email, String message) {
+		mailHandler.send("user@openmeetings.apache.org", WebSession.getString(499), FeedbackTemplate.getEmail(username, email, message));
+	}
+	
+	public String addEmailCon(String EMail, int CONTACT_ID) {
+		String succ = "invalid email";
+		return succ;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/user/UserManager.java b/src/main/java/org/apache/openmeetings/data/user/UserManager.java
new file mode 100644
index 0000000..cb57254
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/user/UserManager.java
@@ -0,0 +1,528 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.user;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.TimeZone;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.Userdata;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.DaoHelper;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+@Transactional
+public class UserManager implements IUserManager {
+	private static final Logger log = Red5LoggerFactory.getLogger(UserManager.class, webAppRootKey);
+
+	@PersistenceContext
+	private EntityManager em;
+
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private StateDao statemanagement;
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private OrganisationUserDao orgUserDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private EmailManager emailManagement;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private MailHandler mailHandler;
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	public SearchResult<User> getAllUserByRange(String search, int start, int max,
+			String orderby, boolean asc) {
+		try {
+			SearchResult<User> sresult = new SearchResult<User>();
+			sresult.setObjectName(User.class.getName());
+			sresult.setRecords(usersDao.count(search));
+
+			String sort = null;
+			if (orderby != null && orderby.length() > 0) {
+				sort = orderby;
+			}
+			if (asc) {
+				sort += " ASC ";
+			} else {
+				sort += " DESC ";
+			}
+			String hql = DaoHelper.getSearchQuery("User", "u", search, true, false, sort, UserDao.searchFields);
+
+			log.debug("Show HQL: " + hql);
+
+			TypedQuery<User> query = em.createQuery(hql, User.class);
+			// query.setParameter("macomUserId", userId);
+
+			// query
+			// if (asc) ((Criteria) query).addOrder(Order.asc(orderby));
+			// else ((Criteria) query).addOrder(Order.desc(orderby));
+			query.setFirstResult(start);
+			query.setMaxResults(max);
+			List<User> ll = query.getResultList();
+
+			sresult.setResult(ll);
+
+			return sresult;
+
+		} catch (Exception ex2) {
+			log.error("[getAllUserByRange] ", ex2);
+			ex2.printStackTrace();
+		}
+		return null;
+	}
+
+	public User loginUserByRemoteHash(String SID, String remoteHash) {
+		try {
+
+			Sessiondata sessionData = sessiondataDao
+					.getSessionByHash(remoteHash);
+
+			if (sessionData != null) {
+
+				User u = usersDao.get(sessionData.getUser_id());
+
+				sessiondataDao.updateUserWithoutSession(SID, u.getUser_id());
+
+				return u;
+			}
+
+		} catch (Exception ex2) {
+			log.error("[loginUserByRemoteHash]: ", ex2);
+		}
+		return null;
+	}
+
+	public Long logout(String SID, long USER_ID) {
+		sessiondataDao.updateUser(SID, 0, false, null);
+		return new Long(-12);
+	}
+
+	public List<Userdata> getUserdataDashBoard(Long user_id) {
+		if (user_id.longValue() > 0) {
+			try {
+				TypedQuery<Userdata> query = em
+						.createQuery("select c from Userdata as c where c.user_id = :user_id AND c.deleted <> :deleted", Userdata.class);
+				query.setParameter("user_id", user_id.longValue());
+				query.setParameter("deleted", true);
+				List<Userdata> ll = query.getResultList();
+				return ll;
+			} catch (Exception ex2) {
+				log.error("getUserdataDashBoard", ex2);
+			}
+		}
+		return null;
+	}
+
+	public Userdata getUserdataByKey(Long user_id, String DATA_KEY) {
+		Userdata userdata = new Userdata();
+		if (user_id.longValue() > 0) {
+			try {
+				TypedQuery<Userdata> query = em
+						.createQuery("select c from Userdata as c where c.user_id = :user_id AND c.data_key = :data_key AND c.deleted <> :deleted", Userdata.class);
+				query.setParameter("user_id", user_id.longValue());
+				query.setParameter("data_key", DATA_KEY);
+				query.setParameter("deleted", true);
+				for (Iterator<Userdata> it2 = query.getResultList().iterator(); it2
+						.hasNext();) {
+					userdata = it2.next();
+				}
+			} catch (Exception ex2) {
+				log.error("getUserdataByKey", ex2);
+			}
+		} else {
+			userdata.setComment("Error: No USER_ID given");
+		}
+		return userdata;
+	}
+
+	public String updateUserdata(int DATA_ID, long USER_ID, String DATA_KEY,
+			String DATA, String Comment) {
+		String res = "Fehler beim Update";
+		try {
+			String hqlUpdate = "update userdata set DATA_KEY= :DATA_KEY, USER_ID = :USER_ID, DATA = :DATA, updatetime = :updatetime, comment = :Comment where DATA_ID= :DATA_ID";
+			int updatedEntities = em.createQuery(hqlUpdate)
+					.setParameter("DATA_KEY", DATA_KEY)
+					.setParameter("USER_ID", USER_ID)
+					.setParameter("DATA", DATA)
+					.setParameter("updatetime", new Long(-1))
+					.setParameter("Comment", Comment)
+					.setParameter("DATA_ID", DATA_ID).executeUpdate();
+			res = "Success" + updatedEntities;
+		} catch (Exception ex2) {
+			log.error("updateUserdata", ex2);
+		}
+		return res;
+	}
+
+	public String updateUserdataByKey(Long USER_ID, String DATA_KEY,
+			String DATA, String Comment) {
+		String res = "Fehler beim Update";
+		try {
+			String hqlUpdate = "UPDATE Userdata set data = :data, updatetime = :updatetime, "
+					+ "comment = :comment where user_id= :user_id AND data_key = :data_key";
+			int updatedEntities = em.createQuery(hqlUpdate)
+					.setParameter("data", DATA)
+					.setParameter("updatetime", new Long(-1))
+					.setParameter("comment", Comment)
+					.setParameter("user_id", USER_ID.longValue())
+					.setParameter("data_key", DATA_KEY).executeUpdate();
+			res = "Success" + updatedEntities;
+		} catch (Exception ex2) {
+			log.error("updateUserdataByKey", ex2);
+		}
+		return res;
+	}
+
+	public String addUserdata(long USER_ID, String DATA_KEY, String DATA,
+			String Comment) {
+		String ret = "Fehler beim speichern der Userdata";
+		Userdata userdata = new Userdata();
+		userdata.setData_key(DATA_KEY);
+		userdata.setData(DATA);
+		userdata.setStarttime(new Date());
+		userdata.setUpdatetime(null);
+		userdata.setComment(Comment);
+		userdata.setUser_id(new Long(USER_ID));
+		userdata.setDeleted(false);
+		try {
+			userdata = em.merge(userdata);
+			ret = "success";
+		} catch (Exception ex2) {
+			log.error("addUserdata", ex2);
+		}
+		return ret;
+	}
+
+	/**
+	 * Method to register a new User, User will automatically be added to the
+	 * default user_level(1) new users will be automatically added to the
+	 * Organisation with the id specified in the configuration value
+	 * default_domain_id
+	 * 
+	 * @param user_level
+	 * @param availible
+	 * @param status
+	 * @param login
+	 * @param Userpass
+	 * @param lastname
+	 * @param firstname
+	 * @param email
+	 * @param age
+	 * @param street
+	 * @param additionalname
+	 * @param fax
+	 * @param zip
+	 * @param states_id
+	 * @param town
+	 * @param language_id
+	 * @return
+	 */
+	public Long registerUser(String login, String Userpass, String lastname,
+			String firstname, String email, Date age, String street,
+			String additionalname, String fax, String zip, long states_id,
+			String town, long language_id, String phone, boolean sendSMS, boolean generateSipUserData, String jNameTimeZone) {
+		
+		String baseURL = configurationDao.getBaseUrl();
+		boolean sendConfirmation = baseURL != null
+				&& !baseURL.isEmpty()
+				&& 1 == configurationDao.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
+		
+		return registerUser(login, Userpass, lastname, firstname, email, age,
+				street, additionalname, fax, zip, states_id, town, language_id,
+				phone, sendSMS, generateSipUserData, jNameTimeZone, sendConfirmation);
+	}
+
+	public Long registerUserNoEmail(String login, String Userpass,
+			String lastname, String firstname, String email, Date age,
+			String street, String additionalname, String fax, String zip,
+			long states_id, String town, long language_id, String phone, boolean sendSMS, 
+			boolean generateSipUserData, String jNameTimeZone) {
+		
+		return registerUser(login, Userpass, lastname, firstname, email, age,
+				street, additionalname, fax, zip, states_id, town, language_id,
+				phone, sendSMS, generateSipUserData, jNameTimeZone, false);
+	}
+
+	private Long registerUser(String login, String Userpass, String lastname,
+			String firstname, String email, Date age, String street,
+			String additionalname, String fax, String zip, long states_id,
+			String town, long language_id, String phone, boolean sendSMS,
+			boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation) {
+		try {
+			// Checks if FrontEndUsers can register
+			if ("1".equals(configurationDao.getConfValue(CONFIG_SOAP_REGISTER_KEY, String.class, "0"))) {
+				
+				// TODO: Read and generate SIP-Data via RPC-Interface Issue 1098
+
+				Long user_id = registerUserInit(UserDao.getDefaultRights(), login,
+						Userpass, lastname, firstname, email, age, street,
+						additionalname, fax, zip, states_id, town, language_id,
+						true, Arrays.asList(configurationDao.getConfValue("default_domain_id", Long.class, null)), phone,
+						sendSMS, sendConfirmation, timezoneUtil.getTimeZone(jNameTimeZone), false, "", "", false, true, null);
+
+				if (user_id > 0 && sendConfirmation) {
+					return new Long(-40);
+				}
+
+				return user_id;
+			}
+		} catch (Exception e) {
+			log.error("[registerUser]", e);
+		}
+		return null;
+	}
+
+	/**
+	 * @param user_level
+	 * @param availible
+	 * @param status
+	 * @param login
+	 * @param password
+	 * @param lastname
+	 * @param firstname
+	 * @param email
+	 * @param age
+	 * @param street
+	 * @param additionalname
+	 * @param fax
+	 * @param zip
+	 * @param states_id
+	 * @param town
+	 * @param language_id
+	 * @param sendWelcomeMessage
+	 * @param organisations
+	 * @param phone
+	 * @param sendSMS
+	 * @param sendConfirmation
+	 * @param timezone
+	 * @param forceTimeZoneCheck
+	 * @param userOffers
+	 * @param userSearchs
+	 * @param showContactData
+	 * @param showContactDataToContacts
+	 * @return new users_id OR null if an exception, -1 if an error, -4 if mail
+	 *         already taken, -5 if username already taken, -3 if login or pass
+	 *         or mail is empty
+	 * @throws Exception
+	 */
+	public Long registerUserInit(Set<Right> rights, String login, String password, String lastname,
+			String firstname, String email, Date age, String street,
+			String additionalname, String fax, String zip, long states_id,
+			String town, long language_id, boolean sendWelcomeMessage,
+			List<Long> organisations, String phone, boolean sendSMS, Boolean sendConfirmation,
+			TimeZone timezone, Boolean forceTimeZoneCheck,
+			String userOffers, String userSearchs, Boolean showContactData,
+			Boolean showContactDataToContacts, String activatedHash) throws Exception {
+		// TODO: make phone number persistent
+		// Check for required data
+		if (login.length() >= getMinLoginLength(configurationDao)) {
+			// Check for duplicates
+			boolean checkName = usersDao.checkUserLogin(login, null);
+			boolean checkEmail = usersDao.checkUserEMail(email, null);
+			if (checkName && checkEmail) {
+
+				String link = configurationDao.getBaseUrl();
+				String hash = activatedHash;
+				if (hash == null){
+					hash = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(login
+							+ CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
+				}
+				link += "activate?u=" + hash;
+
+				if (sendWelcomeMessage && email.length() != 0) {
+					String sendMail = emailManagement.sendMail(login,
+							password, email, link, sendConfirmation);
+					if (!sendMail.equals("success"))
+						return new Long(-19);
+				}
+				Address adr =  usersDao.getAddress(street, zip, town, states_id, additionalname, fax, phone, email);
+
+				// If this user needs first to click his E-Mail verification
+				// code then set the status to 0
+				if (sendConfirmation && rights.contains(Right.Login)) {
+					rights.remove(Right.Login);
+				}
+
+				List<Organisation_Users> orgList = new ArrayList<Organisation_Users>();
+				for (Long id : organisations) {
+					orgList.add(new Organisation_Users(orgDao.get(id)));
+				}
+				User u = usersDao.addUser(rights, firstname, login, lastname, language_id,
+						password, adr, sendSMS, age, hash, timezone,
+						forceTimeZoneCheck, userOffers, userSearchs, showContactData,
+						showContactDataToContacts, null, null, orgList, null);
+				if (u == null) {
+					return -111L;
+				}
+				log.debug("Added user-Id " + u.getUser_id());
+
+				/*
+				 * Long adress_emails_id =
+				 * emailManagement.registerEmail(email, address_id,""); if
+				 * (adress_emails_id==null) { return new Long(-112); }
+				 */
+
+				if (adr.getAdresses_id() > 0 && u.getUser_id() > 0) {
+					return u.getUser_id();
+				} else {
+					return -16L;
+				}
+			} else {
+				if (!checkName) {
+					return -15L;
+				} else if (!checkEmail) {
+					return -17L;
+				}
+			}
+		}
+		return -1L;
+	}
+
+	/**
+	 * @param admin
+	 * @param room_id
+	 * @return
+	 */
+	public Boolean kickUserByStreamId(String SID, Long room_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			// admins only
+			if (AuthLevelUtil.hasAdminLevel(usersDao.getRights(users_id))) {
+
+				sessiondataDao.clearSessionByRoomId(room_id);
+
+				for (Client rcl : sessionManager.getClientListByRoom(room_id)) {
+					if (rcl == null) {
+						return true;
+					}
+					String scopeName = "hibernate";
+					if (rcl.getRoom_id() != null) {
+						scopeName = rcl.getRoom_id().toString();
+					}
+					IScope currentScope = scopeApplicationAdapter
+							.getRoomScope(scopeName);
+					scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
+
+					HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
+					messageObj.put(0, "kick");
+					scopeApplicationAdapter.sendMessageById(messageObj,
+							rcl.getStreamid(), currentScope);
+
+				}
+
+				return true;
+			}
+
+		} catch (Exception err) {
+			log.error("[kickUserByStreamId]", err);
+		}
+		return null;
+	}
+
+	public Boolean kickUserByPublicSID(String SID, String publicSID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			// admins only
+			if (AuthLevelUtil.hasWebServiceLevel(usersDao.getRights(users_id))) {
+
+				Client rcl = sessionManager
+						.getClientByPublicSID(publicSID, false, null);
+
+				if (rcl == null) {
+					return true;
+				}
+
+				String scopeName = "hibernate";
+				if (rcl.getRoom_id() != null) {
+					scopeName = rcl.getRoom_id().toString();
+				}
+				IScope currentScope = scopeApplicationAdapter
+						.getRoomScope(scopeName);
+
+				HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
+				messageObj.put(0, "kick");
+				scopeApplicationAdapter.sendMessageById(messageObj,
+						rcl.getStreamid(), currentScope);
+
+				scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
+
+				return true;
+			}
+
+		} catch (Exception err) {
+			log.error("[kickUserByStreamId]", err);
+		}
+		return null;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/whiteboard/EmoticonsManager.java b/src/main/java/org/apache/openmeetings/data/whiteboard/EmoticonsManager.java
new file mode 100644
index 0000000..ecda7f9
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/whiteboard/EmoticonsManager.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.whiteboard;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.LinkedList;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.stringhandlers.ChatString;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+/**
+ * Load the list of available emoticons from the XML file and store them in
+ * memory to load faster, {@link #loadEmot()} is only called once: during server
+ * startup
+ * 
+ * @author sebawagner
+ * 
+ */
+public class EmoticonsManager {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(EmoticonsManager.class, OpenmeetingsVariables.webAppRootKey);
+	
+	private LinkedList<LinkedList<String>> emotfilesList = new LinkedList<LinkedList<String>>();
+
+	@SuppressWarnings("unchecked")
+	public void loadEmot(){
+		try {
+			XStream xStream = new XStream(new XppDriver());
+			xStream.setMode(XStream.NO_REFERENCES);
+			BufferedReader reader = new BufferedReader(new FileReader(new File(OmFileHelper.getPublicEmotionsDir(), "emotes.xml")));
+		    String xmlString = "";
+		    while (reader.ready()) {
+		    	xmlString += reader.readLine();
+		    }
+		    reader.close();
+		    emotfilesList = ChatString.replaceAllRegExp((LinkedList<LinkedList<String>>) xStream.fromXML(xmlString));
+		    
+		    log.debug("##### loadEmot completed");
+		    
+		} catch (Exception err) {
+			log.error("[loadEmot]",err);
+		}
+	}
+	
+	public synchronized LinkedList<LinkedList<String>> getEmotfilesList() {
+		return emotfilesList;
+	}
+	
+	public synchronized void setEmotfilesList(LinkedList<LinkedList<String>> emotfilesListNew) {
+		emotfilesList = emotfilesListNew;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectListManagerById.java b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectListManagerById.java
new file mode 100644
index 0000000..ee9c8ad
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectListManagerById.java
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.whiteboard;
+
+import java.util.HashMap;
+
+import org.apache.openmeetings.db.dto.room.WhiteboardObject;
+import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
+
+/**
+ * Memory based cache, configured as singleton in spring configuration
+ * 
+ * @author sebawagner
+ *
+ */
+public class WhiteBoardObjectListManagerById {
+	
+	private HashMap<Long,WhiteboardObjectList> whiteBoardObjectList = new HashMap<Long,WhiteboardObjectList>();
+	
+	private Long whiteboardId = 0L;
+	
+	public Long getNewWhiteboardId(Long room_id) throws Exception {
+		whiteboardId++;
+		this.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id, new WhiteboardObject(), whiteboardId);
+		return whiteboardId;
+	}
+	
+	/*
+	 * Room items a Whiteboard
+	 */
+	public synchronized WhiteboardObjectList getWhiteBoardObjectListByRoomId(Long room_id){
+		WhiteboardObjectList whiteboardObjectList = whiteBoardObjectList.get(room_id);
+		if (whiteboardObjectList == null) {
+			whiteboardObjectList = new WhiteboardObjectList();
+		}
+		return whiteboardObjectList;
+	}
+	
+	public synchronized WhiteboardObject getWhiteBoardObjectListByRoomIdAndWhiteboard(Long room_id, Long whiteBoardId){
+		WhiteboardObjectList whiteboardObjectList = whiteBoardObjectList.get(room_id);
+		if (whiteboardObjectList == null) {
+			whiteboardObjectList = new WhiteboardObjectList();
+		}
+		WhiteboardObject whiteboardObjects = whiteboardObjectList.getWhiteboardObjects().get(whiteBoardId);
+		if (whiteboardObjects == null) {
+			whiteboardObjects = new WhiteboardObject();
+		}
+		return whiteboardObjects;
+	}
+	
+	/*
+	 * Whiteboard Object List
+	 * 
+	 */
+	
+	public synchronized void setWhiteBoardObjectListRoomObj(Long room_id, WhiteboardObjectList whiteboardObjectList){
+		whiteBoardObjectList.put(room_id, whiteboardObjectList);
+	}
+	
+	public synchronized void setWhiteBoardObjectListRoomObjAndWhiteboardId(Long room_id, WhiteboardObject whiteboardObjects, Long whiteBoardId){
+		WhiteboardObjectList whiteboardObjectList = whiteBoardObjectList.get(room_id);
+		if (whiteboardObjectList == null) {
+			whiteboardObjectList = new WhiteboardObjectList();
+			whiteboardObjectList.setRoom_id(room_id);
+		}
+		whiteboardObjects.setWhiteBoardId(whiteBoardId);
+		whiteboardObjectList.getWhiteboardObjects().put(whiteBoardId, whiteboardObjects);
+		whiteBoardObjectList.put(room_id, whiteboardObjectList);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectSyncManager.java b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectSyncManager.java
new file mode 100644
index 0000000..2f3e38c
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteBoardObjectSyncManager.java
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.whiteboard;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Memory based, configured as singleton in spring configuration
+ * 
+ * @author sebawagner
+ *
+ */
+public class WhiteBoardObjectSyncManager {
+
+	private HashMap<Long, Map<String, WhiteboardSyncLockObject>> whiteBoardSyncList = new HashMap<Long, Map<String, WhiteboardSyncLockObject>>();
+
+	private HashMap<Long, Map<String, Map<String, WhiteboardSyncLockObject>>> whiteBoardObjectSyncList = new HashMap<Long, Map<String, Map<String, WhiteboardSyncLockObject>>>();
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			WhiteBoardObjectSyncManager.class,
+			OpenmeetingsVariables.webAppRootKey);
+
+	/*
+	 * Initial Sync Process
+	 */
+	public synchronized void setWhiteBoardSyncListByRoomid(Long room_id,
+			Map<String, WhiteboardSyncLockObject> mapObject) {
+		whiteBoardSyncList.put(room_id, mapObject);
+	}
+
+	public synchronized Map<String, WhiteboardSyncLockObject> getWhiteBoardSyncListByRoomid(
+			Long room_id) {
+		Map<String, WhiteboardSyncLockObject> roomList = whiteBoardSyncList
+				.get(room_id);
+		if (roomList == null) {
+			roomList = new HashMap<String, WhiteboardSyncLockObject>();
+		}
+		return roomList;
+	}
+
+	/*
+	 * Image Sync Process
+	 */
+	public synchronized void setWhiteBoardImagesSyncListByRoomid(Long room_id,
+			Map<String, Map<String, WhiteboardSyncLockObject>> mapObject) {
+		whiteBoardObjectSyncList.put(room_id, mapObject);
+	}
+
+	public synchronized void setWhiteBoardImagesSyncListByRoomAndObjectId(
+			Long room_id, String object_id,
+			Map<String, WhiteboardSyncLockObject> imageSyncList) {
+		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = whiteBoardObjectSyncList
+				.get(room_id);
+		if (roomList == null) {
+			roomList = new HashMap<String, Map<String, WhiteboardSyncLockObject>>();
+		}
+		if (imageSyncList.size() == 0) {
+			roomList.remove(object_id);
+		} else {
+			roomList.put(object_id, imageSyncList);
+		}
+		setWhiteBoardImagesSyncListByRoomid(room_id, roomList);
+	}
+
+	public synchronized Map<String, Map<String, WhiteboardSyncLockObject>> getWhiteBoardObjectSyncListByRoomid(
+			Long room_id) {
+		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = whiteBoardObjectSyncList
+				.get(room_id);
+		if (roomList == null) {
+			roomList = new HashMap<String, Map<String, WhiteboardSyncLockObject>>();
+		}
+		return roomList;
+	}
+
+	public synchronized Map<String, WhiteboardSyncLockObject> getWhiteBoardObjectSyncListByRoomAndObjectId(
+			Long room_id, String object_id) {
+		log.debug("getWhiteBoardImagesSyncListByRoomAndImageid room_id: "
+				+ room_id);
+		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = whiteBoardObjectSyncList
+				.get(room_id);
+		if (roomList == null) {
+			roomList = new HashMap<String, Map<String, WhiteboardSyncLockObject>>();
+		}
+		log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList: "
+				+ roomList);
+		log.debug("getWhiteBoardImagesSyncListByRoomAndImageid object_id: "
+				+ object_id);
+		if (roomList.size() == 1) {
+			log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList Key image_id: "
+					+ roomList.keySet().iterator().next());
+		}
+		Map<String, WhiteboardSyncLockObject> imageSyncList = roomList
+				.get(object_id);
+		if (imageSyncList == null) {
+			imageSyncList = new HashMap<String, WhiteboardSyncLockObject>();
+		}
+		return imageSyncList;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteboardManager.java b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteboardManager.java
new file mode 100644
index 0000000..964b23a
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/data/whiteboard/WhiteboardManager.java
@@ -0,0 +1,334 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.data.whiteboard;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dto.room.WhiteboardObject;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class WhiteboardManager {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			WhiteboardManager.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private WhiteBoardObjectListManagerById whiteBoardObjectListManagerById;
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public void addWhiteBoardObjectById(Long room_id, Map whiteboardObj,
+			Long whiteBoardId) {
+		try {
+			log.debug("addWhiteBoardObjectById: ", whiteboardObj);
+
+			// log.debug("whiteboardObj 0: Event: "+whiteboardObj.get(0));
+			// log.debug("whiteboardObj 1: Event: "+whiteboardObj.get(1));
+			// log.debug("whiteboardObj 2: Event: "+whiteboardObj.get(2));
+			// log.debug("whiteboardObj 3: Event: "+whiteboardObj.get(3));
+
+			// log.debug("whiteboardObj NUMB3: Event: "+whiteboardObj.get(3).getClass().getName());
+
+			// Date dateOfEvent = (Date) whiteboardObj.get(1);
+			String action = whiteboardObj.get(2).toString();
+
+			log.debug("action: " + action);
+			log.debug("actionObject: " + whiteboardObj.get(3));
+
+			List actionObject = (List) whiteboardObj.get(3);
+
+			if (action.equals("moveMap")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+
+				whiteboardObject.setX(Integer.valueOf(
+						actionObject.get(1).toString()).intValue());
+				whiteboardObject.setY(Integer.valueOf(
+						actionObject.get(2).toString()).intValue());
+
+				whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								whiteboardObject, whiteBoardId);
+			} else if (action.equals("draw") || action.equals("redo")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+
+				// log.debug(actionObject);
+				// log.debug(actionObject.size()-1);
+				// log.debug(actionObject.get(actionObject.size()-1));
+				String objectType = actionObject.get(0).toString();
+				if (!objectType.equals("pointerWhiteBoard")) {
+					String objectOID = actionObject
+							.get(actionObject.size() - 1).toString();
+					log.debug("objectOID: " + objectOID);
+					whiteboardObject.getRoomItems()
+							.put(objectOID, actionObject);
+					whiteBoardObjectListManagerById
+							.setWhiteBoardObjectListRoomObjAndWhiteboardId(
+									room_id, whiteboardObject, whiteBoardId);
+				}
+			} else if (action.equals("clear")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+				whiteboardObject.setRoomItems(new HashMap<String, List>());
+				whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								whiteboardObject, whiteBoardId);
+			} else if (action.equals("delete") || action.equals("undo")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+				String objectOID = actionObject.get(actionObject.size() - 1)
+						.toString();
+				String objectType = actionObject.get(0).toString();
+				log.debug("removal of objectOID: " + objectOID);
+
+				log.debug("removal of objectOID: " + objectOID);
+
+				// "ellipse"
+				// || this.baseactionobjectList[i][0] == "drawarrow"
+				// || this.baseactionobjectList[i][0] == "line"
+				// || this.baseactionobjectList[i][0] == "paint"
+				// || this.baseactionobjectList[i][0] == "rectangle"
+				// || this.baseactionobjectList[i][0] == "uline"
+				// || this.baseactionobjectList[i][0] == "image"
+				// || this.baseactionobjectList[i][0] == "letter"
+
+				// Re-Index all items in its zIndex
+				if (objectType.equals("ellipse")
+						|| objectType.equals("drawarrow")
+						|| objectType.equals("line")
+						|| objectType.equals("paint")
+						|| objectType.equals("rectangle")
+						|| objectType.equals("uline")
+						|| objectType.equals("image")
+						|| objectType.equals("letter")
+						|| objectType.equals("clipart")
+						|| objectType.equals("swf")
+						|| objectType.equals("mindmapnode")
+						|| objectType.equals("flv")) {
+
+					Integer zIndex = Integer.valueOf(
+							actionObject.get(actionObject.size() - 8)
+									.toString()).intValue();
+
+					log.debug("1|zIndex " + zIndex);
+					log.debug("2|zIndex "
+							+ actionObject.get(actionObject.size() - 8)
+									.toString());
+					log.debug("3|zIndex "
+							+ actionObject.get(actionObject.size() - 8));
+
+					int l = 0;
+					for (Iterator debugIter = actionObject.iterator(); debugIter
+							.hasNext();) {
+						log.debug("4|zIndex " + l + " -- " + debugIter.next());
+						l++;
+					}
+
+					for (Iterator<String> iter = whiteboardObject
+							.getRoomItems().keySet().iterator(); iter.hasNext();) {
+						String whiteboardObjKey = iter.next();
+						List actionObjectStored = whiteboardObject
+								.getRoomItems().get(whiteboardObjKey);
+
+						Integer zIndexStored = Integer.valueOf(
+								actionObjectStored.get(
+										actionObjectStored.size() - 8)
+										.toString()).intValue();
+
+						log.debug("zIndexStored|zIndex " + zIndexStored + "|"
+								+ zIndex);
+
+						if (zIndexStored >= zIndex) {
+							zIndexStored -= 1;
+							log.debug("new-zIndex " + zIndexStored);
+						}
+						actionObjectStored.set(actionObjectStored.size() - 8,
+								zIndexStored);
+
+						whiteboardObject.getRoomItems().put(whiteboardObjKey,
+								actionObjectStored);
+					}
+
+				}
+
+				whiteboardObject.getRoomItems().remove(objectOID);
+
+				whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								whiteboardObject, whiteBoardId);
+			} else if (action.equals("size") || action.equals("editProp")
+					|| action.equals("editTextMindMapNode")
+					|| action.equals("editText") || action.equals("swf")
+					|| action.equals("flv")
+					|| action.equals("editTextMindMapColor")
+					|| action.equals("editTextMindMapFontColor")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+				String objectOID = actionObject.get(actionObject.size() - 1)
+						.toString();
+				// List roomItem = roomList.get(objectOID);
+				List currentObject = whiteboardObject.getRoomItems().get(
+						objectOID);
+				if (actionObject.get(0).equals("paint")) {
+					actionObject.set(1, currentObject.get(1));
+				}
+				whiteboardObject.getRoomItems().put(objectOID, actionObject);
+
+				Map roomList = whiteboardObject.getRoomItems();
+
+				if (action.equals("swf")) {
+
+					log.debug("actionObject " + actionObject);
+
+					if (actionObject.get(0).equals("swf")) {
+
+						if (actionObject.get(8) != currentObject.get(8)) {
+
+							String baseObjectName = actionObject.get(
+									actionObject.size() - 1).toString();
+							Integer slidesNumber = Integer.valueOf(
+									actionObject.get(8).toString()).intValue();
+
+							log.debug("updateObjectsToSlideNumber :: "
+									+ baseObjectName + "," + slidesNumber);
+
+							for (Iterator<String> iter = roomList.keySet()
+									.iterator(); iter.hasNext();) {
+								String whiteboardObjKey = iter.next();
+								List actionObjectStored = (List) roomList
+										.get(whiteboardObjKey);
+
+								if (actionObjectStored.get(0).equals("ellipse")
+										|| actionObjectStored.get(0).equals(
+												"drawarrow")
+										|| actionObjectStored.get(0).equals(
+												"line")
+										|| actionObjectStored.get(0).equals(
+												"clipart")
+										|| actionObjectStored.get(0).equals(
+												"paint")
+										|| actionObjectStored.get(0).equals(
+												"rectangle")
+										|| actionObjectStored.get(0).equals(
+												"uline")
+										|| actionObjectStored.get(0).equals(
+												"image")
+										|| actionObjectStored.get(0).equals(
+												"letter")) {
+
+									Map swfObj = (Map) actionObjectStored
+											.get(actionObjectStored.size() - 7);
+									log.debug("swfObj :1: " + swfObj);
+
+									if (swfObj != null) {
+
+										if (swfObj.get("name").equals(
+												baseObjectName)) {
+
+											if (Integer.valueOf(
+													swfObj.get("slide")
+															.toString())
+													.intValue() == slidesNumber) {
+
+												swfObj.put("isVisible", true);
+
+												actionObjectStored.set(
+														actionObjectStored
+																.size() - 7,
+														swfObj);
+
+											} else {
+
+												swfObj.put("isVisible", false);
+
+												actionObjectStored.set(
+														actionObjectStored
+																.size() - 7,
+														swfObj);
+
+											}
+
+										}
+
+									}
+
+									log.debug("swfObj :1: " + swfObj);
+
+								}
+
+							}
+
+						}
+
+					}
+				}
+
+				whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								whiteboardObject, whiteBoardId);
+			} else if (action.equals("clearSlide")) {
+
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+
+				Map roomList = whiteboardObject.getRoomItems();
+
+				for (String objectName : (List<String>) actionObject) {
+
+					roomList.remove(objectName);
+
+				}
+
+				whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								whiteboardObject, whiteBoardId);
+			} else if (action.equals("whiteboardObj")) {
+				WhiteboardObject whiteboardObject = whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomIdAndWhiteboard(room_id,
+								whiteBoardId);
+
+				whiteboardObject.setFullFit((Boolean) actionObject.get(1));
+				whiteboardObject.setZoom((Integer) actionObject.get(2));
+
+				whiteBoardObjectListManagerById
+				.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+						whiteboardObject, whiteBoardId);
+			} else {
+				log.warn("Unkown Type: " + action + " actionObject: "
+						+ actionObject);
+			}
+
+		} catch (Exception err) {
+			log.error("[addWhiteBoardObject]", err);
+		}
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/CreateLibraryPresentation.java b/src/main/java/org/apache/openmeetings/documents/CreateLibraryPresentation.java
new file mode 100644
index 0000000..4b8a6b7
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/CreateLibraryPresentation.java
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.util.Arrays;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.XMLWriter;
+
+public class CreateLibraryPresentation {
+	public static ConverterProcessResult generateXMLDocument(File targetDirectory, String originalDocument, 
+			String pdfDocument, String swfDocument){
+		ConverterProcessResult returnMap = new ConverterProcessResult();
+		returnMap.setProcess("generateXMLDocument");		
+		try {
+			
+	        Document document = DocumentHelper.createDocument();
+	        Element root = document.addElement( "presentation" );
+
+	        File file = new File(targetDirectory, originalDocument);
+	        root.addElement( "originalDocument" )
+				.addAttribute("lastmod", (new Long(file.lastModified())).toString())
+				.addAttribute("size", (new Long(file.length())).toString())	        
+	            .addText( originalDocument );
+	        
+	        if (pdfDocument!=null){
+	        	File pdfDocumentFile = new File(targetDirectory, pdfDocument);
+		        root.addElement( "pdfDocument" )
+					.addAttribute("lastmod", (new Long(pdfDocumentFile.lastModified())).toString())
+					.addAttribute("size", (new Long(pdfDocumentFile.length())).toString())	   		        
+		            .addText( pdfDocument );
+	        }
+	        
+	        if (swfDocument!=null){
+	        	File swfDocumentFile = new File(targetDirectory, originalDocument);
+		        root.addElement( "swfDocument" )
+					.addAttribute("lastmod", (new Long(swfDocumentFile.lastModified())).toString())
+					.addAttribute("size", (new Long(swfDocumentFile.length())).toString())	  		        
+	            	.addText( swfDocument );	  
+	        }
+	        
+	        Element thumbs = root.addElement( "thumbs" );
+	        
+			//Secoond get all Files of this Folder
+			FilenameFilter ff = new FilenameFilter() {
+			     public boolean accept(File b, String name) {
+			    	  File f = new File(b, name);
+			          return f.isFile();
+			     }
+			};	
+			
+			String[] allfiles = targetDirectory.list(ff);			
+			if(allfiles!=null){
+				Arrays.sort(allfiles);
+				for(int i=0; i<allfiles.length; i++){
+					File thumbfile = new File(targetDirectory, allfiles[i]);
+					if (allfiles[i].startsWith(thumbImagePrefix)){
+						thumbs.addElement( "thumb" )
+							.addAttribute("lastmod", (new Long(thumbfile.lastModified())).toString())
+							.addAttribute("size", (new Long(thumbfile.length())).toString())
+			            	.addText( allfiles[i] );
+					}
+				}
+			}
+	        
+	        // lets write to a file
+	        XMLWriter writer = new XMLWriter(
+	            new FileOutputStream(new File(targetDirectory, OmFileHelper.libraryFileName))
+	        );
+	        writer.write( document );
+	        writer.close();
+			
+	        returnMap.setExitValue("0");
+	        
+			return returnMap;
+		} catch (Exception err) {
+			err.printStackTrace();
+			returnMap.setError(err.getMessage());
+			returnMap.setExitValue("-1");
+			return returnMap;
+		}
+	}
+	
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/GeneratePDF.java b/src/main/java/org/apache/openmeetings/documents/GeneratePDF.java
new file mode 100644
index 0000000..a0bcd0c
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/GeneratePDF.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.converter.GenerateSWF;
+import org.apache.openmeetings.converter.GenerateThumbs;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class GeneratePDF {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			GeneratePDF.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private GenerateThumbs generateThumbs;
+	@Autowired
+	private GenerateSWF generateSWF;
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	public ConverterProcessResultList convertPDF(String fileName,
+			String roomName, boolean fullProcessing, File inFile)
+			throws Exception {
+
+		String inFileName = inFile.getName();
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
+
+		File fileFullPath = new File(OmFileHelper.getUploadTempRoomDir(roomName), inFileName);
+		File destinationFolder = OmFileHelper.getNewDir(OmFileHelper.getUploadRoomDir(roomName), fileName);
+
+		log.debug("fullProcessing: " + fullProcessing);
+		if (fullProcessing) {
+			ConverterProcessResult processOpenOffice = doJodConvert(
+					fileFullPath, destinationFolder, fileName);
+			returnError.addItem("processOpenOffice", processOpenOffice);
+			ConverterProcessResult processThumb = generateThumbs
+					.generateBatchThumb(new File(destinationFolder, fileName + ".pdf"), destinationFolder, 80, "thumb");
+			returnError.addItem("processThumb", processThumb);
+			ConverterProcessResult processSWF = generateSWF
+					.generateSwf(destinationFolder, destinationFolder, fileName);
+			returnError.addItem("processSWF", processSWF);
+		} else {
+
+			log.debug("-- generateBatchThumb --");
+
+			ConverterProcessResult processThumb = generateThumbs
+					.generateBatchThumb(fileFullPath, destinationFolder, 80, "thumb");
+			returnError.addItem("processThumb", processThumb);
+
+			ConverterProcessResult processSWF = generateSWF.generateSwf(
+					fileFullPath.getParentFile(), destinationFolder, fileName);
+			returnError.addItem("processSWF", processSWF);
+		}
+
+		// now it should be completed so copy that file to the expected location
+		File fileWhereToMove = new File(destinationFolder, inFileName);
+		fileWhereToMove.createNewFile();
+		FileHelper.moveRec(inFile, fileWhereToMove);
+
+		if (fullProcessing) {
+			ConverterProcessResult processXML = CreateLibraryPresentation
+					.generateXMLDocument(destinationFolder,
+							inFileName, fileName + ".pdf",
+							fileName + ".swf");
+			returnError.addItem("processXML", processXML);
+		} else {
+			ConverterProcessResult processXML = CreateLibraryPresentation
+					.generateXMLDocument(destinationFolder,
+							inFileName, null, fileName + ".swf");
+			returnError.addItem("processXML", processXML);
+		}
+
+		return returnError;
+	}
+
+	/**
+	 * Generates PDF using JOD Library (external library)
+	 */
+	public ConverterProcessResult doJodConvert(File fileFullPath, File destinationFolder, String outputfile) {
+		try {
+
+			String jodPath = configurationDao.getConfValue("jod.path",
+					String.class, "./jod");
+			String officePath = configurationDao.getConfValue(
+					"office.path", String.class, "");
+
+			File jodFolder = new File(jodPath);
+			if (!jodFolder.exists() || !jodFolder.isDirectory()) {
+				throw new Exception("Path to JOD Library folder does not exist");
+			}
+
+			ArrayList<String> argv = new ArrayList<String>();
+			argv.add("java");
+
+			if (officePath.trim().length() > 0) {
+				argv.add("-Doffice.home=" + officePath);
+			}
+			String jodConverterJar = "";
+
+			for (String jar : jodFolder.list(new FilenameFilter() {
+				public boolean accept(File file1, String name) {
+					return name.endsWith(".jar");
+				}
+			})) {
+				argv.add("-cp");
+				if (jar.startsWith("jodconverter")) {
+					jodConverterJar = jar;
+				}
+				argv.add(new File(jodFolder, jar).getCanonicalPath());
+			}
+			if (jodConverterJar.length() == 0) {
+				throw new Exception(
+						"Could not find jodConverter JAR file in JOD folder");
+			}
+
+			argv.add("-jar");
+			argv.add(new File(jodFolder, jodConverterJar).getCanonicalPath());
+			argv.add(fileFullPath.getCanonicalPath());
+			argv.add(new File(destinationFolder, outputfile + ".pdf").getCanonicalPath());
+
+			return ProcessHelper.executeScript("doJodConvert",
+					argv.toArray(new String[argv.size()]));
+
+		} catch (Exception ex) {
+			log.error("doJodConvert", ex);
+			return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
+		}
+	}
+
+	
+
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LibraryChartLoader.java b/src/main/java/org/apache/openmeetings/documents/LibraryChartLoader.java
new file mode 100644
index 0000000..0e6e955
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LibraryChartLoader.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+
+import org.apache.openmeetings.util.Logger;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+public class LibraryChartLoader {
+
+    private static final Logger log = new Logger();
+
+    private static final String fileExt = ".xchart";
+
+    private static LibraryChartLoader instance;
+
+    private LibraryChartLoader() {
+    }
+
+    public static synchronized LibraryChartLoader getInstance() {
+        if (instance == null) {
+            instance = new LibraryChartLoader();
+        }
+        return instance;
+    }
+
+    @SuppressWarnings("rawtypes")
+	public ArrayList loadChart(File dir, String fileName) {
+        try {
+            File file = new File(dir, fileName + fileExt);
+
+            log.error("filepathComplete: " + file);
+
+            XStream xStream = new XStream(new XppDriver());
+            xStream.setMode(XStream.NO_REFERENCES);
+
+            BufferedReader reader = new BufferedReader(new FileReader(file));
+            String xmlString = "";
+            while (reader.ready()) {
+                xmlString += reader.readLine();
+            }
+            reader.close();
+            // lMap = (LinkedHashMap) xStream.fromXML(xmlString);
+            ArrayList lMapList = (ArrayList) xStream.fromXML(xmlString);
+
+            return lMapList;
+        } catch (Exception err) {
+            log.error(err);
+        }
+
+        return null;
+
+    }
+
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LibraryDocumentConverter.java b/src/main/java/org/apache/openmeetings/documents/LibraryDocumentConverter.java
new file mode 100644
index 0000000..a7cb531
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LibraryDocumentConverter.java
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.stringhandlers.StringComparer;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+public class LibraryDocumentConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(LibraryDocumentConverter.class, OpenmeetingsVariables.webAppRootKey);
+	
+	private static final String fileExt = ".wml";
+	
+	public static String writeToLocalFolder(String fileName, @SuppressWarnings("rawtypes")ArrayList objList) {
+		try {
+			
+			log.debug("filePath: " + OmFileHelper.getUploadWmlDir().getCanonicalPath());
+			
+			String fileNameExtName = fileName.substring(fileName.length()-4,fileName.length());
+			if (fileNameExtName.equals(fileExt)){
+				fileName = StringComparer.getInstance().compareForRealPaths(fileName.substring(0, fileName.length()-4));
+			} else {
+				fileName = StringComparer.getInstance().compareForRealPaths(fileName.substring(0, fileName.length()));
+			}
+			
+			if (fileName.length()<=0){
+				//return new Long(-21);
+				return "-20";
+			}
+			//Add the Folder for the wmlFiles if it does not exist yet
+			File filePathComplete = new File(OmFileHelper.getUploadWmlDir(), fileName + fileExt);
+			
+			if (filePathComplete.exists()){
+				return "-20";
+			}		
+			
+			XStream xStream = new XStream(new XppDriver());
+			xStream.setMode(XStream.NO_REFERENCES);
+			String xmlString = xStream.toXML(objList);	
+			
+			log.debug("Write to "+filePathComplete);
+			
+			PrintWriter pw = new PrintWriter(new FileWriter(filePathComplete));
+		    pw.println(xmlString);
+		    pw.flush();
+		    pw.close();
+	    
+		    //return new Long(1);
+		    
+		    return filePathComplete.getCanonicalPath();
+		} catch (Exception err){
+			log.error("writeToLocalFolder",err);
+		}
+		
+		return null;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LibraryDocuments.java b/src/main/java/org/apache/openmeetings/documents/LibraryDocuments.java
new file mode 100644
index 0000000..54d10ba
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LibraryDocuments.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class LibraryDocuments {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(LibraryDocuments.class, OpenmeetingsVariables.webAppRootKey);
+
+	private static LibraryDocuments instance;
+
+	private LibraryDocuments() {}
+
+	public static synchronized LibraryDocuments getInstance() {
+		if (instance == null) {
+			log.debug("instance created");
+			instance = new LibraryDocuments();
+		}
+		return instance;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LibraryWmlLoader.java b/src/main/java/org/apache/openmeetings/documents/LibraryWmlLoader.java
new file mode 100644
index 0000000..b7f6f96
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LibraryWmlLoader.java
@@ -0,0 +1,252 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.dom4j.Element;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+public class LibraryWmlLoader {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(LibraryWmlLoader.class, OpenmeetingsVariables.webAppRootKey);
+	
+	private static final String fileExt = ".wml";
+	
+	@SuppressWarnings({ "rawtypes" })
+	public ArrayList loadWmlFile(String fileName){
+		try {
+			String name = fileName;
+			if (!name.endsWith(fileExt)) {
+				name += fileExt;
+			}
+			File filepathComplete = new File(OmFileHelper.getUploadWmlDir(), name);
+			log.debug("filepathComplete: "+filepathComplete);
+			
+			XStream xStream = new XStream(new XppDriver());
+			xStream.setMode(XStream.NO_REFERENCES);
+			
+			BufferedReader reader = new BufferedReader(new FileReader(filepathComplete));
+		    String xmlString = "";
+		    while (reader.ready()) {
+		    	xmlString += reader.readLine();
+		    }
+		    reader.close();
+		    //lMap = (LinkedHashMap) xStream.fromXML(xmlString);
+		    ArrayList lMapList = (ArrayList) xStream.fromXML(xmlString);
+			
+			return lMapList;
+		} catch (Exception err){
+			log.error("loadWmlFile",err);
+		}
+		
+		return null;
+		
+	}
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	@SuppressWarnings({ "unused", "rawtypes" })
+	private void createListObjectPaintByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {
+			
+			LinkedHashMap<Integer,LinkedHashMap> pointMap = new LinkedHashMap<Integer,LinkedHashMap>();
+			Element pointElements = paintElement.element("points");
+			Integer k = 0;
+			
+			for ( Iterator i = pointElements.elementIterator( "point" ); i.hasNext(); ) {
+				Element pointElement = (Element) i.next();
+				LinkedHashMap<Integer,Object> singlePoint = new LinkedHashMap<Integer,Object>();
+				singlePoint.put(0, pointElement.getName());
+				singlePoint.put(1, Integer.valueOf(pointElement.attribute("val1").getText()).intValue());
+				singlePoint.put(2, Integer.valueOf(pointElement.attribute("val2").getText()).intValue());
+				singlePoint.put(3, Integer.valueOf(pointElement.attribute("val3").getText()).intValue());
+				singlePoint.put(4, Integer.valueOf(pointElement.attribute("val4").getText()).intValue());
+				pointMap.put(k, singlePoint);
+				log.debug("createListObjectPaintByNode"+singlePoint);
+				k++;
+			}
+			subMap.put(1, pointMap);
+
+			subMap.put(2, paintElement.element("fillstyle").getText());
+			subMap.put(3, Integer.valueOf(paintElement.element("linewidth").getText()).intValue());
+			subMap.put(4, Integer.valueOf(paintElement.element("strokestyle").getText()).intValue());
+			subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(6, Float.valueOf(paintElement.element("x").getText()).floatValue());
+			subMap.put(7, Float.valueOf(paintElement.element("y").getText()).floatValue());
+			subMap.put(8, Float.valueOf(paintElement.element("width").getText()).floatValue());
+			subMap.put(9, Float.valueOf(paintElement.element("height").getText()).floatValue());
+			subMap.put(10, paintElement.element("layername").getText());		
+			
+		} catch (Exception err) {
+			log.error("createListObjectPaintByNode",err);
+		}
+	}
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	public void createListObjectLetterByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {
+
+			subMap.put(1, paintElement.element("textforfield").getText());
+			subMap.put(2, Integer.valueOf(paintElement.element("fgcolor").getText()).intValue());
+			subMap.put(3, Integer.valueOf(paintElement.element("fontsize").getText()).intValue());
+			subMap.put(4, paintElement.element("fontstyle").getText());
+			subMap.put(5, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(6, Float.valueOf(paintElement.element("x").getText()).floatValue());
+			subMap.put(7, Float.valueOf(paintElement.element("y").getText()).floatValue());			
+			subMap.put(8, Float.valueOf(paintElement.element("width").getText()).floatValue());		
+			subMap.put(9, Float.valueOf(paintElement.element("height").getText()).floatValue());		
+			subMap.put(10, paintElement.element("layername").getText());
+			
+		} catch (Exception err) {
+			log.error("createListObjectLetterByNode",err);
+		}
+	}	
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	public void createListObjectImageByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {
+
+			subMap.put(1, paintElement.element("urlname").getText());
+			subMap.put(2, paintElement.element("baseurl").getText());
+			subMap.put(3, paintElement.element("filename").getText());
+			subMap.put(4, paintElement.element("modulename").getText());
+			subMap.put(5, paintElement.element("parentpath").getText());
+			subMap.put(6, paintElement.element("room").getText());
+			subMap.put(7, paintElement.element("domain").getText());
+			subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(9, Float.valueOf(paintElement.element("x").getText()).floatValue());
+			subMap.put(10, Float.valueOf(paintElement.element("y").getText()).floatValue());
+			subMap.put(11, Float.valueOf(paintElement.element("width").getText()).floatValue());
+			subMap.put(12, Float.valueOf(paintElement.element("height").getText()).floatValue());
+			subMap.put(13, paintElement.element("layername").getText());		
+			
+		} catch (Exception err) {
+			log.error("createListObjectImageByNode",err);
+		}
+	}	
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	public void createListObjectObjecByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {	
+			
+			subMap.put(1, paintElement.element("fillstyle").getText());
+			subMap.put(2, paintElement.element("linewidth").getText());
+			subMap.put(3, Integer.valueOf(paintElement.element("strokestyle").getText()).intValue());
+			subMap.put(4, Float.valueOf(paintElement.element("startx").getText()).floatValue());
+			subMap.put(5, Float.valueOf(paintElement.element("starty").getText()).floatValue());
+			subMap.put(6, Float.valueOf(paintElement.element("endx").getText()).floatValue());
+			subMap.put(7, Float.valueOf(paintElement.element("endy").getText()).floatValue());
+			subMap.put(8, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(9, Float.valueOf(paintElement.element("x").getText()).floatValue());
+			subMap.put(10, Float.valueOf(paintElement.element("y").getText()).floatValue());
+			subMap.put(11, Float.valueOf(paintElement.element("width").getText()).floatValue());
+			subMap.put(12, Float.valueOf(paintElement.element("height").getText()).floatValue());
+			subMap.put(13, paintElement.element("layername").getText());
+			
+		} catch (Exception err) {
+			log.error("createListObjectObjecByNode",err);
+		}
+	}		
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	public void createListObjectRectAndEllipseByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {	
+			
+			subMap.put(1, Integer.valueOf(paintElement.element("stroke").getText()).intValue());
+			subMap.put(2, paintElement.element("line").getText());
+			subMap.put(3, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(4, Float.valueOf(paintElement.element("x").getText()).floatValue());		
+			subMap.put(5, Float.valueOf(paintElement.element("y").getText()).floatValue());
+			subMap.put(6, Float.valueOf(paintElement.element("width").getText()).floatValue());
+			subMap.put(7, Float.valueOf(paintElement.element("height").getText()).floatValue());
+			subMap.put(8, paintElement.element("layername").getText());
+
+		} catch (Exception err) {
+			log.error("createListObjectObjecByNode",err);
+		}
+	}
+	
+	/**
+	 * @deprecated
+	 * @param paintElement
+	 * @param subMap
+	 */
+	public void createListObjectSWFByNode(Element paintElement, LinkedHashMap<Integer,Object> subMap){
+		try {
+
+			subMap.put(1, paintElement.element("urlname").getText());
+			subMap.put(2, paintElement.element("baseurl").getText());
+			subMap.put(3, paintElement.element("filename").getText());
+			subMap.put(4, paintElement.element("modulename").getText());
+			subMap.put(5, paintElement.element("parentpath").getText());
+			subMap.put(6, paintElement.element("room").getText());
+			subMap.put(7, paintElement.element("domain").getText());
+			subMap.put(8, Integer.valueOf(paintElement.element("slideNumber").getText()).intValue());
+			subMap.put(9, Float.valueOf(paintElement.element("innerx").getText()).floatValue());
+			subMap.put(10, Float.valueOf(paintElement.element("innery").getText()).floatValue());
+			subMap.put(11, Float.valueOf(paintElement.element("innerwidth").getText()).floatValue());
+			subMap.put(12, Float.valueOf(paintElement.element("innerheight").getText()).floatValue());
+			subMap.put(13, Integer.valueOf(paintElement.element("zoomlevel").getText()).intValue());
+			subMap.put(14, Float.valueOf(paintElement.element("initwidth").getText()).floatValue());
+			subMap.put(15, Float.valueOf(paintElement.element("initheight").getText()).floatValue());
+			subMap.put(16, Integer.valueOf(paintElement.element("currentzoom").getText()).intValue());
+			subMap.put(17, Integer.valueOf(paintElement.element("counter").getText()).intValue());
+			subMap.put(18, Float.valueOf(paintElement.element("x").getText()).floatValue());
+			subMap.put(19, Float.valueOf(paintElement.element("y").getText()).floatValue());
+			subMap.put(20, Float.valueOf(paintElement.element("width").getText()).floatValue());
+			subMap.put(21, Float.valueOf(paintElement.element("height").getText()).floatValue());
+			subMap.put(22, paintElement.element("layername").getText());		
+			
+		} catch (Exception err) {
+			log.error("createListObjectImageByNode",err);
+		}
+	}		
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentation.java b/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentation.java
new file mode 100644
index 0000000..343417a
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentation.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dto.file.LibraryPresenationThumbs;
+import org.apache.openmeetings.db.dto.file.LibraryPresentation;
+import org.apache.openmeetings.db.dto.file.LibraryPresentationFile;
+import org.apache.openmeetings.db.dto.file.LibraryPresentationThumb;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class LoadLibraryPresentation {
+	private static final Logger log = Red5LoggerFactory.getLogger(LoadLibraryPresentation.class, OpenmeetingsVariables.webAppRootKey);
+	
+	public static LibraryPresentation parseLibraryFileToObject(File file){
+		try {
+			LibraryPresentation lPresentation = new LibraryPresentation();
+			
+	        SAXReader reader = new SAXReader();
+	        Document document = reader.read( new FileInputStream(file) );
+	        
+	        Element root = document.getRootElement();
+	        
+	        for ( @SuppressWarnings("unchecked")
+			Iterator<Element> i = root.elementIterator(); i.hasNext(); ) {
+	        	
+	            Element item = i.next();
+	            
+	            log.debug(item.getName());
+	            
+	            String nodeVal = item.getName();
+	            
+	            //LinkedHashMap<String,Object> subMap = new LinkedHashMap<String,Object>();
+	            
+	            //subMap.put("name", nodeVal);
+
+				if (nodeVal.equals("originalDocument")){
+					
+					lPresentation.setOriginalDocument(createListObjectLibraryByFileDocument(item));
+					
+				} else if (nodeVal.equals("pdfDocument")){
+					
+					lPresentation.setPdfDocument(createListObjectLibraryByFileDocument(item));
+					
+				} else if (nodeVal.equals("swfDocument")){
+					
+					lPresentation.setSwfDocument(createListObjectLibraryByFileDocument(item));
+					
+				} else if (nodeVal.equals("thumbs")) {
+					
+					lPresentation.setThumbs(createListObjectLibraryByFileDocumentThumbs(item));
+					
+				} else {
+					throw new Exception("Unkown Library type: "+nodeVal);
+				}
+	            
+	        }
+	        
+	        log.debug("Returning presentation file object");
+			
+			return lPresentation;
+		} catch (Exception err) {
+			log.error("parseLibraryFileToObject",err);
+			return null;
+		}
+	}
+	
+	public static LibraryPresentationFile createListObjectLibraryByFileDocument(Element fileElement){
+		try {
+			
+			log.info("createListObjectLibraryByFileDocument"+fileElement);
+			
+			LibraryPresentationFile libraryPresentationFile = new LibraryPresentationFile();
+			libraryPresentationFile.setName(fileElement.getName());
+			libraryPresentationFile.setFilename(fileElement.getText());
+			libraryPresentationFile.setLastmod(fileElement.attribute("lastmod").getText());
+			libraryPresentationFile.setSize(Long.valueOf(fileElement.attribute("size").getText()).longValue());
+			
+			return libraryPresentationFile;
+			
+		} catch (Exception err) {
+			log.error("createListObjectLibraryByFileDocument",err);
+		}
+		return null;
+	}		
+	
+	public static LibraryPresenationThumbs createListObjectLibraryByFileDocumentThumbs(Element fileElement){
+		try {
+			
+			LibraryPresenationThumbs thumbMap = new LibraryPresenationThumbs();
+			thumbMap.setName(fileElement.getName());
+			
+			Integer k = 0;
+			for ( @SuppressWarnings("unchecked")
+			Iterator<Element> i = fileElement.elementIterator(); i.hasNext(); i.next()) {
+				k++;
+			}
+			
+			thumbMap.setThumbs(new LibraryPresentationThumb[k]);
+			
+			
+			k = 0;
+			for ( @SuppressWarnings("unchecked")
+			Iterator<Element> i = fileElement.elementIterator(); i.hasNext(); ) {
+				Element thumbElement = i.next();
+				//log.info("createListObjectLibraryByFileDocumentThumbs"+thumbElement);
+				LibraryPresentationThumb singleThumb = new LibraryPresentationThumb();
+				singleThumb.setName(thumbElement.getName());
+				singleThumb.setFilename(thumbElement.getText());
+				singleThumb.setLastmod(thumbElement.attribute("lastmod").getText());
+				singleThumb.setSize(Long.valueOf(thumbElement.attribute("size").getText()).longValue());
+				thumbMap.getThumbs()[k] = singleThumb;
+				k++;
+			}
+			
+			
+			return thumbMap;
+			
+		} catch (Exception err) {
+			log.error("createListObjectLibraryByFileDocumentThumbs",err);
+		}
+		return null;
+	}	
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentationToObject.java b/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentationToObject.java
new file mode 100644
index 0000000..179bb0a
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/documents/LoadLibraryPresentationToObject.java
@@ -0,0 +1,126 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.documents;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import org.apache.openmeetings.db.dto.file.FilesObject;
+import org.apache.openmeetings.db.dto.file.PresentationObject;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class LoadLibraryPresentationToObject {
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(LoadLibraryPresentationToObject.class, OpenmeetingsVariables.webAppRootKey);
+	
+	private static LoadLibraryPresentationToObject instance;
+
+	private LoadLibraryPresentationToObject() {}
+
+	public static synchronized LoadLibraryPresentationToObject getInstance() {
+		if (instance == null) {
+			instance = new LoadLibraryPresentationToObject();
+		}
+		return instance;
+	}	
+	
+	public PresentationObject parseLibraryFileToObject(String filePath){
+		try {
+			PresentationObject lMap = new PresentationObject();
+			
+	        SAXReader reader = new SAXReader();
+	        Document document = reader.read(filePath);
+	        
+	        Element root = document.getRootElement();
+	        Integer k = 0;
+	        
+	        for (@SuppressWarnings("unchecked")
+			Iterator<Element> i = root.elementIterator(); i.hasNext(); ) {
+	            Element item = i.next();
+	            log.error(item.getName());
+	            
+	            String nodeVal = item.getName();
+	            
+				if (nodeVal.equals("originalDocument")){
+					lMap.setOriginalDocument(this.createListObjectLibraryByFileDocument(item));
+				} else if (nodeVal.equals("pdfDocument")){
+					lMap.setPdfDocument(this.createListObjectLibraryByFileDocument(item));
+				} else if (nodeVal.equals("swfDocument")) {
+					lMap.setSwfDocument(this.createListObjectLibraryByFileDocument(item));
+				} else if (nodeVal.equals("thumbs")) {
+					lMap.setThumbs(this.createListObjectLibraryByFileDocumentThumbs(item));
+				}
+	            
+	            k++;
+
+	        }
+			
+			return lMap;
+		} catch (Exception err) {
+			log.error("parseLibraryFileToObject",err);
+			return null;
+		}
+	}
+	
+	public FilesObject createListObjectLibraryByFileDocument(Element fileElement){
+		try {
+			
+			log.info("createListObjectLibraryByFileDocument"+fileElement);
+			FilesObject fileObject = new FilesObject();
+			fileObject.setFileName(fileElement.getText());
+			fileObject.setLastModified(fileElement.attribute("lastmod").getText());
+			fileObject.setFileBytes(fileElement.attribute("size").getText());
+			return fileObject;
+		} catch (Exception err) {
+			log.error("createListObjectLibraryByFileDocument",err);
+		}
+		return null;
+	}		
+	
+	public LinkedList<FilesObject> createListObjectLibraryByFileDocumentThumbs(Element fileElement){
+		try {
+
+			LinkedList<FilesObject> thumbMap = new LinkedList<FilesObject>();
+			
+			for (@SuppressWarnings("unchecked")
+			Iterator<Element> i = fileElement.elementIterator(); i.hasNext(); ) {
+				Element thumbElement = i.next();
+				log.info("createListObjectLibraryByFileDocumentThumbs"+thumbElement);
+				FilesObject singleThumb = new FilesObject();
+				singleThumb.setFileName(thumbElement.getName());
+				singleThumb.setFileNamePure(thumbElement.getText());
+				singleThumb.setLastModified(thumbElement.attribute("lastmod").getText());
+				singleThumb.setFileBytes(thumbElement.attribute("size").getText());
+				thumbMap.add(singleThumb);
+			}
+			
+			return thumbMap;
+			
+		} catch (Exception err) {
+			log.error("createListObjectLibraryByFileDocumentThumbs",err);
+		}
+		return null;
+	}	
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java b/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
new file mode 100644
index 0000000..3b377c0
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
@@ -0,0 +1,396 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.ldap;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Date;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.directory.api.ldap.model.cursor.CursorLdapReferralException;
+import org.apache.directory.api.ldap.model.cursor.EntryCursor;
+import org.apache.directory.api.ldap.model.entry.Attribute;
+import org.apache.directory.api.ldap.model.entry.Entry;
+import org.apache.directory.api.ldap.model.exception.LdapAuthenticationException;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
+import org.apache.directory.api.ldap.model.message.AliasDerefMode;
+import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
+import org.apache.directory.api.ldap.model.message.SearchScope;
+import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.ldap.client.api.EntryCursorImpl;
+import org.apache.directory.ldap.client.api.LdapConnection;
+import org.apache.directory.ldap.client.api.LdapNetworkConnection;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Management of optional LDAP Login
+ * 
+ * @author o.becherer
+ * 
+ */
+public class LdapLoginManagement {
+	private static final Logger log = Red5LoggerFactory.getLogger(LdapLoginManagement.class, webAppRootKey);
+	// Config constants
+	private static final String CONFIGKEY_LDAP_HOST = "ldap_conn_host";
+	private static final String CONFIGKEY_LDAP_PORT = "ldap_conn_port";
+	private static final String CONFIGKEY_LDAP_SECURE = "ldap_conn_secure";
+	private static final String CONFIGKEY_LDAP_ADMIN_DN = "ldap_admin_dn";
+	private static final String CONFIGKEY_LDAP_ADMIN_PASSWD = "ldap_passwd";
+	private static final String CONFIGKEY_LDAP_AUTH_TYPE = "ldap_auth_type";
+	private static final String CONFIGKEY_LDAP_PROV_TYPE = "ldap_provisionning";
+
+	private static final String CONFIGKEY_LDAP_SYNC_PASSWD_OM = "ldap_sync_password_to_om"; // 'true' or 'false'
+	private static final String CONFIGKEY_LDAP_USE_LOWER_CASE = "ldap_use_lower_case";
+	private static final String CONFIGKEY_LDAP_TIMEZONE_NAME = "ldap_user_timezone";
+	private static final String CONFIGKEY_LDAP_SEARCH_BASE = "ldap_search_base";
+	private static final String CONFIGKEY_LDAP_SEARCH_QUERY = "ldap_search_query";
+	private static final String CONFIGKEY_LDAP_SEARCH_SCOPE = "ldap_search_scope";
+	private static final String CONFIGKEY_LDAP_USERDN_FORMAT = "ldap_userdn_format";
+	private static final String CONFIGKEY_LDAP_USE_ADMIN_4ATTRS = "ldap_use_admin_to_get_attrs";
+	private static final String CONFIGKEY_LDAP_DEREF_MODE = "ldap_deref_mode";
+	
+	// LDAP custom attribute mapping keys
+	private static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname";
+	private static final String CONFIGKEY_LDAP_KEY_FIRSTNAME = "ldap_user_attr_firstname";
+	private static final String CONFIGKEY_LDAP_KEY_MAIL = "ldap_user_attr_mail";
+	private static final String CONFIGKEY_LDAP_KEY_STREET = "ldap_user_attr_street";
+	private static final String CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME = "ldap_user_attr_additionalname";
+	private static final String CONFIGKEY_LDAP_KEY_FAX = "ldap_user_attr_fax";
+	private static final String CONFIGKEY_LDAP_KEY_ZIP = "ldap_user_attr_zip";
+	private static final String CONFIGKEY_LDAP_KEY_COUNTRY = "ldap_user_attr_country";
+	private static final String CONFIGKEY_LDAP_KEY_TOWN = "ldap_user_attr_town";
+	private static final String CONFIGKEY_LDAP_KEY_PHONE = "ldap_user_attr_phone";
+	private static final String CONFIGKEY_LDAP_PICTURE_URI = "ldap_user_picture_uri";
+
+	// LDAP default attributes mapping
+	private static final String LDAP_KEY_LASTNAME = "sn";
+	private static final String LDAP_KEY_FIRSTNAME = "givenName";
+	private static final String LDAP_KEY_MAIL = "mail";
+	private static final String LDAP_KEY_STREET = "streetAddress";
+	private static final String LDAP_KEY_ADDITIONAL_NAME = "description";
+	private static final String LDAP_KEY_FAX = "facsimileTelephoneNumber";
+	private static final String LDAP_KEY_ZIP = "postalCode";
+	private static final String LDAP_KEY_COUNTRY = "co";
+	private static final String LDAP_KEY_TOWN = "l";
+	private static final String LDAP_KEY_PHONE = "telephoneNumber";
+	private static final String LDAP_KEY_TIMEZONE = "timezone";
+	private static final String LDAP_KEY_PICTURE_URI = "pictureUri";
+
+	public enum AuthType {
+		NONE
+		, SEARCHANDBIND
+		, SIMPLEBIND
+	}
+	
+	public enum Provisionning {
+		NONE
+		, AUTOUPDATE
+		, AUTOCREATE
+	}
+	
+	@Autowired
+	private ConfigurationDao cfgDao;
+	@Autowired
+	private StateDao stateDao;
+	@Autowired
+	private LdapConfigDao ldapConfigDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	private Dn getUserDn(Properties config, String user) throws LdapInvalidDnException {
+		return new Dn(String.format(config.getProperty(CONFIGKEY_LDAP_USERDN_FORMAT, "%s"), user));
+	}
+	
+	private void bindAdmin(LdapConnection conn, String admin, String pass) throws LdapException {
+		if (!Strings.isEmpty(admin)) {
+			conn.bind(admin, pass);
+		} else {
+			conn.bind();
+		}
+	}
+	
+	private String getAttr(Properties config, Entry entry, String aliasCode, String defaultAlias) throws LdapInvalidAttributeValueException {
+		String alias = config.getProperty(aliasCode, "");
+		Attribute a = entry.get(Strings.isEmpty(alias) ? defaultAlias : alias);
+		return a == null ? null : a.getString();
+	}
+	/**
+	 * Ldap Login
+	 * 
+	 * Connection Data is retrieved from ConfigurationFile
+	 * 
+	 */
+	// ----------------------------------------------------------------------------------------
+	public User login(String user, String passwd, Long domainId) throws OmException {
+		log.debug("LdapLoginmanagement.doLdapLogin");
+
+		Properties config = new Properties();
+		Reader r = null;
+		try {
+			LdapConfig ldapConfig = ldapConfigDao.get(domainId);
+			r = new InputStreamReader(new FileInputStream(new File(OmFileHelper.getConfDir(), ldapConfig.getConfigFileName())), "UTF-8");
+			config.load(r);
+		} catch (Exception e) {
+			log.error("Error on LdapLogin : Configurationdata couldn't be retrieved!");
+			return null;
+		} finally {
+			if (r != null) {
+				try {
+					r.close();
+				} catch (IOException e) {
+					log.error("Error while closing ldap config file");
+					return null;
+				}
+			}
+		}
+		if (config.isEmpty()) {
+			log.error("Error on LdapLogin : Configurationdata couldnt be retrieved!");
+			return null;
+		}
+
+		String ldap_use_lower_case = config.getProperty(CONFIGKEY_LDAP_USE_LOWER_CASE, "false");
+		if ("true".equals(ldap_use_lower_case)) {
+			user = user.toLowerCase();
+		}
+
+		String ldap_auth_type = config.getProperty(CONFIGKEY_LDAP_AUTH_TYPE, "");
+		AuthType type = AuthType.SIMPLEBIND;
+		try {
+			type = AuthType.valueOf(ldap_auth_type);
+		} catch (Exception e) {
+			log.error(String.format("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type));
+		}
+		
+		String ldap_prov_type = config.getProperty(CONFIGKEY_LDAP_PROV_TYPE, "");
+		Provisionning prov = Provisionning.AUTOCREATE;
+		try {
+			prov = Provisionning.valueOf(ldap_prov_type);
+		} catch (Exception e) {
+			log.error(String.format("ConfigKey in Ldap Config contains invalid provisionning type : '%s' -> Defaulting to %s", ldap_prov_type, prov));
+		}
+		
+		String ldap_deref_mode = config.getProperty(CONFIGKEY_LDAP_DEREF_MODE, "");
+		AliasDerefMode derefMode = AliasDerefMode.DEREF_ALWAYS;
+		try {
+			derefMode = AliasDerefMode.getDerefMode(ldap_deref_mode);
+		} catch (Exception e) {
+			log.error(String.format("ConfigKey in Ldap Config contains invalid deref mode : '%s' -> Defaulting to %s", ldap_deref_mode, derefMode));
+		}
+		
+		if (AuthType.NONE == type && Provisionning.NONE == prov) {
+			log.error("Both AuthType and Provisionning are NONE!");
+			return null;
+		}
+		boolean useAdminForAttrs = true;
+		try {
+			useAdminForAttrs = "true".equals(config.getProperty(CONFIGKEY_LDAP_USE_ADMIN_4ATTRS, ""));
+		} catch (Exception e) {
+			//no-op
+		}
+		if (AuthType.NONE == type && !useAdminForAttrs) {
+			log.error("Unable to get Attributes, please change Auth type and/or Use Admin to get attributes");
+			return null;
+		}
+
+		// Connection URL
+		String ldap_host = config.getProperty(CONFIGKEY_LDAP_HOST);
+		int ldap_port = Integer.parseInt(config.getProperty(CONFIGKEY_LDAP_PORT, "389"));
+		boolean ldap_secure = "true".equals(config.getProperty(CONFIGKEY_LDAP_SECURE, "false"));
+
+		// Username for LDAP SERVER himself
+		String ldap_admin_dn = config.getProperty(CONFIGKEY_LDAP_ADMIN_DN);
+
+		// Password for LDAP SERVER himself
+		String ldap_admin_passwd = config.getProperty(CONFIGKEY_LDAP_ADMIN_PASSWD);
+
+		User u = null;
+		LdapConnection conn = null;
+		try {
+			boolean authenticated = true;
+			conn = new LdapNetworkConnection(ldap_host, ldap_port, ldap_secure);
+			Dn userDn = null;
+			Entry entry = null;
+			switch (type) {
+				case SEARCHANDBIND:
+				{
+					bindAdmin(conn, ldap_admin_dn, ldap_admin_passwd);
+					Dn baseDn = new Dn(config.getProperty(CONFIGKEY_LDAP_SEARCH_BASE, ""));
+					String searchQ = String.format(config.getProperty(CONFIGKEY_LDAP_SEARCH_QUERY, "%s"), user);
+					SearchScope scope = SearchScope.valueOf(config.getProperty(CONFIGKEY_LDAP_SEARCH_SCOPE, SearchScope.ONELEVEL.name()));
+			        
+					EntryCursor cursor = new EntryCursorImpl(conn.search(
+							new SearchRequestImpl()
+								.setBase(baseDn)
+								.setFilter(searchQ)
+								.setScope(scope)
+								.addAttributes("*")
+								.setDerefAliases(derefMode)));
+					while (cursor.next()) {
+						try {
+							Entry e = cursor.get();
+							if (userDn != null) {
+								log.error("more than 1 user found in LDAP");
+								throw new OmException(-1L);
+							}
+							userDn = e.getDn();
+							if (useAdminForAttrs) {
+								entry = e;
+							}
+						} catch (CursorLdapReferralException cle) {
+							log.warn("Referral LDAP entry found, ignore it");
+						}
+					}
+					cursor.close();
+					if (userDn == null) {
+						log.error("NONE users found in LDAP");
+						throw new OmException(-11L);
+					}
+					conn.bind(userDn, passwd);
+				}
+					break;
+				case SIMPLEBIND:
+				{
+					userDn = getUserDn(config, user);
+					conn.bind(userDn, passwd);
+				}
+					break;
+				case NONE:
+				default:
+					authenticated = false;
+					break;
+			}
+			u = authenticated ? userDao.getByName(user, Type.ldap) : userDao.login(user, passwd);
+			if (u == null && Provisionning.AUTOCREATE != prov) {
+				log.error("User not found in OM DB and Provisionning.AUTOCREATE was not set");
+				throw new OmException(-11L);
+			} else if (u != null && !domainId.equals(u.getDomainId())) {
+				log.error("User found in OM DB, but domains are differ");
+				throw new OmException(-11L);
+			}
+			if (authenticated && entry == null) {
+				if (useAdminForAttrs) {
+					bindAdmin(conn, ldap_admin_dn, ldap_admin_passwd);
+				}
+				entry = conn.lookup(userDn);
+			}
+			switch (prov) {
+				case AUTOUPDATE:
+				case AUTOCREATE:
+					if (entry == null) {
+						log.error("LDAP entry is null, search or lookup by Dn failed");
+						throw new OmException(-11L);
+					}
+					if (u == null) {
+						Set<Right> rights = UserDao.getDefaultRights();
+						rights.remove(Right.Login);
+
+						u = new User();
+						u.setType(Type.ldap);
+						u.setRights(rights);
+						u.setDomainId(domainId);
+						u.getOrganisation_users().add(new Organisation_Users(orgDao.get(cfgDao.getConfValue("default_domain_id", Long.class, "-1"))));
+						u.setLogin(user);
+						u.setAge(new Date());
+						u.setShowContactDataToContacts(true);
+						u.setAdresses(new Address());
+						u.setLanguage_id(cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1"));
+						u.setSalutations_id(1L);
+					}
+					if ("true".equals(config.getProperty(CONFIGKEY_LDAP_SYNC_PASSWD_OM, ""))) {
+						u.updatePassword(cfgDao, passwd);
+					}
+					u.setLastname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_LASTNAME, LDAP_KEY_LASTNAME));
+					u.setFirstname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_FIRSTNAME, LDAP_KEY_FIRSTNAME));
+					u.getAdresses().setEmail(getAttr(config, entry, CONFIGKEY_LDAP_KEY_MAIL, LDAP_KEY_MAIL));
+					u.getAdresses().setStreet(getAttr(config, entry, CONFIGKEY_LDAP_KEY_STREET, LDAP_KEY_STREET));
+					u.getAdresses().setAdditionalname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME, LDAP_KEY_ADDITIONAL_NAME));
+					u.getAdresses().setFax(getAttr(config, entry, CONFIGKEY_LDAP_KEY_FAX, LDAP_KEY_FAX));
+					u.getAdresses().setZip(getAttr(config, entry, CONFIGKEY_LDAP_KEY_ZIP, LDAP_KEY_ZIP));
+					u.getAdresses().setStates(stateDao.getStateByName(getAttr(config, entry, CONFIGKEY_LDAP_KEY_COUNTRY, LDAP_KEY_COUNTRY)));
+					u.getAdresses().setTown(getAttr(config, entry, CONFIGKEY_LDAP_KEY_TOWN, LDAP_KEY_TOWN));
+					u.getAdresses().setPhone(getAttr(config, entry, CONFIGKEY_LDAP_KEY_PHONE, LDAP_KEY_PHONE));
+					String tz = getAttr(config, entry, CONFIGKEY_LDAP_TIMEZONE_NAME, LDAP_KEY_TIMEZONE);
+					if (tz == null) {
+						tz = config.getProperty(CONFIGKEY_LDAP_TIMEZONE_NAME, null);
+					}
+					u.setTimeZoneId(timezoneUtil.getTimeZone(tz).getID());
+					String picture = getAttr(config, entry, CONFIGKEY_LDAP_PICTURE_URI, LDAP_KEY_PICTURE_URI);
+					if (picture == null) {
+						picture = config.getProperty(CONFIGKEY_LDAP_PICTURE_URI, null);
+					}
+					u.setPictureuri(picture);
+					
+					u = userDao.update(u, null);
+					break;
+				case NONE:
+				default:
+					break;
+			}
+		} catch (LdapAuthenticationException ae) {
+			log.error("Not authenticated.", ae);
+			throw new OmException(-11L);
+		} catch (OmException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("Unexpected exception.", e);
+			throw new OmException(e);
+		} finally {
+			if (conn != null) {
+				try {
+					conn.unBind();
+					conn.close();
+				} catch (Exception e) {
+					log.error("Unexpected exception.", e);
+					throw new OmException(e);
+				}
+			}
+		}
+		return u;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/mail/MailHandler.java b/src/main/java/org/apache/openmeetings/mail/MailHandler.java
new file mode 100644
index 0000000..ffeda85
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/mail/MailHandler.java
@@ -0,0 +1,267 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.mail;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+import javax.activation.DataHandler;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.basic.MailMessageDao;
+import org.apache.openmeetings.db.entity.basic.MailMessage;
+import org.apache.openmeetings.db.entity.basic.MailMessage.Status;
+import org.apache.openmeetings.util.mail.MailUtil;
+import org.apache.openmeetings.util.mail.SmtpAuthenticator;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.task.TaskExecutor;
+
+import com.sun.mail.util.MailSSLSocketFactory;
+
+/**
+ * 
+ * @author swagner
+ * 
+ * For a documentation about Javax mail please see fro example:
+ * http://connector.sourceforge.net/doc-files/Properties.html
+ * 
+ */
+public class MailHandler {
+	private static final Logger log = Red5LoggerFactory.getLogger(MailHandler.class, webAppRootKey);
+	private static final int MAIL_SEND_TIMEOUT = 60 * 60 * 1000; // 1 hour
+	private static final int MAXIMUM_ERROR_COUNT = 5;
+	
+	@Autowired
+	private ConfigurationDao cfgDao;
+	@Autowired
+	private TaskExecutor taskExecutor;
+	@Autowired
+	private MailMessageDao mailMessageDao;
+	private String smtpServer;
+	private String smtpPort;
+	private String from;
+	private String mailAuthUser;
+	private String mailAuthPass;
+	private boolean mailTls;
+	private boolean mailAddReplyTo;
+	private int smtpConnectionTimeOut;
+	private int smtpTimeOut;
+
+	private void init() {
+		smtpServer = cfgDao.getConfValue("smtp_server", String.class, null);
+		smtpPort = cfgDao.getConfValue("smtp_port", String.class, "25");
+		from = cfgDao.getConfValue("system_email_addr", String.class, null);
+		mailAuthUser = cfgDao.getConfValue("email_username", String.class, null);
+		mailAuthPass = cfgDao.getConfValue("email_userpass", String.class, null);
+		mailTls = "1".equals(cfgDao.getConfValue("mail.smtp.starttls.enable", String.class, "0"));
+		mailAddReplyTo = "1".equals(cfgDao.getConfValue("inviter.email.as.replyto", String.class, "1"));
+		smtpConnectionTimeOut = cfgDao.getConfValue("mail.smtp.connection.timeout", Integer.class, "30000");
+		smtpTimeOut = cfgDao.getConfValue("mail.smtp.timeout", Integer.class, "30000");
+	}
+	
+	protected MimeMessage appendIcsBody(MimeMessage msg, MailMessage m) throws Exception {
+		log.debug("setMessageBody for iCal message");
+		// -- Create a new message --
+		Multipart multipart = new MimeMultipart();
+
+		Multipart multiBody = new MimeMultipart("alternative");
+		BodyPart html = new MimeBodyPart();
+		html.setDataHandler(new DataHandler(new ByteArrayDataSource(m.getBody(), "text/html; charset=UTF-8")));
+		multiBody.addBodyPart(html);
+
+		BodyPart iCalContent = new MimeBodyPart();
+		iCalContent.addHeader("content-class", "urn:content-classes:calendarmessage");
+		iCalContent.setDataHandler(new DataHandler(new ByteArrayDataSource(new ByteArrayInputStream(m.getIcs()),
+				"text/calendar; charset=UTF-8; method=REQUEST")));
+		multiBody.addBodyPart(iCalContent);
+		BodyPart body = new MimeBodyPart();
+		body.setContent(multiBody);
+		multipart.addBodyPart(body);
+		
+		BodyPart iCalAttachment = new MimeBodyPart();
+		iCalAttachment.setDataHandler(new DataHandler(new ByteArrayDataSource(new ByteArrayInputStream(m.getIcs()),
+				"application/ics")));
+		iCalAttachment.removeHeader("Content-Transfer-Encoding");
+		iCalAttachment.addHeader("Content-Transfer-Encoding", "base64");
+		iCalAttachment.removeHeader("Content-Type");
+		iCalAttachment.addHeader("Content-Type", "application/ics");
+		iCalAttachment.setFileName("invite.ics");
+		multipart.addBodyPart(iCalAttachment);
+
+		msg.setContent(multipart);
+		return msg;
+	}
+	
+	private MimeMessage appendBody(MimeMessage msg, MailMessage m) throws MessagingException, IOException {
+		// -- Set the subject and body text --
+		msg.setDataHandler(new DataHandler(new ByteArrayDataSource(m.getBody(), "text/html; charset=\"utf-8\"")));
+
+		// -- Set some other header information --
+		msg.setHeader("X-Mailer", "XML-Mail");
+		msg.setSentDate(new Date());
+		
+		return msg;
+	}
+	
+	private MimeMessage getBasicMimeMessage() throws Exception {
+		log.debug("getBasicMimeMessage");
+		if (smtpServer == null) {
+			init();
+		}
+		Properties props = new Properties(System.getProperties());
+
+		props.put("mail.smtp.host", smtpServer);
+		props.put("mail.smtp.port", smtpPort);
+		
+		props.put("mail.smtp.connectiontimeout", smtpConnectionTimeOut); 
+		props.put("mail.smtp.timeout", smtpTimeOut);
+
+		if (mailTls) {
+			props.put("mail.smtp.starttls.enable", "true");
+			MailSSLSocketFactory sf = new MailSSLSocketFactory();
+		    sf.setTrustAllHosts(true);
+		    props.put("mail.smtp.ssl.socketFactory", sf);
+		}
+
+		// Check for Authentication
+		Session session = null;
+		if (mailAuthUser != null && mailAuthUser.length() > 0
+				&& mailAuthPass != null && mailAuthPass.length() > 0) {
+			// use SMTP Authentication
+			props.put("mail.smtp.auth", "true");
+			session = Session.getInstance(props, new SmtpAuthenticator(mailAuthUser, mailAuthPass));
+		} else {
+			// not use SMTP Authentication
+			session = Session.getInstance(props, null);
+		}
+
+		// Building MimeMessage
+		MimeMessage msg = new MimeMessage(session);
+		msg.setFrom(new InternetAddress(from));
+		return msg;
+	}
+	
+	private MimeMessage getMimeMessage(MailMessage m) throws Exception {
+		log.debug("getMimeMessage");
+		// Building MimeMessage
+		MimeMessage msg = getBasicMimeMessage();
+		msg.setSubject(m.getSubject(), "UTF-8");
+		String replyTo = m.getReplyTo();
+		if (replyTo != null && mailAddReplyTo) {
+			log.debug("setReplyTo " + replyTo);
+			if (MailUtil.matches(replyTo)) {
+				msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
+			}
+		}
+		msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(m.getRecipients(), false));
+		
+		return m.getIcs() == null ? appendBody(msg, m) : appendIcsBody(msg, m);
+	}
+	
+	public void send(String toEmail, String subj, String message) {
+		send(toEmail, null, subj, message);
+	}
+	
+	public void send(String toEmail, String replyTo, String subj, String message) {
+		send(new MailMessage(toEmail, replyTo, subj, message));
+	}
+	
+	public void send(MailMessage m) {
+		send(m, false);
+	}
+	
+	public void send(final MailMessage m, boolean send) {
+		if (send) {
+			if (m.getId() != null) {
+				m.setStatus(Status.SENDING);
+				mailMessageDao.update(m, null);
+			}
+			taskExecutor.execute(new Runnable() {
+				public void run() {
+					log.debug("Message sending in progress");
+					log.debug("  To: " + m.getRecipients());
+					log.debug("  Subject: " + m.getSubject());
+
+					// -- Send the message --
+					try {
+						Transport.send(getMimeMessage(m));
+						m.setLastError("");
+						m.setStatus(Status.DONE);
+					} catch (Exception e) {
+						log.error("Error while sending message", e);
+						m.setErrorCount(m.getErrorCount() + 1);
+						StringWriter sw = new StringWriter();
+						PrintWriter pw = new PrintWriter(sw);
+						e.printStackTrace(pw);
+						pw.close();
+						m.setLastError(sw.getBuffer().toString());
+						m.setStatus(m.getErrorCount() < MAXIMUM_ERROR_COUNT ? Status.NONE : Status.ERROR);
+					}
+					if (m.getId() != null) {
+						mailMessageDao.update(m, null);
+					}
+				}
+			});
+		} else {
+			m.setStatus(Status.NONE);
+			mailMessageDao.update(m, null);
+		}
+	}
+	
+	public void resetSendingStatus() {
+		log.debug("resetSendingStatus enter ...");
+		Calendar c = Calendar.getInstance();
+		c.add(Calendar.MILLISECOND, -MAIL_SEND_TIMEOUT);
+		mailMessageDao.resetSendingStatus(c);
+		log.debug("... resetSendingStatus done.");
+	}
+	
+	public void sendMails() throws Exception {
+		init();
+		log.debug("sendMails enter ...");
+		List<MailMessage> list = mailMessageDao.get(0, 1);
+		log.debug("Number of emails in init queue " + list.size());
+		while (!list.isEmpty()) {
+			send(list.get(0), true);
+			list = mailMessageDao.get(0, 1);
+		}
+		log.debug("... sendMails done.");
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/mail/SMSHandler.java b/src/main/java/org/apache/openmeetings/mail/SMSHandler.java
new file mode 100644
index 0000000..f78bfca
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/mail/SMSHandler.java
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.mail;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.smslib.Message.MessageEncodings;
+import org.smslib.OutboundMessage;
+import org.smslib.Service;
+import org.smslib.http.BulkSmsHTTPGateway;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.task.TaskExecutor;
+
+/**
+ * 
+ * @author iarkh
+ * 
+ */
+
+public class SMSHandler {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			SMSHandler.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	protected ConfigurationDao configurationDao;
+	@Autowired
+	protected TaskExecutor taskExecutor;
+
+	private BulkSmsHTTPGateway gateway = null;
+	
+	private boolean checkBalance() throws Exception {
+		if (gateway == null) {
+			String smsProvider = configurationDao.getConfValue("sms.provider", String.class, null);
+			String smsUsername = configurationDao.getConfValue("sms.username", String.class, null);
+			String smsUserpass = configurationDao.getConfValue("sms.userpass", String.class, null);
+
+			if (smsProvider == null || smsProvider.length() == 0 ||
+					smsUsername == null || smsUsername.length() == 0) {
+				log.error("SMS Provider is not configured properly!");
+				return false;
+			}
+			gateway = new BulkSmsHTTPGateway(smsProvider, smsUsername, smsUserpass);
+			gateway.setOutbound(true);
+			Service.getInstance().addGateway(gateway);
+			Service.getInstance().startService();
+		}
+		return gateway.queryBalance() >= 1; 
+	}
+	
+	public boolean sendSMS(String phone, String subj, long language_id) {
+		try {
+			taskExecutor.execute(new SMSSenderTask(phone, subj, language_id));
+			return true;
+		} catch (Exception ex) {
+			log.error("sendSMS", ex);
+			return false;
+		}
+	}
+	
+	protected class SMSSenderTask implements Runnable {
+		private final String phone;
+		private final String subject;
+		private long language_id;
+
+		public SMSSenderTask(String phone, String subject, long language_id) {
+			this.phone = phone;
+			this.subject = subject;
+			this.language_id = language_id;
+		}
+
+		public void run() {
+			this.send();
+		}
+
+		/**
+		 * Sending an SMS with the given values.
+		 * @return <code>true</code> if sms was sent successfully, <code>false</code> otherwise.
+		 */
+		public boolean send() {
+			try {
+				log.debug("SMS sending to: " + phone + ", subject is: " + subject);
+				if (checkBalance()) {
+					OutboundMessage msg = new OutboundMessage(phone, subject);
+					if (language_id != 1) {
+						msg.setEncoding(MessageEncodings.ENCUCS2);
+					}
+					return Service.getInstance().sendMessage(msg);
+				} else {
+					log.error("Error: insufficient funds on SMS provider account!");
+					return false; 
+				}
+			} catch (Exception ex) {
+				log.error("Error sending sms: ", ex);
+				return false;
+			} 
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/quartz/scheduler/MeetingReminderJob.java b/src/main/java/org/apache/openmeetings/quartz/scheduler/MeetingReminderJob.java
new file mode 100644
index 0000000..e62067a
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/quartz/scheduler/MeetingReminderJob.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.quartz.scheduler;
+
+
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class MeetingReminderJob {
+	private static Logger log = Red5LoggerFactory.getLogger(MeetingReminderJob.class, OpenmeetingsVariables.webAppRootKey);
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	
+	public void doIt() {
+		log.debug("MeetingReminderJob.execute");
+		try {
+			appointmentLogic.doScheduledMeetingReminder();
+		} catch (Exception err){
+			log.error("execute",err);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/quartz/scheduler/SessionClearJob.java b/src/main/java/org/apache/openmeetings/quartz/scheduler/SessionClearJob.java
new file mode 100644
index 0000000..c1abc2b
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/quartz/scheduler/SessionClearJob.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.quartz.scheduler;
+
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+ 
+public class SessionClearJob {
+	private static Logger log = Red5LoggerFactory.getLogger(SessionClearJob.class, OpenmeetingsVariables.webAppRootKey);
+	@Autowired
+	private SessiondataDao sessiondataDao;
+
+	public void doIt() {
+		log.trace("SessionClearJob.execute");
+		try {
+			// TODO Generate report
+			sessiondataDao.clearSessionTable();
+		} catch (Exception err){
+			log.error("execute",err);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/quartz/scheduler/TestSetupCleanupJob.java b/src/main/java/org/apache/openmeetings/quartz/scheduler/TestSetupCleanupJob.java
new file mode 100644
index 0000000..7e4d154
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/quartz/scheduler/TestSetupCleanupJob.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.quartz.scheduler;
+
+import java.io.File;
+import java.io.FileFilter;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class TestSetupCleanupJob {
+	private static Logger log = Red5LoggerFactory.getLogger(TestSetupCleanupJob.class, OpenmeetingsVariables.webAppRootKey);
+	private long expirationInterval = 60 * 60 * 1000; // 1 hour
+
+	public void doIt() {
+		log.debug("TestSetupClearJob.execute");
+		try {
+			//FIXME need to move all these staff to helper
+			File[] folders = OmFileHelper.getStreamsDir().listFiles();
+			if (folders != null) {
+				for (File folder : folders) {
+					if (folder.isDirectory()) {
+						//TODO need to rework this and remove hardcodings
+						for (File file : folder.listFiles(new FileFilter() {
+							public boolean accept(File file) {
+								return file.getName().startsWith("TEST_SETUP_");
+							}
+						}))
+						{
+							if (file.isFile() && file.lastModified() + expirationInterval < System.currentTimeMillis()) {
+								log.debug("expired TEST SETUP found: " + file.getCanonicalPath());
+								file.delete();
+							}
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			log.error("Unexpected exception while processing tests setup videous.", e);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/ChatService.java b/src/main/java/org/apache/openmeetings/remote/ChatService.java
new file mode 100644
index 0000000..bd0d942
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/ChatService.java
@@ -0,0 +1,375 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.data.whiteboard.EmoticonsManager;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.remote.util.SessionVariablesUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.stringhandlers.ChatString;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IClient;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.api.service.IServiceCapableConnection;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebawagner
+ *
+ */
+public class ChatService implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(ChatService.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private ISessionManager sessionManager = null;
+	@Autowired
+	private EmoticonsManager emoticonsManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private UserManager userManager;
+	
+	//number of items in the chat room history
+	private static final int chatRoomHistory = 50;
+	
+	private static LinkedHashMap<Long,List<HashMap<String,Object>>> myChats = new LinkedHashMap<Long,List<HashMap<String,Object>>>();
+	
+	private String parseDateAsTimeString() {
+		Calendar cal=Calendar.getInstance();
+		
+		int h = cal.get(Calendar.HOUR_OF_DAY);
+		int m = cal.get(Calendar.MINUTE);
+
+		String str_h,str_m;
+		if (h<10) 
+			str_h = "0"+Integer.toString(h);
+		else
+			str_h = Integer.toString(h);
+
+		if (m<10) 
+			str_m = "0"+Integer.toString(m);
+		else
+			str_m = Integer.toString(m);
+		
+		return str_h+':'+str_m;
+	}
+
+	public void sendChatMessage(String message) {
+		IConnection current = Red5.getConnectionLocal();
+		Client client = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		List<String> msg = new ArrayList<String>();
+		msg.add("chat"); //'privatechat'
+		msg.add(""); //date-time
+		msg.add("newtextmessage");
+		msg.add(client.getUsername());
+		msg.add(message);
+		msg.add(client.getUsercolor());
+		msg.add(client.getPublicSID()); //om[6] = parent.parent.isPrivate ? parent.parent.parent.refObj.publicSID : canvas.publicSID;
+		msg.add("false");// canvas.isrtl;
+		msg.add("" + client.getUser_id());
+		Room room = roomDao.get(client.getRoom_id());
+		msg.add("" + (room.getChatModerated() && !(client.getIsMod() || client.getIsSuperModerator())));
+		sendMessageWithClient(msg);
+	}
+	
+	/**
+	 * sends a Chat-Message
+	 * to all members of the Chatroom
+	 * and all additional users (waitng for a free entry for example)
+	 * 
+	 * @param newMessage
+	 * @return - 1 in case of success, -1 otherwise
+	 */
+	@SuppressWarnings("unchecked")
+	public int sendMessageWithClient(Object newMessage) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Long room_id = currentClient.getRoom_id();			
+			log.debug("room_id: " + room_id);
+			
+			if (room_id == null) {
+				return 1; //TODO weird
+			}
+			Room room = roomDao.get(room_id);
+			@SuppressWarnings("rawtypes")
+			ArrayList messageMap = (ArrayList) newMessage;
+			// adding delimiter space, cause otherwise an emoticon in the last
+			// string would not be found
+			String messageText = messageMap.get(4) + " ";
+			LinkedList<String[]> parsedStringObjects = ChatString.parseChatString(messageText, emoticonsManager.getEmotfilesList(), room.getAllowFontStyles());
+			// log.error("parsedStringObjects"+parsedStringObjects.size());
+			log.debug("size:" + messageMap.size());
+			messageMap.add(parsedStringObjects);
+			newMessage = messageMap;			
+
+			boolean needModeration = Boolean.valueOf("" + messageMap.get(9));
+			List<HashMap<String, Object>> myChatList = myChats.get(room_id);
+			if (myChatList == null) myChatList = new LinkedList<HashMap<String, Object>>();
+			
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("message", newMessage);
+			String publicSID = "" + messageMap.get(6);
+			if (!publicSID.equals(currentClient.getPublicSID())) {
+				hsm.put("client", sessionManager.getClientByPublicSID("" + messageMap.get(6), false, null));
+				//need to remove unconfirmed chat message if any
+				for (int i = myChatList.size() - 1; i > -1; --i) {
+					Client msgClient = (Client)myChatList.get(i).get("client");
+					@SuppressWarnings("rawtypes")
+					List msgList = (List)myChatList.get(i).get("message");
+					if (publicSID.equals(msgClient.getPublicSID())
+						&& ("" + msgList.get(4)).equals(messageMap.get(4))
+						&& ("" + msgList.get(1)).equals(messageMap.get(1))
+						&& Boolean.valueOf("" + msgList.get(9))) {
+						myChatList.remove(i);
+						break;
+					}
+				}
+				
+			} else {
+				// add server time
+				messageMap.set(1, parseDateAsTimeString());
+				hsm.put("client", currentClient);
+			}
+
+			if (myChatList.size() == chatRoomHistory) myChatList.remove(0);
+			myChatList.add(hsm);
+			myChats.put(room_id, myChatList);
+			log.debug("SET CHATROOM: " + room_id);
+
+			//broadcast to everybody in the room/domain
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						
+						Client rcl = this.sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+						
+						if (rcl == null) {
+							continue;
+						}
+						if (rcl.getIsAVClient()) {
+							continue;
+						}
+						if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) {
+    						continue;
+    					}
+						if (needModeration && Boolean.TRUE != rcl.getIsMod() && Boolean.TRUE != rcl.getIsSuperModerator()) {
+							continue;
+						}
+						((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient",new Object[] { hsm }, this);
+    			 	}
+    			}
+			}
+		} catch (Exception err) {
+			log.error("[ChatService sendMessageWithClient] ",err);
+			return -1;
+		}
+		return 1;
+	}
+
+	//FIXME copy/past need to be removed
+	@SuppressWarnings("unchecked")
+	public int sendMessageWithClientByPublicSID(Object newMessage, String publicSID) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = this.sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Long room_id = currentClient.getRoom_id();
+			Room room = roomDao.get(room_id);
+			log.debug("room_id: " + room_id);
+
+			@SuppressWarnings("rawtypes")
+			ArrayList messageMap = (ArrayList) newMessage;
+			// adding delimiter space, cause otherwise an emoticon in the last
+			// string would not be found
+			String messageText = messageMap.get(4).toString() + " ";
+			// add server time
+			messageMap.set(1, parseDateAsTimeString());
+			LinkedList<String[]> parsedStringObjects = ChatString.parseChatString(messageText, emoticonsManager.getEmotfilesList(), room.getAllowFontStyles());
+			// log.error("parsedStringObjects"+parsedStringObjects.size());
+			log.debug("size:" + messageMap.size());
+			messageMap.add(parsedStringObjects);
+			newMessage = messageMap;
+
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("client", currentClient);
+			hsm.put("message", newMessage);
+
+			// broadcast to everybody in the room/domain
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						IClient client = conn.getClient();
+						if (SessionVariablesUtil.isScreenClient(client)) {
+							// screen sharing clients do not receive events
+							continue;
+						} else if (SessionVariablesUtil.isAVClient(client)) {
+							// AVClients or potential AVClients do not receive events
+							continue;
+						}
+
+						if (SessionVariablesUtil.getPublicSID(client).equals(publicSID)
+								|| SessionVariablesUtil.getPublicSID(client).equals(
+										currentClient.getPublicSID())) {
+							((IServiceCapableConnection) conn).invoke(
+								"sendVarsToMessageWithClient",
+									new Object[] { hsm }, this);
+						}
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[ChatService sendMessageWithClient] ", err);
+			return -1;
+		}
+		return 1;
+	}
+
+	public List<HashMap<String,Object>> clearChat() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = this.sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Long room_id = currentClient.getRoom_id();
+			
+			Long chatroom = room_id;
+			log.debug("### GET CHATROOM: "+chatroom);
+			
+			List<HashMap<String,Object>> myChatList = myChats.get(chatroom);
+			myChatList = new LinkedList<HashMap<String,Object>>();
+			
+			myChats.put(chatroom,myChatList);
+			
+			HashMap<String,Object> hsm = new HashMap<String,Object>();
+			
+			scopeApplicationAdapter.sendMessageToCurrentScope("clearChatContent", hsm, true);
+			
+			return myChatList;
+			
+		} catch (Exception err) {
+			log.error("[clearChat] ",err);
+			return null;
+		}
+	}
+	
+	public List<HashMap<String,Object>> getRoomChatHistory() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = this.sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Long room_id = currentClient.getRoom_id();
+			
+			log.debug("GET CHATROOM: " + room_id);
+			
+			List<HashMap<String,Object>> myChatList = myChats.get(room_id);
+			if (myChatList==null) myChatList = new LinkedList<HashMap<String,Object>>();
+			
+			if (Boolean.TRUE != currentClient.getIsMod() && Boolean.TRUE != currentClient.getIsSuperModerator()) {
+				//current user is not moderator, chat history need to be filtered
+				List<HashMap<String,Object>> tmpChatList = new LinkedList<HashMap<String,Object>>(myChatList);
+				for (int i = tmpChatList.size() - 1; i > -1; --i) {
+					@SuppressWarnings("rawtypes")
+					List msgList = (List)tmpChatList.get(i).get("message");
+					if (Boolean.valueOf("" + msgList.get(9))) { //needModeration
+						tmpChatList.remove(i);
+					}
+				}
+				myChatList = tmpChatList;
+			}
+			
+			return myChatList;
+		} catch (Exception err) {
+			log.error("[getRoomChatHistory] ",err);
+			return null;
+		}
+	}
+	
+	/**
+	 * gets the chat history by string for non-conference-clients
+	 * 
+	 * @param room_id
+	 * @return - chat history of the room given, null in case of exception
+	 */
+	public List<HashMap<String,Object>> getRoomChatHistoryByString(Long room_id) {
+		try {
+			
+			Long chatroom = room_id;
+			log.debug("GET CHATROOM: "+chatroom);
+			
+			List<HashMap<String,Object>> myChatList = myChats.get(chatroom);
+			if (myChatList==null) myChatList = new LinkedList<HashMap<String,Object>>();	
+			
+			return myChatList;
+		} catch (Exception err) {
+			log.error("[getRoomChatHistory] ",err);
+			return null;
+		}
+	}	
+	
+	public void resultReceived(IPendingServiceCall arg0) {
+		// TODO Auto-generated method stub
+		log.error("resultReceived ChatService "+arg0);
+	}
+	
+	public LinkedList<LinkedList<String>> getAllPublicEmoticons(){
+		try {
+			LinkedList<LinkedList<String>> publicemotes = new LinkedList<LinkedList<String>>();
+			LinkedList<LinkedList<String>> allEmotes = emoticonsManager.getEmotfilesList();
+			for (Iterator<LinkedList<String>> iter = allEmotes.iterator();iter.hasNext();){
+				LinkedList<String> emot = iter.next();
+				LinkedList<String> emotPub = new LinkedList<String>();
+				if (emot.get((emot.size()-1)).equals("y")){
+					emotPub.add(emot.get(0));
+					emotPub.add(emot.get(1).replace("\\", ""));
+					if (emot.size()>4) {
+						emotPub.add(emot.get(2).replace("\\", ""));
+						emotPub.add(emot.get(3));
+						emotPub.add(emot.get(4));
+					} else {
+						emotPub.add(emot.get(2));
+						emotPub.add(emot.get(3));
+					}
+					publicemotes.add(emotPub);
+				}
+			}
+			return publicemotes;
+		} catch (Exception err) {
+			log.error("[getAllPublicEmoticons] ",err);
+			return null;
+		}
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java b/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java
new file mode 100644
index 0000000..248f8ee
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/ConferenceLibrary.java
@@ -0,0 +1,309 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.data.whiteboard.WhiteboardManager;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.file.LibraryPresentation;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.documents.LibraryChartLoader;
+import org.apache.openmeetings.documents.LibraryDocumentConverter;
+import org.apache.openmeetings.documents.LibraryWmlLoader;
+import org.apache.openmeetings.documents.LoadLibraryPresentation;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.crypt.MD5;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.api.service.IServiceCapableConnection;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class ConferenceLibrary implements IPendingServiceCallback {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ConferenceLibrary.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+	@Autowired
+	private LibraryWmlLoader libraryWmlLoader;
+	@Autowired
+	private WhiteboardManager whiteboardManagement;
+
+	public LibraryPresentation getPresentationPreviewFileExplorer(String SID,
+			String parentFolder) {
+
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			log.debug("#############users_id : " + users_id);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				File working_dir = new File(OmFileHelper.getUploadFilesDir(), parentFolder);
+				log.debug("############# working_dir : " + working_dir);
+
+				File file = new File(working_dir, OmFileHelper.libraryFileName);
+
+				if (!file.exists()) {
+					throw new Exception(file.getCanonicalPath() + ": does not exist");
+				}
+
+				return LoadLibraryPresentation.parseLibraryFileToObject(file);
+
+			} else {
+				throw new Exception("not Authenticated");
+			}
+
+		} catch (Exception e) {
+			log.error("[getListOfFilesByAbsolutePath]", e);
+			return null;
+		}
+
+	}
+
+	/**
+	 * 
+	 * Save an Object to the library and returns the file-explorer Id
+	 * 
+	 * @param SID
+	 * @param room_id
+	 * @param fileName
+	 * @param tObjectRef
+	 * @return - file-explorer Id in case of success, -1 otherwise
+	 */
+	public Long saveAsObject(String SID, Long room_id, String fileName,
+			Object tObjectRef) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				// LinkedHashMap tObject = (LinkedHashMap)t;
+				// ArrayList tObject = (ArrayList)t;
+
+				log.debug("saveAsObject :1: " + tObjectRef);
+				log.debug("saveAsObject :2: " + tObjectRef.getClass().getName());
+
+				@SuppressWarnings("rawtypes")
+				ArrayList tObject = (ArrayList) tObjectRef;
+
+				log.debug("saveAsObject" + tObject.size());
+
+				String localFileName = MD5.do_checksum(new Date().toString()) + ".wml";
+
+				LibraryDocumentConverter.writeToLocalFolder(localFileName, tObject);
+
+				// String wmlPath = current_dir + File.separatorChar+fileName
+				// +".xml";
+				// OwnerID == null
+				Long fileExplorerId = fileExplorerItemDao.add(fileName, "", 0L,
+						null, room_id, users_id, false, // isFolder
+						false, // isImage
+						false, // isPresentation
+						localFileName, // WML localFileName
+						true, // isStoredWML file
+						true, 0L, "");
+
+				return fileExplorerId;
+			}
+		} catch (Exception err) {
+			log.error("[saveAsObject] ", err);
+		}
+		return -1L;
+	}
+
+	/**
+	 * 
+	 * Loads a Object from the library into the whiteboard of all participant of
+	 * the current room
+	 * 
+	 * @param SID
+	 * @param room_id
+	 * @param fileExplorerItemId
+	 * @param whiteboardId
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public void loadWmlObject(String SID, Long room_id,
+			Long fileExplorerItemId, Long whiteboardId) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				IConnection current = Red5.getConnectionLocal();
+				Client currentClient = this.sessionManager
+						.getClientByStreamId(current.getClient().getId(), null);
+
+				if (currentClient == null) {
+					return;
+				}
+
+				FileExplorerItem fileExplorerItem = fileExplorerItemDao
+						.getFileExplorerItemsById(fileExplorerItemId);
+
+				ArrayList roomItems = libraryWmlLoader.loadWmlFile(fileExplorerItem.getWmlFilePath());
+
+				Map whiteboardObjClear = new HashMap();
+				whiteboardObjClear.put(2, "clear");
+				whiteboardObjClear.put(3, null);
+
+				whiteboardManagement.addWhiteBoardObjectById(
+						room_id, whiteboardObjClear, whiteboardId);
+
+				for (int k = 0; k < roomItems.size(); k++) {
+
+					ArrayList actionObject = (ArrayList) roomItems.get(k);
+
+					Map whiteboardObj = new HashMap();
+					whiteboardObj.put(2, "draw");
+					whiteboardObj.put(3, actionObject);
+
+					whiteboardManagement.addWhiteBoardObjectById(
+							room_id, whiteboardObj, whiteboardId);
+
+				}
+
+				Map<String, Object> sendObject = new HashMap<String, Object>();
+				sendObject.put("id", whiteboardId);
+				sendObject.put("roomitems", roomItems);
+
+				// Notify all Clients of that Scope (Room)
+				for (IConnection conn : current.getScope().getClientConnections()) {
+					if (conn != null) {
+						if (conn instanceof IServiceCapableConnection) {
+							Client rcl = this.sessionManager
+									.getClientByStreamId(conn.getClient()
+											.getId(), null);
+							if ((rcl == null)
+									|| (rcl.getIsScreenClient() != null && rcl
+											.getIsScreenClient())) {
+								continue;
+							} else {
+								((IServiceCapableConnection) conn).invoke(
+										"loadWmlToWhiteboardById",
+										new Object[] { sendObject }, this);
+							}
+						}
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[loadWmlObject] ", err);
+		}
+	}
+
+	/**
+	 * 
+	 * Loads a chart object
+	 * 
+	 * @param SID
+	 * @param room_id
+	 * @param fileName
+	 * @return - chart object
+	 */
+	@SuppressWarnings("rawtypes")
+	public ArrayList loadChartObject(String SID, Long room_id, String fileName) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				return LibraryChartLoader.getInstance().loadChart(OmFileHelper.getUploadRoomDir(room_id.toString()),
+						fileName);
+			}
+		} catch (Exception err) {
+			log.error("[loadChartObject] ", err);
+		}
+		return null;
+	}
+
+	/**
+	 * @param SID
+	 * @param flvFileExplorerId
+	 * @return 1 in case of success, -1 otherwise
+	 */
+	public Long copyFileToCurrentRoom(String SID, Long flvFileExplorerId) {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				IConnection current = Red5.getConnectionLocal();
+				String streamid = current.getClient().getId();
+
+				Client currentClient = this.sessionManager
+						.getClientByStreamId(streamid, null);
+
+				Long room_id = currentClient.getRoom_id();
+
+				if (room_id != null) {
+					File outputFullFlvFile = new File(OmFileHelper.getStreamsHibernateDir()
+						, "UPLOADFLV_" + flvFileExplorerId + ".flv");
+
+					File targetFolder = OmFileHelper.getStreamsSubDir(room_id);
+
+					File targetFullFlvFile = new File(targetFolder
+						, "UPLOADFLV_" + flvFileExplorerId + ".flv");
+					if (outputFullFlvFile.exists() && !targetFullFlvFile.exists()) {
+						FileHelper.copy(outputFullFlvFile, targetFullFlvFile);
+					}
+
+					return 1L;
+				}
+
+			}
+
+		} catch (Exception err) {
+			log.error("[copyFileToCurrentRoom] ", err);
+		}
+		return -1L;
+	}
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/ConferenceService.java b/src/main/java/org/apache/openmeetings/remote/ConferenceService.java
new file mode 100644
index 0000000..bd9e68f
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/ConferenceService.java
@@ -0,0 +1,569 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomModeratorsDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.server.ServerDTO;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebawagner
+ * 
+ */
+public class ConferenceService {
+	private static final Logger log = Red5LoggerFactory.getLogger(ConferenceService.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+	@Autowired
+	private RoomModeratorsDao roomModeratorsDao;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private ISessionManager sessionManager = null;
+	@Autowired
+	private ServerDao serverDao;
+	@Autowired
+	private ConfigurationDao cfgDao;
+
+	/**
+	 * ( get a List of all available Rooms of this organization
+	 * (non-appointments)
+	 * 
+	 * @param SID
+	 * @param organisation_id
+	 * @return - all available Rooms of this organization
+	 */
+	public List<RoomOrganisation> getRoomsByOrganisationAndType(String SID,
+			long organisation_id, long roomtypes_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				log.debug("getRoomsByOrganisationAndType");
+				List<RoomOrganisation> roomOrgsList = roomManager.getRoomsOrganisationByOrganisationIdAndRoomType(organisation_id, roomtypes_id);
+	
+				List<RoomOrganisation> filtered = new ArrayList<RoomOrganisation>();
+	
+				for (Iterator<RoomOrganisation> iter = roomOrgsList.iterator(); iter
+						.hasNext();) {
+					RoomOrganisation orgRoom = iter.next();
+	
+					if (!orgRoom.getRoom().getAppointment()) {
+						orgRoom.getRoom().setCurrentusers(
+								this.getRoomClientsListByRoomId(orgRoom.getRoom()
+										.getRooms_id()));
+						filtered.add(orgRoom);
+					}
+				}
+				return filtered;
+			}
+		} catch (Exception err) {
+			log.error("[getRoomsByOrganisationAndType]", err);
+		}
+		return null;
+	}
+
+	public List<RoomOrganisation> getRoomsByOrganisationWithoutType(
+			String SID, long organisation_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				log.debug("getRoomsByOrganisationAndType");
+				List<RoomOrganisation> roomOrgsList = roomManager.getRoomsOrganisationByOrganisationId(organisation_id);
+				
+				for (RoomOrganisation roomOrg : roomOrgsList) {
+					roomOrg.getRoom().setCurrentusers(sessionManager.getClientListByRoom(roomOrg.getRoom().getRooms_id()));
+				}
+	
+				return roomOrgsList;
+			}
+		} catch (Exception err) {
+			log.error("[getRoomsByOrganisationAndType]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * gets all rooms of an organization TODO:check if the requesting user is
+	 * also member of that organization
+	 * 
+	 * @param SID
+	 * @param organisation_id
+	 * @return - all rooms of an organization
+	 */
+	public SearchResult<RoomOrganisation> getRoomsByOrganisation(String SID,
+			long organisation_id, int start, int max, String orderby,
+			boolean asc) {
+
+		log.debug("getRoomsByOrganisation");
+
+		Long user_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasModLevel(userDao.get(user_id), organisation_id)) {
+			return roomManager.getRoomsOrganisationsByOrganisationId(organisation_id, start, max, orderby, asc);
+		}
+		return null;
+	}
+
+	/**
+	 * get a List of all public availible rooms (non-appointments)
+	 * 
+	 * @param SID
+	 * @param roomtypes_id
+	 * @return - public rooms with given type, null in case of the error
+	 */
+	public List<Room> getRoomsPublic(String SID, Long roomtypes_id) {
+		try {
+			log.debug("getRoomsPublic");
+
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+	
+				List<Room> roomList = roomDao.getPublicRooms(roomtypes_id);
+	
+				// Filter : no appointed meetings
+				List<Room> filtered = new ArrayList<Room>();
+	
+				for (Iterator<Room> iter = roomList.iterator(); iter.hasNext();) {
+					Room rooms = iter.next();
+	
+					if (!rooms.getAppointment()) {
+						rooms.setCurrentusers(this.getRoomClientsListByRoomId(rooms
+								.getRooms_id()));
+						filtered.add(rooms);
+					}
+				}
+	
+				return filtered;
+			}
+		} catch (Exception err) {
+			log.error("[getRoomsByOrganisationAndType]", err);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsPublicWithoutType(String SID) {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+	
+				List<Room> roomList = roomDao.getPublicRooms();
+				
+				for (Room room : roomList) {
+					room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+				}
+	
+				return roomList;
+			}
+		} catch (Exception err) {
+			log.error("[getRoomsPublicWithoutType]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * retrieving ServerTime
+	 * 
+	 * @return - server time
+	 */
+	// --------------------------------------------------------------------------------------------
+	public Date getServerTime() {
+		log.debug("getServerTime");
+
+		return new Date(System.currentTimeMillis());
+
+	}
+
+	// --------------------------------------------------------------------------------------------
+
+	/**
+	 * 
+	 * retrieving Appointment for Room
+	 * 
+	 * @param room_id
+	 * @return - Appointment in case the room is appointment, null otherwise
+	 */
+	public Appointment getAppointMentDataForRoom(Long room_id) {
+		log.debug("getAppointMentDataForRoom");
+
+		Room room = roomDao.get(room_id);
+
+		if (room.getAppointment() == false)
+			return null;
+
+		try {
+			Appointment ment = appointmentLogic.getAppointmentByRoom(room_id);
+
+			return ment;
+		} catch (Exception e) {
+			log.error("getAppointMentDataForRoom " + e.getMessage());
+			return null;
+		}
+
+	}
+
+	// --------------------------------------------------------------------------------------------
+
+	/**
+	 * 
+	 */
+	// --------------------------------------------------------------------------------------------
+	public List<Room> getAppointedMeetings(String SID, Long room_types_id) {
+		log.debug("ConferenceService.getAppointedMeetings");
+
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+			List<Appointment> points = appointmentLogic
+					.getTodaysAppointmentsForUser(users_id);
+			List<Room> result = new ArrayList<Room>();
+
+			if (points != null) {
+				for (int i = 0; i < points.size(); i++) {
+					Appointment ment = points.get(i);
+
+					Long rooms_id = ment.getRoom().getRooms_id();
+					Room rooom = roomDao.get(rooms_id);
+
+					if (!rooom.getRoomtype().getRoomtypes_id()
+							.equals(room_types_id))
+						continue;
+
+					rooom.setCurrentusers(getRoomClientsListByRoomId(rooom
+							.getRooms_id()));
+					result.add(rooom);
+				}
+			}
+
+			log.debug("Found " + result.size() + " rooms");
+			return result;
+
+		} else {
+			return null;
+		}
+
+	}
+
+	// --------------------------------------------------------------------------------------------
+
+	public List<Room> getAppointedMeetingRoomsWithoutType(String SID) {
+		log.debug("ConferenceService.getAppointedMeetings");
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				List<Appointment> appointments = appointmentLogic
+						.getTodaysAppointmentsForUser(users_id);
+				List<Room> result = new ArrayList<Room>();
+
+				if (appointments != null) {
+					for (int i = 0; i < appointments.size(); i++) {
+						Appointment ment = appointments.get(i);
+
+						Long rooms_id = ment.getRoom().getRooms_id();
+						Room rooom = roomDao.get(rooms_id);
+
+						rooom.setCurrentusers(this
+								.getRoomClientsListByRoomId(rooom.getRooms_id()));
+						result.add(rooom);
+					}
+				}
+
+				log.debug("Found " + result.size() + " rooms");
+				return result;
+			}
+		} catch (Exception err) {
+			log.error("[getAppointedMeetingRoomsWithoutType]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @return - all room types available
+	 */
+	public List<RoomType> getRoomTypes(String SID) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			User user = userDao.get(users_id);
+			return roomTypeDao.getAll(user == null
+					? cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1") : user.getLanguage_id());
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @param rooms_id
+	 * @return - room with the id given
+	 */
+	public Room getRoomById(String SID, long rooms_id) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return roomDao.get(rooms_id);
+		}
+		return null;
+	}
+
+	public Room getRoomWithCurrentUsersById(String SID, long rooms_id) {
+		Room room = null;
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			room = roomDao.get(rooms_id);
+			room.setCurrentusers(sessionManager.getClientListByRoom(room.getRooms_id()));
+		}
+		return room;
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @param externalUserId
+	 * @param externalUserType
+	 * @param roomtypes_id
+	 * @return - room with the given external id
+	 */
+	public Room getRoomByExternalId(String SID, Long externalUserId, String externalUserType, long roomtypes_id) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomByExternalId(externalUserId, externalUserType, roomtypes_id);
+		}
+		return null;
+	}
+
+	/**
+	 * gets a list of all available rooms
+	 * 
+	 * @param SID
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @param asc
+	 * @return - list of rooms being searched
+	 */
+	public SearchResult<Room> getRooms(String SID, int start, int max,
+			String orderby, boolean asc, String search) {
+		log.debug("getRooms");
+
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRooms(start, max, orderby, asc, search);
+		}
+		return null;
+	}
+
+	public SearchResult<Room> getRoomsWithCurrentUsers(String SID, int start,
+			int max, String orderby, boolean asc) {
+		log.debug("getRooms");
+
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsers(start, max, orderby, asc);
+		}
+		return null;
+	}
+
+	public List<RoomModerator> getRoomModeratorsByRoomId(String SID,
+			Long roomId) {
+		try {
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				return roomModeratorsDao.getByRoomId(roomId);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[getRoomModeratorsByRoomId]", err);
+			err.printStackTrace();
+		}
+
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param SID
+	 * @param rooms_id
+	 * @return - id of the room being deleted
+	 */
+	public Long deleteRoom(String SID, long rooms_id) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+			return roomManager.deleteRoomById(rooms_id);
+		}
+		return null;
+	}
+	
+	/**
+	 * return all participants of a room
+	 * 
+	 * @param room_id
+	 * @return - true if room is full, false otherwise
+	 */
+	public boolean isRoomFull(Long room_id) {
+		try {
+			Room room = roomDao.get(room_id);
+			
+			if (room.getNumberOfPartizipants() <= this.sessionManager
+					.getClientListByRoom(room_id).size()) {
+				return true;
+			}
+			
+			return false;
+		} catch (Exception err) {
+			log.error("[isRoomFull]", err);
+		}
+		return true;
+	}
+
+	/**
+	 * return all participants of a room
+	 * 
+	 * @param room_id
+	 * @return - all participants of a room
+	 */
+	public List<Client> getRoomClientsListByRoomId(Long room_id) {
+		return sessionManager.getClientListByRoom(room_id);
+	}
+
+	public List<Room> getRoomsWithCurrentUsersByList(String SID, int start, int max, String orderby, boolean asc) {
+		log.debug("getRoomsWithCurrentUsersByList");
+
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsersByList(start, max, orderby, asc);
+		}
+		return null;
+	}
+
+	public List<Room> getRoomsWithCurrentUsersByListAndType(String SID, int start, int max, String orderby, boolean asc, String externalRoomType) {
+		log.debug("getRoomsWithCurrentUsersByListAndType");
+
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomsWithCurrentUsersByListAndType(start, max, orderby, asc, externalRoomType);
+		}
+		return null;
+	}
+
+	public Room getRoomByOwnerAndType(String SID, Long roomtypesId, String roomName) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return roomManager.getRoomByOwnerAndTypeId(users_id,
+					roomtypesId, roomName);
+		}
+		return null;
+	}
+
+	/**
+	 * Gives a {@link Server} entity, in case there is a cluster configured
+	 * 
+	 * @param SID
+	 * @param roomId
+	 * @return null means the user should stay on the master, otherwise a
+	 *         {@link Server} entity is returned
+	 */
+	public ServerDTO getServerForSession(String SID, long roomId) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			List<Server> serverList = serverDao.getActiveServers();
+
+			long minimum = -1;
+			Server result = null;
+			HashMap<Server, List<Long>> activeRoomsMap = new HashMap<Server, List<Long>>();
+			for (Server server : serverList) {
+				List<Long> roomIds = sessionManager.getActiveRoomIdsByServer(server);
+				if (roomIds.contains(roomId)) {
+					// if the room is already opened on a server, redirect the user to that one,
+					log.debug("Room is already opened on a server " + server.getAddress());
+					return new ServerDTO(server);
+				}
+				activeRoomsMap.put(server, roomIds);
+			}
+			for (Map.Entry<Server, List<Long>> entry : activeRoomsMap.entrySet()) {
+				List<Long> roomIds = entry.getValue();
+				Long capacity = roomDao.getRoomsCapacityByIds(roomIds);
+				if (minimum < 0 || capacity < minimum) {
+					minimum = capacity;
+					result = entry.getKey();
+				}
+				log.debug("Checking server: " + entry.getKey() + " Number of rooms " + roomIds.size() + " RoomIds: "
+						+ roomIds + " max(Sum): " + capacity);
+			}
+			return result == null ? null : new ServerDTO(result);
+		}
+
+		log.error("Could not get server for cluster session");
+		// Empty server object
+		return null;
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/ContactService.java b/src/main/java/org/apache/openmeetings/remote/ContactService.java
new file mode 100644
index 0000000..19a301b
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/ContactService.java
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+
+/**
+ * 
+ * @author swagner
+ *
+ */
+public class ContactService {
+	
+
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/DocumentService.java b/src/main/java/org/apache/openmeetings/remote/DocumentService.java
new file mode 100644
index 0000000..456cd61
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/DocumentService.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.util.List;
+
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class DocumentService {
+
+	@SuppressWarnings("unused")
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			DocumentService.class, OpenmeetingsVariables.webAppRootKey);
+
+	public List<?> getUserFiles(String SID, String parentFolder) {
+
+		return null;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/ErrorService.java b/src/main/java/org/apache/openmeetings/remote/ErrorService.java
new file mode 100644
index 0000000..7b656fd
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/ErrorService.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dto.basic.ErrorResult;
+import org.apache.openmeetings.db.entity.basic.ErrorType;
+import org.apache.openmeetings.db.entity.basic.ErrorValue;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class ErrorService {
+	private static final Logger log = Red5LoggerFactory.getLogger(ErrorService.class, webAppRootKey);
+
+	@Autowired
+	private FieldLanguagesValuesDao labelDao;
+	@Autowired
+	private ErrorDao errorDao;
+
+	/**
+	 * Gets an Error-Object by its id TODO: add error-code-handlers -20
+	 * duplicate FileName -21 FileName too short (length = 0) and make the
+	 * persistent in the DataBase
+	 * 
+	 * @param SID
+	 * @param errorid
+	 * @return - ErrorResult object with the id given
+	 */
+	public ErrorResult getErrorByCode(String SID, Long errorid, Long langId) {
+		if (errorid < 0) {
+			log.debug("errorid, language_id: " + errorid + "|" + langId);
+			ErrorValue eValues = errorDao.get(-1 * errorid);
+			if (eValues != null) {
+				ErrorType eType = errorDao.getErrorType(eValues.getErrortype_id());
+				log.debug("eValues.getFieldvalues_id() = " + eValues.getFieldvalues_id());
+				log.debug("eValues.getErrorType() = " + eType);
+				String eValue = labelDao.getString(eValues.getFieldvalues_id(), langId);
+				String tValue = labelDao.getString(eType.getFieldvalues_id(), langId);
+				if (eValue != null) {
+					return new ErrorResult(errorid, eValue, tValue);
+				}
+			}
+		} else {
+			return new ErrorResult(errorid, "Error ... please check your input", "Error");
+		}
+		return null;
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java b/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
new file mode 100644
index 0000000..af82c13
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
@@ -0,0 +1,501 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.openmeetings.converter.BaseConverter;
+import org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask;
+import org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask;
+import org.apache.openmeetings.data.flvrecord.listener.StreamListener;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData.Status;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.api.service.IServiceCapableConnection;
+import org.red5.server.api.stream.IStreamListener;
+import org.red5.server.stream.ClientBroadcastStream;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FLVRecorderService implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(FLVRecorderService.class, webAppRootKey);
+
+	/**
+	 * Stores a reference to all available listeners we need that reference, as the internal references stored with the
+	 * red5 stream object might be gone when the user closes the browser. But each listener has an asynchronous
+	 * component that needs to be closed no matter how the user leaves the application!
+	 */
+	private static final Map<Long, StreamListener> streamListeners = new ConcurrentHashMap<Long, StreamListener>();
+
+	// Spring Beans
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private FlvRecordingDao flvRecordingDaoImpl;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private FlvRecorderConverterTask flvRecorderConverterTask;
+	@Autowired
+	private FlvInterviewConverterTask flvInterviewConverterTask;
+	@Autowired
+	private FlvRecordingLogDao flvRecordingLogDaoImpl;
+	@Autowired
+	private FlvRecordingDao recordingDao;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private FlvRecordingMetaDeltaDao metaDeltaDao;
+	@Autowired
+	private FlvRecordingMetaDataDao metaDataDao;
+
+	public void resultReceived(IPendingServiceCall arg0) {
+	}
+
+	private static String generateFileName(Long flvRecording_id, String streamid) throws Exception {
+		String dateString = CalendarPatterns.getTimeForStreamId(new Date());
+		return "rec_" + flvRecording_id + "_stream_" + streamid + "_" + dateString;
+	}
+
+	public String recordMeetingStream(IConnection current, Client client, String roomRecordingName, String comment, Boolean isInterview) {
+		try {
+			log.debug("##REC:: recordMeetingStream ::");
+
+			Long room_id = client.getRoom_id();
+
+			Date now = new Date();
+
+			FlvRecording flvRecording = new FlvRecording();
+
+			flvRecording.setFileHash("");
+			flvRecording.setFileName(roomRecordingName);
+			flvRecording.setInsertedBy(client.getUser_id());
+			flvRecording.setFolder(false);
+			flvRecording.setIsImage(false);
+			flvRecording.setIsPresentation(false);
+			flvRecording.setIsRecording(true);
+			flvRecording.setComment(comment);
+			flvRecording.setIsInterview(isInterview);
+
+			flvRecording.setRoom_id(room_id);
+			flvRecording.setRecordStart(now);
+
+			flvRecording.setWidth(client.getVWidth());
+			flvRecording.setHeight(client.getVHeight());
+
+			flvRecording.setOwnerId(client.getUser_id());
+			flvRecording.setStatus(FlvRecording.Status.RECORDING);
+			flvRecording = recordingDao.update(flvRecording);
+			// Receive flvRecordingId
+			Long flvRecordingId = flvRecording.getFlvRecordingId();
+			log.debug("##REC:: recording created by USER: " + client.getUser_id());
+
+			// Update Client and set Flag
+			client.setIsRecording(true);
+			client.setFlvRecordingId(flvRecordingId);
+			sessionManager.updateClientByStreamId(client.getStreamid(), client, false, null);
+
+			// get all stream and start recording them
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+
+						// Send every user a notification that the recording did start
+						if (!rcl.getIsAVClient()) {
+							((IServiceCapableConnection) conn).invoke("startedRecording", new Object[] { client }, this);
+						}
+
+						// If its the recording client we need another type of Meta Data
+						if (rcl.getIsScreenClient()) {
+							if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
+								String streamName_Screen = generateFileName(flvRecordingId, rcl.getStreamPublishName().toString());
+
+								Long flvRecordingMetaDataId = metaDataDao.addFlvRecordingMetaData(
+										flvRecordingId, rcl.getFirstname() + " " + rcl.getLastname(), now, false,
+										false, true, streamName_Screen, rcl.getInterviewPodId());
+
+								// Start FLV Recording
+								recordShow(conn, rcl.getStreamPublishName(), streamName_Screen, flvRecordingMetaDataId, true, isInterview);
+
+								// Add Meta Data
+								rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+
+								sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+							}
+						} else if ((rcl.isMobile() || rcl.getIsAVClient())
+								&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v"))) {
+							// if the user does publish av, a, v
+							// But we only record av or a, video only is not interesting
+							String broadcastId = "" + rcl.getBroadCastID();
+							String streamName = generateFileName(flvRecordingId, broadcastId);
+
+							// Add Meta Data
+							boolean isAudioOnly = false;
+							if (rcl.getAvsettings().equals("a")) {
+								isAudioOnly = true;
+							}
+
+							boolean isVideoOnly = false;
+							if (rcl.getAvsettings().equals("v")) {
+								isVideoOnly = true;
+							}
+
+							Long metaId = metaDataDao.addFlvRecordingMetaData(flvRecordingId,
+									rcl.getFirstname() + " " + rcl.getLastname(), now, isAudioOnly, isVideoOnly, false, streamName,
+									rcl.getInterviewPodId());
+
+							rcl.setFlvRecordingMetaDataId(metaId);
+
+							sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+							// Start FLV recording
+							recordShow(conn, broadcastId, streamName, metaId, !isAudioOnly, isInterview);
+						}
+					}
+				}
+			}
+			return roomRecordingName;
+
+		} catch (Exception err) {
+			log.error("[recordMeetingStream]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Start recording the published stream for the specified broadcast-Id
+	 * 
+	 * @param conn
+	 * @param broadcastid
+	 * @param streamName
+	 * @param metaId
+	 * @throws Exception
+	 */
+	private void recordShow(IConnection conn, String broadcastid, String streamName, Long metaId, boolean isScreenData, Boolean isInterview) throws Exception {
+		try {
+			log.debug("Recording show for: " + conn.getScope().getContextPath());
+			log.debug("Name of CLient and Stream to be recorded: " + broadcastid);
+			// log.debug("Application.getInstance()"+Application.getInstance());
+			log.debug("Scope " + conn);
+			log.debug("Scope " + conn.getScope());
+			// Get a reference to the current broadcast stream.
+			ClientBroadcastStream stream = (ClientBroadcastStream) scopeApplicationAdapter.getBroadcastStream(conn.getScope(), broadcastid);
+
+			if (stream == null) {
+				log.debug("Unable to get stream: " + streamName);
+				return;
+			}
+			// Save the stream to disk.
+			log.debug("### stream " + stream);
+			log.debug("### streamName " + streamName);
+			log.debug("### conn.getScope() " + conn.getScope());
+			log.debug("### flvRecordingMetaDataId " + metaId);
+			log.debug("### isScreenData " + isScreenData);
+			log.debug("### isInterview " + isInterview);
+			StreamListener streamListener = new StreamListener(!isScreenData, streamName, conn.getScope(), metaId, isScreenData, isInterview, metaDataDao, metaDeltaDao);
+
+			streamListeners.put(metaId, streamListener);
+
+			stream.addStreamListener(streamListener);
+			// Just for Debug Purpose
+			// stream.saveAs(streamName+"_DEBUG", false);
+		} catch (Exception e) {
+			log.error("Error while saving stream: " + streamName, e);
+		}
+	}
+
+	/**
+	 * Stops recording the publishing stream for the specified IConnection.
+	 * 
+	 * @param conn
+	 */
+	public synchronized void stopRecordingShow(IConnection conn, String broadcastId, Long metaId) {
+		try {
+			if (metaId == null) {
+				// this should be fixed, can be useful for debugging, after all this is an error
+				// but we don't want the application to completely stop the process
+				log.error("flvRecordingMetaDataId is null");
+			}
+
+			log.debug("** stopRecordingShow: " + conn);
+			log.debug("### Stop recording show for broadcastId: " + broadcastId + " || " + conn.getScope().getContextPath());
+
+			Object streamToClose = scopeApplicationAdapter.getBroadcastStream(conn.getScope(), broadcastId);
+
+			StreamListener listenerAdapter = streamListeners.get(metaId);
+
+			log.debug("Stream Closing :: " + metaId);
+
+			ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;
+
+			// the stream can be null if the user just closes the browser
+			// without canceling the recording before leaving
+			if (stream != null) {
+				// Iterate through all stream listeners and stop the appropriate
+				if (stream.getStreamListeners() != null) {
+					for (IStreamListener iStreamListener : stream.getStreamListeners()) {
+						stream.removeStreamListener(iStreamListener);
+					}
+				}
+			}
+
+			FlvRecordingMetaData metaData = metaDataDao.get(metaId);
+			BaseConverter.printMetaInfo(metaData, "Stopping the stream");
+			// Manually call finish on the stream so that there is no endless loop waiting in the FlvRecorderConverter waiting for the stream to finish
+			// this would normally happen in the Listener
+			Status s = metaData.getStreamStatus();
+			if (Status.NONE == s) {
+				log.debug("Stream was not started, no need to stop :: stream with id " + metaId);
+			} else {
+				metaData.setStreamStatus(listenerAdapter == null && s == Status.STARTED ? Status.STOPPED : Status.STOPPING);
+				log.debug("Stopping the stream :: New status == " + metaData.getStreamStatus());
+			}
+			metaDataDao.update(metaData);
+			if (listenerAdapter == null) {
+				log.debug("Stream Not Found :: " + metaId);
+				log.debug("Available Streams :: " + streamListeners.size());
+
+				for (Long entryKey : streamListeners.keySet()) {
+					log.debug("Stored flvRecordingMetaDataId in Map: " + entryKey);
+				}
+				throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId " + metaId);
+			}
+
+			listenerAdapter.closeStream();
+			streamListeners.remove(metaId);
+
+		} catch (Exception err) {
+			log.error("[stopRecordingShow]", err);
+		}
+	}
+
+	public Long stopRecordAndSave(IScope scope, Client currentClient, Long storedFlvRecordingId) {
+		try {
+			log.debug("stopRecordAndSave " + currentClient.getUsername() + "," + currentClient.getUserip());
+
+			// get all stream and stop recording them
+			for (IConnection conn : scope.getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+
+						if (rcl == null) {
+							continue;
+						}
+						log.debug("is this users still alive? stop it :" + rcl);
+
+						if (rcl.getIsScreenClient()) {
+							if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
+								// Stop FLV Recording
+								stopRecordingShow(conn, rcl.getStreamPublishName(), rcl.getFlvRecordingMetaDataId());
+
+								// Update Meta Data
+								metaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(), new Date());
+							}
+						} else if ((rcl.isMobile() || rcl.getIsAVClient())
+								&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v"))) {
+
+							stopRecordingShow(conn, String.valueOf(rcl.getBroadCastID()).toString(), rcl.getFlvRecordingMetaDataId());
+
+							// Update Meta Data
+							metaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(), new Date());
+						}
+					}
+				}
+			}
+			// Store to database
+			Long flvRecordingId = currentClient.getFlvRecordingId();
+
+			// In the Case of an Interview the stopping client does not mean
+			// that its actually the recording client
+			if (storedFlvRecordingId != null) {
+				flvRecordingId = storedFlvRecordingId;
+			}
+
+			if (flvRecordingId != null) {
+				flvRecordingDaoImpl.updateFlvRecordingEndTime(flvRecordingId, new Date(), currentClient.getOrganization_id());
+
+				// Reset values
+				currentClient.setFlvRecordingId(null);
+				currentClient.setIsRecording(false);
+
+				sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+				log.debug("flvRecorderConverterTask ", flvRecorderConverterTask);
+
+				FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
+				if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
+					flvRecorderConverterTask.startConversionThread(flvRecordingId);
+				} else {
+					flvInterviewConverterTask.startConversionThread(flvRecordingId);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[-- stopRecordAndSave --]", err);
+		}
+		return new Long(-1);
+	}
+
+	public Client checkLzRecording() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+
+			log.debug("getCurrentRoomClient -2- " + streamid);
+
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			log.debug("getCurrentRoomClient -#########################- " + currentClient.getRoom_id());
+
+			for (Client rcl : sessionManager.getClientListByRoomAll(currentClient.getRoom_id())) {
+				if (rcl.getIsRecording()) {
+					return rcl;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[checkLzRecording]", err);
+		}
+		return null;
+	}
+
+	public void stopRecordingShowForClient(IConnection conn, Client rcl) {
+		try {
+			// this cannot be handled here, as to stop a stream and to leave a
+			// room is not
+			// the same type of event.
+			// StreamService.addRoomClientEnterEventFunc(rcl, roomrecordingName,
+			// rcl.getUserip(), false);
+			log.debug("### stopRecordingShowForClient: " + rcl);
+
+			if (rcl.getIsScreenClient()) {
+
+				if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
+
+					// Stop FLV Recording
+					// FIXME: Is there really a need to stop it manually if the
+					// user just
+					// stops the stream?
+					stopRecordingShow(conn, rcl.getStreamPublishName(), rcl.getFlvRecordingMetaDataId());
+
+					// Update Meta Data
+					metaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(), new Date());
+				}
+
+			} else if (rcl.getIsAVClient()
+					&& (rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v") || rcl.getAvsettings().equals("av"))) {
+
+				// FIXME: Is there really a need to stop it manually if the user
+				// just stops the stream?
+				stopRecordingShow(conn, String.valueOf(rcl.getBroadCastID()), rcl.getFlvRecordingMetaDataId());
+
+				// Update Meta Data
+				metaDataDao.updateFlvRecordingMetaDataEndDate(rcl.getFlvRecordingMetaDataId(), new Date());
+			}
+
+		} catch (Exception err) {
+			log.error("[stopRecordingShowForClient]", err);
+		}
+	}
+
+	public void addRecordingByStreamId(IConnection conn, String streamId, Client rcl, Long flvRecordingId) {
+		try {
+			FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
+
+			Date now = new Date();
+
+			// If its the recording client we need another type of Meta Data
+			if (rcl.getIsScreenClient()) {
+				if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
+					String streamName_Screen = generateFileName(flvRecordingId, rcl.getStreamPublishName().toString());
+
+					log.debug("##############  ADD SCREEN OF SHARER :: " + rcl.getStreamPublishName());
+
+					Long flvRecordingMetaDataId = metaDataDao.addFlvRecordingMetaData(flvRecordingId, rcl.getFirstname()
+							+ " " + rcl.getLastname(), now, false, false, true, streamName_Screen, rcl.getInterviewPodId());
+
+					// Start FLV Recording
+					recordShow(conn, rcl.getStreamPublishName(), streamName_Screen, flvRecordingMetaDataId, true,
+							flvRecording.getIsInterview());
+
+					// Add Meta Data
+					rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+
+					sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+				}
+			} else if (rcl.getIsAVClient()
+					&& (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v"))) {
+				// if the user does publish av, a, v
+				// But we only record av or a, video only is not interesting
+
+				String streamName = generateFileName(flvRecordingId, String.valueOf(rcl.getBroadCastID()).toString());
+
+				// Add Meta Data
+				boolean isAudioOnly = false;
+				if (rcl.getAvsettings().equals("a")) {
+					isAudioOnly = true;
+				}
+				boolean isVideoOnly = false;
+				if (rcl.getAvsettings().equals("v")) {
+					isVideoOnly = true;
+				}
+
+				Long flvRecordingMetaDataId = metaDataDao.addFlvRecordingMetaData(flvRecordingId, rcl.getFirstname() + " "
+						+ rcl.getLastname(), now, isAudioOnly, isVideoOnly, false, streamName, rcl.getInterviewPodId());
+
+				// Start FLV recording
+				recordShow(conn, String.valueOf(rcl.getBroadCastID()).toString(), streamName, flvRecordingMetaDataId, false,
+						flvRecording.getIsInterview());
+
+				rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);
+
+				sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[addRecordingByStreamId]", err);
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/GroupService.java b/src/main/java/org/apache/openmeetings/remote/GroupService.java
new file mode 100644
index 0000000..4ffb584
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/GroupService.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+
+public class GroupService {
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/InvitationService.java b/src/main/java/org/apache/openmeetings/remote/InvitationService.java
new file mode 100644
index 0000000..3697043
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/InvitationService.java
@@ -0,0 +1,160 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Calendar;
+
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.IInvitationManager.MessageType;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class InvitationService implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(InvitationService.class, webAppRootKey);
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private RoomDao roomDao;
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		log.debug("InvitationService resultReceived" + arg0);
+	}
+
+	private Calendar getDate(String date, String time, String tzId) {
+		Calendar c = Calendar.getInstance(timezoneUtil.getTimeZone(tzId));
+		c.set(Calendar.YEAR, Integer.parseInt(date.substring(6)));
+		c.set(Calendar.MONTH, Integer.parseInt(date.substring(3, 5)) - 1);
+		c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(0, 2)));
+		c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time.substring(0, 2)));
+		c.set(Calendar.MINUTE, Integer.parseInt(time.substring(3, 5)));
+		c.set(Calendar.SECOND, 0);
+		c.set(Calendar.MILLISECOND, 0);
+		
+		return c;
+	}
+	
+	/**
+	 * send an invitation to another user by Mail
+	 * 
+	 * @param SID
+	 * @param firstname
+	 * @param lastname
+	 * @param message
+	 * @param email
+	 * @param subject
+	 * @param room_id
+	 * @param conferencedomain
+	 * @param isPasswordProtected
+	 * @param invitationpass
+	 * @param valid
+	 * @param validFromDate
+	 * @param validFromTime
+	 * @param validToDate
+	 * @param validToTime
+	 * @param language_id
+     * @param iCalTz
+	 * @return - invitation object in case of success, "Sys - Error" string or null in case of error
+	 */
+	public Object sendInvitationHash(String SID, String firstname, String lastname,
+			String message, String email, String subject,
+			Long room_id, String conferencedomain, Boolean isPasswordProtected,
+			String invitationpass, Integer valid, String validFromDate,
+			String validFromTime, String validToDate, String validToTime,
+			Long language_id, String iCalTz, boolean sendMail) {
+
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				log.debug("sendInvitationHash: ");
+	
+				Calendar calFrom = getDate(validFromDate, validFromTime, iCalTz);
+				Calendar calTo = getDate(validToDate, validToTime, iCalTz);
+	
+				User invitee = userDao.getContact(email, firstname, lastname, users_id);
+				Invitation invitation = invitationManager.getInvitation(invitee, roomDao.get(room_id),
+								isPasswordProtected, invitationpass, Valid.fromInt(valid)
+								, userDao.get(users_id), language_id,
+								calFrom.getTime(), calTo.getTime(), null);
+
+				if (invitation != null) {
+					if (sendMail) {
+						invitationManager.sendInvitionLink(invitation, MessageType.Create, subject, message, false);
+					}
+
+					return invitation;
+				} else {
+					return "Sys - Error";
+				}
+			} else {
+				return "Need User Privileges to perfom the Action";
+			}
+
+		} catch (Exception err) {
+			log.error("[sendInvitationHash]", err);
+		}
+
+		return null;
+	}
+
+	public String sendInvitationByHash(String SID, String invitationHash, String message, String subject
+			, Long language_id) throws Exception {
+		Long users_id = sessiondataDao.checkSession(SID);
+
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			Invitation inv = (Invitation)invitationManager.getInvitationByHashCode(invitationHash, true);
+			inv.getInvitee().setLanguage_id(language_id);
+			invitationManager.sendInvitionLink(inv, MessageType.Create, subject, message, false);
+		} else {
+			return "Need User Privileges to perfom the Action";
+		}
+		return "Success";
+	}
+	
+	public Object getInvitationByHash(String hashCode) {
+		return invitationManager.getInvitationByHashCode(
+				hashCode, true);
+	}
+
+	public Object checkInvitationPass(String hashCode, String pass) {
+		return invitationManager.checkInvitationPass(hashCode, pass);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/LanguageService.java b/src/main/java/org/apache/openmeetings/remote/LanguageService.java
new file mode 100644
index 0000000..95460bc
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/LanguageService.java
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.data.basic.FieldManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+public class LanguageService {
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private FieldManager fieldManager;
+	@Autowired
+	private FieldLanguageDao fieldLanguageDaoImpl;
+
+	/**
+	 * @return - List of all available Languages
+	 */
+	public List<FieldLanguage> getLanguages() {
+		return fieldLanguageDaoImpl.getLanguages();
+	}
+
+	/**
+	 * get all fields of a given Language_id
+	 * 
+	 * @param language_id
+	 * @deprecated
+	 * @return - all fields of a given Language_id
+	 */
+	@Deprecated
+	public List<Fieldlanguagesvalues> getLanguageById(Long language_id) {
+		return fieldManager.getAllFieldsByLanguage(language_id);
+	}
+
+	public Integer getDefaultLanguage() {
+		return configurationDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Integer.class, "1");
+	}
+
+	/**
+	 * get all fields of a given Language_id by params
+	 * 
+	 * @param language_id
+	 * @return - all fields of a given Language_id in the range given
+	 */
+	public List<Map<String, Object>> getLanguageByIdAndMax(Long language_id,
+			int start, int max) {
+		return fieldManager.getLabelsByLanguage(language_id, start, max);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/MainService.java b/src/main/java/org/apache/openmeetings/remote/MainService.java
new file mode 100644
index 0000000..f93b809
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/MainService.java
@@ -0,0 +1,584 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
+import org.apache.openmeetings.db.entity.server.SOAPLogin;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.Userdata;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.ldap.LdapLoginManagement;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.remote.util.SessionVariablesUtil;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class MainService implements IPendingServiceCallback {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(MainService.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private StateDao statemanagement;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private ConferenceLogDao conferenceLogDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private LdapConfigDao ldapConfigDao;
+	@Autowired
+	private SOAPLoginDao soapLoginDao;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private LdapLoginManagement ldapLoginManagement;
+	@Autowired
+	private MailHandler mailHandler;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+
+	// External User Types
+	public static final String EXTERNAL_USER_TYPE_LDAP = "LDAP";
+
+
+	/**
+	 * gets a user by its SID
+	 * 
+	 * @param SID
+	 * @param USER_ID
+	 * @return - user with SID given
+	 */
+	public User getUser(String SID, int USER_ID) {
+		User users = new User();
+		Long users_id = sessiondataDao.checkSession(SID);
+		Set<Right> rights = userDao.getRights(users_id);
+		if (AuthLevelUtil.hasAdminLevel(rights) || AuthLevelUtil.hasWebServiceLevel(rights)) {
+			users = userDao.get(USER_ID);
+		} else {
+			users.setFirstname("No rights to do this");
+		}
+		return users;
+	}
+
+	public Client getCurrentRoomClient(String SID) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+
+			log.debug("getCurrentRoomClient -1- " + SID);
+			log.debug("getCurrentRoomClient -2- " + streamid);
+
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			return currentClient;
+		} catch (Exception err) {
+			log.error("[getCurrentRoomClient]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * load this session id before doing anything else
+	 * 
+	 * @return a unique session identifier
+	 */
+	public Sessiondata getsessiondata() {
+		return sessiondataDao.startsession();
+	}
+
+	public Long setCurrentUserOrganization(String SID, Long organization_id) {
+		try {
+			sessiondataDao.updateUserOrg(SID, organization_id);
+			return 1L;
+		} catch (Exception err) {
+			log.error("[setCurrentUserOrganization]", err);
+		}
+		return -1L;
+	}
+
+	public User loginWicket(String SID, String wicketSID, Long wicketroomid) {
+		log.debug("[loginWicket]");
+		Long userId = sessiondataDao.checkSession(wicketSID);
+		User u = userId == null ? null : userDao.get(userId);
+		if (u != null && wicketroomid != null) {
+			log.debug("[loginWicket] user and roomid are not empty: " + userId + ", " + wicketroomid);
+			boolean allowed = false;
+			Room r = roomDao.get(wicketroomid);
+			if (r.getAppointment() != null && r.getAppointment()) {
+				Appointment a = appointmentDao.getAppointmentByRoom(wicketroomid);
+				if (a != null && !a.isDeleted()) {
+					allowed = a.getOwner().getUser_id().equals(userId);
+					log.debug("[loginWicket] appointed room, isOwner ? " + allowed);
+					if (!allowed) {
+						for (MeetingMember mm : a.getMeetingMembers()) {
+							if (mm.getUser().getUser_id().equals(userId)) {
+								allowed = true;
+								break;
+							}
+						}
+					}
+					/*
+					TODO need to be reviewed
+					Calendar c = WebSession.getCalendar();
+					if (c.getTime().after(a.getStart()) && c.getTime().before(a.getEnd())) {
+						allowed = true;
+					} else {
+						SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
+						deniedMessage = WebSession.getString(1271) + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
+					}
+					*/
+				}
+			} else {
+				allowed = r.getIspublic() || (r.getOwnerId() != null && r.getOwnerId().equals(userId));
+				log.debug("[loginWicket] public ? " + r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
+				if (!allowed) {
+					for (RoomOrganisation ro : r.getRoomOrganisations()) {
+						for (Organisation_Users ou : u.getOrganisation_users()) {
+							if (ro.getOrganisation().getOrganisation_id().equals(ou.getOrganisation().getOrganisation_id())) {
+								allowed = true;
+								break;
+							}
+						}
+						if (allowed) {
+							break;
+						}
+					}
+				}
+			}
+			if (allowed) {
+				IConnection current = Red5.getConnectionLocal();
+				String streamId = current.getClient().getId();
+				Client currentClient = sessionManager.getClientByStreamId(streamId, null);
+				
+				if (!u.getOrganisation_users().isEmpty()) {
+					u.setSessionData(sessiondataDao.getSessionByHash(wicketSID));
+					currentClient.setUser_id(u.getUser_id());
+					currentClient.setRoom_id(wicketroomid);
+					SessionVariablesUtil.setUserId(current.getClient(), u.getUser_id());
+				
+					currentClient.setUsername(u.getLogin());
+					currentClient.setFirstname(u.getFirstname());
+					currentClient.setLastname(u.getLastname());
+					currentClient.setPicture_uri(u.getPictureuri());
+					sessionManager.updateClientByStreamId(streamId, currentClient, false, null);
+					
+					scopeApplicationAdapter.sendMessageToCurrentScope("roomConnect", currentClient, false);
+					
+					return u;
+				}
+			}
+		}
+		return null;
+	}
+	
+	public Object secureLoginByRemote(String SID, String secureHash) {
+		try {
+
+			log.debug("############### secureLoginByRemote " + secureHash);
+
+			String clientURL = Red5.getConnectionLocal().getRemoteAddress();
+
+			log.debug("swfURL " + clientURL);
+
+			SOAPLogin soapLogin = soapLoginDao.get(secureHash);
+
+			if (soapLogin.getUsed()) {
+
+				if (soapLogin.getAllowSameURLMultipleTimes()) {
+
+					if (!soapLogin.getClientURL().equals(clientURL)) {
+						log.debug("does not equal " + clientURL);
+						return -42L;
+					}
+
+				} else {
+					log.debug("Already used " + secureHash);
+					return -42L;
+				}
+			}
+
+			Long loginReturn = loginUserByRemote(soapLogin.getSessionHash());
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamId = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamId, null);
+
+			if (currentClient.getUser_id() != null) {
+				sessiondataDao.updateUser(SID, currentClient.getUser_id());
+			}
+
+			currentClient.setAllowRecording(soapLogin.isAllowRecording());
+			sessionManager.updateClientByStreamId(streamId, currentClient, false, null);
+
+			if (loginReturn == null) {
+				log.debug("loginReturn IS NULL for SID: " + soapLogin.getSessionHash());
+
+				return -1L;
+			} else if (loginReturn < 0) {
+				log.debug("loginReturn IS < 0 for SID: " + soapLogin.getSessionHash());
+
+				return loginReturn;
+			} else {
+
+				soapLogin.setUsed(true);
+				soapLogin.setUseDate(new Date());
+
+				soapLogin.setClientURL(clientURL);
+
+				soapLoginDao.update(soapLogin);
+
+				// Create Return Object and hide the validated
+				// sessionHash that is stored server side
+				// this hash should be never thrown back to the user
+
+				SOAPLogin returnSoapLogin = new SOAPLogin();
+
+				returnSoapLogin.setRoom_id(soapLogin.getRoom_id());
+				returnSoapLogin.setBecomemoderator(soapLogin.getBecomemoderator());
+				returnSoapLogin.setShowAudioVideoTest(soapLogin.getShowAudioVideoTest());
+				returnSoapLogin.setRoomRecordingId(soapLogin.getRoomRecordingId());
+				returnSoapLogin.setShowNickNameDialog(soapLogin.getShowNickNameDialog());
+				returnSoapLogin.setLandingZone(soapLogin.getLandingZone());
+
+				return returnSoapLogin;
+			}
+
+		} catch (Exception err) {
+			log.error("[secureLoginByRemote]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Function is called if the user loggs in via a secureHash and sets the
+	 * param showNickNameDialog in the Object SOAPLogin to true the user gets
+	 * displayed an additional dialog to enter his nickname
+	 * 
+	 * @param firstname
+	 * @param lastname
+	 * @param email
+	 * @return - 1 in case of success, -1 otherwise
+	 */
+	public Long setUserNickName(String firstname, String lastname, String email) {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamId = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamId, null);
+
+			currentClient.setFirstname(firstname);
+			currentClient.setLastname(lastname);
+			currentClient.setEmail(email);
+
+			// Log the User
+			conferenceLogDao.addConferenceLog(
+					"nicknameEnter", currentClient.getUser_id(), streamId,
+					null, currentClient.getUserip(), currentClient.getScope(),
+					currentClient.getExternalUserId(),
+					currentClient.getExternalUserType(),
+					currentClient.getEmail(), currentClient.getFirstname(),
+					currentClient.getLastname());
+
+			this.sessionManager.updateClientByStreamId(streamId,
+					currentClient, false, null);
+
+			return 1L;
+
+		} catch (Exception err) {
+			log.error("[setUserNickName] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * Attention! This SID is NOT the default session id! its the Session id
+	 * retrieved in the call from the SOAP Gateway!
+	 * 
+	 * @param SID
+	 * @return - 1 in case of success, -1 otherwise
+	 */
+	public Long loginUserByRemote(String SID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
+				Sessiondata sd = sessiondataDao.getSessionByHash(SID);
+				if (sd == null || sd.getSessionXml() == null) {
+					return new Long(-37);
+				} else {
+					RemoteSessionObject userObject = RemoteSessionObject.fromXml(sd.getSessionXml());
+
+					log.debug(userObject.toString());
+
+					IConnection current = Red5.getConnectionLocal();
+					String streamId = current.getClient().getId();
+					Client currentClient = sessionManager.getClientByStreamId(streamId, null);
+
+					// Check if this User is simulated in the OpenMeetings
+					// Database
+
+					if (!Strings.isEmpty(userObject.getExternalUserId())) {
+						// If so we need to check that we create this user in
+						// OpenMeetings and update its record
+
+						User user = userDao.getExternalUser(userObject.getExternalUserId(), userObject.getExternalUserType());
+
+						if (user == null) {
+							String iCalTz = configurationDao.getConfValue("default.timezone", String.class, "");
+
+							Address a = userDao.getAddress(null, null, null, 1L, null, null, null, userObject.getEmail());
+
+							Set<Right> rights = UserDao.getDefaultRights();
+							rights.remove(Right.Login);
+							rights.remove(Right.Dashboard);
+							User u = userDao.addUser(rights, userObject.getFirstname(), userObject.getUsername(),
+											userObject.getLastname(), 1L, "" // password is empty by default
+											, a, false, null, null, timezoneUtil.getTimeZone(iCalTz), false
+											, null, null, false, false, userObject.getExternalUserId()
+											, userObject.getExternalUserType(), null, userObject.getPictureUrl());
+
+							long userId = u.getUser_id();
+							currentClient.setUser_id(userId);
+							SessionVariablesUtil.setUserId(current.getClient(), userId);
+						} else {
+							user.setPictureuri(userObject.getPictureUrl());
+
+							userDao.update(user, users_id);
+
+							currentClient.setUser_id(user.getUser_id());
+							SessionVariablesUtil.setUserId(current.getClient(), user.getUser_id());
+						}
+					}
+
+					log.debug("userObject.getExternalUserId() -2- " + currentClient.getUser_id());
+
+					currentClient.setUserObject(userObject.getUsername(), userObject.getFirstname(), userObject.getLastname());
+					currentClient.setPicture_uri(userObject.getPictureUrl());
+					currentClient.setEmail(userObject.getEmail());
+
+					log.debug("UPDATE USER BY STREAMID " + streamId);
+
+					if (currentClient.getUser_id() != null) {
+						sessiondataDao.updateUser(SID, currentClient.getUser_id());
+					}
+
+					sessionManager.updateClientByStreamId(streamId, currentClient, false, null);
+
+					return new Long(1);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[loginUserByRemote] ", err);
+		}
+		return new Long(-1);
+	}
+
+	/**
+	 * this function returns a user object with organization objects set only
+	 * the organization is not available for users that are using a HASH mechanism
+	 * cause the SOAP/REST API does not guarantee that the user connected to the HASH
+	 * has a valid user object set
+	 * 
+	 * @param SID
+	 */
+	public User markSessionAsLogedIn(String SID) {
+		try {
+			sessiondataDao.updateUserWithoutSession(SID, -1L);
+			
+			Long defaultRpcUserid = configurationDao.getConfValue(
+					"default.rpc.userid", Long.class, "-1");
+			User defaultRpcUser = userDao.get(defaultRpcUserid);
+			
+			User user = new User();
+			user.setOrganisation_users(defaultRpcUser.getOrganisation_users());
+			
+			return user;
+			
+		} catch (Exception err) {
+			log.error("[markSessionAsLogedIn]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * clear this session id
+	 * 
+	 * @param SID
+	 * @return string value if completed
+	 */
+	public Long logoutUser(String SID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(current.getClient().getId(), null);
+			
+			scopeApplicationAdapter.roomLeaveByScope(currentClient,current.getScope(), false);
+			
+			currentClient.setUserObject(null, null, null, null);
+			
+			return userManager.logout(SID, users_id);
+		} catch (Exception err) {
+			log.error("[logoutUser]",err);
+		}
+		return -1L;
+	}
+
+	public String[] getTimeZones(int start, int count) {
+		String all[] = TimeZone.getAvailableIDs();
+		return Arrays.copyOfRange(all, start, Math.min(start + count, all.length));
+	}
+
+	public List<Configuration> getGeneralOptions(String SID) {
+		try {
+			return configurationDao.get("exclusive.audio.keycode", "red5sip.enable", CONFIG_MAX_UPLOAD_SIZE_KEY, "mute.keycode", CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY);
+		} catch (Exception err) {
+			log.error("[getGeneralOptions]",err);
+		}
+		return null;
+	}
+
+	public List<Userdata> getUserdata(String SID) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return userManager.getUserdataDashBoard(users_id);
+		}
+		return null;
+	}
+
+	/**
+	 * TODO: Is this function in usage?
+	 * 
+	 * @deprecated
+	 * @param SID
+	 * @param domain
+	 * @return - empty map
+	 */
+	@Deprecated
+	public LinkedHashMap<Integer, Client> getUsersByDomain(String SID,
+			String domain) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			LinkedHashMap<Integer, Client> lMap = new LinkedHashMap<Integer, Client>();
+			// Integer counter = 0;
+			// for (Iterator<String> it =
+			// Application.getClientList().keySet().iterator();it.hasNext();) {
+			// RoomClient rc = Application.getClientList().get(it.next());
+			// //if (rc.getDomain().equals(domain)) {
+			// lMap.put(counter, rc);
+			// counter++;
+			// //}
+			// }
+			return lMap;
+		} else {
+			return null;
+		}
+	}
+
+	public int closeRoom(String SID, Long room_id, Boolean status) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				roomManager.closeRoom(room_id, status);
+
+				if (status) {
+					Map<String, String> message = new HashMap<String, String>();
+					message.put("message", "roomClosed");
+					scopeApplicationAdapter.sendMessageByRoomAndDomain(room_id, message);
+				}
+
+				return 1;
+
+			}
+
+			return 1;
+		} catch (Exception err) {
+			log.error("[closeRoom]", err);
+		}
+		return -1;
+	}
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		log.debug("[resultReceived]" + arg0);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/MobileService.java b/src/main/java/org/apache/openmeetings/remote/MobileService.java
new file mode 100644
index 0000000..e3d9ec0
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/MobileService.java
@@ -0,0 +1,236 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.room.IRoomManager;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.remote.util.SessionVariablesUtil;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.service.IServiceCapableConnection;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class MobileService {
+	private static final Logger log = Red5LoggerFactory.getLogger(MainService.class, webAppRootKey);
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private SessiondataDao sessionDao;
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private IRoomManager roomManager;
+	@Autowired
+	private FieldLanguagesValuesDao labelDao;
+	@Autowired
+	private ScopeApplicationAdapter scopeAdapter;
+
+	private void add(Map<String, Object> m, String key, Object v) {
+		m.put(key, v == null ? "" : v);
+	}
+	
+	public Map<String, Object> loginUser(String login, String password) {
+		Map<String, Object> result = new Hashtable<String, Object>();
+		try {
+			result.put("status", -1);
+			User u = userDao.login(login, password);
+			if (u != null) {
+				Sessiondata sd = sessionDao.startsession();
+				Boolean bool = sessionDao.updateUser(sd.getSession_id(), u.getUser_id(), false, u.getLanguage_id());
+				if (bool == null) {
+					// Exception
+				} else if (!bool) {
+					// invalid Session-Object
+					result.put("status", -35);
+				} else {
+					IConnection conn = Red5.getConnectionLocal();
+					String streamId = conn.getClient().getId();
+					Client c = sessionManager.getClientByStreamId(streamId, null);
+					if (c == null) {
+						c = sessionManager.addClientListItem(streamId, conn.getScope().getName(), conn.getRemotePort(),
+							conn.getRemoteAddress(), "", false, null);
+					}
+					
+					SessionVariablesUtil.initClient(conn.getClient(), false, c.getPublicSID());
+					c.setUser_id(u.getUser_id());
+					c.setFirstname(u.getFirstname());
+					c.setLastname(u.getLastname());
+					c.setMobile(true);
+					sessionManager.updateClientByStreamId(streamId, c, false, null);
+
+					add(result, "sid", sd.getSession_id());
+					add(result, "publicSid", c.getPublicSID());
+					add(result, "status", 0);
+					add(result, "userId", u.getUser_id());
+					add(result, "firstname", u.getFirstname());
+					add(result, "lastname", u.getLastname());
+					add(result, "login", u.getLogin());
+					add(result, "email", u.getAdresses() == null ? "" : u.getAdresses().getEmail());
+					add(result, "language", u.getLanguage_id()); //TODO rights
+				}
+			}
+		} catch (Exception e) {
+			log.error("[loginUser]", e);
+		}
+		return result;
+	}
+	
+	public List<Map<String, Object>> getVideoStreams() {
+		List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
+		// Notify all clients of the same scope (room)
+		IConnection current = Red5.getConnectionLocal();
+		for (IConnection conn : current.getScope().getClientConnections()) {
+			if (conn != null && conn instanceof IServiceCapableConnection) {
+				Client c = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+				if ((c.isMobile() || c.getIsAVClient()) && !Strings.isEmpty(c.getAvsettings()) && !Boolean.TRUE.equals(c.getIsScreenClient())) {
+					Map<String, Object> map = new Hashtable<String, Object>();
+					add(map, "streamId", c.getStreamid());
+					add(map, "broadCastId", c.getBroadCastID());
+					add(map, "userId", c.getUser_id());
+					add(map, "firstname", c.getFirstname());
+					add(map, "lastname", c.getLastname());
+					add(map, "publicSid", c.getPublicSID());
+					add(map, "login", c.getUsername());
+					add(map, "email", c.getEmail());
+					add(map, "avsettings", c.getAvsettings());
+					add(map, "interviewPodId", c.getInterviewPodId());
+					add(map, "vWidth", c.getVWidth());
+					add(map, "vHeight", c.getVHeight());
+					result.add(map);
+				}
+			}
+		}
+		return result;
+	}
+
+	private void addRoom(String type, String org, boolean first, List<Map<String, Object>> result, Room r) {
+		Map<String, Object> room = new Hashtable<String, Object>();
+		room.put("id", r.getRooms_id());
+		room.put("name", r.getName());
+		room.put("type", type);
+		room.put("roomTypeId", r.getRoomtype().getRoomtypes_id());
+		if (org != null) {
+			room.put("org", org);
+		}
+		room.put("first", first);
+		room.put("users", sessionManager.getClientListByRoom(r.getRooms_id()).size());
+		room.put("total", r.getNumberOfPartizipants());
+		room.put("audioOnly", Boolean.TRUE.equals(r.getIsAudioOnly()));
+		result.add(room);
+	}
+	
+	public List<Map<String, Object>> getRooms() {
+		List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
+		// FIXME duplicated code
+		IConnection current = Red5.getConnectionLocal();
+		Client c = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		User u = userDao.get(c.getUser_id());
+		//my rooms
+		List<Room> myl = new ArrayList<Room>();
+		myl.add(roomManager.getRoomByOwnerAndTypeId(u.getUser_id(), 1L, labelDao.getString(1306L, u.getLanguage_id())));
+		myl.add(roomManager.getRoomByOwnerAndTypeId(u.getUser_id(), 3L, labelDao.getString(1307L, u.getLanguage_id())));
+		myl.addAll(roomDao.getAppointedRoomsByUser(u.getUser_id()));
+		for (Room r : myl) {
+			addRoom("my", null, false, result, r);
+		}
+		
+		//private rooms
+		for (Organisation_Users ou : u.getOrganisation_users()) {
+			Organisation org = ou.getOrganisation();
+			boolean first = true;
+			for (Room r : roomDao.getOrganisationRooms(org.getOrganisation_id())) {
+				addRoom("private", org.getName(), first, result, r);
+				first = false;
+			}
+		}
+		
+		//public rooms
+		for (Room r : roomDao.getPublicRooms()) {
+			addRoom("public", null, false, result, r);
+		}
+		return result;
+	}
+	
+	public Map<String, Object> roomConnect(String SID, Long userId) {
+		Map<String, Object> result = new Hashtable<String, Object>();
+		User u = userDao.get(userId);
+		Client c = scopeAdapter.setUsernameReconnect(SID, userId, u.getLogin(), u.getFirstname(), u.getLastname(), u.getPictureuri());
+		 //TODO check if we need anything here
+		long broadcastId = scopeAdapter.getBroadCastId();
+		c.setSipTransport(true);
+		c.setRoom_id(Long.parseLong(c.getScope()));
+		c.setRoomEnter(new Date());
+		c.setBroadCastID(broadcastId);
+		c.setMobile(true);
+		c.setIsBroadcasting(true);
+		sessionManager.updateClientByStreamId(c.getStreamid(), c, false, null);
+		result.put("broadcastId", broadcastId);
+		result.put("publicSid", c.getPublicSID());
+
+		scopeAdapter.sendMessageToCurrentScope("addNewUser", c, false, false);
+		return result;
+	}
+
+	public Map<String, Object> updateAvMode(String avMode, String width, String height, Integer interviewPodId) {
+		IConnection current = Red5.getConnectionLocal();
+		Client c = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		c.setAvsettings(avMode);
+		c.setVWidth(Integer.parseInt(width));
+		c.setVHeight(Integer.parseInt(height));
+		if (interviewPodId > 0) {
+			c.setInterviewPodId(interviewPodId);
+		}
+		sessionManager.updateClientByStreamId(c.getStreamid(), c, false, null);
+		HashMap<String, Object> hsm = new HashMap<String, Object>();
+		hsm.put("client", c);
+		hsm.put("message", new String[]{"avsettings", "0", avMode});
+		Map<String, Object> result = new Hashtable<String, Object>();
+		if (!"n".equals(avMode)) {
+			result.put("broadcastId", scopeAdapter.getBroadCastId());
+		}
+
+		scopeAdapter.sendMessageToCurrentScope("sendVarsToMessageWithClient", hsm, true, false);
+		return result;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/PollService.java b/src/main/java/org/apache/openmeetings/remote/PollService.java
new file mode 100644
index 0000000..b185c17
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/PollService.java
@@ -0,0 +1,265 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+import org.apache.openmeetings.db.entity.room.RoomPollAnswers;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class PollService implements IPendingServiceCallback {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			PollService.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private UserManager userManager;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private PollDao pollManager;
+
+	public String createPoll(String pollName, String pollQuestion, int pollTypeId) {
+		String returnValue = "";
+		try {
+			log.debug("createPoll: " + pollQuestion);
+
+			IConnection currentcon = Red5.getConnectionLocal();
+			Client rc = sessionManager.getClientByStreamId(currentcon.getClient().getId(), null);
+
+			log.debug("rc: " + rc.getStreamid() + " " + rc.getUsername() + " " + rc.getIsMod());
+
+			if (rc.getIsMod()) {
+				// will move all existing polls to the archive
+				pollManager.closePoll(rc.getRoom_id());
+				
+				sendNotification(currentcon, "newPoll", pollManager.createPoll(rc, pollName, pollQuestion, (long) pollTypeId));
+				returnValue = "200";
+			} else {
+				returnValue = "202";
+			}
+
+		} catch (Exception err) {
+			returnValue = "203";
+			log.error("[createPoll]", err);
+		}
+		return returnValue;
+	}
+
+	public boolean closePoll() {
+		try {
+			log.debug("closePoll: ");
+
+			IConnection currentcon = Red5.getConnectionLocal();
+			Client rc = sessionManager.getClientByStreamId(currentcon
+					.getClient().getId(), null);
+
+			log.debug("rc: " + rc.getStreamid() + " " + rc.getUsername() + " "
+					+ rc.getIsMod());
+
+			if (rc.getIsMod()) {
+				// will move all existing polls to the archive
+				return pollManager.closePoll(rc.getRoom_id());
+			}
+
+		} catch (Exception err) {
+			log.error("[closePoll]", err);
+		}
+		return false;
+	}
+
+	public boolean deletePoll(Long poll_id) {
+		try {
+			log.debug("closePoll: ");
+
+			IConnection currentcon = Red5.getConnectionLocal();
+			Client rc = sessionManager.getClientByStreamId(currentcon
+					.getClient().getId(), null);
+
+			log.debug("rc: " + rc.getStreamid() + " " + rc.getUsername() + " "
+					+ rc.getIsMod());
+
+			if (rc.getIsMod()) {
+				// will move all existing polls to the archive
+				return pollManager.deletePoll(poll_id);
+			}
+
+		} catch (Exception err) {
+			log.error("[closePoll]", err);
+		}
+		return false;
+	}
+
+	public void sendNotification(IConnection current, String clientFunction, RoomPoll poll) throws Exception {
+		Client rc = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		final Long roomId = rc.getRoom_id();
+		scopeApplicationAdapter.new MessageSender(current, clientFunction, poll) {
+			
+			@Override
+			public boolean filter(IConnection conn) {
+				Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+				return (rcl.getIsScreenClient() != null && rcl.getIsScreenClient())
+						|| rcl.getRoom_id() == null || !rcl.getRoom_id().equals(roomId) || userDao.get(rcl.getUser_id()) == null;
+			}
+		}.start();
+	}
+
+	public List<PollType> getPollTypeList() {
+		return pollManager.getPollTypes();
+	}
+
+	public int vote(int pollvalue, int pollTypeId) {
+		int returnVal = 0;
+		try {
+			log.debug("PollService::vote: Enter");
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client rc = sessionManager.getClientByStreamId(streamid, null);
+
+			if (rc == null) {
+				log.error("RoomClient IS NULL for ClientID: "
+						+ current.getClient().getId());
+				return -1;
+			}
+			long roomId = rc.getRoom_id();
+			if (!pollManager.hasPoll(roomId)) {
+				log.error("POLL IS NULL for RoomId: " + rc.getRoom_id());
+				return -1;
+			}
+			
+			if(userDao.get(rc.getUser_id())==null){
+				log.debug("vote: Invited users can not vote");
+				return -1;
+			}
+			if (pollManager.hasVoted(roomId, rc.getUser_id())) {
+				log.debug("hasVoted: true");
+				return -1;
+			}
+			// get Poll
+			RoomPoll roomP = pollManager.getPoll(roomId);
+
+			log.debug("vote: " + pollvalue + " " + pollTypeId + " "
+					+ roomP.getPollQuestion());
+
+			log.debug("hasVoted: false");
+			RoomPollAnswers rpA = new RoomPollAnswers();
+			if (roomP.getPollType().getIsNumericAnswer()) {
+				log.debug("numeric");
+				rpA.setPointList(pollvalue);
+			} else {
+				log.debug("boolean");
+				// Is boolean Question
+				rpA.setAnswer(new Boolean(pollvalue == 1));
+			}
+			rpA.setVotedUser(userDao.get(rc.getUser_id()));
+			rpA.setVoteDate(new Date());
+			rpA.setRoomPoll(roomP);
+			roomP.getRoomPollAnswerList().add(rpA);
+			pollManager.updatePoll(roomP);
+			return 1;
+		} catch (Exception err) {
+			log.error("[vote]", err);
+		}
+		return returnVal;
+	}
+
+	public RoomPoll getVotes() {
+		return getPoll();
+	}
+
+	public RoomPoll getPoll() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client rc = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			// get Poll
+			return pollManager.getPoll(rc.getRoom_id());
+		} catch (Exception err) {
+			log.error("[getPoll]", err);
+		}
+		return null;
+	}
+
+	public int checkHasVoted() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client rc = this.sessionManager
+					.getClientByStreamId(streamid, null);
+
+			long roomId = rc.getRoom_id();
+			if(userDao.get(rc.getUser_id())==null){
+				log.debug("checkHasVoted: Invited users can not vote");
+				return -1;
+			}
+			if (pollManager.hasPoll(roomId)) {
+				return pollManager.hasVoted(roomId, rc.getUser_id()) ? -1 : 1;
+			} else {
+				return -2;
+			}
+		} catch (Exception err) {
+			log.error("[checkHasVoted]", err);
+		}
+		return 0;
+	}
+
+	public List<RoomPoll> getArchivedPollList() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client rc = this.sessionManager.getClientByStreamId(current
+					.getClient().getId(), null);
+
+			// get Poll
+			return pollManager.getArchivedPollList(rc.getRoom_id());
+		} catch (Exception err) {
+			log.error("[getArchivedPollList]", err);
+		}
+		return null;
+	}
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/PrintService.java b/src/main/java/org/apache/openmeetings/remote/PrintService.java
new file mode 100644
index 0000000..1426a44
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/PrintService.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.openmeetings.batik.beans.PrintBean;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.crypt.MD5;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class PrintService {
+
+
+	private static final Logger log = Red5LoggerFactory.getLogger(PrintService.class, OpenmeetingsVariables.webAppRootKey);	
+	
+	private static HashMap<String,PrintBean> currentExportList = new HashMap<String,PrintBean>();
+	@Autowired
+	private SessiondataDao sessiondataDao;
+    @Autowired
+    private UserDao userDao;
+	
+	/*
+	 * Export List
+	 * 
+	 */
+	
+	public String addPrintList(String SID, @SuppressWarnings("rawtypes") List map, int width, int height) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+	        if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+	        	String hashRaw = ""+new Date();
+	        	String hash = MD5.do_checksum(hashRaw);
+	        	PrintService.addPrintItembyMap(hash, map, width, height);
+	        	return hash;
+	        }
+		} catch (Exception err) {
+    		log.error("loginUser",err);
+    	}
+    	return null;
+	}
+	
+	public static synchronized PrintBean getPrintItemByHash(String hash) throws Exception {
+		PrintBean itemList = currentExportList.get(hash);
+//		if (itemList != null) {
+//			currentExportList.remove(hash);
+//		}
+		return itemList;
+	}
+	
+	public static synchronized void addPrintItembyMap(String hash, @SuppressWarnings("rawtypes") List map, int width, int height) throws Exception {
+		PrintBean pBean = new PrintBean(hash, map, width, height);
+		currentExportList.put(hash, pBean);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/UserService.java b/src/main/java/org/apache/openmeetings/remote/UserService.java
new file mode 100644
index 0000000..07be9e6
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/UserService.java
@@ -0,0 +1,504 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.cluster.SlaveHTTPConnectionManager;
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.IUserService;
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.SalutationDao;
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.db.entity.user.Salutation;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.web.mail.template.AbstractTemplatePanel;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.scope.IScope;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Provides method to manipulate {@link User}
+ * 
+ * @author sebawagner
+ * 
+ */
+public class UserService implements IUserService {
+	private static final Logger log = Red5LoggerFactory.getLogger(UserService.class, webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDao;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private IUserManager userManager;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private SalutationDao salutationmanagement;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private PrivateMessagesDao privateMessagesDao;
+	@Autowired
+	private PrivateMessageFolderDao privateMessageFolderDao;
+	@Autowired
+	private UserContactsDao userContactsDao;
+	@Autowired
+	private MailHandler mailHandler;
+	@Autowired
+	private TimezoneUtil timezoneUtil;
+	@Autowired
+	private InvitationManager invitationManager;
+	@Autowired
+	private ServerDao serverDao;
+	@Autowired
+	private SlaveHTTPConnectionManager slaveHTTPConnectionManager;
+	@Autowired
+	private FieldLanguagesValuesDao labelDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+
+	/**
+	 * get user by id, admin only
+	 * 
+	 * @param SID
+	 * @param user_id
+	 * @return User with the id given
+	 */
+	public User getUserById(String SID, long user_id) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+			return userDao.get(user_id);
+		}
+		return null;
+	}
+
+	/**
+	 * refreshes the current SID
+	 * 
+	 * @param SID
+	 * @return "ok" string in case of success, "error" string in case of the error
+	 */
+	public String refreshSession(String SID) {
+		try {
+			sessiondataDao.checkSession(SID);
+			return "ok";
+		} catch (Exception err) {
+			log.error("[refreshSession]", err);
+		}
+		return "error";
+	}
+
+	/**
+	 * get all availible Salutations
+	 * 
+	 * @param SID
+	 * @return all availible Salutations
+	 */
+	public List<Salutation> getUserSalutations(String SID, long language_id) {
+		return salutationmanagement.getUserSalutations(language_id);
+	}
+
+	/**
+	 * gets a whole user-list(admin-role only)
+	 * 
+	 * @param SID
+	 * @param start
+	 * @param max
+	 * @param orderby
+	 * @return whole user-list
+	 */
+	public List<User> getUserList(String SID, int start, int max, String orderby, boolean asc) {
+		Long users_id = sessiondataDao.checkSession(SID);
+		if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+			return userDao.get("", start, max, orderby + (asc ? " ASC" : " DESC"));
+		}
+		return null;
+	}
+
+	/**
+	 * kicks a user from the server, also from slaves if needed, this method is
+	 * only invoked by the connection administration UI
+	 * 
+	 * @param SID
+	 * @param streamid
+	 * @param serverId
+	 *            0 means the session is locally, otherwise we have to perform a
+	 *            REST call
+	 * @return - true if user has sufficient permissions, false otherwise
+	 */
+	public Boolean kickUserByStreamId(String SID, String streamid, long serverId) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// admins only
+			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(users_id))) {
+				if (serverId == 0) {
+					Client rcl = sessionManager.getClientByStreamId(streamid, null);
+
+					if (rcl == null) {
+						return true;
+					}
+					String scopeName = "hibernate";
+					if (rcl.getRoom_id() != null) {
+						scopeName = rcl.getRoom_id().toString();
+					}
+					IScope currentScope = scopeApplicationAdapter.getRoomScope(scopeName);
+
+					HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
+					messageObj.put(0, "kick");
+					scopeApplicationAdapter.sendMessageById(messageObj, streamid, currentScope);
+
+					scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
+
+					return true;
+				} else {
+					Server server = serverDao.get(serverId);
+					Client rcl = sessionManager.getClientByStreamId(
+							streamid, server);
+					slaveHTTPConnectionManager.kickSlaveUser(server, rcl.getPublicSID());
+					
+					// true means only the REST call is performed, it is no
+					// confirmation that the user is really kicked from the
+					// slave
+					return true;
+				}
+			}
+		} catch (Exception err) {
+			log.error("[kickUserByStreamId]", err);
+		}
+		return false;
+	}
+
+	public User updateUserSelfTimeZone(String SID, String jname) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				User us = userDao.get(users_id);
+
+				us.setTimeZoneId(timezoneUtil.getTimezoneByInternalJName(jname).getID());
+				us.setForceTimeZoneCheck(false);
+				us.setUpdatetime(new Date());
+
+				userDao.update(us, users_id);
+				
+				return us;
+			}
+		} catch (Exception err) {
+			log.error("[updateUserTimeZone]", err);
+		}
+		return null;
+	}
+
+	@Deprecated
+	public Long requestUserToContactList(String SID, Long userToAdd_id,
+			String domain, String port, String webapp) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				return ContactsHelper.addUserToContactList(userToAdd_id);
+			}
+		} catch (Exception err) {
+			log.error("[requestuserToContactList]", err);
+		}
+		return null;
+	}
+
+	public List<UserContact> getPendingUserContacts(String SID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				List<UserContact> uList = userContactsDao.getContactRequestsByUserAndStatus(users_id, true);
+
+				return uList;
+			}
+		} catch (Exception err) {
+			log.error("[getPendingUserContact]", err);
+		}
+		return null;
+	}
+
+	public List<UserContact> getUserContacts(String SID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				List<UserContact> uList = userContactsDao.getContactsByUserAndStatus(users_id, false);
+
+				return uList;
+			}
+		} catch (Exception err) {
+			log.error("[getPendingUserContact]", err);
+		}
+		return null;
+	}
+
+	public Integer removeContactUser(String SID, Long userContactId) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				UserContact userContacts = userContactsDao.get(userContactId);
+
+				if (userContacts == null) {
+					return -49;
+				}
+
+				return userContactsDao.deleteUserContact(userContactId);
+			}
+		} catch (Exception err) {
+			log.error("[removeContactUser]", err);
+		}
+		return null;
+	}
+
+	private Date createCalendarDate(TimeZone timezone, String dateOnly,
+			String time) {
+		Integer hour = Integer.valueOf(time.substring(0, 2)).intValue();
+		Integer minute = Integer.valueOf(time.substring(3, 5)).intValue();
+
+		log.info("createCalendar Hour: " + hour);
+		log.info("createCalendar Minute: " + minute);
+
+		Calendar cal = TimezoneUtil.getCalendarInTimezone(dateOnly, timezone);
+		cal.set(Calendar.HOUR_OF_DAY, hour);
+		cal.set(Calendar.MINUTE, minute);
+		cal.set(Calendar.SECOND, 0);
+		cal.set(Calendar.MILLISECOND, 0);
+
+		return cal.getTime();
+	}
+
+	public Long composeMail(String SID, List<String> recipients,
+			String subject, String message, Boolean bookedRoom,
+			String validFromDate, String validFromTime, String validToDate,
+			String validToTime, Long parentMessageId, Long roomtype_id,
+			String domain, String port, String webapp) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				User from = userDao.get(users_id);
+
+				Appointment a = new Appointment();
+				if (a.getMeetingMembers() == null) {
+					a.setMeetingMembers(new ArrayList<MeetingMember>());
+				}
+				for (String email : recipients) {
+					MeetingMember mm = new MeetingMember();
+					mm.setAppointment(a);
+					mm.setUser(userDao.getContact(email, users_id));
+					a.getMeetingMembers().add(mm);
+				}
+				if (bookedRoom) {
+					TimeZone timezone = timezoneUtil.getTimeZone(from);
+					Date start = createCalendarDate(timezone, validFromDate, validFromTime);
+					Date end = createCalendarDate(timezone, validToDate, validToTime);
+
+					log.info("validFromDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(start));
+					log.info("validToDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(end));
+
+					a.setTitle(subject);
+					a.setDescription(message);
+					a.setStart(start);
+					a.setEnd(end);
+					a.setCategory(appointmentCategoryDao.get(1L));
+					a.setOwner(from);
+					
+					a.setRoom(new Room());
+					a.getRoom().setAppointment(true);
+					a.getRoom().setName(subject);
+					a.getRoom().setRoomtype(roomTypeDao.get(roomtype_id));
+					a.getRoom().setNumberOfPartizipants(100L);
+					a.getRoom().setAllowUserQuestions(true);
+					a.getRoom().setAllowFontStyles(true);
+
+					a = appointmentDao.update(a, users_id);
+				}
+				for (MeetingMember mm : a.getMeetingMembers()) {
+					User to = mm.getUser();
+					Room room = a.getRoom();
+					
+					// We do not send an email to the one that has created the
+					// private message
+					if (to != null && from.getUser_id().equals(to.getUser_id())) {
+						continue;
+					}
+
+					//TODO should be reviewed
+					// One message to the Send
+					privateMessagesDao.addPrivateMessage(subject,
+							message, SENT_FOLDER_ID, from, to, from,
+							bookedRoom, room, false, 0L);
+
+					// One message to the Inbox
+					privateMessagesDao.addPrivateMessage(subject,
+							message, INBOX_FOLDER_ID, from, to, to,
+							bookedRoom, room, false, 0L);
+
+					if (to.getAdresses() != null) {
+						AbstractTemplatePanel.ensureApplication(from.getLanguage_id());
+						String aLinkHTML = 	"<br/><br/>" + "<a href='" + ContactsHelper.getLink() + "'>"
+									+  labelDao.getString(1302, from.getLanguage_id()) + "</a><br/>";
+						
+						mailHandler.send(to.getAdresses().getEmail(),
+								labelDao.getString(1301, from.getLanguage_id()) + subject,
+								message.replaceAll("\\<.*?>", "") + aLinkHTML);
+					}
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[composeMail]", err);
+		}
+		return null;
+	}
+
+	public Boolean checkUserIsInContactList(String SID, Long user_id) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				List<UserContact> uList = userContactsDao.getContactsByUserAndStatus(users_id, false);
+
+				for (UserContact userContact : uList) {
+					if (userContact.getContact().getUser_id().equals(user_id)) {
+						return true;
+					}
+				}
+
+				return false;
+			}
+		} catch (Exception err) {
+			log.error("[checkUserIsInContactList]", err);
+		}
+		return null;
+	}
+
+	public void shareCalendarUserContact(String SID, Long userContactId, Boolean shareCalendar) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				UserContact userContacts = userContactsDao.get(userContactId);
+
+				userContacts.setShareCalendar(shareCalendar);
+
+				userContactsDao.updateContact(userContacts);
+			}
+		} catch (Exception err) {
+			log.error("[shareCalendarUserContact]", err);
+		}
+	}
+
+	/**
+	 * Kick a user by its publicSID.<br/>
+	 * <br/>
+	 * <i>Note:</i>
+	 * This method will not perform a call to the slave, cause this call can only be 
+	 * invoked from inside the conference room, that means all clients are on the
+	 * same server, no matter if clustered or not.
+	 * 
+	 * @param SID
+	 * @param publicSID
+	 * @return - true in case user have sufficient permissions, null otherwise
+	 */
+	public Boolean kickUserByPublicSID(String SID, String publicSID) {
+		try {
+			Long users_id = sessiondataDao.checkSession(SID);
+			// users only
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				Client rcl = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+				if (rcl == null) {
+					return true;
+				}
+				String scopeName = "hibernate";
+				if (rcl.getRoom_id() != null) {
+					scopeName = rcl.getRoom_id().toString();
+				}
+				IScope currentScope = this.scopeApplicationAdapter
+						.getRoomScope(scopeName);
+
+				HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
+				messageObj.put(0, "kick");
+
+				scopeApplicationAdapter.sendMessageById(messageObj, rcl.getStreamid(), currentScope);
+				scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
+
+				return true;
+			}
+		} catch (Exception err) {
+			log.error("[kickUserByStreamId]", err);
+		}
+		return null;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java b/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java
new file mode 100644
index 0000000..f7d10db
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/WhiteBoardService.java
@@ -0,0 +1,661 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.apache.commons.collections.ComparatorUtils;
+import org.apache.openmeetings.data.whiteboard.WhiteBoardObjectListManagerById;
+import org.apache.openmeetings.data.whiteboard.WhiteBoardObjectSyncManager;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.room.Cliparts;
+import org.apache.openmeetings.db.dto.room.WhiteboardObject;
+import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
+import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+public class WhiteBoardService implements IPendingServiceCallback {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			WhiteBoardService.class, "openmeetings");
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private final ScopeApplicationAdapter scopeApplicationAdapter = null;
+	@Autowired
+	private final ISessionManager sessionManager = null;
+	@Autowired
+	private final WhiteBoardObjectSyncManager whiteBoardObjectListManager = null;
+	@Autowired
+	private final WhiteBoardObjectListManagerById whiteBoardObjectListManagerById = null;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+
+	public Long getNewWhiteboardId() {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			Long whiteBoardId = this.whiteBoardObjectListManagerById
+					.getNewWhiteboardId(room_id);
+
+			return whiteBoardId;
+
+		} catch (Exception err) {
+			log.error("[deleteWhiteboard]", err);
+		}
+		return null;
+	}
+
+	public Boolean deleteWhiteboard(Long whiteBoardId) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			WhiteboardObjectList whiteboardObjectList = this.whiteBoardObjectListManagerById
+					.getWhiteBoardObjectListByRoomId(room_id);
+
+			for (Iterator<Long> iter = whiteboardObjectList
+					.getWhiteboardObjects().keySet().iterator(); iter.hasNext();) {
+				Long storedWhiteboardId = iter.next();
+
+				log.debug(" :: storedWhiteboardId :: " + storedWhiteboardId);
+
+				if (storedWhiteboardId.equals(whiteBoardId)) {
+					log.debug("Found Whiteboard to Remove");
+				}
+			}
+			Object returnValue = whiteboardObjectList.getWhiteboardObjects()
+					.remove(whiteBoardId);
+
+			log.debug(" :: whiteBoardId :: " + whiteBoardId);
+
+			this.whiteBoardObjectListManagerById
+					.setWhiteBoardObjectListRoomObj(room_id,
+							whiteboardObjectList);
+
+			if (returnValue != null) {
+				return true;
+			} else {
+				return false;
+			}
+
+		} catch (Exception err) {
+			log.error("[deleteWhiteboard]", err);
+		}
+		return null;
+	}
+
+	public WhiteboardObjectList getRoomItemsBy() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			log.debug("getRoomItems: " + room_id);
+			WhiteboardObjectList whiteboardObjectList = this.whiteBoardObjectListManagerById
+					.getWhiteBoardObjectListByRoomId(room_id);
+
+			if (whiteboardObjectList.getWhiteboardObjects().size() == 0) {
+
+				Long whiteBoardId = this.whiteBoardObjectListManagerById
+						.getNewWhiteboardId(room_id);
+
+				this.whiteBoardObjectListManagerById
+						.setWhiteBoardObjectListRoomObjAndWhiteboardId(room_id,
+								new WhiteboardObject(), whiteBoardId);
+
+				log.debug("Init New Room List");
+
+				whiteboardObjectList = this.whiteBoardObjectListManagerById
+						.getWhiteBoardObjectListByRoomId(room_id);
+
+				return whiteboardObjectList;
+
+			} else {
+
+				return whiteboardObjectList;
+
+			}
+
+			// return completeList;
+		} catch (Exception err) {
+			log.error("[getRoomItemsBy]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * change the draw status of a user, allow disallow him to draw anybody
+	 * besides the Moderator to draw on the whiteboard, only a Moderator is
+	 * allowed to trigger this function
+	 * 
+	 * @param SID
+	 * @param publicSID
+	 * @param canDraw
+	 * @return null in case of success, false otherwise
+	 */
+	public Boolean setCanDraw(String SID, String publicSID, boolean canDraw) {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				if (currentClient.getIsMod()) {
+					Client rcl = this.sessionManager
+							.getClientByPublicSID(publicSID, false, null);
+
+					if (rcl != null) {
+						rcl.setCanDraw(canDraw);
+						this.sessionManager.updateClientByStreamId(
+								rcl.getStreamid(), rcl, false, null);
+
+						HashMap<Integer, Object> newMessage = new HashMap<Integer, Object>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						this.scopeApplicationAdapter
+								.sendMessageWithClientWithSyncObject(newMessage, true);
+
+					} else {
+						return false;
+					}
+				} else {
+					return false;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[setCanDraw]", err);
+		}
+		return null;
+	}
+
+	public Boolean setCanShare(String SID, String publicSID, boolean canShare) {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				if (currentClient.getIsMod()) {
+					Client rcl = this.sessionManager
+							.getClientByPublicSID(publicSID, false, null);
+
+					if (rcl != null) {
+						rcl.setCanShare(canShare);
+						this.sessionManager.updateClientByStreamId(
+								rcl.getStreamid(), rcl, false, null);
+
+						HashMap<Integer, Object> newMessage = new HashMap<Integer, Object>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						this.scopeApplicationAdapter
+								.sendMessageWithClientWithSyncObject(newMessage, true);
+
+					} else {
+						return false;
+					}
+				} else {
+					return false;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[setCanDraw]", err);
+		}
+		return null;
+	}
+
+	public Boolean setCanRemote(String SID, String publicSID, boolean canRemote) {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+
+				if (currentClient.getIsMod()) {
+					Client rcl = this.sessionManager
+							.getClientByPublicSID(publicSID, false, null);
+
+					if (rcl != null) {
+						rcl.setCanRemote(canRemote);
+						this.sessionManager.updateClientByStreamId(
+								rcl.getStreamid(), rcl, false, null);
+
+						HashMap<Integer, Object> newMessage = new HashMap<Integer, Object>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						this.scopeApplicationAdapter
+								.sendMessageWithClientWithSyncObject(newMessage, true);
+
+					} else {
+						return false;
+					}
+				} else {
+					return false;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[setCanDraw]", err);
+		}
+		return null;
+	}
+
+    public Boolean setCanGiveAudio(String SID, String publicSID, boolean canGiveAudio) {
+		try {
+            log.debug("[setCanGiveAudio] " + SID + ", " + publicSID + ", " + canGiveAudio);
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+
+			Long users_id = sessiondataDao.checkSession(SID);
+
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
+				if (currentClient.getIsMod()) {
+					Client rcl = this.sessionManager
+							.getClientByPublicSID(publicSID, false, null);
+
+					if (rcl != null) {
+						rcl.setCanGiveAudio(canGiveAudio);
+				        this.sessionManager.updateClientByStreamId(
+				                rcl.getStreamid(), rcl, false, null);
+
+				        HashMap<Integer, Object> newMessage = new HashMap<Integer, Object>();
+				        newMessage.put(0, "updateGiveAudioStatus");
+				        newMessage.put(1, rcl);
+				        this.scopeApplicationAdapter
+				                .sendMessageWithClientWithSyncObject(newMessage, true);
+					} else {
+						return false;
+					}
+				} else {
+					return false;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[setCanGiveAudio]", err);
+		}
+		return null;
+	}
+
+	public WhiteboardSyncLockObject startNewSyncprocess() {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
+			wSyncLockObject.setAddtime(new Date());
+			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
+			wSyncLockObject.setInitialLoaded(true);
+
+			Map<String, WhiteboardSyncLockObject> syncListRoom = this.whiteBoardObjectListManager
+					.getWhiteBoardSyncListByRoomid(room_id);
+
+			wSyncLockObject.setCurrentLoadingItem(true);
+			wSyncLockObject.setStarttime(new Date());
+
+			syncListRoom.put(currentClient.getPublicSID(), wSyncLockObject);
+			this.whiteBoardObjectListManager.setWhiteBoardSyncListByRoomid(
+					room_id, syncListRoom);
+			
+			//Sync to clients
+			this.scopeApplicationAdapter.sendMessageToCurrentScope("sendSyncFlag", wSyncLockObject, true);
+
+			return wSyncLockObject;
+
+		} catch (Exception err) {
+			log.error("[startNewSyncprocess]", err);
+		}
+		return null;
+	}
+
+	public void sendCompletedSyncEvent() {
+		try {
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			Map<String, WhiteboardSyncLockObject> syncListRoom = this.whiteBoardObjectListManager
+					.getWhiteBoardSyncListByRoomid(room_id);
+
+			WhiteboardSyncLockObject wSyncLockObject = syncListRoom
+					.get(currentClient.getPublicSID());
+
+			if (wSyncLockObject == null) {
+				log.error("WhiteboardSyncLockObject not found for this Client "
+						+ syncListRoom);
+				return;
+			} else if (!wSyncLockObject.isCurrentLoadingItem()) {
+				log.warn("WhiteboardSyncLockObject was not started yet "
+						+ syncListRoom);
+				return;
+			} else {
+				syncListRoom.remove(currentClient.getPublicSID());
+				this.whiteBoardObjectListManager.setWhiteBoardSyncListByRoomid(
+						room_id, syncListRoom);
+
+				int numberOfInitial = this
+						.getNumberOfInitialLoaders(syncListRoom);
+
+				if (numberOfInitial == 0) {
+					scopeApplicationAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, true);
+				} else {
+					return;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[sendCompletedSyncEvent]", err);
+		}
+		return;
+	}
+
+	private int getNumberOfInitialLoaders(
+			Map<String, WhiteboardSyncLockObject> syncListRoom)
+			throws Exception {
+		int number = 0;
+		for (Iterator<String> iter = syncListRoom.keySet().iterator(); iter
+				.hasNext();) {
+			WhiteboardSyncLockObject lockObject = syncListRoom.get(iter.next());
+			if (lockObject.isInitialLoaded()) {
+				number++;
+			}
+		}
+		return number;
+	}
+
+	/*
+	 * Image Sync Sequence
+	 */
+
+	public void startNewObjectSyncProcess(String object_id, boolean isStarting) {
+		try {
+
+			log.debug("startNewObjectSyncprocess: " + object_id);
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
+			wSyncLockObject.setAddtime(new Date());
+			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
+			wSyncLockObject.setStarttime(new Date());
+
+			Map<String, WhiteboardSyncLockObject> syncListImage = this.whiteBoardObjectListManager
+					.getWhiteBoardObjectSyncListByRoomAndObjectId(room_id,
+							object_id);
+			syncListImage.put(currentClient.getPublicSID(), wSyncLockObject);
+			this.whiteBoardObjectListManager
+					.setWhiteBoardImagesSyncListByRoomAndObjectId(room_id,
+							object_id, syncListImage);
+
+			// Do only send the Token to show the Loading Splash for the
+			// initial-Request that starts the loading
+			if (isStarting) {
+				scopeApplicationAdapter.sendMessageToCurrentScope("sendObjectSyncFlag", wSyncLockObject, true);
+			}
+
+		} catch (Exception err) {
+			log.error("[startNewObjectSyncProcess]", err);
+		}
+	}
+
+	public int sendCompletedObjectSyncEvent(String object_id) {
+		try {
+
+			log.debug("sendCompletedObjectSyncEvent: " + object_id);
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(streamid, null);
+			Long room_id = currentClient.getRoom_id();
+
+			Map<String, WhiteboardSyncLockObject> syncListImage = this.whiteBoardObjectListManager
+					.getWhiteBoardObjectSyncListByRoomAndObjectId(room_id,
+							object_id);
+
+			log.debug("sendCompletedObjectSyncEvent syncListImage: "
+					+ syncListImage);
+
+			WhiteboardSyncLockObject wSyncLockObject = syncListImage
+					.get(currentClient.getPublicSID());
+
+			if (wSyncLockObject == null) {
+				log.error("WhiteboardSyncLockObject not found for this Client "
+						+ currentClient.getPublicSID());
+				log.error("WhiteboardSyncLockObject not found for this syncListImage "
+						+ syncListImage);
+				return -2;
+
+			} else {
+
+				log.debug("sendCompletedImagesSyncEvent remove: "
+						+ currentClient.getPublicSID());
+
+				syncListImage.remove(currentClient.getPublicSID());
+				this.whiteBoardObjectListManager
+						.setWhiteBoardImagesSyncListByRoomAndObjectId(room_id,
+								object_id, syncListImage);
+
+				int numberOfInitial = this.whiteBoardObjectListManager
+						.getWhiteBoardObjectSyncListByRoomid(room_id).size();
+
+				log.debug("sendCompletedImagesSyncEvent numberOfInitial: "
+						+ numberOfInitial);
+
+				if (numberOfInitial == 0) {
+					scopeApplicationAdapter.sendMessageToCurrentScope("sendObjectSyncCompleteFlag", wSyncLockObject, true);
+					return 1;
+				} else {
+					return -4;
+				}
+			}
+
+		} catch (Exception err) {
+			log.error("[sendCompletedObjectSyncEvent]", err);
+		}
+		return -1;
+	}
+
+	public synchronized void removeUserFromAllLists(IScope scope,
+			Client currentClient) {
+		try {
+
+			Long room_id = currentClient.getRoom_id();
+
+			// TODO: Maybe we should also check all rooms, independent from the
+			// current room_id if there is any user registered
+			if (room_id != null) {
+
+				log.debug("removeUserFromAllLists this.whiteBoardObjectListManager: "
+						+ this.whiteBoardObjectListManager);
+				log.debug("removeUserFromAllLists room_id: " + room_id);
+
+				// Check Initial Loaders
+				Map<String, WhiteboardSyncLockObject> syncListRoom = this.whiteBoardObjectListManager
+						.getWhiteBoardSyncListByRoomid(room_id);
+
+				WhiteboardSyncLockObject wSyncLockObject = syncListRoom
+						.get(currentClient.getPublicSID());
+
+				if (wSyncLockObject != null) {
+					syncListRoom.remove(currentClient.getPublicSID());
+				}
+				this.whiteBoardObjectListManager.setWhiteBoardSyncListByRoomid(
+						room_id, syncListRoom);
+
+				int numberOfInitial = this
+						.getNumberOfInitialLoaders(syncListRoom);
+
+				log.debug("scope " + scope);
+
+				if (numberOfInitial == 0 && scope != null) {
+					
+					scopeApplicationAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, false);
+					
+				}
+
+				// Check Image Loaders
+				Map<String, Map<String, WhiteboardSyncLockObject>> syncListRoomImages = this.whiteBoardObjectListManager
+						.getWhiteBoardObjectSyncListByRoomid(room_id);
+
+				for (Iterator<String> iter = syncListRoomImages.keySet()
+						.iterator(); iter.hasNext();) {
+					String object_id = iter.next();
+					Map<String, WhiteboardSyncLockObject> syncListImages = syncListRoomImages
+							.get(object_id);
+					WhiteboardSyncLockObject wImagesSyncLockObject = syncListImages
+							.get(currentClient.getPublicSID());
+					if (wImagesSyncLockObject != null) {
+						syncListImages.remove(currentClient.getPublicSID());
+					}
+					this.whiteBoardObjectListManager
+							.setWhiteBoardImagesSyncListByRoomAndObjectId(
+									room_id, object_id, syncListImages);
+				}
+
+				int numberOfImageLoaders = this.whiteBoardObjectListManager
+						.getWhiteBoardObjectSyncListByRoomid(room_id).size();
+
+				if (numberOfImageLoaders == 0 && scope != null) {
+					scopeApplicationAdapter.sendMessageToCurrentScope("sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
+				}
+
+			}
+
+		} catch (Exception err) {
+			log.error("[removeUserFromAllLists]", err);
+		}
+	}
+
+	public Cliparts getClipArtIcons() {
+		try {
+			File clipart_dir = OmFileHelper.getPublicClipartsDir();
+
+			FilenameFilter getFilesOnly = new FilenameFilter() {
+				public boolean accept(File b, String name) {
+					File f = new File(b, name);
+					return !f.isDirectory();
+				}
+			};
+
+			FilenameFilter getDirectoriesOnly = new FilenameFilter() {
+				public boolean accept(File b, String name) {
+					File f = new File(b, name);
+					return f.isDirectory() && !f.getName().equals("thumb");
+				}
+			};
+
+			Cliparts cl = new Cliparts();
+			cl.setFolderName("general");
+
+			String[] files_general = clipart_dir.list(getFilesOnly);
+			@SuppressWarnings("unchecked")
+			Comparator<String> comparator = ComparatorUtils.naturalComparator();
+			Arrays.sort(files_general, comparator);
+
+			cl.setGeneralList(files_general);
+			cl.setSubCategories(new LinkedList<Cliparts>());
+
+			for (File dir : clipart_dir.listFiles(getDirectoriesOnly)) {
+				Cliparts cl_sub = new Cliparts();
+				cl_sub.setFolderName("math");
+				String[] files = dir.list(getFilesOnly);
+				Arrays.sort(files, comparator);
+				cl_sub.setGeneralList(files);
+				cl.getSubCategories().add(cl_sub);
+			}
+
+			return cl;
+
+		} catch (Exception err) {
+			log.error("[getClipArtIcons]", err);
+		}
+		return null;
+	}
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		log.debug("resultReceived: " + arg0);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java b/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
new file mode 100644
index 0000000..9d8f5fe
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/red5/ScopeApplicationAdapter.java
@@ -0,0 +1,2360 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote.red5;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.data.whiteboard.EmoticonsManager;
+import org.apache.openmeetings.data.whiteboard.WhiteboardManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.room.BrowserStatus;
+import org.apache.openmeetings.db.dto.room.RoomStatus;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.remote.FLVRecorderService;
+import org.apache.openmeetings.remote.WhiteBoardService;
+import org.apache.openmeetings.remote.util.SessionVariablesUtil;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.InitializationContainer;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.Version;
+import org.apache.openmeetings.util.process.UploadCompleteMessage;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.adapter.ApplicationAdapter;
+import org.red5.server.api.IClient;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.scope.IBasicScope;
+import org.red5.server.api.scope.IBroadcastScope;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.scope.ScopeType;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.api.service.IServiceCapableConnection;
+import org.red5.server.api.stream.IBroadcastStream;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ScopeApplicationAdapter extends ApplicationAdapter implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(ScopeApplicationAdapter.class, webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private EmoticonsManager emoticonsManager;
+	@Autowired
+	private WhiteBoardService whiteBoardService;
+	@Autowired
+	private WhiteboardManager whiteboardManagement;
+	@Autowired
+	private FLVRecorderService flvRecorderService;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	@Autowired
+	private SessiondataDao sessiondataDao;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private ConferenceLogDao conferenceLogDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private FlvRecordingDao recordingDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private ServerDao serverDao;
+
+	private static AtomicLong broadCastCounter = new AtomicLong(0);
+
+	public void resultReceived(IPendingServiceCall arg0) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	public boolean appStart(IScope scope) {
+		try {
+			OmFileHelper.setOmHome(scope.getResource("/").getFile());
+
+			log.debug("webAppPath : " + OmFileHelper.getOmHome());
+
+			// Only load this Class one time Initially this value might by empty, because the DB is empty yet
+			getCryptKey();
+
+			// init your handler here
+
+			// The scheduled Jobs did go into the Spring-Managed Beans, see schedulerJobs.service.xml
+
+			// Spring Definition does not work here, its too early, Instance is not set yet
+			emoticonsManager.loadEmot();
+
+			for (String scopeName : scope.getScopeNames()) {
+				log.debug("scopeName :: " + scopeName);
+			}
+			
+			InitializationContainer.initComplete = true;
+			Version.logOMStarted();
+			recordingDao.resetProcessingStatus(); //we are starting so all processing recordings are now errors
+		} catch (Exception err) {
+			log.error("[appStart]", err);
+		}
+		return true;
+	}
+
+	@Override
+	public boolean roomConnect(IConnection conn, Object[] params) {
+		log.debug("roomConnect : ");
+
+		IServiceCapableConnection service = (IServiceCapableConnection) conn;
+		String streamId = conn.getClient().getId();
+		
+		boolean isAVClient = params.length == 1 ? Boolean.valueOf("" + params[0]) : false;
+
+		log.debug("### Client connected to OpenMeetings, register Client StreamId: " + streamId + " scope "
+				+ conn.getScope().getName() + " isAVClient " + isAVClient);
+
+		// Set StreamId in Client
+		service.invoke("setId", new Object[] { streamId }, this);
+
+		Map<String, Object> map = conn.getConnectParams();
+		String swfURL = map.containsKey("swfUrl") ? (String)map.get("swfUrl") : "";
+
+		//TODO add similar code for other connections
+		if (map.containsKey("screenClient")) {
+			String parentSid = (String)map.get("parentSid");
+			Client parentClient = sessionManager.getClientByPublicSID(parentSid, false, null);
+			if (parentClient == null) {
+				rejectClient();
+			}
+		}
+		Client rcm = sessionManager.addClientListItem(conn.getClient().getId(),
+				conn.getScope().getName(), conn.getRemotePort(),
+				conn.getRemoteAddress(), swfURL, isAVClient, null);
+		
+		SessionVariablesUtil.initClient(conn.getClient(), isAVClient, rcm.getPublicSID());
+		//TODO add similar code for other connections, merge with above block
+		if (map.containsKey("screenClient")) {
+			//TODO add check for room rights
+			String parentSid = (String)map.get("parentSid");
+			rcm.setRoom_id(Long.parseLong(conn.getScope().getName()));
+			rcm.setIsScreenClient(true);
+			SessionVariablesUtil.setIsScreenClient(conn.getClient());
+			
+			rcm.setUser_id(((Integer)map.get("userId")).longValue());
+			SessionVariablesUtil.setUserId(conn.getClient(), rcm.getUser_id());
+
+			rcm.setStreamPublishName(parentSid);
+			User u = usersDao.get(rcm.getUser_id());
+			rcm.setUsername(u.getLogin());
+			rcm.setFirstname(u.getFirstname());
+			rcm.setLastname(u.getLastname());
+			log.debug("publishName :: " + rcm.getStreamPublishName());
+			sessionManager.updateClientByStreamId(streamId, rcm, false, null);
+		}
+
+		// Log the User
+		conferenceLogDao.addConferenceLog("ClientConnect",
+				rcm.getUser_id(), streamId, null, rcm.getUserip(),
+				rcm.getScope(), rcm.getExternalUserId(),
+				rcm.getExternalUserType(), rcm.getEmail(),
+				rcm.getFirstname(), rcm.getLastname());
+		return true;
+	}
+
+	public Map<String, String> screenSharerAction(Map<String, Object> map) {
+		try {
+			log.debug("-----------  screenSharerAction ENTER");
+			IConnection current = Red5.getConnectionLocal();
+
+			Client control = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Client client = sessionManager.getClientByPublicSID(control.getStreamPublishName(), false, null);
+
+			Map<String, String> returnMap = new HashMap<String, String>();
+
+			if (client != null) {
+				boolean changed = false;
+				if (Boolean.valueOf("" + map.get("stopStreaming")) && client.isStartStreaming()) {
+					changed = true;
+					client.setStartStreaming(false);
+					//Send message to all users
+					sendMessageToCurrentScope("stopScreenSharingMessage", client, false);
+					
+					returnMap.put("result", "stopSharingOnly");
+				}
+				if (Boolean.valueOf("" + map.get("stopRecording")) && client.getIsRecording()) {
+					changed = true;
+					client.setStartRecording(false);
+					client.setIsRecording(false);
+					
+					returnMap.put("result", "stopRecordingOnly");
+					//Send message to all users
+					sendMessageToCurrentScope("stopRecordingMessage", client, false);
+
+					flvRecorderService.stopRecordAndSave(current.getScope(), client, null);
+				}
+				if (Boolean.valueOf("" + map.get("stopPublishing")) && client.isScreenPublishStarted()) {
+					changed = true;
+					client.setScreenPublishStarted(false);
+					returnMap.put("result", "stopPublishingOnly");
+					
+					//Send message to all users
+					sendMessageToCurrentScope("stopPublishingMessage", client, false);
+				}
+				
+				if (changed) {
+					sessionManager.updateClientByStreamId(client.getStreamid(), client, false, null);
+					
+					if (!client.isStartStreaming() && !client.isStartRecording() && !client.isStreamPublishStarted()) {
+						returnMap.put("result", "stopAll");
+					}
+				}
+			}
+			log.debug("-----------  screenSharerAction, return: " + returnMap);
+			return returnMap;
+		} catch (Exception err) {
+			log.error("[screenSharerAction]", err);
+		}
+		return null;
+	}
+
+	public List<Client> checkScreenSharing() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+
+			log.debug("checkScreenSharing -2- " + streamid);
+
+			List<Client> screenSharerList = new LinkedList<Client>();
+
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			for (Client rcl : sessionManager.getClientListByRoomAll(currentClient.getRoom_id())) {
+				if (rcl.isStartStreaming()) {
+					screenSharerList.add(rcl);
+				}
+			}
+
+			return screenSharerList;
+
+		} catch (Exception err) {
+			log.error("[checkScreenSharing]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param map
+	 * @return returns key,value Map with multiple return values or null in case of exception
+	 * 
+	 */
+	public Map<String, Object> setConnectionAsSharingClient(Map<String, Object> map) {
+		try {
+			log.debug("-----------  setConnectionAsSharingClient");
+			IConnection current = Red5.getConnectionLocal();
+
+			Client control = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Client client = sessionManager.getClientByPublicSID(control.getStreamPublishName(), false, null);
+
+			if (client != null) {
+				boolean startRecording = Boolean.valueOf("" + map.get("startRecording"));
+				boolean startStreaming = Boolean.valueOf("" + map.get("startStreaming"));
+				boolean startPublishing = Boolean.valueOf("" + map.get("startPublishing")) && (0 == sessionManager.getPublishingCount(client.getRoom_id()));
+
+				boolean alreadyStreaming = client.isStartStreaming();
+				if (startStreaming) {
+					client.setStartStreaming(true);
+				}
+				boolean alreadyRecording = client.isStartRecording();
+				if (startRecording) {
+					client.setStartRecording(true);
+				}
+				if (startPublishing) {
+					client.setStreamPublishStarted(true);
+				}
+
+				client.setVX(Integer.parseInt(map.get("screenX").toString()));
+				client.setVY(Integer.parseInt(map.get("screenY").toString()));
+				client.setVWidth(Integer.parseInt(map.get("screenWidth").toString()));
+				client.setVHeight(Integer.parseInt(map.get("screenHeight").toString()));
+				sessionManager.updateClientByStreamId(current.getClient().getId(), client, false, null);
+
+				Map<String, Object> returnMap = new HashMap<String, Object>();
+				returnMap.put("alreadyPublished", false);
+
+				// if is already started screen sharing, then there is no need
+				// to start it again
+				if (client.isScreenPublishStarted()) {
+					returnMap.put("alreadyPublished", true);
+				}
+
+				log.debug(String.format("screen x,y,width,height %s,%s,%s,%s", client.getVX(), client.getVY(), client.getVWidth(), client.getVHeight()));
+
+				if (startStreaming) {
+					if (!alreadyStreaming) {
+						returnMap.put("modus", "startStreaming");
+	
+						log.debug("start streamPublishStart Is Screen Sharing ");
+						
+						//Send message to all users
+						sendMessageToCurrentScope("newScreenSharing", client, false);
+					} else {
+						log.warn("Streaming is already started for the client id=" + client.getId() + ". Second request is ignored.");
+					}
+				}
+				if (startRecording) {
+					if (!alreadyRecording) {
+						returnMap.put("modus", "startRecording");
+	
+						String recordingName = "Recording " + CalendarPatterns.getDateWithTimeByMiliSeconds(new Date());
+	
+						flvRecorderService.recordMeetingStream(current, client, recordingName, "", false);
+					} else {
+						log.warn("Recording is already started for the client id=" + client.getId() + ". Second request is ignored.");
+					}
+				}
+				if (startPublishing) {
+					sendMessageToCurrentScope("startedPublishing", new Object[]{client, "rtmp://" + map.get("publishingHost") + ":1935/"
+							+ map.get("publishingApp") + "/" + map.get("publishingId")}, false, true);
+					returnMap.put("modus", "startPublishing");
+				}
+				return returnMap;
+
+			} else {
+				throw new Exception("Could not find Screen Sharing Client " + current.getClient().getId());
+			}
+
+		} catch (Exception err) {
+			log.error("[setConnectionAsSharingClient]", err);
+		}
+		return null;
+	}
+
+    public synchronized List<Integer> listRoomBroadcast() {
+    	HashSet<Integer> broadcastList = new HashSet<Integer>();
+        IConnection current = Red5.getConnectionLocal();
+        String streamid = current.getClient().getId();
+        for (IConnection conn : current.getScope().getClientConnections()) {
+            if (conn != null) {
+                Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+                if (rcl == null) {
+                    // continue;
+                } else if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) {
+                    // continue;
+                } else {
+                    if (!streamid.equals(rcl.getStreamid())) {
+                        // It is not needed to send back
+                        // that event to the actuall
+                        // Moderator
+                        // as it will be already triggered
+                        // in the result of this Function
+                        // in the Client
+                    	int id = (int)rcl.getBroadCastID();
+                    	if (!broadcastList.contains(id)) {
+                    		broadcastList.add(id);
+                    	}
+                    }
+                }
+            }
+        }
+        return new ArrayList<Integer>(broadcastList);
+    }
+
+
+	/**
+	 * this function is invoked directly after initial connecting
+	 * 
+	 * @return publicSID of current client
+	 */
+	public String getPublicSID() {
+		log.debug("-----------  getPublicSID");
+		IConnection current = Red5.getConnectionLocal();
+		Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		sessionManager.updateClientByStreamId(current.getClient().getId(), currentClient, false, null);
+		return currentClient.getPublicSID();
+	}
+
+	/**
+	 * this function is invoked after a reconnect
+	 * 
+	 * @param newPublicSID
+	 */
+	public Boolean overwritePublicSID(String newPublicSID) {
+		try {
+			log.debug("-----------  overwritePublicSID");
+			IConnection current = Red5.getConnectionLocal();
+			IClient c = current.getClient();
+			Client currentClient = sessionManager.getClientByStreamId(c.getId(), null);
+			if (currentClient == null) {
+				return false;
+			}
+			SessionVariablesUtil.initClient(c, SessionVariablesUtil.isAVClient(c), newPublicSID);
+			currentClient.setPublicSID(newPublicSID);
+			sessionManager.updateClientByStreamId(c.getId(), currentClient, false, null);
+			return true;
+		} catch (Exception err) {
+			log.error("[overwritePublicSID]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Logic must be before roomDisconnect cause otherwise you cannot throw a
+	 * message to each one
+	 * 
+	 */
+	@Override
+	public void roomLeave(IClient client, IScope room) {
+		try {
+			log.debug(String.format("roomLeave %s %s %s %s", client.getId(), room.getClients().size(), room.getContextPath(), room.getName()));
+
+			Client currentClient = sessionManager.getClientByStreamId(client.getId(), null);
+
+			// The Room Client can be null if the Client left the room by using
+			// logicalRoomLeave
+			if (currentClient != null) {
+				log.debug("currentClient IS NOT NULL");
+				roomLeaveByScope(currentClient, room, true);
+			}
+		} catch (Exception err) {
+			log.error("[roomLeave]", err);
+		}
+	}
+
+	/**
+	 * this means a user has left a room but only logically, he didn't leave the
+	 * app he just left the room
+	 * 
+	 * FIXME: Is this really needed anymore if you re-connect to another scope?
+	 * 
+	 * Exit Room by Application
+	 * 
+	 */
+	public void logicalRoomLeave() {
+		log.debug("logicalRoomLeave ");
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+
+			log.debug(streamid + " is leaving");
+
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			roomLeaveByScope(currentClient, current.getScope(), true);
+		} catch (Exception err) {
+			log.error("[logicalRoomLeave]", err);
+		}
+	}
+
+	/**
+	 * Removes the Client from the List, stops recording, adds the Room-Leave
+	 * event to running recordings, clear Polls and removes Client from any list
+	 * 
+	 * This function is kind of private/protected as the client won't be able 
+	 * to call it with proper values.
+	 * 
+	 * @param currentClient
+	 * @param currentScope
+	 */
+	public void roomLeaveByScope(Client currentClient, IScope currentScope, boolean removeUserFromSessionList) {
+		try {
+			log.debug("currentClient " + currentClient);
+			Long room_id = currentClient.getRoom_id();
+
+			// Log the User
+			conferenceLogDao.addConferenceLog("roomLeave",
+					currentClient.getUser_id(), currentClient.getStreamid(),
+					room_id, currentClient.getUserip(), "",
+					currentClient.getExternalUserId(),
+					currentClient.getExternalUserType(),
+					currentClient.getEmail(), currentClient.getFirstname(),
+					currentClient.getLastname());
+
+			// Remove User from Sync List's
+			if (room_id != null) {
+				whiteBoardService.removeUserFromAllLists(currentScope, currentClient);
+			}
+
+			log.debug("removing USername " + currentClient.getUsername() + " "
+					+ currentClient.getConnectedSince() + " streamid: "
+					+ currentClient.getStreamid());
+
+			// stop and save any recordings
+			if (currentClient.getIsRecording()) {
+				log.debug("*** roomLeave Current Client is Recording - stop that");
+				if (currentClient.getInterviewPodId() != null) {
+					//interview, TODO need better check
+					_stopInterviewRecording(currentClient, currentScope);
+				} else {
+					flvRecorderService.stopRecordAndSave(currentScope, currentClient, null);
+
+					// set to true and overwrite the default one cause otherwise no
+					// notification is send
+					currentClient.setIsRecording(true);
+				}
+			}
+
+			// Notify all clients of the same currentScope (room) with domain
+			// and room except the current disconnected cause it could throw an exception
+			log.debug("currentScope " + currentScope);
+
+			if (currentScope != null && currentScope.getClientConnections() != null) {
+				// Notify Users of the current Scope
+				for (IConnection cons : currentScope.getClientConnections()) {
+					if (cons != null && cons instanceof IServiceCapableConnection) {
+						log.debug("sending roomDisconnect to {}  client id {}", cons, cons.getClient().getId());
+
+						Client rcl = sessionManager.getClientByStreamId(cons.getClient().getId(), null);
+
+						// Check if the Client does still exist on the list
+						if (rcl == null) {
+							log.debug("For this StreamId: " + cons.getClient().getId() + " There is no Client in the List anymore");
+							continue;
+						}
+						
+						//Do not send back to sender, but actually all other clients should receive this message swagner 01.10.2009
+						if (!currentClient.getStreamid().equals(rcl.getStreamid())) {
+							// add Notification if another user isrecording
+							log.debug("###########[roomLeave]");
+							if (rcl.getIsRecording()) {
+								log.debug("*** roomLeave Any Client is Recording - stop that");
+								flvRecorderService.stopRecordingShowForClient(cons, currentClient);
+							}
+							
+							//If the user was a avclient, we do not broadcast a message about that to everybody
+							if (currentClient.getIsAVClient()) {
+								continue;
+							}
+							
+							boolean isScreen = rcl.getIsScreenClient() != null && rcl.getIsScreenClient();
+							if (isScreen && currentClient.getPublicSID().equals(rcl.getStreamPublishName())) {
+								//going to terminate screen sharing started by this client
+								((IServiceCapableConnection) cons).invoke("stopStream", new Object[] { },this);
+								continue;
+							} else if (isScreen) {
+								// screen sharing clients do not receive events
+								continue;
+							} else if (rcl.getIsAVClient()) {
+								// AVClients or potential AVClients do not receive events
+								continue;
+							}
+							
+							// Send to all connected users
+							((IServiceCapableConnection) cons).invoke("roomDisconnect", new Object[] { currentClient },this);
+							log.debug("sending roomDisconnect to " + cons);
+						}
+					}
+				}
+			}
+
+			if (removeUserFromSessionList) {
+				sessionManager.removeClient(currentClient.getStreamid(), null);
+			}
+		} catch (Exception err) {
+			log.error("[roomLeaveByScope]", err);
+		}
+	}
+
+	/**
+	 * This method handles the Event after a stream has been added all connected
+	 * Clients in the same room will get a notification
+	 * 
+	 */
+	/* (non-Javadoc)
+	 * @see org.red5.server.adapter.MultiThreadedApplicationAdapter#streamPublishStart(org.red5.server.api.stream.IBroadcastStream)
+	 */
+	@Override
+	public void streamPublishStart(IBroadcastStream stream) {
+		try {
+			log.debug("-----------  streamPublishStart");
+			IConnection current = Red5.getConnectionLocal();
+			final String streamid = current.getClient().getId();
+			final Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			//We make a second object the has the reference to the object 
+			//that we will use to send to all participents
+			Client clientObjectSendToSync = currentClient;
+			
+			// Notify all the clients that the stream had been started
+			log.debug("start streamPublishStart broadcast start: " + stream.getPublishedName() + " CONN " + current);
+
+			// In case its a screen sharing we start a new Video for that
+			if (currentClient.getIsScreenClient()) {
+				currentClient.setScreenPublishStarted(true);
+				sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+			}
+			//If its an audio/video client then send the session object with the full data to everybody
+			else if (currentClient.getIsAVClient()) {
+				clientObjectSendToSync = sessionManager.getClientByPublicSID(currentClient.getPublicSID(), false, null);
+			}
+			
+			log.debug("newStream SEND: " + currentClient);
+
+			// Notify all users of the same Scope
+			// We need to iterate through the streams to catch if anybody is recording
+			new MessageSender(current, "newStream", clientObjectSendToSync) {
+				@Override
+				public boolean filter(IConnection conn) {
+					Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+					
+					if (rcl == null) {
+						log.debug("RCL IS NULL newStream SEND");
+						return true;
+					}
+					
+					log.debug("check send to "+rcl);
+					
+					if (rcl.getPublicSID() == "") {
+						log.debug("publicSID IS NULL newStream SEND");
+						return true;
+					}
+					if (rcl.getIsRecording()) {
+						log.debug("RCL getIsRecording newStream SEND");
+						flvRecorderService.addRecordingByStreamId(current, streamid, currentClient, rcl.getFlvRecordingId());
+					}
+					if (rcl.getIsAVClient()) {
+						log.debug("RCL getIsAVClient newStream SEND");
+						return true;
+					}
+					if (rcl.getIsScreenClient() == null || rcl.getIsScreenClient()) {
+						log.debug("RCL getIsScreenClient newStream SEND");
+						return true;
+					}
+					
+					if (rcl.getPublicSID().equals(currentClient.getPublicSID())) {
+						log.debug("RCL publicSID is equal newStream SEND");
+						return true;
+					}
+					log.debug("RCL SEND is equal newStream SEND "+rcl.getPublicSID()+" || "+rcl.getUserport());
+					return false;
+				}
+			}.start();
+		} catch (Exception err) {
+			log.error("[streamPublishStart]", err);
+		}
+	}
+
+	public IBroadcastScope getBroadcastScope(IScope scope, String name) {
+		IBasicScope basicScope = scope.getBasicScope(ScopeType.BROADCAST, name);
+		if (!(basicScope instanceof IBroadcastScope)) {
+			return null;
+		} else {
+			return (IBroadcastScope) basicScope;
+		}
+	}
+
+	/**
+	 * This method handles the Event after a stream has been removed all
+	 * connected Clients in the same room will get a notification
+	 * 
+	 */
+	/* (non-Javadoc)
+	 * @see org.red5.server.adapter.MultiThreadedApplicationAdapter#streamBroadcastClose(org.red5.server.api.stream.IBroadcastStream)
+	 */
+	@Override
+	public void streamBroadcastClose(IBroadcastStream stream) {
+
+		// Notify all the clients that the stream had been closed
+		log.debug("start streamBroadcastClose broadcast close: " + stream.getPublishedName());
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client rcl = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			sendClientBroadcastNotifications(stream, "closeStream", rcl);
+		} catch (Exception e) {
+			log.error("[streamBroadcastClose]", e);
+		}
+	}
+
+	/**
+	 * This method handles the notification room-based
+	 * 
+	 * @return void
+	 * 
+	 */
+	private synchronized void sendClientBroadcastNotifications(IBroadcastStream stream, String clientFunction, Client rc) {
+		try {
+			// Store the local so that we do not send notification to ourself back
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			if (currentClient == null) {
+
+				// In case the client has already left(kicked) this message
+				// might be thrown later then the RoomLeave
+				// event and the currentClient is already gone
+				// The second Use-Case where the currentClient is maybe null is
+				// if we remove the client because its a Zombie/Ghost
+
+				return;
+
+			}
+			// Notify all the clients that the stream had been started
+			log.debug("sendClientBroadcastNotifications: " + stream.getPublishedName());
+			log.debug("sendClientBroadcastNotifications : " + currentClient + " " + currentClient.getStreamid());
+
+			// Notify all clients of the same scope (room)
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						if (conn.equals(current)) {
+							// there is a Bug in the current implementation
+							// of the appDisconnect
+							if (clientFunction.equals("closeStream")) {
+								Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+								if (clientFunction.equals("closeStream") && rcl.getIsRecording()) {
+									log.debug("*** stopRecordingShowForClient Any Client is Recording - stop that");
+									// StreamService.stopRecordingShowForClient(conn,
+									// currentClient,
+									// rcl.getRoomRecordingName(), false);
+									flvRecorderService.stopRecordingShowForClient(conn, currentClient);
+								}
+								// Don't notify current client
+								current.ping();
+							}
+							continue;
+						} else {
+							Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+							if (rcl != null) {
+								if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) {
+									// continue;
+								} else {
+									log.debug("is this users still alive? :" + rcl);
+									IServiceCapableConnection iStream = (IServiceCapableConnection) conn;
+									iStream.invoke(clientFunction, new Object[] { rc }, this);
+								}
+
+								log.debug("sending notification to " + conn + " ID: ");
+
+								// if this close stream event then stop the
+								// recording of this stream
+								if (clientFunction.equals("closeStream") && rcl.getIsRecording()) {
+									log.debug("***  +++++++ ######## sendClientBroadcastNotifications Any Client is Recording - stop that");
+									flvRecorderService.stopRecordingShowForClient(conn, currentClient);
+								}
+							}
+						}
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendClientBroadcastNotifications]", err);
+		}
+	}
+
+
+	/**
+	 * Adds a Moderator by its publicSID
+	 * 
+	 * @param publicSID
+	 * @return -1
+	 */
+	public synchronized Long addModerator(String publicSID) {
+		try {
+			log.debug("-----------  addModerator: " + publicSID);
+
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				return -1L;
+			}
+			Long room_id = currentClient.getRoom_id();
+
+			currentClient.setIsMod(true);
+			// Put the mod-flag to true for this client
+			sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+
+			List<Client> currentMods = sessionManager.getCurrentModeratorByRoom(room_id);
+			
+			//Send message to all users
+			sendMessageToCurrentScope("setNewModeratorByList", currentMods, true);
+
+		} catch (Exception err) {
+			log.error("[addModerator]", err);
+		}
+		return -1L;
+	}
+
+	@SuppressWarnings("unchecked")
+	public void setNewCursorPosition(Object item) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			@SuppressWarnings("rawtypes")
+			Map cursor = (Map) item;
+			cursor.put("streamPublishName", currentClient.getStreamPublishName());
+
+			sendMessageToCurrentScope("newRed5ScreenCursor", cursor, true, false);
+		} catch (Exception err) {
+			log.error("[setNewCursorPosition]", err);
+		}
+	}
+
+	public Long removeModerator(String publicSID) {
+		try {
+			log.debug("-----------  removeModerator: " + publicSID);
+
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				return -1L;
+			}
+			Long room_id = currentClient.getRoom_id();
+
+			currentClient.setIsMod(false);
+			// Put the mod-flag to true for this client
+			sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+
+			List<Client> currentMods = sessionManager.getCurrentModeratorByRoom(room_id);
+
+			sendMessageToCurrentScope("setNewModeratorByList", currentMods, true);
+		} catch (Exception err) {
+			log.error("[addModerator]", err);
+		}
+		return -1L;
+	}
+
+	public Long setBroadCastingFlag(String publicSID, boolean value, Integer interviewPodId) {
+		try {
+			log.debug("-----------  setBroadCastingFlag: " + publicSID);
+
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				return -1L;
+			}
+
+			currentClient.setIsBroadcasting(value);
+			currentClient.setInterviewPodId(interviewPodId);
+
+			// Put the mod-flag to true for this client
+			sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+		    
+			// Notify all clients of the same scope (room)
+			sendMessageToCurrentScope("setNewBroadCastingFlag", currentClient, true);
+		} catch (Exception err) {
+			log.error("[setBroadCastingFlag]", err);
+		}
+		return -1L;
+	}
+
+	public Long giveExclusiveAudio(String publicSID) {
+		try {
+			log.debug("-----------  giveExclusiveAudio: " + publicSID);
+
+			IConnection current = Red5.getConnectionLocal();
+			// String streamid = current.getClient().getId();
+
+			final Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				return -1L;
+			}
+
+			// Put the mod-flag to true for this client
+			currentClient.setMicMuted(false);
+			sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+
+			// Notify all clients of the same scope (room)
+			new MessageSender(current, "receiveExclusiveAudioFlag", currentClient) {
+				@Override
+				public boolean filter(IConnection conn) {
+					Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+					if (rcl == null) {
+					} else if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) {
+					} else {
+						if (rcl != currentClient) {
+							rcl.setMicMuted(true);
+							sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+						}
+						return false;
+					}
+					return true;
+				}
+			}.start();
+		} catch (Exception err) {
+			log.error("[giveExclusiveAudio]", err);
+		}
+		return -1L;
+	}
+
+	public Long switchMicMuted(String publicSID, boolean mute) {
+		try {
+			log.debug("-----------  switchMicMuted: " + publicSID);
+
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+			if (currentClient == null) {
+				return -1L;
+			}
+
+			currentClient.setMicMuted(mute);
+			sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
+
+			HashMap<Integer, Object> newMessage = new HashMap<Integer, Object>();
+			newMessage.put(0, "updateMuteStatus");
+			newMessage.put(1, currentClient);
+			sendMessageWithClient(newMessage);
+		} catch (Exception err) {
+			log.error("[switchMicMuted]", err);
+		}
+		return 0L;
+	}
+
+	public Boolean getMicMutedByPublicSID(String publicSID) {
+		try {
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+			if (currentClient == null) {
+				return true;
+			}
+
+			//Put the mod-flag to true for this client
+			Boolean muted = currentClient.getMicMuted();
+			if (null == muted) {
+				muted = true;
+			}
+
+			return muted;
+		} catch (Exception err) {
+			log.error("[getMicMutedByPublicSID]",err);
+		}
+		return true;
+	}
+
+	/**
+	 * Invoked by a User whenever he want to become moderator this is needed,
+	 * cause if the room has no moderator yet there is no-one he can ask to get
+	 * the moderation, in case its a Non-Moderated Room he should then get the
+	 * Moderation without any confirmation needed
+	 * 
+	 * @return Long 1 => means get Moderation, 2 => ask Moderator for
+	 *         Moderation, 3 => wait for Moderator
+	 */
+	public synchronized Long applyForModeration(String publicSID) {
+		try {
+
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			List<Client> currentModList = sessionManager.getCurrentModeratorByRoom(currentClient.getRoom_id());
+
+			if (currentModList.size() > 0) {
+				return 2L;
+			} else {
+				// No moderator in this room at the moment
+				Room room = roomDao.get(currentClient.getRoom_id());
+
+				return room.getIsModeratedRoom() ? 3L : 1L;
+			}
+
+		} catch (Exception err) {
+			log.error("[applyForModeration]", err);
+		}
+		return -1L;
+	}
+
+	/**
+	 * there will be set an attribute called "broadCastCounter" this is the name
+	 * this user will publish his stream
+	 * 
+	 * @return long broadCastId
+	 */
+	public long getBroadCastId() {
+		try {
+			log.debug("-----------  getBroadCastId");
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client client = sessionManager.getClientByStreamId(streamid, null);
+			client.setBroadCastID(broadCastCounter.getAndIncrement());
+			sessionManager.updateClientByStreamId(streamid, client, false, null);
+			return client.getBroadCastID();
+		} catch (Exception err) {
+			log.error("[getBroadCastId]", err);
+		}
+		return -1;
+	}
+
+	/**
+	 * this must be set _after_ the Video/Audio-Settings have been chosen (see
+	 * editrecordstream.lzx) but _before_ anything else happens, it cannot be
+	 * applied _after_ the stream has started! avsettings can be: av - video and
+	 * audio a - audio only v - video only n - no a/v only static image
+	 * furthermore
+	 * 
+	 * @param avsettings
+	 * @param newMessage
+	 * @param vWidth
+	 * @param vHeight
+	 * @param room_id
+	 * @param publicSID
+	 * @param interviewPodId
+	 * @return RoomClient being updated in case of no errors, null otherwise
+	 */
+	public Client setUserAVSettings(String avsettings,
+			Object newMessage, Integer vWidth, Integer vHeight, 
+			long room_id, String publicSID, Integer interviewPodId) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			IClient c = current.getClient();
+			String streamid = c.getId();
+			log.debug("-----------  setUserAVSettings {} {} {}", new Object[] {streamid, publicSID, avsettings, newMessage});
+			Client parentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			currentClient.setAvsettings(avsettings);
+			currentClient.setRoom_id(room_id);
+			currentClient.setPublicSID(publicSID);
+			currentClient.setVWidth(vWidth);
+			currentClient.setVHeight(vHeight);
+			currentClient.setInterviewPodId(interviewPodId);
+			currentClient.setUser_id(parentClient.getUser_id());
+			currentClient.setLastname(parentClient.getLastname());
+			currentClient.setFirstname(parentClient.getFirstname());
+			currentClient.setPicture_uri(parentClient.getPicture_uri());
+			sessionManager.updateAVClientByStreamId(streamid, currentClient, null);
+			SessionVariablesUtil.initClient(c, false, publicSID);
+
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("client", currentClient);
+			hsm.put("message", newMessage);
+
+			sendMessageToCurrentScope("sendVarsToMessageWithClient", hsm, true);
+			return currentClient;
+		} catch (Exception err) {
+			log.error("[setUserAVSettings]", err);
+		}
+		return null;
+	}
+
+	/*
+	 * checks if the user is allowed to apply for Moderation
+	 */
+	public Boolean checkRoomValues(Long room_id) {
+		try {
+
+			// appointed meeting or moderated Room?
+			Room room = roomDao.get(room_id);
+
+			// not really - default logic
+			if (room.getAppointment() == null || room.getAppointment() == false) {
+				if (room.getIsModeratedRoom()) {
+					// if this is a Moderated Room then the Room can be only
+					// locked off by the Moderator Bit
+					List<Client> clientModeratorListRoom = sessionManager.getCurrentModeratorByRoom(room_id);
+
+					// If there is no Moderator yet and we are asking for it
+					// then deny it
+					// cause at this moment, the user should wait untill a
+					// Moderator enters the Room
+					return clientModeratorListRoom.size() != 0;
+				} else {
+					return true;
+				}
+			} else {
+				// FIXME: TODO: For Rooms that are created as Appointment we
+				// have to check that too
+				// but I don't know yet the Logic behind it - swagner 19.06.2009
+				return true;
+
+			}
+		} catch (Exception err) {
+			log.error("[checkRoomValues]", err);
+		}
+		return false;
+	}
+
+	/**
+	 * This function is called once a User enters a Room
+	 * 
+	 * It contains several different mechanism depending on what roomtype and
+	 * what options are available for the room to find out if the current user
+	 * will be a moderator of that room or not<br/>
+	 * <br/>
+	 * Some rules:<br/>
+	 * <ul>
+	 * <li>If it is a room that was created through the calendar, the user that
+	 * organized the room will be moderator, the param Boolean becomeModerator
+	 * will be ignored then</li>
+	 * <li>In regular rooms you can use the param Boolean becomeModerator to set
+	 * any user to become a moderator of the room</li>
+	 * </ul>
+	 * <br/>
+	 * If a new moderator is detected a Push Call to all current users of the
+	 * room is invoked "setNewModeratorByList" to notify them of the new
+	 * moderator<br/>
+	 * <br/>
+	 * At the end of the mechanism a push call with the new client-object
+	 * and all the informations about the new user is send to every user of the
+	 * current conference room<br/>
+	 * <br/>
+	 *
+	 * @param room_id - id of the room
+	 * @param becomeModerator - is user will become moderator
+	 * @param isSuperModerator - is user super moderator
+	 * @param organization_id - organization id of the user
+	 * @param colorObj - some color
+	 * @return RoomStatus object
+	 */
+	public synchronized RoomStatus setRoomValues(Long room_id, Boolean becomeModerator, Boolean isSuperModerator,
+			Long organization_id, String colorObj) {
+		try {
+			log.debug("-----------  setRoomValues");
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			currentClient.setRoom_id(room_id);
+			currentClient.setRoomEnter(new Date());
+			currentClient.setOrganization_id(organization_id);
+
+			currentClient.setUsercolor(colorObj);
+
+			// Inject externalUserId if nothing is set yet
+			if (currentClient.getExternalUserId() == null) {
+				if (currentClient.getUser_id() != null) {
+					User us = usersDao.get(currentClient.getUser_id());
+					if (us != null) {
+						currentClient.setExternalUserId(us.getExternalUserId());
+						currentClient.setExternalUserType(us.getExternalUserType());
+					}
+				}
+			}
+
+			// This can be set without checking for Moderation Flag
+			currentClient.setIsSuperModerator(isSuperModerator);
+
+			sessionManager.updateClientByStreamId(streamid, currentClient, true, null);
+
+            Room room = roomDao.get(room_id);
+            if (room.getShowMicrophoneStatus()) {
+            	currentClient.setCanGiveAudio(true);
+            }
+
+			// Log the User
+			conferenceLogDao.addConferenceLog("roomEnter",
+					currentClient.getUser_id(), streamid, room_id,
+					currentClient.getUserip(), "",
+					currentClient.getExternalUserId(),
+					currentClient.getExternalUserType(),
+					currentClient.getEmail(), currentClient.getFirstname(),
+					currentClient.getLastname());
+			
+			// Check for Moderation LogicalRoom ENTER
+			List<Client> clientListRoom = sessionManager.getClientListByRoom(room_id);
+
+			// Return Object
+			RoomStatus roomStatus = new RoomStatus();
+			// appointed meeting or moderated Room? => Check Max Users first
+			if (room.getNumberOfPartizipants() != null && clientListRoom.size() > room.getNumberOfPartizipants()) {
+				roomStatus.setRoomFull(true);
+				return roomStatus;
+			}
+
+			// default logic for non regular rooms
+			if (room.getAppointment() == null || room.getAppointment() == false) {
+				if (room.getIsModeratedRoom()) {
+					// if this is a Moderated Room then the Room can be only
+					// locked off by the Moderator Bit
+					// List<RoomClient> clientModeratorListRoom =
+					// this.sessionManager.getCurrentModeratorByRoom(room_id);
+
+					// If there is no Moderator yet we have to check if the
+					// current User has the Bit set to true to
+					// become one, otherwise he won't get Moderation and has to
+					// wait
+					if (becomeModerator) {
+						currentClient.setIsMod(true);
+
+						// There is a need to send an extra Event here, cause at
+						// this moment there could be
+						// already somebody in the Room waiting
+
+						// Update the Client List
+						sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+
+						List<Client> modRoomList = sessionManager.getCurrentModeratorByRoom(currentClient.getRoom_id());
+						
+						//Sync message to everybody
+						sendMessageToCurrentScope("setNewModeratorByList", modRoomList, false);
+					} else {
+						// The current User is not a Teacher/Admin or whatever
+						// Role that should get the
+						// Moderation
+						currentClient.setIsMod(false);
+					}
+				} else {
+					// If this is a normal Room Moderator rules : first come, first draw ;-)
+					log.debug("setRoomValues : Room"
+							+ room_id
+							+ " not appointed! Moderator rules : first come, first draw ;-)");
+					if (clientListRoom.size() == 1) {
+						log.debug("Room is empty so set this user to be moderation role");
+						currentClient.setIsMod(true);
+					} else {
+						log.debug("Room is already somebody so set this user not to be moderation role");
+
+						if (becomeModerator) {
+							currentClient.setIsMod(true);
+
+							// Update the Client List
+							sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+
+							List<Client> modRoomList = sessionManager.getCurrentModeratorByRoom(currentClient.getRoom_id());
+
+							// There is a need to send an extra Event here,
+							// cause at this moment there could be
+							// already somebody in the Room waiting -swagner check this comment, 20.01.2012
+							
+							//Sync message to everybody
+							sendMessageToCurrentScope("setNewModeratorByList", modRoomList, false);
+
+						} else {
+							// The current User is not a Teacher/Admin or
+							// whatever Role that should get the Moderation
+							currentClient.setIsMod(false);
+						}
+					}
+				}
+
+				// Update the Client List
+				sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+			} else {
+				// If this is an Appointment then the Moderator will be set to the Invitor
+
+				Appointment ment = appointmentLogic.getAppointmentByRoom(room_id);
+
+				Long userIdInRoomClient = currentClient.getUser_id();
+
+				boolean found = false;
+				boolean moderator_set = false;
+				// First check owner who is not in the members list
+				if (ment.getOwner().getUser_id().equals(userIdInRoomClient)) {
+					found = true;
+					log.debug("User "
+							+ userIdInRoomClient
+							+ " is moderator due to flag in MeetingMember record");
+					currentClient.setIsMod(true);
+					moderator_set = true;
+
+					// Update the Client List
+					sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+
+					List<Client> modRoomList = sessionManager.getCurrentModeratorByRoom(currentClient.getRoom_id());
+
+					// There is a need to send an extra Event here, cause at this moment 
+					// there could be already somebody in the Room waiting
+
+					//Sync message to everybody
+					sendMessageToCurrentScope("setNewModeratorByList", modRoomList, false);
+				}
+				if (!found) {
+					// Check if current user is set to moderator
+					for (MeetingMember member : ment.getMeetingMembers()) {
+						// only persistent users can schedule a meeting
+						// user-id is only set for registered users
+						if (member.getUser() != null) {
+							log.debug("checking user " + member.getUser().getFirstname()
+									+ " for moderator role - ID : "
+									+ member.getUser().getUser_id());
+	
+							if (member.getUser().getUser_id().equals(userIdInRoomClient)) {
+								found = true;
+								log.debug("User " + userIdInRoomClient+ " is NOT moderator due to flag in MeetingMember record");
+								currentClient.setIsMod(false);
+								sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+								break;
+							}
+						}
+					}
+				}
+
+				if (!found) {
+					log.debug("User "
+							+ userIdInRoomClient
+							+ " could not be found as MeetingMember -> definitely no moderator");
+					currentClient.setIsMod(false);
+					sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+				} else {
+					// if current user is part of the member list, but moderator
+					// couldn't be retrieved : first come, first draw!
+					if (clientListRoom.size() == 1 && !moderator_set) {
+						log.debug("");
+						currentClient.setIsMod(true);
+
+						// Update the Client List
+						sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+
+						List<Client> modRoomList = sessionManager.getCurrentModeratorByRoom(currentClient.getRoom_id());
+
+						// There is a need to send an extra Event here, cause at
+						// this moment there could be
+						// already somebody in the Room waiting
+
+						//Sync message to everybody
+						sendMessageToCurrentScope("setNewModeratorByList", modRoomList, false);
+						
+						sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+					}
+				}
+
+			}
+			
+			//Sync message to everybody
+			sendMessageToCurrentScope("addNewUser", currentClient, false);
+
+			//Status object for Shared Browsing
+			BrowserStatus browserStatus = (BrowserStatus)current.getScope().getAttribute("browserStatus");
+
+			if (browserStatus == null) {
+				browserStatus = new BrowserStatus();
+			}
+
+			// RoomStatus roomStatus = new RoomStatus();
+
+			// FIXME: Rework Client Object to DTOs
+			roomStatus.setClientList(clientListRoom);
+			roomStatus.setBrowserStatus(browserStatus);
+
+			return roomStatus;
+		} catch (Exception err) {
+			log.error("[setRoomValues]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * This method is invoked when the user has disconnected and reconnects to
+	 * the Gateway with the new scope
+	 * 
+	 * @param SID
+	 * @param userId
+	 * @param username
+	 * @param firstname
+	 * @param lastname
+	 * @param picture_uri
+	 * @return client being updated in case of success, null otherwise
+	 */
+	public Client setUsernameReconnect(String SID, Long userId, String username, String firstname, String lastname, String picture_uri) {
+		try {
+			log.debug("-----------  setUsernameReconnect");
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			SessionVariablesUtil.setUserId(current.getClient(), userId);
+			currentClient.setPicture_uri(picture_uri);
+			currentClient.setUserObject(userId, username, firstname, lastname);
+
+			// Update Session Data
+			sessiondataDao.updateUserWithoutSession(SID, userId);
+
+			// only fill this value from User-Record
+			// cause invited users have no associated User, so
+			// you cannot set the firstname,lastname from the UserRecord
+			if (userId != null) {
+				User us = usersDao.get(userId);
+				
+				if (us != null) {
+					currentClient.setExternalUserId(us.getExternalUserId());
+					currentClient.setExternalUserType(us.getExternalUserType());
+					if (us.getPictureuri() != null) {
+						// set Picture-URI
+						currentClient.setPicture_uri(us.getPictureuri());
+					}
+				}
+			}
+			sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+			return currentClient;
+		} catch (Exception err) {
+			log.error("[setUsername]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * this is set initial directly after login/loading language
+	 * 
+	 * @param SID - id of the session
+	 * @param userId - id of the user being set
+	 * @param username - username of the user
+	 * @param firstname - firstname of the user
+	 * @param lastname - lastname of the user
+	 * @return RoomClient in case of everything is OK, null otherwise
+	 */
+	public Client setUsernameAndSession(String SID, Long userId, String username, String firstname, String lastname) {
+		try {
+			log.debug("-----------  setUsernameAndSession");
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			currentClient.setUsername(username);
+			currentClient.setUser_id(userId);
+			SessionVariablesUtil.setUserId(current.getClient(), userId);
+			currentClient.setUserObject(userId, username, firstname, lastname);
+
+			// Update Session Data
+			log.debug("UDPATE SESSION " + SID + ", " + userId);
+			sessiondataDao.updateUserWithoutSession(SID, userId);
+
+			User user = usersDao.get(userId);
+
+			if (user != null) {
+				currentClient.setExternalUserId(user.getExternalUserId());
+				currentClient.setExternalUserType(user.getExternalUserType());
+			}
+
+			// only fill this value from User-Record
+			// cause invited users have non
+			// you cannot set the firstname,lastname from the UserRecord
+			User us = usersDao.get(userId);
+			if (us != null && us.getPictureuri() != null) {
+				// set Picture-URI
+				currentClient.setPicture_uri(us.getPictureuri());
+			}
+			sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+			return currentClient;
+		} catch (Exception err) {
+			log.error("[setUsername]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * used by the Screen-Sharing Servlet to trigger events
+	 * 
+	 * @param room_id
+	 * @param message
+	 * @return the list of room clients
+	 */
+	public HashMap<String, Client> sendMessageByRoomAndDomain(Long room_id, Object message) {
+		HashMap<String, Client> roomClientList = new HashMap<String, Client>();
+		try {
+
+			log.debug("sendMessageByRoomAndDomain " + room_id);
+
+			IScope globalScope = getContext().getGlobalScope();
+			IScope webAppKeyScope = globalScope.getScope(OpenmeetingsVariables.webAppRootKey);
+
+			log.debug("webAppKeyScope " + webAppKeyScope);
+
+			IScope scopeHibernate = webAppKeyScope.getScope(room_id.toString());
+
+			new MessageSender(scopeHibernate, "newMessageByRoomAndDomain", message) {
+				@Override
+				public boolean filter(IConnection conn) {
+					IClient client = conn.getClient();
+					return SessionVariablesUtil.isScreenClient(client) || SessionVariablesUtil.isAVClient(client);
+				}
+			}.start();
+		} catch (Exception err) {
+			log.error("[getClientListBYRoomAndDomain]", err);
+		}
+		return roomClientList;
+	}
+
+	public synchronized List<Client> getCurrentModeratorList() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			Long room_id = currentClient.getRoom_id();
+			return sessionManager.getCurrentModeratorByRoom(room_id);
+		} catch (Exception err) {
+			log.error("[getCurrentModerator]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * This Function is triggered from the Whiteboard
+	 * 
+	 * @param whiteboardObjParam - array of parameters being sended to whiteboard
+	 * @param whiteboardId - id of whiteboard parameters will be send to
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public void sendVarsByWhiteboardId(ArrayList whiteboardObjParam, Long whiteboardId) {
+		//
+		try {
+
+			Map whiteboardObj = new HashMap();
+			int i = 0;
+			for (Iterator iter = whiteboardObjParam.iterator(); iter.hasNext();) {
+				Object obj = iter.next();
+				// log.debug("obj"+obj);
+				whiteboardObj.put(i, obj);
+				i++;
+			}
+
+			// Check if this User is the Mod:
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = this.sessionManager
+					.getClientByStreamId(current.getClient().getId(), null);
+
+			if (currentClient == null) {
+				return;
+			}
+
+			Long room_id = currentClient.getRoom_id();
+
+			// log.debug("***** sendVars: " + whiteboardObj);
+
+			// Store event in list
+			String action = whiteboardObj.get(2).toString();
+
+			if (action.equals("deleteMindMapNodes")) {
+
+				// Simulate Single Delete Events for z-Index
+				List actionObject = (List) whiteboardObj.get(3);
+
+				List<List> itemObjects = (List) actionObject.get(3);
+
+				Map whiteboardTempObj = new HashMap();
+				whiteboardTempObj.put(2, "delete");
+
+				for (List itemObject : itemObjects) {
+
+					List<Object> tempActionObject = new LinkedList<Object>();
+					tempActionObject.add("mindmapnode");
+					tempActionObject.add(itemObject.get(0)); // z-Index -8
+					tempActionObject.add(null); // simulate -7
+					tempActionObject.add(null); // simulate -6
+					tempActionObject.add(null); // simulate -5
+					tempActionObject.add(null); // simulate -4
+					tempActionObject.add(null); // simulate -3
+					tempActionObject.add(null); // simulate -2
+					tempActionObject.add(itemObject.get(1)); // Object-Name -1
+
+					whiteboardTempObj.put(3, tempActionObject);
+
+					whiteboardManagement.addWhiteBoardObjectById(
+							room_id, whiteboardTempObj, whiteboardId);
+
+				}
+
+			} else {
+
+				whiteboardManagement.addWhiteBoardObjectById(
+						room_id, whiteboardObj, whiteboardId);
+
+			}
+
+			Map<String, Object> sendObject = new HashMap<String, Object>();
+			sendObject.put("id", whiteboardId);
+			sendObject.put("param", whiteboardObjParam);
+
+			boolean showDrawStatus = getWhiteboardDrawStatus();
+
+			// Notify all Clients of that Scope (Room)
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						IClient client = conn.getClient();
+						if (SessionVariablesUtil.isScreenClient(client)) {
+							// screen sharing clients do not receive events
+							continue;
+						} else if (SessionVariablesUtil.isAVClient(client)) {
+							// AVClients or potential AVClients do not receive events
+							continue;
+						} if (client.getId().equals(
+								current.getClient().getId())) {
+							// don't send back to same user
+							continue;
+						}
+						((IServiceCapableConnection) conn).invoke(
+							"sendVarsToWhiteboardById",
+								new Object[] { showDrawStatus ? currentClient : null, sendObject }, 
+									this);
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendVarsByWhiteboardId]", err);
+		}
+	}
+
+	public int sendVarsModeratorGeneral(Object vars) {
+		log.debug("*..*sendVars: " + vars);
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+			// Long room_id = currentClient.getRoom_id();
+
+			log.debug("***** id: " + currentClient.getStreamid());
+
+			boolean ismod = currentClient.getIsMod();
+
+			if (ismod) {
+				log.debug("CurrentScope :" + current.getScope().getName());
+				// Send to all Clients of the same Scope
+				sendMessageToCurrentScope("sendVarsToModeratorGeneral", vars, false);
+				return 1;
+			} else {
+				// log.debug("*..*you are not allowed to send: "+ismod);
+				return -1;
+			}
+		} catch (Exception err) {
+			log.error("[sendVarsModeratorGeneral]", err);
+		}
+		return -1;
+	}
+
+	public int sendMessage(Object newMessage) {
+		try {
+			
+			sendMessageToCurrentScope("sendVarsToMessage", newMessage, false);
+			
+		} catch (Exception err) {
+			log.error("[sendMessage]", err);
+		}
+		return 1;
+	}
+	
+	public int sendMessageAll(Object newMessage) {
+		try {
+			
+			sendMessageToCurrentScope("sendVarsToMessage", newMessage, true);
+			
+		} catch (Exception err) {
+			log.error("[sendMessage]", err);
+		}
+		return 1;
+	}
+
+	/**
+	 * send status for shared browsing to all members except self
+	 * @param newMessage
+	 * @return 1
+	 */
+	@SuppressWarnings({ "rawtypes" })
+	public synchronized int sendBrowserMessageToMembers(Object newMessage) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+
+			List newMessageList = (List) newMessage;
+
+			String action = newMessageList.get(0).toString();
+
+			BrowserStatus browserStatus = (BrowserStatus) current.getScope().getAttribute("browserStatus");
+
+			if (browserStatus == null) {
+				browserStatus = new BrowserStatus();
+			}
+
+			if (action.equals("initBrowser") || action.equals("newBrowserURL")) {
+				browserStatus.setBrowserInited(true);
+				browserStatus.setCurrentURL(newMessageList.get(1).toString());
+			} else if (action.equals("closeBrowserURL")) {
+				browserStatus.setBrowserInited(false);
+			}
+
+			current.getScope().setAttribute("browserStatus", browserStatus);
+			
+			sendMessageToCurrentScope("sendVarsToMessage", newMessage, false);
+
+		} catch (Exception err) {
+			log.error("[sendMessage]", err);
+		}
+		return 1;
+	}
+
+	/**
+	 * wrapper method
+	 * @param newMessage
+	 */
+	public void sendMessageToMembers(Object newMessage) {
+		//Sync to all users of current scope
+		sendMessageToCurrentScope("sendVarsToMessage", newMessage, false);
+	}
+	
+	/**
+	 * General sync mechanism for all messages that are send from within the 
+	 * scope of the current client, but:
+	 * <ul>
+	 * <li>optionally do not send to self (see param: sendSelf)</li>
+	 * <li>do not send to clients that are screen sharing clients</li>
+	 * <li>do not send to clients that are audio/video clients (or potentially ones)</li>
+	 * <li>do not send to connections where no RoomClient is registered</li>
+	 * </ul>
+	 *  
+	 * @param remoteMethodName The method to be called
+	 * @param newMessage parameters
+	 * @param sendSelf send to the current client as well
+	 */
+	public void sendMessageToCurrentScope(String remoteMethodName, Object newMessage, boolean sendSelf) {
+		sendMessageToCurrentScope(remoteMethodName, newMessage, sendSelf, false);
+	}
+	
+	/**
+	 * Only temporary for load test, with return argument for the client to have a result
+	 * 
+	 * @param remoteMethodName
+	 * @param newMessage
+	 * @param sendSelf
+	 * @return true
+	 */
+	@Deprecated
+	public boolean loadTestSyncMessage(String remoteMethodName, Object newMessage, boolean sendSelf) {
+		sendMessageToCurrentScope(remoteMethodName, newMessage, sendSelf, false);
+		return true;
+	}
+	
+	
+	/**
+	 * General sync mechanism for all messages that are send from within the 
+	 * scope of the current client, but:
+	 * <ul>
+	 * <li>optionally do not send to self (see param: sendSelf)</li>
+	 * <li>send to clients that are screen sharing clients based on parameter</li>
+	 * <li>do not send to clients that are audio/video clients (or potentially ones)</li>
+	 * <li>do not send to connections where no RoomClient is registered</li>
+	 * </ul>
+	 *  
+	 * @param remoteMethodName The method to be called
+	 * @param newMessage parameters
+	 * @param sendSelf send to the current client as well
+	 * @param sendScreen send to the current client as well
+	 */
+	public void sendMessageToCurrentScope(final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
+		new MessageSender(remoteMethodName, newMessage) {
+			public boolean filter(IConnection conn) {
+				IClient client = conn.getClient();
+				return (!sendScreen && SessionVariablesUtil.isScreenClient(client))
+						|| SessionVariablesUtil.isAVClient(client)
+						|| (!sendSelf && client.getId().equals(current.getClient().getId()));
+			}
+		}.start();
+
+	}
+
+	public abstract class MessageSender extends Thread {
+		final IScope scope;
+		final IConnection current;
+		final String remoteMethodName;
+		final Object newMessage;
+		
+		public MessageSender(final String remoteMethodName, final Object newMessage) {
+			this((IScope)null, remoteMethodName, newMessage);
+		}
+		
+		public MessageSender(IScope _scope, String remoteMethodName, Object newMessage) {
+			this(Red5.getConnectionLocal(), _scope, remoteMethodName, newMessage);
+		}
+		
+		public MessageSender(IConnection current, String remoteMethodName, Object newMessage) {
+			this(current, null, remoteMethodName, newMessage);
+		}
+		
+		public MessageSender(IConnection current, IScope _scope, String remoteMethodName, Object newMessage) {
+			this.current = current;
+			scope = _scope == null ? current.getScope() : _scope;
+			this.remoteMethodName = remoteMethodName;
+			this.newMessage = newMessage;
+		}
+		
+		public abstract boolean filter(IConnection conn);
+		
+		@Override
+		public void run() {
+			try {
+				if (scope == null) {
+					log.debug(String.format("[MessageSender] -> 'Unable to send message to NULL scope' %s, %s", remoteMethodName, newMessage));
+				} else {
+					log.trace(String.format("[MessageSender] -> 'sending message' %s, %s", remoteMethodName, newMessage));
+					// Send to all Clients of that Scope(Room)
+					for (IConnection conn : scope.getClientConnections()) {
+						if (conn != null && conn instanceof IServiceCapableConnection) {
+							if (filter(conn)) {
+								continue;
+							}
+							((IServiceCapableConnection) conn).invoke(remoteMethodName, new Object[] { newMessage }, ScopeApplicationAdapter.this);
+						}
+					}
+					log.trace(String.format("[MessageSender] -> 'sending message DONE' %s", remoteMethodName));
+				}
+			} catch (Exception err) {
+				log.error(String.format("[MessageSender -> %s, %s]", remoteMethodName, newMessage), err);
+			}
+		}
+	}
+
+	/**
+	 * wrapper method
+	 * @param newMessage
+	 * @return 1 in case of success, -1 otherwise
+	 */
+	public int sendMessageWithClient(Object newMessage) {
+		try {
+			sendMessageWithClientWithSyncObject(newMessage, true);
+
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+			return -1;
+		}
+		return 1;
+	}
+	
+	/**
+	 * wrapper method
+	 * @param newMessage
+	 * @param sync
+	 * @return 1 in case of success, -1 otherwise
+	 */
+	public int sendMessageWithClientWithSyncObject(Object newMessage, boolean sync) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("client", currentClient);
+			hsm.put("message", newMessage);
+			
+			//Sync to all users of current scope
+			sendMessageToCurrentScope("sendVarsToMessageWithClient", hsm, sync);
+
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+			return -1;
+		}
+		return 1;
+	}
+
+	/**
+	 * Function is used to send the kick Trigger at the moment, 
+	 * it sends a general message to a specific clientId
+	 * 
+	 * @param newMessage
+	 * @param clientId
+	 * @return 1 in case of success, -1 otherwise
+	 */
+	public synchronized int sendMessageById(Object newMessage, String clientId, IScope scope) {
+		try {
+			log.debug("### sendMessageById ###" + clientId);
+
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("message", newMessage);
+
+			// broadcast Message to specific user with id inside the same Scope
+			for (IConnection conn : scope.getClientConnections()) {
+				if (conn != null) {
+					if (conn instanceof IServiceCapableConnection) {
+						if (conn.getClient().getId().equals(clientId)) {
+							((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient", new Object[] { hsm }, this);
+						}
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+			return -1;
+		}
+		return 1;
+	}
+
+	/**
+	 * Sends a message to a user in the same room by its clientId
+	 * 
+	 * @param newMessage
+	 * @param clientId
+	 * @return 1 in case of no exceptions, -1 otherwise
+	 */
+	public synchronized int sendMessageWithClientById(Object newMessage, String clientId) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			HashMap<String, Object> hsm = new HashMap<String, Object>();
+			hsm.put("client", currentClient);
+			hsm.put("message", newMessage);
+
+			// broadcast Message to specific user with id inside the same Scope
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn.getClient().getId().equals(clientId)) {
+					((IServiceCapableConnection) conn).invoke("sendVarsToMessageWithClient", new Object[] { hsm }, this);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+			return -1;
+		}
+		return 1;
+	}
+	
+	public synchronized void sendUploadCompletMessageByPublicSID(UploadCompleteMessage message, String publicSID) {
+		try {
+			//if the upload is locally, just proceed to the normal function
+			//Search for RoomClient on current server (serverId == null means it will look on the master for the RoomClient)
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+			
+			if (currentClient != null) {
+				sendMessageWithClientByPublicSID(message, publicSID);
+			} else {
+				throw new Exception("Could not Find RoomClient on List publicSID: "+ publicSID);
+			}
+			
+		} catch (Exception err) {
+			log.error("[sendUploadCompletMessageByPublicSID] ", err);
+		}
+	}
+	
+
+	public synchronized void sendMessageWithClientByPublicSID(Object message, String publicSID) {
+		try {
+			// ApplicationContext appCtx = getContext().getApplicationContext();
+			IScope globalScope = getContext().getGlobalScope();
+
+			IScope webAppKeyScope = globalScope.getScope(OpenmeetingsVariables.webAppRootKey);
+
+			// log.debug("webAppKeyScope "+webAppKeyScope);
+
+			// Get Room Id to send it to the correct Scope
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				throw new Exception("Could not Find RoomClient on List publicSID: " + publicSID);
+			}
+			// default Scope Name
+			String scopeName = "hibernate";
+			if (currentClient.getRoom_id() != null) {
+				scopeName = currentClient.getRoom_id().toString();
+			}
+
+			IScope scopeHibernate = webAppKeyScope.getScope(scopeName);
+
+			// log.debug("scopeHibernate "+scopeHibernate);
+
+			if (scopeHibernate != null) {
+				// Notify the clients of the same scope (room) with user_id
+
+				for (IConnection conn : webAppKeyScope.getScope(scopeName).getClientConnections()) {
+					IClient client = conn.getClient();
+					if (SessionVariablesUtil.isScreenClient(client)) {
+						// screen sharing clients do not receive events
+						continue;
+					} else if (SessionVariablesUtil.isAVClient(client)) {
+						// AVClients or potential AVClients do not receive events
+						continue;
+					}
+					
+					if (SessionVariablesUtil.getPublicSID(client).equals(publicSID)) {
+						((IServiceCapableConnection) conn).invoke("newMessageByRoomAndDomain", new Object[] { message }, this);
+					}
+				}
+			} else {
+				// Scope not yet started
+			}
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+		}
+	}
+
+	public synchronized void sendMessageWithClientByPublicSIDOrUser(Object message, String publicSID, Long user_id) {
+		try {
+			// Get Room Id to send it to the correct Scope
+			Client currentClient = sessionManager.getClientByPublicSID(publicSID, false, null);
+
+			if (currentClient == null) {
+				currentClient = sessionManager.getClientByUserId(user_id);
+			}
+
+			Set<IConnection> conset = null;
+
+			if (currentClient == null) {
+				// Must be from a previous session, search for user in current scope
+				IConnection current = Red5.getConnectionLocal();
+				// Notify all Clients of that Scope (Room)
+				conset = current.getScope().getClientConnections();
+			} else {
+				// default Scope Name
+				String scopeName = "hibernate";
+				if (currentClient.getRoom_id() != null) {
+					scopeName = currentClient.getRoom_id().toString();
+				}
+
+				IScope globalScope = getContext().getGlobalScope();
+				IScope webAppKeyScope = globalScope.getScope(OpenmeetingsVariables.webAppRootKey);
+				IScope scopeHibernate = webAppKeyScope.getScope(scopeName);
+
+				if (scopeHibernate != null) {
+					conset = scopeHibernate.getClientConnections();
+				}
+			}
+
+			// Notify the clients of the same scope (room) with user_id
+			for (IConnection conn : conset) {
+				if (conn != null) {
+					
+					IClient client = conn.getClient();
+					if (SessionVariablesUtil.isScreenClient(client)) {
+						// screen sharing clients do not receive events
+						continue;
+					} else if (SessionVariablesUtil.isAVClient(client)) {
+						// AVClients or potential AVClients do not receive events
+						continue;
+					}
+					
+					if (SessionVariablesUtil.getPublicSID(client).equals(publicSID)) {
+						// log.debug("IS EQUAL ");
+						((IServiceCapableConnection) conn).invoke("newMessageByRoomAndDomain", new Object[] { message }, this);
+						log.debug("sendMessageWithClientByPublicSID RPC:newMessageByRoomAndDomain" + message);
+					} else if (user_id != 0 && SessionVariablesUtil.getUserId(client).equals(user_id)) {
+						((IServiceCapableConnection) conn).invoke("newMessageByRoomAndDomain", new Object[] { message }, this);
+						log.debug("sendMessageWithClientByPublicSID RPC:newMessageByRoomAndDomain" + message);
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendMessageWithClient] ", err);
+		}
+	}
+
+	/**
+	 * @deprecated this method should be reworked to use a single SQL query in
+	 *             the cache to get any client in the current room that is
+	 *             recording instead of iterating through connections!
+	 * @return true in case there is recording session, false otherwise, null if any exception happend
+	 */
+	public Boolean getInterviewRecordingStatus() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+
+					if (rcl.getIsRecording() != null && rcl.getIsRecording()) {
+						return true;
+					}
+				}
+			}
+			return false;
+		} catch (Exception err) {
+			log.error("[getInterviewRecordingStatus]", err);
+		}
+
+		return null;
+	}
+
+	/**
+	 * @deprecated @see {@link ScopeApplicationAdapter#getInterviewRecordingStatus()}
+	 * @return - false if there were existing recording, true if recording was started successfully, null if any exception happens
+	 */
+	public Boolean startInterviewRecording() {
+		try {
+			log.debug("-----------  startInterviewRecording");
+			IConnection current = Red5.getConnectionLocal();
+
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+
+					if (rcl != null && rcl.getIsRecording() != null && rcl.getIsRecording()) {
+						return false;
+					}
+				}
+			}
+			Client current_rcl = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			// Also set the Recording Flag to Record all Participants that enter
+			// later
+			current_rcl.setIsRecording(true);
+			sessionManager.updateClientByStreamId(current.getClient().getId(), current_rcl, false, null);
+
+			Map<String, String> interviewStatus = new HashMap<String, String>();
+			interviewStatus.put("action", "start");
+
+			for (IConnection conn : current.getScope().getClientConnections()) {
+				if (conn != null) {
+					IClient client = conn.getClient();
+					if (SessionVariablesUtil.isScreenClient(client)) {
+						// screen sharing clients do not receive events
+						continue;
+					} else if (SessionVariablesUtil.isAVClient(client)) {
+						// AVClients or potential AVClients do not receive events
+						continue;
+					}
+
+					((IServiceCapableConnection) conn).invoke("interviewStatus", new Object[] { interviewStatus }, this);
+					log.debug("-- startInterviewRecording " + interviewStatus);
+				}
+			}
+			String recordingName = "Interview " + CalendarPatterns.getDateWithTimeByMiliSeconds(new Date());
+
+			flvRecorderService.recordMeetingStream(current, current_rcl, recordingName, "", true);
+
+			return true;
+		} catch (Exception err) {
+			log.debug("[startInterviewRecording]", err);
+		}
+		return null;
+	}
+
+	@SuppressWarnings({ "rawtypes" })
+	public Boolean sendRemoteCursorEvent(final String streamid, Map messageObj) {
+		new MessageSender("sendRemoteCursorEvent", messageObj) {
+			
+			@Override
+			public boolean filter(IConnection conn) {
+				IClient client = conn.getClient();
+				return SessionVariablesUtil.isScreenClient(client) && conn.getClient().getId().equals(streamid);
+			}
+		}.start();
+		return null;
+	}
+
+	private Long checkRecordingClient(IConnection conn) {
+		Long flvRecordingId = null;
+		if (conn != null) {
+			Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
+			if (rcl != null && rcl.getIsRecording() != null && rcl.getIsRecording()) {
+				rcl.setIsRecording(false);
+				flvRecordingId = rcl.getFlvRecordingId();
+				rcl.setFlvRecordingId(null);
+
+				// Reset the Recording Flag to Record all
+				// Participants that enter later
+				sessionManager.updateClientByStreamId(conn.getClient().getId(), rcl, false, null);
+			}
+		}
+		return flvRecordingId;
+	}
+	
+	/**
+	 * Stop the recording of the streams and send event to connected users of scope
+	 * 
+	 * @return true if interview was found
+	 */
+	public Boolean stopInterviewRecording() {
+		IConnection current = Red5.getConnectionLocal();
+		Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		return _stopInterviewRecording(currentClient, current.getScope());
+	}
+	
+	/**
+	 * Stop the recording of the streams and send event to connected users of scope
+	 * 
+	 * @return true if interview was found
+	 */
+	private Boolean _stopInterviewRecording(Client currentClient, IScope currentScope) {
+		try {
+			log.debug("-----------  stopInterviewRecording");
+			Long flvRecordingId = currentClient.getFlvRecordingId();
+
+			for (IConnection conn : currentScope.getClientConnections()) {
+				Long recordingId = checkRecordingClient(conn);
+				if (recordingId != null) {
+					flvRecordingId = recordingId;
+				}
+			}
+			if (flvRecordingId == null) {
+				log.debug("stopInterviewRecording:: unable to find recording client");
+				return false;
+			}
+
+			flvRecorderService.stopRecordAndSave(scope, currentClient, flvRecordingId);
+
+			Map<String, String> interviewStatus = new HashMap<String, String>();
+			interviewStatus.put("action", "stop");
+
+			sendMessageToCurrentScope("interviewStatus", interviewStatus, true);
+			sendMessageToCurrentScope("stopRecordingMessage", currentClient, true);
+			return true;
+
+		} catch (Exception err) {
+			log.debug("[stopInterviewRecording]", err);
+		}
+		return null;
+	}
+
+	/**
+	 * Get all ClientList Objects of that room and domain Used in
+	 * lz.applyForModeration.lzx
+	 * 
+	 * @return all ClientList Objects of that room
+	 */
+	public synchronized List<Client> getClientListScope() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+
+			return sessionManager.getClientListByRoom(currentClient.getRoom_id());
+		} catch (Exception err) {
+			log.debug("[getClientListScope]", err);
+		}
+		return new ArrayList<Client>();
+	}
+
+	private boolean getWhiteboardDrawStatus() {
+		return configurationDao.getWhiteboardDrawStatus();
+	}
+	
+	public String getCryptKey() {
+		return configurationDao.getCryptKey();
+	}
+
+	public IScope getRoomScope(String room) {
+		try {
+
+			IScope globalScope = getContext().getGlobalScope();
+			IScope webAppKeyScope = globalScope.getScope(OpenmeetingsVariables.webAppRootKey);
+
+			String scopeName = "hibernate";
+			// If set then its a NON default Scope
+			if (room.length() != 0) {
+				scopeName = room;
+			}
+
+			IScope scopeHibernate = webAppKeyScope.getScope(scopeName);
+
+			return scopeHibernate;
+		} catch (Exception err) {
+			log.error("[getRoomScope]", err);
+		}
+		return null;
+	}
+
+    /*
+	 * SIP transport methods
+	 */
+
+	private List<Long> getVerifiedActiveRoomIds(Server s) {
+		List<Long> result = new ArrayList<Long>(sessionManager.getActiveRoomIdsByServer(s));
+		//verify
+		for (Iterator<Long> i = result.iterator(); i.hasNext();) {
+			Long id = i.next();
+			List<Client> rcs = sessionManager.getClientListByRoom(id);
+			if (rcs.size() == 0 || (rcs.size() == 1 && rcs.get(0).isSipTransport())) {
+				i.remove();
+			}
+		}
+		return result.isEmpty() ? result : roomDao.getSipRooms(result);
+	}
+	
+	public List<Long> getActiveRoomIds() {
+		List<Long> result = getVerifiedActiveRoomIds(null);
+		for (Server s : serverDao.getActiveServers()) {
+			result.addAll(getVerifiedActiveRoomIds(s));
+		}
+		return result.isEmpty() ? result : roomDao.getSipRooms(result);
+	}
+	
+	private String getSipTransportLastname(Long roomId) {
+		return getSipTransportLastname(roomId, roomManager.getSipConferenceMembersNumber(roomId));
+	}
+	
+	private String getSipTransportLastname(Long roomId, Integer c) {
+		return (c != null && c > 0) ? "(" + (c - 1) + ")" : "";
+	}
+	
+    public synchronized int updateSipTransport() {
+		log.debug("-----------  updateSipTransport");
+        IConnection current = Red5.getConnectionLocal();
+        String streamid = current.getClient().getId();
+        Client client = sessionManager.getClientByStreamId(streamid, null);
+        Long roomId = client.getRoom_id();
+        Integer count = roomManager.getSipConferenceMembersNumber(roomId); 
+        String newNumber = getSipTransportLastname(roomId, count);
+        log.debug("getSipConferenceMembersNumber: " + newNumber);
+        if (!newNumber.equals(client.getLastname())) {
+            client.setLastname(newNumber);
+            sessionManager.updateClientByStreamId(streamid, client, false, null);
+            log.debug("updateSipTransport: {}, {}, {}, {}, {}", new Object[]{client.getPublicSID(),
+                    client.getRoom_id(), client.getFirstname(), client.getLastname(), client.getAvsettings()});
+            sendMessageWithClient(new String[]{"personal",client.getFirstname(),client.getLastname()});
+        }
+        return count != null && count > 0 ? count - 1 : 0; 
+    }
+
+    /**
+     * Perform call to specified phone number and join to conference
+     * @param number to call
+     */
+	public synchronized void joinToConfCall(String number) {
+		IConnection current = Red5.getConnectionLocal();
+		String streamid = current.getClient().getId();
+		Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+		try {
+			String sipNumber = getSipNumber(currentClient.getRoom_id());
+			log.debug("asterisk -rx \"originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
+			Runtime.getRuntime().exec(new String[] { "asterisk", "-rx", "originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate" });
+		} catch (IOException e) {
+			log.error("Executing asterisk originate error: ", e);
+		}
+	}
+
+    public synchronized String getSipNumber(Long room_id) {
+        Room r = roomDao.get(room_id);
+        if(r != null && r.getConfno() != null) {
+            log.debug("getSipNumber: room_id: {}, sipNumber: {}", new Object[]{room_id, r.getConfno()});
+            return r.getConfno();
+        }
+        return null;
+    }
+
+	public void setSipTransport(Long room_id, String publicSID, String broadCastId) {
+		log.debug("-----------  setSipTransport");
+		IConnection current = Red5.getConnectionLocal();
+		IClient c = current.getClient();
+		String streamid = c.getId();
+		// Notify all clients of the same scope (room)
+		Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+		currentClient.setSipTransport(true);
+		currentClient.setRoom_id(room_id);
+		currentClient.setRoomEnter(new Date());
+		currentClient.setFirstname("SIP Transport");
+		currentClient.setLastname(getSipTransportLastname(room_id));
+		currentClient.setBroadCastID(Long.parseLong(broadCastId));
+		currentClient.setIsBroadcasting(true);
+		currentClient.setPublicSID(publicSID);
+		currentClient.setVWidth(120);
+		currentClient.setVHeight(90);
+		currentClient.setPicture_uri("phone.png");
+		sessionManager.updateClientByStreamId(streamid, currentClient, false, null);
+		SessionVariablesUtil.initClient(c, false, publicSID);
+
+		sendMessageToCurrentScope("addNewUser", currentClient, false);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/remote/util/SessionVariablesUtil.java b/src/main/java/org/apache/openmeetings/remote/util/SessionVariablesUtil.java
new file mode 100644
index 0000000..642bd08
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/remote/util/SessionVariablesUtil.java
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.remote.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IClient;
+import org.slf4j.Logger;
+
+public class SessionVariablesUtil {
+	private static final Logger log = Red5LoggerFactory.getLogger(SessionVariablesUtil.class, webAppRootKey);
+
+	private enum SESSION_VARIABLES {
+		isAVClient, // if the client connection is a audio-video only connection
+		isScreenClient, // if the client connection is from a Java Web-Start application
+		PUBLIC_SID, // the public SID of the client
+		USER_ID, // the userId of the user that is using this connection (if there is any)
+	}
+
+	public static void initClient(IClient client, boolean isAVClient, String publicSID) {
+		client.setAttribute(SESSION_VARIABLES.isAVClient.toString(), isAVClient);
+		client.setAttribute(SESSION_VARIABLES.PUBLIC_SID.toString(), publicSID);
+	}
+
+	public static boolean isAVClient(IClient client) {
+		try {
+			if (client.getAttribute(SESSION_VARIABLES.isAVClient.toString()) == null) {
+				throw new Exception("Connection has no publicSID client: " + client);
+			}
+			return (Boolean) client.getAttribute(SESSION_VARIABLES.isAVClient.toString());
+		} catch (Exception err) {
+			log.error("[isAVClient]", err);
+		}
+		return false;
+	}
+
+	public static String getPublicSID(IClient client) {
+		try {
+			if (client.getAttribute(SESSION_VARIABLES.PUBLIC_SID.toString()) == null) {
+				throw new Exception("Connection has no publicSID client: " + client);
+			}
+			return (String) client.getAttribute(SESSION_VARIABLES.PUBLIC_SID.toString());
+		} catch (Exception err) {
+			log.error("[getPublicSID]", err);
+		}
+		return null;
+	}
+
+	public static void setIsScreenClient(IClient client) {
+		client.setAttribute(SESSION_VARIABLES.isScreenClient.toString(), true);
+	}
+
+	public static boolean isScreenClient(IClient client) {
+		try {
+			if (client.getAttribute(SESSION_VARIABLES.isScreenClient.toString()) == null) {
+				return false;
+			}
+			if ((Boolean) client.getAttribute(SESSION_VARIABLES.isScreenClient.toString())) {
+				return true;
+			}
+		} catch (Exception err) {
+			log.error("[isScreenClient]", err);
+		}
+		return false;
+	}
+
+	public static void setUserId(IClient client, Long userId) {
+		client.setAttribute(SESSION_VARIABLES.USER_ID.toString(), userId);
+	}
+
+	/**
+	 * if there is no user id set, it will return Long.MIN_VALUE
+	 * 
+	 * @param client
+	 * @return - user id set or Long.MIN_VALUE or null if any exception happens
+	 */
+	public static Long getUserId(IClient client) {
+		try {
+			if (client.getAttribute(SESSION_VARIABLES.USER_ID.toString()) == null) {
+				return Long.MIN_VALUE;
+			}
+			return (Long) client.getAttribute(SESSION_VARIABLES.USER_ID.toString());
+		} catch (Exception err) {
+			log.error("[getUserId]", err);
+		}
+		return null;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/rss/LoadAtomRssFeed.java b/src/main/java/org/apache/openmeetings/rss/LoadAtomRssFeed.java
new file mode 100644
index 0000000..17e8f5a
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/rss/LoadAtomRssFeed.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.rss;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class LoadAtomRssFeed {
+	private static final Logger log = Red5LoggerFactory.getLogger(LoadAtomRssFeed.class, webAppRootKey);
+
+	public static HttpURLConnection getFeedConnection(String _url) throws IOException {
+		log.debug("getFeedConnection:: " + _url);
+		
+		URL url = new URL(_url);
+
+		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+		conn.setDoOutput(true);
+		conn.setDoInput(true);
+		conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)");
+		conn.setRequestProperty("Referer", "http://openmeetings.apache.org/");
+		return conn;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/BaseHttpServlet.java b/src/main/java/org/apache/openmeetings/servlet/BaseHttpServlet.java
new file mode 100644
index 0000000..48d02b9
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/BaseHttpServlet.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletResponse;
+
+public abstract class BaseHttpServlet extends HttpServlet {
+	private static final long serialVersionUID = -2713422496723115524L;
+	
+	private BeanUtil beanUtil = new BeanUtil();
+
+	protected <T> T getBean(Class<T> beanClass) throws ServerNotInitializedException {
+		return beanUtil.getBean(beanClass, getServletContext());
+	}
+	
+	protected void handleNotBooted(HttpServletResponse response) throws IOException {
+		OutputStream out = response.getOutputStream();
+
+		String msg = "Server is not booted yet";
+
+		out.write(msg.getBytes());
+
+		out.flush();
+		out.close();
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/BeanUtil.java b/src/main/java/org/apache/openmeetings/servlet/BeanUtil.java
new file mode 100644
index 0000000..2bbfb42
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/BeanUtil.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet;
+
+import javax.servlet.ServletContext;
+
+import org.apache.openmeetings.util.InitializationContainer;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+public class BeanUtil {
+	public <T> T getBean(Class<T> beanClass, ServletContext ctx) throws ServerNotInitializedException {
+		if (InitializationContainer.initComplete) {
+			return WebApplicationContextUtils.getWebApplicationContext(ctx).getBean(beanClass);
+		} else {
+			throw new ServerNotInitializedException("Server not yet initialized, retry in couple of seconds");
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/ServerNotInitializedException.java b/src/main/java/org/apache/openmeetings/servlet/ServerNotInitializedException.java
new file mode 100644
index 0000000..ec5d059
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/ServerNotInitializedException.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet;
+
+public class ServerNotInitializedException extends Exception {
+	private static final long serialVersionUID = -7771909924751249321L;
+	
+	public ServerNotInitializedException(String msg) {
+		super(msg);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java
new file mode 100644
index 0000000..f858164
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/AbstractUploadController.java
@@ -0,0 +1,103 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import java.util.Set;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+public abstract class AbstractUploadController {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			AbstractUploadController.class, OpenmeetingsVariables.webAppRootKey);
+	@Autowired
+	protected SessiondataDao sessiondataDao;
+	@Autowired
+	protected UserDao userDao;
+	@Autowired
+	protected ConfigurationDao configurationDao;
+	
+	protected class UploadInfo {
+		MultipartFile file;
+		Long userId;
+		String sid;
+		String publicSID;
+		String filename;
+	}
+	
+    protected UploadInfo validate(HttpServletRequest request, boolean admin) throws ServletException {
+    	UploadInfo info = new UploadInfo();
+		log.debug("Starting validate");
+		try {
+			String sid = request.getParameter("sid");
+			if (sid == null) {
+				throw new ServletException("SID Missing");
+			}
+			info.sid = sid;
+			log.debug("sid: " + sid);
+
+			Long userId = sessiondataDao.checkSession(sid);
+			Set<Right> rights = userDao.getRights(userId);
+			log.debug("userId = " + userId);
+			info.userId = userId;
+
+			if ((admin && !AuthLevelUtil.hasAdminLevel(rights)) || (!admin && rights.isEmpty())) {
+				throw new ServletException("Insufficient permissions " + rights);
+			}
+
+			String publicSID = request.getParameter("publicSID");
+			if (publicSID == null) {
+				// Always ask for Public SID
+				throw new ServletException("Missing publicSID");
+			}
+			log.debug("publicSID: " + publicSID);
+			info.publicSID= publicSID;
+
+			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
+			MultipartFile multipartFile = multipartRequest.getFile("Filedata");
+			//FIXME encoding HACK
+			info.filename = new String (multipartFile.getOriginalFilename().getBytes ("iso-8859-1"), "UTF-8");
+			long fileSize = multipartFile.getSize();
+			long maxSize = configurationDao.getMaxUploadSize();
+			log.debug("uploading " + fileSize + " bytes");
+			if (fileSize > maxSize) {
+				throw new ServletException("Maximum upload size: " + maxSize + " exceeded: " + fileSize);
+			}
+			info.file = multipartFile;
+		} catch (ServletException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("Exception during upload: ", e);
+			throw new ServletException(e);
+		}
+		return info;
+    }
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java
new file mode 100644
index 0000000..f70bdd9
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/DownloadHandler.java
@@ -0,0 +1,315 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import static org.apache.openmeetings.util.OmFileHelper.bigImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.chatImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.defaultProfileImageName;
+import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.Set;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.servlet.BaseHttpServlet;
+import org.apache.openmeetings.servlet.ServerNotInitializedException;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class DownloadHandler extends BaseHttpServlet {
+	
+	private static final long serialVersionUID = 7243653203578587544L;
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			DownloadHandler.class, OpenmeetingsVariables.webAppRootKey);
+
+	private static final String defaultImageName = "deleted.jpg";
+	private static final String defaultProfileImageNameBig = profileImagePrefix + defaultProfileImageName;
+	private static final String defaultChatImageName = chatImagePrefix + defaultProfileImageName;
+	private static final String defaultSWFName = "deleted.swf";
+
+	private void logNonExistentFolder(File f) {
+		if (!f.exists()) {
+			boolean c = f.mkdir();
+			if (!c) {
+				log.error("cannot write to directory");
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
+	 * , javax.servlet.http.HttpServletResponse)
+	 */
+	@Override
+	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		try {
+			request.setCharacterEncoding("UTF-8");
+
+			log.debug("\nquery = " + request.getQueryString());
+			log.debug("\n\nfileName = " + request.getParameter("fileName"));
+			log.debug("\n\nparentPath = " + request.getParameter("parentPath"));
+
+			String queryString = request.getQueryString();
+			if (queryString == null) {
+				queryString = "";
+			}
+
+			String sid = request.getParameter("sid");
+
+			if (sid == null) {
+				sid = "default";
+			}
+			log.debug("sid: " + sid);
+
+			Long users_id = getBean(SessiondataDao.class).checkSession(sid);
+			Set<Right> rights = getBean(UserDao.class).getRights(users_id);
+
+			if (rights != null && !rights.isEmpty()) {
+				String room_id = request.getParameter("room_id");
+				if (room_id == null) {
+					room_id = "default";
+				}
+
+				String moduleName = request.getParameter("moduleName");
+				if (moduleName == null) {
+					moduleName = "nomodule";
+				}
+
+				String parentPath = request.getParameter("parentPath");
+				if (parentPath == null) {
+					parentPath = "nomodule";
+				}
+
+				String requestedFile = request.getParameter("fileName");
+				if (requestedFile == null) {
+					requestedFile = "";
+				}
+				
+				String fileExplorerItemIdParam = request.getParameter("fileExplorerItemId");
+				Long fileExplorerItemId = null;
+				if (fileExplorerItemIdParam != null) {
+					fileExplorerItemId = Long.parseLong(fileExplorerItemIdParam);
+				}
+				
+				
+
+				// make a complete name out of domain(organisation) + roomname
+				String roomName = room_id;
+				// trim whitespaces cause it is a directory name
+				roomName = StringUtils.deleteWhitespace(roomName);
+
+				// Get the current User-Directory
+
+				File working_dir;
+
+				// Add the Folder for the Room
+				if (moduleName.equals("lzRecorderApp")) {
+					working_dir = OmFileHelper.getStreamsHibernateDir();
+				} else if (moduleName.equals("videoconf1")) {
+					working_dir = OmFileHelper.getUploadRoomDir(roomName);
+					if (parentPath.length() != 0 && !parentPath.equals("/")) {
+						working_dir = new File(working_dir, parentPath);
+					}
+				} else if (moduleName.equals("userprofile")) {
+					working_dir = OmFileHelper.getUploadProfilesUserDir(users_id);
+					logNonExistentFolder(working_dir);
+				} else if (moduleName.equals("remoteuserprofile")) {
+					String remoteUser_id = request.getParameter("remoteUserid");
+					working_dir = OmFileHelper.getUploadProfilesUserDir(remoteUser_id == null ? "0" : remoteUser_id);
+					logNonExistentFolder(working_dir);
+				} else if (moduleName.equals("remoteuserprofilebig")) {
+					String remoteUser_id = request.getParameter("remoteUserid");
+					working_dir = OmFileHelper.getUploadProfilesUserDir(remoteUser_id == null ? "0" : remoteUser_id);
+					logNonExistentFolder(working_dir);
+					
+					requestedFile = getBigProfileUserName(working_dir);
+				} else if (moduleName.equals("chat")) {
+					String remoteUser_id = request.getParameter("remoteUserid");
+					working_dir = OmFileHelper.getUploadProfilesUserDir(remoteUser_id == null ? "0" : remoteUser_id);
+					logNonExistentFolder(working_dir);
+
+					requestedFile = getChatUserName(working_dir);
+				} else {
+					working_dir = OmFileHelper.getUploadRoomDir(roomName);
+				}
+
+				if (!moduleName.equals("nomodule")) {
+					log.debug("requestedFile: " + requestedFile + " current_dir: " + working_dir);
+
+					File full_path = new File(working_dir, requestedFile);
+
+					// If the File does not exist or is not readable show/load a
+					// place-holder picture
+
+					if (!full_path.exists() || !full_path.canRead()) {
+						if (!full_path.canRead()) {
+							log.debug("LOG DownloadHandler: The request file is not readable ");
+						} else {
+							log.debug("LOG DownloadHandler: The request file does not exist / has already been deleted");
+						}
+						log.debug("LOG ERROR requestedFile: " + requestedFile);
+						// replace the path with the default picture/document
+
+						if (requestedFile.endsWith(".jpg")) {
+							log.debug("LOG endsWith d.jpg");
+
+							log.debug("LOG moduleName: " + moduleName);
+
+							requestedFile = defaultImageName;
+							if (moduleName.equals("remoteuserprofile")) {
+								requestedFile = defaultProfileImageName;
+							} else if (moduleName.equals("remoteuserprofilebig")) {
+								requestedFile = defaultProfileImageNameBig;
+							} else if (moduleName.equals("userprofile")) {
+								requestedFile = defaultProfileImageName;
+							} else if (moduleName.equals("chat")) {
+								requestedFile = defaultChatImageName;
+							}
+						} else if (requestedFile.endsWith(".swf")) {
+							requestedFile = defaultSWFName;
+						} else {
+							requestedFile = defaultImageName;
+						}
+						full_path = new File(OmFileHelper.getDefaultDir(), requestedFile);
+					}
+
+					log.debug("full_path: " + full_path);
+
+					if (!full_path.exists() || !full_path.canRead()) {
+						if (!full_path.canRead()) {
+							log.debug("DownloadHandler: The request DEFAULT-file does not exist / has already been deleted");
+						} else {
+							log.debug("DownloadHandler: The request DEFAULT-file does not exist / has already been deleted");
+						}
+						// no file to handle abort processing
+						return;
+					}
+					// Requested file is outside OM webapp folder
+					File curDirFile = OmFileHelper.getOmHome();
+					if (!full_path.getCanonicalPath().startsWith(curDirFile.getCanonicalPath())) {
+						throw new Exception("Invalid file requested: f2.cp == "
+								+ full_path.getCanonicalPath() + "; curDir.cp == "
+								+ curDirFile.getCanonicalPath());
+					}
+
+					// Default type - Explorer, Chrome and others
+					int browserType = 0;
+
+					// Firefox and Opera browsers
+					if (request.getHeader("User-Agent") != null) {
+						if ((request.getHeader("User-Agent").contains("Firefox")) || (request.getHeader("User-Agent").contains("Opera"))) {
+							browserType = 1;
+						}
+					}
+
+					log.debug("Detected browser type:" + browserType);
+
+					response.reset();
+					response.resetBuffer();
+					OutputStream out = response.getOutputStream();
+
+					if (requestedFile.endsWith(".swf")) {
+						// trigger download to SWF => THIS is a workaround for
+						// Flash Player 10, FP 10 does not seem
+						// to accept SWF-Downloads with the Content-Disposition
+						// in the Header
+						response.setContentType("application/x-shockwave-flash");
+						response.setHeader("Content-Length", "" + full_path.length());
+					} else {
+						response.setContentType("APPLICATION/OCTET-STREAM");
+						
+						String fileNameResult = requestedFile;
+						if (fileExplorerItemId != null && fileExplorerItemId > 0) {
+							FileExplorerItem fileExplorerItem = getBean(FileExplorerItemDao.class).getFileExplorerItemsById(fileExplorerItemId);
+							if (fileExplorerItem != null) {
+								
+								fileNameResult = fileExplorerItem.getFileName().substring(0, fileExplorerItem.getFileName().length()-4)
+													+ fileNameResult.substring(fileNameResult.length()-4, fileNameResult.length());
+								
+							}
+						}
+						
+						if (browserType == 0) {
+							response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileNameResult, "UTF-8"));
+						} else {
+							response.setHeader("Content-Disposition", "attachment; filename*=UTF-8'en'"
+											+ URLEncoder.encode(fileNameResult, "UTF-8"));
+						}
+
+						response.setHeader("Content-Length", "" + full_path.length());
+					}
+
+					OmFileHelper.copyFile(full_path, out);
+					out.flush();
+					out.close();
+				}
+			} else {
+				log.error("ERROR DownloadHandler: not authorized FileDownload ");
+			}
+
+		} catch (ServerNotInitializedException e) {
+			return;
+		} catch (Exception er) {
+			log.error("Error downloading: ", er);
+		}
+	}
+
+	private String getChatUserName(File f) throws Exception {
+		if (f.exists() && f.isDirectory()) {
+			String filesString[] = f.list();
+			for (int i = 0; i < filesString.length; i++) {
+				String fileName = filesString[i];
+				if (fileName.startsWith(chatImagePrefix))
+					return fileName;
+			}
+		}
+		return "_no.jpg";
+	}
+
+	private String getBigProfileUserName(File f) throws Exception {
+		if (f.exists() && f.isDirectory()) {
+			String filesString[] = f.list();
+			for (int i = 0; i < filesString.length; i++) {
+				String fileName = filesString[i];
+				if (fileName.startsWith(bigImagePrefix))
+					return fileName;
+			}
+		}
+		return "_no.jpg";
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
new file mode 100644
index 0000000..3ca4de3
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
@@ -0,0 +1,193 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.dom.svg.SVGDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.JPEGTranscoder;
+import org.apache.openmeetings.batik.beans.PrintBean;
+import org.apache.openmeetings.data.record.WhiteboardMapToSVG;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.remote.PrintService;
+import org.apache.openmeetings.servlet.BaseHttpServlet;
+import org.apache.openmeetings.servlet.ServerNotInitializedException;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class ExportToImage extends BaseHttpServlet {
+	
+	private static final long serialVersionUID = -3535998254746084297L;
+	
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ExportToImage.class, OpenmeetingsVariables.webAppRootKey);
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
+	 * , javax.servlet.http.HttpServletResponse)
+	 */
+	@Override
+	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
+			IOException {
+
+		try {
+			String sid = request.getParameter("sid");
+			if (sid == null) {
+				sid = "default";
+			}
+			log.debug("sid: " + sid);
+
+			String hash = request.getParameter("hash");
+			if (hash == null) {
+				hash = "";
+			}
+			log.debug("hash: " + hash);
+
+			String fileName = request.getParameter("fileName");
+			if (fileName == null) {
+				fileName = "file_xyz";
+			}
+
+			String exportType = request.getParameter("exportType");
+			if (exportType == null) {
+				exportType = "svg";
+			}
+
+			Long users_id = getBean(SessiondataDao.class).checkSession(sid);
+			Set<Right> rights = getBean(UserDao.class).getRights(users_id);
+
+			log.debug("users_id: " + users_id);
+
+			if (rights != null && !rights.isEmpty() && hash != "") {
+
+				PrintBean pBean = PrintService.getPrintItemByHash(hash);
+
+				// Whiteboard Objects
+				@SuppressWarnings("rawtypes")
+				List whiteBoardMap = pBean.getMap();
+
+				// Get a DOMImplementation.
+				DOMImplementation domImpl = GenericDOMImplementation
+						.getDOMImplementation();
+
+				// Create an instance of org.w3c.dom.Document.
+				// String svgNS = "http://www.w3.org/2000/svg";
+				String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
+
+				Document document = domImpl.createDocument(svgNS, "svg", null);
+
+				// Get the root element (the 'svg' element).
+				Element svgRoot = document.getDocumentElement();
+
+				// Set the width and height attributes on the root 'svg'
+				// element.
+				svgRoot.setAttributeNS(null, "width", "" + pBean.getWidth());
+				svgRoot.setAttributeNS(null, "height", "" + pBean.getHeight());
+
+				log.debug("pBean.getWidth(),pBean.getHeight()"
+						+ pBean.getWidth() + "," + pBean.getHeight());
+
+				// Create an instance of the SVG Generator.
+				SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+
+				svgGenerator = WhiteboardMapToSVG.getInstance()
+						.convertMapToSVG(svgGenerator, whiteBoardMap);
+
+				// Finally, stream out SVG to the standard output using
+				// UTF-8 encoding.
+				boolean useCSS = true; // we want to use CSS style attributes
+
+				File uploadTempDir = OmFileHelper.getUploadTempDir();
+				log.debug("working_dir: " + uploadTempDir);
+				String reqFilePrefix = fileName + "_" + CalendarPatterns.getTimeForStreamId(new Date());
+				File svgFile = new File(uploadTempDir, reqFilePrefix + ".svg");
+				log.debug("exported svg file: " + svgFile.getCanonicalPath());
+				FileWriter out = new FileWriter(svgFile);
+				svgGenerator.stream(out, useCSS);
+				out.flush();
+				out.close();
+				File expFile = new File(uploadTempDir, reqFilePrefix + "." + exportType);
+				log.debug("exported file: " + expFile.getCanonicalPath());
+				if ("svg".equals(exportType)) {
+					outFile(response, expFile);
+				} else if ("jpg".equals(exportType)) {
+					JPEGTranscoder t = new JPEGTranscoder();
+			        t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, 1f);
+			        
+			        OutputStream ostream = new FileOutputStream(expFile);
+			        TranscoderOutput output = new TranscoderOutput(new FileOutputStream(expFile));
+
+			        // Perform the transcoding.
+			        t.transcode(new TranscoderInput(svgFile.toURI().toString()), output);
+			        ostream.flush();
+			        ostream.close();
+			        
+					outFile(response, expFile);
+				} else if (exportType.equals("png")
+						|| exportType.equals("gif") || exportType.equals("tif")
+						|| exportType.equals("pdf")) {
+						//TODO not implemented yet
+				}
+			}
+		} catch (ServerNotInitializedException e) {
+			return;
+		} catch (Exception er) {
+			log.error("Error exporting to image ", er);
+		}
+	}
+	
+	private void outFile(HttpServletResponse response, File f) throws IOException {
+		response.reset();
+		response.resetBuffer();
+		OutputStream outStream = response.getOutputStream();
+		response.setContentType("APPLICATION/OCTET-STREAM");
+		response.setHeader("Content-Disposition", "attachment; filename=\"" + f.getName() + "\"");
+		response.setHeader("Content-Length", "" + f.length());
+
+		OmFileHelper.copyFile(f, outStream);
+		outStream.close();
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/NetworkTestingController.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/NetworkTestingController.java
new file mode 100644
index 0000000..5131df6
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/NetworkTestingController.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@Controller
+public class NetworkTestingController {
+
+    enum TestType {
+        UNKNOWN,
+        PING,
+        JITTER,
+        DOWNLOAD_SPEED,
+        UPLOAD_SPEED
+    }
+
+    private static final int PING_PACKET_SIZE = 64;
+    private static final int JITTER_PACKET_SIZE = 1024;
+    private static final int DOWNLOAD_PACKET_SIZE = 1024*1024;
+
+    private final byte[] pingData;
+    private final byte[] jitterData;
+    private final byte[] downloadData;
+
+    public NetworkTestingController() {
+        pingData = new byte[PING_PACKET_SIZE];
+        jitterData = new byte[JITTER_PACKET_SIZE];
+        downloadData = new byte[DOWNLOAD_PACKET_SIZE];
+
+        Arrays.fill(pingData, (byte) '0');
+        Arrays.fill(jitterData, (byte) '0');
+        Arrays.fill(downloadData, (byte) '0');
+    }
+
+    @RequestMapping(value = "/networktest.upload", method = RequestMethod.GET)
+	public void serviceGet(HttpServletRequest request, HttpServletResponse response, HttpSession session)
+			throws ServletException, IOException {
+        String typeStr = request.getParameter("testType");
+        TestType testType = this.getTypeByString(typeStr);
+
+        // choose data to send
+        byte[] data = null;
+        switch (testType) {
+            case UNKNOWN:
+                return;
+            case PING:
+                data = pingData;
+                break;
+            case JITTER:
+                data = jitterData;
+                break;
+            case DOWNLOAD_SPEED:
+                data = downloadData;
+                break;
+			case UPLOAD_SPEED:
+				break;
+			default:
+				break;
+        }
+
+        // set needed headers
+        response.setHeader("Cache-Control", "no-cache");
+        response.setHeader("Content-Length", String.valueOf(data.length));
+
+        // send data
+        ServletOutputStream outStream = response.getOutputStream();
+        outStream.write(data);
+        outStream.flush();
+    }
+
+    @RequestMapping(value = "/networktest.upload", method = RequestMethod.POST)
+	public void servicePost(HttpServletRequest request, HttpServletResponse response, HttpSession session)
+			throws ServletException, IOException {
+    }
+
+
+    private TestType getTypeByString(String typeString) {
+        if ("ping".equals(typeString)) {
+            return TestType.PING;
+        } else if ("jitter".equals(typeString)) {
+            return TestType.JITTER;
+        } else if ("download".equals(typeString)) {
+            return TestType.DOWNLOAD_SPEED;
+        } else if ("upload".equals(typeString)) {
+            return TestType.UPLOAD_SPEED;
+        }
+
+        return TestType.UNKNOWN;
+    }
+
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/ScreenController.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/ScreenController.java
new file mode 100644
index 0000000..1afb923
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/ScreenController.java
@@ -0,0 +1,260 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_ALLOW_REMOTE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.openmeetings.data.basic.FieldManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.context.Context;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.log.Log4JLogChute;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+public class ScreenController {
+	private static final Logger log = Red5LoggerFactory.getLogger(ScreenController.class, webAppRootKey);
+
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	public SessiondataDao sessiondataDao;
+	@Autowired
+	public ConfigurationDao cfgDao;
+	@Autowired
+	public FieldManager fieldManager;
+	@Autowired
+	public RoomDao roomDao;
+
+	private enum ConnectionType {
+		rtmp
+		, rtmps
+		, rtmpt
+	}
+	
+	private String getLabels(Long language_id, int ... ids) {
+		StringBuilder result = new StringBuilder();
+		boolean delim = false;
+		for (int id : ids) {
+			if (delim) {
+				result.append(';');
+			}
+			result.append(fieldManager.getString((long)id, language_id));
+			delim = true;
+		}
+		return result.toString();
+	}
+	
+    @RequestMapping(value = "/screen.upload")
+	public void handleRequest(HttpServletRequest request, HttpServletResponse response) {
+		try {
+			String sid = request.getParameter("sid");
+			Long users_id = sessiondataDao.checkSession(sid);
+			String publicSID = request.getParameter("publicSID");
+			if (publicSID == null) {
+				throw new Exception("publicSID is empty: " + publicSID);
+			}
+			if (users_id == 0) {
+				//checkSession will return 0 in case of invalid session
+				throw new Exception("Request from invalid user " + users_id);
+			}
+
+			String domain = request.getParameter("domain");
+			if (domain == null) {
+				throw new Exception("domain is empty: " + domain);
+			}
+
+			String languageAsString = request.getParameter("languageAsString");
+			if (languageAsString == null) {
+				throw new Exception("languageAsString is empty: " + languageAsString);
+			}
+			Long language_id = Long.parseLong(languageAsString);
+
+			String rtmphostlocal = request.getParameter("rtmphostlocal");
+			if (rtmphostlocal == null) {
+				throw new Exception("rtmphostlocal is empty: " + rtmphostlocal);
+			}
+			
+			String baseURL = request.getParameter("baseurl");
+			if (baseURL == null) {
+				throw new Exception("baseurl is empty: " + baseURL);
+			}
+			log.debug("language_id :: " + language_id);
+			String label_sharer = "Sharer";
+
+			try {
+				label_sharer = getLabels(language_id
+					,  730,  731,  732,  733,  734
+					,  735,  737,  738,  739,  740
+					,  741,  742,  844,  869,  870
+					,  871,  872,  878, 1089, 1090
+					, 1091, 1092, 1093, 1465, 1466
+					, 1467, 1468, 1469, 1470, 1471
+					, 1472, 1473, 1474, 1475, 1476
+					, 1477, 1589, 1598, 1078);
+			} catch (Exception e) {
+				log.error("Error resolving Language labels : ", e);
+			}
+			log.debug("Creating JNLP Template for TCP solution");
+
+			log.debug("RTMP Sharer labels :: " + label_sharer);
+
+			ConnectionType conType = ConnectionType.valueOf(request.getParameter("connectionType"));
+
+			String port = request.getParameter("port");
+			if (port == null) {
+				throw new Exception("port is empty: ");
+			}
+			Client rc = sessionManager.getClientByPublicSID(publicSID, false, null);
+			if (rc == null) {
+				throw new Exception("Port is empty");
+			}
+			Long roomId = rc.getRoom_id();
+			if (roomId == null) {
+				throw new Exception("Client has no room " + rc);
+			}
+			Room room = roomDao.get(roomId);
+			boolean allowRecording = room.isAllowRecording() && rc.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId));
+			boolean allowPublishing = (0 == sessionManager.getPublishingCount(roomId));
+			
+			Context ctx = new VelocityContext();
+			ctx.put("codebase", baseURL + OmFileHelper.SCREENSHARING_DIR);
+			ctx.put("APP_NAME", cfgDao.getAppName());
+			ctx.put("protocol", conType.name());
+			ctx.put("host", rtmphostlocal);
+			ctx.put("port", port);
+			ctx.put("app", OpenmeetingsVariables.webAppRootKey + "/" + roomId);
+			ctx.put("userId", users_id);
+			ctx.put("publicSid", publicSID);
+			ctx.put("labels", label_sharer);
+			ctx.put("defaultQuality", cfgDao.getConfValue(CONFIG_SCREENSHARING_QUALITY, String.class, "1"));
+			ctx.put("defaultFps", cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS, String.class, "10"));
+			ctx.put("showFps", cfgDao.getConfValue(CONFIG_SCREENSHARING_FPS_SHOW, Boolean.class, "true"));
+			ctx.put("allowRemote", cfgDao.getConfValue(CONFIG_SCREENSHARING_ALLOW_REMOTE, Boolean.class, "true"));
+			ctx.put("allowRecording", allowRecording);
+			ctx.put("allowPublishing", allowPublishing);
+			addKeystore(ctx);
+
+			String requestedFile = StringUtils.deleteWhitespace(domain + "_" + roomId) + ".jnlp";
+			response.setContentType("application/x-java-jnlp-file");
+			response.setCharacterEncoding("UTF-8");
+			response.setHeader("Content-Disposition", "Inline; filename=\"" + requestedFile + "\"");
+
+			VelocityEngine ve = new VelocityEngine();
+			ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); 
+			ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+			ve.setProperty(Log4JLogChute.RUNTIME_LOG_LOG4J_LOGGER, Log4JLogChute.class.getName()); 
+			
+			ve.mergeTemplate(
+				"screenshare.vm"
+				, "UTF-8"
+				, ctx
+				, response.getWriter());
+		} catch (Exception er) {
+			log.error("[ScreenController]", er);
+		}
+	}
+
+	private void addKeystore(Context ctx) {
+		log.debug("RTMP Sharer Keystore :: start");
+		String keystore = "--dummy--", password = "--dummy--";
+		FileInputStream fis = null, ris = null;
+		try {
+			File conf = new File(OmFileHelper.getRootDir(), "conf");
+
+			File keyStore = new File(conf, "keystore.screen");
+			if (keyStore.exists()) {
+				Properties red5Props = new Properties();
+				ris = new FileInputStream(new File(conf, "red5.properties"));
+				red5Props.load(ris);
+				
+				byte keyBytes[] = new byte[(int)keyStore.length()];
+				fis = new FileInputStream(keyStore);
+				fis.read(keyBytes);
+				
+				keystore = Hex.encodeHexString(keyBytes);
+				password = red5Props.getProperty("rtmps.keystorepass");
+				
+				/*
+				KeyStore ksIn = KeyStore.getInstance(KeyStore.getDefaultType());
+				ksIn.load(new FileInputStream(keyStore), red5Props.getProperty("rtmps.keystorepass").toCharArray());
+				ByteArrayInputStream bin = new ByteArrayInputStream()
+				
+				byte fileContent[] = new byte[(int)file.length()];
+				sb = addArgument(sb, Object arg)
+				ctx.put("$KEYSTORE", users_id);
+				/*
+				KeyStore ksOut = KeyStore.getInstance(KeyStore.getDefaultType());
+				for (Certificate cert : ksIn.getCertificateChain("red5")) {
+					PublicKey pub = cert.getPublicKey();
+					TrustedCertificateEntry tce = new TrustedCertificateEntry(cert);
+					tce.
+				}
+				*/
+			}
+		} catch (Exception e) {
+			//no op
+		} finally {
+			if (fis != null) {
+				try {
+					fis.close();
+				} catch (IOException e) {
+					// no op
+				}
+			}
+			if (ris != null) {
+				try {
+					ris.close();
+				} catch (IOException e) {
+					// no op
+				}
+			}
+		}
+		ctx.put("keystore", keystore);
+		ctx.put("password", password);
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/servlet/outputhandler/UploadController.java b/src/main/java/org/apache/openmeetings/servlet/outputhandler/UploadController.java
new file mode 100644
index 0000000..525d937
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/servlet/outputhandler/UploadController.java
@@ -0,0 +1,370 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.servlet.outputhandler;
+
+import static org.apache.openmeetings.util.OmFileHelper.bigImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.chatImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+
+import java.io.File;
+import java.io.InputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.converter.GenerateImage;
+import org.apache.openmeetings.converter.GenerateThumbs;
+import org.apache.openmeetings.data.file.FileProcessor;
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.documents.GeneratePDF;
+import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.util.process.UploadCompleteMessage;
+import org.apache.openmeetings.util.stringhandlers.StringComparer;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.multipart.MultipartFile;
+
+@Controller
+public class UploadController extends AbstractUploadController {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			UploadController.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private ScopeApplicationAdapter scopeApplicationAdapter;
+	@Autowired
+	private GeneratePDF generatePDF;
+	@Autowired
+	private GenerateThumbs generateThumbs;
+	@Autowired
+	private GenerateImage generateImage;
+	@Autowired
+	private FileProcessor fileProcessor;
+	@Autowired
+	private FileExplorerItemDao fileExplorerItemDao;
+
+	private String filesString[] = null;
+	
+    @RequestMapping(value = "/file.upload", method = RequestMethod.POST)
+    public void handleFileUpload(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws ServletException {
+    	UploadInfo info = validate(request, false);
+    	try {
+			String room_idAsString = request.getParameter("room_id");
+			if (room_idAsString == null) {
+				throw new ServletException("Missing Room ID");
+			}
+	
+			Long room_id_to_Store = Long.parseLong(room_idAsString);
+	
+			String isOwnerAsString = request.getParameter("isOwner");
+			if (isOwnerAsString == null) {
+				throw new ServletException("Missing isOwnerAsString");
+			}
+			boolean isOwner = false;
+			if (isOwnerAsString.equals("1")) {
+				isOwner = true;
+			}
+	
+			String parentFolderIdAsString = request
+					.getParameter("parentFolderId");
+			if (parentFolderIdAsString == null) {
+				throw new ServletException("Missing parentFolderId ID");
+			}
+			Long parentFolderId = Long.parseLong(parentFolderIdAsString);
+	
+			MultipartFile multipartFile = info.file;
+			InputStream is = multipartFile.getInputStream();
+			log.debug("fileSystemName: " + info.filename);
+	
+			ConverterProcessResultList returnError = fileProcessor
+					.processFile(info.userId, room_id_to_Store, isOwner, is,
+							parentFolderId, info.filename, 0L, ""); // externalFilesId, externalType
+	
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage();
+	    	uploadCompleteMessage.setUserId(info.userId);
+	
+			// Flash cannot read the response of an upload
+			// httpServletResponse.getWriter().print(returnError);
+	    	uploadCompleteMessage.setMessage("library");
+	    	uploadCompleteMessage.setAction("newFile");
+	    	
+	    	setFileExplorerItem(uploadCompleteMessage,
+					fileExplorerItemDao.getFileExplorerItemsById(
+							returnError.getFileExplorerItemId()));
+			
+			uploadCompleteMessage.setHasError(returnError.hasError());
+			//we only send the complete log to the client if there is really something 
+			//to show because of an error
+			if (returnError.hasError()) {
+				uploadCompleteMessage.setError(returnError.getLogMessage());
+			}
+			uploadCompleteMessage.setFileName(returnError.getCompleteName());
+			
+			sendMessage(info, uploadCompleteMessage);
+		} catch (ServletException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("Exception during upload: ", e);
+			throw new ServletException(e);
+    	}
+    }
+    
+	public void setFileExplorerItem(UploadCompleteMessage msg, FileExplorerItem fileExplorerItem) {
+		if (fileExplorerItem.getIsImage() != null) {
+			msg.setIsImage(fileExplorerItem.getIsImage());
+		}
+		if (fileExplorerItem.getIsVideo() != null) {
+			msg.setIsVideo(fileExplorerItem.getIsVideo());
+		}
+		if (fileExplorerItem.getIsPresentation() != null) {
+			msg.setIsPresentation(fileExplorerItem.getIsPresentation());
+		}
+		msg.setFileSystemName(fileExplorerItem.getFileName());
+		msg.setFileHash(fileExplorerItem.getFileHash());
+	}
+    
+    @RequestMapping(value = "/remotelog.upload", method = RequestMethod.POST)
+    public void handleRemoteLog(HttpServletRequest request, HttpServletResponse response) throws ServletException {
+    	String message = request.getParameter("message");
+    	String sid = request.getParameter("sid");
+    	if (sid == null || message == null) return;
+    	Long userId = sessiondataDao.checkSession(sid);
+    	if (userId != null && userId != 0) {
+    		log.debug("[CLIENT MESSAGE] " + message);
+    	}
+    }
+    
+    @RequestMapping(value = "/upload.upload", method = RequestMethod.POST)
+    public void handleFormUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException {
+		try {
+	    	UploadInfo info = validate(request, false);
+	    	
+			String room_id = request.getParameter("room_id");
+			if (room_id == null) {
+				room_id = "default";
+			}
+			String roomName = StringUtils.deleteWhitespace(room_id);
+	
+			String moduleName = request.getParameter("moduleName");
+			if (moduleName == null) {
+				moduleName = "nomodule";
+			}
+			if (moduleName.equals("nomodule")) {
+				log.debug("module name missed");
+				return;
+			}
+			boolean userProfile = moduleName.equals("userprofile");
+	
+			MultipartFile multipartFile = info.file;
+			InputStream is = multipartFile.getInputStream();
+			String fileSystemName = info.filename;
+			fileSystemName = StringUtils.deleteWhitespace(fileSystemName);
+	
+			UploadCompleteMessage uploadCompleteMessage = new UploadCompleteMessage();
+	    	uploadCompleteMessage.setUserId(info.userId);
+			
+			// Flash cannot read the response of an upload
+			// httpServletResponse.getWriter().print(returnError);
+			uploadFile(request, userProfile, info.userId, roomName, is, fileSystemName, uploadCompleteMessage);
+			sendMessage(info, uploadCompleteMessage);
+		} catch (ServletException e) {
+			throw e;
+		} catch (Exception e) {
+			log.error("Exception during upload: ", e);
+			throw new ServletException(e);
+		}
+    }
+
+    
+    private void sendMessage(UploadInfo info, UploadCompleteMessage uploadCompleteMessage) {
+		scopeApplicationAdapter.sendUploadCompletMessageByPublicSID(
+				uploadCompleteMessage, info.publicSID);
+    }
+    
+	private void uploadFile(HttpServletRequest request, boolean userProfile, Long userId, String roomName,
+			InputStream is, String fileSystemName, UploadCompleteMessage uploadCompleteMessage)
+			throws Exception {
+		ConverterProcessResultList returnError = new ConverterProcessResultList();
+
+		// Check variable to see if this file is a presentation
+		int dotidx = fileSystemName.lastIndexOf('.');
+		String newFileName = StringComparer.getInstance().compareForRealPaths(
+				fileSystemName.substring(0, dotidx));
+		String newFileExtDot = fileSystemName.substring(dotidx,
+				fileSystemName.length()).toLowerCase();
+		String newFileExt = newFileExtDot.substring(1);
+
+		// trim long names cause cannot output that
+		final int MAX_FILE_NAME_LENGTH = 30;
+		if (newFileName.length() >= MAX_FILE_NAME_LENGTH) {
+			newFileName = newFileName.substring(0, MAX_FILE_NAME_LENGTH);
+		}
+		StoredFile storedFile = new StoredFile(newFileName, newFileExt);
+
+		// check if this is a a file that can be converted by
+		// openoffice-service
+		boolean canBeConverted = storedFile.isConvertable();
+		boolean isPdf = storedFile.isPdf();
+		boolean isImage = storedFile.isImage();
+		boolean isAsIs = storedFile.isAsIs();
+
+		File workingDir = null;
+		// add outputfolders for profiles
+		if (userProfile) {
+			// User Profile Update
+			this.deleteUserProfileFilesStoreTemp(userId);
+			newFileName = "profile"; //set unified file name to avoid any problems with national characters
+			workingDir = OmFileHelper.getUploadProfilesUserDir(userId);
+		}
+		// if it is a presenation it will be copied to another
+		// place
+		if (isAsIs) {
+			// check if this is a room file or UserProfile
+			if (!userProfile) {
+				workingDir = OmFileHelper.getUploadRoomDir(roomName);
+			}
+		} else if (canBeConverted || isPdf || isImage) {
+			workingDir = OmFileHelper.getUploadTempProfilesUserDir(userId);
+		} else {
+			return;
+		}
+
+		File completeName = OmFileHelper.getNewFile(workingDir, newFileName, newFileExtDot);
+
+		log.debug("write file to : " + completeName);
+
+		FileHelper.copy(is, completeName);
+		is.close();
+
+		log.debug("canBeConverted: " + canBeConverted);
+		if (canBeConverted) {
+			// convert to pdf, thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newFileName, roomName, true, completeName);
+		} else if (isPdf) {
+			
+			boolean isEncrypted = true; 
+			
+			log.debug("isEncrypted :: " + isEncrypted);
+
+			if (isEncrypted) {
+				// Do convert pdf to other pdf first
+				File f_old = completeName;
+
+				completeName = OmFileHelper.appendSuffix(completeName, "_N_E");
+				newFileName += "_N_E";
+
+				generateThumbs.decodePDF(f_old.getCanonicalPath(), completeName.getCanonicalPath());
+
+				if (f_old.exists()) {
+					f_old.delete();
+				}
+
+			}
+
+			// convert to thumbs, swf and xml-description
+			returnError = generatePDF.convertPDF(newFileName, roomName, false, completeName);
+
+			// returnError.put("decodePDF", returnError2);
+
+		} else if (isImage && !isAsIs) {
+
+			log.debug("##### isImage! userProfilePic: " + userProfile);
+
+			if (userProfile) {
+				// convert it to JPG
+				returnError = generateImage.convertImageUserProfile(completeName, userId, true);
+			} else {
+				// convert it to JPG
+				log.debug("##### convert it to JPG: " + userProfile);
+				returnError = generateImage.convertImage(
+					newFileName, newFileExtDot, roomName, newFileName, false);
+			}
+		} else if (isAsIs) {
+			if (userProfile) {
+				// User Profile Update
+				this.deleteUserProfileFiles(userId);
+				// is UserProfile Picture
+				returnError.addItem("processThumb1", generateThumbs
+						.generateThumb(chatImagePrefix, completeName, 40));
+				returnError.addItem("processThumb2", generateThumbs
+						.generateThumb(profileImagePrefix, completeName, 126));
+				returnError.addItem("processThumb3", generateThumbs
+						.generateThumb(bigImagePrefix, completeName, 240));
+
+				String pictureuri = completeName.getName();
+				User us = usersDao.get(userId);
+				us.setUpdatetime(new java.util.Date());
+				us.setPictureuri(pictureuri);
+				usersDao.update(us, userId);
+
+				//FIXME: After updating the picture url all other users should refresh
+			} else {
+				returnError.addItem("processThumb", generateThumbs
+						.generateThumb(thumbImagePrefix, completeName, 50));
+			}
+		}
+
+		uploadCompleteMessage.setMessage("library");
+		uploadCompleteMessage.setAction("newFile");
+		
+		uploadCompleteMessage.setHasError(returnError.hasError());
+		
+		//we only send the complete log to the client if there is really something 
+		//to show because of an error
+		if (returnError.hasError()) {
+			uploadCompleteMessage.setError(returnError.getLogMessage());
+		}
+		uploadCompleteMessage.setFileName(completeName.getName());
+		
+	}
+
+	private void deleteUserProfileFilesStoreTemp(Long users_id) throws Exception {
+		File f = OmFileHelper.getUploadProfilesUserDir(users_id);
+		if (f.exists() && f.isDirectory()) {
+			this.filesString = f.list();
+		}
+	}
+
+	private void deleteUserProfileFiles(Long users_id) throws Exception {
+		File working_imgdir = OmFileHelper.getUploadProfilesUserDir(users_id);
+
+		for (int i = 0; i < this.filesString.length; i++) {
+			String fileName = filesString[i];
+			File subf = new File(working_imgdir, fileName);
+			subf.delete();
+		}
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/session/ServerUtil.java b/src/main/java/org/apache/openmeetings/session/ServerUtil.java
new file mode 100644
index 0000000..05ad507
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/session/ServerUtil.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.session;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Configures the current reference to the {@link Server} for this Tomcat/Web-Container.
+ * 
+ * It is a Spring Bean and configured as Singleton. There is only one instance of this 
+ * bean in the entire Web-Application.  
+ * 
+ * @author sebawagner
+ *
+ */
+public class ServerUtil {
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			ServerUtil.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ServerDao serverDao;
+	
+	/**
+	 * Injected via Spring configuration
+	 * 
+	 * for cluster configuration, if only using one server (no cluster), serverId is null,
+	 * this is the current serverId of this Tomcat instance (null means no cluster is configured)
+	 */
+	private String serverId = null;
+	
+	/**
+	 * a reference of the current server in that Tomcat instance
+	 */
+	private Server currentServer;
+	
+	public String getServerId() {
+		return serverId;
+	}
+	
+	public void setServerId(String serverId) {
+		this.serverId = serverId;
+	}
+	
+	/**
+	 * 
+	 * @return the current server
+	 */
+	public Server getCurrentServer() {
+		if (serverId == null) {
+			return null;
+		}
+		if (currentServer != null && serverId.equals(currentServer.getId().toString())) {
+			return currentServer;
+		}
+		currentServer = serverDao.get(Long.parseLong(serverId));
+		if (currentServer == null) {
+			log.warn("You have configured a serverId that does not exist in your list of servers, serverId: "+serverId);
+		}
+		return currentServer;
+	}
+}
diff --git a/src/main/java/org/apache/openmeetings/session/SessionManager.java b/src/main/java/org/apache/openmeetings/session/SessionManager.java
new file mode 100644
index 0000000..0a5636c
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/session/SessionManager.java
@@ -0,0 +1,441 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.session;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Random;
+
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.session.store.IClientPersistenceStore;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Handle {@link Client} objects.
+ * 
+ * Use a kind of decorator pattern to inject the {@link Server} into every call.
+ * 
+ * @author sebawagner
+ * 
+ */
+public class SessionManager implements ISessionManager {
+	
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			SessionManager.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private ServerUtil serverUtil;
+	
+	/**
+	 * Injected via Spring, needs a getter/setter because it can be configured
+	 * Autowired will not suit here as there are multiple implementations of the
+	 * {@link IClientPersistenceStore}
+	 */
+	private IClientPersistenceStore cache;
+	
+	public IClientPersistenceStore getCache() {
+		return cache;
+	}
+
+	public void setCache(IClientPersistenceStore cache) {
+		this.cache = cache;
+	}
+
+	private ISessionManager sessionManager = new ISessionManager() {
+		
+		public synchronized Client addClientListItem(String streamId,
+				String scopeName, Integer remotePort, String remoteAddress,
+				String swfUrl, boolean isAVClient, Server server) {
+			try {
+
+				// Store the Connection into a bean and add it to the HashMap
+				Client rcm = new Client();
+				rcm.setConnectedSince(new Date());
+				rcm.setStreamid(streamId);
+				rcm.setScope(scopeName);
+				long random = System.currentTimeMillis() + new BigInteger(256, new Random()).longValue();
+				
+				rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
+						.createPassPhrase(String.valueOf(random).toString()));
+
+				rcm.setServer(server);
+				rcm.setUserport(remotePort);
+				rcm.setUserip(remoteAddress);
+				rcm.setSwfurl(swfUrl);
+				rcm.setIsMod(new Boolean(false));
+				rcm.setCanDraw(new Boolean(false));
+				rcm.setIsAVClient(isAVClient);
+
+				if (cache.containsKey(null, streamId)) {
+					log.error("Tried to add an existing Client " + streamId);
+					return null;
+				}
+
+				cache.put(rcm.getStreamid(), rcm);
+
+				return rcm;
+			} catch (Exception err) {
+				log.error("[addClientListItem]", err);
+			}
+			return null;
+		}
+
+		public synchronized Collection<Client> getClients() {
+			return cache.getClients();
+		}
+		
+		public synchronized Collection<Client> getClientsWithServer() {
+			return cache.getClientsWithServer();
+		}
+
+		public synchronized Client getClientByStreamId(String streamId, Server server) {
+			try {
+				if (!cache.containsKey(server, streamId)) {
+					log.debug("Tried to get a non existing Client " + streamId + " server " + server);
+					return null;
+				}
+				return cache.get(server, streamId);
+			} catch (Exception err) {
+				log.error("[getClientByStreamId]", err);
+			}
+			return null;
+		}
+
+		public Client getClientByPublicSID(String publicSID, boolean isAVClient, Server server) {
+			try {
+				for (Client rcl : cache.getClientsByPublicSID(server, publicSID)) {
+					if (rcl.getIsAVClient() != isAVClient) {
+						continue;
+					}
+					return rcl;
+				}
+			} catch (Exception err) {
+				log.error("[getClientByPublicSID]", err);
+			}
+			return null;
+		}
+		
+		public ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID, boolean isAVClient) {
+			try {
+				for (Entry<Long,List<Client>> entry : cache.getClientsByPublicSID(publicSID).entrySet()) {
+					for (Client rcl : entry.getValue()) {
+						if (rcl.getIsAVClient() != isAVClient) {
+							continue;
+						}
+						return new ClientSessionInfo(rcl, entry.getKey());
+					}
+				}
+			} catch (Exception err) {
+				log.error("[getClientByPublicSIDAnyServer]", err);
+			}
+			return null;
+		}
+
+		public synchronized Client getClientByUserId(Long userId) {
+			try {
+				for (Client rcl : cache.getClientsByUserId(null, userId)) {
+					
+					if (rcl.getIsScreenClient() != null && rcl.getIsScreenClient()) {
+						continue;
+					}
+					
+					if (rcl.getIsAVClient()) {
+						continue;
+					}
+					
+					return rcl;
+				}
+			} catch (Exception err) {
+				log.error("[getClientByUserId]", err);
+			}
+			return null;
+		}
+
+		public synchronized Boolean updateAVClientByStreamId(String streamId, Client rcm, Server server) {
+			try {
+				// get the corresponding user session object and update the settings
+				Client rclUsual = getClientByPublicSID(rcm.getPublicSID(), false, server);
+				if (rclUsual != null) {
+					rclUsual.setBroadCastID(rcm.getBroadCastID());
+					rclUsual.setAvsettings(rcm.getAvsettings());
+					rclUsual.setVHeight(rcm.getVHeight());
+					rclUsual.setVWidth(rcm.getVWidth());
+					rclUsual.setVX(rcm.getVX());
+					rclUsual.setVY(rcm.getVY());
+					Client rclSaved = cache.get(server, rclUsual.getStreamid());
+					if (rclSaved != null) {
+						cache.put(rclUsual.getStreamid(), rclUsual);
+					} else {
+						log.debug("Tried to update a non existing Client " + rclUsual.getStreamid());
+					}
+				}
+
+				updateClientByStreamId(streamId, rcm, false, server);
+			} catch (Exception err) {
+				log.error("[updateAVClientByStreamId]", err);
+			}
+			return null;
+		}
+
+		public synchronized Boolean updateClientByStreamId(String streamId,
+				Client rcm, boolean updateRoomCount, Server server) {
+			try {
+				
+				Client rclSaved = cache.get(server, streamId);
+				
+				if (rclSaved != null) {
+					cache.put(streamId, rcm);
+					return true;
+				} else {
+					log.debug("Tried to update a non existing Client " + streamId);
+					return false;
+				}
+			} catch (Exception err) {
+				log.error("[updateClientByStreamId]", err);
+			}
+			return null;
+		}
+
+		public synchronized Boolean removeClient(String streamId, Server server) {
+			try {
+				if (cache.containsKey(server,streamId)) {
+					cache.remove(server,streamId);
+					return true;
+				} else {
+					log.debug("Tried to remove a non existing Client " + streamId);
+					return false;
+				}
+			} catch (Exception err) {
+				log.error("[removeClient]", err);
+			}
+			return null;
+		}
+
+		public synchronized ArrayList<Client> getClientListByRoom(Long roomId) {
+			ArrayList<Client> roomClientList = new ArrayList<Client>();
+			try {
+
+				for (Client rcl : cache.getClientsByRoomId(roomId)) {
+
+					if (rcl.getIsScreenClient() == null || rcl.getIsScreenClient()) {
+						continue;
+					}
+					if (rcl.getIsAVClient()) {
+						continue;
+					}
+
+					// Only parse really those users out that are really a full session object
+					// and no pseudo session object like the audio/video or screen
+					// sharing connection
+					roomClientList.add(rcl);
+				}
+			} catch (Exception err) {
+				log.error("[getClientListByRoom]", err);
+			}
+			return roomClientList;
+		}
+		
+		public synchronized Collection<Client> getClientListByRoomAll(Long roomId) {
+			try {
+				return cache.getClientsByRoomId(roomId);
+			} catch (Exception err) {
+				log.error("[getClientListByRoomAll]", err);
+			}
+			return null;
+		}
+
+		public synchronized List<Client> getCurrentModeratorByRoom(Long room_id) {
+			List<Client> rclList = new LinkedList<Client>();
+			List<Client> currentClients = this.getClientListByRoom(room_id);
+			for (Client rcl : currentClients) {
+				if (rcl.getIsMod()) {
+					rclList.add(rcl);
+				}
+			}
+
+			return rclList;
+		}
+
+		// FIXME not sorted
+		public synchronized SearchResult<Client> getListByStartAndMax(
+				int start, int max, String orderby, boolean asc) {
+			SearchResult<Client> sResult = new SearchResult<Client>();
+			sResult.setObjectName(Client.class.getName());
+			sResult.setRecords(Long.valueOf(cache.size()).longValue());
+			sResult.setResult(cache.getClientsWithServer());
+			return sResult;
+		}
+
+		public long getRecordingCount(long roomId) {
+			List<Client> currentClients = this.getClientListByRoom(roomId);
+			int numberOfRecordingUsers = 0;
+			for (Client rcl : currentClients) {
+				if (rcl.isStartRecording()) {
+					numberOfRecordingUsers++;
+				}
+			}
+			return numberOfRecordingUsers;
+		}
+
+		public long getPublishingCount(long roomId) {
+			List<Client> currentClients = this.getClientListByRoom(roomId);
+			int numberOfPublishingUsers = 0;
+			for (Client rcl : currentClients) {
+				if (rcl.isStreamPublishStarted()) {
+					numberOfPublishingUsers++;
+				}
+			}
+			return numberOfPublishingUsers;
+		}
+		
+		public List<Long> getActiveRoomIdsByServer(Server server) {
+			return cache.getRoomsIdsByServer(server);
+		}
+		
+		
+		public String getSessionStatistics() {
+			return cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
+		}
+
+		public void sessionStart() {
+			// TODO Auto-generated method stub
+			
+		}
+		
+	};
+	
+	public Client addClientListItem(String streamId, String scopeName,
+			Integer remotePort, String remoteAddress, String swfUrl,
+			boolean isAVClient, Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.addClientListItem(streamId, scopeName,
+				remotePort, remoteAddress, swfUrl, isAVClient, server);
+	}
+
+	public Collection<Client> getClients() {
+		return sessionManager.getClients();
+	}
+	
+	public Collection<Client> getClientsWithServer() {
+		return sessionManager.getClientsWithServer();
+	}
+
+	public Client getClientByStreamId(String streamId, Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.getClientByStreamId(streamId, server);
+	}
+
+	public Client getClientByPublicSID(String publicSID, boolean isAVClient,
+			Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.getClientByPublicSID(publicSID, isAVClient,
+				server);
+	}
+
+	public ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID,
+			boolean isAVClient) {
+		return sessionManager.getClientByPublicSIDAnyServer(publicSID,
+				isAVClient);
+	}
+
+	public Client getClientByUserId(Long userId) {
+		return sessionManager.getClientByUserId(userId);
+	}
+
+	public Boolean updateAVClientByStreamId(String streamId, Client rcm, Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.updateAVClientByStreamId(streamId, rcm, server);
+	}
+
+	public Boolean updateClientByStreamId(String streamId, Client rcm,
+			boolean updateRoomCount, Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.updateClientByStreamId(streamId, rcm,
+				updateRoomCount, server);
+	}
+
+	public Boolean removeClient(String streamId, Server server) {
+		if (server == null) {
+			server = serverUtil.getCurrentServer();
+		}
+		return sessionManager.removeClient(streamId, server);
+	}
+
+	public List<Client> getClientListByRoom(Long room_id) {
+		return sessionManager.getClientListByRoom(room_id);
+	}
+
+	public Collection<Client> getClientListByRoomAll(Long room_id) {
+		return sessionManager.getClientListByRoomAll(room_id);
+	}
+
+	public List<Client> getCurrentModeratorByRoom(Long room_id) {
+		return sessionManager.getCurrentModeratorByRoom(room_id);
+	}
+
+	public SearchResult<Client> getListByStartAndMax(int start, int max,
+			String orderby, boolean asc) {
+		return sessionManager.getListByStartAndMax(start, max, orderby, asc);
+	}
+
+	public long getRecordingCount(long roomId) {
+		return sessionManager.getRecordingCount(roomId);
+	}
+
+	public long getPublishingCount(long roomId) {
+		return sessionManager.getPublishingCount(roomId);
+	}
+
+	public List<Long> getActiveRoomIdsByServer(Server server) {
+		return sessionManager.getActiveRoomIdsByServer(server == null ? serverUtil.getCurrentServer() : server);
+	}
+
+	public String getSessionStatistics() {
+		return sessionManager.getSessionStatistics();
+	}
+
+	public void sessionStart() {
+		sessionManager.sessionStart();
+	}
+	
+}
diff --git a/src/main/java/org/apache/openmeetings/session/store/DatabaseStore.java b/src/main/java/org/apache/openmeetings/session/store/DatabaseStore.java
new file mode 100644
index 0000000..9529ebd
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/session/store/DatabaseStore.java
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.session.store;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.room.ClientDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DatabaseStore implements IClientPersistenceStore {
+	
+	@Autowired
+	private ClientDao clientDao;
+	
+	public void clearCache() {
+		
+		//List<Server> serverList = serverDao.getActiveServers();
+		
+		//clientDao.cleanUpClientsWithoutReference();
+	}
+	
+	public void put(String streamId, Client rcl) {
+		if (rcl.getId() > 0) {
+			clientDao.update(rcl);
+		} else {
+			clientDao.add(rcl);
+		}
+	}
+
+	public boolean containsKey(Server server, String streamId) {
+		return clientDao.countClientsByServerAndStreamId(server, streamId) > 0;
+	}
+
+	public Client get(Server server, String streamId) {
+		return clientDao.getClientByServerAndStreamId(server, streamId);
+	}
+
+	public List<Client> getClientsByPublicSID(Server server, String publicSID) {
+		return clientDao.getClientsByPublicSIDAndServer(server, publicSID);
+	}
+
+	public Map<Long, List<Client>> getClientsByPublicSID(String publicSID) {
+		Map<Long, List<Client>> returnMap = new HashMap<Long, List<Client>>();
+		List<Client> clientList = clientDao.getClientsByPublicSID(publicSID);
+		for (Client cl : clientList) {
+			
+			if (cl.getServer() == null) {
+				List<Client> clList = returnMap.get(null);
+				if (clList == null) {
+					clList = new ArrayList<Client>();
+				}
+				clList.add(cl);
+				returnMap.put(null, clList);
+			} else {
+				List<Client> clList = returnMap.get(cl.getServer().getId());
+				if (clList == null) {
+					clList = new ArrayList<Client>();
+				}
+				clList.add(cl);
+				returnMap.put(cl.getServer().getId(), clList);
+			}
+		}
+		return returnMap;
+	}
+	
+	public Collection<Client> getClients() {
+		return clientDao.getClients();
+	}
+	
+	public Collection<Client> getClientsWithServer() {
+		return clientDao.getClientsWithServer();
+	}
+
+	public Collection<Client> getClientsByServer(Server server) {
+		return clientDao.getClientsByServer(server);
+	}
+
+	public List<Client> getClientsByUserId(Server server, Long userId) {
+		return clientDao.getClientsByUserId(server, userId);
+	}
+
+	public List<Client> getClientsByRoomId(Long roomId) {
+		return clientDao.getClientsByRoomId(roomId);
+	}
+
+	public void remove(Server server, String streamId) {
+		clientDao.removeClientByServerAndStreamId(server, streamId);
+	}
+
+	public int size() {
+		return clientDao.countClients();
+	}
+
+	public int sizeByServer(Server server) {
+		return clientDao.countClientsByServer(server);
+	}
+
+	public Collection<Client> values() {
+		return clientDao.getClients();
+	}
+
+	public String getDebugInformation(List<DEBUG_DETAILS> detailLevel) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public List<Long> getRoomsIdsByServer(Server server) {
+		return clientDao.getRoomsIdsByServer(server);
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/session/store/HashMapStore.java b/src/main/java/org/apache/openmeetings/session/store/HashMapStore.java
new file mode 100644
index 0000000..4adf20d
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/session/store/HashMapStore.java
@@ -0,0 +1,188 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.session.store;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Stores the session in the memory.
+ * Is NOT designed to be clustered across multiple servers.
+ * 
+ * <ul>
+ * <li>client by streamid</li>
+ * <li>client by publicSID</li>
+ * <li>client by userId</li>
+ * <li>clients by roomId</li>
+ * <li>roomIds by server</li>
+ * </ul>
+ * 
+ * @author sebawagner
+ * 
+ */
+public class HashMapStore implements IClientPersistenceStore {
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			HashMapStore.class, OpenmeetingsVariables.webAppRootKey);
+	
+	
+	private LinkedHashMap<String, Client> clientsByStreamId = new LinkedHashMap<String, Client>();
+
+	public void clearCache() {
+		clientsByStreamId = new LinkedHashMap<String, Client>();
+	}
+	
+	public void put(String streamId, Client rcl) {
+		clientsByStreamId.put(rcl.getStreamid(), rcl);
+	}
+
+	public boolean containsKey(Server server, String streamId) {
+		return clientsByStreamId.containsKey(streamId);
+	}
+
+	public Client get(Server server, String streamId) {
+		return clientsByStreamId.get(streamId);
+	}
+	
+	public List<Client> getClientsByPublicSID(Server server, String publicSID) {
+		List<Client> clientList = new ArrayList<Client>();
+		for (Client cl : clientsByStreamId.values()) {
+			if (cl.getPublicSID().equals(publicSID)) {
+				clientList.add(cl);
+			}
+		}
+		return clientList;
+	}
+	
+	public Map<Long,List<Client>> getClientsByPublicSID(String publicSID) {
+		Map<Long,List<Client>> clientMapList = new HashMap<Long,List<Client>>();
+		List<Client> clientList = new ArrayList<Client>();
+		for (Client cl : clientsByStreamId.values()) {
+			if (cl.getPublicSID().equals(publicSID)) {
+				clientList.add(cl);
+			}
+		}
+		clientMapList.put(null, clientList);
+		return clientMapList;
+	}
+	
+	public Collection<Client> getClients() {
+		return clientsByStreamId.values();
+	}
+	
+	public Collection<Client> getClientsWithServer() {
+		//there is no server object to be loaded, memory cache means
+		//there is no cluster enabled
+		return getClients();
+	}
+	
+	public Collection<Client> getClientsByServer(Server server) {
+		return clientsByStreamId.values();
+	}
+	
+	public List<Client> getClientsByUserId(Server server, Long userId) {
+		List<Client> clientList = new ArrayList<Client>();
+		for (Client cl : clientsByStreamId.values()) {
+			if (cl.getUser_id().equals(userId)) {
+				clientList.add(cl);
+			}
+		}
+		return clientList;
+	}
+	
+	public  List<Client> getClientsByRoomId(Long roomId) {
+		List<Client> clientList = new ArrayList<Client>();
+		for (Client cl : clientsByStreamId.values()) {
+			if (cl.getRoom_id() != null && cl.getRoom_id().equals(roomId)) {
+				clientList.add(cl);
+			}
+		}
+		return clientList;
+	}
+
+	public void remove(Server server, String streamId) {
+		clientsByStreamId.remove(streamId);
+	}
+
+	public int size() {
+		return clientsByStreamId.size();
+	}
+	
+	public int sizeByServer(Server server) {
+		return clientsByStreamId.size();
+	}
+
+	public Collection<Client> values() {
+		return clientsByStreamId.values();
+	}
+	
+	public int getTotalNumberOfSessions() {
+		return clientsByStreamId.size();
+	}
+	
+	
+	/**
+	 * Print some session statistics to the debug out
+	 * 
+	 * @param detailLevel
+	 */
+	public void printDebugInformation(List<DEBUG_DETAILS> detailLevel) {
+		log.debug("Session Statistics Start ################## ");
+		log.debug(getDebugInformation(detailLevel));
+		log.debug("Session Statistics End ################## ");
+	}
+
+	public String getDebugInformation(List<DEBUG_DETAILS> detailLevel) {
+
+		StringBuilder statistics = new StringBuilder();
+
+		if (detailLevel.contains(DEBUG_DETAILS.SIZE)) {
+			addNewLine(statistics, "Number of sessions Total "
+					+ getTotalNumberOfSessions());
+		}
+
+		return statistics.toString();
+	}
+
+	private void addNewLine(StringBuilder strBuilder, String message) {
+		strBuilder.append(message + "\n\r");
+	}
+
+	public List<Long> getRoomsIdsByServer(Server server) {
+		HashSet<Long> rooms = new HashSet<Long>();
+		for (Client cl : clientsByStreamId.values()) {
+			Long roomId = cl.getRoom_id();
+			if (roomId != null && roomId > 0 && !rooms.contains(roomId)) {
+				rooms.add(roomId);
+			}
+		}
+		return new ArrayList<Long>(rooms);
+	}
+
+}
diff --git a/src/main/java/org/apache/openmeetings/session/store/IClientPersistenceStore.java b/src/main/java/org/apache/openmeetings/session/store/IClientPersistenceStore.java
new file mode 100644
index 0000000..9aa7e36
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/session/store/IClientPersistenceStore.java
@@ -0,0 +1,142 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.session.store;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+
+public interface IClientPersistenceStore {
+
+	public enum DEBUG_DETAILS {
+		SIZE
+	}
+	
+	/**
+	 * called upon start of the session cache
+	 */
+	public abstract void clearCache();
+
+	/**
+	 * 
+	 * @param streamId
+	 * @param rcl
+	 */
+	public abstract void put(String streamId, Client rcl);
+	
+	/**
+	 * 
+	 * @param server
+	 * @param streamId
+	 * @return
+	 */
+	public boolean containsKey(Server server, String streamId);
+
+	/**
+	 * by server and publicSID
+	 * 
+	 * @param server
+	 * @param streamId
+	 * @return will return null if the client does not exist in the list
+	 */
+	public abstract Client get(Server server, String streamId);
+
+	/**
+	 * 
+	 * @param server
+	 * @param publicSID
+	 * @return will return an empty list if nothing available
+	 */
+	public abstract List<Client> getClientsByPublicSID(Server server,
+			String publicSID);
+
+	/**
+	 * Searches for the publicSID across all servers
+	 * 
+	 * @param publicSID
+	 * @return will return a map with the serverId as key and the RoomClients as list in the value
+	 */
+	public abstract Map<Long, List<Client>> getClientsByPublicSID(
+			String publicSID);
+
+	public abstract Collection<Client> getClients();
+	
+	/**
+	 * get all clients by a specific {@link Server}
+	 * 
+	 * @param server
+	 * @return will return an empty map if nothing available
+	 */
+	public abstract Collection<Client> getClientsByServer(Server server);
+
+	/**
+	 * 
+	 * @param server
+	 * @param userId
+	 * @return will return an empty list if nothing available
+	 */
+	public abstract Collection<Client> getClientsByUserId(Server server, Long userId);
+
+	/**
+	 * 
+	 * We ignore the server here, cause ONE room can only be on ONE server and often we don't know where.
+	 * 
+	 * @param roomId
+	 * @return will return an empty map if nothing available
+	 */
+	public abstract List<Client> getClientsByRoomId(Long roomId);
+
+	public abstract void remove(Server server, String streamId);
+
+	public abstract int size();
+
+	public abstract int sizeByServer(Server server);
+
+	public abstract Collection<Client> values();
+	
+	/**
+	 * Get some session statistics
+	 * 
+	 * @param detailLevel
+	 * @return
+	 */
+	public abstract String getDebugInformation(List<DEBUG_DETAILS> detailLevel);
+
+	/**
+	 * returns a list of roomIds (unique) that are currently active on the given server
+	 * In case the session is stored in the memory (no-cluster setup) it will always 
+	 * return simply all active roomIds
+	 * 
+	 * @param server
+	 * @return
+	 */
+	public abstract List<Long> getRoomsIdsByServer(Server server);
+
+	/**
+	 * if database cache + cluster is enabled, the server object will be loaded 
+	 * into the client
+	 * 
+	 * @return
+	 */
+	public abstract Collection<Client> getClientsWithServer();
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/apache/openmeetings/util/LinkHelper.java b/src/main/java/org/apache/openmeetings/util/LinkHelper.java
new file mode 100644
index 0000000..c58cb72
--- /dev/null
+++ b/src/main/java/org/apache/openmeetings/util/LinkHelper.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import static org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
+
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.user.User.Type;
+
+public class LinkHelper {
+	
+	public static String getInvitationLink(String baseUrl, Invitation i) {
+		String link = baseUrl;
+		if (link == null) {
+			return null;
+		}
+		if (i.getRoom() != null) {
+			if (i.getInvitee().getType() == Type.contact) {
+				link += "?invitationHash=" + i.getHash();
+		
+				if (i.getInvitee().getLanguage_id() > 0) {
+					link += "&language=" + i.getInvitee().getLanguage_id().toString();
+				}
+			} else {
+				link = getRoomUrlFragment(i.getRoom().getRooms_id()).getLink(baseUrl);
+			}
+		}
+		return link;
+	}
+}
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
new file mode 100644
index 0000000..21aff26
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
@@ -0,0 +1,96 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=com.ibm.db2.jcc.DB2Driver
+					, Url=jdbc:db2://localhost:50000/openmeet
+					, MaxActive=100
+					, MaxWait=10000
+					, TestOnBorrow=true
+					, poolPreparedStatements=true
+					, Username=db2admin
+					, Password=admin" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<property name="openjpa.QueryCache" value="true" />
+			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
new file mode 100644
index 0000000..a9b9efa
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
@@ -0,0 +1,96 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=org.apache.derby.jdbc.ClientDriver,
+                                  Url=jdbc:derby:openmeetings;create=true, 
+                                  create=true,
+                                  MaxActive=100, 
+                                  MaxWait=10000, 
+                                  TestOnBorrow=true, 
+                                  Username=user, 
+                                  Password=secret" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<property name="openjpa.QueryCache" value="true" />
+			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
new file mode 100644
index 0000000..0372b7f
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
@@ -0,0 +1,92 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
+					, Url=jdbc:sqlserver://localhost:1433;databaseName=openmeetings
+					, Username=Username
+					, Password=Password" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<!-- QueryCache disabled due to changes outside of JPA doesn't take effect with caching -->
+			<property name="openjpa.QueryCache" value="false" />
+			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
new file mode 100644
index 0000000..055a2c7
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
@@ -0,0 +1,97 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=com.mysql.jdbc.Driver
+					, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000
+					, MaxActive=100
+					, MaxWait=10000
+					, TestOnBorrow=true
+					, poolPreparedStatements=true
+					, Username=root
+					, Password=" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<!-- QueryCache disabled due to changes outside of JPA doesn't take effect with caching -->
+			<property name="openjpa.QueryCache" value="false" />
+			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
new file mode 100644
index 0000000..5d48430
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
@@ -0,0 +1,96 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=oracle.jdbc.driver.OracleDriver
+							, Url=jdbc:oracle:thin:@localhost:1521:openmeetings 
+							, create=true
+							, MaxActive=100 
+							, MaxWait=10000 
+							, TestOnBorrow=true 
+							, Username=SYSTEM 
+							, Password=admin" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<property name="openjpa.QueryCache" value="true" />
+			<property name="openjpa.jdbc.DBDictionary" value="oracle(UseTriggersForAutoAssign=true, MaxAutoAssignNameLength=28, BatchLimit=100)" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml b/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
new file mode 100644
index 0000000..ec012b4
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
@@ -0,0 +1,95 @@
+<?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.
+  
+-->
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0">
+	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+		<class>org.apache.openmeetings.db.entity.basic.Configuration</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
+		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
+		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
+		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
+		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
+		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
+		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
+		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
+		<class>org.apache.openmeetings.db.entity.server.Server</class>
+		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
+		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
+		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
+		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
+		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
+		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
+		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
+		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
+		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
+		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
+		<class>org.apache.openmeetings.db.entity.room.PollType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
+		<class>org.apache.openmeetings.db.entity.room.Client</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
+		<class>org.apache.openmeetings.db.entity.room.Room</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
+		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
+		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
+		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
+		<class>org.apache.openmeetings.db.entity.user.Address</class>
+		<class>org.apache.openmeetings.db.entity.user.State</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
+		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
+		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
+		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
+		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
+		<class>org.apache.openmeetings.db.entity.user.User</class>
+		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
+		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
+		<class>org.apache.openmeetings.db.entity.server.OAuthServer</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<properties>
+			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
+			<property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+			<property name="openjpa.ConnectionProperties"
+				value="DriverClassName=org.postgresql.Driver
+					, Url=jdbc:postgresql://localhost:5432/openmeetings
+					, MaxActive=100
+					, MaxWait=10000
+					, TestOnBorrow=true
+					, poolPreparedStatements=true
+					, Username=postgres
+					, Password=1" />
+			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
+			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
+			<property name="openjpa.DataCache" value="true" />
+			<property name="openjpa.QueryCache" value="true" />
+			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>
diff --git a/src/main/webapp/WEB-INF/classes/logback-config.xml b/src/main/webapp/WEB-INF/classes/logback-config.xml
new file mode 100644
index 0000000..905ba6c
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/logback-config.xml
@@ -0,0 +1,67 @@
+<?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.
+  
+-->
+
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<contextName>${current_openmeetings_context_name}</contextName>
+
+	<jmxConfigurator contextName="${current_openmeetings_context_name}" />
+
+	<appender name="FLOG2" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/${current_openmeetings_context_name}.log</File>
+		<Append>false</Append>
+		<Encoding>UTF-8</Encoding>
+		<BufferedIO>false</BufferedIO>
+		<ImmediateFlush>true</ImmediateFlush>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<Pattern>
+				%5p %d{MM-dd HH:mm:ss.SSS } %c{15}:%L [%t] - %m%n
+			</Pattern>
+		</layout>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily rollover -->
+			<fileNamePattern>log\${current_openmeetings_context_name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- or whenever the file size reaches 100MB -->
+				<maxFileSize>50MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- keep 30 days' worth of history -->
+			<maxHistory>50</maxHistory>
+		</rollingPolicy>
+	</appender>
+	<appender name="CONSOLE2" class="ch.qos.logback.core.ConsoleAppender">
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %F %r %L %c [%t] - %m%n</pattern>
+		</layout>
+	</appender>
+	<logger name="org.apache.axis2" level="ERROR" />
+	<logger name="com.mchange.v2" level="ERROR" />
+	<logger name="org.apache.axiom" level="ERROR" />
+	<logger name="org.apache.commons.httpclient" level="ERROR" />
+	<logger name="de.hunsicker.jalopy.io" level="ERROR" />
+	<logger name="org.apache.axis2.enterprise" level="ERROR" />
+	<logger name="httpclient.wire.header" level="ERROR" />
+	<logger name="org.apache.directory" level="INFO" />
+	<logger name="org.apache.mina.filter.ssl.SslFilter" level="ERROR" />
+	<root level="DEBUG">
+		<appender-ref ref="FLOG2" />
+		<appender-ref ref="CONSOLE2" />
+	</root>
+</configuration>
diff --git a/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
new file mode 100644
index 0000000..d423766
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -0,0 +1,314 @@
+<?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.
+  
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	xmlns:mvc="http://www.springframework.org/schema/mvc"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
+		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"
+		>
+	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
+		<property name="persistenceUnitName" value="openmeetings" />
+	</bean>
+	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
+	</bean>
+
+	<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+
+	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
+	<!-- Configures the @Controller programming model -->
+	<mvc:annotation-driven />
+
+	<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
+	<context:annotation-config />
+	<context:component-scan base-package="org.apache.openmeetings" />
+
+	<!-- New Class for the Streaming Handlers -->
+	<bean id="web.handler" class="org.apache.openmeetings.remote.red5.ScopeApplicationAdapter" />
+
+	<!-- Session configuration start -->
+
+	<bean id="openmeetings.SessionManager" class="org.apache.openmeetings.session.SessionManager">
+		<property name="cache">
+			<ref bean="openmeetings.HashMapStore" />  <!-- Memory based session cache by default -->
+			<!-- The following section should be used in clustering mode
+			<ref bean="openmeetings.DatabaseStore" />
+			-->
+		</property>
+	</bean>
+	<bean id="openmeetings.EmoticonsManager" class="org.apache.openmeetings.data.whiteboard.EmoticonsManager" />
+
+	<!-- Singletons for memory based cache -->
+	<bean id="openmeetings.HashMapStore" scope="singleton" class="org.apache.openmeetings.session.store.HashMapStore" />
+	<bean id="whiteBoardObjectListManagerById" scope="singleton"
+		class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectListManagerById" />
+	<!-- WhiteBoardObjectSyncManager can stay in the memory, even on cluster! -->
+	<bean id="whiteBoardObjectSyncManager" scope="singleton" class="org.apache.openmeetings.data.whiteboard.WhiteBoardObjectSyncManager" />
+
+	<!-- Database cache -->
+	<bean id="openmeetings.DatabaseStore" class="org.apache.openmeetings.session.store.DatabaseStore" />
+
+	<bean id="openmeetings.ServerUtil" scope="singleton" class="org.apache.openmeetings.session.ServerUtil">
+		<!-- Need to be uncommented and set to the real ID if in cluster mode <property name="serverId" value="1" /> -->
+	</bean>
+
+	<!-- Cluster related config start -->
+
+	<!-- Start of Services -->
+	<bean id="xmlcrm.service" class="org.apache.openmeetings.remote.MainService" />
+	<bean id="printservice.service" class="org.apache.openmeetings.remote.PrintService" />
+	<bean id="pollservice.service" class="org.apache.openmeetings.remote.PollService" />
+	<bean id="languageservice.service" class="org.apache.openmeetings.remote.LanguageService" />
+	<bean id="invitationservice.service" class="org.apache.openmeetings.remote.InvitationService" />
+	<bean id="whiteboardservice.service" class="org.apache.openmeetings.remote.WhiteBoardService" />
+	<bean id="userservice.service" class="org.apache.openmeetings.remote.UserService" />
+	<bean id="fileservice.service" class="org.apache.openmeetings.remote.ConferenceLibrary" />
+	<bean id="openmeetings.FileProcessor" class="org.apache.openmeetings.data.file.FileProcessor" />
+	<bean id="openmeetings.FlvExplorerConverter" class="org.apache.openmeetings.converter.FlvExplorerConverter" />
+	<bean id="errorservice.service" class="org.apache.openmeetings.remote.ErrorService" />
+	<bean id="conferenceservice.service" class="org.apache.openmeetings.remote.ConferenceService" />
+	<bean id="chatservice.service" class="org.apache.openmeetings.remote.ChatService" />
+	<bean id="flvrecorderservice.service" class="org.apache.openmeetings.remote.FLVRecorderService" />
+	<bean id="mobile.service" class="org.apache.openmeetings.remote.MobileService" />
+	<bean id="openmeetings.FlvRecorderConverterTask" class="org.apache.openmeetings.data.flvrecord.converter.FlvRecorderConverterTask" />
+	<bean id="openmeetings.FlvInterviewConverterTask" class="org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverterTask" />
+	<bean id="openmeetings.FlvInterviewConverter" class="org.apache.openmeetings.converter.FlvInterviewConverter" />
+	<bean id="openmeetings.FlvRecorderConverter" class="org.apache.openmeetings.converter.FlvRecorderConverter" />
+	<bean id="openmeetings.SlaveHTTPConnectionManager" class="org.apache.openmeetings.cluster.SlaveHTTPConnectionManager" />
+
+	<bean id="openmeetings.SessionClearJob" class="org.apache.openmeetings.quartz.scheduler.SessionClearJob" />
+	<bean id="sessionClearJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject">
+			<ref bean="openmeetings.SessionClearJob" />
+		</property>
+		<property name="targetMethod">
+			<value>doIt</value>
+		</property>
+		<property name="concurrent" value="false" />
+	</bean>
+	<bean id="triggerSessionClear" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+		<property name="jobDetail">
+			<!-- see the example of method invoking job above -->
+			<ref bean="sessionClearJob" />
+		</property>
+		<property name="startDelay">
+			<!-- 5 seconds -->
+			<value>5000</value>
+		</property>
+		<property name="repeatInterval">
+			<!-- repeat every 300 seconds == 5 minutes -->
+			<value>300000</value>
+		</property>
+	</bean>
+
+	<bean id="openmeetings.MeetingReminderJob" class="org.apache.openmeetings.quartz.scheduler.MeetingReminderJob" />
+	<bean id="meetingReminderClear" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject">
+			<ref bean="openmeetings.MeetingReminderJob" />
+		</property>
+		<property name="targetMethod">
+			<value>doIt</value>
+		</property>
+		<property name="concurrent" value="false" />
+	</bean>
+	<bean id="triggerMeetingReminder" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+		<property name="jobDetail">
+			<!-- see the example of method invoking job above -->
+			<ref bean="meetingReminderClear" />
+		</property>
+		<property name="startDelay">
+			<!-- 5 seconds -->
+			<value>5000</value>
+		</property>
+		<property name="repeatInterval">
+			<!-- repeat every 100 seconds -->
+			<value>100000</value>
+		</property>
+	</bean>
+	<bean id="testSetupCleanupJob" class="org.apache.openmeetings.quartz.scheduler.TestSetupCleanupJob" />
+	<bean id="testSetupCleanup" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject">
+			<ref bean="testSetupCleanupJob" />
+		</property>
+		<property name="targetMethod">
+			<value>doIt</value>
+		</property>
+		<property name="concurrent" value="false" />
+	</bean>
+	<bean id="triggerTestSetupCleanup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+		<property name="jobDetail">
+			<ref bean="testSetupCleanup" />
+		</property>
+		<property name="startDelay">
+			<value>1800000</value> <!-- 30 minutes -->
+		</property>
+		<property name="repeatInterval">
+			<value>1800000</value> <!-- 30 minutes -->
+		</property>
+	</bean>
+
+	<!-- Mail related jobs -->
+	<bean id="mailHandler" class="org.apache.openmeetings.mail.MailHandler" />
+	<bean id="resetSendingMailStatus" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject">
+			<ref bean="mailHandler" />
+		</property>
+		<property name="targetMethod">
+			<value>resetSendingStatus</value>
+		</property>
+		<property name="concurrent" value="false" />
+	</bean>
+	<bean id="triggerResetSendingMailStatus" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+		<property name="jobDetail">
+			<ref bean="resetSendingMailStatus" />
+		</property>
+		<property name="startDelay">
+			<value>60000</value> <!-- 1 minute -->
+		</property>
+		<property name="repeatInterval">
+			<value>900000</value> <!-- 15 minutes -->
+		</property>
+	</bean>
+	<bean id="sendMails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
+		<property name="targetObject">
+			<ref bean="mailHandler" />
+		</property>
+		<property name="targetMethod">
+			<value>sendMails</value>
+		</property>
+		<property name="concurrent" value="false" />
+	</bean>
+	<bean id="triggerSendMails" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
+		<property name="jobDetail">
+			<ref bean="sendMails" />
+		</property>
+		<property name="startDelay">
+			<value>60000</value> <!-- 1 minute -->
+		</property>
+		<property name="repeatInterval">
+			<value>60000</value> <!-- 1 minute -->
+		</property>
+	</bean>
+	
+	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
+		<property name="triggers">
+			<list>
+				<ref bean="triggerSessionClear" />
+				<ref bean="triggerMeetingReminder" />
+				<ref bean="triggerTestSetupCleanup" />
+				<ref bean="triggerResetSendingMailStatus" />
+				<ref bean="triggerSendMails" />
+			</list>
+		</property>
+	</bean>
+	<!-- End of Services -->
+
+	<!-- Interface Transactional -->
+	<bean id="appointmentReminderTypDaoImpl" class="org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao" />
+	<bean id="appointmentCategoryDaoImpl" class="org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao" />
+	<bean id="roommanagement" class="org.apache.openmeetings.data.conference.RoomManager" />
+	<bean id="roomDao" class="org.apache.openmeetings.db.dao.room.RoomDao"/>
+	<bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao">
+	<!--  Should be uncommented and updated with real values for Asterisk
+		<constructor-arg><value>127.0.0.1</value></constructor-arg>
+		<constructor-arg><value>5038</value></constructor-arg>
+		<constructor-arg><value>openmeetings</value></constructor-arg>
+		<constructor-arg><value>12345</value></constructor-arg>
+	 -->
+	</bean>
+	<bean id="invitationDao" class="org.apache.openmeetings.db.dao.room.InvitationDao" />
+	<bean id="organisationDao" class="org.apache.openmeetings.db.dao.user.OrganisationDao" />
+	<bean id="organisationUserDao" class="org.apache.openmeetings.db.dao.user.OrganisationUserDao" />
+	<bean id="salutationmanagement" class="org.apache.openmeetings.db.dao.user.SalutationDao" />
+	<bean id="errorManagement" class="org.apache.openmeetings.db.dao.basic.ErrorDao" />
+	<bean id="navimanagement" class="org.apache.openmeetings.db.dao.basic.NavigationDao" />
+	<bean id="pollManagement" class="org.apache.openmeetings.db.dao.room.PollDao" />
+	<bean id="statemanagement" class="org.apache.openmeetings.db.dao.user.StateDao" />
+	<bean id="fieldLanguageDaoImpl" class="org.apache.openmeetings.db.dao.label.FieldLanguageDao" />
+	<bean id="fieldValueDaoImpl" class="org.apache.openmeetings.db.dao.label.FieldValueDao" />
+	<bean id="fieldLanguagesValuesDAO" class="org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao" />
+	<bean id="fieldmanagment" class="org.apache.openmeetings.data.basic.FieldManager" />
+	<bean id="configurationDaoImpl" class="org.apache.openmeetings.db.dao.basic.ConfigurationDao" />
+	<bean id="appointmentDao" class="org.apache.openmeetings.db.dao.calendar.AppointmentDao" />
+	<bean id="appointmentLogic" class="org.apache.openmeetings.data.calendar.management.AppointmentLogic" />
+	<bean id="sessionManagement" class="org.apache.openmeetings.db.dao.server.SessiondataDao" />
+	<bean id="userManagement" class="org.apache.openmeetings.data.user.UserManager" />
+	<bean id="roomModeratorsDao" class="org.apache.openmeetings.db.dao.room.RoomModeratorsDao" />
+	<bean id="roomOrganisationDao" class="org.apache.openmeetings.db.dao.room.RoomOrganisationDao"/>
+	<bean id="roomTypeDao" class="org.apache.openmeetings.db.dao.room.RoomTypeDao" />
+	<bean id="conferenceLogDao" class="org.apache.openmeetings.db.dao.log.ConferenceLogDao" />
+	<bean id="conferenceLogTypeDao" class="org.apache.openmeetings.db.dao.log.ConferenceLogTypeDao" />
+	<bean id="emailManagement" class="org.apache.openmeetings.data.user.EmailManager" />
+	<bean id="fileExplorerItemDao" class="org.apache.openmeetings.db.dao.file.FileExplorerItemDao" />
+	<bean id="flvRecordingDao" class="org.apache.openmeetings.db.dao.record.FlvRecordingDao" />
+	<bean id="flvRecordingLogDao" class="org.apache.openmeetings.db.dao.record.FlvRecordingLogDao" />
+	<bean id="flvRecordingMetaDataDao" class="org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao" />
+	<bean id="flvRecordingMetaDeltaDao" class="org.apache.openmeetings.db.dao.record.FlvRecordingMetaDeltaDao" />
+	<bean id="ldapConfigDao" class="org.apache.openmeetings.db.dao.server.LdapConfigDao" />
+	<bean id="invitationManagement" class="org.apache.openmeetings.data.conference.InvitationManager" />
+	<bean id="meetingMemberDao" class="org.apache.openmeetings.db.dao.calendar.MeetingMemberDao" />
+	<bean id="privateMessageFolderDao" class="org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao" />
+	<bean id="privateMessagesDao" class="org.apache.openmeetings.db.dao.user.PrivateMessagesDao" />
+	<bean id="soapLoginDao" class="org.apache.openmeetings.db.dao.server.SOAPLoginDao" />
+	<bean id="userContactsDao" class="org.apache.openmeetings.db.dao.user.UserContactsDao" />
+	<bean id="userDao" class="org.apache.openmeetings.db.dao.user.UserDao" />
+	<bean id="serverDao" class="org.apache.openmeetings.db.dao.server.ServerDao" />
+	<bean id="chatDao" class="org.apache.openmeetings.db.dao.basic.ChatDao" />
+	<bean id="clientDao" class="org.apache.openmeetings.db.dao.room.ClientDao" />
+	<bean id="mailMessageDao" class="org.apache.openmeetings.db.dao.basic.MailMessageDao" />
+	<bean id="oauth2Dao" class="org.apache.openmeetings.db.dao.server.OAuth2Dao" />
+
+	<!-- No Interface -->
+	<bean id="generateImage" class="org.apache.openmeetings.converter.GenerateImage" />
+	<bean id="generateThumbs" class="org.apache.openmeetings.converter.GenerateThumbs" />
+	<bean id="generatePDF" class="org.apache.openmeetings.documents.GeneratePDF" />
+	<bean id="smsHandler" class="org.apache.openmeetings.mail.SMSHandler" />
+	<bean id="importInitvalues" class="org.apache.openmeetings.installation.ImportInitvalues" />
+	<bean id="languageImport" class="org.apache.openmeetings.backup.LanguageImport" />
+	<bean id="libraryWmlLoader" class="org.apache.openmeetings.documents.LibraryWmlLoader" />
+	<bean id="generateSWF" class="org.apache.openmeetings.converter.GenerateSWF" />
+	<bean id="fileUtils" class="org.apache.openmeetings.data.file.FileUtils" />
+	<bean id="ldapLoginManagement" class="org.apache.openmeetings.ldap.LdapLoginManagement" />
+	<bean id="timezoneUtil" class="org.apache.openmeetings.db.util.TimezoneUtil" />
+	<bean id="whiteboardManagement" class="org.apache.openmeetings.data.whiteboard.WhiteboardManager" />
+	<bean id="backupExport" class="org.apache.openmeetings.backup.BackupExport" />
+	<bean id="backupImport" class="org.apache.openmeetings.backup.BackupImport" />
+
+	<!-- Thread Executor -->
+	<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
+		<property name="corePoolSize" value="5" />
+		<property name="maxPoolSize" value="10" />
+		<property name="queueCapacity" value="25" />
+	</bean>
+
+	<!-- Axis2 Service Proxy's -->
+	<bean id="userWebService" class="org.apache.openmeetings.axis.services.UserWebService" />
+	<bean id="roomWebService" class="org.apache.openmeetings.axis.services.RoomWebService" />
+	<bean id="fileWebService" class="org.apache.openmeetings.axis.services.FileWebService" />
+	<bean id="calendarWebService" class="org.apache.openmeetings.axis.services.CalendarWebService" />
+	<bean id="jabberWebService" class="org.apache.openmeetings.axis.services.JabberWebService" />
+	<bean id="serverWebService" class="org.apache.openmeetings.axis.services.ServerWebService" />
+</beans>
diff --git a/src/main/webapp/WEB-INF/classes/rebel-remote.xml b/src/main/webapp/WEB-INF/classes/rebel-remote.xml
new file mode 100644
index 0000000..0dce654
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/rebel-remote.xml
@@ -0,0 +1,24 @@
+<?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.
+  
+-->
+<rebel-remote>
+	<id>Openmeetings</id>
+	<url>http://localhost:5080/openmeetings/</url>
+</rebel-remote>
diff --git a/src/main/webapp/WEB-INF/classes/rebel.xml b/src/main/webapp/WEB-INF/classes/rebel.xml
new file mode 100644
index 0000000..a9a5149
--- /dev/null
+++ b/src/main/webapp/WEB-INF/classes/rebel.xml
@@ -0,0 +1,30 @@
+<?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.
+  
+-->
+<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">
+	<classpath>
+		<dir name="${project.root}/build/classes/eclipse"/>
+	</classpath>
+	<web>
+		<link target="/">
+			<dir name="${project.root}/main/webapp"/>
+		</link>
+	</web>
+</application>
diff --git a/src/main/webapp/WEB-INF/conf/axis2.xml b/src/main/webapp/WEB-INF/conf/axis2.xml
new file mode 100644
index 0000000..a6620f6
--- /dev/null
+++ b/src/main/webapp/WEB-INF/conf/axis2.xml
@@ -0,0 +1,531 @@
+<!--
+  ~ 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.
+  -->
+
+<axisconfig name="AxisJava2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="axis2.xsd">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment">true</parameter>
+    <parameter name="hotupdate">false</parameter>
+    <parameter name="enableMTOM">false</parameter>
+    <parameter name="enableSwA">false</parameter>
+
+    <!--Uncomment if you want to enable file caching for attachments -->
+    <!--parameter name="cacheAttachments">true</parameter>
+    <parameter name="attachmentDIR"></parameter>
+    <parameter name="sizeThreshold">4000</parameter-->
+
+    <parameter name="EnableChildFirstClassLoading">false</parameter>
+
+    <!--
+    The exposeServiceMetadata parameter decides whether the metadata (WSDL, schema, policy) of
+    the services deployed on Axis2 should be visible when ?wsdl, ?wsdl2, ?xsd, ?policy requests
+    are received.
+    This parameter can be defined in the axi2.xml file, in which case this will be applicable
+    globally, or in the services.xml files, in which case, it will be applicable to the
+    Service groups and/or services, depending on the level at which the parameter is declared.
+    This value of this parameter defaults to true.
+    -->
+    <parameter name="exposeServiceMetadata">true</parameter>
+
+
+    <!--Uncomment if you want to plugin your own attachments lifecycle implementation -->
+    <!--<attachmentsLifecycleManager class="org.apache.axiom.attachments.lifecycle.impl.LifecycleManagerImpl"/>-->
+
+
+    <!--Uncomment if you want to enable the reduction of the in-memory cache of WSDL definitions -->
+    <!--In some server environments, the available memory heap is limited and can fill up under load -->
+    <!--Since in-memory copies of WSDL definitions can be large, some steps can be taken-->
+    <!--to reduce the memory needed for the cached WSDL definitions. -->
+    <!--parameter name="reduceWSDLMemoryCache">true</parameter-->
+
+    <!--This will give out the timout of the configuration contexts, in milliseconds-->
+    <parameter name="ConfigContextTimeoutInterval">30000</parameter>
+
+    <!--During a fault, stack trace can be sent with the fault message. The following flag will control -->
+    <!--that behavior.-->
+    <parameter name="sendStacktraceDetailsWithFaults">false</parameter>
+
+    <!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
+    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+    <!--is set, then Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+    <parameter name="DrillDownToRootCauseForFaultReason">false</parameter>
+
+    <parameter name="userName">admin</parameter>
+    <parameter name="password">axis2</parameter>
+
+    <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
+    <!--ServicesDirectory only works on the following cases-->
+    <!---File based configurator and in that case the value should be a file URL (http:// not allowed)-->
+    <!---When creating URL Based configurator with URL file:// -->
+    <!--- War based configurator with expanded case , -->
+
+    <!--All the other scenarios it will be ignored.-->
+    <!--<parameter name="ServicesDirectory">service</parameter>-->
+    <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
+    <!--<parameter name="ModulesDirectory">modules</parameter>-->
+
+
+    <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+    <!--root which can configured using the following contextRoot parameter-->
+    <!--<parameter name="contextRoot">axis2</parameter>-->
+
+    <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguiush those endpoints-->
+    <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this -->
+    <!--context path to proper Axis2 servlets-->
+    <!--<parameter name="servicePath">services</parameter>-->
+    <!--<parameter name="restPath">rest</parameter>-->
+
+    <!-- Following parameter will completely disable REST handling in Axis2-->
+    <parameter name="disableREST" locked="false">false</parameter>
+
+    <!-- Following parameter will suppress generation of SOAP 1.2 bindings in auto-generated WSDL files -->
+    <parameter name="disableSOAP12" locked="true">false</parameter>
+
+    <!-- ================================================= -->
+    <!-- Deployers -->
+    <!-- ================================================= -->
+
+    <!--Service deployer , this will alow users to deploy AAR or exploded AAR as axis2 services-->
+    <deployer extension=".aar" directory="services" class="org.apache.axis2.deployment.ServiceDeployer">
+        <serviceBuilderExtension name ="jwsbuilderExt" class="org.apache.axis2.jaxws.framework.JAXWSServiceBuilderExtension"/>
+        <serviceBuilderExtension name ="wsdlbuilderExt" class="org.apache.axis2.deployment.WSDLServiceBuilderExtension"/>
+    </deployer>
+    
+    <!--POJO deployer , this will alow users to drop .class file and make that into a service-->
+    <deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
+    <deployer extension=".jar" directory="servicejars"
+              class="org.apache.axis2.jaxws.framework.JAXWSDeployer"/>
+    <deployer extension=".jar" directory="transports"
+              class="org.apache.axis2.deployment.TransportDeployer"/>
+
+    <!--CORBA deployer , this will alow users to invoke remote CORBA services through Axis2-->
+    <!--<deployer extension=".xml" directory="corba" class="org.apache.axis2.corba.deployer.CorbaDeployer"/>-->
+
+    <!--<deployer extension=".jsa" directory="rmiservices" class="org.apache.axis2.rmi.deploy.RMIServiceDeployer"/>-->
+
+
+    <!-- Following parameter will set the host name for the epr-->
+    <!--<parameter name="hostname" locked="true">myhost.com</parameter>-->
+
+    <!-- If you have a front end host which exposes this webservice using a different public URL  -->
+    <!-- use this parameter to override autodetected url -->
+    <!--<parameter name="httpFrontendHostUrl">https://someotherhost/context</parameter>-->
+
+    <!--By default, JAXWS services are created by reading annotations. WSDL and schema are generated-->
+    <!--using a separate WSDL generator only when ?wsdl is called. Therefore, even if you engage-->
+    <!--policies etc.. to AxisService, it doesn't appear in the WSDL. By setting the following property-->
+    <!--to true, you can create the AxisService using the generated WSDL and remove the need for a-->
+    <!--WSDL generator. When ?wsdl is called, WSDL is generated in the normal way.-->
+    <parameter name="useGeneratedWSDLinJAXWS">false</parameter>
+
+    <!--    The way of adding listener to the system-->
+    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->
+    <!--        <parameter name="RSS_URL">http://127.0.0.1/rss</parameter>-->
+    <!--    </listener>-->
+
+    <threadContextMigrators>
+        <threadContextMigrator listId="JAXWS-ThreadContextMigrator-List"
+                               class="org.apache.axis2.jaxws.addressing.migrator.EndpointContextMapMigrator"/>
+    </threadContextMigrators>
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!--This is the default MessageReceiver for the system , if you want to have MessageReceivers for -->
+    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+    <!--any operation -->
+    <!--Note : You can override this for a particular service by adding the same element with your requirement-->
+    <messageReceivers>        
+        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
+                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
+                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+    </messageReceivers>
+
+    <!-- ================================================= -->
+    <!-- Message Formatter -->
+    <!-- ================================================= -->
+    <!--Following content type to message formatter mapping can be used to implement support for different message -->
+    <!--format  serialization in Axis2. These message formats are expected to be resolved based on the content type. -->
+    <messageFormatters>
+        <messageFormatter contentType="application/x-www-form-urlencoded"
+                          class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
+        <messageFormatter contentType="multipart/form-data"
+                          class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
+        <messageFormatter contentType="application/xml"
+                          class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
+        <messageFormatter contentType="text/xml"
+                          class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
+        <messageFormatter contentType="application/soap+xml"
+                          class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
+    </messageFormatters>
+
+    <!-- ================================================= -->
+    <!-- Message Builders -->
+    <!-- ================================================= -->
+    <!--Following content type to builder mapping can be used to implement support for different message -->
+    <!--formats in Axis2. These message formats are expected to be resolved based on the content type. -->
+    <messageBuilders>
+        <messageBuilder contentType="application/xml"
+                        class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
+        <messageBuilder contentType="application/x-www-form-urlencoded"
+                        class="org.apache.axis2.builder.XFormURLEncodedBuilder"/>
+        <messageBuilder contentType="multipart/form-data"
+                        class="org.apache.axis2.builder.MultipartFormDataBuilder"/>
+    </messageBuilders>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http"
+                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port">8080</parameter>
+        <!-- Here is the complete list of supported parameters (see example settings further below):
+            port: the port to listen on (default 6060)
+            hostname:  if non-null, url prefix used in reply-to endpoint references                                 (default null)
+            originServer:  value of http Server header in outgoing messages                                         (default "Simple-Server/1.1")
+            requestTimeout:  value in millis of time that requests can wait for data                                (default 20000)
+            requestTcpNoDelay:  true to maximize performance and minimize latency                                   (default true)
+                                false to minimize bandwidth consumption by combining segments
+            requestCoreThreadPoolSize:  number of threads available for request processing (unless queue fills up)  (default 25)
+            requestMaxThreadPoolSize:  number of threads available for request processing if queue fills up         (default 150)
+                                       note that default queue never fills up:  see HttpFactory
+            threadKeepAliveTime:  time to keep threads in excess of core size alive while inactive                  (default 180)
+                                  note that no such threads can exist with default unbounded request queue
+            threadKeepAliveTimeUnit:  TimeUnit of value in threadKeepAliveTime (default SECONDS)                    (default SECONDS)
+        -->
+        <!-- <parameter name="hostname">http://www.myApp.com/ws</parameter> -->
+        <!-- <parameter name="originServer">My-Server/1.1</parameter>           -->
+        <!-- <parameter name="requestTimeout">10000</parameter>                   -->
+        <!-- <parameter name="requestTcpNoDelay">false</parameter>                   -->
+        <!-- <parameter name="requestCoreThreadPoolSize">50</parameter>                      -->
+        <!-- <parameter name="requestMaxThreadPoolSize">100</parameter>                     -->
+        <!-- <parameter name="threadKeepAliveTime">240000</parameter>                  -->
+        <!-- <parameter name="threadKeepAliveTimeUnit">MILLISECONDS</parameter>            -->
+    </transportReceiver>
+
+    <!-- This is where you'd put custom transports.  See the transports project -->
+    <!-- for more.  http://ws.apache.org/commons/transport                      -->
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="local"
+                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding">chunked</parameter>
+
+        <!-- If following is set to 'true', optional action part of the Content-Type will not be added to the SOAP 1.2 messages -->
+        <!--  <parameter name="OmitSOAP12Action">true</parameter>  -->
+    </transportSender>
+
+    <transportSender name="https"
+                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL">HTTP/1.1</parameter>
+        <parameter name="Transfer-Encoding">chunked</parameter>
+    </transportSender>
+
+    <!-- Please enable this if you need the java transport -->
+    <!-- <transportSender name="java"
+                     class="org.apache.axis2.transport.java.JavaTransportSender"/> -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Comment this to disable Addressing -->
+    <module ref="addressing"/>
+
+    <!--Configuring module , providing parameters for modules whether they refer or not-->
+    <!--<moduleConfig name="addressing">-->
+    <!--<parameter name="addressingPara">N/A</parameter>-->
+    <!--</moduleConfig>-->
+
+    <!-- ================================================= -->
+    <!-- Clustering  -->
+    <!-- ================================================= -->
+    <!--
+     To enable clustering for this node, set the value of "enable" attribute of the "clustering"
+     element to "true". The initialization of a node in the cluster is handled by the class
+     corresponding to the "class" attribute of the "clustering" element. It is also responsible for
+     getting this node to join the cluster.
+     -->
+    <clustering class="org.apache.axis2.clustering.tribes.TribesClusteringAgent" enable="false">
+
+        <!--
+           This parameter indicates whether the cluster has to be automatically initalized
+           when the AxisConfiguration is built. If set to "true" the initialization will not be
+           done at that stage, and some other party will have to explictly initialize the cluster.
+        -->
+        <parameter name="AvoidInitiation">true</parameter>
+
+        <!--
+           The membership scheme used in this setup. The only values supported at the moment are
+           "multicast" and "wka"
+
+           1. multicast - membership is automatically discovered using multicasting
+           2. wka - Well-Known Address based multicasting. Membership is discovered with the help
+                    of one or more nodes running at a Well-Known Address. New members joining a
+                    cluster will first connect to a well-known node, register with the well-known node
+                    and get the membership list from it. When new members join, one of the well-known
+                    nodes will notify the others in the group. When a member leaves the cluster or
+                    is deemed to have left the cluster, it will be detected by the Group Membership
+                    Service (GMS) using a TCP ping mechanism.
+        -->
+        <parameter name="membershipScheme">multicast</parameter>
+
+        <!--
+         The clustering domain/group. Nodes in the same group will belong to the same multicast
+         domain. There will not be interference between nodes in different groups.
+        -->
+        <parameter name="domain">wso2.carbon.domain</parameter>
+
+        <!--
+           When a Web service request is received, and processed, before the response is sent to the
+           client, should we update the states of all members in the cluster? If the value of
+           this parameter is set to "true", the response to the client will be sent only after
+           all the members have been updated. Obviously, this can be time consuming. In some cases,
+           such this overhead may not be acceptable, in which case the value of this parameter
+           should be set to "false"
+        -->
+        <parameter name="synchronizeAll">true</parameter>
+
+        <!--
+          The maximum number of times we need to retry to send a message to a particular node
+          before giving up and considering that node to be faulty
+        -->
+        <parameter name="maxRetries">10</parameter>
+
+        <!-- The multicast address to be used -->
+        <parameter name="mcastAddress">228.0.0.4</parameter>
+
+        <!-- The multicast port to be used -->
+        <parameter name="mcastPort">45564</parameter>
+
+        <!-- The frequency of sending membership multicast messages (in ms) -->
+        <parameter name="mcastFrequency">500</parameter>
+
+        <!-- The time interval within which if a member does not respond, the member will be
+         deemed to have left the group (in ms)
+         -->
+        <parameter name="memberDropTime">3000</parameter>
+
+        <!--
+           The IP address of the network interface to which the multicasting has to be bound to.
+           Multicasting would be done using this interface.
+        -->
+        <parameter name="mcastBindAddress">127.0.0.1</parameter>
+
+        <!-- The host name or IP address of this member -->
+        <parameter name="localMemberHost">127.0.0.1</parameter>
+
+        <!--
+        The TCP port used by this member. This is the port through which other nodes will
+        contact this member
+         -->
+        <parameter name="localMemberPort">4000</parameter>
+
+        <!--
+        Preserve message ordering. This will be done according to sender order.
+        -->
+        <parameter name="preserveMessageOrder">true</parameter>
+
+        <!--
+        Maintain atmost-once message processing semantics
+        -->
+        <parameter name="atmostOnceMessageSemantics">true</parameter>
+
+        <!--
+        Properties specific to this member
+        -->
+        <parameter name="properties">
+            <property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
+            <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
+        </parameter>
+
+        <!--
+           The list of static or well-known members. These entries will only be valid if the
+           "membershipScheme" above is set to "wka"
+        -->
+        <members>
+            <member>
+                <hostName>127.0.0.1</hostName>
+                <port>4000</port>
+            </member>
+            <member>
+                <hostName>127.0.0.1</hostName>
+                <port>4001</port>
+            </member>
+        </members>
+
+        <!--
+        Enable the groupManagement entry if you need to run this node as a cluster manager.
+        Multiple application domains with different GroupManagementAgent implementations
+        can be defined in this section.
+        -->
+        <groupManagement enable="false">
+            <applicationDomain name="apache.axis2.application.domain"
+                               description="Axis2 group"
+                               agent="org.apache.axis2.clustering.management.DefaultGroupManagementAgent"/>
+        </groupManagement>
+
+        <!--
+           This interface is responsible for handling management of a specific node in the cluster
+           The "enable" attribute indicates whether Node management has been enabled
+        -->
+        <nodeManager class="org.apache.axis2.clustering.management.DefaultNodeManager"
+                         enable="true"/>
+
+        <!--
+           This interface is responsible for handling state replication. The property changes in
+           the Axis2 context hierarchy in this node, are propagated to all other nodes in the cluster.
+
+           The "excludes" patterns can be used to specify the prefixes (e.g. local_*) or
+           suffixes (e.g. *_local) of the properties to be excluded from replication. The pattern
+           "*" indicates that all properties in a particular context should not be replicated.
+
+            The "enable" attribute indicates whether context replication has been enabled
+        -->
+        <stateManager class="org.apache.axis2.clustering.state.DefaultStateManager"
+                      enable="true">
+            <replication>
+                <defaults>
+                    <exclude name="local_*"/>
+                    <exclude name="LOCAL_*"/>
+                </defaults>
+                <context class="org.apache.axis2.context.ConfigurationContext">
+                    <exclude name="local_*"/>
+                </context>
+                <context class="org.apache.axis2.context.ServiceGroupContext">
+                    <exclude name="local_*"/>
+                </context>
+                <context class="org.apache.axis2.context.ServiceContext">
+                    <exclude name="local_*"/>
+                </context>
+            </replication>
+        </stateManager>
+    </clustering>
+
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <phaseOrder type="InFlow">
+        <!--  System predefined phases       -->
+        <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Addressing">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--  System predefined phases       -->
+        <!--   After Postdispatch phase module author or service author can add any phase he want      -->
+        <phase name="OperationInPhase">
+            <handler name="MustUnderstandChecker"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
+                <order phase="OperationInPhase"/>
+            </handler>
+        </phase>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="Addressing">
+            <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+</axisconfig>
+
diff --git a/src/main/webapp/WEB-INF/conf/axis2.xsd b/src/main/webapp/WEB-INF/conf/axis2.xsd
new file mode 100644
index 0000000..df95257
--- /dev/null
+++ b/src/main/webapp/WEB-INF/conf/axis2.xsd
@@ -0,0 +1,267 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <xs:element name="axisconfig">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element ref="parameter"/>
+          <xs:element ref="deployer"/>
+        </xs:choice>
+        <xs:element ref="threadContextMigrators"/>
+        <xs:element ref="messageReceivers"/>
+        <xs:element ref="messageFormatters"/>
+        <xs:element ref="messageBuilders"/>
+        <xs:element ref="transportReceiver"/>
+        <xs:element maxOccurs="unbounded" ref="transportSender"/>
+        <xs:element ref="module"/>
+        <xs:element ref="clustering"/>
+        <xs:element maxOccurs="unbounded" ref="phaseOrder"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="deployer">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="serviceBuilderExtension"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="directory" use="required" type="xs:NCName"/>
+      <xs:attribute name="extension" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="serviceBuilderExtension">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="threadContextMigrators">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="threadContextMigrator"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="threadContextMigrator">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="listId" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageReceivers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageReceiver"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageReceiver">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="mep" use="required" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageFormatters">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageFormatter"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageFormatter">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="contentType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageBuilders">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageBuilder"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageBuilder">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="contentType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="transportReceiver">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="transportSender">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="module">
+    <xs:complexType>
+      <xs:attribute name="ref" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="clustering">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="parameter"/>
+        <xs:element ref="members"/>
+        <xs:element ref="groupManagement"/>
+        <xs:element ref="nodeManager"/>
+        <xs:element ref="stateManager"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="enable" use="required" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="members">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="member"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="member">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="hostName"/>
+        <xs:element ref="port"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="hostName" type="xs:NMTOKEN"/>
+  <xs:element name="port" type="xs:integer"/>
+  <xs:element name="groupManagement">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="applicationDomain"/>
+      </xs:sequence>
+      <xs:attribute name="enable" use="required" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="applicationDomain">
+    <xs:complexType>
+      <xs:attribute name="agent" use="required"/>
+      <xs:attribute name="description" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="nodeManager">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="enable" use="required" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="stateManager">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="replication"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="enable" use="required" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="replication">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="defaults"/>
+        <xs:element maxOccurs="unbounded" ref="context"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="defaults">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="exclude"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="context">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="exclude"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="phaseOrder">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="phase"/>
+      </xs:sequence>
+      <xs:attribute name="type" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="phase">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="handler"/>
+      </xs:sequence>
+      <xs:attribute name="class"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="handler">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="order"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="order">
+    <xs:complexType>
+      <xs:attribute name="phase" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="parameter">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+      </xs:sequence>
+      <xs:attribute name="locked" type="xs:boolean"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="property">
+    <xs:complexType>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="value" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="exclude">
+    <xs:complexType>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/WEB-INF/red5-web.properties b/src/main/webapp/WEB-INF/red5-web.properties
new file mode 100644
index 0000000..518301d
--- /dev/null
+++ b/src/main/webapp/WEB-INF/red5-web.properties
@@ -0,0 +1,17 @@
+#  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.
+webapp.virtualHosts=*,localhost, 127.0.0.1
diff --git a/src/main/webapp/WEB-INF/red5-web.xml b/src/main/webapp/WEB-INF/red5-web.xml
new file mode 100644
index 0000000..b0ef211
--- /dev/null
+++ b/src/main/webapp/WEB-INF/red5-web.xml
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+	
+	<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+	    <property name="location" value="/WEB-INF/red5-web.properties" />
+	</bean>
+	
+	<bean id="web.context" class="org.red5.server.Context" autowire="byType" />
+	
+	<bean id="web.scope" class="org.red5.server.scope.WebScope" init-method="register">
+		<property name="server" ref="red5.server" />
+		<property name="parent" ref="global.scope" />
+		<property name="context" ref="web.context" />
+		<property name="handler" ref="web.handler" />
+		<property name="contextPath" value="${webapp.contextPath}" />
+		<property name="virtualHosts" value="${webapp.virtualHosts}" />
+	</bean>
+
+	<import resource="classes/openmeetings-applicationContext.xml" />
+</beans>
diff --git a/src/main/webapp/WEB-INF/services/version.aar b/src/main/webapp/WEB-INF/services/version.aar
new file mode 100644
index 0000000..4408130
--- /dev/null
+++ b/src/main/webapp/WEB-INF/services/version.aar
Binary files differ
diff --git a/src/main/webapp/WEB-INF/spring-mvc-servlet.xml b/src/main/webapp/WEB-INF/spring-mvc-servlet.xml
new file mode 100644
index 0000000..e98ae5e
--- /dev/null
+++ b/src/main/webapp/WEB-INF/spring-mvc-servlet.xml
@@ -0,0 +1,24 @@
+<?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.
+  
+-->
+<beans	xmlns="http://www.springframework.org/schema/beans"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" 
+/>
diff --git a/src/main/webapp/WEB-INF/velocity.properties b/src/main/webapp/WEB-INF/velocity.properties
new file mode 100644
index 0000000..a885347
--- /dev/null
+++ b/src/main/webapp/WEB-INF/velocity.properties
@@ -0,0 +1,41 @@
+#  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.
+
+#
+# specify three resource loaders to use
+#
+resource.loader = file, class
+
+#
+# for the loader we call 'file', set the FileResourceLoader as the
+# class to use, turn off caching
+#
+file.resource.loader.description = Velocity File Resource Loader
+file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
+file.resource.loader.path = ./classes
+file.resource.loader.cache = false
+file.resource.loader.modificationCheckInterval = 0
+
+input.encoding=UTF-8
+output.encoding=UTF-8
+
+#
+#  for the loader we call 'class', use the ClasspathResourceLoader
+#
+class.resource.loader.description = Velocity Classpath Resource Loader
+class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
+runtime.log.logsystem.log4j.logger = org.apache.velocity.runtime.log.Log4JLogChute
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b1e5a28
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,149 @@
+<?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.
+  
+-->
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+    <context-param>
+        <param-name>globalScope</param-name>
+        <param-value>default</param-value>
+    </context-param>
+    
+    <!-- Custom logging like described in Paul Gregoire Patch: 
+    http://gregoire.org/2008/09/18/logging-work-around/
+    THIS WILL NOT WORK for us as we can hardly rewrite all logging statements of hibernate
+    
+    -->
+    <listener>
+        <listener-class>org.apache.openmeetings.util.OMContextListener</listener-class>
+    </listener>
+    
+    <filter>
+        <filter-name>LoggerContextFilter</filter-name>
+        <filter-class>org.red5.logging.LoggerContextFilter</filter-class>
+    </filter>
+    
+    <filter-mapping>
+        <filter-name>LoggerContextFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>   
+    
+	<filter>
+		<filter-name>OpenmeetingsApplication</filter-name>
+		<filter-class>org.apache.wicket.protocol.ws.tomcat7.Tomcat7WebSocketFilter</filter-class>
+		<init-param>
+			<param-name>applicationClassName</param-name>
+			<param-value>org.apache.openmeetings.web.app.Application</param-value>
+		</init-param>
+		<init-param>
+			<param-name>configuration</param-name>
+			<param-value>@wicket.mode@</param-value>
+		</init-param>
+		<init-param>
+			<param-name>ignorePaths</param-name>
+			<param-value>conf,css,default,docs,images,js,persistence,public,screensharing,streams,upload,uploadtemp,services,networktest.,file.,remotelog.,screen.,DownloadHandler</param-value>
+		</init-param>
+	</filter>
+	<filter-mapping>
+		<filter-name>OpenmeetingsApplication</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+	 
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>/WEB-INF/red5-*.xml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>locatorFactorySelector</param-name>
+        <param-value>red5.xml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>parentContextKey</param-name>
+        <param-value>default.context</param-value>
+    </context-param>
+    
+    <!-- remove the following servlet tags if you want to disable remoting for this application -->
+	<servlet>
+		<servlet-name>spring-mvc</servlet-name>
+		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+	</servlet>
+    <servlet>
+        <servlet-name>gateway</servlet-name>
+        <servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>
+    </servlet>
+    <servlet>
+        <servlet-name>DownloadHandler</servlet-name>
+        <servlet-class>org.apache.openmeetings.servlet.outputhandler.DownloadHandler</servlet-class>
+    </servlet>
+    <servlet>
+        <servlet-name>ExportToImage</servlet-name>
+        <servlet-class>org.apache.openmeetings.servlet.outputhandler.ExportToImage</servlet-class>
+    </servlet>
+    <!-- Axis2 Settings -->
+    <servlet>
+        <servlet-name>AxisServlet</servlet-name>
+        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+	
+	<servlet-mapping>
+		<servlet-name>spring-mvc</servlet-name>
+		<url-pattern>*.upload</url-pattern>
+	</servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>DownloadHandler</servlet-name>
+        <url-pattern>/DownloadHandler</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>ExportToImage</servlet-name>
+        <url-pattern>/ExportToImage</url-pattern>
+    </servlet-mapping>
+    <!-- Axis2 -->
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/services/*</url-pattern>
+    </servlet-mapping>
+    <mime-mapping>
+        <extension>inc</extension>
+        <mime-type>text/plain</mime-type>
+    </mime-mapping>
+     
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>Forbidden</web-resource-name>
+            <url-pattern>/streams/*</url-pattern>
+        </web-resource-collection>
+        <web-resource-collection>
+            <web-resource-name>Forbidden</web-resource-name>
+            <url-pattern>/conf/*</url-pattern>
+        </web-resource-collection>
+        <web-resource-collection>
+            <web-resource-name>Forbidden</web-resource-name>
+            <url-pattern>/upload/*</url-pattern>
+        </web-resource-collection>
+        <web-resource-collection>
+            <web-resource-name>Forbidden</web-resource-name>
+            <url-pattern>/uploadtemp/*</url-pattern>
+        </web-resource-collection>
+        <auth-constraint/>
+    </security-constraint>
+    <login-config>
+        <auth-method>BASIC</auth-method>
+    </login-config>
+</web-app>
diff --git a/src/main/webapp/conf/om_ldap.cfg b/src/main/webapp/conf/om_ldap.cfg
new file mode 100644
index 0000000..df9438f
--- /dev/null
+++ b/src/main/webapp/conf/om_ldap.cfg
@@ -0,0 +1,96 @@
+#
+# 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.
+# 
+#ConfigurationFile for LDAP Auth
+#ConfigKey 'ldap_config_path' must be set in DataBase Configration of OM and point to this file
+#o.becherer,14.01.2009
+
+#LDAP URL
+# This is the URL used to access your LDAP server.
+# if you want to use "ldaps://" links, please be aware that you need to import your CA certificate
+#  to a java keystore and add the -Djavax.net.ssl.keyStore, -Djavax.net.ssl.keyStorePassword,
+#  -Djavax.net.ssl.trustStore and -Djavax.net.ssl.trustStorePassword parameters to your 
+#  JAVA_OPT environment
+ldap_conn_host=dc2.medint.local
+ldap_conn_port=389
+ldap_conn_secure=false
+
+# Login distinguished name (DN) for Authentication on LDAP Server - keep empty if not required
+# Use full qualified LDAP DN
+ldap_admin_dn=CN=dummy,OU=Company,DC=medint,DC=local
+
+# Loginpass for Authentication on LDAP Server - keep empty if not required
+ldap_passwd=dummy07
+
+# base to search for userdata(of user, that wants to login)
+ldap_search_base=OU=Company,DC=medint,DC=local
+
+# Fieldnames (can differ between Ldap servers) 
+ldap_search_query=(uid=%s)
+
+# the scope of the search might be: OBJECT, ONELEVEL, SUBTREE
+ldap_search_scope=ONELEVEL
+
+# Ldap auth type(NONE, SEARCHANDBIND, SIMPLEBIND)
+#  When using SIMPLEBIND a simple bind is performed on the LDAP server to check user authentication
+#  When using NONE, the Ldap server is not used for authentication
+ldap_auth_type=SIMPLEBIND
+
+# userDN format, will be used to bind if ldap_auth_type=SIMPLEBIND
+# might be used to get provisionningDn in case ldap_auth_type=NONE
+ldap_userdn_format=uid=%s,OU=Company,DC=medint,DC=local
+
+# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE)
+ldap_provisionning=AUTOCREATE
+
+# Ldap deref mode (never, searching, finding, always)
+ldap_deref_mode=always
+
+#  Set this to 'true' if you want to use admin_dn to get user attributes
+#  If any other value is set, user_dn will be used
+ldap_use_admin_to_get_attrs=true
+
+# Ldap-password synchronization to OM DB
+#  Set this to 'true' if you want OM to synchronize the user Ldap-password to OM's internal DB
+#  If you want to disable the feature, set this to any other string.
+#  Defautl value is 'true'
+ldap_sync_password_to_om=true
+
+# Ldap user attributes mapping
+# Set the following internal OM user attributes to their corresponding Ldap-attribute
+ldap_user_attr_lastname=sn
+ldap_user_attr_firstname=givenName
+ldap_user_attr_mail=mail
+ldap_user_attr_street=streetAddress
+ldap_user_attr_additionalname=description
+ldap_user_attr_fax=facsimileTelephoneNumber
+ldap_user_attr_zip=postalCode
+ldap_user_attr_country=co
+ldap_user_attr_town=l
+ldap_user_attr_phone=telephoneNumber
+
+# optional, only absolute URLs make sense
+#ldap_user_picture_uri=picture_uri
+
+# optional
+# the timezone has to match any timezone available in Java, otherwise the timezone defined in the value of 
+# the conf_key "default.timezone" in OpenMeetings "configurations" table
+#ldap_user_timezone=timezone
+
+# Ldap ignore upper/lower case, convert all input to lower case
+ldap_use_lower_case=false
diff --git a/src/main/webapp/css/admin-rtl.css b/src/main/webapp/css/admin-rtl.css
new file mode 100644
index 0000000..30eda1e
--- /dev/null
+++ b/src/main/webapp/css/admin-rtl.css
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+.adminForm label, .adminForm input, .adminForm select, .adminForm textarea {
+	float: right !important;
+}
diff --git a/src/main/webapp/css/admin.css b/src/main/webapp/css/admin.css
new file mode 100644
index 0000000..22dfe6c
--- /dev/null
+++ b/src/main/webapp/css/admin.css
@@ -0,0 +1,357 @@
+/*
+ * 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.
+ */
+.adminPanel {
+	min-width: 1070px;
+}
+/* 
+    ################################
+    Column layout admin section
+    ################################
+ */
+.adminPanelColumnTable {
+	display: inline-block;
+	vertical-align: top;
+}
+
+table.adminListTable {
+	max-width: 518px;
+	min-width: 518px;
+}
+
+table.adminListTable tr:nth-child(odd), table.adminListTableSmall tr:nth-child(odd) {
+	opacity: .8;
+}
+
+table.adminListTable tr:hover, table.adminListTableSmall tr:hover {
+	/*SHOULD BE MANUALLY IN SYNC WITH THEME .ui-state-hover */
+	border: 1px solid #74b2e2;
+	background: #e4f1fb url(theme_om/images/ui-bg_glass_100_e4f1fb_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #0070a3;
+}
+
+table.adminListTable th.two_column_layout_column1 {
+	width: 136px;
+}
+
+table.adminListTable th.two_column_layout_column2 {
+	width: 354px;
+}
+
+table.adminListTable td.two_column_layout_column1 {
+	width: 136px;
+}
+
+table.adminListTable td.two_column_layout_column2 {
+	width: 354px;
+}
+
+table.adminListTable td div.two_column_layout_divcolumn1 {
+	word-wrap: break-word;
+	width: 136px;
+}
+
+table.adminListTable td div.two_column_layout_divcolumn2 {
+	word-wrap: break-word;
+	width: 354px;
+}
+
+table.adminListTable th.three_column_layout_column1 {
+	width: 96px;
+}
+
+table.adminListTable th.three_column_layout_column2 {
+	width: 150px;
+}
+
+table.adminListTable th.three_column_layout_column3 {
+	width: 244px;
+}
+
+.rooms table.adminListTable th.three_column_layout_column1 {
+	width: 46px;
+}
+
+.rooms table.adminListTable th.three_column_layout_column2 {
+	width: 370px;
+}
+
+.rooms table.adminListTable th.three_column_layout_column3 {
+	width: 74px;
+}
+
+table.adminListTableSmall th.three_column_layout_column1 {
+	width: 50px;
+}
+
+table.adminListTableSmall th.three_column_layout_column2 {
+	width: 50px;
+}
+
+table.adminListTableSmall th.three_column_layout_column3 {
+	width: 218px;
+}
+table.adminListTableSmall th.three_column_layout_column4 {
+	width: 150px;
+}
+table.adminListTableSmall th.three_column_layout_column5 {
+	width: 50px;
+}
+
+table.adminListTable td.three_column_layout_column1 {
+	width: 96px;
+}
+
+table.adminListTable td.three_column_layout_column2 {
+	width: 150px;
+}
+
+table.adminListTable td.three_column_layout_column3 {
+	width: 244px;
+}
+
+table.adminListTableSmall td.three_column_layout_column1 {
+	width: 50px;
+}
+
+table.adminListTableSmall td.three_column_layout_column2 {
+	width: 50px;
+}
+
+table.adminListTableSmall td.three_column_layout_column3 {
+	width: 218px;
+}
+table.adminListTableSmall td.three_column_layout_column4 {
+	width: 150px;
+}
+table.adminListTableSmall td.three_column_layout_column5 {
+	width: 50px;
+}
+
+table.adminListTable td div.three_column_layout_divcolumn1 {
+	word-wrap: break-word;
+	width: 96px;
+}
+
+table.adminListTable td div.three_column_layout_divcolumn2 {
+	word-wrap: break-word;
+	width: 150px;
+}
+
+table.adminListTable td div.three_column_layout_divcolumn3 {
+	word-wrap: break-word;
+	width: 244px;
+}
+
+.rooms table.adminListTable td div.three_column_layout_divcolumn1 {
+	word-wrap: break-word;
+	width: 44px;
+}
+
+.rooms table.adminListTable td div.three_column_layout_divcolumn2 {
+	word-wrap: break-word;
+	width: 382px;
+}
+
+.rooms table.adminListTable td div.three_column_layout_divcolumn3 {
+	word-wrap: break-word;
+	width: 74px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn1 {
+	width: 50px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn2 {
+	width: 50px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn3 {
+	width: 218px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn4 {
+	width: 150px;
+}
+
+table.adminListTableSmall td div.three_column_layout_divcolumn5 {
+	width: 50px;
+}
+
+table.adminListTable th.four_column_layout_column1 {
+	width: 96px;
+}
+
+table.adminListTable th.four_column_layout_column2 {
+	width: 130px;
+}
+
+table.adminListTable th.four_column_layout_column3 {
+	width: 132px;
+}
+
+table.adminListTable th.four_column_layout_column4 {
+	width: 132px;
+}
+
+table.adminListTable td.four_column_layout_column1 {
+	width: 96px;
+}
+
+table.adminListTable td.four_column_layout_column2 {
+	width: 130px;
+}
+
+table.adminListTable td.four_column_layout_column3 {
+	width: 132px;
+}
+
+table.adminListTable td.four_column_layout_column4 {
+	width: 132px;
+}
+
+table.adminListTable td div.four_column_layout_divcolumn1 {
+	word-wrap: break-word;
+	width: 96px;
+}
+
+table.adminListTable td div.four_column_layout_divcolumn2 {
+	word-wrap: break-word;
+	width: 130px;
+}
+
+table.adminListTable td div.four_column_layout_divcolumn3 {
+	word-wrap: break-word;
+	width: 132px;
+}
+
+table.adminListTable td div.four_column_layout_divcolumn4 {
+	word-wrap: break-word;
+	width: 132px;
+}
+
+.adminPanelColumnForm {
+	display: inline-block;
+	vertical-align: top;
+	margin-top: 2px;
+}
+
+.adminPanelColumnForm div.scrollcontent {
+	vertical-align: top;
+	height: 500px;
+	overflow-y: scroll;
+}
+
+.adminForm {
+	
+}
+.adminForm .btn {
+	width: 280px;
+}
+.adminForm input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 280px;
+	height: 20px;
+	margin: 2px 2px;
+}
+.adminForm input[type=checkbox], .adminForm input[type=radio] {
+	width: auto;
+}
+.adminForm input.formcheckbox {
+	display: block;
+	float: left;
+	font-size: 14px;
+	padding: 0px 0px;
+	border: none;
+	width: 20px;
+	height: 20px;
+	margin: 2px 2px;
+}
+
+.adminForm fieldset {
+	margin-top: 4px;
+	padding: 4px;
+}
+
+.adminForm legend {
+	padding: 0.2em 0.5em;
+	margin: 0px 10px;
+	font-style: italic;
+	text-align: right;
+}
+
+.adminForm textarea {
+	display: block;
+	float: left;
+	font-size: 14px;
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 280px;
+	height: 60px;
+	margin: 2px 2px;
+}
+
+.adminForm div.formelement {
+	display: block;
+	clear: both;
+	max-width: 490px;
+}
+
+.adminForm select {
+	float: left;
+	height: 20px;
+	font-size: 14px;
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 282px;
+	margin: 2px 2px 2px;
+}
+
+.adminForm label {
+	display: block;
+	font-size: 14px;
+	font-weight: bold;
+	text-align: right;
+	width: 180px;
+	float: left;
+	margin: 4px 2px 2px;
+}
+
+.adminBackupForm div.formelement {
+    display: block;
+    clear: both;
+    max-width: 1240px;
+}
+.adminFormsFeedbackPanel {
+	position: fixed;
+	left:550px;
+	width: 480px;
+	bottom: 16px;
+	z-index:999;
+}
+.adminForm .newItem {
+	padding-left: 25px;
+	background-image: url(images/new.png);
+	background-repeat: no-repeat;
+	background-position: 5px;
+}
\ No newline at end of file
diff --git a/src/main/webapp/css/calendar.css b/src/main/webapp/css/calendar.css
new file mode 100644
index 0000000..dea7fba
--- /dev/null
+++ b/src/main/webapp/css/calendar.css
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+.appointmentPopUp td {
+	vertical-align: top;
+}
+
+.appointmentPopUp input[name="appointmentName"] {
+	width: 420px;
+}
+
+.appointmentPopUp input[name="password"] {
+	width: 420px;
+}
+
+.appointmentPopUp input[name="appointmentLocation"] {
+	width: 420px;
+}
+
+.appointmentPopUp textarea[name="appointmentDescription"] {
+	width: 424px;
+	height: 80px;
+}
+
+.appointmentPopUp select[name="remind"] {
+	width: 426px;
+}
+
+.appointmentPopUp select[name="room.roomtype"] {
+	width: 426px;
+}
+
+.appointmentPopUp select[name="room"] {
+	width: 426px;
+}
+
+.appointmentPopUp .formNewButton {
+	float: left;
+}
+
+.appointmentPopUp .attendeeContainer {
+	background-color: #FFFFFF;
+	border: solid 1px #aacfe4;
+	width: 424px;
+	height: 100px;
+	overflow-x: scroll;
+	float: left;
+}
+
+.appointmentPopUp .attendeeContainer table td:FIRST-CHILD div {
+	width: 130px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+
+.appointmentPopUp .attendeeContainer table td:nth-child(2) div {
+	width: 260px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+
+.appointmentPopUp .attendeeContainer table td:nth-child(3) div {
+	width: 20px;
+}
+.appointment.attendees {
+	width: 100%;
+}
+.appointment.attendees.select2-container-multi .select2-choices {
+	max-height: 100px;
+	overflow-y: auto;
+}
diff --git a/src/main/webapp/css/forms.css b/src/main/webapp/css/forms.css
new file mode 100644
index 0000000..d3fb7c9
--- /dev/null
+++ b/src/main/webapp/css/forms.css
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+div.formSaveBar {
+	width: 100%;
+	height: 22px;
+}
+ 
+div.formSaveButton input {
+	background: url(images/forms/disk.png) no-repeat;
+	float: left;
+	cursor: pointer;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+}
+
+div.formNewButton input {
+	background: url(images/forms/plus_icon.png) no-repeat;
+	float: left;
+	cursor: pointer;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+}
+
+div.formNewButton.disabled input {
+	background: url(images/forms/plus_icon_disabled.png) no-repeat;
+	float: left;
+	cursor: default;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+}
+
+div.formRefreshButton input {
+	background: url(images/forms/arrow_refresh_small.png) no-repeat;
+	float: left;
+	cursor: pointer;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+}
+
+div.formCancelButton input {
+	background: url(images/forms/cancel_icon.png) no-repeat;
+	float: left;
+	cursor: pointer;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+}
\ No newline at end of file
diff --git a/src/main/webapp/css/history.css b/src/main/webapp/css/history.css
new file mode 100644
index 0000000..d78d4be
--- /dev/null
+++ b/src/main/webapp/css/history.css
@@ -0,0 +1,24 @@
+/*
+ *
+ *  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.
+ *
+ */
+/* This CSS stylesheet defines styles used by required elements in a flex application page that supports browser history */
+
+#ie_historyFrame { width: 0px; height: 0px; display:none }
+#firefox_anchorDiv { width: 0px; height: 0px; display:none }
+#safari_formDiv { width: 0px; height: 0px; display:none }
+#safari_rememberDiv { width: 0px; height: 0px; display:none }
diff --git a/src/main/webapp/css/images/add.png b/src/main/webapp/css/images/add.png
new file mode 100644
index 0000000..6332fef
--- /dev/null
+++ b/src/main/webapp/css/images/add.png
Binary files differ
diff --git a/src/main/webapp/css/images/arrow_down.png b/src/main/webapp/css/images/arrow_down.png
new file mode 100644
index 0000000..e5b352b
--- /dev/null
+++ b/src/main/webapp/css/images/arrow_down.png
Binary files differ
diff --git a/src/main/webapp/css/images/arrow_right.png b/src/main/webapp/css/images/arrow_right.png
new file mode 100644
index 0000000..3ef0b77
--- /dev/null
+++ b/src/main/webapp/css/images/arrow_right.png
Binary files differ
diff --git a/src/main/webapp/css/images/basket_put.png b/src/main/webapp/css/images/basket_put.png
new file mode 100644
index 0000000..be62faa
--- /dev/null
+++ b/src/main/webapp/css/images/basket_put.png
Binary files differ
diff --git a/src/main/webapp/css/images/bullet_green.png b/src/main/webapp/css/images/bullet_green.png
new file mode 100644
index 0000000..058ad26
--- /dev/null
+++ b/src/main/webapp/css/images/bullet_green.png
Binary files differ
diff --git a/src/main/webapp/css/images/bullet_red.png b/src/main/webapp/css/images/bullet_red.png
new file mode 100644
index 0000000..0cd8031
--- /dev/null
+++ b/src/main/webapp/css/images/bullet_red.png
Binary files differ
diff --git a/src/main/webapp/css/images/cross.png b/src/main/webapp/css/images/cross.png
new file mode 100644
index 0000000..1514d51
--- /dev/null
+++ b/src/main/webapp/css/images/cross.png
Binary files differ
diff --git a/src/main/webapp/css/images/email_add.png b/src/main/webapp/css/images/email_add.png
new file mode 100644
index 0000000..6c93368
--- /dev/null
+++ b/src/main/webapp/css/images/email_add.png
Binary files differ
diff --git a/src/main/webapp/css/images/email_delete.png b/src/main/webapp/css/images/email_delete.png
new file mode 100644
index 0000000..a9932b1
--- /dev/null
+++ b/src/main/webapp/css/images/email_delete.png
Binary files differ
diff --git a/src/main/webapp/css/images/email_go.png b/src/main/webapp/css/images/email_go.png
new file mode 100644
index 0000000..4a6c5d3
--- /dev/null
+++ b/src/main/webapp/css/images/email_go.png
Binary files differ
diff --git a/src/main/webapp/css/images/film.png b/src/main/webapp/css/images/film.png
new file mode 100644
index 0000000..b0ce7bb
--- /dev/null
+++ b/src/main/webapp/css/images/film.png
Binary files differ
diff --git a/src/main/webapp/css/images/film_error.png b/src/main/webapp/css/images/film_error.png
new file mode 100644
index 0000000..88f3d69
--- /dev/null
+++ b/src/main/webapp/css/images/film_error.png
Binary files differ
diff --git a/src/main/webapp/css/images/film_processing.png b/src/main/webapp/css/images/film_processing.png
new file mode 100644
index 0000000..fb09a02
--- /dev/null
+++ b/src/main/webapp/css/images/film_processing.png
Binary files differ
diff --git a/src/main/webapp/css/images/folder.png b/src/main/webapp/css/images/folder.png
new file mode 100644
index 0000000..784e8fa
--- /dev/null
+++ b/src/main/webapp/css/images/folder.png
Binary files differ
diff --git a/src/main/webapp/css/images/folder_add.png b/src/main/webapp/css/images/folder_add.png
new file mode 100644
index 0000000..529fe8f
--- /dev/null
+++ b/src/main/webapp/css/images/folder_add.png
Binary files differ
diff --git a/src/main/webapp/css/images/forms/arrow_refresh_small.png b/src/main/webapp/css/images/forms/arrow_refresh_small.png
new file mode 100644
index 0000000..d3087df
--- /dev/null
+++ b/src/main/webapp/css/images/forms/arrow_refresh_small.png
Binary files differ
diff --git a/src/main/webapp/css/images/forms/cancel_icon.png b/src/main/webapp/css/images/forms/cancel_icon.png
new file mode 100644
index 0000000..2d26062
--- /dev/null
+++ b/src/main/webapp/css/images/forms/cancel_icon.png
Binary files differ
diff --git a/src/main/webapp/css/images/forms/disk.png b/src/main/webapp/css/images/forms/disk.png
new file mode 100644
index 0000000..99d532e
--- /dev/null
+++ b/src/main/webapp/css/images/forms/disk.png
Binary files differ
diff --git a/src/main/webapp/css/images/forms/plus_icon.png b/src/main/webapp/css/images/forms/plus_icon.png
new file mode 100644
index 0000000..acec291
--- /dev/null
+++ b/src/main/webapp/css/images/forms/plus_icon.png
Binary files differ
diff --git a/src/main/webapp/css/images/forms/plus_icon_disabled.png b/src/main/webapp/css/images/forms/plus_icon_disabled.png
new file mode 100644
index 0000000..cfb4776
--- /dev/null
+++ b/src/main/webapp/css/images/forms/plus_icon_disabled.png
Binary files differ
diff --git a/src/main/webapp/css/images/house_link.png b/src/main/webapp/css/images/house_link.png
new file mode 100644
index 0000000..be2c271
--- /dev/null
+++ b/src/main/webapp/css/images/house_link.png
Binary files differ
diff --git a/src/main/webapp/css/images/information.png b/src/main/webapp/css/images/information.png
new file mode 100644
index 0000000..12cd1ae
--- /dev/null
+++ b/src/main/webapp/css/images/information.png
Binary files differ
diff --git a/src/main/webapp/css/images/new.png b/src/main/webapp/css/images/new.png
new file mode 100644
index 0000000..6a9bf03
--- /dev/null
+++ b/src/main/webapp/css/images/new.png
Binary files differ
diff --git a/src/main/webapp/css/images/refresh.gif b/src/main/webapp/css/images/refresh.gif
new file mode 100644
index 0000000..7aff1a9
--- /dev/null
+++ b/src/main/webapp/css/images/refresh.gif
Binary files differ
diff --git a/src/main/webapp/css/images/script_error.png b/src/main/webapp/css/images/script_error.png
new file mode 100644
index 0000000..0491954
--- /dev/null
+++ b/src/main/webapp/css/images/script_error.png
Binary files differ
diff --git a/src/main/webapp/css/images/tick.png b/src/main/webapp/css/images/tick.png
new file mode 100644
index 0000000..a9925a0
--- /dev/null
+++ b/src/main/webapp/css/images/tick.png
Binary files differ
diff --git a/src/main/webapp/css/images/trash.png b/src/main/webapp/css/images/trash.png
new file mode 100644
index 0000000..b92592b
--- /dev/null
+++ b/src/main/webapp/css/images/trash.png
Binary files differ
diff --git a/src/main/webapp/css/images/user.png b/src/main/webapp/css/images/user.png
new file mode 100644
index 0000000..79f35cc
--- /dev/null
+++ b/src/main/webapp/css/images/user.png
Binary files differ
diff --git a/src/main/webapp/css/images/user_go.png b/src/main/webapp/css/images/user_go.png
new file mode 100644
index 0000000..0468cf0
--- /dev/null
+++ b/src/main/webapp/css/images/user_go.png
Binary files differ
diff --git a/src/main/webapp/css/images/world_link.png b/src/main/webapp/css/images/world_link.png
new file mode 100644
index 0000000..b8edc12
--- /dev/null
+++ b/src/main/webapp/css/images/world_link.png
Binary files differ
diff --git a/src/main/webapp/css/jquery.ui.menubar-rtl.css b/src/main/webapp/css/jquery.ui.menubar-rtl.css
new file mode 100644
index 0000000..4f19036
--- /dev/null
+++ b/src/main/webapp/css/jquery.ui.menubar-rtl.css
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+.ui-menubar {
+	padding: 0px !important;
+}
+.ui-menubar-item {
+	float: right !important;
+}
+.ui-menubar .ui-button {
+	float: right !important;
+}
+.ui-menubar .ui-button .ui-button-text .ui-icon {
+	float: left !important;
+}
diff --git a/src/main/webapp/css/jquery.ui.menubar.css b/src/main/webapp/css/jquery.ui.menubar.css
new file mode 100644
index 0000000..03e04af
--- /dev/null
+++ b/src/main/webapp/css/jquery.ui.menubar.css
@@ -0,0 +1,35 @@
+/*
+ * jQuery UI Menubar @VERSION
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ */
+.ui-menubar {
+	list-style: none;
+	margin: 0; padding-left: 0;
+}
+
+.ui-menubar-item {
+	float: left;
+}
+
+.ui-menubar .ui-button {
+	float: left;
+	font-weight: bold;
+	border-top-width: 0 !important;
+	border-bottom-width: 0 !important;
+	margin: 0;
+	outline: none;
+}
+.ui-menubar .ui-menubar-link {
+	border-right: 1px dashed transparent;
+	border-left: 1px dashed transparent;
+}
+
+.ui-menubar .ui-menu {
+	width: 200px;
+	position: absolute;
+	z-index: 9999;
+	font-weight: normal;
+}
diff --git a/src/main/webapp/css/theme-rtl.css b/src/main/webapp/css/theme-rtl.css
new file mode 100644
index 0000000..6e110b6
--- /dev/null
+++ b/src/main/webapp/css/theme-rtl.css
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+#header {
+	padding-left: initial !important;
+	padding-right: 150px;
+	background-position: right center;
+}
+#topLinks {
+	right: initial !important;
+	left: 10px;
+}
+
+#topLinks span {
+	border-right: none !important;
+	border-left: 1px solid black;
+}
+
+#topLinks span:last-child {
+	border-left: none;
+}
+#busy_indicator {
+	float: left !important;
+}
+#chatPanel {
+	right: initial !important;
+	left: 10px;
+}
+.ui-tabs .ui-tabs-nav li {
+	float: right !important;
+}
+.info-text {
+	background-position: right top !important;
+	padding-left: initial !important;
+	padding-right: 20px;
+}
+.start_step1, .start_step2, .start_step3, .start_step4 {
+	padding-left: initial !important;
+	padding-right: 30px;
+	background-position: right top !important;
+}
+.start_step2 {
+	margin-left: initial !important;
+	margin-right: 20px !important;
+}
+.start_step3 {
+	margin-left: initial !important;
+	margin-right: 40px !important;
+}
+.start_step4 {
+	margin-left: initial !important;
+	margin-right: 60px !important;
+}
+form .input {
+	float: right !important;
+}
+#searchUsersTable th, .fht-table th {
+	text-align: right !important;
+}
+.ui-dialog .ui-dialog-title {
+	float: right !important;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	right: initial !important;
+	left: .3em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: left !important;
+}
+
+/**** FIXME need to be moved to wicket-jquery-ui **************/
+span.css-emoticon {
+	transform: rotate(-90deg) !important;
+}
+.chat.dropdown-menu {
+	left: initial !important;
+    right: -50px !important;
+	float: right !important;
+}
diff --git a/src/main/webapp/css/theme.css b/src/main/webapp/css/theme.css
new file mode 100644
index 0000000..79b9c25
--- /dev/null
+++ b/src/main/webapp/css/theme.css
@@ -0,0 +1,620 @@
+/*
+ * 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, body {
+	height: 100%;
+	margin: 0;
+	font-family: Arial, Helvetica, sans-serif;
+}
+#header {
+	font-size: 28px;
+	line-height: 40px;
+	font-weight: bold;
+	background-image: url(../public/themes/basic-theme/general/logo.png);
+	background-repeat: no-repeat;
+	padding-left: 150px;
+}
+#topLinks {
+	position: absolute;
+	top: 10px;
+	right: 10px;
+}
+
+#topLinks span {
+	padding-right: 5px;
+	padding-left: 5px;
+	border-right: 1px solid black;
+}
+
+#topLinks span:last-child {
+	border-right: none;
+}
+
+#menu {
+	background-color: #AFCBFB;
+	margin-top: 10px;
+}
+.ui-menubar .ui-menu {
+	width: 250px;
+}
+.ui-menu .ui-menu-item a {
+	line-height: 1.2em !important;
+	padding-bottom: 5px !important;
+}
+.menuName {
+	font-weight: bold;
+}
+.menuDesc {
+	font-size: smaller;
+	line-height: 1em !important;
+}
+
+#busy_indicator {
+	display: none;
+	float: right;
+	margin-top: 5px;
+	z-index: 1000;
+	width: 200px;
+	font-weight: bold;
+	text-align: center;
+	font-size: 1em;
+	color: #FF0000;
+}
+
+#chatPanel {
+	position: fixed;
+	z-index: 2000;
+	bottom: 0px;
+	right: 10px;
+	width: 600px;
+}
+#chatPanel #chat {
+	height: 10px;
+	background-color: #F2FAFF;
+}
+#chatPanel #chat #controlBlock {
+	background-color: #5294BB;
+}
+#chatPanel #chat #controlBlock:hover {
+	background-color: #2779aa;
+}
+#chatPanel #chat #controlBlock #control {
+	text-align: center;
+	margin-left: 50%;
+	margin-right: 50%;
+}
+#chatPanel #chat #messageArea .date {
+    margin-right: 5px;
+    font-style: italic;
+    font-size: smaller;
+}
+#chatPanel #chat #messageArea .from {
+	margin-left: 5px;
+    margin-right: 5px;
+	font-weight: bold;
+}
+#messageArea {
+	height: 165px;
+	overflow-y: auto;
+}
+#chatMessage .wysiwyg-editor {
+	height: 70px;
+	max-height: 70px;
+}
+.clickable {
+	cursor: pointer;
+}
+.dragbox-content .tableWrapper {
+	width: auto;
+	height: 100px;
+}
+.dragbox-content .tableWrapper .adminListTable {
+	max-width: none;
+	min-width: 0;
+}
+.help.support h3 {
+	margin-bottom: 5px;
+}
+.tableWrapper, .tableWrapperSmall {
+	background-color: #FFFFFF;
+	border: solid 1px #aacfe4;
+	width: 536px;
+	height: 100px;
+	overflow-y: scroll;
+}
+.tableWrapper {
+	height: 500px;
+}
+
+.formelementradiobox {
+	margin-left: 100px;
+}
+
+.formelementradiobox input {
+	margin: 0px 0px;
+	border: none;
+	width: 20px;
+}
+
+.formelementradiobox label {
+	width: 260px;
+	margin: 0px
+}
+
+.addLanguagePanel {
+	display: block;
+}
+
+.addLanguagePanel select {
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 140px;
+	font-size: 12px;
+	margin-left: 2px;
+}
+
+.pagedEntityListPanel {
+	margin-left: 2px;
+	display: inline-block;
+}
+
+.searchForm {
+	display: inline-block;
+	vertical-align: top;
+}
+
+.pagedEntityListPanel select, .adminForm .pagedEntityListPanel select {
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 60px;
+	font-size: 12px;
+	display: inline;
+	float: none;
+}
+.searchForm input[type="text"], .adminForm .searchForm input[type="text"] {
+	width: 140px;
+	float: none;
+	display: inline-block;
+}
+.searchForm input[type="submit"], .adminForm .searchForm input[type="submit"] {
+	width: auto;
+	float: none;
+	display: inline-block;
+	border: 2px outset buttonface;
+	padding: 1px 6px;
+	font-size: 12px;
+}
+.pagedEntityListPanel input, .adminForm .pagedEntityListPanel input {
+	font-size: 14px;
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 100px;
+	height: 20px;
+	margin: 2px 2px;
+	display: inline;
+	float: none;
+}
+
+.goto, .goto :link, .goto :hover {
+	font-size: 14px;
+	line-height: 14px;
+	text-decoration: none;
+	text-align: center;
+	vertical-align: middle;
+	min-width: 16px;
+}
+
+.goto.icon {
+    display: inline-block;
+    width: 16px;
+    height: 16px;
+    border: none;
+    margin: 0px;
+    padding: 0px;
+    zoom: 1.2;
+}
+
+.ui-dialog {
+	-moz-box-shadow: 3px 3px 4px #000;
+	-webkit-box-shadow: 3px 3px 4px #000;
+	/* For IE 8 */
+	-ms-filter:
+		"progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
+	/* For IE 5.5 - 7 */
+	filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135,
+		Color='#000000' );
+	box-shadow: 3px 3px 4px #000;
+}
+
+.sort-icon {
+	display: inline-block !important;
+	text-indent: 0px !important;
+}
+
+.start_step1, .start_step2, .start_step3, .start_step4  {
+	padding-left: 30px;
+	background-position: left top;
+	margin: 5px 0px 5px 0px; 
+	background-size: contain;
+	background-repeat: no-repeat;
+	display: inline-block;
+}
+.start_step1 {
+	background-image: url(../public/themes/basic-theme/dashboard/wizzard_button_1.png);
+}
+.start_step2 {
+	background-image: url(../public/themes/basic-theme/dashboard/wizzard_button_2.png);
+	margin-left: 20px;
+}
+.start_step3 {
+	background-image: url(../public/themes/basic-theme/dashboard/wizzard_button_3.png);
+	margin-left: 40px;
+}
+.start_step4 {
+	background-image: url(../public/themes/basic-theme/dashboard/wizzard_button_4.png);
+	margin-left: 60px;
+}
+.widget {
+	width: 100%;
+}
+.widget td {
+	min-width: 150px;
+}
+#contents .dragbox-content {
+	min-height: 300px;
+	max-height: 300px;
+}
+#feedcontainer {
+	overflow: auto;
+}
+.recording {
+	width: 100%;
+	display: inline-block;
+}
+.recording .files {
+	width: 250px;
+	border: 1px solid #ccc;
+}
+.trash-toolbar {
+	font-weight: bold;
+	line-height: 20px;
+	color: transparent;
+}
+.trash-toolbar-hover {
+	color: inherit;
+}
+.recording .files .trees {
+	min-height: 400px;
+	max-height: 600px;
+	overflow-x: hidden;
+	overflow-y: auto;
+}
+.recording .files .sizes table, .recording .files .info table {
+	width: 100%;
+}
+.recording .files .info input {
+	width: 100%;
+	padding-right: 5px;
+	padding-left: 5px;
+}
+.recording .video .player {
+	width: 100%;
+	display: inline-block;
+	box-shadow: 0 0 10px 1px rgba(74, 137, 151, 0.5);
+}
+.recording .video .player video {
+	width: 100%;
+}
+.align-left {
+	float: left;
+}
+.align-right {
+	float: right;
+}
+.clear {
+	clear: both;
+}
+.om-icon {
+	background-repeat: no-repeat !important;
+	background-position: 0 0 !important;
+	width: 18px;
+	height: 18px;
+	border: none;
+	margin-left: 2px;
+	margin-top: 2px;
+	display: inline-block !important;
+}
+.trees a.om-icon {
+	width: auto;
+}
+.trees a.om-icon span {
+	white-space: nowrap;
+	padding-right: 20px;
+	vertical-align: top;
+}
+.cross.om-icon {
+	background-image: url(images/cross.png);
+}
+.tick.om-icon {
+	background-image: url(images/tick.png);
+}
+.add.om-icon {
+	background-image: url(images/add.png);
+}
+.new-email.om-icon {
+	background-image: url(images/email_add.png);
+}
+.user.om-icon {
+	background: url(images/user.png);
+}
+.refresh.om-icon {
+	background: url(images/refresh.gif);
+}
+.trash.om-icon {
+	background: url(images/trash.png);
+}
+.folder-create.om-icon {
+	background: url(images/folder_add.png);
+}
+.recording.om-icon {
+	padding-left: 18px;
+	background-image: url(images/film.png);
+}
+.broken-recording.om-icon {
+	padding-left: 18px;
+	background-image: url(images/film_error.png);
+}
+.processing-recording.om-icon {
+	padding-left: 18px;
+	background-image: url(images/film_processing.png);
+}
+.my-recordings.om-icon {
+	padding-left: 18px;
+	background-image: url(images/house_link.png);
+}
+.public-recordings.om-icon {
+	padding-left: 18px;
+	background-image: url(images/world_link.png);
+}
+.tree-theme-windows span.tree-content {
+	display: flex !important;
+}
+.recording.item {
+	position: relative;
+	vertical-align: top;
+}
+.recording.item .name {
+	color: black;
+	display: block;
+	overflow: hidden;
+	width: 230px;
+}
+.recording.item .errors {
+	position: absolute;
+	right: 0px;
+	background-image: url(images/script_error.png);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	padding-right: 20px;
+}
+.recording.dialog.errors {
+	width: 600px;
+	height: 500px;
+	font-size: small;
+}
+.recording.dialog.errors .alert {
+	color: red;
+}
+.recording.dialog.errors .message {
+	display: block;
+	unicode-bidi: embed;
+	font-family: monospace;
+	white-space: pre;
+	margin: 0;
+}
+.online.om-icon {
+	background-image: url(images/bullet_green.png);
+}
+.offline.om-icon {
+	background-image: url(images/bullet_red.png);
+}
+.error {
+	color: red;
+}
+.message {
+	margin: 50px;
+	border: 1px solid black;
+	padding: 15px;
+	-webkit-border-radius: 8px;
+	border-radius: 8px;
+}
+.ui-progressbar div { 
+	text-align: center;
+	padding-top: 7px;
+	font-weight: bold;
+}
+table.messages {
+	width: 100%;
+	min-height: 500px;
+}
+table.messages td.side, table.messages td.main {
+	vertical-align: top;
+}
+table.messages td.side.left {
+	min-width: 150px;
+	overflow-x: hidden;
+}
+table.messages td.side.right {
+	min-width: 200px;
+	overflow-x: hidden;
+}
+table.messages td.main {
+	width: 100%;
+}
+.email {
+	padding-left: 25px;
+	background-repeat: no-repeat !important;
+	background-position: 5px 3px !important;
+	padding-top: 2px;
+	display: block;
+	text-align:left;
+}
+.email.new {
+	background-image: url(images/email_add.png);
+	font-weight: normal;
+}
+.email.new .ui-button-text, .email.newdir .ui-button-text {
+	padding: 0;
+}
+.email.inbox {
+	background-image: url(images/basket_put.png);
+}
+.email.sent {
+	background-image: url(images/email_go.png);
+}
+.email.trash {
+	background-image: url(images/email_delete.png);
+}
+.email.newdir {
+	background-image: url(images/folder_add.png);
+	font-weight: normal;
+}
+.email.folder {
+	background-image: url(images/folder.png);
+	font-weight: normal;
+	position: relative;
+}
+.email.folder .delete {
+	position:absolute;
+	right: 2px;
+	top: 2px;
+	background-image: url(images/cross.png);
+	font-weight: normal;
+	padding: 0;
+	display: inline-block;
+	background-position: 0;
+	width: 18px;
+	height: 18px;
+}
+.messages.column.label {
+	width: 20px;
+	min-height: inherit;
+}
+input[type="text"].messages.text, .messages.text.to {
+	width: 100%;
+	max-height: 100px;
+	overflow-y: auto;
+}
+textarea.messages.body {
+	width: 100%;
+	height: 300px;
+}
+select.messages.selector {
+	width: 220px;
+}
+.info-text {
+	background-image: url(images/information.png);
+	background-repeat: no-repeat;
+	background-position: left top;
+	cursor: default;
+	border: none;
+	padding-left: 20px;
+	font-style: italic;
+}
+.invisible-form-component {
+	position: absolute;
+	top: -9999px;
+	width: 1px;
+	height: 1px;
+}
+#messagesTable tr.unread {
+	font-weight: bold;
+}
+.fht-tbody {
+	background-color: white;
+}
+#searchUsersTable th, .fht-table th {
+	font-weight: bold !important;
+	text-align: left;
+}
+#ui-datepicker-div{
+    z-index: 100 !important;
+}
+.room-list {
+	border-collapse: collapse;
+}
+.room-row {
+	background-color: rgb(248, 248, 248);
+	border-bottom: 5px solid white;
+}
+.select2-results .select2-result .select2-result-label .user.external
+, .select2-results .select2-result .select2-result-label .user.internal
+, .select2-choices .select2-search-choice .user.external
+, .select2-choices .select2-search-choice .user.internal {
+	padding-left: 18px;
+	background-repeat: no-repeat;
+	background-position: 0px 2px;
+}
+.select2-results .select2-result .select2-result-label .user.external
+, .select2-choices .select2-search-choice .user.external {
+	background-image: url(images/user_go.png);
+}
+.select2-results .select2-result .select2-result-label .user.internal
+, .select2-choices .select2-search-choice .user.internal {
+	background-image: url(images/user.png);
+}
+.page.recording {
+	padding-top: 40px;
+}
+.page.recording .video, .page.recording .info {
+	display: inline-block;
+	float: left;
+	padding-left: 20px;
+}
+.page.recording .video {
+	min-width: 400px;
+}
+.rooms.title {
+	font-weight: bold;
+	padding: 10px;
+	padding-bottom: 0;
+}
+.rooms.desc {
+	margin: 10px;
+	max-width: 900px;
+}
+.user.info.panel legend {
+	font-style: italic;
+	text-align: right;
+}
+.user.info.panel fieldset table, .user.info.panel fieldset table textarea {
+	width: 100%;
+}
+form .input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	padding: 0px 0px;
+	width: 280px;
+	margin: 2px 2px;
+}
+.date.time.picker {
+	font-size: 12px;
+	white-space: nowrap;
+}
diff --git a/src/main/webapp/css/theme_om/images/animated-overlay.gif b/src/main/webapp/css/theme_om/images/animated-overlay.gif
new file mode 100644
index 0000000..d441f75
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/animated-overlay.gif
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/src/main/webapp/css/theme_om/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
new file mode 100644
index 0000000..3d227f6
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_flat_15_cd0a0a_40x100.png b/src/main/webapp/css/theme_om/images/ui-bg_flat_15_cd0a0a_40x100.png
new file mode 100644
index 0000000..4f7b7da
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_flat_15_cd0a0a_40x100.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_glass_100_e4f1fb_1x400.png b/src/main/webapp/css/theme_om/images/ui-bg_glass_100_e4f1fb_1x400.png
new file mode 100644
index 0000000..cdbffcd
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_glass_100_e4f1fb_1x400.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_glass_50_3baae3_1x400.png b/src/main/webapp/css/theme_om/images/ui-bg_glass_50_3baae3_1x400.png
new file mode 100644
index 0000000..06151c3
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_glass_50_3baae3_1x400.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_glass_80_d7ebf9_1x400.png b/src/main/webapp/css/theme_om/images/ui-bg_glass_80_d7ebf9_1x400.png
new file mode 100644
index 0000000..f45c2fd
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_glass_80_d7ebf9_1x400.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
new file mode 100644
index 0000000..86f4fab
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_70_000000_1x100.png b/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_70_000000_1x100.png
new file mode 100644
index 0000000..9462a93
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_highlight-hard_70_000000_1x100.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_100_deedf7_1x100.png
new file mode 100644
index 0000000..5304e00
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_100_deedf7_1x100.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
new file mode 100644
index 0000000..a58f8f0
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-icons_2694e8_256x240.png b/src/main/webapp/css/theme_om/images/ui-icons_2694e8_256x240.png
new file mode 100644
index 0000000..252bf0f
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-icons_2694e8_256x240.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-icons_2e83ff_256x240.png b/src/main/webapp/css/theme_om/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..84b601b
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-icons_3d80b3_256x240.png b/src/main/webapp/css/theme_om/images/ui-icons_3d80b3_256x240.png
new file mode 100644
index 0000000..ff1c26f
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-icons_3d80b3_256x240.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-icons_72a7cf_256x240.png b/src/main/webapp/css/theme_om/images/ui-icons_72a7cf_256x240.png
new file mode 100644
index 0000000..9d07914
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-icons_72a7cf_256x240.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/images/ui-icons_ffffff_256x240.png b/src/main/webapp/css/theme_om/images/ui-icons_ffffff_256x240.png
new file mode 100644
index 0000000..4f624bb
--- /dev/null
+++ b/src/main/webapp/css/theme_om/images/ui-icons_ffffff_256x240.png
Binary files differ
diff --git a/src/main/webapp/css/theme_om/jquery-ui-1.10.4.custom.css b/src/main/webapp/css/theme_om/jquery-ui-1.10.4.custom.css
new file mode 100644
index 0000000..76dd514
--- /dev/null
+++ b/src/main/webapp/css/theme_om/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,1176 @@
+/*! jQuery UI - v1.10.4 - 2014-01-28
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2C%20Helvetica%2C%20sans-serif&fwDefault=normal&fsDefault=16px&cornerRadius=6px&bgColorHeader=%23deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=%23aed0ea&fcHeader=%23222222&iconColorHeader=%2372a7cf&bgColorContent=%23f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=%23dddddd&fcContent=%23362b36&iconColorContent=%2372a7cf&bgColorDefault=%23d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=%23aed0ea&fcDefault=%232779aa&iconColorDefault=%233d80b3&bgColorHover=%23e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=%2374b2e2&fcHover=%230070a3&iconColorHover=%232694e8&bgColorActive=%233baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=%232694e8&fcActive=%23ffffff&iconColorActive=%23ffffff&bgColorHighlight=%23ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=%23f9dd34&fcHighlight=%23363636&iconColorHighlight=%232e83ff&bgColorError=%23cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=%23cd0a0a&fcError=%23ffffff&iconColorError=%23ffffff&bgColorOverlay=%23eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=%23000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+	display: none;
+}
+.ui-resizable-n {
+	cursor: n-resize;
+	height: 7px;
+	width: 100%;
+	top: -5px;
+	left: 0;
+}
+.ui-resizable-s {
+	cursor: s-resize;
+	height: 7px;
+	width: 100%;
+	bottom: -5px;
+	left: 0;
+}
+.ui-resizable-e {
+	cursor: e-resize;
+	width: 7px;
+	right: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-w {
+	cursor: w-resize;
+	width: 7px;
+	left: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-se {
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+	right: 1px;
+	bottom: 1px;
+}
+.ui-resizable-sw {
+	cursor: sw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	bottom: -5px;
+}
+.ui-resizable-nw {
+	cursor: nw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	top: -5px;
+}
+.ui-resizable-ne {
+	cursor: ne-resize;
+	width: 9px;
+	height: 9px;
+	right: -5px;
+	top: -5px;
+}
+.ui-selectable-helper {
+	position: absolute;
+	z-index: 100;
+	border: 1px dotted black;
+}
+.ui-accordion .ui-accordion-header {
+	display: block;
+	cursor: pointer;
+	position: relative;
+	margin-top: 2px;
+	padding: .5em .5em .5em .7em;
+	min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+	padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+	position: absolute;
+	left: .5em;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+	padding: 1em 2.2em;
+	border-top: 0;
+	overflow: auto;
+}
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
+.ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+	width: 2.4em;
+}
+.ui-button-icons-only {
+	width: 3.4em;
+}
+button.ui-button-icons-only {
+	width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+	display: block;
+	line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+	padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+	padding: .4em;
+	text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+	padding-left: 2.1em;
+	padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+	padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+	left: 50%;
+	margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+	left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+	right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+	margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+.ui-datepicker {
+	width: 17em;
+	padding: .2em .2em 0;
+	display: none;
+}
+.ui-datepicker .ui-datepicker-header {
+	position: relative;
+	padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+	position: absolute;
+	top: 2px;
+	width: 1.8em;
+	height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+	top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+	left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+	right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+	left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+	right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+	display: block;
+	position: absolute;
+	left: 50%;
+	margin-left: -8px;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+	margin: 0 2.3em;
+	line-height: 1.8em;
+	text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+	font-size: 1em;
+	margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+	width: 49%;
+}
+.ui-datepicker table {
+	width: 100%;
+	font-size: .9em;
+	border-collapse: collapse;
+	margin: 0 0 .4em;
+}
+.ui-datepicker th {
+	padding: .7em .3em;
+	text-align: center;
+	font-weight: bold;
+	border: 0;
+}
+.ui-datepicker td {
+	border: 0;
+	padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+	display: block;
+	padding: .2em;
+	text-align: right;
+	text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+	background-image: none;
+	margin: .7em 0 0 0;
+	padding: 0 .2em;
+	border-left: 0;
+	border-right: 0;
+	border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+	float: right;
+	margin: .5em .2em .4em;
+	cursor: pointer;
+	padding: .2em .6em .3em .6em;
+	width: auto;
+	overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+	float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+	width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+	float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+	width: 95%;
+	margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+	width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+	width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+	width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+	border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+	clear: left;
+}
+.ui-datepicker-row-break {
+	clear: both;
+	width: 100%;
+	font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+	direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+	right: 2px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+	left: 2px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+	right: 1px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+	left: 1px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+	clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+	float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+	float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+	border-right-width: 0;
+	border-left-width: 1px;
+}
+.ui-dialog {
+	overflow: hidden;
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 20px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+	cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
+.ui-menu {
+	list-style: none;
+	padding: 2px;
+	margin: 0;
+	display: block;
+	outline: none;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+	position: absolute;
+}
+.ui-menu .ui-menu-item {
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	/* support: IE10, see #8844 */
+	list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+	margin: 5px -2px 5px -2px;
+	height: 0;
+	font-size: 0;
+	line-height: 0;
+	border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration: none;
+	display: block;
+	padding: 2px .4em;
+	line-height: 1.5;
+	min-height: 0; /* support: IE7 */
+	font-weight: normal;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+
+.ui-menu .ui-state-disabled {
+	font-weight: normal;
+	margin: .4em 0 .2em;
+	line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+	cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+	position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+	position: relative;
+	padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+	position: absolute;
+	top: .2em;
+	left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+	position: static;
+	float: right;
+}
+.ui-progressbar {
+	height: 2em;
+	text-align: left;
+	overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+	margin: -1px;
+	height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+	background: url("images/animated-overlay.gif");
+	height: 100%;
+	filter: alpha(opacity=25);
+	opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+	background-image: none;
+}
+.ui-slider {
+	position: relative;
+	text-align: left;
+}
+.ui-slider .ui-slider-handle {
+	position: absolute;
+	z-index: 2;
+	width: 1.2em;
+	height: 1.2em;
+	cursor: default;
+}
+.ui-slider .ui-slider-range {
+	position: absolute;
+	z-index: 1;
+	font-size: .7em;
+	display: block;
+	border: 0;
+	background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+	filter: inherit;
+}
+
+.ui-slider-horizontal {
+	height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+	top: -.3em;
+	margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+	top: 0;
+	height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+	left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+	right: 0;
+}
+
+.ui-slider-vertical {
+	width: .8em;
+	height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+	left: -.3em;
+	margin-left: 0;
+	margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+	left: 0;
+	width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+	bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+	top: 0;
+}
+.ui-spinner {
+	position: relative;
+	display: inline-block;
+	overflow: hidden;
+	padding: 0;
+	vertical-align: middle;
+}
+.ui-spinner-input {
+	border: none;
+	background: none;
+	color: inherit;
+	padding: 0;
+	margin: .2em 0;
+	vertical-align: middle;
+	margin-left: .4em;
+	margin-right: 22px;
+}
+.ui-spinner-button {
+	width: 16px;
+	height: 50%;
+	font-size: .5em;
+	padding: 0;
+	margin: 0;
+	text-align: center;
+	position: absolute;
+	cursor: default;
+	display: block;
+	overflow: hidden;
+	right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+	border-top: none;
+	border-bottom: none;
+	border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+	position: absolute;
+	margin-top: -8px;
+	top: 50%;
+	left: 0;
+}
+.ui-spinner-up {
+	top: 0;
+}
+.ui-spinner-down {
+	bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+	/* need to fix icons sprite */
+	background-position: -65px -16px;
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+	margin: 0;
+	padding: .2em .2em 0;
+}
+.ui-tabs .ui-tabs-nav li {
+	list-style: none;
+	float: left;
+	position: relative;
+	top: 0;
+	margin: 1px .2em 0 0;
+	border-bottom-width: 0;
+	padding: 0;
+	white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+	float: left;
+	padding: .5em 1em;
+	text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+	margin-bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+	cursor: text;
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+	cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+	display: block;
+	border-width: 0;
+	padding: 1em 1.4em;
+	background: none;
+}
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+	border-width: 2px;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 16px;
+}
+.ui-widget .ui-widget {
+	font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 1em;
+}
+.ui-widget-content {
+	border: 1px solid #dddddd;
+	background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x;
+	color: #362b36;
+}
+.ui-widget-content a {
+	color: #362b36;
+}
+.ui-widget-header {
+	border: 1px solid #aed0ea;
+	background: #deedf7 url(images/ui-bg_highlight-soft_100_deedf7_1x100.png) 50% 50% repeat-x;
+	color: #222222;
+	font-weight: bold;
+}
+.ui-widget-header a {
+	color: #222222;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+	border: 1px solid #aed0ea;
+	background: #d7ebf9 url(images/ui-bg_glass_80_d7ebf9_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #2779aa;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+	color: #2779aa;
+	text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+	border: 1px solid #74b2e2;
+	background: #e4f1fb url(images/ui-bg_glass_100_e4f1fb_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #0070a3;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+	color: #0070a3;
+	text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+	border: 1px solid #2694e8;
+	background: #3baae3 url(images/ui-bg_glass_50_3baae3_1x400.png) 50% 50% repeat-x;
+	font-weight: normal;
+	color: #ffffff;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+	color: #ffffff;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+	border: 1px solid #f9dd34;
+	background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x;
+	color: #363636;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+	color: #363636;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+	border: 1px solid #cd0a0a;
+	background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x;
+	color: #ffffff;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+	color: #ffffff;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+	color: #ffffff;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+	font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+	opacity: .7;
+	filter:Alpha(Opacity=70);
+	font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+	opacity: .35;
+	filter:Alpha(Opacity=35);
+	background-image: none;
+}
+.ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	width: 16px;
+	height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+	background-image: url(images/ui-icons_72a7cf_256x240.png);
+}
+.ui-widget-header .ui-icon {
+	background-image: url(images/ui-icons_72a7cf_256x240.png);
+}
+.ui-state-default .ui-icon {
+	background-image: url(images/ui-icons_3d80b3_256x240.png);
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+	background-image: url(images/ui-icons_2694e8_256x240.png);
+}
+.ui-state-active .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+.ui-state-highlight .ui-icon {
+	background-image: url(images/ui-icons_2e83ff_256x240.png);
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+	background-image: url(images/ui-icons_ffffff_256x240.png);
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+	border-top-left-radius: 6px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+	border-top-right-radius: 6px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+	border-bottom-left-radius: 6px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+	border-bottom-right-radius: 6px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+	background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat;
+	opacity: .8;
+	filter: Alpha(Opacity=80);
+}
+.ui-widget-shadow {
+	margin: -7px 0 0 -7px;
+	padding: 7px;
+	background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30);
+	border-radius: 8px;
+}
diff --git a/src/main/webapp/default/_big_profile_pic.jpg b/src/main/webapp/default/_big_profile_pic.jpg
new file mode 100644
index 0000000..07a1286
--- /dev/null
+++ b/src/main/webapp/default/_big_profile_pic.jpg
Binary files differ
diff --git a/src/main/webapp/default/_chat_profile_pic.jpg b/src/main/webapp/default/_chat_profile_pic.jpg
new file mode 100644
index 0000000..15df4e5
--- /dev/null
+++ b/src/main/webapp/default/_chat_profile_pic.jpg
Binary files differ
diff --git a/src/main/webapp/default/_profile_phone.png b/src/main/webapp/default/_profile_phone.png
new file mode 100644
index 0000000..9ed6449
--- /dev/null
+++ b/src/main/webapp/default/_profile_phone.png
Binary files differ
diff --git a/src/main/webapp/default/_profile_profile_pic.jpg b/src/main/webapp/default/_profile_profile_pic.jpg
new file mode 100644
index 0000000..3b63f01
--- /dev/null
+++ b/src/main/webapp/default/_profile_profile_pic.jpg
Binary files differ
diff --git a/src/main/webapp/default/_thumb_deleted.jpg b/src/main/webapp/default/_thumb_deleted.jpg
new file mode 100644
index 0000000..18f0895
--- /dev/null
+++ b/src/main/webapp/default/_thumb_deleted.jpg
Binary files differ
diff --git a/src/main/webapp/default/deleted.jpg b/src/main/webapp/default/deleted.jpg
new file mode 100644
index 0000000..932c9bd
--- /dev/null
+++ b/src/main/webapp/default/deleted.jpg
Binary files differ
diff --git a/src/main/webapp/default/deleted.odp b/src/main/webapp/default/deleted.odp
new file mode 100644
index 0000000..892044c
--- /dev/null
+++ b/src/main/webapp/default/deleted.odp
Binary files differ
diff --git a/src/main/webapp/default/deleted.pdf b/src/main/webapp/default/deleted.pdf
new file mode 100644
index 0000000..85ef078
--- /dev/null
+++ b/src/main/webapp/default/deleted.pdf
Binary files differ
diff --git a/src/main/webapp/default/deleted.swf b/src/main/webapp/default/deleted.swf
new file mode 100644
index 0000000..061df24
--- /dev/null
+++ b/src/main/webapp/default/deleted.swf
Binary files differ
diff --git a/src/main/webapp/default/deleted.xcf b/src/main/webapp/default/deleted.xcf
new file mode 100644
index 0000000..67b2f85
--- /dev/null
+++ b/src/main/webapp/default/deleted.xcf
Binary files differ
diff --git a/src/main/webapp/default/profile_pic.jpg b/src/main/webapp/default/profile_pic.jpg
new file mode 100644
index 0000000..3b63f01
--- /dev/null
+++ b/src/main/webapp/default/profile_pic.jpg
Binary files differ
diff --git a/src/main/webapp/images/ajax-loader.gif b/src/main/webapp/images/ajax-loader.gif
new file mode 100644
index 0000000..69b652d
--- /dev/null
+++ b/src/main/webapp/images/ajax-loader.gif
Binary files differ
diff --git a/src/main/webapp/images/calendar.gif b/src/main/webapp/images/calendar.gif
new file mode 100644
index 0000000..d0abaa7
--- /dev/null
+++ b/src/main/webapp/images/calendar.gif
Binary files differ
diff --git a/src/main/webapp/images/delete.gif b/src/main/webapp/images/delete.gif
new file mode 100644
index 0000000..b6922ac
--- /dev/null
+++ b/src/main/webapp/images/delete.gif
Binary files differ
diff --git a/src/main/webapp/images/down.png b/src/main/webapp/images/down.png
new file mode 100644
index 0000000..f070ea6
--- /dev/null
+++ b/src/main/webapp/images/down.png
Binary files differ
diff --git a/src/main/webapp/images/edit.png b/src/main/webapp/images/edit.png
new file mode 100644
index 0000000..2e2a1c4
--- /dev/null
+++ b/src/main/webapp/images/edit.png
Binary files differ
diff --git a/src/main/webapp/images/refresh.gif b/src/main/webapp/images/refresh.gif
new file mode 100644
index 0000000..7aff1a9
--- /dev/null
+++ b/src/main/webapp/images/refresh.gif
Binary files differ
diff --git a/src/main/webapp/images/up.png b/src/main/webapp/images/up.png
new file mode 100644
index 0000000..5d10417
--- /dev/null
+++ b/src/main/webapp/images/up.png
Binary files differ
diff --git a/src/main/webapp/js/history.js b/src/main/webapp/js/history.js
new file mode 100644
index 0000000..2cb34f8
--- /dev/null
+++ b/src/main/webapp/js/history.js
@@ -0,0 +1,696 @@
+/*
+ *
+ *  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.
+ *
+ */
+BrowserHistoryUtils = {
+    addEvent: function(elm, evType, fn, useCapture) {
+        useCapture = useCapture || false;
+        if (elm.addEventListener) {
+            elm.addEventListener(evType, fn, useCapture);
+            return true;
+        }
+        else if (elm.attachEvent) {
+            var r = elm.attachEvent('on' + evType, fn);
+            return r;
+        }
+        else {
+            elm['on' + evType] = fn;
+        }
+    }
+}
+
+BrowserHistory = (function() {
+    // type of browser
+    var browser = {
+        ie: false, 
+        ie8: false, 
+        firefox: false, 
+        safari: false, 
+        opera: false, 
+        version: -1
+    };
+
+    // Default app state URL to use when no fragment ID present
+    var defaultHash = '';
+
+    // Last-known app state URL
+    var currentHref = document.location.href;
+
+    // Initial URL (used only by IE)
+    var initialHref = document.location.href;
+
+    // Initial URL (used only by IE)
+    var initialHash = document.location.hash;
+
+    // History frame source URL prefix (used only by IE)
+    var historyFrameSourcePrefix = 'history/historyFrame.html?';
+
+    // History maintenance (used only by Safari)
+    var currentHistoryLength = -1;
+    
+    // Flag to denote the existence of onhashchange
+    var browserHasHashChange = false;
+
+    var historyHash = [];
+
+    var initialState = createState(initialHref, initialHref + '#' + initialHash, initialHash);
+
+    var backStack = [];
+    var forwardStack = [];
+
+    var currentObjectId = null;
+
+    //UserAgent detection
+    var useragent = navigator.userAgent.toLowerCase();
+
+    if (useragent.indexOf("opera") != -1) {
+        browser.opera = true;
+    } else if (useragent.indexOf("msie") != -1) {
+        browser.ie = true;
+        browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
+        if (browser.version == 8)
+        {
+            browser.ie = false;
+            browser.ie8 = true;
+        }
+    } else if (useragent.indexOf("safari") != -1) {
+        browser.safari = true;
+        browser.version = parseFloat(useragent.substring(useragent.indexOf('safari') + 7));
+    } else if (useragent.indexOf("gecko") != -1) {
+        browser.firefox = true;
+    }
+
+    if (browser.ie == true && browser.version == 7) {
+        window["_ie_firstload"] = false;
+    }
+
+    function hashChangeHandler()
+    {
+        currentHref = document.location.href;
+        var flexAppUrl = getHash();
+        //ADR: to fix multiple
+        if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) {
+            var pl = getPlayers();
+            for (var i = 0; i < pl.length; i++) {
+                pl[i].browserURLChange(flexAppUrl);
+            }
+        } else {
+            getPlayer().browserURLChange(flexAppUrl);
+        }
+    }
+
+    // Accessor functions for obtaining specific elements of the page.
+    function getHistoryFrame()
+    {
+        return document.getElementById('ie_historyFrame');
+    }
+
+    function getFormElement()
+    {
+        return document.getElementById('safari_formDiv');
+    }
+
+    function getRememberElement()
+    {
+        return document.getElementById("safari_remember_field");
+    }
+
+    // Get the Flash player object for performing ExternalInterface callbacks.
+    // Updated for changes to SWFObject2.
+    function getPlayer(id) {
+        var i;
+
+		if (id && document.getElementById(id)) {
+			var r = document.getElementById(id);
+			if (typeof r.SetVariable != "undefined") {
+				return r;
+			}
+			else {
+				var o = r.getElementsByTagName("object");
+				var e = r.getElementsByTagName("embed");
+                for (i = 0; i < o.length; i++) {
+                    if (typeof o[i].browserURLChange != "undefined")
+                        return o[i];
+                }
+                for (i = 0; i < e.length; i++) {
+                    if (typeof e[i].browserURLChange != "undefined")
+                        return e[i];
+                }
+			}
+		}
+		else {
+			var o = document.getElementsByTagName("object");
+			var e = document.getElementsByTagName("embed");
+            for (i = 0; i < e.length; i++) {
+                if (typeof e[i].browserURLChange != "undefined")
+                {
+                    return e[i];
+                }
+            }
+            for (i = 0; i < o.length; i++) {
+                if (typeof o[i].browserURLChange != "undefined")
+                {
+                    return o[i];
+                }
+            }
+		}
+		return undefined;
+	}
+    
+    function getPlayers() {
+        var i;
+        var players = [];
+        if (players.length == 0) {
+            var tmp = document.getElementsByTagName('object');
+            for (i = 0; i < tmp.length; i++)
+            {
+                if (typeof tmp[i].browserURLChange != "undefined")
+                    players.push(tmp[i]);
+            }
+        }
+        if (players.length == 0 || players[0].object == null) {
+            var tmp = document.getElementsByTagName('embed');
+            for (i = 0; i < tmp.length; i++)
+            {
+                if (typeof tmp[i].browserURLChange != "undefined")
+                    players.push(tmp[i]);
+            }
+        }
+        return players;
+    }
+
+	function getIframeHash() {
+		var doc = getHistoryFrame().contentWindow.document;
+		var hash = String(doc.location.search);
+		if (hash.length == 1 && hash.charAt(0) == "?") {
+			hash = "";
+		}
+		else if (hash.length >= 2 && hash.charAt(0) == "?") {
+			hash = hash.substring(1);
+		}
+		return hash;
+	}
+
+    /* Get the current location hash excluding the '#' symbol. */
+    function getHash() {
+       // It would be nice if we could use document.location.hash here,
+       // but it's faulty sometimes.
+       var idx = document.location.href.indexOf('#');
+       return (idx >= 0) ? document.location.href.substr(idx+1) : '';
+    }
+
+    /* Get the current location hash excluding the '#' symbol. */
+    function setHash(hash) {
+       // It would be nice if we could use document.location.hash here,
+       // but it's faulty sometimes.
+       if (hash == '') hash = '#'
+       document.location.hash = hash;
+    }
+
+    function createState(baseUrl, newUrl, flexAppUrl) {
+        return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null };
+    }
+
+    /* Add a history entry to the browser.
+     *   baseUrl: the portion of the location prior to the '#'
+     *   newUrl: the entire new URL, including '#' and following fragment
+     *   flexAppUrl: the portion of the location following the '#' only
+     */
+    function addHistoryEntry(baseUrl, newUrl, flexAppUrl) {
+
+        //delete all the history entries
+        forwardStack = [];
+
+        if (browser.ie) {
+            //Check to see if we are being asked to do a navigate for the first
+            //history entry, and if so ignore, because it's coming from the creation
+            //of the history iframe
+            if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) {
+                currentHref = initialHref;
+                return;
+            }
+            if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) {
+                newUrl = baseUrl + '#' + defaultHash;
+                flexAppUrl = defaultHash;
+            } else {
+                // for IE, tell the history frame to go somewhere without a '#'
+                // in order to get this entry into the browser history.
+                getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl;
+            }
+            setHash(flexAppUrl);
+        } else {
+
+            //ADR
+            if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) {
+                initialState = createState(baseUrl, newUrl, flexAppUrl);
+            } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) {
+                backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl);
+            }
+
+            if (browser.safari && !browserHasHashChange) {
+                // for Safari, submit a form whose action points to the desired URL
+                if (browser.version <= 419.3) {
+                    var file = window.location.pathname.toString();
+                    file = file.substring(file.lastIndexOf("/")+1);
+                    getFormElement().innerHTML = '<form name="historyForm" action="'+file+'#' + flexAppUrl + '" method="GET"></form>';
+                    //get the current elements and add them to the form
+                    var qs = window.location.search.substring(1);
+                    var qs_arr = qs.split("&");
+                    for (var i = 0; i < qs_arr.length; i++) {
+                        var tmp = qs_arr[i].split("=");
+                        var elem = document.createElement("input");
+                        elem.type = "hidden";
+                        elem.name = tmp[0];
+                        elem.value = tmp[1];
+                        document.forms.historyForm.appendChild(elem);
+                    }
+                    document.forms.historyForm.submit();
+                } else {
+                    top.location.hash = flexAppUrl;
+                }
+                // We also have to maintain the history by hand for Safari
+                historyHash[history.length] = flexAppUrl;
+                _storeStates();
+            } else {
+                // Otherwise, just tell the browser to go there
+                setHash(flexAppUrl);
+            }
+        }
+        backStack.push(createState(baseUrl, newUrl, flexAppUrl));
+    }
+
+    function _storeStates() {
+        if (browser.safari) {
+            getRememberElement().value = historyHash.join(",");
+        }
+    }
+
+    function handleBackButton() {
+        //The "current" page is always at the top of the history stack.
+        var current = backStack.pop();
+        if (!current) { return; }
+        var last = backStack[backStack.length - 1];
+        if (!last && backStack.length == 0){
+            last = initialState;
+        }
+        forwardStack.push(current);
+    }
+
+    function handleForwardButton() {
+        //summary: private method. Do not call this directly.
+
+        var last = forwardStack.pop();
+        if (!last) { return; }
+        backStack.push(last);
+    }
+
+    function handleArbitraryUrl() {
+        //delete all the history entries
+        forwardStack = [];
+    }
+
+    /* Called periodically to poll to see if we need to detect navigation that has occurred */
+    function checkForUrlChange() {
+
+        if (browser.ie) {
+            if (currentHref != document.location.href && currentHref + '#' != document.location.href) {
+                //This occurs when the user has navigated to a specific URL
+                //within the app, and didn't use browser back/forward
+                //IE seems to have a bug where it stops updating the URL it
+                //shows the end-user at this point, but programatically it
+                //appears to be correct.  Do a full app reload to get around
+                //this issue.
+                if (browser.version < 7) {
+                    currentHref = document.location.href;
+                    document.location.reload();
+                } else {
+					if (getHash() != getIframeHash()) {
+						// this.iframe.src = this.blankURL + hash;
+						var sourceToSet = historyFrameSourcePrefix + getHash();
+						getHistoryFrame().src = sourceToSet;
+                        currentHref = document.location.href;
+					}
+                }
+            }
+        }
+
+        if (browser.safari && !browserHasHashChange) {
+            // For Safari, we have to check to see if history.length changed.
+            if (currentHistoryLength >= 0 && history.length != currentHistoryLength) {
+                //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|"));
+                var flexAppUrl = getHash();
+                if (browser.version < 528.16 /* Anything earlier than Safari 4.0 */)
+                {    
+                    // If it did change and we're running Safari 3.x or earlier, 
+                    // then we have to look the old state up in our hand-maintained 
+                    // array since document.location.hash won't have changed, 
+                    // then call back into BrowserManager.
+                currentHistoryLength = history.length;
+                    flexAppUrl = historyHash[currentHistoryLength];
+                }
+
+                //ADR: to fix multiple
+                if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) {
+                    var pl = getPlayers();
+                    for (var i = 0; i < pl.length; i++) {
+                        pl[i].browserURLChange(flexAppUrl);
+                    }
+                } else {
+                    getPlayer().browserURLChange(flexAppUrl);
+                }
+                _storeStates();
+            }
+        }
+        if (browser.firefox && !browserHasHashChange) {
+            if (currentHref != document.location.href) {
+                var bsl = backStack.length;
+
+                var urlActions = {
+                    back: false, 
+                    forward: false, 
+                    set: false
+                }
+
+                if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) {
+                    urlActions.back = true;
+                    // FIXME: could this ever be a forward button?
+                    // we can't clear it because we still need to check for forwards. Ugg.
+                    // clearInterval(this.locationTimer);
+                    handleBackButton();
+                }
+                
+                // first check to see if we could have gone forward. We always halt on
+                // a no-hash item.
+                if (forwardStack.length > 0) {
+                    if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) {
+                        urlActions.forward = true;
+                        handleForwardButton();
+                    }
+                }
+
+                // ok, that didn't work, try someplace back in the history stack
+                if ((bsl >= 2) && (backStack[bsl - 2])) {
+                    if (backStack[bsl - 2].flexAppUrl == getHash()) {
+                        urlActions.back = true;
+                        handleBackButton();
+                    }
+                }
+                
+                if (!urlActions.back && !urlActions.forward) {
+                    var foundInStacks = {
+                        back: -1, 
+                        forward: -1
+                    }
+
+                    for (var i = 0; i < backStack.length; i++) {
+                        if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) {
+                            arbitraryUrl = true;
+                            foundInStacks.back = i;
+                        }
+                    }
+                    for (var i = 0; i < forwardStack.length; i++) {
+                        if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) {
+                            arbitraryUrl = true;
+                            foundInStacks.forward = i;
+                        }
+                    }
+                    handleArbitraryUrl();
+                }
+
+                // Firefox changed; do a callback into BrowserManager to tell it.
+                currentHref = document.location.href;
+                var flexAppUrl = getHash();
+                //ADR: to fix multiple
+                if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) {
+                    var pl = getPlayers();
+                    for (var i = 0; i < pl.length; i++) {
+                        pl[i].browserURLChange(flexAppUrl);
+                    }
+                } else {
+                    getPlayer().browserURLChange(flexAppUrl);
+                }
+            }
+        }
+    }
+
+    var _initialize = function () {
+        
+        browserHasHashChange = ("onhashchange" in document.body);
+        
+        if (browser.ie)
+        {
+            var scripts = document.getElementsByTagName('script');
+            for (var i = 0, s; s = scripts[i]; i++) {
+                if (s.src.indexOf("history.js") > -1) {
+                    var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html");
+                }
+            }
+            historyFrameSourcePrefix = iframe_location + "?";
+            var src = historyFrameSourcePrefix;
+
+            var iframe = document.createElement("iframe");
+            iframe.id = 'ie_historyFrame';
+            iframe.name = 'ie_historyFrame';
+            iframe.src = 'javascript:false;'; 
+
+            try {
+                document.body.appendChild(iframe);
+            } catch(e) {
+                setTimeout(function() {
+                    document.body.appendChild(iframe);
+                }, 0);
+            }
+        }
+
+        if (browser.safari && !browserHasHashChange)
+        {
+            var rememberDiv = document.createElement("div");
+            rememberDiv.id = 'safari_rememberDiv';
+            document.body.appendChild(rememberDiv);
+            rememberDiv.innerHTML = '<input type="text" id="safari_remember_field" style="width: 500px;">';
+
+            var formDiv = document.createElement("div");
+            formDiv.id = 'safari_formDiv';
+            document.body.appendChild(formDiv);
+
+            var reloader_content = document.createElement('div');
+            reloader_content.id = 'safarireloader';
+            var scripts = document.getElementsByTagName('script');
+            for (var i = 0, s; s = scripts[i]; i++) {
+                if (s.src.indexOf("history.js") > -1) {
+                    html = (new String(s.src)).replace(".js", ".html");
+                }
+            }
+            reloader_content.innerHTML = '<iframe id="safarireloader-iframe" src="about:blank" frameborder="no" scrolling="no"></iframe>';
+            document.body.appendChild(reloader_content);
+            reloader_content.style.position = 'absolute';
+            reloader_content.style.left = reloader_content.style.top = '-9999px';
+            iframe = reloader_content.getElementsByTagName('iframe')[0];
+
+            if (document.getElementById("safari_remember_field").value != "" ) {
+                historyHash = document.getElementById("safari_remember_field").value.split(",");
+            }
+        }
+
+        if (browserHasHashChange)        
+            document.body.onhashchange = hashChangeHandler;
+    }
+
+    return {
+        historyHash: historyHash, 
+        backStack: function() { return backStack; }, 
+        forwardStack: function() { return forwardStack }, 
+        getPlayer: getPlayer, 
+        initialize: function(src) {
+            _initialize(src);
+        }, 
+        setURL: function(url) {
+            document.location.href = url;
+        }, 
+        getURL: function() {
+            return document.location.href;
+        }, 
+        getTitle: function() {
+            return document.title;
+        }, 
+        setTitle: function(title) {
+            try {
+                backStack[backStack.length - 1].title = title;
+            } catch(e) { }
+            //if on safari, set the title to be the empty string. 
+            if (browser.safari) {
+                if (title == "") {
+                    try {
+                    var tmp = window.location.href.toString();
+                    title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#"));
+                    } catch(e) {
+                        title = "";
+                    }
+                }
+            }
+            document.title = title;
+        }, 
+        setDefaultURL: function(def)
+        {
+            defaultHash = def;
+            def = getHash();
+            //trailing ? is important else an extra frame gets added to the history
+            //when navigating back to the first page.  Alternatively could check
+            //in history frame navigation to compare # and ?.
+            if (browser.ie)
+            {
+                window['_ie_firstload'] = true;
+                var sourceToSet = historyFrameSourcePrefix + def;
+                var func = function() {
+                    getHistoryFrame().src = sourceToSet;
+                    window.location.replace("#" + def);
+                    setInterval(checkForUrlChange, 50);
+                }
+                try {
+                    func();
+                } catch(e) {
+                    window.setTimeout(function() { func(); }, 0);
+                }
+            }
+
+            if (browser.safari)
+            {
+                currentHistoryLength = history.length;
+                if (historyHash.length == 0) {
+                    historyHash[currentHistoryLength] = def;
+                    var newloc = "#" + def;
+                    window.location.replace(newloc);
+                } else {
+                    //alert(historyHash[historyHash.length-1]);
+                }
+                setInterval(checkForUrlChange, 50);
+            }
+            
+            
+            if (browser.firefox || browser.opera)
+            {
+                var reg = new RegExp("#" + def + "$");
+                if (window.location.toString().match(reg)) {
+                } else {
+                    var newloc ="#" + def;
+                    window.location.replace(newloc);
+                }
+                setInterval(checkForUrlChange, 50);
+            }
+
+        }, 
+
+        /* Set the current browser URL; called from inside BrowserManager to propagate
+         * the application state out to the container.
+         */
+        setBrowserURL: function(flexAppUrl, objectId) {
+            if (browser.ie && typeof objectId != "undefined") {
+                currentObjectId = objectId;
+            }
+           //fromIframe = fromIframe || false;
+           //fromFlex = fromFlex || false;
+           //alert("setBrowserURL: " + flexAppUrl);
+           //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ;
+
+           var pos = document.location.href.indexOf('#');
+           var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href;
+           var newUrl = baseUrl + '#' + flexAppUrl;
+
+           if (document.location.href != newUrl && document.location.href + '#' != newUrl) {
+               currentHref = newUrl;
+               addHistoryEntry(baseUrl, newUrl, flexAppUrl);
+               currentHistoryLength = history.length;
+           }
+        }, 
+
+        browserURLChange: function(flexAppUrl) {
+            var objectId = null;
+            if (browser.ie && currentObjectId != null) {
+                objectId = currentObjectId;
+            }
+            
+            if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) {
+                var pl = getPlayers();
+                for (var i = 0; i < pl.length; i++) {
+                    try {
+                        pl[i].browserURLChange(flexAppUrl);
+                    } catch(e) { }
+                }
+            } else {
+                try {
+                    getPlayer(objectId).browserURLChange(flexAppUrl);
+                } catch(e) { }
+            }
+
+            currentObjectId = null;
+        },
+        getUserAgent: function() {
+            return navigator.userAgent;
+        },
+        getPlatform: function() {
+            return navigator.platform;
+        }
+
+    }
+
+})();
+
+// Initialization
+
+// Automated unit testing and other diagnostics
+
+function setURL(url)
+{
+    document.location.href = url;
+}
+
+function backButton()
+{
+    history.back();
+}
+
+function forwardButton()
+{
+    history.forward();
+}
+
+function goForwardOrBackInHistory(step)
+{
+    history.go(step);
+}
+
+//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); });
+(function(i) {
+    var u =navigator.userAgent;var e=/*@cc_on!@*/false; 
+    var st = setTimeout;
+    if(/webkit/i.test(u)){
+        st(function(){
+            var dr=document.readyState;
+            if(dr=="loaded"||dr=="complete"){i()}
+            else{st(arguments.callee,10);}},10);
+    } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
+        document.addEventListener("DOMContentLoaded",i,false);
+    } else if(e){
+    (function(){
+        var t=document.createElement('doc:rdy');
+        try{t.doScroll('left');
+            i();t=null;
+        }catch(e){st(arguments.callee,0);}})();
+    } else{
+        window.onload=i;
+    }
+})( function() {BrowserHistory.initialize();} );
diff --git a/src/main/webapp/js/jquery.ui.menubar.js b/src/main/webapp/js/jquery.ui.menubar.js
new file mode 100644
index 0000000..f241e5e
--- /dev/null
+++ b/src/main/webapp/js/jquery.ui.menubar.js
@@ -0,0 +1,317 @@
+/*
+ * jQuery UI Menubar @VERSION
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menubar
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ *	jquery.ui.menu.js
+ */
+(function( $ ) {
+
+// TODO when mixing clicking menus and keyboard navigation, focus handling is broken
+// there has to be just one item that has tabindex
+$.widget( "ui.menubar", {
+	version: "@VERSION",
+	options: {
+		autoExpand: false,
+		buttons: false,
+		items: "li",
+		menuElement: "ul",
+		menuIcon: false,
+		position: {
+			my: "left top",
+			at: "left bottom"
+		}
+	},
+	_create: function() {
+		var that = this;
+		this.menuItems = this.element.children( this.options.items );
+		this.items = this.menuItems.children( "button, a" );
+
+		this.menuItems
+			.addClass( "ui-menubar-item" )
+			.attr( "role", "presentation" );
+		// let only the first item receive focus
+		this.items.slice(1).attr( "tabIndex", -1 );
+
+		this.element
+			.addClass( "ui-menubar ui-widget-header ui-helper-clearfix" )
+			.attr( "role", "menubar" );
+		this._focusable( this.items );
+		this._hoverable( this.items );
+		this.items.siblings( this.options.menuElement )
+			.menu({
+				position: {
+					within: this.options.position.within
+				},
+				select: function( event, ui ) {
+					ui.item.parents( "ul.ui-menu:last" ).hide();
+					that._close();
+					// TODO what is this targetting? there's probably a better way to access it
+					$(event.target).prev().focus();
+					that._trigger( "select", event, ui );
+				},
+				menus: that.options.menuElement
+			})
+			.hide()
+			.attr({
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			})
+			.bind( "keydown.menubar", function( event ) {
+				var menu = $( this );
+				if ( menu.is( ":hidden" ) ) {
+					return;
+				}
+				switch ( event.keyCode ) {
+				case $.ui.keyCode.LEFT:
+					that.previous( event );
+					event.preventDefault();
+					break;
+				case $.ui.keyCode.RIGHT:
+					that.next( event );
+					event.preventDefault();
+					break;
+				}
+			});
+		this.items.each(function() {
+			var input = $(this),
+				// TODO menu var is only used on two places, doesn't quite justify the .each
+				menu = input.next( that.options.menuElement );
+
+			// might be a non-menu button
+			if ( menu.length ) {
+				input.bind( "click.menubar focus.menubar mouseenter.menubar", function( event ) {
+					// ignore triggered focus event
+					if ( event.type === "focus" && !event.originalEvent ) {
+						return;
+					}
+					event.preventDefault();
+					// TODO can we simplify or extractthis check? especially the last two expressions
+					// there's a similar active[0] == menu[0] check in _open
+					if ( event.type === "click" && menu.is( ":visible" ) && that.active && that.active[0] === menu[0] ) {
+						that._close();
+						return;
+					}
+					if ( ( that.open && event.type === "mouseenter" ) || event.type === "click" || that.options.autoExpand ) {
+						if( that.options.autoExpand ) {
+							clearTimeout( that.closeTimer );
+						}
+
+						that._open( event, menu );
+					}
+				})
+				.bind( "keydown", function( event ) {
+					switch ( event.keyCode ) {
+					case $.ui.keyCode.SPACE:
+					case $.ui.keyCode.UP:
+					case $.ui.keyCode.DOWN:
+						that._open( event, $( this ).next() );
+						event.preventDefault();
+						break;
+					case $.ui.keyCode.LEFT:
+						that.previous( event );
+						event.preventDefault();
+						break;
+					case $.ui.keyCode.RIGHT:
+						that.next( event );
+						event.preventDefault();
+						break;
+					}
+				})
+				.attr( "aria-haspopup", "true" );
+
+				// TODO review if these options (menuIcon and buttons) are a good choice, maybe they can be merged
+				if ( that.options.menuIcon ) {
+					input.addClass( "ui-state-default" ).append( "<span class='ui-button-icon-secondary ui-icon ui-icon-triangle-1-s'></span>" );
+					input.removeClass( "ui-button-text-only" ).addClass( "ui-button-text-icon-secondary" );
+				}
+			}
+
+			input
+				.addClass( "ui-button ui-widget ui-button-text-only ui-menubar-link" )
+				.attr( "role", "menuitem" )
+				.wrapInner( "<span class='ui-button-text'></span>" );
+
+			if ( that.options.buttons ) {
+				input.removeClass( "ui-menubar-link" ).addClass( "ui-state-default" );
+			}
+		});
+		that._on( {
+			keydown: function( event ) {
+				if ( event.keyCode === $.ui.keyCode.ESCAPE && that.active && that.active.menu( "collapse", event ) !== true ) {
+					var active = that.active;
+					that.active.blur();
+					that._close( event );
+					active.prev().focus();
+				}
+			},
+			focusin: function( event ) {
+				clearTimeout( that.closeTimer );
+			},
+			focusout: function( event ) {
+				that.closeTimer = setTimeout( function() {
+					that._close( event );
+				}, 150);
+			},
+			"mouseleave .ui-menubar-item": function( event ) {
+				if ( that.options.autoExpand ) {
+					that.closeTimer = setTimeout( function() {
+						that._close( event );
+					}, 150);
+				}
+			},
+			"mouseenter .ui-menubar-item": function( event ) {
+				clearTimeout( that.closeTimer );
+			}
+		});
+
+		// Keep track of open submenus
+		this.openSubmenus = 0;
+	},
+
+	_destroy : function() {
+		this.menuItems
+			.removeClass( "ui-menubar-item" )
+			.removeAttr( "role" );
+
+		this.element
+			.removeClass( "ui-menubar ui-widget-header ui-helper-clearfix" )
+			.removeAttr( "role" )
+			.unbind( ".menubar" );
+
+		this.items
+			.unbind( ".menubar" )
+			.removeClass( "ui-button ui-widget ui-button-text-only ui-menubar-link ui-state-default" )
+			.removeAttr( "role" )
+			.removeAttr( "aria-haspopup" )
+			// TODO unwrap?
+			.children( "span.ui-button-text" ).each(function( i, e ) {
+				var item = $( this );
+				item.parent().html( item.html() );
+			})
+			.end()
+			.children( ".ui-icon" ).remove();
+
+		this.element.find( ":ui-menu" )
+			.menu( "destroy" )
+			.show()
+			.removeAttr( "aria-hidden" )
+			.removeAttr( "aria-expanded" )
+			.removeAttr( "tabindex" )
+			.unbind( ".menubar" );
+	},
+
+	_close: function() {
+		if ( !this.active || !this.active.length ) {
+			return;
+		}
+		this.active
+			.menu( "collapseAll" )
+			.hide()
+			.attr({
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			});
+		this.active
+			.prev()
+			.removeClass( "ui-state-active" )
+			.removeAttr( "tabIndex" );
+		this.active = null;
+		this.open = false;
+		this.openSubmenus = 0;
+	},
+
+	_open: function( event, menu ) {
+		// on a single-button menubar, ignore reopening the same menu
+		if ( this.active && this.active[0] === menu[0] ) {
+			return;
+		}
+		// TODO refactor, almost the same as _close above, but don't remove tabIndex
+		if ( this.active ) {
+			this.active
+				.menu( "collapseAll" )
+				.hide()
+				.attr({
+					"aria-hidden": "true",
+					"aria-expanded": "false"
+				});
+			this.active
+				.prev()
+				.removeClass( "ui-state-active" );
+		}
+		// set tabIndex -1 to have the button skipped on shift-tab when menu is open (it gets focus)
+		var button = menu.prev().addClass( "ui-state-active" ).attr( "tabIndex", -1 );
+		this.active = menu
+			.show()
+			.position( $.extend({
+				of: button
+			}, this.options.position ) )
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.menu("focus", event, menu.children( ".ui-menu-item" ).first() )
+			// TODO need a comment here why both events are triggered
+			.focus()
+			.focusin();
+		this.open = true;
+	},
+
+	next: function( event ) {
+		if ( this.open && this.active.data( "menu" ).active.has( ".ui-menu" ).length ) {
+			// Track number of open submenus and prevent moving to next menubar item
+			this.openSubmenus++;
+			return;
+		}
+		this.openSubmenus = 0;
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		if ( this.open && this.openSubmenus ) {
+			// Track number of open submenus and prevent moving to previous menubar item
+			this.openSubmenus--;
+			return;
+		}
+		this.openSubmenus = 0;
+		this._move( "prev", "last", event );
+	},
+
+	_move: function( direction, filter, event ) {
+		var next,
+			wrapItem;
+		if ( this.open ) {
+			next = this.active.closest( ".ui-menubar-item" )[ direction + "All" ]( this.options.items ).first().children( ".ui-menu" ).eq( 0 );
+			wrapItem = this.menuItems[ filter ]().children( ".ui-menu" ).eq( 0 );
+		} else {
+			if ( event ) {
+				next = $( event.target ).closest( ".ui-menubar-item" )[ direction + "All" ]( this.options.items ).children( ".ui-menubar-link" ).eq( 0 );
+				wrapItem = this.menuItems[ filter ]().children( ".ui-menubar-link" ).eq( 0 );
+			} else {
+				next = wrapItem = this.menuItems.children( "a" ).eq( 0 );
+			}
+		}
+
+		if ( next.length ) {
+			if ( this.open ) {
+				this._open( event, next );
+			} else {
+				next.removeAttr( "tabIndex")[0].focus();
+			}
+		} else {
+			if ( this.open ) {
+				this._open( event, wrapItem );
+			} else {
+				wrapItem.removeAttr( "tabIndex")[0].focus();
+			}
+		}
+	}
+});
+
+}( jQuery ));
diff --git a/src/main/webapp/js/openmeetings_functions.js b/src/main/webapp/js/openmeetings_functions.js
new file mode 100644
index 0000000..6330bf7
--- /dev/null
+++ b/src/main/webapp/js/openmeetings_functions.js
@@ -0,0 +1,64 @@
+/*
+  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.
+  
+*/
+/*
+ * Functions to be included in the HTML wrapper,
+ * see the templates dir (*.vm) for the include statements
+ *  
+ */ 
+
+function getBrowserInfo() {
+	//alert(navigator.userAgent);
+	document.getElementById("lzapp").getBrowserInfoCallback(navigator.userAgent);
+}
+
+function getBrowserLang() {
+	//alert(navigator.userAgent);
+	document.getElementById("lzapp").getBrowserLangCallback(navigator.language);
+}
+
+function redirectToUrl(url) {
+	//alert(navigator.userAgent);
+	window.location = url;
+	
+	document.getElementById("lzapp").redirectToUrlCallback("ok");
+}
+
+function loadingComplete() {
+	document.getElementById("swfloading").style.display = 'none';
+	var lzApp = document.getElementById("lzappContainer");
+	lzApp.style.width = '100%';
+	lzApp.style.height = '100%';
+}
+
+function getTimeZoneOffsetMinutes() {
+	var rightNow = new Date(), std_time_offset = -rightNow.getTimezoneOffset();
+	for (var i = 0; i < 12; ++i) {
+		var d = new Date(rightNow.getFullYear(), i, 1, 0, 0, 0, 0), offset = -d.getTimezoneOffset();
+		if (offset < std_time_offset) {
+			std_time_offset = offset;
+			break;
+		}
+	}
+    return std_time_offset;
+}
+
+function getTimeZoneOffset() {
+    document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetMinutes()/60);
+}
diff --git a/src/main/webapp/languages/arabic.xml b/src/main/webapp/languages/arabic.xml
new file mode 100644
index 0000000..f3642c1
--- /dev/null
+++ b/src/main/webapp/languages/arabic.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>المؤتمر</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>اجتماع</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>الاحداث</value>
+  </string>
+  <string id="4" name="settings">
+    <value>أماكن</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>نبذة</value>
+  </string>
+  <string id="6" name="admin">
+    <value>الادارة</value>
+  </string>
+  <string id="7" name="stop">
+    <value>توقف</value>
+  </string>
+  <string id="8" name="record">
+    <value>سجل</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>لا ملف متاحة</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>سجل قبل المعلمين</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>ترتبط المستخدمين :</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>بدء المؤتمر</value>
+  </string>
+  <string id="13" name="myname">
+    <value>اسمي</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>الفيديو</value>
+  </string>
+  <string id="15" name="import">
+    <value>تحميل الملفات</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>تحديث قائمة</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>الى الملف الرئيسي</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>استطلاع جديد</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>استطلاع جديد للمؤتمر.</value>
+  </string>
+  <string id="20" name="question">
+    <value>السؤال :</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>نوع من استطلاع للرأي يؤكد :</value>
+  </string>
+  <string id="22" name="create">
+    <value>خلق</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>معلومات : كل صلة يتلقى المستخدم رسالة مع استطلاع جديد.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>انشاء استطلاع</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>الغاء</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>نعم / لا</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>عددي 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>استطلاع الرأى</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>لا بد من وسيط لتهيئة السؤال</value>
+  </string>
+  <string id="30" name="vote">
+    <value>تصويتك مسجلة.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>حسابك قد صوتت بالفعل في هذا الاستطلاع.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>تصويت!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>ردكم :</value>
+  </string>
+  <string id="34" name="yes">
+    <value>نعم</value>
+  </string>
+  <string id="35" name="no">
+    <value>لا</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>وسوف wissen :</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>نتائج الاستطلاع</value>
+  </string>
+  <string id="38" name="question">
+    <value>السؤال :</value>
+  </string>
+  <string id="39" name="results">
+    <value>النتائج :</value>
+  </string>
+  <string id="40" name="answers">
+    <value>الاجوبه :</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>لا الاستطلاعات قد بدأت.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>تصويت!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>الاجتماع (ماكس 4 مقاعد)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>المؤتمر (ماكس 50 مقعدا)</value>
+  </string>
+  <string id="45" name="type">
+    <value>النوع</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>المقاعد الاخرى</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>بالفعل اختارت</value>
+  </string>
+  <string id="48" name="enter">
+    <value>أدخل</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>الوسيط قد غادر الجلسة.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>نظام المعلومات</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>اختيار جهاز</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>اختيار كاميرا ويب :</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>اختيار الجزئي :</value>
+  </string>
+  <string id="54" name="ok">
+    <value>الموافقة</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>الغاء</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>انت بحاجة الى اعادة وصل.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>تحرير الاعداد.</value>
+  </string>
+  <string id="58" name="course">
+    <value>وبطبيعة الحال :</value>
+  </string>
+  <string id="59" name="language">
+    <value>اللغة :</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>الموافقة</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>الغاء</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>بيضاء واضحة</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>هل تريد أن تكون لوحة جديدة قبل ان افرغوا الصورة المضافه؟</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>لا أسأل مرة اخرى</value>
+  </string>
+  <string id="65" name="no">
+    <value>لا</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>تحرير الاعداد</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>تأكيد طلب قبل افراغ بيضاء.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>معلومات مستخدم</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>واضح drawarea</value>
+  </string>
+  <string id="70" name="undo">
+    <value>الغاء</value>
+  </string>
+  <string id="71" name="redo">
+    <value>أعادة</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>اختر جسم</value>
+  </string>
+  <string id="73" name="text">
+    <value>النص</value>
+  </string>
+  <string id="74" name="paint">
+    <value>الطلاء</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>استرعى الخط</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>إبراز أوجه</value>
+  </string>
+  <string id="77" name="rect">
+    <value>مستطيل</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>بيضوي</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>السهم</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>اختار حذف البند</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>طلب للحصول على الاعتدال</value>
+  </string>
+  <string id="82" name="apply">
+    <value>تطبيق</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>الغاء</value>
+  </string>
+  <string id="84" name="mod">
+    <value>لتصبح مشرف</value>
+  </string>
+  <string id="85" name="close">
+    <value>وثيق</value>
+  </string>
+  <string id="86" name="italic">
+    <value>مائل</value>
+  </string>
+  <string id="87" name="bold">
+    <value>اجترئ</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>انتظار</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>مستخدم يريد ان يطبق لالاعتدال :</value>
+  </string>
+  <string id="90" name="accept">
+    <value>يقبل</value>
+  </string>
+  <string id="91" name="reject">
+    <value>نرفض</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>الغاء</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>إرسال طلب الى المستخدمين التالية</value>
+  </string>
+  <string id="94" name="accept">
+    <value>مقبول</value>
+  </string>
+  <string id="95" name="reject">
+    <value>رفض</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>تغيير وسيط</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>انت لا اعتدال هذا بالطبع!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>رئيس الجلسة :</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>هذه الغرفة بالكامل. عفوا يرجى اعادة المحاوله لاحقا.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>بيضوي</value>
+  </string>
+  <string id="101" name="close">
+    <value>وثيق</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>خطأ في البيانات المدخله</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>اسم المستخدم يجب ان تكون على الأقل 4 احرف</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Userpass يجب أن تكون على الأقل 4 احرف</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>اسم المستخدم مأخوذ من قبل</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>البريد الالكتروني هو ما سبق تسجيله</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>خطأ في النظام الرجاء الاتصال منظومة المشرفون</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>مستخدم :</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>المرور :</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>اللغة</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>اشترك</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>مستخدم :</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>المرور :</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>قلت :</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Firstname :</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Lastname :</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>البريد :</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>البلد :</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>سجل</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>الغاء</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>سجل</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>البيت</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>المستعملون</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>المجموعات</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>المنظمات</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>- غرف الاجتماع</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>الجمهور</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>منظمة</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>أدخل</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>كلمة السر</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>حروف</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Firstname</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>بريد</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>عيد الميلاد</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>الشارع / لا</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>الرمز البريدي / المدينة</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>البلاد</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adress - معلومات</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Userdata</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>انقاذ</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>انقاذ</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>- رقم تعريف المستخدم</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Firstname</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>وتبين المقبل</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>وتظهر قبل</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>حذف سجل</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>الغاء</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>حذف</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>قياسيه جديدة</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>تجديد السجل</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>حذف سجل</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>المركز</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>فاقد الاهليه</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>مكن</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>المنظمات</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>التقويم</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>وثيق</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>منظمة معرف</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>الاسم</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>مستعمل</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>وزارة الدفاع</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>الادارة</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Userlevel</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>منظمة</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>الاسم</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>تضيف منظمة</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>تضيف منظمة</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>الغاء</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>اضف</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>ازالة منظمة</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>مستعمل</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>اضافة مستخدم</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>حذف المستخدم</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>اضافة مستخدم</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>البحث المستخدم</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>البحث</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>مستعمل</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>منظمة</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>أدخل</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Conferencerooms</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Conferencerooms</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>الهوية</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>الاسم</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>الجمهور</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>المنظمات</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Meetingrooms</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>الاسم</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>النوع</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>الجمهور</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>التعليق</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>انقاذ</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>حمل</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>باستثناء ما ورد</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>اسم الملف</value>
+  </string>
+  <string id="201" name="files">
+    <value>اسم الملف</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>الغاء</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>انقاذ</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>خطأ</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>التحميل</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>الاشياء المحمله</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Snychronizing العملاء والزبائن على الانتظار :</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>التحميل imagedata</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Snychronizing العملاء والزبائن على الانتظار :</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>واضح drawarea</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Drawarea واضحة ، وجميع البيانات المتعلقة وحة ستضيع</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>تأكد قبل التحميل الملف</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>ارسال دعوة</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>ارسال دعوة</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>الموضوع</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>المتلقيه</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>رسالة</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>أرسل</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>الغاء</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>أرسل</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Userdata</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>الاسم المستعار الخاص بك لهذا المؤتمر</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>نيك</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Firstname</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>البريد الالكتروني</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>اللغة</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>أدخل</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>التحميل</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>بيانات التحميل ، يرجى الانتظار!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>خطأ كلمة السر</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>الرجاء ادخال كلمات السر متطابقه مع اثنين على الاقل 4 احرف</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>البريد الخطأ</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>لقد قمت بادخال غير صالحة للبريد - Adress</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>التسجيل الكامل</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>لقد تم انشاء حسابك. يمكنك الان تسجيل الدخول.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>لا يمكنك حصة الشاشه في تلك اللحظة. شخص آخر بالفعل السهم دورته الشاشه.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>تقاسم ممنوع</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>حصة الشاشه</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>سيئة عرض النطاق الترددى : انك لم تتمكن من syncronize الشاشه. اطر سيتم صرف النظر عنها. اذا كان هذا التحذير هو مبين في كثير من الاحيان يمكن لك ان تطلب من وسيط الى خفض نوعية.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>من الشاشه :</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>الطلاء</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>الوثيقة</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>الدردشه</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>ملفات</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>الاعضاء</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>تنزيل الوثيقة الاصليه</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>تنزيل قوات الدفاع الشعبي وثيقة</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>حمل عرض لوحة</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>التشكيل</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>أسحب هذا الوجه من وجوه</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>لتغيير هذا الوجه من وجوه</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>٪</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>من</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>اذهب الى الصفحه الاولى</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>اذهب الى الصفحه السابقة</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>اذهب الى الصفحه التالية</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>اذهب الى الصفحه الاخيرة</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>تكبير --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>تكبير</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>السيد</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>السيدة</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>التشكيل</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>الهوية</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>مفتاح</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>التشكيل</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>مفتاح</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>آخر تحديث</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Updatedby</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>التعليق</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>مفتاح</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>من</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>المستعملون</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>حذف المستخدم من المنظمه</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>حذف</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>هذا المستخدم هو بالفعل عضو في هذه المنظمه.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>اخبار</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>جوتو المؤتمر</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>قاعة جوتو</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>مساعدة ودعم</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>تقرير أ بقة!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>أكثر</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>مشروع شبكى (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>مستخدم قائمة بريديه (http://openmeetings.apache.org/mail-lists.html - مستخدم)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>نتذكر تسجيل الدخول</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>المحتوى</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>صفحتي الرئيسية</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>بلدي الجلسات المقررة</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>بلادي المقرر الاحداث</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>الجلسات العلنيه</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>الجلسات السرية</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>المناسبات العامة</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>المناسبات الخاصة</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>الجمهور محتوى</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>المحتوى الخاص</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>الشخصيه المحتوى</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>الاعتدال</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>طلب للحصول على الاعتدال</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>استطلاعات الرأي</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>اختر ملف</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>أماكن</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>كأم التابعة لهيئة التصنيع العسكرى والاعدادات</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>لوح الاعدادات</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>خروج</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>عودة الى غرف</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>خروج</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>start Desktop Viewer</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>صوت و صورة</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>دردشة</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>لوح أبيض</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>(إعادة) بدء صوت / صورة أو تغيير إعدادات الجهاز</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>ملفات</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>مستخدمين</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>إستطلاعات</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>هذا الإسم لا يعود إلى أي مستخدم</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>لقد تم إرسال بريد يتضمن رابط خاص إلى بريدك الإلكتروني، الرجاء تفحص صندوق البريد. إذا لم تحصل بعد على بريد إلكتروني، الرجاء تعديل إعدادات البريد المزعج و قم بإعادة إرسال البريد الإلكتروني الخاص بالتأكيد.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>خطأ</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>رسالة</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>مزيج غير صالح. ليس هناك أي مستخدم.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>إستعادة كلمة المرور</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>تغيير كلمة المرور</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>كلمة مرور جديدة</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>إعادة إدخال كلمة المرور</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>كلمات المرور التي أدخلتها ليست متطابقة</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>أربع أحرف أو أكثر</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>تم تسجيل كلمة المرور. يمكنك الآن تسجيل الدخول</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>خطأ غير معروف. الرجاء إبلاغ فريق الخدمة</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>إسم المستخدم غير موجود</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>كلمة مرور غير صحيحة</value>
+  </string>
+  <string id="337" name="logout">
+    <value>تم تسجيل الخروج بنجاح</value>
+  </string>
+  <string id="338" name="registration">
+    <value>تم إلغاء التسجيل السابق.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>بريد إلكتروني غير صحيح</value>
+  </string>
+  <string id="340" name="registration">
+    <value>إسم ملف مكرر. الرجاء إختيار إسماً آخراً</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>إسم الملف قصير</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>لا يمكن حفظ العنوان</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>تمت إضافة المستخدم لكن يجب إنساب هذا المستخدم إلى تنظيم و إلا لن يمكنه تسجيل الدخول.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>سجل جديد</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>ليس هناك أي حقل يحمل هذا Id.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>ليس هناك إسم لهذه الرقعة.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>المطلوب إذن المشرف</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>محرر اللغة</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>لغة</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>معرف الرقعة</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>إسم الرقعة</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>قيمة</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>حقل القيم</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>إسم الرقعة</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>قيمة الرقعة</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>معرف الرقعة</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>لقد حذفت الرقعة ليس الحقل! لا يمكنك حذف الحقل. يمكن أن يكون له رقع في لغات أخرى.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>رقعة غير صالح ةid. لا يمكن إيجاد The FieldLanguagesvalues_Id في قاعدة البيانات.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>لا يمكنك حذف هذا الحقل. يمكنك فقط حذف رقعات لا حلقات. ليس هناك أي رقعات محملة في هذه الأثناء، سواء لم تختر أي حقل أو ليس هناك أي رقعة معرفة لهذه اللغة لهذا الحقل.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>تصدير</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>يجب أن تخرج لرؤية التغييرات.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>إضافة لغة جديدة</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>delete language</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>حذف لغة</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>إسم</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>إضافة لغة</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>نسخ إحتياطي</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>القفز إلى الأول</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>القفز إلى السابق</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>القفز إلى التالي</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>القفز إلى الأخير</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>المستخدم يتكلم</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>تشغيل/إيقاف الصوت</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>نظام</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>إعداداتك</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>مرحباً،</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>إضافة ملف التعريف</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>رسائل جديدة:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>إيداع صور جديدة</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>بيانات المستخدم - تصدير</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>يجب أن تكون المنظمات موجودة!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>بدء التصدير</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>عن طريق المنظمة</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>بدء التصدير</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>بيانات المستخدم - إستيراد</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>إختر users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>إستيراد</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export to XML - These files can be used to: - Contribute to the project - Import into another System - Backup - Customization - Put it into the language-directory for your next installation</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choose a language file to import. Choose the right Langauge from the Combobox! No matter what the name of the file is, it will be imported into this language!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>إستيراد - إختر ملف</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>حفظ بإسم</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>إسم:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>تعليق:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>حفظ</value>
+  </string>
+  <string id="395" name="record">
+    <value>تسجيلات</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>مشاهدين التسجيلات</value>
+  </string>
+  <string id="397" name="record">
+    <value>تسجيلات الغرف العامة و الخاصة</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>مستخدمين:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>إنضم:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>المستخدمين في هذه الغرفة:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>تحديث</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>هذه الغرفة ممتلئة. حاول بعد بضع دقائق مرة أخرى.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>إضغط على الغرفة للحصول على تفاصيل</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>دردشة مع المستخدمين في هذه الغرفة:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>غرفة:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>مستخدمين في هذه الغرفة:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>منذ:</value>
+  </string>
+  <string id="409" name="record">
+    <value>شغل التسجيل</value>
+  </string>
+  <string id="410" name="record">
+    <value>الطول:</value>
+  </string>
+  <string id="411" name="record">
+    <value>التاريخ:</value>
+  </string>
+  <string id="412" name="record">
+    <value>أسلوب المسجل! لا يمكنك تغيير القيم، هذا ملف مسجل!</value>
+  </string>
+  <string id="413" name="record">
+    <value>شغل هذا المسجل</value>
+  </string>
+  <string id="414" name="record">
+    <value>تشغيل/إيقاف</value>
+  </string>
+  <string id="415" name="record">
+    <value>بدء التسجيل</value>
+  </string>
+  <string id="416" name="record">
+    <value>إيقاف التسجيل</value>
+  </string>
+  <string id="417" name="record">
+    <value>تسجيل:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>هناك شخص آخر يقوم بالتسجيل في هذه الأثناء:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>تسجيل! عن طريق المستخدم:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>إلغاء</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>سيتم إلغاء التسجيل دون حفظه.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>إستئناف</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>اقفل النافذة و إستأنف التسجيل</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>تغيير لون الخط</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>إختر اللون</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>تمكين/تعطيل لون الخط</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>تغيير ملء اللون</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>تعطيل / تشغيل ملء اللون</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>تغيير عرض الخط</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>غلق</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>تغيير حجم الحروف</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>حذف التسجيل</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>ضيف</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>عند:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>إسم</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>غرفة</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>تاريخ</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>إلغاء</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>بدء</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>إسم</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>تاريخ</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>حذف server-chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>دردشة</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>إرسال رسالة</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>رموز</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>رموز</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>إختر الأجهزة المنشورة</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>صوت و صورة</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>صوت فقط</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>صورة فقط</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>لا صورة/صوت (صورة ثابتة)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>لا صوت/صورة ستنشر من جهازك، بدلاً من هذا ستظهر صورة من ملفك. إختر هذه الإعدادات إذا كان لديك مشاكل مع عرض النطاق الترددي أو إذا كان إتصالك بالإنترنت بطيئاً.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>الإثنين</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>الثلاثاء</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>الأربعاء</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>الخميس</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>الجمعة</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>السبت</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>الأحد</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>الإثنين</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>الثلثاء</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>الأربعاء</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>الخميس</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>الجمعة</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>السبت</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>الأحد</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>التقويم الأسبوعي</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>التقويم الأسبوعي</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>كانون الثاني(يناير)</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>شباط(فبراير)</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>آذار(مارس)</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>نيسان(أبريل)</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>أيار(مايو)</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>حزيران(يونيو)</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>تموز(يوليو)</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>آب(أغسطس)</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>أيلول(سبتمبر)</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>تشرين أول(أكتوبر)</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>تشرين ثاني(نوفمبر)</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>كانون أول(ديسمبر)</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>تقويم</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>المشاركون</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>عرض إعدادات التصميم</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>عرض | طول</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>صندوق الفيديو</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>صندوق الإدارة</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>صندوق اللوح</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>ممكن</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>عرض | طول</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>صندوق - ملفات،دردشة،مشاركين</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>ممكن</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>عرض | طول</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>لقد ترك رئيس الجلسة الغرفة. ليس هناك أي رئيس للجلسة في هذه الأثناء. يمكنك التقدم لرئاسة الجلسة أو الإنتظار.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>ليس هناك أي رئيس للجلسة في هذه الغرفة، و لكن هناك بعد المشاركين. عليك التقدم لرئاسة الجلسة أو الإنتظار.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>ملاحظات $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - دعوات</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>رسالة من المستخدم:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>رسالة:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>أنقر على هذا الرابط للمشاركة في الإجتماعات:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>أنقر هنا لدخول الغرفة:</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>إذا واجهتك مشاكل مع الرابط، الرجاء نسخه و من ثم لصقه في المتصفح:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>تسجيل $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>بياناتك:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>تسجيل الدخول:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>كلمة المرور:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>البريد الإلكتروني:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>فريق - OpenMeeting</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>إنشاء حساب OpenMeeting</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>إعادة ضبط كلمة مرور - OpenMeeting</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>انقر على هذا الرابط من أجل إدخال كلمة مرور جديدة:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>انقر على هنا من أجل إدخال كلمة مرور جديدة</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>إذا واجهتك مشاكل مع هذا الرابط، الرجاء نسخه و لصقه في المتصفح:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>إعادة ضبط كلمة مرور OpenMeeting</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>الرجاء إدخال تاريخ صالح 24.12.2001 (يوم، شهر، سنة)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>الرجاء إدخال بريد إلكتروني صالح، مثلاً name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>الرجاء إدخال عدد من أعداد الفاصلة العائمة، مثلاً 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>الرجاء إدخال عدد صحيح، مثلاً 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>الرجاء إدخال رقم هاتف صحيح، مثلاً ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>الرجاء إدخال وقت صالح، مثلاً 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>محمي عن طريق كلمة مرور</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>كلمة المرور</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>مدة الصلاحية</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>أبدي</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>مدة</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>وقت واحد</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>صالح من:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>صالح لغاية:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>دعوة إلى To $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>ليس هناك دعوة متوفرة لرمز الدعوة هذا</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>هذه الدعوة استخدمت من قبل. لا يمكن إعادة إستخدام هذا النوع من الدعوات.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>رمز الدعوة هذا ليس صالح.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>كلمة المرور:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>إفحص كلمة المرور</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>كلمة مرور غير صحيحة!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>متصفح</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>مزامنة الصوت/الصورة</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>تسجيل الدخول صحيح لكن الجلسة التي إخترتها معطلة أو مخزنة في الخادوم. تحتاج أن تحصل على ID-جلسة جديد و تسجل الدخول من جديد.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>ID-جلسة لم تسجل الدخول أو ليس لديها حقوق المسؤول. The SOAP Gateway يحتاج إلى مستخدم لديه حقوق مسؤول ليتضمن مستخدمين جدد.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>ليس لدى هذه الجلسة إتصال ب-Remoteuser-Data. سواء لم تصل ب- SOAP-Gateway قبل البدء بالإستعمال أو أنك تستخدم جلسة-ID خاطئة.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>يكون التسجيل حالياً Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>ع</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>عرض</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>ط</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>طول</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>تغيير الشفافية</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>فتح المتصفح</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>إغلاق المتصفح</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>لقد تم فقدان الإتصال بالخادوم. عليك تحديث الطلب أو تفحص الشبكة.</value>
+  </string>
+  <string id="557" name="557">
+    <value>المؤشر</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>المزامنة</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>مزامنة المستخدمين، الرجاء الإنتظار</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>مذكرة:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>فئة:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>التكرار:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>لا أحد</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>موقع:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>بداية</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>نهاية</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>عنوان:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>تعليق:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>دعوة ناس</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>يومي</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>شهري</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>سنوي</value>
+  </string>
+  <string id="578" name="alert">
+    <value>نهاية الموعد بعد بداية الموعد!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>الرجاء إدخال عنوان!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>قم بتشغيل هذا إن كنت تستخدم لغة تكتب من اليمن إلى اليسار (ترتيب كلمات معكوس)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>لوحة أجهزة القياس</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>مشاهدة الإجتماعات أو الاحداث المسجلة</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>إجتماع - قم بتشكيل مؤتمر مع 4 (حتى 16) مستخدمين&lt;br/&gt;يحصل الجميع على صوت و صورة</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>حدث - قم بتشكيل مؤتمر مع إلى 200 مشارك&lt;br/&gt;رئيس المؤتمر فقط يكون لديه صوت و صورة</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>قم بخلق مستخدمين، غرف، منظمات&lt;br/&gt; + تغيير الترتيبات</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>المستخدمين في هذه الغرفة في الوقت الحالي</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>تحمل وثائق. التجاء الإنتظار حتى يتم مزامنة كل العملاء.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>تم الإيداع، تحويل الوثيقة ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>بدء الإيداع</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>إيداع و إستيراد الحوار. الرجاء إختيار ملف من الإسطوانة.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>إلغاء</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>إختيار الملف</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>إتصالات</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>قيمة</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>تسجيل الدخول</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>متصل منذ</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>غرفة / إطار</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>رمي المستخدم</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>رمي المستخدم</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>هل تريد فعلاً أن ترمي العميل خارج الإتصال؟&lt;br/&gt; هذا سوف يقوم فقط بإخراج الزبون من الغرفة الحالية. يمكن للزبون أن يدخل مرة أخرى.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>لقد تم إغلاق جلستك عن طريق المسؤول أو رئيس الجلسة.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>هاتف</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>المستخدم هو الرئيس في هذه الغرفة.</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>يسمح للمستخدم الرسم على اللوح.</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(إعادة) بدء صوت / صورة أو تغيير إعدادات الجهاز</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>السماح لهذا المستخدم بالرسم على اللوح</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>إلغاء قدرة الرسم على اللوح</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>المستخدمين</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>الملفات</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>اللوح</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>دردشة</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>حسابك يعود إلى عدة منظمات. الرجاء إختيار واحدة لهذه الجلسة.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>هذه الغرفة مليئة في هذه الأثناء. الرجاء المحاولة لاحقاً.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>نوع الغرفة.</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>غرفة المواعيد</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>وقت الخادوم.</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>مذكرة - OpenMeeting</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>رسالة من المستخدم:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>رسالة:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>أنقر على هذا الرابط للمشاركة في الإجتماع:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>أنقر هنا لدخول الغرفة</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>إذا كان لديك مشاكل مع الرابط، الرجاء نسخه و لصقه في المتصفح:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>البحث في الداخل</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>مستخدم خارجي</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>إسم الكنية</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>إسم</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>بريد إلكتروني</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>أكد الخروج</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>هل أنت متأكد أنك تريد تسجيل الخروج؟</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>النشاطات</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>غرفة تجريبية</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>وقت تجريبي</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>عداد الإجتماع</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>هذه الغرفة هي غرفة تجربة. لتعطيل هذه التحذير عليك الحصول على غرفة خاصة للإستخدام الخاص أو إنشاء خادم خاص. سوف يتم إخراجك فوراً في:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>مدار</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>الرجاء إنتظار دخول المدير الغرفة. يمكن أن يكون المدير معلم، مسؤول أو منشئ هذه الغرفة.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>وصول مشاركة الشاشة</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>هناك مشارك شاشة قادمة من المستخدم:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>بدء المشاركة</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>إضافة لقاء جديد</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>غرفة الإجتماع</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>غرفة الحدث</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>إدارة</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>المستخدمين المدراء</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>الغرف المدارة</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>هل تريد تغيير هذا المستخدم و جعله مدير هذه المنظمة؟</value>
+  </string>
+  <string id="654" name="error message">
+    <value>الرجاء إختيار المنظمة قبل محاول إضافة مستخدم إليها!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>منظمة - مدير</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>هل تريد بالفعل حذف هذا المستخدم من المنظمة؟</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>هذا المستخدم هو مدير</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>هذا المستخدم ليس مديراً</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>هل تريد أن لا يكون هذا المستخدم مدير هذه المنظمة؟</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>إضافة أو حذف مستخدمين أو غرف ضمن منظمتك</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>هل تريد حقاً حذف هذا التسجيل؟</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>هل تريد حقاً حذف هذا المستخدم من منظمتك؟ سوف يتم فقط حذف الإتصال بين المستخدم و منظمتك، من أجل حذف المستخدم يجب أن تدخل لوحة المسؤول.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>لا يمكنك حذف مستخدمك!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>لتنفيذ هذه الطريقة تحتاج لحساب مسؤول!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>ليس هناك أي جلسة ترتبط ب- ID هذا.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>هذا حساب مسؤول أو مدير. يمكن تحرير هذا الحساب عن طريق لوحة المسؤول.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>لإكمال التسجيل الرجاء النقر على الرابط التالي. أو نسخ URL إلى المتصفح.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>أنقر من أجل التحقق من بريدك الإلكتروني</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>ليس هناك أي مستخدم لهذا الخليط.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>هذا المستخدم معطل!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>لقد تم تفعيل حسابك بنجاح!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>تسجيل الدخول الآن</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>حسابك ليس شغال. إستخدم أولاً الرابط في البريد الإلكتروني الذي حصلت عليه خلال التسجيل.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>لقد تم فتح حسابك بنجاح. لقد تم إرسال بريد إلكتروني مع رمز تحقق إلى بريدك. الرجاء التحقق من بريدك الإلكتروني.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>إزالة دور الإدارة من هذا المستخدم</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>منح هذا المستخدم حق الإدارة</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>مستخدم</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>مدخل إلى اللوح</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>مدير</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>إدارة: الرجاء إختيار أي مستخدم على القائمة لمنحه مدخل إلى اللوح، الإدارة أو الفيديو.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>هذا المستخدم هو مدير، لهذا لديه تلقائياً الحق في الرسم على اللوح.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>هذا أنت! لا يمكنك إزالة حقوق الإدارة من نفسك.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>السماح لهذا المستخدم نشر صوت / صورة</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>حذف صوت / صورة من هذا المستخدم</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>أود أن أدير هذه الغرفة</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>أود أن أرسم على اللوح</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>أو أن أشارك صوت / صورة</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>أنت مدير هذه الغرفة</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>لديك حق الرسم على اللوح</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>لديك حق مشاركة صوت / صورة</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>رسالة إلى المدير</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>المستخدم</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>يود أن يحصل على الإدارة. إستخدم أيقونات الحالات جانب المستخدم في قائمة المستخدمين لإضافة أو حذف الإدارة.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>يود أن يرسم على اللوح. إستخدم أيقونات الحالات جانب المستخدم في قائمة المستخدمين لإضافة أو حذف حق الرسم على اللوح.</value>
+  </string>
+  <string id="695" name="695">
+    <value>يود أن يتشارك الصوت/الصورة. إستخدم أيقونات الحالات جانب المستخدم في قائمة المستخدمين لإضافة أو حذف حق المشاركة صوت/صورة لأي مستخدم.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>عليك إنتظار المدير حتى يدخل الغرفة.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>إلغاء</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>حفظ</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>يوم</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>شهر</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>سنة</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>إيداع ملف</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>إضافة مجلد</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>تحديث</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>قمامة</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>ملفاتي (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>غرفة الملفات (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>إضافة ملف</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>إضافة مجلد</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>حذف مجلد</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>تحرير إسم</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>مجلد جديد</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>هل أنت متأكد أنك تريد حذف هذا البند؟</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>بحث</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>بحث</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>فتح وثيقة</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>إظهار كل الملفات (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>إغلاق وثيقة</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>حذف ملف</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>لا يسمح لك بالرسم على هذا اللوح. تحتاج أن تكون مديراً أو أن تحصل على الأقل على حق تحرير لوح. يجب أن تسأل مديراً للحصول على هذا الحق.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>خصائص الوثيقة</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>بدأ العميل (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>بدأ العميل (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>مسخدم يود تقاسم شاشته. هل تريد رؤيتها؟</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>أنت تتشارك سطح مكتبك في هذه الأثناء. لإيقاف جلسة المشاركة الرجاء النقر زر توقف في عميل المشاركة.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>جلسة المشاركة</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>أنت تتشارك سطح مكتبك!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>مشاهد سطح المكتب</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>خروج</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>مقاسم سطح المكتب</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>أنقر على إبدأ لنشر شاشتك</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>بدء المشاركة</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>إيقاف المشاركة</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>إختر نطاق شاشتك:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>تغيير العرض</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>إنتهى المشارك من هذه الجلسة!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>تغيير الطول</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>العرض:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>الطول:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>قطع الإتصال من الخادوم</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>إلغاء</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>بدء الخارجي</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>إذا أقفلت هذه الجلسة كلياً لن يعد بإمكانك البدء من جديد بالمشاهد لهذه الجلسة.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>تأكيد إقفال جسلة المشاهد</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>مشاركة الشاشةShare Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>تسجيل الجلسةRecord Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>السابقPrevious</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>التالي</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>تحديث</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>شحن</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>إجعل هذه الصفحة صفحة ملفك الإفتراضية.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>فحص الإعداد</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>إفحص إعدادات الميكروفون و الكاميرا قبل دخولك الغرفة عن طريق التسجيل لبضع ثوان. يمكنك بعدها رؤية التسجيل لفحص الصوت و الصورة.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>لا تظهر هذا الإختبار بعد الآن</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>إلغاء</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>بدء المؤتمر</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>لا تسأل مجدداً</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>يمكنك المتابعة دون الفحص إذا لا تريد نشر صورتك و صوتك. يمكن للمشاركين دون صوت و صورة متابعة إستخدام اللوح، مشاركة سطح المكتب أو كتابة رسائل دردشة.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>توقف</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>مقياس المستوى</value>
+  </string>
+  <string id="768" name="start view">
+    <value>إضغط على البداية</value>
+  </string>
+  <string id="769" name="start view">
+    <value>بدء المؤتمر</value>
+  </string>
+  <string id="770" name="start view">
+    <value>بدء الحدث</value>
+  </string>
+  <string id="771" name="start view">
+    <value>إختر غرفة</value>
+  </string>
+  <string id="772" name="start view">
+    <value>فحص الإعدادات</value>
+  </string>
+  <string id="773" name="start view">
+    <value>بدء المؤتمر</value>
+  </string>
+  <string id="774" name="start view">
+    <value>الطريق إلى المؤتمر:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>بدء التسجيل</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>لا تظهر فحص صوت / صورة (تسجيل) قبل دخول المؤتمر</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/bulgarian.xml b/src/main/webapp/languages/bulgarian.xml
new file mode 100644
index 0000000..fa3f0c7
--- /dev/null
+++ b/src/main/webapp/languages/bulgarian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Конференция</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Среща</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Класна стая</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Настройки</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Профил</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Администриране</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Стоп</value>
+  </string>
+  <string id="8" name="record">
+    <value>Запис</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Няма наличен файл</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Запис от учител</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Свързани потребители</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Започване на конференция</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Моето име</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Видеоконференция</value>
+  </string>
+  <string id="15" name="import">
+    <value>Качване на файл</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Опресняване на списъка</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Към главната папка</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Нова анкета</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Нова анкета за конференцията.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Въпрос:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Тип анкета:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Създаване</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Инфо: Всеки свързан потребител получава съобщение за новата анкета.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Създаване на анкета</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Отказ</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Да/Не</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Числов 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Анкета</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Трябва да сте модератор, за да добавите нов въпрос</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Гласът Ви е отчетен.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Вече сте гласували в анкетата.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Гласуване</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Вашият отговор:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Да</value>
+  </string>
+  <string id="35" name="no">
+    <value>Не</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>иска да знае:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Резултати от анкетата</value>
+  </string>
+  <string id="38" name="question">
+    <value>Въпрос:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Резултати:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Отговори:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Не са започнати анкети.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Гласуване</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Среща (макс. 4 места)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Конференция (макс. 50 места)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Тип</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Оставащи места</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Вече избран</value>
+  </string>
+  <string id="48" name="enter">
+    <value>вход</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Модераторът е напуснал срещата.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Системна информация</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Избор на устройства</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Избор на уебкамера:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Избор на микрофон:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ОК</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Отказ</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Трябва да се свържете отново.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Редактиране на настройките</value>
+  </string>
+  <string id="58" name="course">
+    <value>Курс:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Език:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ОК</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Отказ</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Изчистване на дъската</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Искате ли дъската да се изчиства, преди да бъде добавена нова снимка?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Не питай отново</value>
+  </string>
+  <string id="65" name="no">
+    <value>не</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Редактиране на настройките</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Потвърждение преди изчистването на дъската</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Информация за потребител</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Изчистване на зоната за рисуване</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Стъпка назад</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Стъпка напред</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Маркиране на обект</value>
+  </string>
+  <string id="73" name="text">
+    <value>Текст</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Рисуване</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Чертаене на линия</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Подчертаване</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Правоъгълник</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Елипса</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Стрелка</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Изтриване на маркирания обект</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Искане на права на модератор</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Искане</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Отказ</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Получаване на права на модератор</value>
+  </string>
+  <string id="85" name="close">
+    <value>Затвори</value>
+  </string>
+  <string id="86" name="italic">
+    <value>курсив</value>
+  </string>
+  <string id="87" name="bold">
+    <value>получер</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Изчакване...</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Потребител иска права на модератор. Може да му дадете права само за рисуване върху дъската или напълно да му предадете правата на модератор.</value>
+  </string>
+  <string id="90" name="accept">
+    <value>приемане</value>
+  </string>
+  <string id="91" name="reject">
+    <value>отхвърляне</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>отказ</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Изпращане на молба към следните потребители</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Прието</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Отхвърлено</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Смяна на модератор</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Вие нямате права на модератор за този курс!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Модератор:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Стаята е пълна. Моля, опитайте отново по-късно.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Елипса</value>
+  </string>
+  <string id="101" name="close">
+    <value>затваряне</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>грешка във входните данни</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 или повече знака; големите букви имат значение</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>паролата трябва да е поне 4 знака</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>потребителското име е заето</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>E-mail адресът е зает</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Грешка в системата, потърсете системния администратор.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Вход</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Име или e-mail:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Парола:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Език</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Вход</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Форма за регистрация</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Потребителско име:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Парола:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Парола отново:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Име:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Фамилия:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Държава:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Регистрация</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Отказ</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Нямате регистрация?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Начало</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Потребители</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Групи</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Организации</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Стаи</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>публични</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Организация</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Вход</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Потребителско име</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Парола</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Парола отново</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Име</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Рожденна дата</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Улица/Но.</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Град</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Държава</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Адрес</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Данни за потребителя</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Запис</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Запис</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Потребител. име</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Име</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Напред</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Назад</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Изтриване на запис</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Отказ</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Изтриване</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Нов запис</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Опресняване на записа</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Изтриване на запис</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Статус</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>изключен</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>включен</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Организации</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Календар</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Затваряне</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Организация ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Име</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Потребител</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Модератор</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Администратор</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Ниво потребител</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Организация</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>име</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Добавяне на организация</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Добавяне на организация</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Отказ</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Добавяне</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Изтриване</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Потребител</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>добавяне потребител</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>изтриване потребител</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Добавяне на потребител към огранизация</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Търсене на потребител</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Търсене</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Потребител</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Организация</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Вход</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Стаи за конференции</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Стаи за конференции</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Име</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>публична</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Организации</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Стаи за срещи</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Име</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Тип</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>публична</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Коментар</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>запазване и експорт</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>зареждане</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>запазване като</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Файл</value>
+  </string>
+  <string id="201" name="files">
+    <value>файл</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>отказ</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>запазване</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Грешка</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>зареждане...</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>обектите са заредени</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>синхронизация на клиентите, чакащи клиенти:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Зареждане на изображение</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>синхронизация на клиентите, чакащи клиенти:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>изчистване на полето за рисуване</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Изчистване на полето? Цялата информация на дъската ще бъде изгубена.</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Потвърждение преди зареждане на файл</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Изпращане на покана</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Изпращане на покана</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Тема</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Получател</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Съобщение</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Изпрати</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>отказ</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>изпрати</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Данни за потребител</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Вашият ник за тази конференция</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Ник</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Име</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Език</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>вход</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Зареждане</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Зареждане на данни, моля изчакайте!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Грешна парола</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Моля въведете две еднакви пароли от поне 6 знака</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Грешен e-mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Въвели сте грешен e-mail адрес</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Регистрацията е завършена</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Акаунтът е създаден. Може да влезете в системата.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>В момента не може да споделяте екрана си. Някой друг вече споделя своя екран.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Споделянето е забранено.</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Споделяне на екран</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Слаба Интернет връзка: нямате възможност за синхронизация на екрана. Ще има изпускане на кадри. Ако това съобщение се показва често, може да помолите модератора да намали качеството.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Екран на:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Рисуване</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Документ</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Чат</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Файлове</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Членове</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Сваляне на оригиналния документ</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Сваляне на PDF</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Зареждане на презентацията на дъската</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Конфигурация</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Влачене на обект</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Промяна размерите на обект</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>от</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Към първа страница</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Към предишната страница</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Към следващата страница</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Към последна страница</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Мащаб --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Мащаб ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Г-н</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Г-жа</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Конфигурация</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Ключ</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Конфигурация</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>ключ</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>последна промяна</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>променен от</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>коментар</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Стойност</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>от</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Потребители</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>изтриване на потребител от организация</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>D</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Потребителят вече е член на организацията.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Новини</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Бързи връзки</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Към конференция</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Към аудитория</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Помощ</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Бъг репорт!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>повече</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Сайт на проекта (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Потребителски мейлинг лист (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Запомни ме</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Съдържание</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Начална страница</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>График на срещите</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>График на събитията</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Публични срещи</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Частни срещи</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Публични събития</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Частни събития</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Публично съдържание</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Частно съдържание</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Лично съдържание</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Права на модератор</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Искане права на модератор</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Анкети</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Избор на файл</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Настройки</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Камера и микрофон</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Настройки на дъската</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Изход</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Назад към стаите</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Изход</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Забравена парола?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Нова парола</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>По E-mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>По потребителско име</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>E-mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Потребителско име</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Изпращане на E-mail с линк за нова парола</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Не е намерен такъв e-mail.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Моля, въведете E-mail или потребителско име.</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Не е намерено такова потребителско име.</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Изпратен е e-mail, съдържащ линк за нова парола.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Грешка</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Съобщение</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Не е намерен такъв потребител.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Нова парола</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Потребителско име</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>промяна на паролата</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>нова парола</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>нова парола отново</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Въведените пароли не са еднакви.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 или повече знака; главните букви имат значение!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Паролата е настроена, вече може да влезете в системата.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>ОК</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Грешка. Докладвайте за бъг!</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Потребителското име не е намерено.</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Невалидна парола</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Успешен изход от системата</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Забранена е регистрацията на нови потребители.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Невалиден e-mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>дублиране на името на файла, изберете друго име</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>името на файла е много кратко</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Не може да се запази адреса</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Потребителят е добавен, но трябва да се добави към Организация, за да може да влезе в системата.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Нов запис</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Не е намерено поле с такова полеID</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Не е намерен етикет на това поле</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Необходима е ауторизация като администратор</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Редактор на език</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Език</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Етикет-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Име на етикета</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Стойност</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Стойности на полето</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Име на етикета</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Стойност на етикета</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Етикет-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Може да изтриете само етикета, но НЕ и полето! Не може да изтриете полето, защото то съдържа етикети на други езици.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Невалидно Етикет-ID.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Не може да изтриете това поле.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>експорт</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Трябва да излезете от системата, за да видите промените.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Добавяне на нов език</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>изтриване на език</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Добавяне на нов език</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Име</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>добавяне на език</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Бекъп</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>първа страница</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>предишна страница</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>следваща страница</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>последна страница</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>потребителят говори (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>изкл./вкл. на звука</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Система</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Вашите настройки</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Здравейте,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Редакт.на профил</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Нови съобщения:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Качи нова снимка</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Данни на потребител - експорт</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Всички организации трябва вече да съществуват!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>старт на експорт</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>По организация</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>старт на експорт</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Данни на потребител - импорт</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>choose-users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>импорт</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Експорт в XML - Тези файлове може да се използват в: &amp;lt;br/&amp;gt; - Помощ за проекта - Импорт в друга система &amp;lt;br/&amp;gt; - Бекъп - Настройки&amp;lt;br/&amp;gt; - Сложете файла в папката language на новата инсталация.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Изберете XML файл за импорт на език. &amp;lt;br/&amp;gt; Изберете правилния език от падащото меню! &amp;lt;br/&amp;gt; Без значение от името на файла, &amp;lt;br/&amp;gt; той ще бъде импортнат в този език!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>импорт - изберете файл</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Запазване като</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Име:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Коментар:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>запазване</value>
+  </string>
+  <string id="395" name="record">
+    <value>Записи</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Преглед на записи</value>
+  </string>
+  <string id="397" name="record">
+    <value>Записи от публични и частни стаи</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Потребители:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Включили се:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Потребители в тази стая:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>опресняване</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Тази стая е пълна. Пробвайте отново след няколко минути.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>натиснете върху стая за детайли</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Чат с потребителите от тази стая:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Стая:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Потребители в тази стая:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>от:</value>
+  </string>
+  <string id="409" name="record">
+    <value>плейване на запис</value>
+  </string>
+  <string id="410" name="record">
+    <value>Дължина:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Дата:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Режим на запис! Не може да променяте стойности, това е записан файл!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Плейване на този запис</value>
+  </string>
+  <string id="414" name="record">
+    <value>Плей / Пауза</value>
+  </string>
+  <string id="415" name="record">
+    <value>Старт запис</value>
+  </string>
+  <string id="416" name="record">
+    <value>Стоп запис</value>
+  </string>
+  <string id="417" name="record">
+    <value>Запис:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>В момента друг потребител прави запис.</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Запис! От потребител:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>отказ</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Записът ще бъде отказан и няма да бъде запаметен.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>подновяване</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Затворете този прозорец за подновяване на записа.</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>смяна на цвета на линията</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Избор на цвят</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Изкл./Вкл. цвят на линия</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>смяна на цвета на запълването</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Изкл./Вкл. цвят на запълване</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>смяна ширината на линията</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>затваряне</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>смяна на размера на шрифта</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Изтриване на запис</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Гост</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>От:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Име</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Стая</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>отказ</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>старт</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Име</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Изтриване на чат история</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Чат</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>изпращане на съобщение</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Емотикони</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Емотикони</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Избор на устройства</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Аудио и Видео</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Само Аудио</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Само Видео</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>без Аудио/Видео (статично изображение)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Няма да се показва никакво Аудио/Видео от Вашето PC, вместо това ще се показва статично изображение. Може да изберете тази настройка, ако имате бавна Интернет връзка.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>ПОН</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>ВТ</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>СР</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>ЧЕТ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>ПЕТ</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>СЪБ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>НЕД</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Понеделник</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Вторник</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Сряда</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Четвъртък</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Петък</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Събота</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Неделя</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>седм</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Седмица</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Януари</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Февруари</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Март</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Април</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Май</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Юни</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Юли</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Август</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Септември</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Октомври</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Ноември</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Декември</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Календар</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Участници</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Показване настройки на изгледа</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Ширина | Височина</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Видео-контейнер</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Модерация-контейнер</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Дъска-контейнер</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Включен</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Ширина | Височина</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Файлове,Чат,Участници-контейнер</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Включен</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Ширина | Височина</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Модераторът е напуснал стаята и никой не присъства в момента. Може да поискате права на модаратор или да изчакате.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Няма модератор в стаята, но има други участници. Може да поискате права на модаратор или да изчакате.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Обратна връзка с $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Покана</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Съобщение от потребител:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Съобщение:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Натиснете линка, за да участвате в срещата:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Натиснете тук, за вход в стаята</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Ако имате проблеми с линка, копирайте го и го вмъкнете в браузъра:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Регистрация в $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Потребителски данни:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Потребителско име:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Парола:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Екип на $APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>Регистрация в $APP_NAME</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>Нова парола за $APP_NAME</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Натиснете линка, за да въведете нова парола.</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Натиснете тук, за да въведете нова парола.</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Ако имате проблеми с линка, копирайте го и го вмъкнете в браузъра:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Нова парола за $APP_NAME</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Въведете валидна дата, например 24.11.2001 (дд.мм.гггг)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Въведете валиден e-mail, например name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Въведете десетично число, например 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Въведете цяло число, например 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Въведете валиден телефон, например +359 888 123456</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Въведете валидно време, например 12:23 (чч:мм)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Защита с парола</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Парола</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Период на валидност</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Безкраен</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Период</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Един път</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Валидност от:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Валидност до:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Покана за $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Няма покана на раположение, за този код.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Поканата вече е използвана. Този тип покани не могат да се използват повторно.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Кодът за покана не е валиден.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Парола</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Проверка на парола</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Грешна парола</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Аудио/Видео</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Синхронизация на Аудио/Видео</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Входът в системата е коректен, но сесията Ви не е активна. Трябва да опитате повторен вход в системата.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Грешна сесия или липса на админ права. Трябва да имате админ права, за да добавяте нови потребители.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Сесията не може да се свърже с отдалечения потребител.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Рекордерът е в момента в БЕТА-версия!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-ос</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-ос</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>шир</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>ширина</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>вис</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>височина</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Промяна прозрачност</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Отваряне браузър</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Затваряне браузър</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Връзката със сървъра е прекъсната. Трябва да заредите наново приложението или да проверите мрежата си.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Указател</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Синхронизация</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Синхронизация на потребители, моля изчакайте</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&amp;lt;u&amp;gt;Сваляне в SVG&amp;lt;/u&amp;gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&amp;lt;u&amp;gt;Сваляне в PNG&amp;lt;/u&amp;gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&amp;lt;u&amp;gt;Сваляне в JPG&amp;lt;/u&amp;gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&amp;lt;u&amp;gt;Сваляне в PDF&amp;lt;/u&amp;gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&amp;lt;u&amp;gt;Сваляне в TIF&amp;lt;/u&amp;gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Напомняне:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Категория:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Повтаряне:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>няма</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Място:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Начало</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Край</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Заглавие:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Коментар:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Покана</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Всеки ден</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Всеки месец</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Всяка година</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Краят на събитието е след началото му!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Въведете заглавие!</value>
+  </string>
+  <string id="580" name="580">
+    <value>Отдясно наляво</value>
+  </string>
+  <string id="581" name="581">
+    <value>Активирайте, ако искате да пишете на език отдясно наляво (обратен ред на думите)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Табло</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Гледане на записани срещи</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Среща - създава конференция с 4 (до 16) потребители&amp;lt;br/&amp;gt;като всички имат аудио + видео достъп</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Събитие - създава конференция с до 200 потребители&amp;lt;br/&amp;gt;като само Модераторът има аудио + видео достъп</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Създаване на потребители, стаи, организации&amp;lt;br/&amp;gt;+ промяна на конфигурациите</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Потребители в стаята в момента</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Логин</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Зареждане на документ. Моля изчакайте докато всички клиенти бъдат синхронизирани.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Качването е завършено, конвертиране на документа...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Старт качване</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Моля изберете файл от диска.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Отказ</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Избор на файл</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Връзки</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Стойност</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>СтриймID</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Логин</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Свързан от</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Стая / Обхват</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Кик потребител</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Кик потребител</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Наистина ли искате кик на потребителя?&amp;lt;br/&amp;gt;Това само ще махне клиента от стаята, и след това той може да се логне наново.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Сесията Ви е приключена от Администратор или Модератор.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Телефон</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Потребителят е Модератор в тази стая</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Потребителят има право да рисува на дъската.</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Ре(старт) на Аудио/Видео или промяна на настройките</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Позволяване на потребителя да рисува на дъската</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Премахва правото за рисуване на дъската</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Потребители</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Файлове</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Бяла дъска</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Чат</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Вашият акаунт е свързан с повече от 1 организация. Моля, изберете една за текущата сесия.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Стаята е пълна в момента. Моля, пробвайте отново по-късно.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Тип стая</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Уговорена среща</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Време на сървъра</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>Напомняне</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Съобщение от потребител:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Съобщение:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Натиснете тук за участие в срещата</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Натиснете тук за вход в стаята</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Ако имате проблеми с този линк, моля копирайте и го вмъкнете в браузъра:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>вътр. търсене</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Добавяне външни</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Име</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Фамилия</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Е-майл</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Потвърждаване изход</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Искате ли да излезете сега?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Дейности</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Демо стая</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Демо време</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Таймер на срещата</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Тази стая е Демо стая. За да изключите това предупреждение, трябва да влезете в частна стая или да настроите собствен сървър.</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Модериран</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Моля изчакайте докато Модераторът влезе в стаята. Модераторът може да е учител, администратор или създател на стаята.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>OK</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Споделен екран</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Има нов споделен екран от потребител:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Старт на споделяне</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Добавяне на среща</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Стая за среща</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Стая за събитие</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Модерация</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Модерация на потребители</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Модерация на стаи</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>М</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Искате ли този потребител да стане Модератор на тази организация?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Моля изберете първо организация!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Организация - Модератор</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Искате ли да изтриете потребителя от организацията?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Потребителят е Модератор</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Потребителят не е Модератор</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Искате ли този потребител да не бъде Модератор на тази организация?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Добавяне/премахване на потребители и стаи от организацията</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Наистина ли искате да изтриете този запис?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Наистина ли искате да изтриете потребителя от организацията? Това само ще прекъсне връзката между потребителя и организацията, за да изтриете потребителя изцяло трябва да влезете в Администраторския панел.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Не може да изтриете своя потребител!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Тази операция изисква Администраторски акаунт!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Няма сесия свързана с това ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Това е Администраторски или Модераторски акаунт. Може да редактирате този акаунт само през Административния панел.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>За да приключите регистрацията, натиснете следния линк или копирайте адреса в браузъра си.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Натиснете, за да потвърдите е-майла.</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Не беше намерен такъв потребител.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Този потребител вече е активиран.</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Успешно активирахте акаунта си!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Вход сега</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Вашият акаунт не е активиран. Използвайте линка за потвърждение в изпратения мейл.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Успешна регистрация! Изпратен е мейл за потвърждение на регистрацията и активиране на акаунта. Моля проверете мейла си.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Изтриване на Модераторска роля за този потребител</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Даване на Модераторски права на този потребител</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Потребител</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Достъп до дъската</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Модератор</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Модерация: моля изберете потребител от списъка за даване на права до дъската, модерация или видео.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Този потребител вече е Модератор, затова той има достъп до дъската.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Не може да премахнете Модераторските права от своя потребител!</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Позволяване на потребителя да публикува своето Аудио/Видео.</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Изтриване на Аудио/Видео за този потребител</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Искам права на Модератор за тази стая.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Искам права за рисуване върху дъската.</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Искам права за споделяне на Аудио/Видео.</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Вие сте Модератор на тази стая.</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Вие имате права за рисуване върху дъската.</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Вие имате права за споделяне на Аудио/Видео.</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Съобщение към Модератор</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Потребителят</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>иска права на Модератор. Използвайте статус иконите, за даване/премахване на правата.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>иска права за рисуване върху дъската. Използвайте статус иконите, за даване/премахване на правата.</value>
+  </string>
+  <string id="695" name="695">
+    <value>иска права за споделяне на Аудио/Видео. Използвайте статус иконите, за даване/премахване на правата.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Трябва да изчакате, докато Модераторът влезе в стаята.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Отказ</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Запазване</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Ден</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Месец</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Година</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Качване на файл</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Нова папка</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Опресняване</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Кошче</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Моите файлове (home)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Файлове за стаята</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Нов файл</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Нова папка</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Изтриване на папка</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Редактиране на име</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Нова папка</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Сигурни ли сте, че искате да изтриете този елемент?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Търсене</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Търсене</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Отваряне на документ</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Показване на всички файлове (дървовиден изглед)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Затваряне на документ</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Изтриване на файл</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Нямате права за рисуване върху дъската. Може да поискате това право от Модератор.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Свойства на документ</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Старт клиент (външен)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Старт клиент (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Потребител иска да сподели своя екран. Искате ли да го видите?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>В момента споделяте своя екран. За да спрете споделянето, натиснете бутона Stop.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Сесия за споделяне</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>В момента споделяте своя екран!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Десктоп преглед</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Изход</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Десктоп споделяне</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Натиснете Start, за да публикувате своя екран.</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Старт на споделяне</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Стоп на споделяне</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Избор на част от екрана:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Промяна на ширина</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Сесията на споделяне е приключила!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Промяна на височина</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-изместване</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-изместване</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Ширина:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Височина:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Връзката е затворена от сървъра</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Отказ</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Старт външен</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Ако затворите сесията изцяло, няма да може да възстановите прегледа на тази сесия.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Потвърждаване затваряне на сесията за преглед</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Споделяне на екран</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Запис на сесия</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Общ браузър</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Firefox на Windows не позволява чисто общо браузване. Моля изберете друг браузър.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Предишен</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Следващ</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Презареждане</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Начало</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Зареждане</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Добавяне на сайт като сайт по подразбиране за този профил.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Тест на настройките</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Проверете настройките на микрофона и камерата си. След това може да пуснете записа за проверка на гласа и картината.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Не показвай повече този тест</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Отказ</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Старт конференция</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Не питай повече</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Може да продължите без тест, ако не планирате да публикувате видео/аудио. Участниците без Аудио/Видео могат да използват дъската, да споделят екрана си и да пишат чат съобщения.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Височина</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Натиснете Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Старт конференция</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Старт събитие</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Избор на стая</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Проба настройки</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Старт конференция</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Тип конференция:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Начало запис</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Не показвай Аудио/Видео тест запис, преди влизане в конференцията.</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Публични стаи</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>До публичните стаи имат достъп всички потребители.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Частни стаи</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>До частните стаи имат достъп само потребителите от същата организация.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Моите стаи</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Стаите в тази секция са създадени за лично ползване. Те са създадени от календара и имат начална и крайна дата. Те се описват в тази секция, докато са валидни.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Трябва да сте Модератор за това действие.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Искане за Модератор</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Искане за рисуване върху дъската</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Искане достъп до камера/микрофон</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Сесията вече се използва - не може да я използвате повторно.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>СТАРТ</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>ИЗХОД</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Наистина ли искате да излезете? Може би трябва да изчистите дъската, качените документи и чат историята.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Изход конференция</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Стаи</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Изберете стая за срещата</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Има незапазено събитие в календара. Моля, запазете го или го изтрийте.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Моля добавете поне 1 присъстващ на срещата!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Наистина ли искате да изтриете това събитие?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Предупреждение</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Добавяне събитие</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>ден</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>седмица</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>месец</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Описание</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Присъстващи</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>Моля, следвайте инструкциите и натиснете бутона Start, за да започнете конференция веднага или отидете в календара, за да планирате бъдеща конференция.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Планиране среща</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>За да планирате среща, добавете събитие към каледара. За всяко събитие в каледара ще бъде автоматично създадена стая за конференция. Вие и всички присъстващи ще получат мейл с линк към стаята&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; Може да изберете различни типове стаи с различен тип модерация.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Нужда от помощ?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Ограничен</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Търсене</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Добавяне</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Не е избран потребител. Моля изберете елемент от списъка и го добавете.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Добавяне на присъстващ</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Запазване</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Изтриване</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Детайли за събитието</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Модератори по подразбиране</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Супер</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Име</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Е-майл</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Добавяне на нов Модератор по подразбиране</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>е Супер Модератор</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Ако стаята е модерирана, Модератор или Администратор автоматично са с права на Модератор. Ако искате определен потребител да бъде Модератор, използвайте опцията Модератор по подразбиране.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Супер Модератор винаги е Модератор при вход в стаята и никой не може да премахне тези негови права.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Прилагане права на Супер Модератор</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Премахване права на Супер Модератор</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Ако добавите организация към стаята, само потребителите от тази организация ще виждат стаята.</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Модерация</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Ограничения</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Организация</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Сигурни ли сте?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Наистина ли искате да изтриете този елемент? Трябва да натиснете бутона Save, за запазване на промените!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Не е избран потребител. Моля изберете потребител, преди да го добавите!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Добавяне на нов Модератор по подразбиране</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Искате ли да дадете права на Супер Модератор на този потребител? Супер Модератор винаги е Модератор при вход в стаята и никой не може да премахне тези негови права. Трябва да запазите стаята, за да запазите настройките!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Искате ли да премахнете правата на Супер Модератор от този потребител? Трябва да запазите стаята, за да запазите настройките!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Потребителят е Супер Модератор и никой не може да премахне тези негови права!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Наистина ли искате да изтриете този файл/папка?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Изтриване на файл/папка?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Г-жа</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Д-р</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Свойства</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Показване позицията на мишката на гледащите</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/catalan.xml b/src/main/webapp/languages/catalan.xml
new file mode 100644
index 0000000..a8c5c72
--- /dev/null
+++ b/src/main/webapp/languages/catalan.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferència</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Videoconferència</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditories</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Configuració</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Usuari</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administració</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Aturar</value>
+  </string>
+  <string id="8" name="record">
+    <value>Grabar</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>No s'ha seleccionat ningun fitxer</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Gravació pel professor</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Usuaris conectats:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Iniciar conferència</value>
+  </string>
+  <string id="13" name="myname">
+    <value>El meu nom</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videoconferència</value>
+  </string>
+  <string id="15" name="import">
+    <value>Importar fitxer</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Actualitzar llista de fitxers</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Selecciona un fitxer com a principal</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nova enquesta</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nova enquesta per la conferència</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipus d'enquesta</value>
+  </string>
+  <string id="22" name="create">
+    <value>Crear</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Informació: descripció d'enquesta.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Crear enquesta</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Sí/No</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Valor numèric [1-10]</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Enquesta</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>És necessita ser moderador per crear una enquesta.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>El seu vot ha sigut registrat</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Ja a respòs a la enquesta prèviament</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Votar</value>
+  </string>
+  <string id="33" name="answer">
+    <value>La seva resposta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Sí</value>
+  </string>
+  <string id="35" name="no">
+    <value>No</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Vol saber:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Resultats</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultats:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Respostes:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>No hi ha enquestes</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Votar</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Reunió (màx 4 llocs)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conferència (máx 50 llocs)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipus</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Altres llocs</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Ja ha seleccionat.</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Entrar</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>El moderador a deixat la reunió.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Informació del sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Seleccionar el dispositiu</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Seleccionar camara:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Seleccionar micròfon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancelar</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Necessita reconectar-se</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Editar configuració</value>
+  </string>
+  <string id="58" name="course">
+    <value>Curso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Idioma:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>cancelar</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Eliminar pissarra</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Vols netejar la pissarra abans de afegir una nova imatge?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>No tornar a preguntar</value>
+  </string>
+  <string id="65" name="no">
+    <value>no</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Editar la configuració</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Requerix confirmació abans de netejar la pissarra</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informació del usuari</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Netejar l'àrea de dibuix</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Desfer</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Refer</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Seleccionar un objecte</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Pintar</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Traçar una línia</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Subratllar</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectangle</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>El·lipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Data</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Esborrar l'ítem escollit</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Solicitar la moderació</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Aplicar</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Convertir-se en moderador</value>
+  </string>
+  <string id="85" name="close">
+    <value>Tancar</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Itálica</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Negreta</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>En espera...</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Un usuari sol·licita la moderació:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Aceptar</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Denegar</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Envian la sol·licitud als següents usuaris</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Aceptat</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rebutjat</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Cambiar el moderador</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Voste no és moderador</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderador:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Ho sentim, però aquesta sala està plena. Intenti'l més tard</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>tancar</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>error en la introducció de dades</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>el nom d'usuari ha de contenir almenys 4 caràcters</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>la clau d'usuari ha de contenir almenys 4 caràcters</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Aquest nombre d'usuari ja existeix</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Aquest email ja està registrat</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Error, per favor contacti amb l'administrador del sistema</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Entrar</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Usuari:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Contrasenya:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Idioma</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Entrar</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrar-se</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Usuari:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Contrasenya:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Contrasenya (un altre vegada):</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Nom:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Cognoms:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Correu electronic:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>País:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrar-se</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrar</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Inici</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Usuaris</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grups</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organitzacions</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Sales de conferèncias</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Públic</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organització</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Entrar</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Usuari</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Contrasenya</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Escriure de nou</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Nom</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Cognoms</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Correu Electrónic</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Data de neixement</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Direcció</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Població</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>País</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Més informació</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Dades de usuari</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Guardar</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Guardar</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Usuari</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>nom</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>cognoms</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>mostrar següent</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>mostrar anterior</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>eliminar registre</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>cancel·lar</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>borrar</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nou registre</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Actualitzar registre</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Esborrar registre</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Estat</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>no actiu</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>actiu</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organitzacions</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>calendari</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>tancar</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nom</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Usuari</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>moderador</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>administrador</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Rol de usuari</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>organització</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nom</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>afegir organització</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>afegir organització</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>cancel·lar</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>afegir</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>eliminar organització</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>usuari</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>afegir usuari</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>eliminar usuari</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>afegir usuari</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>buscar usuari</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>buscar</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>usuari</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>organització</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>ingressar</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Sales</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Sales de conferència</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nom</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>pública</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organitzacions</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Sales de conferència</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nom</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Tipus</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Pública</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Comentari</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>guardar</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>carregar</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>guardar com</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>fitxer</value>
+  </string>
+  <string id="201" name="files">
+    <value>fitxer</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>cancel·lar</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>guardar</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>error</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>carregan</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objectes carregats</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>sincronitzant clients, esperi un moment.</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Carregant dades d'imatge.</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>sincronitzant clients, esperi un moment.</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>netejar l'àrea de dibuix</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>netejar l'àrea de dibuix, tota la informació de la pissarra s'esborrarà</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirmar abans de carregar un arxiu</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Enviar invitació</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Enviar invitació</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Tema</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatari</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Missatge</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Enviar</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancel·lar</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>enviar</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Dades d'usuari</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>El seu pseudònim per a aquesta conferència</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>nom que es mostrarà</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>nom</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>cognoms</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>idioma</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>ingressar</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Carregan</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Carregant dades, espere un moment</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Contrasenya errònia</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Per favor introdueixi dues vegades les mateixa contrasenya amb un mínim de 6 caràcters</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Correu invàlid</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Vostè ha introduït una adreça no vàlida de correu electrònic</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>El registre s'ha completat amb èxit</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>El seu compte ha estat creada, pot ingressar des d'aquest moment</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>No pot compartir el seu escriptori en aquest moment. Algú més ja està compartint el seu escriptori.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Compartició prohibida</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Compartir escriptori</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Problemes de connexió: La seva ample de banda és insuficient i es perdrà la informació. Si el missatge es repeteix amb freqüència sol·liciti al moderador reduir la qualitat d'imatge i àudio.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Escriptori de:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Dibuixar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Fitxers</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membres</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Descarregar el document original</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Descarregar el document en pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Pujar un arxiu a la pissarra</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuració</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Arrossegar aquest objecte</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Ajustar el tamany del objete</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Anar a la primera pàgina</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Anar a la pàgina anterior</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Anar a la pàgina següent</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Anar a l'última pàgina</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Disminuir Zoom</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Aumentar Zoom</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sra.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuració</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Clau</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuració</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Clau</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>última actualizació</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>actualitzat per</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>clau</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Usuaris</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Eliminar usuari de l'organització</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Eliminar</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Aquest usuari ja és membre de l'organització</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Noticies</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Enllaços ràpids</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Anar a la videoconferència</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Anar a l'auditori</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Ajuda i support tecnic</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Enviar "bug"</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>més</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Web del Projecte (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Llista de correus del Projecto (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Recordar</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Contingut</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>La meva pàgina d'inici</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Reunions programades</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Events programats</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Reunion publiques</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Reunions privades</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Events publics</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Events privats</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Contingut public</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Contingut privat</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Contenido personal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value>...</value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderació</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Sol·licitar la moderació</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Enquestes</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Seleccioni un fitxer</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Configuració</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Càmera i micròfon</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Configuració de la pissarra</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Sortir</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Regressar a les sales</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Sortir</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Ha oblidat la seva contrasenya?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Resetear contrasenya</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Audi i Video</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Chat</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Pissarra</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Moderació</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Fitxers</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Usuaris</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Enquestes</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>No hi ha ningú connectat amb aquest nom d'usuari</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>El email conté un enllaç especial que ha estat enviat al seu correu. Si no apareix aquest correu revisi la configuració de filtres de spam del seu servidor i reenvée aquest correu novament.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Error</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Missatge</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>No es va trobar a l'usuari (mètode de generació de claus incorrecte).</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Generar contrasenya</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Entrar</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>cambiar contrasenya</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nova contrasenya</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>torni a escriure la contrasenya</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Les contrasenyes introduïdes no són iguals.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Escrigui 4 o més caràcters. Distingeix majúscules de minúscules</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>La contrasenya ha estat canviada, ara pot iniciar sessió.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Error desconegut. Enviï aquesta informació a l'administrador del sistema.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>No es va trobar a l'usuari</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Contrasenya incorrecta</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Ha sortit del sistema</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Es troba deshabilitada l'opció de registre.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Correu incorrecte</value>
+  </string>
+  <string id="340" name="registration">
+    <value>fitxer duplicat, per favor seleccioni un altre</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>el nom de l'arxiu és massa curt</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>No es va poder guardar l'adreça</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>L'usuari va ser afegit, no obstant això haurà d'estar almenys en una organització per a poder iniciar la sessió.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nova gravació</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No es va trobar un camp en aquest FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No es va trobar una etiqueta per a aquest camp.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Es necessita autorització de l'administrador</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor d'idiomes</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Idioma</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Etiqueta-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Etiqueta-Nom</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valor</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Valor dels camps</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nom</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Valor de l'etiqueta</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID de l'etiqueta</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Ha eliminat l'etiqueta però no el camp. No es pot eliminar un camp ja que pot tenir etiquetes en altres idiomes.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Labelid incorrecte. El seu FieldLanguagesvaluesAneu no es va trobar en la base de dades.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Vostè no pot eliminar aquest camp, només les etiquetes. No hi ha una etiqueta carregada de moment o no es troba seleccionada cap (pot ser que no existeixi en l'idioma seleccionat).</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportar</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Necessita tancar la sessió per a veure els canvis.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Afegir nou idioma</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>eliminar idioma</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Afegir nou idioma</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nom</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>afegir idioma</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Copia de seguretat</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>anar a l'inici</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>anterior</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>sigüente</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>anar al final</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>l'usuari parla (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>encendre o apagar so</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>La seva configuració</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Salutacions,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editar perfil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nous missatges:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Pujar imatge</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Exportació de dades d'usuari</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>¡Han d'existir totes les organitzacions!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Exportar usuaris</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Exportar per organizació</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Iniciar procés d'exportació</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Importació de dades d'usuari</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Seleccionar fitxer xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importar</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportar a XML - Aquests fitxers poden ser usats per a: - Contribuir en el projecte - Importar-los en altre sistema - Copia de Respatller - Personalització - Col·locar-lo en el directori d'idiomes per a la pròxima instal·lació.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Seleccioni un arxiu d'idioma que s'importarà. Configuri correctament l'idioma en el menú desplegable (no importa el nom que tingui l'arxiu ja que serà importat de tots les maneres).</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importar - seleccionar fitxer</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Guardar com...</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nom:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comentari:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>guardar</value>
+  </string>
+  <string id="395" name="record">
+    <value>Grabacions</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Visor de grabacions</value>
+  </string>
+  <string id="397" name="record">
+    <value>Grabacions de salas publiques i privades</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Usuaris:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>En el sistema:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Usuaris en la sala:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>actualitzar</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>La sala esta plena. Per favor, intenti'l més tard.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Premi sobre una sala per a veure els detalls</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Escriure als usuaris d'aquesta sala:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Sala:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Usuaris en aquesta sala:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>desde:</value>
+  </string>
+  <string id="409" name="record">
+    <value>reproduir gravació</value>
+  </string>
+  <string id="410" name="record">
+    <value>Duració:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Manera d'enregistrament: no pot canviar cap valor ja que es tracta d'un arxiu gravat.</value>
+  </string>
+  <string id="413" name="record">
+    <value>Reproduir aquesta gravació</value>
+  </string>
+  <string id="414" name="record">
+    <value>Reproducir / Pausa</value>
+  </string>
+  <string id="415" name="record">
+    <value>Iniciar gravació</value>
+  </string>
+  <string id="416" name="record">
+    <value>Parar gravació</value>
+  </string>
+  <string id="417" name="record">
+    <value>Gravació:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Actualmente algú es troba graban:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Gravant per l'usuari:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancel·lar</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>La gravació serà cancel·lada i no es guardarà.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>reprendre</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Tancar finestra i reprendre la gravació</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Canviar el color de línia</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Seleccionar color</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Deshabilitar / Habilitar color de línia</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>canviar color de fons</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Deshabilitar / Habilitar color de fons</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>canviar grossor de línia</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>tancar</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>canviar grandària de lletra</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Eliminar gravació</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Invitat</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Per:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nom</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Sala</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancel·lar</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>iniciar</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nom</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Eliminar registre (log) de xat en el servidor</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Xat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>enviar un missatge</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticones</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticones</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Seleccionar dispositius</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Àudio i Vídeo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Només Àudio</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Només Vídeo</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Sense Àudio/Vídeo (Imatge fixa)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>No es transmetrà Àudio/Vídeo des del seu equip. En el seu lloc es mostrarà la imatge del seu perfil. Seleccioni aquesta configuració si té problemes amb l'ample de banda d'internet.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>DL</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>DM</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>MC</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>DJ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>DV</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>DS</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DG</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Dilluns</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Dimarts</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Dimecres</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Dijous</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Divendres</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Disabte</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Diumenge</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>S#</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Nombre de setmana de calendari</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Gener</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Febrer</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Març</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Abril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maig</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juny</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juliol</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Agost</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Setembre</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Octubre</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembre</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Desembre</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendari</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participants</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostrar la configuració</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Ample | Alt</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Contenidor: vídeo</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Contenidor: moderació</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Contenidor: pissarra</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Habilitat</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Ample | Alt</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Contenidor: Fitxer,Xat,Participants</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Habilitat</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Ample | Alt</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>El moderador s'ha retirat pel que ningú està realitzant una presentació en aquests moments. Pot sol·licitar la moderació o esperar.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>No hi ha moderador en aquesta sala, però si participants. Pot sol·licitar la moderació o esperar.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Comentari de $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitació</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Missatge del usuari:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Missatge:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Premi en aquest enllaç per a poder participar en la conferència:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Premi aquí per a entrar a la sala</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Si té problemes amb l'enllaç, li vam suggerir que copiï i pegui el següent text en el seu navegador:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Registre $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>La seva informació d'usuari:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Usuari:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Contrasenya:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Correu:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Equip-$APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME - Registre</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Resetear contrasenya</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Premi en el següent enllaç per a sol·licitar una nova contrasenya:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Premi aquí per a introduir una nova contrasenya</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Si té problemes amb l'enllaç, li vam suggerir que copiï i pegui el següent text en el seu navegador:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME - Nova Contrasenya</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Per favor, introdueixi una data vàlida amb el format dd.mm.yyyy Exemple: 24.12.2008.</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Per favor, introdueixi una adreça de correu vàlida</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Per favor, introdueixi un nombre decimal. Exemple: 1.00 (usi punt i no la coma)</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Per favor, introdueixi un nombre sencer</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Per favor, introdueixi un nombre de telèfon vàlid. Exemple: +593 947 225 200.</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Per favor introdueixi una hora vàlida en el format hh:mm. Exemple: 12:23.</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Contrasenya protegida</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Contrasenya</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Període de validesa</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Sense límit</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Període</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Una vegada</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Des de:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Fins a:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitació a $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>No existeix una invitació disponible amb aquest codi.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Aquesta invitació ja va ser usada i no pot tornar-se a utilitzar.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>El codi d'invitació no és vàlid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Contrasenya:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Verificar contrasenya</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Contrasenya incorrecta</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Navegador</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Sincronitzar Àudio/Vídeo</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>El login és correcte, però la sessió en la qual intenta entrar no està activa o no va ser guardada en el servidor. Ha d'iniciar una nova sessió.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>La SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>El grabador actualment està en fase beta</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>eix -x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>eix-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>a</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>amplària</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>altura</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Canviar Transparència</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Navegador Obrir</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Navegador Tancar</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>S'ha perdut la connexió amb el servidor. Necessita recarregar l'aplicació i/o comprovar la seva Xarxa.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Punter</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Sincronitzant</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Sincronitzant usuaris. Per favor, esperi.</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Descarregar com SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Descarregar com PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Descarregar com JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Descarregar com PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Descarregar com TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Recordi:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categoria:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetició:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>ningú</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Localització:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Inici</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Final</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Títol:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comentari:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Convidar a persones</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Diàriament</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mensualment</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Anualment</value>
+  </string>
+  <string id="578" name="alert">
+    <value>La cita final va després de la cita d'inici</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Per favor, posi un títol</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activi aquesta opció si l'escriptura del seu idioma va de dreta a esquerra</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Eines</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Veure esdeveniments o trobades gravades</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Videoconferència - Reuneixi's amb 4 o més (fins a 16) usuaris\ntots tindran accés d'àudio i vídeo.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Auditori - Reuneixi's amb fins a 200 participants&lt;br/&gt;només el moderador tindrà àudio i/o vídeo</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Crear usuaris, sales, organitzacions&lt;br/&gt; + canvis en la configuració</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Usuaris en la Sala</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Carregant Arxiu. Esperi fins que tots els clients hagin estat sincronitzats.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Pujada completa. Convertint l'arxiu...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Iniciar Pujada</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Pujar i importar conversa. Per favor, seleccioni un arxiu del seu disc.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Seleccionar Arxiu</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Conexions</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Valor</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Conectat des de</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Sala / Àmbit</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Expulsar a l'usuari</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Expulsar</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Està segur de voler expulsar a aquest client de la connexió?\n El client serà expulsat de la Sala, però podrà tornar a autenticar-se de nou.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>La seva sessió ha estat tancada per l'administrador o el moderador.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telèfon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>L'usuari és el moderador d'aquesta Sala</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>L'usuari té permisos per a dibuixar en la pissarra</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Iniciar Àudio/Vídeo o canviar la configuració de dispositius</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Permetre a aquest usuari dibuixar en la pissarra</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Llevar permisos per a dibuixar en la pissarra</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Usuaris</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Fitxers</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Pissarra</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Xat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>El seu compte està assignada a diverses organitzacions. Seleccioni aquella amb la qual vulgui entrar en aquesta sessió.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Aquesta sala està completa. Intenti'l més tard.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Tipus de sala</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Sala per a citar-se</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Hora del servidor</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Recordatori</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Missatge de l'usuari:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Missatge:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Premi en l'enllaç per a participar en la (Vídeo)Conferència:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Premi aquí per a entrar en la sala</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Si té problemes, copiï i pegui aquest enllaç en el seu navegador:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>recerca interna:</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>usarios externs</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>nom</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>cognoms</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirmar Sortir</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Està segur que desitja sortir?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Accions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Sala Demo</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Hora Demo</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Temporitzador de trobades</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Aquesta Sala és demo. Per a desactivar aquest avís, hauria d'aconseguir una sala privada per a ús propi o bé configurar el seu propi Servidor. Serà desconnectat automàticament en:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Amb moderador</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Per favor, esperi fins que el moderador entre en la sala. El moderador pot ser un professor, l'administrador o el creador d'aquesta sala.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Escriptori compartit iniciant-se</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Està iniciant-se un escriptori compartit de l'usuari:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Començar a compartir</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Afegir una nova trobada</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Sala de trobades</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Sala d'esdeveniments</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderació</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderar Usuaris</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderar Sales</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Desitja convertir a aquest usuari en Moderador d'aquesta Organització?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Per favor, seleccioni una Organització abans d'intentar incloure a un usuari en la mateixa.</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organització - Moderador</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Realment desitja esborrar a aquest usuari de l'Organització?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Aquest usuari és Moderador</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Aquest usuari no és Moderador</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Desitja que aquest usuari deixi de ser Moderador d'aquesta Organització?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Afegir o esborrar Usuaris i/o Sales en la seva Organització</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Realment vol esborrar aquest registre?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Realment vol esborrar a aquest usuari de la seva organització? Només s'esborrarà la connexió entre l'usuari i la seva organització. En realitat, per a esborrar a l'usuari ha d'ingressar al Panell d'Administració.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>¡Vd no pot esborrar-se a si mateix!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>¡Aquest mètode necessita un compte d'Administració per a poder ser utilitzat!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>No hi ha cap sessió associada a aquest ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Aquesta és un compte d'Administrador o de Moderador. Només pot editar aquest compte utilitzant el Panell d'Administració.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Per a completar el seu registre, faci el favor de prémer en el següent enllaç. Altra opció és copiar la URL en la barra del seu navegador.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Premi per a verificar el seu E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No s'ha trobat un usuari per a aquest algorisme Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>¡Aquest usuari ja va ser activat!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>¡Ud ha activat el seu compte amb èxit!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Ingressi ara</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>El seu compte no està activada. Utilitzi en primer lloc l'enllaç que hi ha en correu rebut al finalitzar el procés de registre.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Ud s'ha registrat amb èxit. Li hem enviat un correu amb un codi de verificació. Per favor, revisi el seu compte de correu.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Llevar el rol de Moderador a aquest usuari</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Donar permisos de Moderació a aquest usuari</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Usuari</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Accés a la pissarra</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderador</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderació: Per favor, seleccioni qualsevol usuari de la llista per a donar-li accés a la Pissarra, Moderació o Vídeo.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Aquest usuari ja és Moderador, així que automàticament té permisos per a dibuixar.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Aquest és Ud! No pot llevar-se els permisos de Moderació a si mateix.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Permetre a aquest usuari Publicar el seu Àudio/Vídeo</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Esborrar l'Àudio/Vídeo d'aquest usuari</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>M'agradaria ser moderador d'aquesta sala</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>M'agradaria utilitzar la pissarra</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Desitjaria compartir el meu Àudio/Vídeo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Vè. és el moderador d'aquesta sala</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Té permisos per a dibuixar en la pissarra</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Té permís per a compartir el seu Àudio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Missatge al Moderador</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>L'usuari</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>Desitjaria ser Moderador. Usi les icones d'estat pròxims a l'usuari en la Llista d'Usuaris per a agregar o remoure el permís de Moderació.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>desitjaria utilitzar la pissarra. Utilitzi les icones que hi ha al costat del nom de l'usuari (en la Llista d'Usuaris) per a agregar o llevar els permisos corresponents.</value>
+  </string>
+  <string id="695" name="695">
+    <value>desitjaria compartir el seu Àudio/Vídeo. Usi les icones que hi ha al costat del nom d'usuari (en la Llista d'Usuaris) per a agregar o llevar els permisos per a compartir Àudio/Video.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Ha d'esperar fins que un Moderador ingressi a la sala.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Guardar</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dia</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mes</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Any</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Pujar fitxer</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Fitxer carpeta</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Actualizar</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Papelera</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Els meus Arxius (Dispositiu personal)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Arxius de la Sala (Dispositiu públic)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Afegir fitxer</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>AfegirCarpeta</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Borrar Carpeta</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Editar nom</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nova Carpeta</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Està segur que vol esborrar aquest ítem?)</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Obrir document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Mostrar tots els arxius (Vista d'arbre)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Tancar document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Esborrar fitxer</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>No té permisos per a escriure o dibuixar en la pissarra. Ha de ser moderador o, almenys, tenir permisos d'edició de la pissarra. Sol·liciti-l'hi a un Moderador.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Propietats</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Iniciar Client (extern)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Iniciar Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Un usuari desitja compartir la seva pantalla. Desitja visualitzar-lo?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Actualment està compartint el seu escriptori. Per a deixar de fer-lo, premi en el botó Stop en el client utilitzat.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Compartint sessió</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>¡Ja està compartint el seu Escriptori!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Visor d'Escriptori</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Sortir</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Compartint l'Escriptori</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Premi Iniciar per a publicar la seva pantalla</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Iniciar el compartir escriptori</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Finalitzar el compartir escriptori</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Seleccioni l'àrea de la seva pantalla:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Canviar amplària</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>!Ha finalitzat aquesta sessió!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Canviar altura</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Desplaçament eix X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Desplaçament eix Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Amplària:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Altura:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>La connexió ha estat tancada pel servidor</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Iniciar Externa</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Si tanca aquesta sessió completament, no serà possible reiniciar el visor durant aquesta sessió.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirmar el tancament de la sessió</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Compartir pantalla</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Grabar sessió</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Navegació</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Hum... Firefox en windows no mostra la co-navegació amb claredat. Per favor, utilitzi altre navegador o tancament aquesta funcionalitat.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previ</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Sigüent</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Recarregar</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Inici</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Carregar</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Configurar en el seu perfil aquest lloc com la pàgina web per defecte.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Provar configuració</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Comprovi la configuració del seu micròfon i/o càmera abans d'entrar en la sala. Per a això gravi durant alguns segons i reprodueixi'l.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>No tornar a mostrar aquest test</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel·lar</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Iniciar</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>No demanar de nou</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Pot continuar sense fer la comprovació si no desitja publicar la imatge i/o el so. Els participants sense àudio o sense vídeo poden en tot cas utilitzar la pissarra, compartir el seu escriptori o enviar missatges utilitzant el xat.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Medidor de Nivell</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Pressioni Iniciar</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Iniciar Conferència</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Iniciar Esdeveniment</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Anar a la Sala</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Comprovar Config.</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Iniciar Conferen.</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Instruccions Conferència:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Iniciar Gravació</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>No mostrar el test de gravació d'àudio /vídeo abans d'entrar en una Conferència</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Salas públiques</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Les sales públiques són accessibles per a tots els usuaris.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Salas privades</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Les sales privades són accessibles només per als usuaris de la mateixa organització.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Les meves sales</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Les sales en aquesta secció són per a ús personal. Es creen utilitzant el calendari i tenen una data d'inici i de finalització. Només es mostren en aquesta secció durant l'interval temporal de validesa.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Ha de ser moderador per a executar aquesta acció.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Sol·licitar la moderació</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Sol·licitar accés a la pissarra</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Sol·licitar accés a la càmera/micròfon</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>L'autenticació d'aquesta sessió ja ha estat utilitzada. No pot fer-se dues vegades.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>INICIAR</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>SORTIR</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>¿Desitja realment sortir? És convenient que abans esborri els documents pujats, la pissarra o l'historial del xat.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Sortir de la conferència</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Sales</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Seleccioni una sala</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Hi ha un esdeveniment sense guardar en el calendari. Per favor, guardi'l o bé esborri'l.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>¡Per favor, afegexi almenys a un participant!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>¿Realment desitja esborrar aquest esdeveniment?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Avis</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>afegir event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>dia</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>setmana</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mes</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Descripció</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Asistents</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, la seva Plataforma Web de Videoconferència. Només segueixi les instruccions, pressioni el botó per a iniciar immediatament o vagi al Calendari per a programar una Trobada més endavant.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Progr. Trobada</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Per a planificar una conferència, afegeixi un nou Esdeveniment en el Calendari. Per a cada Esdeveniment es crearà automàticament una Sala de (vídeo)conferència. Vostè i la resta d'assistents rebran un correu amb un enllaç de la sala. &lt;br/&gt;&lt;br/&gt;Pot escollir entre diferents tipus de sales amb diferents dissenys i sistemes de moderació. També pot escollir entre diferents tipus de notificació de correu que s'envien en cada esdeveniment del calendari.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>¿Necessita ajuda?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restringit</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Buscar</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Afegir</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>No hi ha cap usuari seleccionat. Seleccioni primer un ítem de la llista i premi a Afegir.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Afegir asistent</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Guardar</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Esborrar</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Detalls de l'Esdeveniment</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Moderadors per defecte</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Nom</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Afegir nou Moderador per defecte</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>¿És supermoderador</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Si la sala està moderada, qui sigui ja moderador seguirà sent-lo. Si no desitja que sigui així, i només vol que determinat usuari sigui el moderador, utilitzi l'opció de Moderador per defecte.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Un supermoderador és sempre el moderador d'una sala quan entra en ella. A més, ningú pot llevar-li la marca de moderació</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Aplicar supermoderación a l'usuari</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Llevar supermoderación a l'usuari</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Si afegix una organització a la sala, només els usuaris d'aquesta organització tindran accés a la mateixa (això només és vàlid si la marca de Pública està configurada com falsa)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderació</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitacions</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organització</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>¿Està Vè. segur?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Realment desitja esborrar aquest ítem? Ha de prémer en el botó de guardar per a emmagatzemar els canvis!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>No hi ha cap usuari seleccionat. Per favor, seleccioni'l primer.</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Afegir un nou moderador per defecte</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>¿Desitja afegir una marca de supermoderador a aquest usuari? Recordi que un supermoderador no només és el moderador d'una sala, sinó que a més cap altre moderador podrà esborrar la marca de moderació. Necessita guardar l'objecte sala per a emmagatzemar aquestes configuracions.</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>¿Desitja eliminar la marca de supermoderador a aquest usuari? Necessita guardar l'objecte sala per a emmagatzemar aquestes configuracions.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Aquest usuari té el rol de supermoderador. No pot llevar-li la marca de moderació a un supermoderador.</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>¿Realment desitja esborrar aquest Fitxer/Directori?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>¿Esborrar Fitxer/Directori ?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Sra.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>D.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Propietats</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Mostrar la posició del ratolí als participants</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Compartir Àudio amb el applet SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Compartir Àudio amb SIP i Vídeo amb Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Pantalla completa</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Veure pantalla</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>El usuari</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>desitja compartir la seva pantalla. Desitja visualitzar-la?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Tancar</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>La sessió ha estat tancada per qui compartia pantalla</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pausa</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Compartir pantalla</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimitzar</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximitzar</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Vídeo</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Línia temporal de gravació</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Les meves grabacions</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Grabacions públics</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Nom</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Longitud</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Data</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Per</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Vídeo - Principal</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Gravació</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Pot grabar i compartir la seva pantalla alhora. Per a permetre que uns altres vegin la seva pantalla, premi en el botó -iniciar- de la part superior. Per a gravar la sessió, és suficient amb prémer a iniciar enregistrament.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Iniciar Gravació</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Parar Gravació</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Descarregar l'arxiu FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Sala</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>L'usuari té el micròfon activat</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Detenir compartir</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Permetre preguntes de l'usuari</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Desactivi això per a impedir que cap usuari li molesti en aquesta sala. Al fer-lo, el botó per a sol·licitar la moderació no serà visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Permissos</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Descarregar com AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Només audio</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Hi ha hagut errors mentre es processava gravació.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>La gravació encara no aquesta llista. Intenti'l de nou en un parell de minuts.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Missatge del grabador:</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>El applet SIP no està llest</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Configuració del compte SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>Configuración SIP para cada usuario. Puede activar o desactivar SIP desde Administración &gt; Configuración (Key: enable_sip). Los datos SIP de cada usuario deberían crearse automáticamente.</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>Usuari SIP</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Contrasenya SIP</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>ID Aut-SIP</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>L'autenticació SIP ha fallat. Hauria de comprovar les dades d'autenticació del seu proveïdor SIP i del compte SIP de cada usuari. Com administrador, podrà autenticar-se i comprovar la configuració. Si entra com usuari o com moderador, qualsevol intent d'interacció serà bloquejat.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>L'autenticació SIP ha fallat. Contacti amb el servei tècnic.</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Autenticant en la porta d'enllaç SIP...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Autenticant en la porta d'enllaç SIP...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Mostrar Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Missatges Log del procés de postgravación</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>Missatge de applet SIP</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>El applet SIP no està llest. Per favor, accepti el applet i premi OK.</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Sol·licitar la moderació</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Guardar canvis de la cita</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>La cita ha estat canviada. Desitja guardar aquests canvis? Tots els participants implicats rebran un correu amb la data i hora actualitzades (depenent del tipus de notificació d'aquesta cita).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Per accedir a les gravacions que tingui per entrar en l'aplicació $APP_NAME.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Seleccioneu l'usuari d'aquest vídeo</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Usuaris disponibles per aquesta POD</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Vostè és un moderador en aquesta entrevista. Pots decidir qui parla en aquesta entrevista i vostè pot començar / aturar la gravació de la sessió.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Començar la gravació</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Aturar la gravació</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>La gravació de l'entrevista ja ha començat.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>La gravació s'ha aturat o no han iniciat encara.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>La gravació d'aquesta entrevista ja s'ha iniciat!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/chinese simplified.xml b/src/main/webapp/languages/chinese simplified.xml
new file mode 100644
index 0000000..129da8e
--- /dev/null
+++ b/src/main/webapp/languages/chinese simplified.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>会议</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>会议</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>演讲</value>
+  </string>
+  <string id="4" name="settings">
+    <value>设置</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>用户</value>
+  </string>
+  <string id="6" name="admin">
+    <value>管理</value>
+  </string>
+  <string id="7" name="stop">
+    <value>停止</value>
+  </string>
+  <string id="8" name="record">
+    <value>记录</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>文件不存在</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>由讲师记录</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>已连接用户</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>开始会议</value>
+  </string>
+  <string id="13" name="myname">
+    <value>我的名称</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>视频会议</value>
+  </string>
+  <string id="15" name="import">
+    <value>导入演示</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>刷新列表</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>转到主主文件</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>新建投票</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>新会议投票.</value>
+  </string>
+  <string id="20" name="question">
+    <value>问题:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>投票类型:</value>
+  </string>
+  <string id="22" name="create">
+    <value>创建</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>提示:每个连接用户将收到一个新投票的消息提示.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>创建投票</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>取消</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>是/否</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>数字 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>投票</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>主持人才能提问</value>
+  </string>
+  <string id="30" name="vote">
+    <value>已您的投票.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>您已经投过这个票.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>投票 !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>你的回答:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>是</value>
+  </string>
+  <string id="35" name="no">
+    <value>否</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>想要提问:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>投票结果</value>
+  </string>
+  <string id="38" name="question">
+    <value>提问:</value>
+  </string>
+  <string id="39" name="results">
+    <value>结果:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>回答:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>还未开始投票.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>投票!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>会议 (最大4用户)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>会议 (最大50用户)</value>
+  </string>
+  <string id="45" name="type">
+    <value>类型</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>其他座位</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>已经选择</value>
+  </string>
+  <string id="48" name="enter">
+    <value>进入</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>主持人已经离开.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>系统信息</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>请选择设备</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>请选择摄像头:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>请选择话筒:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>确定</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>取消</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>需要从新连接.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>编辑设置.</value>
+  </string>
+  <string id="58" name="course">
+    <value>课题:</value>
+  </string>
+  <string id="59" name="language">
+    <value>语言:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>确定</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>取消</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>清除白板</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>新图片加入后清除白板?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>不再询问</value>
+  </string>
+  <string id="65" name="no">
+    <value>否</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>编辑设置</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>清除白板前确认.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>用户信息</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>清除画板</value>
+  </string>
+  <string id="70" name="undo">
+    <value>取消</value>
+  </string>
+  <string id="71" name="redo">
+    <value>重做</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>选择对象</value>
+  </string>
+  <string id="73" name="text">
+    <value>文本</value>
+  </string>
+  <string id="74" name="paint">
+    <value>绘画</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>画线</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>下划线</value>
+  </string>
+  <string id="77" name="rect">
+    <value>矩形</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>椭圆</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>箭头</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>删除已选项</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>接受主持</value>
+  </string>
+  <string id="82" name="apply">
+    <value>应用</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>取消</value>
+  </string>
+  <string id="84" name="mod">
+    <value>成为主持</value>
+  </string>
+  <string id="85" name="close">
+    <value>关闭</value>
+  </string>
+  <string id="86" name="italic">
+    <value>斜体</value>
+  </string>
+  <string id="87" name="bold">
+    <value>粗体</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>等待中</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>用户想申请为主持:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>接受</value>
+  </string>
+  <string id="91" name="reject">
+    <value>拒绝</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>取消</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>向下列用户发送请求</value>
+  </string>
+  <string id="94" name="accept">
+    <value>接受</value>
+  </string>
+  <string id="95" name="reject">
+    <value>拒绝</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>更换主持</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>你不是这个课题的主持!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>主持:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>房间已满.请稍后再试.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>椭圆</value>
+  </string>
+  <string id="101" name="close">
+    <value>关闭</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>输入错误</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>用户名必须长于4个字符</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>用户密码必须长于4个字符</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>用户名已存在</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>邮件地址已注册</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>系统错误，请联系管理员</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>登录</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>用户:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>密码:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>语言</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>登录</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>注册</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>登录账号:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>密码:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>再次输入:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>姓:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>名:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>邮件:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>国家:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>注册</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>取消</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>注册</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>首页</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>用户管理</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>群组管理</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>组织管理</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>会议室</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>公开会议</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>组织</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>进入</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>登录</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>密码</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>再次输入</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>姓</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>名</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>邮件</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>生日</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>地址</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>邮编</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>国家</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>详细地址</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>用户数据</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>用户编号</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>登录</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>姓</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>名</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>显示下一个</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>显示前一个</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>删除记录</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>取消</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>删除</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>新记录</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>刷新记录</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>删除记录</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>状态</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>禁止</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>允许</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>组织管理</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>日历</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>关闭</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>组织编号</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>名称</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>用户</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>主持</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>管理员</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>用户级别</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>组织</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>名称</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>添加组织</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>添加组织</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>取消</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>添加</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>删除组织</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>用户</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>添加用户</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>删除用户</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>添加用户</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>搜索用户</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>搜索</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>用户</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>组织</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>进入</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>会议室</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>会议室</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>编号</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>名称</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>公开</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>组织</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>会议室</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>名称</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>类型</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>公开</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>备注</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>保存</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>载入</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>另存为</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>文件名</value>
+  </string>
+  <string id="201" name="files">
+    <value>文件名</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>取消</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>保存</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>错误</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>读取中</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>对象已载入</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>同步用户中, 用户请等待:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>载入图像</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>同步用户中, 用户请等待:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>清除绘画</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>清除绘画, 绘画数据将丢失</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>载入文件前请确认</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>发送邀请</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>发送邀请</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>主题</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>收信人</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>消息</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>发送</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>取消</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>发送</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>用户数据</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>会议昵称</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>昵称</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>姓</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>名</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>邮件</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>语言</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>进入</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>载入中</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>数据载入，请等待!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>错误的密码</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>密码不得少于6个字符</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>邮件有误</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>非法邮件地址</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>注册成功</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>用户已建立. 请登录.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>现在不能共享屏幕. 屏幕已使用.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>禁止共享</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>共享屏幕</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>传输有误: 不能同步屏幕. 当前窗口将丢失. 请联系主持人降低画质.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>屏幕:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>绘画</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>文档</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>讨论</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>文件</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>成员</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>下载原始文档</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>下载PDF文档</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>载入演示到白板</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>设置</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>拖动这个对象</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>缩放这个对象</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>之</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>转到第一页</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>转到前一页</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>转到后一页</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>转到最后一页</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>缩小</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>放大</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>先生.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>女士.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>配置信息</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>序号</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>关键字</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>配置信息</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>关键字</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>最新更新</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>更新者</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>注释</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>关键字</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>的</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>用户</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>从组织中删除用户</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>删除</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>此组织中已存在该用户.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>新闻</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>快速链接</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>会议室导航</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>观众室导航</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>服务与支持</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>软件问题反馈</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>更多</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>项目主页 (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>用户邮件列表 (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>记录登录</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>内容</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>我的主页</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>我的会议日程</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>我的事件日程</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>开放会议</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>私人会议</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>开放事件</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>私人事件</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>开放内容</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>私人内容</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>个人内容</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>主持人</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>申请为主持人</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>投票</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>选择文件</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>设置</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>视频音频设置</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>白板设置</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>退出</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>回到房间</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>注销</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>桌面查看器</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>启动桌面查看器</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>视频和音频</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>讨论</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>白板</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>主持人</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>文件</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>用户</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>投票</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>没有此用户名</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>一封包含特殊链接的邮件已发送至你的信箱,请查收.如果没有收到,请检查和调整你的邮箱垃圾邮件设置,重新发送认证邮件.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>错误</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>消息</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>无效的哈希值,没有该用户.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>重置你的密码</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>登录</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>更改密码</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>新密码</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>重新输入密码</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>密码不一致.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4个或更多的字符,注意大小写!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>密码设置完毕,你可以登录.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>完成</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>未知错误.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>未发现该用户名</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>无效密码</value>
+  </string>
+  <string id="337" name="logout">
+    <value>注销成功</value>
+  </string>
+  <string id="338" name="registration">
+    <value>禁止前端注册.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>无效邮件地址</value>
+  </string>
+  <string id="340" name="registration">
+    <value>文件名重复, 请选择另一文件名</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>文件名太短</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>无法保存地址</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>用户已增加,但你必须将该用户与一个组织关联,否则他可能无法登录.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>新纪录</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>与此字段编号没有对应的字段</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>没有发现该标签对应的字段</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>需要管理员权限</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>语言编辑器</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>语言</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>标识号</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>标识名称</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>标识值</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>字段值</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>标签名</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>标签值</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>标签号</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>您只删除了标签而没删除字段，因为字段可能被其它标签所使用。</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>无效的标签号，FieldLanguagesvalues_Id在数据库中缺失.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>您不能删除该字段。只能删除标签。当前没有载入该字段的标签，可能是对应的字段的标签缺失的缘故</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>导出</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>你必须注销才能看到变化.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>增加新的语言</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>删除语言</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>增加新的语言</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>名称</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>增加语言</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>备份</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>到首页</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>到前一页</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>到下一页</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>到最后一页</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>用户发言</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>声音 开/关</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>系统</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>你的设置</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>你好,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>编辑你的信息</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>新消息:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>上传新图片</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>用户数据 - 导出</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>所有的组织必须事先存在!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>开始导出</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>由组织</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>开始导出</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>用户数据 - 导入</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>选择 users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>导入</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>导出为 XML - 这些文件能用于: - 创建项目 - 导入到另一个系统 - 备份 - 自定义 - 放入language 目录,可以在下一次安装使用</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>选择一个语言文件导入. 在下拉框中选择正确的语言! 不管文件的名称是什么, 将覆盖当前的语言!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>导入 - 选择文件</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>另存为</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>名称:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>注释</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>保存</value>
+  </string>
+  <string id="395" name="record">
+    <value>记录</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>记录查看器</value>
+  </string>
+  <string id="397" name="record">
+    <value>开放和私人房间记录</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>用户 :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>已参加:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>此房间的用户:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>刷新</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>此房间已满. 请稍后再试.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>点击房间获取详细信息</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>与此房间内的用户讨论:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>房间:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>此房间内的用户:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>自从:</value>
+  </string>
+  <string id="409" name="record">
+    <value>播放记录</value>
+  </string>
+  <string id="410" name="record">
+    <value>长度:</value>
+  </string>
+  <string id="411" name="record">
+    <value>日期:</value>
+  </string>
+  <string id="412" name="record">
+    <value>记录模式! 你不能更改任何信息, 这是一个记录文件!</value>
+  </string>
+  <string id="413" name="record">
+    <value>播放此记录</value>
+  </string>
+  <string id="414" name="record">
+    <value>播放 / 暂停</value>
+  </string>
+  <string id="415" name="record">
+    <value>开始记录</value>
+  </string>
+  <string id="416" name="record">
+    <value>停止记录</value>
+  </string>
+  <string id="417" name="record">
+    <value>记录中:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>现在已经有人在记录:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>记录中! 记录用户:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>取消</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>记录将被取消且不被保存.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>继续</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>关闭此窗口并且继续记录</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>修改线条颜色</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>选择颜色</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>禁止 / 允许 线条颜色</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>修改填充颜色</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>禁止 / 允许 填充颜色</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>修改 线宽</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>关闭</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>修改 字体大小</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>删除记录</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>客人</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>由:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>名称</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>房间</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>日期</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>取消</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>开始</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>名称</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>日期</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>删除服务器端讨论记录</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>讨论</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>发送消息</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>表情</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>表情</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>选择发布设备</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>音频和视频</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>只有音频</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>只有视频</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>无 音频/视频 (静态图片)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>你的个人电脑上将不会有 音频/视频 发布, 而用你个人信息里的图片代替显示. 如果你遇到带宽问题或者速度过慢, 请选择这些设置.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>一</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>二</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>三</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>四</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>五</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>六</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>日</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>星期一</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>星期二</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>星期三</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>星期四</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>星期五</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>星期六</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>星期日</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>星期</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>星期日历</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>一月</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>二月</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>三月</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>四月</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>五月</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>六月</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>七月</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>八月</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>九月</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>十月</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>十一月</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>十二月</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>日历</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>参与者</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>显示布局设置</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>宽 | 高</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>视频-容器</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>主持人-容器</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>白板-容器</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>允许</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>宽 | 高</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>文件,讨论,参与者 - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>允许</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>宽 | 高</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>主持人已离开房间. 现在无人演示. 你可以申请为主持人或者等待.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>此房间没有主持人, 但是有参与者. 你可以申请为主持人或者等待.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>反馈给$APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME——邀请</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>消息发自:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>消息:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>点击此链接来参与会议:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>点击此处进入房间</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>如果你在此链接遇到问题, 请拷贝并粘贴此链接到浏览器中:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME——注册</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>你的用户数据:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>登录:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>密码:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>邮件:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME——团队</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME——注册</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME——重置密码</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>点击此链接并键入新密码:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>点击此处键入新密码</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>如果你在此链接遇到问题, 请拷贝并粘贴此链接到浏览器中:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME系统重置密码</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>请输入一个有效的日期, 比如 24.12.2001 (天.月.年)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>请输入一个有效的邮件地址, 比如 name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>请输入一个浮点数, 比如 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>请输入一个整数, 比如 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>请输入一个有效的电话号码, 比如 ++86 010 12312123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>请输入一个有效的时间, 比如 12:23 (小时:分钟)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>密码保护</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>密码</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>有效期</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>没有结束</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>时期</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>以前</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>从:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>到:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>邀请参加$APP_NAME的讨论</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>没有此邀请码对应的有效邀请</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>此邀请已被使用. 此种类型邀请不能重用.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>此邀请码无效.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>密码:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>检查密码</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>无效密码!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>浏览</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>同步 音频/视频</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>登录有效, 但是会话没有激活或保存在服务器上. 你必须重新登录获取新的会话.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>用户没有登录或没有管理员权限. SOAP网关必须要有管理员权限才可以添加新用户.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>此会话没有远端数据连接. 在访问应用程序之前你可能没有调用SOAP网关或者你使用了错误的Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>记录功能测试之中!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x轴</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y轴</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>宽</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>高</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>改变透明度</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>浏览器打开</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>浏览器关闭</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>与服务器的连接已丢失. 你需要重新载入程序或检查网络.</value>
+  </string>
+  <string id="557" name="557">
+    <value>指针</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>同步</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>正在同步用户, 请等待</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;下载为 SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;下载为 PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;下载为 JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;下载为 PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;下载为 TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>提醒:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>类别:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>重复:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>无</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>位置:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>开始</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>结束</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>标题:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>注释:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>邀请</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>每日</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>每月</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>每年</value>
+  </string>
+  <string id="578" name="alert">
+    <value>约会结束日期必须晚于开始日期!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>请插入一个标题!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>如果您所用的语言是自右向左的，请激活此选项（反转字母顺序）</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>仪表板</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>观看已记录的会议或事件</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>会议 - 创建一个4人会议（最多16人）&lt;br/&gt;每个人都有音频+视频权限</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>事件 - 创建一个最多有200个听众的会议&lt;br/&gt;只有主持人拥有音频/视频</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>创建用户, 房间, 组织&lt;br/&gt; + 修改配置</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>目前有用户在此房间中</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>身份识别</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>登录</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>载入文档中. 所有用户正在同步，请稍等.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>上传结束, 正在转换文档 ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>开始上传</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>上传，导入对话框. 请从硬盘上选择一个文件.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>取消</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>选择文件</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>连接</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>值</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>流编号</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>登录</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>已连接 从</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>房间 / 范围</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>踢出用户</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>踢出用户</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>你确认从此连接断开用户？&lt;br/&gt; 仅将用户从此房间踢出.用户可以重新连入.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>你的会话已经被管理员或主持人关闭.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>电话</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>用户是此房间的主持人</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>用户被允许在白板上画画</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) 启动音频/视频 或者修改设备配置</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>允许此用户在白板上画画</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>移除在白板画画功能</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>用户</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>文件</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>白板</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>讨论</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>你的帐号已与多个组织关联. 请为当前会话选择一个组织.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>会议室当前满员，请稍后再试</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>会议室类型</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>指定会议室</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>服务器时间</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME会议系统——提醒</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>用户信息：</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>消息：</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>点击此链接参加会议</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>点击进入会议室</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>如果下面的链接无法点击，请将此链接地址复制到浏览器中进行访问：</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>搜索</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>外部用户</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>头衔</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>姓名</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>邮件地址</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>确认注销</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>您确定要注销吗？</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>操作</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>演示会议室</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>演示时间</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>会议室计时器</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>此会议室只是一个演示。如果不想此警告出现，可以创建一个私人会议室或者设置您自己的服务器。您的登录将会在如下时间内被自动注销：</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>主持</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>会议室需要一个主持人，主持人可以是讲座人、管理员或会议室创建者。</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>确定</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>新的屏幕共享</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>屏幕共享，来自用户</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>开始广播</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>添加新会议</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>会议室</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>活动室</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>主持人</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>主持的用户</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>主持的会议室</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>确定要将此用户设置为部门的主持人？</value>
+  </string>
+  <string id="654" name="error message">
+    <value>在添加用户前请先选择一个部门</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>部门-主持人</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>确定要将此用户从部门中删除？</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>此用户是主持人</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>此用户不是主持人</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>确定要取消该用户的支持人身份？</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>在部门中添加或删除用户、会议室</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>确定要删除此记录？</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>确定要将此用户从部门删除？您只能删除用户与部门之间的关联，如果要删除此用户信息，请登录到管理单元进行操作</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>您不能删除自己！</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>此操作只能由管理员进行！</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>没有与此ID关联的会话</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>这是管理员或主持人帐户，您只能在管理模块中进行设置.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>要完成注册，请点击下面的链接，或将链接复制到地址栏中进行访问</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>点击此处验证您的邮箱</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>未找到此用户</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>此用户已经激活！</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>您已经成功激活帐户！</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>正在登录</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>您的帐户没有激活，请先使用注册时发送给您的邮件中的链接进行激活。</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>注册成功！已经将验证码发送到您的邮箱，请查收。</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>移除此用户的主持人角色</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>赋予该用户主持的权限</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>用户</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>使用演示板</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>主持人</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>主持:请从列表中选择用户以赋予其使用演示版、主持或视频的权限</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>此用户是主持人，已经自动拥有书写的权限</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>您不能取消自己的主持人角色</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>允许该用户发布声音或视频</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>禁止该用户发布声音或视频</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>我需要成为此会议室的主持人</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>我需要在演示板上进行书写</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>我需要共享声音和视频</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>您是会议室的主持人</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>您可以在演示板上进行书写了</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>您可以接收声音和视频了</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>主持人消息</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>用户</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>如果要成为主持人，请在用户列表中，通过该用户的状态图标进行设置</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>如果要在演示板上书写，请在用户列表中，通过该用户的状态图标添加或删除此用户的书写权限。</value>
+  </string>
+  <string id="695" name="695">
+    <value>如果要共享声音和视频，请在用户列表中，通过该用户的状态图标设置是否共享此用户的声音和图像。</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>会议室中必需有一个主持人</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>取消</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>保存</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>日</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>月</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>年</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>上载文件</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>新建目录</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>刷新</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>回收站</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>我的文件(Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>会议室文件 (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>新建文件</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>新建文件夹</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>删除文件夹</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>编辑文件名</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>新建文件夹</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>您确定要删除此项目？</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>搜索</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>搜索</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>打开文档</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>显示所有文件 (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>关闭文档</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>删除文件</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>你没有绘画白板的权限。你必须是版主，或赋予你绘画白板的权利。你可以向版主申请绘画白板的权利。</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>文档属性</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>启动Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>启动Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>用户希望分享他的屏幕。你想看到它吗？</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>你正在分享你的屏幕。点击停止按钮可以中止分享会话。</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>分享会话</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>你正在分享你的屏幕！</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>桌面浏览器</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>停止分享</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>桌面共享器</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>单击开始发布您的屏幕</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>开始分享</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>暂停分享</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>选择你的屏幕区域：</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>改变宽度</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>共享器已经结束会话！</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>改变高度</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>横向偏移</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>纵向偏移</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>宽：</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>高：</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>连接被服务器关闭</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>取消</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>启动Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>如果你关闭本次会话，你将不能再重启本次会话的共享浏览器！</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>确认关闭浏览会话</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>分享屏幕</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>录制会话</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>分享浏览器</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Windows下火狐浏览器的分享浏览功能不太清晰，请使用其它浏览器来使用该功能</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>前一页</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>后一页</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>重新载入</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>首页</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>载入</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>将本页设为默认首页</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>测试音频视频配置</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>你在进入会议室前，可以使用音频视频测试来录制几秒钟的声音图像。然后通过回放你的录像录音来检查你的声音图像是否正常。</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>下次不要再显示这个测试对话框</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>取消</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>开始进入会议室</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>不要再次询问</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>录制</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>播放</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>如果你不打算发表你的声音或图片，你可以不进行测试。没有音频或视频的参与者仍然可以使用白板，分享他们的屏幕或发布讨论消息。</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>停止</value>
+  </string>
+  <string id="767" name="767">
+    <value>声音电平表</value>
+  </string>
+  <string id="768" name="start view">
+    <value>按下开始</value>
+  </string>
+  <string id="769" name="start view">
+    <value>开始会议</value>
+  </string>
+  <string id="770" name="start view">
+    <value>开始演讲</value>
+  </string>
+  <string id="771" name="start view">
+    <value>选择会议室</value>
+  </string>
+  <string id="772" name="start view">
+    <value>检查音频视频设置</value>
+  </string>
+  <string id="773" name="start view">
+    <value>开始会议</value>
+  </string>
+  <string id="774" name="start view">
+    <value>参加视频会议的步骤如下:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>开始录制</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>下次进入会议前不要再显示视频音频测试（录制）对话框</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>公共会议室</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>公共会议室－－所有用户都能访问。</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>私有会议室</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>私有会议室－－只允许同组织的用户访问。</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>个人会议室</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>个人会议室只供个人使用。 通过日历来设置会议的开始和结束日期时间。它们仅仅在有效期内罗列在此。</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>这个操作需要主持人权限。</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>申请成为主持人</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>申请使用白板权限</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>申请使用音频视频权限</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>本次会话Hash已经使用，你不能同时使用两次。</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>开始</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>退出</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>你真的退出会议吗？建议你清除你上载的文件、白板和讨论记录。</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>退出会议</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>会议室</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>选择会议室</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>日历中存在未有保存的事件。请选择保存它或删除它。</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>请为你的会议添加至少一名与会者。</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>你真的要删除你的事件?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>警告</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>添加事件</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>日</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>周</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>月</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>描述</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>与会者</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>本远程视频会议系统是一个用来召开远程视频会议、培训演讲、审查文件的平台。按照上面的指引，按下开始按钮可以马上进入会议。或者进入日历预约一个会议计划</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>预约会议</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>要建立一个会议，您可以添加日历上的一个新的事件。对于每个日历事件将自动创建一个会议室。你和每一个与会者将获得一个到房间链接的电子邮件。&lt;br/&gt;&lt;br/&gt;您可以选择不同的房间类型有不同的布局和适度系统。您也可以为每日历事件选择不同的电子邮件通知发送类型</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>需要帮助吗？</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>受限制</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>搜索</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>添加</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>没有选择用户。请从列表中选择一个项目，然后点击添加。</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>添加与会者</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>保存</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>删除</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>活动详情</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>默认主持人</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>超级用户</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>用户号</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>姓名</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>邮件地址</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>添加一个新的默认主持人</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>是超级主持人</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>如果房间拥有主持配置，那么拥有主持权限或管理员权限的人进入会议室后，将自动获取这个会议室的主持权。如果你不希望这样，而且你希望指定一个用户主持这个会议室，请使用默认主持人选项。</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>一个超级主持人进入房间时，他将自动获取这个会议室的主持权限。没有人能取消他的主持权限。</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>为用户申请超级主持权限</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>取消超级主持权限</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>如果为会议室添加专属组织，那么只有该组织成员才能进入该会议室。（仅仅对公共会议室有效！）</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>主持</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>限制数</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>单位</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>你确认吗？</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>你真的确认需要删除这个项目吗？你需要点击保存按钮来保存更改！</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>没有用户被选择。添加前你必须先选择用户！</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>添加新的默认主持人</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>你确认要赋予该用户超级主持人权限吗？注意：其他主持人是无法取消超级主持人权限的。你需要保存房间对象来保存这些设置！</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>你确认要取消该用户的超级主持人权限吗？ 你需要保存房间对象来保存这些设置！</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>这个是超级主持人！你不能取消一个超级主持人的权限！</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>你真的要删除这个文件/文件夹？</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>删除文件/文件夹?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>女士</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>先生</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>属性</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>在共享器中显示鼠标位置</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>使用SIP小应用程序共享音频</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>使用SIP小应用程序共享音频，用flash共享视频</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>满屏</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>显示屏幕</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>用户</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>想分享他的屏幕。你想看到它吗？</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>关闭</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>缩放</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>本次会话已经被发布分享用户关闭！</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>暂停</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>新的屏幕分享</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>最小化</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>最大化</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>视频</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>录制时间线</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>私有会议记录</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>公开会议记录</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>信息</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>名称</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>长度</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>日期</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>用／以</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>下载</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>主 - 视频</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>录制</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>你可以同时录制和分享你的屏幕。你可以点击上面的开始按钮来让其他与会者看到你的屏幕。如果仅仅是录制会话，那点击开始录制按钮就足够了。</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>开始录制</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>停止录制</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>下载 FLV 格式文件</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>会议室</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>播放</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>停止</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>用户打开麦克风</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>停止分享</value>
+  </string>
+  <string id="879" name="room config">
+    <value>允许所有用户发问</value>
+  </string>
+  <string id="880" name="room config">
+    <value>关闭这个功能可以防止任何用户在你会议室捣乱。影响效果是向主持人发问的按钮是不可见的。</value>
+  </string>
+  <string id="881" name="room config">
+    <value>权利</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>下载 AVI 格式文件</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV格式</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI格式</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>原始屏幕视频</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>只用音频</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>在处理记录时出错</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>记录未准备好,请过几分钟再试</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>日志:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>消息日志</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>确认</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP控件没有准备好</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>设置SIP账户</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>每个用户的SIP设置。可以通过管理员打开或者关闭SIP。 &gt; 配置键值（enable_sip）。每个用户的SIP数据是自动产生的，可以通过“重新生成SIP数据”选项重新生成。</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP用户</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip密码</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip授权号</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>登录到SIP网关失败，需要检查SIP供应商以及用户账号的授权。如果是管理员，还可以登录和检查配置，其它用户和主持人将不能进行任何操作。</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>登录到SIP网关失败，请联系系统维护人员。</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>正在登录SIP网关 ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>正在登录SIP网关 ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>显示日志</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>会后记录日志</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP小应用程序的消息</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>SIP控件没有准备好,请点击确认按钮允许控件的使用!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>申请成为主持人</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>保存更改</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>约定的会议已经更改了，您是否象保存这些更改？&lt;br/&gt;&lt;br/&gt;所有的参会人员都会受到时间更改后的会议通知邮件</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>如需都区其它记录,请先登陆系统</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>会议人员邀请</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>会议可邀请的人员</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>您是这次会议的主持人,您可以决定会议中谁可以发言,您也可以控制启动和停止会议的视频录制。</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>开始录制</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>结束录制</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>会议视频录制已经开始</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>视频录制已经停止，也可能还没开始</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>会议视频录制已经开始d!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>取消</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>录制的视频后续处理每1分钟时间需5分钟时间来处理，正在转码处理的录制视频是:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>您必须重新输入密码</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>重新产生SIP数据</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>您不能将文件或者文件夹移入自己所在的子目录!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>私有记录文件大小</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>公共记录文件大小</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>授权设置</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>在授权时您可以把用户设置为有效期过期或者设置最大的使用时间数</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>检查授权</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>费率</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>过期时间</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>剩余的秒数</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>总共时间</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>您的授权已经过期，需要重新购买使用权</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>点击购买</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>账号上剩余的时间</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>用户授权信息</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>信息</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>关闭</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>您的授权已经过期，需要重新购买使用权</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>授权设置</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>您可以购买分钟数时间来召开会议，&lt;br/&gt;&lt;br/&gt; 或者使用3-12个月的费率折扣来购买，&lt;br/&gt;&lt;br/&gt;发送邀请函（直接进入会议室的外部链接）或者通过日历来创建会议是只能有包月的用户使用的</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>9.99欧元购买60分钟（0.16欧元每分钟）</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>19.99欧元购买5小时（0.06欧元每分钟）</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>29.99欧元购买3个月（9.99欧元每个月）</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>39.99欧元每6个月（6.66欧元每个月）</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>按分钟数付费</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>按语音流量付费</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>您的授权永不过期</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>您的授权即将在以下日期过期:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>您购买了分钟付费服务，您还有:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>购买新的信用卡!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>需要您自己的服务器?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>您如果想拥有自己的$APP_NAME会议服务器或者集成到已有的应用中去，5000元每次!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>或者给我们发送信息</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>回复：</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>消息:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>发送</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>点此获取联系人信息</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>信用卡详情</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>名</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>姓</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>信用卡类型</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA卡</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>主卡</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>快递</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>信用卡号</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>过期日期</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>卡号验证码</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>账单寄送地址</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>地址</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>城市</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>国家</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>省</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>邮编</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>数量</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>提交</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>步骤1: 支付单</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>邮件地址</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>点击‘payola付款’，接受visa卡，master卡，discover卡或美国运通卡。无需签入payola。德国居民也可通过借记卡付款(Per Lastschrift-Einzug)。</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>感谢购买OpenMeetings。款项收到后您的帐户会被更新。您会在邮件中收到pdf格式的发票。您也可以在个人设置中查询过往交易。关闭此浏览窗口以回到OpenMeetings。</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>点击购买</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>点击购买</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>步骤3: $APP_NAME系统支付 - 检查订单及付款!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>姓名</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>付款已经收到</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>您好,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>已经收到您的付款，并已经更新了您的用户设置。所有以往的付款信息都能够在您的用户配置中下载</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>感谢您使用$APP_NAME系统!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>$APP_NAME系统已经收到您的付款-</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>支付状态</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>支付随机号</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>分钟数</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>约数</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>状态</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>支付单</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>您需要购买语音容量的费率才可以发送邀请或者通过日历创建会议。使用按分钟付费的方式就可以访问系统了，您也可以让第三方访问会议</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>该邮件地址已经被其他用户使用</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP设置</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>会议号是自动创建的</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP号</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>清除此片子中的所有对象</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>只有在状态栏中输入的URL地址才会发到参会者</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>创建团队会议室</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>为团队创建新的会议室!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>您可以创建一新的会议室并选择参会人员。所有被选择的人员将自动的移动新的会议室，或者是接受到通知信。团队会议室的主持人可以获取所有会议室的列表，并在各会议室之间来回切换，方便各会议室的即时问题需要</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>用户名</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>登录</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>新团队会议室的所有成员：</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>创建团队会议室</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>取消</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>至少为团队会议室选择一个用户</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>为团队增加用户</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>从团队会议室中移除该用户</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>用户是团队会议室的主持人（他可以管理所有的团体会议并可以接受所管理的团队会议室的邀请）</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>会议类型</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>如果您选择“强制所有用户都移动新的会议室”，则所有选中的成员将自动的移到新创建的团队会议室中，否则他们会得到移到新会议室的通知按钮，用户可以自由选择是否进入新团队会议室。</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>管理团队成员</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>作为主持人，您可以游走在所有的团队会议室间，团队参会者可以发送消息给你，如：可以邀请您参与到他们的会议室中帮助他们。您也可以终止所有的团队会议，这样所有的用户将退出系统。</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>强制所有用户都移动新的会议室</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>姓名</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>被创建</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>参会的人员</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>使用加号从左边增加会议成员，或者从右边移除参会人员</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) 团队会议室设置</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) 将用户加入到团队会议室中</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>团队会议室名称</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>团队会议室</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>切换到该会议室中</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>切换到该团队会议室中</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>关闭团队会议室并让所有的用户退出</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>新的团队会议室</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>您有新的团队会议室可用</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>切换到团队会议室中</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>团队会议室动作</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>您可以通过主菜单中的“动作”菜单重新打开该窗口!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>发送消息给团队会议室主持人</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>新建团队会议室</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>有新的会议室可用，您可以切入到该会议室中去。团队会议室就像有一群会议室，所有会议室有一个超级主持人可以请求帮助。在“我的会议室”中您可以看到团队会议室。</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>切换到团队会议室</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>创建者:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>团队会议室名称:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>如果您离开本会议室，窗口仍旧会保留!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>本团会议室成员</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3)其它您可以切入的团队会议室</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>如果碰到问题，请发送一条消息给团队会议室的主持人。</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>发送</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2)邀请至这个团队会议室的所有用户</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>是否团队会议室主持人</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>所有的用户被主持人邀请至这个会议室</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>此刻团队会议室没有主持人!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>请输入一条消息</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>请求帮助，我们在团队会议室中遇到了麻烦</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>一个团队会议室成员请求您的帮助</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>团队会议室请求帮助p</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>消息:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>从:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>您不属于任何团队的会议室，但您可以加入到任何团队的会议室中</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>备份系统，包括所有用户产生的数据，不过不包括语言配置，这是由于语言的配置是有系统安装时候导入的。如果需要更新您的系统，需要导出旧系统然后，1）重新生成数据库；2）导入备份的文件；3）在系统产生任何数据前先导入备份的文件。</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>系统备份</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>允许用户共享屏幕</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>D禁止用户共享屏幕</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>用户是主持人，可以做任何动作!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>想共享屏幕</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>您可以共享屏幕了</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>请求共享屏幕</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>允许/禁止共享屏幕</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>T关闭声音</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>打开声音</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>只有音频</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>勾选此项可以使得会议室只能有音频功能有利于节省带宽</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>在共享屏幕期间允许远程控制</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>在共享屏幕期间禁止远程控制</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>请求在共享屏幕期间允许远程控制</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>您被允许在共享屏幕期间允许远程控制</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>想远程控制</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>用户是主持人，他可以操控任何功能! [远程桌面控制]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>允许/禁止使用远程桌面控制的屏幕 (在屏幕共享时)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) 从您的计算机到远程计算机：从本机的剪切板拷贝和粘贴到远程控制计算机中，首先在屏幕上点一下，然后在文本框中右键点击，选择“插入”。2）从远程计算机到您的计算机：从远程计算机拷贝文本到您的计算机中，首先高亮选择远程计算机的文本，然后右键点击屏幕选择拷贝高亮文本即可。</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>在您的计算和远程计算机间拷贝和粘贴文本</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>拷贝高亮文本</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>如何拷贝和粘贴</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>共享屏幕的质量:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>超高清晰</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>高清晰</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>一般清晰</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>低清晰度</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>键盘:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>关闭网络会议!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>会议已经关闭，您将重定向到其它网址</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>关闭会议室</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>关闭后展示给用户的地址URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>会议室关闭设置</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>如果会议室关闭则用户会被重定位到相应的地址中去</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>编号</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>名称</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>配置文件</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap配置</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>名称</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>是否有效</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>被插入</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>插入者</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>被更新</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>更新者</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>配置文件需要与hibernate.cfg.xml文件在同一目录中，您需要手工的将配置文件上传到该文件夹中，对该文件的任何修改都会即刻在系统中反应出来。</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>配置文件名称</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>如果您勾选了“增加域选项”，则在登录界面中将出现“域”选择下拉框选项。这项功能在LDAP目录服务的配置中是非常有用的。如：如果用户使用hans@localhost.com作为ldap目录服务的登录名，则在用户名中只需要输入hans，而域选项则选择localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>在用户名后加入域名</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>域名</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>插入</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>拷贝高亮文本</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>远程粘贴板中的文本</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>显示远程粘贴板</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>不要再显示</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>在此拷贝文本 ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>您需要远程控制的权限或者是作为主持人才能进行拷贝和粘贴的操作</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>编辑默认配置...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>不要在远程控制中显示拷贝和粘贴的信息框</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>保存</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>移除</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>取消</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>邀请用户参与会议</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>选择一个会议室，被邀请者会受到一条您的名字和进入会议室的链接</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>连接时间:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>邀请后进入会议室</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>邀请</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>消息</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>想请您加入会议室:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>邀请信</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>发送邀请</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>不希望收到您的邀请!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>同意</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>拒绝</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>时区</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>事件详情</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>姓名</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>详细描述</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>创建者</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>时区信息</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>勾选“时区”选项使得用户在下次登录时可以让他们更新用户资料信息</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>请查核您所在的时区.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>新会议:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>详细情况</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>开始时间:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>结束时间:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>会议变更:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>主持人:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>会议取消:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>会议提醒:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>社区设置</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>联系信息对于任何人都可见</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>添加个人专长以便其他人方便找到您，用逗号分隔多个专长</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>供职单位</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>个人兴趣</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>姓名</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>时区</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>个人特长</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>联系信息</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>只给自己的联系人显示联系信息</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>不开放个人联系信息</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>个人简介</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>设置</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>查找用户</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>您的简介可被其它人查看</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>编辑个人信息</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>查找其它人员</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>查找</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>供职单位</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>其它信息</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>关键字</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>姓名</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>时区</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>供职</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>搜索</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>搜索返回结果</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>动作</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>增加为联系人</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>发送消息</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>联系人及消息</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>被禁止的用户</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>接受</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>拒绝</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>您好,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>想把您添加为联系人.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>检查您的联系人请求消息，通过点击链接来接受或者拒绝请求</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>该用户已经在您的联系人表中，或者该用户收到您的邀请后没有处理</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>联系人列表</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>编辑联系人及消息，处理还未处理的请求!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>已经确认了您的请求!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>查看 /拷贝讨论日志</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>讨论日志</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>来自</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>主题</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>发送</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>消息</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>新的邮件</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>给所有联系人发送新消息</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>撰写新消息</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>发送给:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>主题:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>使用满屏功能将使白板根据参会人员的屏幕分辨率调整可见性</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>踢出用户</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>您不能将自己踢出，如果想离开，请关闭浏览器或者退出点击按钮</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>您确信将该用户踢出会议室吗？</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>确认...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>您不能将超级主持人踢出会议室!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>预订会议室</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>开始</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>结束</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>在会议请求消息中增加其他内容，该请求事件会添加到所有的参会人员的日历中</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>收件箱</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>发送箱</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>回收站</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>您不能把自己加入为联系人</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>用户已经拒绝请求!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>用户已经接受请求!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>用户请求已经失效!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>用户已经加入到联系人列表!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>用户已经拒绝联系人请求，并从未处理联系人中移除!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>没有这样的联系人!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>您确实想移除该联系人马？</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>移除确认</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>从联系人单中删除联系人</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>用户简介</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>显示用户资料</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>消息</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>查找</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>全部选择</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>全部取消</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>选择未阅读的</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>选择已阅读的</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>移动到文件夹...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>增加新文件夹...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>删除</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>删除的邮件仍旧在垃圾箱中!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>标记未阅读的</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>标记已阅的</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>回复</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>给所有人回复</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>转发</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>动作...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>发送私人消息</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>没有选择任何消息!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>移入收件箱</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>彻底删除</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>不可撤销的动作!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>增加文件夹</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>增加文件夹并整理消息!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>增加文件夹</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>增加</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>删除文件夹</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>您不能删除该文件夹，文件夹中还有消息，首先删除消息或者移动到其它文件夹中</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>编辑姓名</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>您确信要删除该文件夹吗？删除后不可撤销</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>您的请求已发送到用户，对方会收到一条接受或者拒绝的通知，只有被接受了的用户才会出现在您的联系人中</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>消息</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>用户没有共享个人信息</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>用户只对他的联系人共享信息</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>地址 &amp; 电话</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>邀请编码已经失效，该码只有一段时间的有效期</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>此事件与日历中的几个其他用户相关联，您的更改同时会更新其他用户的日历，您确实需要更新吗？</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>确认更新</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>允许其他用户查看日历</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>不共享日历</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>日历中的联系人</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>您需要得到确认才可以查看其他用户的日历</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>您不能删除他人的日历!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>只显示自己的日历!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>此事件与日历中的几个其他用户相关联，您删除同时会删除其他用户的日历，您确实需要删除吗？</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>确认删除</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>进入会议室</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>访问会议室</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>此消息中包含预订会议室的消息</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>您需要首先保存事件!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>会议室不存在，日历中的事件已经被取消</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>选择您的昵称</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>名</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>姓</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>邮件地址</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>确认</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>最少4个字符，需要姓和名。</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>请输入有效的邮件地址!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>使用Facebook账号登录</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>成为成员的时间</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>您已经使用Facebook账号登录，您需要使用正确的邮箱地址更新您的资料，如果邮箱不正确，您将不能从其他联系人中收到邀请。</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>消息</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>不再显示简介更新的消息</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>更多的显示选项...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>新的私人消息:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>点此查看简介以及全部的消息</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>回复</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>会议室及讨论</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>会议室</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>在线会议室(1-16人)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>在线研讨会(1-120人)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>成员号</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>请输入密码</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>您需要账号</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (通过SOAP访问)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>直接载入到白板</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>您是否真的想删除白板？此动作不可逆!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>载入到白板</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>不用忘记录制，一个用户一个会是室的情况经常需要录制</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>开支录制</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>箭头</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>圆</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>直线</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>矩形</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>三角形</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>文本/便签</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>剪贴画</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>自有绘制</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>选择/移动</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>绘制形状</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>剪切/移动</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>缩小/放大</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>打印</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>撤销</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>回收站</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>增加网格</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>共享文件</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>形状选取</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>点击选取</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>拷贝</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>剪切</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>粘贴</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>删除</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>您是否真的想删除白板中的所有内容?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>直接载入到白板</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>参与者</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>考勤管理员</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>出席</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>远程控制</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>弹出</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>讨论</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>邀请参与人员</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>通过邮件</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>用户是主持人</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>用户将摄像头打开了</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>关闭以形状方式填充</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>激活以形状方式填充</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>自动按网格排列</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>允许录制</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>等待录制</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>掩藏顶栏</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>播放视频</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>确定删除当前幻灯片的内容?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>接受并且授予用户权限</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>拒绝</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>活动</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>移除白板</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>您需要主持人权限操作白板</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>不允许</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>离开了会议室.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>数学符号</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>未分类</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>配色方案</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>质量</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>域</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>访问</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>橙色</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>浅绿色</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>浅蓝色</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>深蓝色</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>金黄色</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>银灰色</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>自定义</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>最佳体验</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>上行</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>适中</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>静音</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>开启麦克风</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>给予独家音频</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>已被主持人设置为全场静音，不可本人解除</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>是否设置本人为全场静音？</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>是否确认设置本人为全场静音？其他用户将无法听到你。</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>是否设置其他用户为静音？</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>是否确认设置此麦克风为静音？仅限于此屏幕设置。其他用户不受影响。仅主持人可设置全场静音</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>设置其他用户为全场静音？</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>是否确认设置此用户为全场静音？其他用户将无法听到他／她</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>声音已打开。单击此处将请求主持人设置本人为全场（本会议室）静音</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>声音已关闭。单击此处将请求主持人解除本人全场（本会议室）静音设置</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>请求主持人设置本人为全场静音</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>请求主持人解除本人全场静音设置</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>请求主持人解除自身静音设置</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>请求主持人设置自身为静音</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>解除静音。单击此处将设置该用户为全场静音</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>设置静音。单击此处将解除该用户全场静音设置</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>该用户已被主持人设置为全场静音。你无法解除静音设置</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>设置本人为全场静音</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>解除本人全场静音设置</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>设置为静音</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>解除静音设置</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>设置为全场设置</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>解除全场静音设置</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>仅限主持人可设置／解除任一用户全场静音设置。设置本人静音：请使用你视频中的麦克风图标。</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>调查名称</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>调查人</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>存档的调查</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>活跃</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>简单图表</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>饼图</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>请输入邮箱</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>新信息</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>关闭调查</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>确定要关闭此调查？其他人将无法投票。</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>删除调查</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>确定要删除此调查？调查结果也将会被删除。</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>语言ISO码</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>允许／拒绝提供独家音频的权利</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>允许用户提供独家音频</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>拒绝用户提供独家音频</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>希望被允许独家音频</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>希望主持人允许本人提供独家音频</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>允许提供独家音频</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>摄像头像素</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>更改像素会影响频宽，较大的图片需要较高频宽</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>你无权给予自己或其他人独家音频。需要向主持人申请该权利或申请得到独家音频。</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>希望得到独家音频的权利</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>赋予我独家音频（或点击你的视频，或点击F12）</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>麦克风已打开</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>麦克风已被静音</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>隐藏对话</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>隐藏活动</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>隐藏档案总管</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>隐藏操作菜单</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>隐藏屏幕共享</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>隐藏白板</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>显示视频中麦克风状态</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>布局选项</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>新事件</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>密码保护是当你保存日历事件时发送给参与者的会议链接，而非会议室。如果多次用不同密码保存事件，每个参与者会收到一个新链接和新密码，但之前发出的链接仍将适用。</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>编辑详情</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>显示sip拨号</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>拨打</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>显示联系人的日历事件</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>你的主页</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>安排你的会议</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>观看录音及访问</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>选择及启动网络会议</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>管理用户及权利</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>管理连接及踢除用户</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>管理用户组</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>管理会议室</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>管理系统设置</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>管理标签及文字</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>管理LDAP及ADS配置</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>输出／输入系统备份</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>需要主持人或被赋予权利以在白板上绘图，上传，添加，删除或加载文件及文件夹。</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>编辑内容</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>教授</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/chinese traditional.xml b/src/main/webapp/languages/chinese traditional.xml
new file mode 100644
index 0000000..453ca72
--- /dev/null
+++ b/src/main/webapp/languages/chinese traditional.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>视訊會議</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>會議</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>會議廳</value>
+  </string>
+  <string id="4" name="settings">
+    <value>設定</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>用戶</value>
+  </string>
+  <string id="6" name="admin">
+    <value>管理</value>
+  </string>
+  <string id="7" name="stop">
+    <value>停止</value>
+  </string>
+  <string id="8" name="record">
+    <value>記錄</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>沒有資料</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>老師記錄</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>連接用戶 :</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>啟動會議</value>
+  </string>
+  <string id="13" name="myname">
+    <value>我的名字</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>视訊會議</value>
+  </string>
+  <string id="15" name="import">
+    <value>輸入演示</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>刷新列表</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>回到主要檔案</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>新的民意</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>一項新的民意測驗給這會議</value>
+  </string>
+  <string id="20" name="question">
+    <value>問題:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>民調類型 :</value>
+  </string>
+  <string id="22" name="create">
+    <value>建立</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>信息:每個接入用戶收到新的民意信息</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>創造一個新的民調</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>取诮</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>是/否</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>數字的 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>民調</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>必須是主持人能提出問題</value>
+  </string>
+  <string id="30" name="vote">
+    <value>你的投票己登記</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>你已經投票在本次民調中</value>
+  </string>
+  <string id="32" name="voting">
+    <value>投票!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>你的回應 :</value>
+  </string>
+  <string id="34" name="yes">
+    <value>是</value>
+  </string>
+  <string id="35" name="no">
+    <value>否</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>知道事情的立場:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>投票結果</value>
+  </string>
+  <string id="38" name="question">
+    <value>問題:</value>
+  </string>
+  <string id="39" name="results">
+    <value>結果:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>答案:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>民調還沒開始</value>
+  </string>
+  <string id="42" name="votings">
+    <value>投票!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>會議 (最多4席)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>會議 (最多50席)</value>
+  </string>
+  <string id="45" name="type">
+    <value>類型</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>其他席位</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>已選定</value>
+  </string>
+  <string id="48" name="enter">
+    <value>進入</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>主持人已經離開了會議 .</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>系統信息</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>選擇裝置</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>選擇攝像机 :</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>選擇麥克風 :</value>
+  </string>
+  <string id="54" name="ok">
+    <value>设定好了</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>取消</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>你需要重新連接 .</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>編輯設定 .</value>
+  </string>
+  <string id="58" name="course">
+    <value>課程 :</value>
+  </string>
+  <string id="59" name="language">
+    <value>語言 :</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>设定好了</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>取消</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>清掉電子白板</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>你想要在加圖片之前先清掉白板嗎?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>不要再問</value>
+  </string>
+  <string id="65" name="no">
+    <value>否</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>編輯設定</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>請求確認清掉白板</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>用户資料</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>清掉畫圖</value>
+  </string>
+  <string id="70" name="undo">
+    <value>撤消</value>
+  </string>
+  <string id="71" name="redo">
+    <value>重做</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>選擇對象</value>
+  </string>
+  <string id="73" name="text">
+    <value>全文</value>
+  </string>
+  <string id="74" name="paint">
+    <value>繪畫</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>畫線</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>畫強洞底線</value>
+  </string>
+  <string id="77" name="rect">
+    <value>長方形</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>橢圓形</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>箭頭</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>刪除選定項目</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>申請成為主持人</value>
+  </string>
+  <string id="82" name="apply">
+    <value>應用</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>取消</value>
+  </string>
+  <string id="84" name="mod">
+    <value>成為主持人</value>
+  </string>
+  <string id="85" name="close">
+    <value>關閉</value>
+  </string>
+  <string id="86" name="italic">
+    <value>斜體字</value>
+  </string>
+  <string id="87" name="bold">
+    <value>粗體字</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>等待</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>有用户想申請成為主持人</value>
+  </string>
+  <string id="90" name="accept">
+    <value>接受</value>
+  </string>
+  <string id="91" name="reject">
+    <value>拒绝</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>取诮</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>送出請求到以下的用戶</value>
+  </string>
+  <string id="94" name="accept">
+    <value>接受</value>
+  </string>
+  <string id="95" name="reject">
+    <value>拒绝</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>改變主持人</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>你不是這課程的主持人!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>主持人:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>這個房間已滿 . 對不起 ,請捎後再試</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>橢圓形</value>
+  </string>
+  <string id="101" name="close">
+    <value>關閉</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>輸入資料有誤</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>用戶名必須至少4個字符</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>用戶密碼必須至少4個字符</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>用戶台已被姶用</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>這電子郵件已註冊过了</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>系統錯誤 ,請聯繫系統管理員</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>登錄</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>用戶 :</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>密碼 :</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>語言</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>註冊登錄</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>報名</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>用戶 :</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>密碼 :</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>重打:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>名稱:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>姓氏:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>郵件 :</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>國家 :</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>登記</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>取消</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>登記</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>首頁</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>用戶管理</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>團體管理</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>組織管理</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>會議室</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>公開會議</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>組織</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>進入</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>登錄</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>密碼</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>重打</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>名稱</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>姓氏</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>郵件</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>生日</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>街名/號碼</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>郵編 /城市</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>國家</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>地址-信息</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>用户资料</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>用户-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>登錄</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>名稱</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>姓氏</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>顯示下一個</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>顯示前一個</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>刪除紀錄</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>取消</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>刪除</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>新紀錄</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>刷新紀錄</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>刪除紀錄</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>狀態</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>關閉</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>啟動</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>組織</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>日曆</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>關閉</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>組織 -ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>名稱</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>用戶</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>主持</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>管理</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>用戶級別</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>組織</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>名稱</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>增加組織</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>增加組織</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>取消</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>增加</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>移除組織</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>用戶</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>增加用戶</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>移除用戶</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>增加用戶</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>尋找用戶</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>尋找</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>用戶</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>組織</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>進入</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>會議室</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>會議室</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>身份證</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>名字</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>公開</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>組織</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>會議室</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>名字</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>類型</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>公開</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>評論</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>保存</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>輸入</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>另存為</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>文件名稱</value>
+  </string>
+  <string id="201" name="files">
+    <value>文件名稱</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>取消</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>保存</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>錯誤</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>輸入中</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>主題輸入</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>正在同步客戶 ,客戶請诮等</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>載入圖檔</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>正在同步客戶 ,客戶請诮等</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>清除畫圖區</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>清除畫圖區，所有资料會不見！</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>確認後再載入檔案</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>發送邀請</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>發送邀請</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>主題</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>受邀者</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>信息</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>送出</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>取消</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>送出</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>用戶資料</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>你這次會議的別名</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>別名</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>名稱</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>姓名</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>電子郵件</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>語言</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>進入</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>載入</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>资料正在載入, 請诮等!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>密碼錯誤</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>請輸入兩個相同的密碼最少6個字符</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>錯的郵件</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>你輸入了一個無效的郵件地址</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>註冊完成</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>你的賬戶已經建立. 你現在以可登錄</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>己有別人在共用這电子白板, 你现在暫時無法再分享。</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>嚴禁共享</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>分享你的屏幕</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>如果看到這項警告，顯示你的频寬不夠造成無法同步屏幕. 您可以問主持人降低寬頻標準 .</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>畫面用户:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>畫圖</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>文件</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>聊天</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>檔案</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>會員</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>下載原始文件</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>下載 pdf 文件</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>把演示放到白板</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>设定</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>拖這影象</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>調整大小</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>的</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>到第–頁</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>到前一頁</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>到下一頁</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>到最後一頁</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>縮小 --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>放大 ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>先生</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>女士</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>配置</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>编号</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>關鍵</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>配置</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>關鍵</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>最後更新</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>更新</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>評論t</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>關鍵</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>的</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>用戶</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>刪除用戶，從組織</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>刪除</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>此用戶已經是這個組織的會員</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>新聞</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>連結</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>進入會議</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>進入課堂</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>幫助和支持</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>告訴我們問題!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>更多</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project Website (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>記住登錄</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>內容</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>我的首頁</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>我安排的會議</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>我的預定活動</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>公開會議</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>私人會議</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>公開活動</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>私人活動</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>公開內容</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>私人內容</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>各人內容</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>主持</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>申請成為主持</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>民調</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>選擇一個文件</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>設定</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>攝像机和麥克風设定</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>白板設定</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>退出</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>回到房間</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>登出</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>桌面瀏覽</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>啟動桌面瀏覽</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>視頻和音頻</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>聊天</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>白板</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>主持</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>文件</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>用戶</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>民調</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>有沒有用戶連接到該用戶名</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>該電郵載有一個特殊的聯繫已被發送到您的電子郵件地址，請檢查您的信箱。如果您還沒有收到郵件，請調整你的垃圾郵件設置，並重新發送確認郵件</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>錯误</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>訊息</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>無效散列。找不到用戶.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>重置密碼</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>登錄</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>修改密碼</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>新密碼</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>重新輸入密碼</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>你所輸入的密碼並不相同</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4或更多個字符;大寫有分!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>密碼設定。您可以立即登錄。</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>未知錯誤。請告知您的服務團隊</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>用戶名找不到</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>密碼無效</value>
+  </string>
+  <string id="337" name="logout">
+    <value>成功登出</value>
+  </string>
+  <string id="338" name="registration">
+    <value>前端登記禁用</value>
+  </string>
+  <string id="339" name="registration">
+    <value>無效電子郵件</value>
+  </string>
+  <string id="340" name="registration">
+    <value>重複的文件名，請選擇另一個文件名</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>文件名太短</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>不能儲存地址</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>用戶添加，但你需要设定此用戶屬於一個組織，否則他將無法登錄。</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>新紀錄</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>沒有發現這一個ID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>內容的標籤無法出现.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>管理者 授權要求</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>語言-編者</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>語言</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>標籤-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>標籤-名稱</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>價值</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>內容價值</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>標籤-名稱</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>標籤價值</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>標籤-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>你只刪除標籤，而不是領域！您不能刪除領域，它可能已在標籤上的其他語言。</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>無效標籤id 。該fieldlanguagesvalues_id不能找到在數據庫</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>您不能刪除這一領域。你只能刪除標籤並非領域。有無標籤裝在此時或者它是沒有選中的任何領域，或者有沒有商標，這門語言會成為這一領域的設定。</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>出口</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>你需要登出看到有任何變化.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>添加新的語言</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>刪除語言</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>添加新的語言</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>姓名</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>添加新的語言</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>備份</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>到第–頁</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>到前一頁</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>到下一頁</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>最後一頁</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>用戶说话 (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>把聲音開/關</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>系統</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>您的設置</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>hi,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>編輯您的檔案</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>新訊息:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>上傳新形象</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>用戶數據 - 出口</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>所有組織都必須已存在的</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>開始出口</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>由組織</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>開始 出口</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>用戶數據 - 進口</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>選擇用戶.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>進口</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>出口到XML -這些檔案可用於： -為該項目做貢獻 -導入到另一個系統 -備份 -個性化 -把它納入語文目錄，為你的下一次安裝</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>選擇一種語言的文件輸入。選擇正確的語言從組合框中！ 無論是什麼名稱的文件，它都將匯入這語言!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>進口-選擇文件</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>另存為</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>姓名:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>評論:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>保存</value>
+  </string>
+  <string id="395" name="record">
+    <value>錄影</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>錄影觀眾</value>
+  </string>
+  <string id="397" name="record">
+    <value>公共和私人會議室的錄影</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>用戶 :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>加入:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>用戶在這個房間:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>刷新</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>這個房間己滿,在數分鐘再試一次.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>點擊一個房間獲得細節</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>和這個會議室的用户聊天:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>房間:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>用戶在這個房間:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>從何時:</value>
+  </string>
+  <string id="409" name="record">
+    <value>播放錄影</value>
+  </string>
+  <string id="410" name="record">
+    <value>總計時間:</value>
+  </string>
+  <string id="411" name="record">
+    <value>日期:</value>
+  </string>
+  <string id="412" name="record">
+    <value>錄影儀模式！你不能改變，這是一個錄影文件！</value>
+  </string>
+  <string id="413" name="record">
+    <value>播放這個錄影</value>
+  </string>
+  <string id="414" name="record">
+    <value>播放/暫停</value>
+  </string>
+  <string id="415" name="record">
+    <value>開始錄影</value>
+  </string>
+  <string id="416" name="record">
+    <value>停止錄影</value>
+  </string>
+  <string id="417" name="record">
+    <value>錄影:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>現在已經有人在錄影:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>錄影！按用戶:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>取消</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>錄影將被取消，並不會被保存</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>恢復</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>關閉此窗口，並恢復錄影</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>改變線的顏色</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>選擇顏色</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>禁用/使用 線顏色</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>改變補色</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>禁止/使用補色</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>改變線寬</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>關閉</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>改變文字大小</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>刪除記錄</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>客戶</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>由:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>姓名</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>房間</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>日期</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>取消</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>開始</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>姓名</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>日期</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>刪除服務器 聊天記錄</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>聊天</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>發送消息</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>表情符號</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>表情符號</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>選擇播放裝置</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>音頻和視頻</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>僅音頻</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>僅視頻</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>沒有音頻/視頻（靜態影像）</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>沒有音頻/視頻從你的個人電腦將會公佈，而不是一個圖片從你的檔案就會顯示。選擇這些設置，如果您有問題，與你的帶寬還是一個非常緩慢的互聯網連接。</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TU</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>WE</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TH</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SU</value>
+  </string>
+  <string id="460" name="calendar_dayname_MondayLabel">
+    <value>週一</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>週二</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>週三</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>週四</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>週五</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>週六</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>週日</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>日曆週</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>1月</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>2月</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>3月</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>4月</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>5月</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>6月</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>7月</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>8月</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>9月</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>10月</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>11月</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>12月</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>日曆</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>參加者</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>顯示佈局設置</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Width | Height</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>視頻-集裝箱</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>主持-集裝箱</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>白板-集裝箱</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>啟用</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>寬度|高度</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>檔案，聊天，參加者-集裝箱</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>啟用</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>寬度|高度</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>主持人離開了房間。在時刻沒有人介紹,你可以申請成為主持或等待</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>在這個房間裡是沒有主持人,有一些人參加。你要申請成主持或等待</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>反饋 $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - 邀請</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>用戶訊息:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>訊息:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>點擊此鏈接，參加會議:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>點擊這裡進入房間</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>如果您有問題連接，請複製並貼到你的瀏覽器上:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME - 註冊</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>你的用戶數據:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>登錄:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>密碼:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>郵箱:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-團隊</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME - 註冊</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - 重設密碼</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>點擊這個鏈接進入設定新的密碼:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>點擊這裡設定新的密碼</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>如果您有問題連接，請複製並貼到你的瀏覽器上:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME 密碼重設</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>請輸入有效日期，例如 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>請輸入一個有效的電子郵件, 例如 name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>請輸入一個浮點數號碼, 例如 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>請輸入一個號碼 (Integer), 例如 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>請輸入有效的電話號碼, 例如++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>請輸入有效的時候，例如 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>密碼保護</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>密碼</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>有效期</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>無限期</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>期限</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>一次性</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>有效期從:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>有效期至:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>I邀請到 $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>沒有這一邀請碼</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>該邀請已經使用。這種類型的邀請，不能再使用。</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>This Invitation-Code is not valid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>密碼:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>核對密碼</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>密碼無效！</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Syncronize Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Active this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/countries.xml b/src/main/webapp/languages/countries.xml
new file mode 100644
index 0000000..5b3b393
--- /dev/null
+++ b/src/main/webapp/languages/countries.xml
@@ -0,0 +1,267 @@
+<?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.
+  
+-->
+<!-- 
+	This list is complete and up-to-date as of 18 February 2007. 
+	from United Nations
+	United Nations Statistics Division- Standard Country and Area Codes Classifications (M49)
+	http://unstats.un.org/unsd/methods/m49/m49alpha.htm
+	
+	28.07.2007 add Taiwan, Republic of China country code 157, short ROC
+	 -->
+<countries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="countries.xsd">
+	<country code="004" name="Afghanistan" short="AFG" />
+	<country code="248" short="ALA" name="Åland Islands" />
+	<country code="008" short="ALB" name="Albania" />
+	<country code="012" short="DZA" name="Algeria" />
+	<country code="016" short="ASM" name="American Samoa"/>
+	<country code="020" short="AND" name="Andorra"/>
+	<country code="024" short="AGO" name="Angola"/>
+	<country code="660" short="AIA" name="Anguilla"/>
+	<country code="028" short="ATG" name="Antigua and Barbuda"/>
+	<country code="032" short="ARG" name="Argentina"/>
+	<country code="051" short="ARM" name="Armenia"/>
+	<country code="533" short="ABW" name="Aruba"/>
+	<country code="036" short="AUS" name="Australia"/>
+	<country code="040" short="AUT" name="Austria"/>
+	<country code="031" short="AZE" name="Azerbaijan"/>
+	<country code="044" short="BHS" name="Bahamas"/>
+	<country code="048" short="BHR" name="Bahrain"/>
+	<country code="050" short="BGD" name="Bangladesh"/>
+	<country code="052" short="BRB" name="Barbados"/>
+	<country code="112" short="BLR" name="Belarus"/>
+	<country code="056" short="BEL" name="Belgium"/>
+	<country code="084" short="BLZ" name="Belize"/>
+	<country code="204" short="BEN" name="Benin"/>
+	<country code="060" short="BMU" name="Bermuda"/>
+	<country code="064" short="BTN" name="Bhutan"/>
+	<country code="068" short="BOL" name="Bolivia"/>
+	<country code="070" short="BIH" name="Bosnia and Herzegovina"/>
+	<country code="072" short="BWA" name="Botswana"/>
+	<country code="076" short="BRA" name="Brazil"/>
+	<country code="092" short="VGB" name="British Virgin Islands"/>
+	<country code="096" short="BRN" name="Brunei Darussalam"/>
+	<country code="100" short="BGR" name="Bulgaria"/>
+	<country code="854" short="BFA" name="Burkina Faso"/>
+	<country code="108" short="BDI" name="Burundi"/>
+	<country code="116" short="KHM" name="Cambodia"/>
+	<country code="120" short="CMR" name="Cameroon"/>
+	<country code="124" short="CAN" name="Canada"/>
+	<country code="132" short="CPV" name="Cape Verde"/>
+	<country code="136" short="CYM" name="Cayman Islands"/>
+	<country code="140" short="CAF" name="Central African Republic"/>
+	<country code="148" short="TCD" name="Chad"/>
+	<country code="830" short="" name="Channel Islands"/>
+	<country code="152" short="CHL" name="Chile"/>
+	<country code="156" short="CHN" name="China"/>
+	<country code="344" short="HKG" name="Hong Kong Special Administrative Region of China"/>
+	<country code="446" short="MAC" name="Macao Special Administrative Region of China"/>
+	<country code="170" short="COL" name="Colombia"/>
+	<country code="174" short="COM" name="Comoros"/>
+	<country code="178" short="COG" name="Congo"/>
+	<country code="184" short="COK" name="Cook Islands"/>
+	<country code="188" short="CRI" name="Costa Rica"/>
+	<country code="384" short="CIV" name="Côte d'Ivoire"/>
+	<country code="191" short="HRV" name="Croatia"/>
+	<country code="192" short="CUB" name="Cuba"/>
+	<country code="196" short="CYP" name="Cyprus"/>
+	<country code="203" short="CZE" name="Czech Republic"/>
+	<country code="408" short="PRK" name="Democratic People's Republic of Korea"/>
+	<country code="180" short="COD" name="Democratic Republic of the Congo"/>
+	<country code="208" short="DNK" name="Denmark"/>
+	<country code="262" short="DJI" name="Djibouti"/>
+	<country code="212" short="DMA" name="Dominica"/>
+	<country code="214" short="DOM" name="Dominican Republic"/>
+	<country code="218" short="ECU" name="Ecuador"/>
+	<country code="818" short="EGY" name="Egypt"/>
+	<country code="222" short="SLV" name="El Salvador"/>
+	<country code="226" short="GNQ" name="Equatorial Guinea"/>
+	<country code="232" short="ERI" name="Eritrea"/>
+	<country code="233" short="EST" name="Estonia"/>
+	<country code="231" short="ETH" name="Ethiopia"/>
+	<country code="234" short="FRO" name="Faeroe Islands"/>
+	<country code="238" short="FLK" name="Falkland Islands (Malvinas)"/>
+	<country code="242" short="FJI" name="Fiji"/>
+	<country code="246" short="FIN" name="Finland"/>
+	<country code="250" short="FRA" name="France"/>
+	<country code="254" short="GUF" name="French Guiana"/>
+	<country code="258" short="PYF" name="French Polynesia"/>
+	<country code="266" short="GAB" name="Gabon"/>
+	<country code="270" short="GMB" name="Gambia"/>
+	<country code="268" short="GEO" name="Georgia"/>
+	<country code="276" short="DEU" name="Germany"/>
+	<country code="288" short="GHA" name="Ghana"/>
+	<country code="292" short="GIB" name="Gibraltar"/>
+	<country code="300" short="GRC" name="Greece"/>
+	<country code="304" short="GRL" name="Greenland"/>
+	<country code="308" short="GRD" name="Grenada"/>
+	<country code="312" short="GLP" name="Guadeloupe"/>
+	<country code="316" short="GUM" name="Guam"/>
+	<country code="320" short="GTM" name="Guatemala"/>
+	<country code="831" short="CGY" name="Guernsey"/>
+	<country code="324" short="GIN" name="Guinea"/>
+	<country code="624" short="GNB" name="Guinea-Bissau"/>
+	<country code="328" short="GUY" name="Guyana"/>
+	<country code="332" short="HTI" name="Haiti"/>
+	<country code="336" short="VAT" name="Holy See"/>
+	<country code="340" short="HND" name="Honduras"/>
+	<country code="348" short="HUN" name="Hungary"/>
+	<country code="352" short="ISL" name="Iceland"/>
+	<country code="356" short="IND" name="India"/>
+	<country code="360" short="IDN" name="Indonesia"/>
+	<country code="364" short="IRN" name="Iran, Islamic Republic of"/>
+	<country code="368" short="IRQ" name="Iraq"/>
+	<country code="372" short="IRL" name="Ireland"/>
+	<country code="833" short="IMN" name="Isle of Man"/>
+	<country code="376" short="ISR" name="Israel"/>
+	<country code="380" short="ITA" name="Italy"/>
+	<country code="388" short="JAM" name="Jamaica"/>
+	<country code="392" short="JPN" name="Japan"/>
+	<country code="832" short="JEY" name="Jersey"/>
+	<country code="400" short="JOR" name="Jordan"/>
+	<country code="398" short="KAZ" name="Kazakhstan"/>
+	<country code="404" short="KEN" name="Kenya"/>
+	<country code="296" short="KIR" name="Kiribati"/>
+	<country code="414" short="KWT" name="Kuwait"/>
+	<country code="417" short="KGZ" name="Kyrgyzstan"/>
+	<country code="418" short="LAO" name="Lao People's Democratic Republic"/>
+	<country code="428" short="LVA" name="Latvia"/>
+	<country code="422" short="LBN" name="Lebanon"/>
+	<country code="426" short="LSO" name="Lesotho"/>
+	<country code="430" short="LBR" name="Liberia"/>
+	<country code="434" short="LBY" name="Libyan Arab Jamahiriya"/>
+	<country code="438" short="LIE" name="Liechtenstein"/>
+	<country code="440" short="LTU" name="Lithuania"/>
+	<country code="442" short="LUX" name="Luxembourg"/>
+	<country code="450" short="MDG" name="Madagascar"/>
+	<country code="454" short="MWI" name="Malawi"/>
+	<country code="458" short="MYS" name="Malaysia"/>
+	<country code="462" short="MDV" name="Maldives"/>
+	<country code="466" short="MLI" name="Mali"/>
+	<country code="470" short="MLT" name="Malta"/>
+	<country code="584" short="MHL" name="Marshall Islands"/>
+	<country code="474" short="MTQ" name="Martinique"/>
+	<country code="478" short="MRT" name="Mauritania"/>
+	<country code="480" short="MUS" name="Mauritius"/>
+	<country code="175" short="MYT" name="Mayotte"/>
+	<country code="484" short="MEX" name="Mexico"/>
+	<country code="583" short="FSM" name="Micronesia, Federated States of"/>
+	<country code="492" short="MCO" name="Monaco"/>
+	<country code="496" short="MNG" name="Mongolia"/>
+	<country code="499" short="MNE" name="Montenegro"/>
+	<country code="500" short="MSR" name="Montserrat"/>
+	<country code="504" short="MAR" name="Morocco"/>
+	<country code="508" short="MOZ" name="Mozambique"/>
+	<country code="104" short="MMR" name="Myanmar"/>
+	<country code="516" short="NAM" name="Namibia"/>
+	<country code="520" short="NRU" name="Nauru"/>
+	<country code="524" short="NPL" name="Nepal"/>
+	<country code="528" short="NLD" name="Netherlands"/>
+	<country code="530" short="ANT" name="Netherlands Antilles"/>
+	<country code="540" short="NCL" name="New Caledonia"/>
+	<country code="554" short="NZL" name="New Zealand"/>
+	<country code="558" short="NIC" name="Nicaragua"/>
+	<country code="562" short="NER" name="Niger"/>
+	<country code="566" short="NGA" name="Nigeria"/>
+	<country code="570" short="NIU" name="Niue"/>
+	<country code="574" short="NFK" name="Norfolk Island"/>
+	<country code="580" short="MNP" name="Northern Mariana Islands"/>
+	<country code="578" short="NOR" name="Norway"/>
+	<country code="275" short="PSE" name="Occupied Palestinian Territory"/>
+	<country code="512" short="OMN" name="Oman"/>
+	<country code="586" short="PAK" name="Pakistan"/>
+	<country code="585" short="PLW" name="Palau"/>
+	<country code="591" short="PAN" name="Panama"/>
+	<country code="598" short="PNG" name="Papua New Guinea"/>
+	<country code="600" short="PRY" name="Paraguay"/>
+	<country code="604" short="PER" name="Peru"/>
+	<country code="608" short="PHL" name="Philippines"/>
+	<country code="612" short="PCN" name="Pitcairn"/>
+	<country code="616" short="POL" name="Poland"/>
+	<country code="620" short="PRT" name="Portugal"/>
+	<country code="630" short="PRI" name="Puerto Rico"/>
+	<country code="634" short="QAT" name="Qatar"/>
+	<country code="410" short="KOR" name="Republic of Korea"/>
+	<country code="498" short="MDA" name="Republic of Moldova"/>
+	<country code="638" short="REU" name="Réunion"/>
+	<country code="642" short="ROU" name="Romania"/>
+	<country code="643" short="RUS" name="Russian Federation"/>
+	<country code="646" short="RWA" name="Rwanda"/>
+	<country code="654" short="SHN" name="Saint Helena"/>
+	<country code="659" short="KNA" name="Saint Kitts and Nevis"/>
+	<country code="662" short="LCA" name="Saint Lucia"/>
+	<country code="666" short="SPM" name="Saint Pierre and Miquelon"/>
+	<country code="670" short="VCT" name="Saint Vincent and the Grenadines"/>
+	<country code="882" short="WSM" name="Samoa"/>
+	<country code="674" short="SMR" name="San Marino"/>
+	<country code="678" short="STP" name="Sao Tome and Principe"/>
+	<country code="682" short="SAU" name="Saudi Arabia"/>
+	<country code="686" short="SEN" name="Senegal"/>
+	<country code="688" short="SRB" name="Serbia"/>
+	<country code="690" short="SYC" name="Seychelles"/>
+	<country code="694" short="SLE" name="Sierra Leone"/>
+	<country code="702" short="SGP" name="Singapore"/>
+	<country code="703" short="SVK" name="Slovakia"/>
+	<country code="705" short="SVN" name="Slovenia"/>
+	<country code="090" short="SLB" name="Solomon Islands"/>
+	<country code="706" short="SOM" name="Somalia"/>
+	<country code="710" short="ZAF" name="South Africa"/>
+	<country code="724" short="ESP" name="Spain"/>
+	<country code="144" short="LKA" name="Sri Lanka"/>
+	<country code="736" short="SDN" name="Sudan"/>
+	<country code="740" short="SUR" name="Suriname"/>
+	<country code="744" short="SJM" name="Svalbard and Jan Mayen Islands"/>
+	<country code="748" short="SWZ" name="Swaziland"/>
+	<country code="752" short="SWE" name="Sweden"/>
+	<country code="756" short="CHE" name="Switzerland"/>
+	<country code="760" short="SYR" name="Syrian Arab Republic"/>
+	<country code="157" short="ROC" name="Taiwan, Republic of China"/>
+	<country code="762" short="TJK" name="Tajikistan"/>
+	<country code="764" short="THA" name="Thailand"/>
+	<country code="807" short="MKD" name="The former Yugoslav Republic of Macedonia"/>
+	<country code="626" short="TLS" name="Timor-Leste"/>
+	<country code="768" short="TGO" name="Togo"/>
+	<country code="772" short="TKL" name="Tokelau"/>
+	<country code="776" short="TON" name="Tonga"/>
+	<country code="780" short="TTO" name="Trinidad and Tobago"/>
+	<country code="788" short="TUN" name="Tunisia"/>
+	<country code="792" short="TUR" name="Turkey"/>
+	<country code="795" short="TKM" name="Turkmenistan"/>
+	<country code="796" short="TCA" name="Turks and Caicos Islands"/>
+	<country code="798" short="TUV" name="Tuvalu"/>
+	<country code="800" short="UGA" name="Uganda"/>
+	<country code="804" short="UKR" name="Ukraine"/>
+	<country code="784" short="ARE" name="United Arab Emirates"/>
+	<country code="826" short="GBR" name="United Kingdom of Great Britain and Northern Ireland"/>
+	<country code="834" short="TZA" name="United Republic of Tanzania"/>
+	<country code="840" short="USA" name="United States of America"/>
+	<country code="850" short="VIR" name="United States Virgin Islands"/>
+	<country code="858" short="URY" name="Uruguay"/>
+	<country code="860" short="UZB" name="Uzbekistan"/>
+	<country code="548" short="VUT" name="Vanuatu"/>
+	<country code="862" short="VEN" name="Venezuela (Bolivarian Republic of)"/>
+	<country code="704" short="VNM" name="Viet Nam"/>
+	<country code="876" short="WLF" name="Wallis and Futuna Islands"/>
+	<country code="732" short="ESH" name="Western Sahara"/>
+	<country code="887" short="YEM" name="Yemen"/>
+	<country code="894" short="ZMB" name="Zambia"/>
+	<country code="716" short="ZWE" name="Zimbabwe"/>
+</countries>
diff --git a/src/main/webapp/languages/countries.xsd b/src/main/webapp/languages/countries.xsd
new file mode 100644
index 0000000..98b3017
--- /dev/null
+++ b/src/main/webapp/languages/countries.xsd
@@ -0,0 +1,36 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="countries">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="country"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="country">
+    <xs:complexType>
+      <xs:attribute name="code" use="required" type="xs:integer"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="short" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/languages/czech.xml b/src/main/webapp/languages/czech.xml
new file mode 100644
index 0000000..799a705
--- /dev/null
+++ b/src/main/webapp/languages/czech.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konference</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Schůzka</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Posluchárna</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Nastavení</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administrace</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Záznam</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Žádný soubor není dostupný</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Záznam učitele</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Připojení uživatelé:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Start konference</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mé jméno</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>VideoKonference</value>
+  </string>
+  <string id="15" name="import">
+    <value>Nahrej soubor</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Aktualizuj</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Můj soubor</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nová anketa</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nová anketa pro konferenci.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Otázka:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Typ ankety:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Vytvoř</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Všichni připojení uživatelé obdrželi zprávu o nové anketě.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Vytvoř anketu</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Zrušit</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ano/Ne</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Čísla 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Anketa</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Pro vytvoření otázky musíte být moderátor</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Vaše hlasování bylo uloženo.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>V této anketě jste již hlasoval.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Hlasuj !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Vaše otpověď:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ano</value>
+  </string>
+  <string id="35" name="no">
+    <value>Ne</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>will wissen:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Výsledek ankety</value>
+  </string>
+  <string id="38" name="question">
+    <value>Otázka:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Výsledek:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Odpověď:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nejsou dostupné žádné ankety.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Hlasuj!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Schůzka (max 4 sedění)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konference (max 50 sedění)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Typ</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Jiné sedění</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Vybráno</value>
+  </string>
+  <string id="48" name="enter">
+    <value>vstup</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderátor opustil schůzku.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systémové informace</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Vyber zařízení</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Vyber webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Vyber mikrofon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>zruš</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Musíte se znovu připojit.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Uprav nastavení.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Cesta:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Jazyk:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>zruš</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Smaž tabuli</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Chcete aby tabule byla prázdná před přidáním nového obrázku?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Žádné další dotazy</value>
+  </string>
+  <string id="65" name="no">
+    <value>ne</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Uprav nastavení</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Potvrzovací dotaz před smazáním tabule.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informace o uživateli</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Smaž kreslící oblast</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Krok zpět</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Krok vpřed</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Vyber Objekt</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Kreslení</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Kresli čáru</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Kresli podtržení</value>
+  </string>
+  <string id="77" name="rect">
+    <value>čtyřúhelník</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Šipka</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>smaž vybranou položku</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Použít pro moderování</value>
+  </string>
+  <string id="82" name="apply">
+    <value>použij</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>zruš</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Stát se moderátorem</value>
+  </string>
+  <string id="85" name="close">
+    <value>zavřít</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>tlustě</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ČEKÁM</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Uživatel chce použít pro moderování:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>akceptuj</value>
+  </string>
+  <string id="91" name="reject">
+    <value>odmítni</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>zruš</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Odeslat dotaz následujícím uživatelům</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Akceptováno</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Odmítnuto</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Změna moderátora</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Nemůžete moderovat tento kurz!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Místnost je plná. Omlováme se příjďte jindy.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="101" name="close">
+    <value>zavři</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>chyba vstupních dat</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 nebo více znaků; záleží na velkých písmenkách!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>heslo musí mít minimálně 4 znaky</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Uživatel již existuje</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Email je již registrován</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Systémová chyba, kontaktujte správce sítě!</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Přihlášení</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Uživatel:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Heslo:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Jazyk</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Přihlásit</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrace:</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Uživatel:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Heslo:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Znovu:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Jméno:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Příjmení:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Země:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrace</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Zruš</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Nejsi členem?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Domů</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Uživatelé</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Skupiny</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizace</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Jednací místnost</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>veřejné</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organizace</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>vstup</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Uživatelské jméno</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Heslo</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Znovu</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Jméno</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Příjmení</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Datum narození</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Ulice</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>PSČ/Město</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Stát</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Info o adrese</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Uživatelská data</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>ulož</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Ulož</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Jméno</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Příjmení</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>ukaž další</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>ukaž předchozí</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>smaž záznam</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>zruš</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>smaž</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>nový záznam</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>aktualizuj záznam</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>smaž záznam</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>stav</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>zakázáno</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>povoleno</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organizace</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>kalendář</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>zavři</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID organizace</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Název</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Uživatel</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>uživatelská úroveň</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organizace</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>název</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>přidej organizaci</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>přidej organizaci</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>zruš</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>přidej</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>zruš organizaci</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>uživatel</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>přidej uživatele</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>zruš uživatele</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>přidej uživatele</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>hledej uživatele</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>hledej</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>uživatel</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organizace</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>vstup</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferenční místnost</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferenční místnost</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Jméno</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>veřejné</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organizace</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Zasedací místnost</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Název</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Typ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Veřejné</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Komentář</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>ulož a exportuj</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>nahrej</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>ulož jako</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Název souboru</value>
+  </string>
+  <string id="201" name="files">
+    <value>název souboru</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>zruš</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>ulož</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Chyba</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>nahrávám</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objekt nahrán</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>synchronizace klientů; čekající klienti:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Nahrávám obrázek</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>synchronizace klientů; čekající klienti:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>smaž kreslící oblast</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>smaž kreslící oblast, všechna data z tabule budou ztracena</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Potvrzení před nahrátím souboru</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Zaslat pozvání</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Zaslat pozvání</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Předmět</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Příjemce</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Zpráva</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Odeslat</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>zruš</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>odeslat</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Uživatelská data</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Vaše přezdívka v této konferenci</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Přezdívka</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Jméno</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Příjmení</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Jazyk</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>vstup</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Nahrávám</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Data se nahrávají, čekejte prosím</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Špatné heslo</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Zadejte prosím stejné heslo minimálně se 6 znaky</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Špatný mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Zadali jste špatnou emailovou adresu</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrace je kompletní</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Váš uživatelský účet byl vytvořen. Můžete se přihlásit.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Nyní nemůžete sdílet obrazovku. Někdo jiný již sdílí svou obrazovku.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Sdílení zakázáno</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Sdílej svou obrazovku</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Špatná šířka pásma: Nemůžete synchronizovat svou obrazovku. Snímek byl zahozen. Pokud se toto varování objeví, domluvte se s moderátorem na snížení kvality přenosu obrazovky.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Obrazovka vypnuta:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Kreslení</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokument</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Pokec</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Soubory</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Členové</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Nahrej originální dokument</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Nahrej PDF dokument</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Nahrej prezentaci na tabuli</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfigurace</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Přesun objektu</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Změna velikosti objektu</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>z</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>První strana</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Předchozí strana</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Další strana</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Poslední strana</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zmenši --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zvětši ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Pan</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Paní/slečna</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfigurace</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Klíč</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfigurace</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Klíč</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>poslední aktualizace</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>aktualizoval</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>komentář</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Hodnota</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>z</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Uživatelé</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>smaž uživatele z organizace</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>smaž</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Tentu uživatel již je členem organizace.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Zprávy</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Rychlá navigace</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Schůzky</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Posluchárna</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Nápověda a podpora</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Nahlášení chyb!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>více</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Stránky projektu</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Archiv uživatelské korespondence</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Zapamatuj si přihlášení</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Obsah</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Má domovská stránka</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mé plánované schůzky</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Mé plánované přednášky</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Veřejné schůzky</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Soukromé schůzky</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Veřejné přednáška</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Soukromé přednáška</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Veřejný obsah</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Soukromý obsah</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Uživatelský obsah</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderace</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Požadavek na moderaci</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Ankety</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Vyber soubor</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Nastavení</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Nastavení kamery a mikrofonu</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Nastavení tabule</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Odchod</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Zpět do výběru místností</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Odhlásit</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Zapměli jste heslo?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Reset hesla</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Mailem</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Přihlášením</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Váš email</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Vaše uživatelské jméno</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Odeslán mail s odkazem na reset hesla</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Emailová adresa nenalezena. Použíjte stejnou adresu jako při zakládání uživatelského účtu.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Zadejte prosím mail, nebo uživatelské jméno</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Takový uživatelský účet neexistuje</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Email obsahuje speciální odkaz, skontrolujte Vaši schránku. Pokud jste mail neobdrželi, skontrolujte nastavení antispamového filtru a pošlete mail znovu.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Chyba</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Zpráva</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Špatný Hash. Uživatel nenalezen.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset Vašeho hesla</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>změna hesla</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nové heslo</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>znovu heslo</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Hesla nejsou stejná.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 nebo více znaků; záleží na velikosti písmen!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Heslo nastaveno. Můžete se přihlásit.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Neznámá chyba. Nahlaste ji servisnímu týmu.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Uživatelský účet nenalezen</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Špatné heslo</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Byli jste vpořádku odhlášeni</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrace uživatelů zakázána.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Špatný mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>soubor již existuje, vyberte jiný název souboru</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>název souboru je krátký</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Nemohu uložit adresu</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Uživatel přidán, ale musíte jej přiřadit k organizaci, jinak se nebude moci přihlásit.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nový záznam</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Pole nenalezeno v FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Pro toto pole nexistuje název.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Vyžadovány práva administrátora</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Lokalizace</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Jazyk</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID pole</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Název pole</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Hodnota</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Hodnoty pole</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Název pole</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Hodnota pole</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID pole</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Smazali jste pouze název pole, ne pole! Nemůžete smazat pole, používá se v ostatních jazycích.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Špatné ID pole. ID pole nenalezeno v databázi.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Nemůžete smazat toto pole. Můžete smazat pouze názvy polí. Není nahrán žádný název pole, protože jste nevybrali žádné pole, nebo není pro toto pole název definován.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Odhlaste se a pak uvidíte změny.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Přidej nový jazyk</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>smaž jazyk</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Přidej nový jazyk</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Název</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>přidej jazyk</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Záloha</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>jdi na první</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>jdi na předchozí</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>jdi na další</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>jdi na poslední</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>uživatel mluví (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Vpnout/Zapnout zvuk</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Systém</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Vaše nastavení</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Dobrý den,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Uprav svůj profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nové zprávy:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Nahrej nový obrázek</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Export uživatelských dat</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>AVšechny organizace musí existovat!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Dle organizace</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Import uživatelských dat</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>vyber uživatel.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>import</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export do XML - Tento soubor může být použit pro: - Přispění k projektu - Import do jiného systému - Zálohu - Úpravy - Vložení do adresáře jazyků a použití pro další instalaci</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Vyberte soubor s překladem k importu.Vyberte správný jazyk ve výběru! Nezáleží na názvu souboru!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>import - vyber soubor</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Ulož jako</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Název:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Popis:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>ulož</value>
+  </string>
+  <string id="395" name="record">
+    <value>Záznamy</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Prohlížeč záznamů</value>
+  </string>
+  <string id="397" name="record">
+    <value>Záznamy z veřejných a soukromých místností</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Uživatelé:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Joined:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Uživatelé v této místnosti:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>aktualizuj</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Místnost je plná. Zkuste to za pár minut.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Pro získání detalů klikněte na místnost</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Pokec uživatelů v této místnosti:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Mistnost:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Uživatelé v této místnosti:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>od:</value>
+  </string>
+  <string id="409" name="record">
+    <value>přehrej záznam</value>
+  </string>
+  <string id="410" name="record">
+    <value>Délka:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Datum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Mód záznamu! Nemůžete měnit žádné hodnoty, toto je pouze záznam!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Přehrej záznam</value>
+  </string>
+  <string id="414" name="record">
+    <value>Přehrej / Pozastav</value>
+  </string>
+  <string id="415" name="record">
+    <value>Začátek záznamu</value>
+  </string>
+  <string id="416" name="record">
+    <value>konec záznamu</value>
+  </string>
+  <string id="417" name="record">
+    <value>Záznam:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Zde jsou dostupné záznamy:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Zaznamenáno! Uživatelem:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>zruš</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Záznam byl ukončen a neuložen.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>opakovat</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Zavřete toto okno a zopakujte nahrávání</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>změna barvy čáry</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Vyber barvu</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Zakaž / Povol změnu barvy čáry</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>změň barvu výplně</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Zakaž / Povol změnu barvy výplně</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Změň tloušťku čáry</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>zavři</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>změň velikost písma</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Smaž nahrávku</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Host</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Zaznamenal:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Název</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Místnost</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>zruš</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Název</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Smaž záznam pokecu na serveru</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Pokec</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>zaslat zprávu</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Vyber zveřejněné zařízení</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Zvuk a obraz</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Pouze zvuk</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Pouze obraz</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Bez zvuku a obrazu (statický obrázek)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Zvuk a Obraz z Vašeho PC není zveřejněno, bude zobrazen pouze obrázek z Vašeho profilu.Pokud máte problémy zkontrolujte Vaše nastavení, nebo máte velmi pomalé připojení k internetu.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>Po</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>Út</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>St</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>Čt</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>Pá</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>So</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>Ne</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Pondělí</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Úterý</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Středa</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Čtvrtek</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Pátek</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sobota</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Neděle</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>Týden</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Týdenní kalendář</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Leden</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Únor</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Březen</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Duben</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Květen</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Červen</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Červenec</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Srpen</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Září</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Říjen</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Listopad</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Prosinec</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalendář</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Účastníci</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Ukaž nastavení zobrazení</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Šířka | Výška</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-okno</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderation-okno</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Tabule-okno</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Povoleno</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Šířka | Výška</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Soubory,Pokec,Účastníci - okno</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Povoleno</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Šířka | Výška</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderátor opustil místnost. Není v tento moment přítomen. Můžete se stát moderátorem, nebo čekat.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>V této místnosti není moderátor, ale jsou zde účastníci. Můžete se stát moderátorem, nebo čekat.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Pozvánka</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Zpráva od uživatele:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Zpráva:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klikněte sem a podílejte se na konferenci:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klikněte sem pro vstup do místnosti</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>pokud máte problém s tímto odkazem, nakopírujte jej a vložte do prohlížeče:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Registrace</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Vaše uživatelská data:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Uživatelské jméno:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Heslo:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Tým</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Registrace</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset hesla</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klikněte na tento odkaz a zadejte nové heslo:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klkněte sem a zadejte nové heslo</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>pokud máte problém s tímto odkazem, nakopírujte jej a vložte do prohlížeče:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME heslo resetováno</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Zadejte správné datum, například 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Zadejte správný email, například name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Zadejte desitinné číslo, například 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Zadejte celé číslo, například 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Zadejte správné tel. číslo, například +49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Zadejte správný čas, například 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Heslo zabezpečeno</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Heslo</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Platnost opakování</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Nekonečně</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Opakovaně</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Jen jednou</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Platí od:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Platí do:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Pozvánka do $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Pro tento kód pozvánky není žádná pozvánka dostupná</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Pozvánka byla použita. Tento typ pozvánky nemůže být znovu použit.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Tento kód pozvánky je špatný.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Heslo:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Zkontrolujte heslo</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Špatné heslo!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Zvuk_Obraz</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchronizuji Zvuk/Obraz</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Už. účet v pořádku, ale připojení není aktivní, nebo registrované na serveru. Musíte se znovu přihlásit.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Sezení není přihlášeno, nebo nemáte administrátorská práva. SOAP brána vyžaduje práva administrátora pro založení uživatele.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Sezení nemá spojení na vzdálené uživatelské data. Nemůžete přistupovat k SOAP bráně před vstupem do aplikace, nebo používáte špatné ID sezení</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Záznamy jsou pouze beta verze!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>osa x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>osa y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>š</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>šířka</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>v</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>výška</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Změna průhlednosti</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Průzkumník otevřen</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Průzkumník uzavřen</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Spojení se serverem bylo přerušeno. Musíte znovunahrát aplikaci (zkontrolujte Vaši síť).</value>
+  </string>
+  <string id="557" name="557">
+    <value>Ukazovátko</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizuji</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizuji uživatele, čekejte prosím</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Načti jako SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Načti jako PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Načti jako JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Načti jako PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Načti jako TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Připomínka:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategorie:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Opakování:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Umístění:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Začátek</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Konec</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titul:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Komentář:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Denně</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Měsíčně</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Ročně</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Schůzka končí pouze pokud schůzka začala!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Zadejte prosím nadpis!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktivujte pouze pokud píšete z prava do leva</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Rychlá navigace</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Záznamy z konferencí</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Schůzka - Vytvořte konference se 4 (max 16) účastníky&lt;br/&gt;všichni mohou používat zvuk a obraz</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Přednáška - Vytvořte konferenci až s 200 účastníky&lt;br/&gt;Pouze moderátor může používat zvuk a obraz</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Tvorba uživatelů, místností, organizací&lt;br/&gt; + změna konfigurace</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Uživatelé v této místnosti teď</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Nahrávám dokument. Poškejte prosím na synchronizaci všech uživatelů.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Nahráno, konvertuji dokument ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Odešli</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Vyberte soubor z Vašeho disku.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Zruš</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Vyber soubor</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Připojení</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Hodnota</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Připojeni poté</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Místnost / Možnosti</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Odpojit uživatele</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Odpojit uživatele</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Opravdu chcete odpojit uživatele?&lt;br/&gt; Toto pouze odpojí uživatele od dané místnosti. Uživatel se může opět přihlásit.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Vaše sezení bylo ukončeno administrátorem, nebo moderátorem.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Uživatel je moderátor této místnosti</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Uživatel má povoleno kreslit na tabuli</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Zvuk/Obraz, nebo změna nastavení zařízení</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Povolit tomuto uživateli kreslit na tabuli</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Odejmout možnost kreslení na tabuli</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Uživatelé</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Soubory</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tabule</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Pokec</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Váš uživatelský účet je přiřazen do více organizací. Pro toto sezení vyberte jednu z nich.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/danish.xml b/src/main/webapp/languages/danish.xml
new file mode 100644
index 0000000..327968c
--- /dev/null
+++ b/src/main/webapp/languages/danish.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konference</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Møde</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditorium</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Indstillinger</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Optag</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Ingen fil tilgængelig</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Indspillet af lærer/instruktør</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Tilsluttede brugere:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Start en konference</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mit navn</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonference</value>
+  </string>
+  <string id="15" name="import">
+    <value>Importer præsentation</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Opdater liste</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Til hovedfil</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Ny afstemning</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>En ny afstemning før konferencen</value>
+  </string>
+  <string id="20" name="question">
+    <value>Spørgsmål:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Afstemningstype:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Opret</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>INFO: Alle tilsluttede brugere får tilsendt en meddelelse med den nye afstemning.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Opret afstemning</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Annuller</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ja/Nej</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numerisk 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Stem</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Du skal vare moderator for at kunne oprette en afstemning</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Din afstemning er accepteret</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Du har allerede stemt i denne afstemning.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Stem!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Dit svar:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ja</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nej</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Vil vide:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Afstemningsresultat</value>
+  </string>
+  <string id="38" name="question">
+    <value>Spørg:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultat:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Svar:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Ingen nye afsteminger er startet.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Stem!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Møde (max 4 pladser)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konference (max 50 pladser)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Type</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Andre pladser</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Allerede valgt</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Kom ind</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderatoren har forladt mødet.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systeminformation</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Vælg setup</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Vælg webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Vælg mikrofon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Afbryd</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Tilslut igen.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Ændre setup.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kursus:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Sprog:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Afbryd</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Rens skrivebordet</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Ønsker du at skrivebordet skal renses inden du uploader til et nyt billede?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Spørg ikke igen</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nej</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Ændre setup</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Spørg inden skrivebordet tømmes?.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Brugerinfo</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Rens tegneområdet</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Fortryd</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Klar</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Vælg et objekt</value>
+  </string>
+  <string id="73" name="text">
+    <value>Tekst</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Mal/tegn</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Tegn linie</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Tegn understregning</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rektangel</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Pil</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Slet valgt objekt</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Læg til før moderation</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Læg til</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Afbryd</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Bliv moderator</value>
+  </string>
+  <string id="85" name="close">
+    <value>Luk</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>fed</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>VENTER</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>En bruger venter på at blive moderator:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Accepter</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Afvis</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Annuller</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Send spørgsmål til følgende brugere</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accepteret</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Afvist</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Ændre moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Du er ikke moderator på dette kursus!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Rummet er optaget. Prøv igen senere.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Luk</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Forkerte data angivet</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Brugernavnet skal indeholde mindst 4 tegn</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Adgangskoden skal indeholde mindst 4 tegn</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Brugernavnet anvendes i forvejen</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Emailadressen anvendes i forvejen</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Systemfejl, kontakt systemadministrator</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Brugernavn:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Adgangskode:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Sprog</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Login</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrering</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Brugernavn:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Adgangskode:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Adgangskode igen:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Fornavn:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Efternavn:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Land:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrer</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Annuller</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrer</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Forside</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Brugere</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupper</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisationer</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Konferencerum</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Offentlig</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Log ind</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Adgangskode</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Adgangskode igen</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Fornavn</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Efternavn</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Fødselsdato</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Vej/nr</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Postnr./By</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Land</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adresse-Info</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Brugerdata</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Gem</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Gem</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Bruger-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Fornavn</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Efternavn</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Vis næste</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Vis forrige</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Slet indhold</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Annuller</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Slet</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nyt indhold</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Opdater indhold</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Slet indhold</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Ikke tilgængelig</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Tilgængelig</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisation</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Luk</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisation-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Navn</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Bruger</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Brugerniveau</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Navn</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Gem til organisation</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Gem til organisation</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Annuller</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Gem</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Fjern organisation</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Brugere</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Gem til brugere</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Slet brugere</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Gem til brugere</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Søg brugere</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>søg</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Brugere</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Log ind</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferencerum</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferencerum</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>Id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Navn</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Offentlig</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisationer</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Konferencerum</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Navn</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Type</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Offentlig</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Kommentar</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Gem og eksport</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Upload</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Gem som</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Filnavn</value>
+  </string>
+  <string id="201" name="files">
+    <value>Filnavn</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Annuller</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Gem</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Fejl</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Gemmer</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objekter indlæst</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synkroniserer, vent:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Indlæser billeddata</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synkroniserer, vent:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Rens tegneområde</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Rens tegneområde, alle data mistes</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Spørg inden indlæsning af fil</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Send invitation</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Send invitation</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Emne</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Modtagere</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Meddelelser</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Send</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Annuller</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Send</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Brugerdata</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Dit alias i denne konference</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Alias</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Fornavn</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Efternavn</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Sprog</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Log ind</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Indlæser</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Indlæser data, vent!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Forkert adgangskode</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>2 identiske adgangskoder med mindst 4 tegn, tak!</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Forkert emailadresse</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Du har angivet en forkert emailadresse</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrering er fuldført</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Din konto er oprettet. Du kan nu logge ind.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Du kan ikke dele din skærm lige nu. En anden bruger funktionen lige nu.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Deling forbudt</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Del din skærm</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Ringe båndbredde: Du kan ikke synkronisere din skærm. Frames bliver droppet. Hvis denne advarsel vises ofte kan du bede moderatoren om at sænke kvaliteten.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Skærm af:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Male/tegne</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokument</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Filer</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Medlemmer</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download originalt dokument</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download PDF-dokument</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Indlæs præsentationen til whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfiguration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Træk dette objekt</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Ændre størrelse på dette objekt</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>af</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Gå til første side</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Gå til foregående side</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Gå til næste side</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Gå til sidste side</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Hr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Fr.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfiguration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Nøgle</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfiguration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Nøgle</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>sidste opdatering</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>opdateret af</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>kommentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>nøgle</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>af</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Brugere</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>slet brugere fra organisationen</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>slet</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Denne bruger er allerede medlem af organisationen.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Nyheder</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Hurtige genveje</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Gå til Konference</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Gå til Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Hjælp og support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Anmeld bugs</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>mere</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projekt Webside (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Bruger mailliste (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Husk dit login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Indhold</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Min forside</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mine skemalagte møder</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Mine planlagte Auditorier</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Offentlige møder</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private møder</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Offentlige Auditorier</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private Auditorier</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Offentligt indhold</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Privat indhold</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personligt indhold</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderering</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Anmod om moderering</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Afstemning</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Vælg en fil</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Indstillinger</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Cam. &amp; Mik. Indstil.</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Whiteboard Indstillinger</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Afslut</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Forlad rummet</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Log af</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Glemt din adgangskode?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Nulstil adgangskode</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Via email</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Via brugernavn</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Din emailadresse</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Dit brugernavn</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Send email med aktiveringslink</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Brugere</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Indsæt venligst emailadresse eller brugernavn</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Ingen bruger er forbundet med dette brugernavn</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Emailen med det specielle link er blevet sendt til din emailadresse. Kontroller venligst din indbakke. Hvis du ikke har modtaget en email, bedes du kontrollere dint SPAM-filter og genfremsende emailen fra systemet.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Fejl</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Meddelelse</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Forkert HASH. Ingen bruger fundet.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Nulstil din adgangskode</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Ændre adgangskode</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Ny adgangskode</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Adgangskode igen</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Adgangskoderne du har angivet er ikke identiske.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 tegn eller mere; forskel på små og store bogstaver!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Adgangskode valgt. Du kan logge ind nu.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Ukendt fejl. Rapporter venligst til dine support muligheder.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Brugernavnet blev ikke fundet.</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Ugyldig adgangskode.</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Du er nu logget ud.</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrering via loginside (frontend) er inaktiveret.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Ugyldig emailadresse.</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Filnavnet eksisterer i forvejen. Vælg venligst et andet filnavn.</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Filnavnet er for kort.</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Kunne ikke gemme adressen.</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Bruger oprettet, men skal tildeles til en organisation for at kunne logge ind.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nyt felt</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Der er ikke fundet et felt med dette feltID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Der er ikke fundet en etiket til dette felt.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin autorisation er krævet.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Sprogeditor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Sprog</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Etiket-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Etiket-Navn</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Værdi</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Feltværdi</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>EtiketNavn</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>EtiketVærdi</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Etiket-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Du slettede kun etiketten, IKKE Feltet! Du kan ikke slettet feltet, det indeholder måske etiketter på andre sprog.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Ugyldig Etiket-ID. FieldLanguagesvalues_Id kan ikke findes i databasen.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Du kan ikke slette dette felt. Du kan kun slette etiketter, IKKE Felt. I øjeblikket er der ikke indlæst etiketter, dette kan skyldes, at ingen etiket er valgt eller defineret for dette felt og sproget.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Eksporter</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Du skal logge ud for at kunne se ændringer.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Tilføj nyt sprog</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Fjern sprog</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Tilføj nyt sprog</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Navn</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Tilføj sprog</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Sikkerhedskopier</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Gå til første</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Gå til foregående</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Gå til næste</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Gå til sidste</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Bruger taler (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>LYD til/fra</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Dine indstillinger</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hej,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Rediger profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nye meddelelser:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Indlæs nyt billede</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Brugerdata - Exporter</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Alla organisationer skal eksistere i forvejen!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Start eksporteringen</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Ifølge organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Start eksporteringen</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Brugerdata - Importer</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Vælg users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Importer</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Eksporter til XML - Disse filer kan bruges til: - Bidrage til projektet - Importere til et andet system - Lave sikkerhedskopier - Skræddersy programmet - Lægge i language-mappen for kommende installationer</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Vælg en sprogfil du vil importere. Husk at vælge den rigtige sprogfil fra combokoksen! Sprog filen vil blive importeret til dette sprog uafhængigt af navnet på filen.</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Importer - vælg fil</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Gem som</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Navn:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Kommentar:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Gem</value>
+  </string>
+  <string id="395" name="record">
+    <value>Optagelser</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Optagelser/fremviser</value>
+  </string>
+  <string id="397" name="record">
+    <value>Optagelser fra offentlige og private rum</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Brugere:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Tlsluttede:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Brugere i dette rum:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Opdater</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Dette rum er optaget. Forsøg igen om nogle få minutter.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Klik på et rum for at få flere detaljer</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat med brugere i dette rum:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Rum:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Brugere i dette rum:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Siden:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Afspil optagelse</value>
+  </string>
+  <string id="410" name="record">
+    <value>Længde:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Dato:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Optagelsestilstand! Du kan ikke ændre nogen værdier. Dette er en indspillet fil!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Afspil denne optagelse</value>
+  </string>
+  <string id="414" name="record">
+    <value>Afspil / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Påbegynd optagelse</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stop optagelse</value>
+  </string>
+  <string id="417" name="record">
+    <value>Optagelse:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Der er allerede nogen der optager i øjeblikket:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Optagelse! Af bruger:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Annuller</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Optagelsen vil blive afbrudt og gemmes ikke.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Genoptag</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Luk dette vindue og genoptag optagelsen</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Ændre linjefarve</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Vælg farve</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Inaktiver / aktiver linjefarve</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Ændre fyldfarve</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Inaktiver / aktiver fyldfarve</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Ændre linjebredde</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Luk</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Ændre font størrelse</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Slet optagelse</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gæst</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Af:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Navn</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Rum</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Dato</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Annuller</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Navn</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Dato</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Slet serverens Chat-log</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Send meddelelse</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emotikoner</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emotikoner</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Vælg enheder</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Lyd og video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Kun lyd</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Kun video</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Ingen lyd/video (statisk billede)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Ingen Lyd/Video vil blive publiceret. I stedet vil et billede fra din profil blive vist. Vælg denne indstilling, hvis du har en dårlig båndbredde.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MA</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TI</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ON</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>LØ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SØ</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Mandag</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tirsdag</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Onsdag</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Torsdag</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Fredag</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Lørdag</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Søndag</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KU</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalender uge</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januar</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Februar</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marts</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maj</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalender</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Deltagere</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Vis Layout indstillinger</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Bredde | Højde</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderator-container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Aktiveret</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Bredde | Højde</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Filer, Chat, Deltagere - container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Aktiveret</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Bredde | Højde</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderatoren har forladt rummet. I øjeblikket er der ikke nogen som præsenterer noget. Du kan ansøge om at blive moderator eller vente.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Der er ikke nogen moderator i dette rum, men der er nogen deltagere. Du kan ansøge om at blive moderator eller vente.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Meddelelse fra bruger:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Meddelelse:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klik på dette link for at deltage i mødet:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klik her for at gå til rummet.</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Hvis du har problemer med at åbne genvejen (link), bedes du kopiere genvejen og indsætte denne i din webbrowser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME registrering</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Dine brugerdata:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Adgangskode:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME - Teamet</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME registrering</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Nulstil adgangskode</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klik på den her genvej (link) for at indsætte ny adgangskode:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klik her for at angive ny adgangskode</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Hvis du har problemer med at åbne genvejen (link), bedes du kopiere genvejen og indsætte denne i din webbrowser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME nulstilling af adgangskode</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Angiv venligst en gyldig dato, f.eks. 24.12.2009 (dd.mm.åååå)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Angiv venligst en gyldig emailadresse, f.eks navn@mail.dk</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Angiv venligst et gyldigt flydende nummer, f.eks. 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Angiv venligst et gyldigt nummer (Integer), f.eks. 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Angiv venligst et gyldigt telefonnummer, f.eks. +45 39151515</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Angiv venligst en gyldig tid, f.eks. 12:23 (tt:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Adgangskodebeskyttet</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Adgangskode</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Gyldighedsstid</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Uendelig</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Periode</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Engangs</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Gyldig fra og med:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Gyldig til:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitation til $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Ingen invitation tilgængelig med denne invitationskode.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Invitationen anvendes allerede. Den her type invitationer kan ikke genanvendes.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Invitationskoden er ikke gyldig udenfor mødets start og slut tidspunkt. Kontroller venligst tidspunktet i den tilsendte mødeindkaldelse (email)</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Adgangskode:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Kontroller Adgangskode</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Ugyldig adgangskode!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Webbrowser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synkroniser lyd/video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Indlogningen var korrekt, men sessionen er ikke længere aktiv eller lagret på serveren. Prøv at logge ind igen efter du har fået et nyt SessionId.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId er ikke logget ind eller har ikke nogen administrationsrettigheder. SOAP Gateway kræver en bruger med administrationsrettigheder for at tilkoble nye brugere.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Den her session er ikke koplet til nogen Remoteuser-Data. Enten blev den såkaldte SOAP-Gateway ikke indlæst før applikationen blev kørt eller der er anvendt et fejlagtigt Session-ID.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Optageren er fortsat i Beta-stadie!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-aksel</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-aksel</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>b</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>bredde</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>højde</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Ændre gennemsigtghed (transparent)</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Åben browseren</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Luk browseren</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Forbindelsen til serveren er er gået tabt. Du skal indlæse applikationen igen eller/og kontrollere din netværksforbindelse.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Peger</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synkroniserer</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synkroniserer brugere, vent venligst</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Dovnload som SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download som PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download som JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download som PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download som TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Påmindelse:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategori:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>ingen</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Placering:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Slut</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titel:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Kommentar:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Inviter deltagere</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daglig</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Måndelig</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Årlig</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Mødets sluttidspunkt skal være efter dets begyndelse!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Tilføj en titel, tak!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktiver det her hvis du skriver på et højre til venstre sprog</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Skrivebord (Forside)</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Se optagelser fra møder og auditorier</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Møde - Opret en konference med 4 (op til 16) deltagere &lt;br&gt; alle vil have tilgang til lyd + video.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Auditorium - Opret en konference med op til 200 deltagare&lt;br/&gt;Her er det kun moderatoren som har tilgang til lyd + video.</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Opret brugere, rum, organisationer&lt;br/&gt; + ændre konfigurationer</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Brugere i dette rum lige nu</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Indlæser dokument. Vent venligst til alle klienter er synkroniserede.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Indlæsning færdig, konverterer dokument...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start indlæsning</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Dialog indlæsning og importering. Vælg venligst en fil fra din harddisk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Annuller</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Vælg fil</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Forbindelser</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Værdi</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Tilsluttet siden</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Rum</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Udeluk bruger</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Udeluk brugere</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Vil du virkelig udelukke denne klient?&lt;br/&gt; Det her udelukker kun klienten fra det aktuelle rum. Vedkommende kan tilslutte sig igen.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Din session er blevet lukket af administratoren eller moderatoren.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Brugeren er moderator i dette rum</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Brugeren har tilladelse til at tegne på whiteboardet</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Genstart lyd/video eller ændre indstillinger</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Tillad denne bruger at tegne på whiteboardet</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Fjern muligheden for at tegne på whiteboardet</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Brugere</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Filer</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Din konto er tildelt til flere organisationer. Vælg venligst en til denne session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Dette rum er optaget i øjeblikket. Forsøg venligst igen senere.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Rumtyper</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Tidsbooket rum</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Servertid</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Påmindelse</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Meddelelse fra bruger:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Meddelelse:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klik på denne genvej (link) for at deltage i mødet:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klik her for at gå ind i rummet</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Hvis du har problemer med genvejen, bedes du kopiere denne genvej i stedet og indsætte i din webbrowser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Søg internt</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>eksterne brugere</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>fornavn</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>navn</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>email</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Bekræft at du logger af</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Er du sikker på at du vil logge af?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Aktioner</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Rum</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Tid</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Mødetimer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Dette rum er et demo rum. For at fjerne denne advarsel, skal du enten oprette et privat møderum eller sætte et op på din egen server. Du bliver automatisk loget ud om:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Modereret</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Vent venligst indtil moderatoren har tilsluttet sig rummet. Moderatoren kan enten være en lærer, instruktør, administrator eller den bruger som har oprettet rummet.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Indkommende skærmdeling</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>En ny skærmdeling vil blive påbegyndt af brugeren:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start deling</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Tilføj et nyt møde</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Møderum</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Auditorium</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderering</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderer brugere</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderer rum</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Vil du ændre denne bruger til at være moderator af denne organisation?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Vælg venligst en organisation før du forsøger at tilføje en bruger til den!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Vil du virkelig fjerne denne bruger fra organisationen?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Denne bruger er moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Denne bruger er ikke moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Vil du fjerne denne bruger som moderator fra organisationen?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Tilføj eller fjern brugere eller rum i din organisation</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Vil du virkelig fjerne denne?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Vil du virkelig fjerne denne bruger fra organisationen? Du vil kun fjerne tilslutningen mellem brugeren og organisationen. For at fjerne brugeren helt, skal du logge ind i administrationspanelet.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Du kan ikke fjerne din egen bruger!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Denne funktion/metode kræver en administrationskonto for at kunne kaldes!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Der findes ingen session associeret med dette ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Dette er en administrations- eller moderatorkonto. Du kan kun ændre denne konto via administrationspanelet.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Klik venligst på flg. link eller kopier adressen til din webbrowsers adressefelt for at fuldføre registreringen.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klik her for at verificere din emailadresse.</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Ingen brugere fundet med denne Hash-kode.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Denne bruger er allerede aktiveret!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Du har aktiveret din konto!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Log ind nu</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Din konto er ikke aktiveret. Anvend genvejen (link) i den email du modtog, da du registrerede dig.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Du har nu registreret dig til systemet. Du har fået tilsendt en email med din verificeringskode. Kontroller venligst din indbakke.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Fjern denne bruger som moderator</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Tildel moderator rettigheder til denne bruger</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Brugere</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Adgang til whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Vælg venligst en bruger fra listen for at give vedkommende adgang til whiteboard, moderation eller video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Denne bruger er allerede moderator, så han har automatiskt ret til at tegne.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Dette er dig! Du kan ikke fjerne moderator rettighederne fra dig selv.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Tillad denne bruger at publicere lyd/video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Fjern lyd/video fra denne bruger</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Jeg vil være moderator for dette rum</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Jeg vil tegne på whiteboardet</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Jeg vil dele lyd/video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Du er moderator for dette rum</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Du har tilladelse til at tegne på whiteboardet</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Du har tilladelse til at publicere audio/video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Meddelelse til moderatoren</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Brugeren</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>vil have moderator rettigheder. Brug status ikonerne i brugerlisten for at tildele eller fjerne moderator rettigheder.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>vil tegne på whiteboardet. Brug status ikonerne i brugerlisten for at tildele eller fjerne rettigheder til at tegne på whiteboardet.</value>
+  </string>
+  <string id="695" name="695">
+    <value>vil publicere lyd/video. Brug status ikonerne i brugerlisten for at tildele eller fjerne rettigheder til publicering af lyd/video.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Du skal vente til en moderator er trådt ind i rummet.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Annuller</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Gem</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dag</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Måned</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>År</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Indlæs fil</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Tilføj mappe</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Opdater</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Papirkurv</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Mine filer (Privat drev)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Rum filer (Offentligt drev)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Tilføj fil</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Tilføj mappe</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Slet mappe</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Ret navn</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Ny mappe</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Er du sikker på at du vil slette dette emne?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Søg</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Søg</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Åben dokument</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Vis alle filer (Træstruktur)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Luk dokument</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Slet fil</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Du har ikke tilladelse til at tegne på whiteboardet. Du skal være moderator eller som min. have rettigheder til at redigere Wwhiteboardet. Du må spørge moderatoren om han vil give dig rettigheder.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Dokument egenskaber</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start klient (ekstern)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start klient (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>En bruger vil dele sin skærm. Vil du se vedkommendes skærm?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Du deler din skærm i øjeblikket. For at stoppe denne funktion (session) skal du klikke på stop knappen i klient programmet til deling af skærm.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>deling af skærm session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Du deler allerede din skærm!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Fremviser til deling af skærm</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Luk</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Fremviser til deling af skærm</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Klik på start for at dele din skærm</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start deling af skærm</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop deling af skærm</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Vælg skærm område:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Ændre bredde</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Deling af skærm sessionen er afsluttet!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Ændre højde</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Bredde:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Højde:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Forbindelsen blev lukket af serveren</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Annuller</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start ekstern</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Hvis du lukker denne session helt vil du ikke være i stand til at genstarte fremviseren for denne session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Bekræft lukning af fremviser sessionen.</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Del skærm</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Optag session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ups, ... Firefox på Windows viser ikke Co-Browsing så godt. Brug venligst en anden browser for at bruge denne mulighed.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Forrige</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Næste</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Indlæs igen</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Hjem</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Indlæs</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Tilføj denne hjemmeside som standard hjemmeside i tilknytning til din profil.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test indstillinger</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Kontroller mikrofon og kameraindstillinger inden du går ind i et rum ved at optage i et par sek. Du kan efterflg. se din optagelse for at kontrollere din lyd samt dit kamerabillede.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Vis ikke denne test igen</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Annuller</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start konference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Spørg ikke igen</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>OPTAG</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>AFSPIL</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Du kan fortsætte uden at teste, hvis du ikke planlægger at publicere lyd og billede. Deltagere uden lyd og video kan stadig bruge whiteboard, dele skærm eller skrive chat meddelelser.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Niveau (visning)</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Klik på start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start konference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Vælg rum</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Kontroller Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start konference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Sådan gør du:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start optagelse</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Vis ikke Audio / Video Test (optagelse) før du deltager i en konference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Offentlige Rum</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Offentlige Rum er tilgængelige for alle brugere.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rum</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rum er kun tilgængelige for brugere i samme organisation.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Mine rum</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rum i dette afsnit er oprettet til privat brug. De er oprettet via kalenderen og har en start og slut dato. De vises kun i dette afsnit mens de er aktive (gyldige).</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Du skal være moderator for at kunne gøre dette.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Ansøg om moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Ansøg om whiteboard adgang</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Ansøg om kamera/mikrofon adgang</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Denne sessions Hash-kode er allerede brugt. Du kan ikke bruge den 2 gange.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>LUK</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Vil du virkelg lukke? Du skal måske slette indlæste dokumenter, whiteboard og chat historie først.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Luk konference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rum</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Vælg rum til et møde</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Der er en event i kalenderen som ikke er gemt. Gem den først eller fjern den.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Tilføj venligst min. 1 deltager til dit møde!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Vil du virkelig slette denne event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Advarsel</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Tilføj event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>dag</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>uge</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>måned</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Beskrivelse</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Deltagere</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME konferenceplatform. Klik på startknappen for at starte en konference med det samme eller gå til din kalender for at planlægge et møde.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Planlæg et møde</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>For at sætte en konference op, kan du tilføje en event i din kalender. For hver event der oprettes, vil der automatisk blive oprettet et konferencerum. Alle deltagere samt dig selv, vil få tilsendt en email med en genvej (link) til det pågældende konferencerum.&lt;br/&gt;&lt;br/&gt;Du kan vælge mellem forskellige rumtyper med forskellig layout og funktionalitet. Du kan også vælge mellem forskellige notificeringsmuligheder (email), som sendes for hver kalender event.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Behov for hjælp?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Begrænset</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Søg</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Tilføj</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Ingen bruger valgt. Vælg venligst et emne fra listen først og klik på tilføj efterfølgende.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Tilføj deltager</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Gem</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Slet</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event detaljer</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default moderatorer</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Navn</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Tilføj ny default moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Er Super moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Hvis rummet er modereret, vil brugere med moderator eller administrator niveau automatisk blive moderator hvis de går ind i rummet. Såfremt du ikke vil angive dette og kun vil lade en bestemt bruger blive moderator, skal du anvende default moderator valgmuligheden.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>En Super moderator er altid moderator, når vedkommende går ind i et rum og ingen kan fjerne moderator flaget fra vedkommende.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Tildel Super moderator funk. til en bruger</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Fjern Super moderator funk. fra en bruger</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Såfremt du tilføjer en organisation til et rum, er det kun brugere som er medlem af organisationen, som kan få adgang til pågældende rum (Dette er kun gyldigt hvis hvis isPublic flaget er sat til false!).</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Begrænsninger</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisation</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Er du sikker?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Vil du virkelig slette dette emne? Du skal klikke på Gem knappen for at gemme ændringerne!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Ingen bruger er valgt. Vælg først inden du tilføjer!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Tilføj ny default moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Vil du tilføje Super moderator flaget for denne bruger? En Super moderator er ikke kun moderator i et rum, hvilket betyder at ingen andre moderatorer kan fjerne moderator flaget for denne bruger. Du mangler at gemme rum objektet for at gemme disse indstillinger!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Vil du fjerne Super moderator flaget for denne bruger?? Du mangler at gemme rum objektet for at gemme disse indstillinger!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Denne bruger er en Super moderator. Du kan ikke fjerne moderator flaget fra en Super moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Vil du virkelig slette denne fil/mappe?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Slet fil/mappe?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Fr.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Hr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Egenskaber</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Vis musens position for brugerne</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Del lyd med SIP Appletten</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Del lyd med SIP og video med Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Fyldig</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Se skærm</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>Brugeren</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>ønsker at dele sin skærm. Vil du se?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Luk</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Sessionen blev lukket at den delende bruger!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Ny deling af skærm</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimer</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximer</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Optagelse tidslinie</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Mine optagelser</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Offentlige optagelser</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>INFO</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Navn</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Længde</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Dato</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Af</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>MAIN - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Optager</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Du kan optage og dele din skærm samtidigt. For at gøre det muligt for andre at se din skærm, skal du bare klikke på Start knappen i toppen. For kun at optage sessionen er det nok at klikke på Start optagelse.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start optagelse</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop optagelse</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download FLV-filen</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Rum</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Afspil</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Brugeren har mikrofonen tilsluttet</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop deling</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Tillad bruger spørgsmål</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Slå fra for at forhindre at brugere kan forstyrre dig i dette rum. Effekten er, at knappen som anvendes til moderation ("Jeg har et spørgsmål") ikke vil være synlig.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rettigheder</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download som AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Rå skærmvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Kun lyd</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Der har været fejl under processionen af optagelsen.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>Optagelsen er ikke klar til at blive set. Prøv venligst igen om et par minutter.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Optager meddelelse</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet er ikke klar</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-konto indstillinger</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP for hver enkelt bruger. Du kan tilslutte eller afslutte SIP via administration &gt; konfiguration (Nøgle: enable_sip). SIP data for hver enkelt bruger bør blive oprettet automatisk.</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-Bruger</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Adgangskode</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>Login til SIP Gateway har fejlet. Du bør kontrollere autentifikations data fra din SIP-udbyder og SIP-onto data for hver enkelt bruger. Som administrator har du stadig mulighed for at logge ind og kontrollere konfigurationen. Som bruger eller moderator vil du blive blokeret med hensyn til interaktion.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>Login til SIP Gateway har fejlet. Kontakt support!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logger ind til SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logger ind til SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Vis Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log meddelelser fra sendingen af optagelses processen</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet meddelelse</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>SIP-Appletten er ikke klar. Accepter appletten og klik på OK!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Anmod om at blive moderator</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Gem møde ændringer</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>Mødet har været ændret. Vil du gemme disse ændringer? &lt;br/&gt;&lt;br/&gt;Alle deltagere til dette møde vil modtage en email med den opdaterede dato og tid (afhængig af notifikationstypen for dette møde).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>For at få adgang til andre optagelser skal du logge ind i $APP_NAME applikationen.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Vælg bruger for denne video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Bruge tilgængelige for denne Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Du er moderator i dette interview. Du kan bestemme hvem der taler i dette interview og du kan starte / stoppe optagelsen af denne session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start optagelse</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop optagelse</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>Optagelsen af interviewet er allerede startet.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>Optagelsen er allerede stoppet eller er ikke startet endnu.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>Optagelsen af dette interview er allerede startet!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>This is a Team-Room, you can send the Team-Moderator a message if you need help. You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>1) Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything! [Screen Sharing]</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git "a/src/main/webapp/languages/deutsch \050studIP\051.xml" "b/src/main/webapp/languages/deutsch \050studIP\051.xml"
new file mode 100644
index 0000000..1f50a12
--- /dev/null
+++ "b/src/main/webapp/languages/deutsch \050studIP\051.xml"
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferenz</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Meeting</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Event</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Einstellungen</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Aufnahme</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Keine Datei vorhanden</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Aufnahme nur für Moderatoren verfügbar</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>verbundene Teilnehmer:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Konferenz starten</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mein Name</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonferenz</value>
+  </string>
+  <string id="15" name="import">
+    <value>Datei importieren</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Liste neu laden</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Zum Hauptverzeichnis</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Neue Umfrage</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Neue Umfrage für die Sitzung.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Frage:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Umfragenart:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Anlegen</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Jeder Teilnehmer erhält eine Nachricht mit der neuen Umfrage.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Umfrage anlegen</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ja/Nein</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numerisch 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Umfrage</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Sie müssen Moderator dieser Sitzung sein, um eine Umfrage anzulegen.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Ihr Stimme wurde abgegeben.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Sie haben für diese Umfrage bereits ihr Votum abgegeben.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Abstimmen!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Ihre Antwort:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ja</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nein</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>will wissen:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Umfrageergebnisse</value>
+  </string>
+  <string id="38" name="question">
+    <value>Frage:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Antworten:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Ergebnis:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Zur Zeit liegen keine offenen Umfragen vor.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Abstimmen!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Meeting (max 4 Plätze)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferenz (max 50 Plätze)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Modus</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>verbleibende Plätze</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Bereits vergeben</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Eintreten</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Der Moderator hat den Raum verlassen.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systemnachricht</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Geräteauswahl</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Kamera wählen:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Mikrofon wählen:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Abbrechen</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Sie müssen sich erneut verbinden damit die Änderungen wirksam werden.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Einstellungen ändern.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurs:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Kurssprache:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Abbrechen</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Zeichenbrett leeren, bevor ein neues Bild hinzugefügt wird.</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Nicht nochmal fragen</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nein</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Einstellungen bearbeiten</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Bestätigung anfordern, bevor das Zeichenbrett geleert wird.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Profil</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Rückgängig</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Wiederherstellen</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Markieren</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Frei zeichnen</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Linien zeichnen</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Unterstreichen</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rechteck</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Kreis</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Pfeil</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Löschen</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Moderationsrecht beantragen</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Beantragen</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Moderator werden</value>
+  </string>
+  <string id="85" name="close">
+    <value>Schließen</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Kursiv</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Fett</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Warte</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Ein Teilnehmer erbittet Moderationsrechte.</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Annehmen</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Ablehnen</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Sende Anfrage an folgende Teilnehmer</value>
+  </string>
+  <string id="94" name="accept">
+    <value>bestätigt</value>
+  </string>
+  <string id="95" name="reject">
+    <value>abgelehnt</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Ändere Moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Sie sind nicht der Moderator dieser Sitzung</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Dieser Raum ist voll. Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmals.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Kreis</value>
+  </string>
+  <string id="101" name="close">
+    <value>Schließen</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Eingabefehler</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Der Benutzername muss mindestens 4 Zeichen lang sein</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Das Passwort muss mindestens 4 Zeichen lang sein</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Der Benutzername ist bereits vergeben</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Die E-Mail ist bereits registriert</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Ein Fehler ist aufgetreten. Bitte kontaktieren Sie den Administrator.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Benutzer/E-Mail:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Passwort:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Sprache</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Einloggen</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrieren</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Teilnehmer:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Passwort:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Wiederhole:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Vorname:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Nachname:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Land:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrieren</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Abbrechen</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrieren</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Gruppen</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisationen</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Öffentlich</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Betreten</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Passwort</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Wiederholen</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Vorname</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Geburtstag</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Straße/Nr.</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>PLZ/Stadt</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Land</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adressinfo</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Benutzerdaten</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Speichern</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Speichervorgang</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Benutzer-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Vorname</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Vorwärts</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Zurück</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Datensatz entfernen</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Abbrechen</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Enfernen</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Datensatz anlegen</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Datensatz neu laden</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Datensatz entfernen</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>gesperrt</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>aktiv</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisationen</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Schließen</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisations-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Name</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Rechtegruppe</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Name</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Organisation hinzufügen</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Organisation hinzufügen</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Abbrechen</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Hinzufügen</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Organisation entfernen</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Teilnehmer hinzufügen</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Teilnehmer entfernen</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Teilnehmer hinzufügen</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Teilnehmer suchen</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Suchen</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Auswählen</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Name</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>öffentlich</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisationen</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Name</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Typ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Öffentlich</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Kommentar</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Speichern</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Öffnen</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Speichern unter</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Dateiname</value>
+  </string>
+  <string id="201" name="files">
+    <value>Dateiname</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Abbrechen</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Speichern</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Fehler</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Laden</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objekte geladen</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronisiere Teilnehmer. Restliche Teilnehmer:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Lade Bilddaten</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronisiere Teilnehmer. Restliche Teilnehmer:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Zeichenbrett leeren. Alle bisherigen Änderungen gehen damit verloren!</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Bestätigung vor dem Laden einer Datei anfordern.</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Einladung versenden</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Einladung versenden</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Betreff</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Empfänger</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Nachricht</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Abschicken</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Senden</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Benutzerdaten</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Nickname für diese Konferenz</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Spitzname/Alias</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Vorname</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-Mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Sprache</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Absenden</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Laden</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Daten werden geladen. Bitte warten!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Falsches Passwort</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Bitte geben Sie das Passwort zweimal ein. Länge: mindestens 6 Buchstaben.</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Ungültige E-Mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Die angegebene E-Mail-Adresse ist ungültig</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registration abgeschlossen</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ihr Zugang wurde angelegt. Sie können sich nun einloggen.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Sie können Ihren Bildschirm im Moment nicht freigeben. Diese Funktion wird aktuell bereits von einem anderen Sitzungsteilnehmer genutzt.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Veröffentlichung abgelehnt</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Desktop freigeben</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Schlechte Bandbreite. Es war nicht möglich alle Bilder des Bildschirms zu laden. Tritt dieser Fehler häufiger auf können Sie den Moderator darum bitten, die Qualität zur verringern.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Bildschirm von:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Zeichnen</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokumente</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Dateien</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Orginaldatei herunterladen</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>PDF-Dokument herunterladen</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Präsentation in Zeichenbrett laden</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfiguration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Objekt verschieben</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Objekt vergrößern/verkleinern</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>von</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>zur ersten Seite springen</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>zur vorherigen Seite springen</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>zur nächsten Seite springen</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>zur letzten Seite springen</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Herr</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Frau</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfiguration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfiguration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Zuletzt bearbeitet</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Bearbeitet von</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Kommentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>von</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Teilnehmer aus Organisation entfernen</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Löschen</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Dieser Teilnehmer ist bereits Teil dieser Organisation.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Neuigkeiten</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Zu den Konferenzräumen (max. 4 Teilnehmer)</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Zu den Eventräumen (unbegrenzte Zuschauer)</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Hilfe und Support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Fehler melden!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Mehr</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projekt im Netz (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Mailing Liste Teilnehmer (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Login merken</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Dateien</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Meine Übersicht</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Meetings planen</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Meine Events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Öffentliche Meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private Meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Öffentliche Events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private Events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Öffentliche Dateien</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private Dateien</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Persönliche Dateien</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderation</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Moderationsrecht anfordern</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Umfrage</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Datei auswählen</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Einstellungen</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kamera-/Mikrofon-Einstellungen</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Zeichenbrett-Einstellungen</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Verlassen</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Zurück zur Raum-Übersicht</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Abmelden</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Passwort zurücksetzten?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Passwort zurücksetzen</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Bei E-Mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Bei Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>E-Mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Dateien</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>E-Mail mit Reset-Link versenden</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Geben Sie bitte entweder eine E-Mail oder einen Login an.</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Es existiert kein Teilnehmer mit diesem Namen.</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Die E-Mail mit dem dazugehörigen Link wurde an Ihre E-Mail-Adresse gesandt. Bitte überprüfen Sie Ihren Posteingang. Falls Sie immer noch keine E-Mail erhalten haben, korrigieren Sie bitte Ihre Spam-Einstellungen und senden Sie die E-Mail nochmals.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Fehler!</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Nachricht</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Ungültiger Hash.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Passwort zurücksetzen</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Passwort ändern</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Neues Passwort</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Passwort wiederholen</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Die von Ihnen angegebenen Passwörter sind nicht identisch.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 oder mehr Buchstaben. Groß- und Kleinschreibung beachten!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Passwort gespeichert. Sie können sich nun damit einloggen.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Fehler! Bitte wenden Sie sich an die Mitarbeiter der Koordinationsstelle E-Learning unter elearning@uni-trier.de.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Benutzername nicht gefunden</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Ungültiges Passwort</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Erfolgreich ausgeloggt</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrierung ist ausgeschaltet.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Ungültige E-Mail-Adresse</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Dieser Dateiname wird schon verwendet. Bitte geben Sie einen anderen an.</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Dateiname zu kurz</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Adresse konnte nicht gespeichert werden.</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Benutzer hinzugefügt. Vergessen Sie nicht diesem Benutzer auch eine Organisation hinzuzufügen. Benutzer ohne Organisation können sich nicht einloggen.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Neuer Datensatz</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Es konnte kein Feld zu dieser ID ermittelt werden.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Es konnte kein Label für diese ID ermittelt werden.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Sie müssen Administrator sein, um diese Aktion auszuführen.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Sprach-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Sprache</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Wert</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Feldwerte</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelWert</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Sie haben nur das Label gelöscht nicht das Feld! Das Feld könnte noch Referenzen in anderen Sprachen beinhalten.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Ungültige Labelid. FieldLanguagesvalues_Id kann in der Datenbank nicht gefunden werden.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Sie können dieses Feld nicht löschen. Sie können nur Labels, nicht aber Felder löschen. Zur Zeit ist kein Label geladen, entweder ist kein Feld ausgewählt oder es gibt kein Label in dieser Sprache für das Feld.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Exportieren</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Sie müssen sich neu anmelden, um Änderungen zu sehen.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Neue Sprache anlegen</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Sprache löschen</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Neue Sprache anlegen</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Sprache anlegen</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Sicherung</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Zum Ersten</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Zum Letzten</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Zum Nächsten</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Zum Letzten</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Teilnehmer spricht (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Sound an/ausschalten</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Übersicht</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Ihr Profil</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hallo,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Profil bearbeiten</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Ungelesene Nachrichten:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Bild ändern</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Benutzerdaten - Exportieren</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Alle Organisationen müssen bereits vorhanden sein!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Starte Export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Nach Organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Starte Export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Benutzerdaten - Import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Wählen Sie users.xml aus</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importiere</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportiere als XML - Diese Dateien können benutzt werden als: Beitrag zum Projekt - Import in ein anderes System - Sicherung - kundenspezifische Anpassung - Ablage im Sprachverzeichnins für Ihre nächste Installation.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Wählen Sie eine Sprachdatei für den Import aus. Wählen Sie die passende Sprache aus der Combobox! Egal welchen Namen die Datei hat, sie wird in diese Sprache importiert!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Import - Wählen Sie eine Datei aus</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Speichern unter</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Name:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Kommentar:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Speichern</value>
+  </string>
+  <string id="395" name="record">
+    <value>Aufnahmen</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Aufnahmen ansehen</value>
+  </string>
+  <string id="397" name="record">
+    <value>Aufnahmen aus allen Räumen</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Teilnehmer:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Mitglied seit:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Teilnehmer in diesem Raum:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Neu laden</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Dieser Raum ist voll. Bitte versuchen Sie es später noch einmal.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Wählen Sie einen Raum aus, um Details zu erhalten.</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chatten Sie mit Teilnehmern in diesem Raum:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Raum:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Teilnehmer in diesem Raum:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Seit:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Aufnahme abspielen</value>
+  </string>
+  <string id="410" name="record">
+    <value>Länge:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Datum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Aufnahme! Sie können hier nichts mehr ändern ...</value>
+  </string>
+  <string id="413" name="record">
+    <value>Aufnahme abspielen</value>
+  </string>
+  <string id="414" name="record">
+    <value>Abspielen / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Aufnahme starten</value>
+  </string>
+  <string id="416" name="record">
+    <value>Aufnahme beenden</value>
+  </string>
+  <string id="417" name="record">
+    <value>Aufnahmen:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Die Aufnahme ist bereits gestartet.</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Aufnahme gestartet! Von Teilnehmer:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Aufnahme wird abgebrochen und nicht gespeichert.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Fortsetzen</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Aufnahme fortsetzen</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Linienfarbe ändern</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Farbe auswählen</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Randfarbe de/aktivieren</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Füllfarbe ändern</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Füllfarbe de/aktivieren</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Linienstärke ändern</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Schließen</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Schriftgröße anpassen</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Aufnahme löschen</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gäste</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Von:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Raum</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Chatlog löschen</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Nachricht abschicken</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Wählen Sie die Geräte aus:</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ton und Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>nur Ton(Mikrofon)</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>nur Video(Webcam)</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>kein Video/Ton (nur Profil-Bild)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Kein Video/Ton veröffentlichen. Wählen Sie diese Einstellung wenn die verfügbare Bandbreite sehr niedrig ist.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>DI</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>MI</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>DO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SO</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Montag</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Dienstag</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Mittwoch</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Donnerstag</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Freitag</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Samstag</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sonntag</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalenderwoche</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januar</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Februar</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>März</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mai</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Dezember</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalender</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Teilnehmerzahl</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Zeige Layouteinstellungen</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderations-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Enabled</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Dateien-, Chat-, Teilnehmer-Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Aktiv</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Der Moderator hat den Raum verlassen. Sie müssen die Moderation beantragen wenn Sie auf das Zeichenbrett zeichnen wollen.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Es gibt momentan keinen Moderator in diesen Raum. Sie müssen die Moderation beantragen oder warten.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Einladung</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Nachricht von Teilnehmer:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Nachricht:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klicken Sie auf diesen Link, um in den Raum zu gelangen:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile ihres Browsers:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Registrierung</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Ihre Benutzerdaten:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Registrierung</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Passwort zurücksetzen</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klicken Sie hier, um ein neues Passwort einzugeben:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile Ihres Browsers:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Password Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Bitte geben Sie ein gültiges Datum an, zum Beispiel 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Bitte geben Sie eine gültige E-Mail an, zum Beispiel name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Bitte geben Sie eine Fließkommazahl an, zum Beispiel 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Bitte geben Sie eine Ganzzahl an, zum Beispiel 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Bitte geben Sie eine gültige Telefon-Nummer an, zum Beispiel ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Bitte geben Sie eine gültige Uhrzeit an, zum Beispiel 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Passwort geschützt</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Passwort</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Gültigkeit</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Immer</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Zeitspanne</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Einmalig</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Gültig ab:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Gültig bis:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Einladung für diese Konferenz</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Keine Einladung für diesen Code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Die Einladung ist nicht mehr gültig.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Die Einladung ist nicht mehr gültig.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Passwort:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Passwort überprüfen</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Falsches Passwort!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Ton/Video neu starten</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Sitzung abgelaufen oder ungültig.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId ist nicht eingeloggt oder hat keine Administratorrechte. Das SOAP Gateway benötigt einen Benutzer mit Admin-Rechten um einen neuen Nutzer einzubetten.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Diese Sitzung steht mit keiner Remoteuser-Data in Verbindung. Entweder haben Sie das SOAP-Gateway vor dem Zugriff auf die Anwendung nicht gerufen oder Sie benutzen die falsche Sitzungs-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Die Aufnahme von Meetings ist noch Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-Achse</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-Achse</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>Breite</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>Höhe</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Transparenz ändern</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser offen</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser geschlossen</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Die Verbindung zum Server ist abgebrochen. Prüfen Sie ihre Netzwerk-Verbindung und starten Sie die Anwendung neu.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronisiere</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Teilnehmer werden synchronisiert, bitte warten Sie!</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download als SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download als PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download als JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download als PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download als TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Erinnerung</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategorie</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Wiederholung</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>Keine</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Ort:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Ende</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titel:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Kommentar:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Jemanden einladen</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>täglich</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>monatlich</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>jährlich</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Terminstart muss vor Terminende liegen!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Bitte geben Sie einen Titel an!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktivieren Sie die falls es sich um eine Eingabe einer Rechts-Nach-Links Sprache (arabisch, persich, hebräisch) handelt.</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Start</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Aufgenommene Konferenzen betrachten</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Eröffnen Sie eine Konferenz&lt;br/&gt;</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Benutzer, Konfiguration und Verwaltung</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Teilnehmer in diesem Raum</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Einloggen</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Dokument wird geladen. Bitte warten Sie bis alle Teilnehmer synchronisiert wurden.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Dokument hochgeladen. Bitte warten Sie ab bis es importiert wurde ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Starte Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Wählen Sie zum Hochladen eine Datei von Ihrem PC aus. Zugelassene Dateiformate: .pdf, .jpg, .gif</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Abbrechen</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Datei auswählen</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Verbindungen</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Wert</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Verbunden seit</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Raum / Bereich</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Ausloggen</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Teilnehmeranbindung trennen</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Wollen Sie diesen Teilnehmer wirklich von dieser Verbingung trennen?&lt;br/&gt; Diese Maßnahme entfernt den Teilnehmer lediglich aus dem Raum. Der Teilnehmer kann sich wieder einloggen.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Ihre Sitzung wurde beendet.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Teilnehmer ist Moderator dieses Raumes.</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Teilnehmer hat keine Zugriffsrechte zum Zeichenbrett</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Neu starten von Ton/Video oder Einstellungen ändern</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Diesem Teilnehmer den Zugang zum Zeichenbrett gewähren.</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Diesem Teilnehmer den Zugang zum Zeichenbrett verwehren.</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Dateien</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Zeichenbrett</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Ihr Benutzer-Profil ist Mitglied in mehreren Organisationen. Bitte wählen Sie eine für diese Sitzung.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Der Raum ist im Moment voll. Bitte versuchen Sie es später noch einmal.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Raumtyp</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Termin Raum</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Zeit</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Erinnerung</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Nachricht von Teilnehmer:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Nachricht:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klicken Sie auf diesen Link um in den Raum zu gelangen:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile Ihres Browsers:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Suche intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Externe Teilnehmer eingeben</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Vorname</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Abmeldung bestätigen</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Wollen Sie sich wirklich ausloggen?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Aktionen</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demoraum</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Zeit</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Zeitmesser</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Dies ist ein Demo-Raum. Um diesen Hinweis abzuschalten sollten Sie entweder einen privaten Meeting-Raum für Ihren persönlichen Zweck aufsuchen oder Ihren eigenen Server anlegen. Sie werden automatisch ausgeloggt in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderiert</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Bitte warten Sie, bis der Moderator dieser Sitzung den Raum betreten hat.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Anfrage Bildschirmfreigabe</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Eingehende Bildschirmfreigabe von Teilnehmer:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Starte Bildschirmfreigabe</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Füge ein neues Meeting hinzu</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Raum</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderiere Teilnehmer</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderiere Räume</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Wollen Sie diesem Teilnehmer die Moderationsrechte für die Organisation übertragen?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Bitte wählen Sie zuerst die Organisation aus bevor Sie einen Benutzer hinzufügen wollen!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Sind Sie Sicher, dass Sie diesen Teilnehmer aus der Organisation löschen möchten?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Dieser Teilnehmer verfügt über Moderationsrechte</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Dieser Teilnehmer verfügt über keine Moderationsrechte</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Wollen Sie diesem Teilnehmer die Moderationsrechte entziehen?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Räume innerhalb der Organisation hinzufügen oder löschen</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Wollen Sie diese Aufnahme wirklich löschen?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Wollen Sie diesen Teilnehmer aus Ihrer Organisation wirklich entfernen? Sie können nur die Verbindung zwischen dem Teilnehmer und Ihrer Organisation löschen , um den Teilnehmer zu löschen benötigen Sie Administrator-Rechte.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Sie können Ihren eigenen Nutzeraccount nicht löschen!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Diese Methode benötigt ein Administrator-Account um aufgerufen zu werden.</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Es ist keine Sitzung mit dieser ID verbungen.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Dies ist ein Administrator- oder Moderator-Account. Dieses Account können Sie nur mittels eines Administrator-Tableau bearbeiten.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Um Ihre Registration abzuschließen klicken Sie bitte auf den folgenden Link. Oder kopieren Sie die URL(Link) in Ihre Browser-Adressleiste.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klicken Sie um Ihre E-Mail zu bestätigen</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Es wurde kein Benutzer für diesen Hash gefunden.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Dieser Benutzer ist bereits aktiviert!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Sie haben Ihr Account erfolgreich aktiviert!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Jetzt einloggen</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Ihr Account ist nicht aktiviert. Benutzen Sie zuerst den Link in der E-Mail die Sie während der Registrierung erhalten haben.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Sie haben sich erfolgreich angemeldet. Wir haben eine E-Mail mit einem Verifizierungscode an Ihre E-Mail-Adresse geschickt. Bitte überprüfen Sie Ihren Posteingang.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Diesem Teilnehmer die Moderationsrechte entziehen.</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Diesem Teilnehmer Moderatoionsrechte übertragen</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Zugang zum Zeichenbrett</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Zum Ändern der Bearbeitungsrechte wählen Sie den jeweiligen Teilnehmer bitte in der Liste aus.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Dieser Teilnehmer besitzt Moderationsrechte, somit hat er auch bereits Zugriff auf das Zeichenbrett.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Das sind Sie! Sie können Ihre eigenen Moderatorrechte nicht entfernen.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Audio-/Video-Beitrag dieses Teilnehmers zulassen.</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Audio/Video dieses Teilnehmers entfernen.</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Ich würde gerne die Moderation dieses Raumes übernehmen.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Ich würde gerne auf dem Zeichenbrett zeichnen.</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Ich würde gerne mein Audio/Video mit anderen teilen</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Sie sind der Moderator dieses Raumes</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Ihnen ist es erlaubt, auf dem Zeichenbrett zu zeichnen</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Ihnen ist es erlaubt, Ihr Audio/Video mit anderen zu teilen</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Nachricht an den Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Der Teilnehmer</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>würde gerne die Moderation übernehmen. Bitte benutzen Sie zur Rechtevergabe das entsprechende Symbol neben dem Benutzernamen in der Teilnehmerliste.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>würde gerne auf das Zeichenbrett zugreifen. Bitte benutzen Sie zur Rechtevergabe das Stift-Symbol neben dem Benutzernamen in der Teilnehmerliste.</value>
+  </string>
+  <string id="695" name="695">
+    <value>würde gerne sein Audio/Video mit anderen teilen. Benutzen Sie die Status-Symbole neben der Benutzerliste, um das Recht mit anderen Video/Audio zu teilen zu vergeben oder zu verwehren.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Sie müssen warten bis der Moderator den Raum betritt.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Abbruch</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Speichern</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Tag</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Monat</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Jahr</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Datei hochladen</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Aktualisieren</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Papierkorb</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Meine Dateien (persönliches Laufwerk)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Konferenzdokumente (öffentliches Laufwerk)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Datei hinzufügen</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Ordner löschen</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Name bearbeiten</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Neuer Ordner</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Sind Sie sicher, dass Sie dieses Element löschen wollen?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Suche</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Suche</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Dokument öffnen</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Zeige alle Dateien (Baum Ansicht)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Dokument schließen</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Datei löschen</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Es ist Ihnen nicht gestattet auf dem Zeichenbrett zu zeichnen. Sie müssen Moderator sein oder zumindest das Recht besitzen das Zeichenbrett zu bearbeiten. Sie können den Moderator nach den Rechten fragen.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Dokumenteigenschaften</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Starte Client (extern)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Starte Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Ein Teilnehmer will seinen Desktop freigeben. Wollen Sie dies zulassen?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Sie haben Ihren Desktop freigegeben. Wenn Sie die Freigabe beenden wollen drücken Sie die Anhalten-Schaltfläche im Desktop Sharer.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Geteilte Sitzung</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Sie haben Ihren Desktop bereits freigegeben!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop-Betrachter</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Beenden</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop-Teiler</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Drücken Sie Start, um Ihren Desktop freizugeben</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Anhalten</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Wählen Sie einen Bildschirmbereich aus:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Breite ändern</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Die Bildschirmfreigabe wurde beendet!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Höhe ändern</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Abstand</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Abstand</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Breite:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Höhe:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Die Verbindung wurde vom Server abgebrochen.</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Abbrechen</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Extern starten</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Wenn Sie diese Session schließen, können Sie die Session nicht wieder starten.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Sitzung wirklich schließen?</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Bildschirm freigeben</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Sitzung aufnehmen</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Geteiltes surfen</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Upsa, ... Firefox unter Windows ist nicht in der Lage, mangelfreies Co-Browsing zu gewährleisten. Bitte benutzen Sie einen anderen Browser um die Co-Browsing-Funktion zu nutzen.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Vorherige</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Nächste</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Nachladen</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Heim</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Laden</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Diese Webseite als vorgegebene Webseite zu meinem Profil hinzufügen.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Kamera und Mikrofoneinstellungen testen</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Überprüfen Sie Ihre Mikrofon- und Kameraeinstellungen bevor Sie einen Raum betreten und Aufzeichnungen durchführen. Sie können Ihre Aufnahmen im Nachhinein abspielen.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Dieses Fenster nicht wieder anzeigen</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Abbrechen</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Raum betreten</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Nicht wieder fragen</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>Aufnahme</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>Abspielen</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Sie können auch ohne einen Test fortfahren, falls Sie beabsichtigen Audio und Video nicht in der Sitzung einzusetzen. In diesem Fall haben Sie dennoch Zugriff auf das Zeichenbrett, können ihren Desktop für andere freigeben oder die Chatfunktion nutzen.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>Stop</value>
+  </string>
+  <string id="767" name="767">
+    <value>Lautstärke</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Start drücken</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Konferenz starten</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Event starten</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Raum wählen</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Prüfe Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Konferenz starten</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Wie starte ich eine Konferenz</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Testaufnahme</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Audio-/Video-Test (Aufnahme) vor dem Betreten einer Konferenz nicht zeigen</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Öffentliche Räume</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Öffentliche Räume können von allen Teilnehmern betreten werden.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Gruppenräume</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Räume sind nur für Teilnehmer in der selben Organisation verfügbar.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Private Räume</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Räume in diesem Bereich sind für den persönlichen Bedarf. Die Räume haben ein Start und Enddatum und stehen nur in diesem Zeitraum zur Verfügung.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Sie müssen Moderator sein, um diese Aktion auszuführen.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Moderation beantragen</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Zeichenbrett beantragen</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Video/Mikrofon beantragen</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Dieser SessionHasgh wird bereits genutzt. Er kann nicht zweifach vergeben werden.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Wollen Sie die Konferenz wirklich verlassen? Vielleicht sollten Sie zuerst Dokumente, Zeichenbrett und Chat History leeren. Andernfalls werden die Dateien einfach in diesem Raum bis zu Ihrem nächsten Besuch bleiben.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Konferenz beenden</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Räume</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Wählen Sie einen Raum für die Konferenz aus</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Es ist ein nicht gespeichertes Event im Kalender. Speichern Sie es oder löschen Sie es wieder.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Bitte fügen Sie mindestens einen Teilnehmer zum Event.</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Soll dieses Event wirklich aus dem Kalender gelöscht werden?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warnung</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Neuer Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Tag</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Woche</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Monat</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Beschreibung</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, Ihre Web Konferenz Plattform. Entweder starten Sie sofort ein Meeting indem Sie den 1-2-3 Anweisungen folgen oder Sie benutzen den Kalender um eine Konferenz zu planen.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Konferenz planen</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Um eine Konferenz zu planen können Sie einen Event im Kalender hinzufügen.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Brauchen Sie Hilfe?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Eingeschränkt</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Suche</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Ok</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Es ist kein Benutzer ausgewählt. Wählen Sie zuerst einen Benutzer und drücken dann Ok.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Teilnehmer hinzufügen</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Speichern</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Löschen</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Neuen Default-Moderator hinzufügen</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Ist Super-Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>In einem moderierten Raum sind Teilnehmer mit den Rollen Level-Moderator oder Administrator beim Betreten des Raums automatisch Moderatoren. Um dies abzuschalten, verwenden Sie die Funktion Default-Moderator.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Der Super-Moderator ist beim Betreten eines Raums immer Moderator. Das Recht kann ihm im Raum nicht genommen werden.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Nutzer Super-Moderatorrechte zuweisen</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Nutzer Super-Moderatorrechte aberkennen</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Wenn eine Organisation einen Raum zugewiesen wird, haben nur Mitglieder der Organisation Zugang. (Dies gilt nur wenn die Einstellung isPublic auf false gesetzt wurde!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Begrenzungen</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisation</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Sind Sie sicher?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Wollen Sie den Wert wirklich löschen? Mit dem Speichern-Button ändern Sie die Einträge!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Es wurde noch kein Teilnehmer ausgewählt. Sie müssen zuerst eine Person auswählen, um sie hinzufügen zu können.</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Neuen Default-Moderator hinzufügen</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Soll dieser Nutzer Super-Moderation werden? Super-Moderatorenrechte können nicht gelöscht werden. Zum Speichern der Einstellungen muss das Raumobjekt gespeichert werden!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Sollen die Super-Moderatorenrechte für diesen Nutzer aufgehoben werden? Zum Speichern der Einstellungen muss das Raumobjekt gespeichert werden!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Dies ist ein Super-Moderator. Sie können die Moderationsrechte dem Nutzer nicht entziehen!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Wollen Sie wirklich diese Datei oder Ordner löschen?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Datei/Ordner löschen?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Fräulein</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Eigenschaften</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Teilnehmern Mauszeiger anzeigen</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Vollbild</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Bildschirm zeigen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>Der Teilnehmer</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>möchte seinen Desktop veröffentlichen. Stimmen Sie dem zu?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Schließen</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Die Bildschirmfreigabe wurde beendet!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Neuer Desktop verfügbar</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimieren</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximieren</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Video Zeitspur</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Meine Aufnahmen</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Öffentliche Aufnahmen</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Länge</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Datum</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Von</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Haupt - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Aufnahmen</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Sie können eine Bildschirmfreigabe starten oder die aktuelle Sitzung aufzeichnen. Sofern Sie Ihren Bildschirm nur für andere Teilnehmer freigeben wollen genügt es, den obigen Start-Button zu betätigen.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Aufnahme starten</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Aufnahme stoppen</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Raum</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Teilnehmer hat das Mikrofon an</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Bildschirmfreigabe beenden</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Fragen von Teilnehmern zulassen</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Wenn Sie diese Option aktivieren ist die Schaltfläche zum beantragen der Moderation für andere Teilnehmer nicht sichtbar und Sie werden nicht in ihrem Vortrag gestört.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rechte</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>AVI runterladen</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Moderation beantragen</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Löscht die Objekte der aktuellen Folie</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Bildschirmfreigabe erlauben</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>Teilnehmer ist Moderator und verfügt somit über alle Bearbeitungsfunktionen</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>möchte gerne den Bildschirm freigeben.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Sie haben die Berechtigung zur Bildschirmfreigabe.</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Bildschirmfreigabe beantragen</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Berechtigung zur Bildschirmfreigabe.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Bearbeite Einstellungen</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Zeige keine Info-Box in der Remote Control über Kopieren und Einfügen</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Aktiviere Größenanpassung, sodass auf das ganze Whiteboard gezoomt wird&lt;br/&gt;und der Benutzer alle Dokumente sieht.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>entferne Benutzer</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Gesendet</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Gelöscht</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid for a period of time.</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Zeige Profil-Update-Nachricht nicht noch einmal</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Aktivitäten und Aktionen</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Lösche Whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Bitte geben Sie eine EMail an</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Neue Nachricht(en)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Kamera-Auflösung</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Die Kamera-Auslösung hat einen direkten Einfluss auf die verbrauchte Upload-Bandbreite!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/deutsch.xml b/src/main/webapp/languages/deutsch.xml
new file mode 100644
index 0000000..e770129
--- /dev/null
+++ b/src/main/webapp/languages/deutsch.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferenz</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Meeting</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Event</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Einstellungen</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Aufnahme</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Keine Datei vorhanden</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Aufnahme nur für Lehrer verfügbar</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>verbundene Benutzer:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Konferenz starten</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mein Name</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonferenz</value>
+  </string>
+  <string id="15" name="import">
+    <value>Datei importieren</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Liste neu laden</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Zum Hauptverzeichnis</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Neue Umfrage</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Eine neue Umfrage für die Konferenz.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Frage:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Umfragenart:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Anlegen</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Jeder verbundene Benutzer erhält eine Nachricht mit der neuen Umfrage.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Umfrage anlegen</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ja/Nein</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numerisch 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Umfrage</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Sie müssen Moderator/Lehrer in diesem Raum sein, um eine Umfrage anzulegen.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Ihr Stimme wurde abgegeben.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Sie haben für diese Umfrage bereits ihr Votum abgegeben.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Abstimmen!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Ihre Antwort:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ja</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nein</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>will wissen:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Umfrageergebnisse</value>
+  </string>
+  <string id="38" name="question">
+    <value>Frage:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Antworten:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Ergebnis:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Es gibt zur Zeit keine Umfrage.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Abstimmen!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Meeting (max 4 Plätze)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferenz (max 50 Plätze)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Modus</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>verbleibende Plätze</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Bereits vergeben</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Eintreten</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Der Moderator/Lehrer hat den Raum verlassen.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systemnachricht</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Geräteauswahl</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Kamera wählen:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Mikrofon wählen:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Abbrechen</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Sie müssen sich erneut verbinden damit die Änderungen wirksam werden.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Einstellungen ändern.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurs:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Kurssprache:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Abbrechen</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Soll das Zeichenbrett geleert werden bevor ein neues Bild hinzugefügt wird?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Nicht nochmal fragen</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nein</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Einstellungen bearbeiten</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Bestätigung anfordern bevor das Zeichenbrett geleert wird.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Profil</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Rückgängig</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Wiederherstellen</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Markieren</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Frei zeichnen</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Linien zeichnen</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Unterstreichen</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rechteck</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Kreis</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Pfeil</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Löschen</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Moderation beantragen</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Beantragen</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Moderator werden</value>
+  </string>
+  <string id="85" name="close">
+    <value>Schließen</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Kursiv</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Fett</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Warte</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Ein Benutzer möchte die Moderation übernehmen:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Annehmen</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Ablehnen</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Sende Anfrage an folgende Nutzer</value>
+  </string>
+  <string id="94" name="accept">
+    <value>bestätigt</value>
+  </string>
+  <string id="95" name="reject">
+    <value>abgelehnt</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Ändere Moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Sie sind nicht der Moderator dieser Konferenz!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Dieser Raum ist voll. Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmals.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Kreis</value>
+  </string>
+  <string id="101" name="close">
+    <value>Schließen</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Eingabefehler</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Der Benutzername muss mindestens 4 Zeichen lang sein</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Das Passwort muss mindestens 4 Zeichen lang sein</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Der Benutzername ist bereits vergeben</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Die E-Mail ist bereits registriert</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Ein Fehler trat auf. Bitte kontaktieren Sie den Administrator</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Benutzer/E-Mail:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Passwort:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Sprache</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Einloggen</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrieren</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Benutzer:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Passwort:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Wiederhole:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Vorname:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Nachname:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Land:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrieren</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Abbrechen</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrieren</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Benutzer</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Gruppen</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisationen</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Öffentlich</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Betreten</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Benutzer</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Passwort</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Wiederholen</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Vorname</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Geburtstag</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Straße/Nr.</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>PLZ/Stadt</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Land</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adressinfo</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Benutzerdaten</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Speichern</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Speichervorgang</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Benutzer-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Vorname</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Vorwärts</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Zurück</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Datensatz entfernen</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Abbrechen</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Enfernen</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Datensatz anlegen</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Datensatz neu laden</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Datensatz entfernen</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>gesperrt</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>aktiv</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisationen</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Schließen</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisations-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Name</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Benutzer</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Benutzerrolle</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Name</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Organisation hinzufügen</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Organisation hinzufügen</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Abbrechen</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Hinzufügen</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Organisation entfernen</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Benutzer</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Benutzer hinzufügen</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Benutzer entfernen</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Benutzer hinzufügen</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Benutzer suchen</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Suchen</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Benutzer</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Auswählen</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Name</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>öffentlich</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisationen</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Konferenzräume</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Name</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Typ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Öffentlich</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Kommentar</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Speichern</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Öffnen</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Speichern unter</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Dateiname</value>
+  </string>
+  <string id="201" name="files">
+    <value>Dateiname</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Abbrechen</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Speichern</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Fehler</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Laden</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objekte geladen</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronisiere Benutzer. Restliche Benutzer:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Lade Bilddaten</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronisiere Benutzer. Restliche Benutzer:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Zeichenbrett leeren</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Zeichenbrett leeren. Alle bisherigen Änderungen gehen damit verloren!</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Bestätigung anfordern vor dem Laden einer Datei</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Einladung versenden</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Einladung versenden</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Betreff</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Empfänger</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Nachricht</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Abschicken</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Senden</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Benutzerdaten</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Nickname für diese Konferenz</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Spitzname/Alias</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Vorname</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Nachname</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-Mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Sprache</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Absenden</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Laden</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Daten werden geladen. Bitte warten!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Falsches Passwort</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Bitte geben Sie ihr Passwort zweimal ein. Länge: mindestens 6 Buchstaben.</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Ungültige E-Mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Die angegebene E-Mail-Adresse ist ungültig</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registration abgeschlossen</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ihr Benutzer wurde angelegt. Sie können sich nun einloggen.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Sie können Ihren Bildschirm im Moment nicht veröffentlichen, da dies bereits ein anderer Benutzer in diesem Konferenzraum tut.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Veröffentlichung abgelehnt</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Desktop veröffentlichen</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Schlechte Bandbreite. Es war nicht möglich alle Bilder des Bildschirms zu laden. Tritt dieser Fehler häufiger auf können Sie den Moderator darum bitten, die Qualität zur verringern.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Bildschirm von:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Zeichnen</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokumente</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Dateien</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Benutzer</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Orginaldatei herunterladen</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>PDF-Dokument herunterladen</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Präsentation in Zeichenbrett laden</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfiguration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Objekt verschieben</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Objekt vergrößern/verkleinern</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>von</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>zur ersten Seite springen</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>zur vorherigen Seite springen</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>zur nächsten Seite springen</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>zur letzten Seite springen</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Herr</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Frau</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfiguration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfiguration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Zuletzt bearbeitet</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Bearbeitet von</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Kommentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Schlüssel</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>von</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Benutzer</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Benutzer aus Organisation entfernen</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Löschen</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Dieser Benutzer ist bereits Teil dieser Organisation.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Neuigkeiten</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Zu den Konferenzräumen (max. 50 Teilnehmer)</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Zu den Eventräumen (unbegrenzte Zuschauer)</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Hilfe und Support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org//</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Fehler melden!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Mehr</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projekt im Netz (http://openmeetings.apache.org/)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Benutzer Mailing Liste (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Login merken</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Dateien</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Meine Übersicht</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Meetings planen</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Meine Events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Öffentliche Meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private Meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Öffentliche Events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private Events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Öffentliche Dateien</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private Dateien</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Persönliche Dateien</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderation</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Moderation anfordern</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Umfrage</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Datei auswählen</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Einstellungen</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kamera-/Mikro-Einstellungen</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Zeichenbrett-Einstellungen</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Verlassen</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Zurück zur Raum-Übersicht</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Abmelden</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Passwort zurücksetzen?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Passwort zurücksetzen</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Bei E-Mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Bei Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>E-Mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Dateien</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>E-Mail mit Reset-Link versenden</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Geben Sie bitte entweder eine E-Mail oder einen Login an.</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Es gibt keinen Benutzer mit diesem Benutzernamen.</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Die E-Mail mit dem dazugehörigen Link wurde an Ihre E-Mail-Adresse gesandt. Bitte überprüfen Sie Ihren Posteingang. Falls Sie immer noch keine E-Mail erhalten haben, korrigieren Sie bitte Ihre Spam-Einstellungen und senden Sie die E-Mail nochmals.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Fehler!</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Nachricht</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Ungültiger Hash.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Passwort zurücksetzen</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Passwort ändern</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Neues Passwort</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Passwort wiederholen</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Die von Ihnen angegebenen Passwörter sind nicht identisch.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Benutzername oder Passwort sind zu kurz, bitte geben Sie mindestens folgende Anzahl an Zeichen für Benutzername / Passwort ein:</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Passwort gespeichert. Sie können sich nun damit einloggen.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Unbekannter Fehler. Bitte melden Sie das dem Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Benutzername nicht gefunden</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Ungültiges Passwort</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Erfolgreich ausgeloggt</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrierung ist ausgeschaltet.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Ungültige E-Mail-Adresse</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Dieser Dateiname wird schon verwendet. Bitte geben Sie einen anderen an.</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Dateiname zu kurz</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Adresse konnte nicht gespeichert werden.</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Benutzer hinzugefügt. Vergessen Sie nicht diesem Benutzer auch eine Organisation hinzuzufügen. Benutzer ohne Organisation können sich nicht einloggen.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Neuer Datensatz</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Es konnte kein Feld zu dieser ID ermittelt werden.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Es konnte kein Label für diese ID ermittelt werden.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Sie müssen Administrator sein, um diese Aktion auszuführen.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Sprach-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Sprache</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Wert</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Feldwerte</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelWert</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Sie haben nur das Label gelöscht nicht das Feld! Das Feld könnte noch Referenzen in anderen Sprachen beinhalten.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Ungültige Labelid. FieldLanguagesvalues_Id kann in der Datenbank nicht gefunden werden.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Sie können dieses Feld nicht löschen. Sie können nur Labels, nicht aber Felder löschen. Zur Zeit ist kein Label geladen, entweder ist kein Feld ausgewählt oder es gibt kein Label in dieser Sprache für das Feld.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Exportieren</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Sie müssen sich neu anmelden, um Änderungen zu sehen.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Neue Sprache anlegen</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Sprache löschen</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Neue Sprache anlegen</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Sprache anlegen</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Sicherung</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Zum Ersten</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Zum Letzten</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Zum Nächsten</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Zum Letzten</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Benutzer spricht (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Sound an/ausschalten</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Übersicht</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Ihr Profil</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hallo,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Profil bearbeiten</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Ungelesene Nachrichten:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Bild ändern</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Benutzerdaten - Exportieren</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Alle Organisationen müssen bereits vorhanden sein!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Starte Export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Nach Organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Starte Export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Benutzerdaten - Import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Wählen Sie users.xml aus</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importiere</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportiere als XML - Diese Dateien können benutzt werden als: Beitrag zum Projekt - Import in ein anderes System - Sicherung - kundenspezifische Anpassung - Ablage im Sprachverzeichnins für Ihre nächste Installation.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Wählen Sie eine Sprachdatei für den Import aus. Wählen Sie die passende Sprache aus der Combobox! Egal welchen Namen die Datei hat, sie wird in diese Sprache importiert!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Import - Wählen Sie eine Datei aus</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Speichern unter</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Name:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Kommentar:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Speichern</value>
+  </string>
+  <string id="395" name="record">
+    <value>Aufnahmen</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Aufnahmen ansehen</value>
+  </string>
+  <string id="397" name="record">
+    <value>Aufnahmen aus allen Räumen</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Benutzer:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Mitglied seit:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Benutzer in diesem Raum:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Neu laden</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Dieser Raum ist voll. Bitte versuchen Sie es später noch einmal.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Wählen Sie einen Raum aus, um Details zu erhalten.</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chatten Sie mit Benutzern in diesem Raum:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Raum:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Benutzer in diesem Raum:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Seit:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Aufnahme abspielen</value>
+  </string>
+  <string id="410" name="record">
+    <value>Länge:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Datum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Aufnahme! Sie können hier nichts mehr ändern ...</value>
+  </string>
+  <string id="413" name="record">
+    <value>Aufnahme abspielen</value>
+  </string>
+  <string id="414" name="record">
+    <value>Abspielen / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Aufnahme starten</value>
+  </string>
+  <string id="416" name="record">
+    <value>Aufnahme beenden</value>
+  </string>
+  <string id="417" name="record">
+    <value>Aufnahmen:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Die Aufnahme ist bereits gestartet.</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Aufnahme gestartet von Benutzer:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Aufnahme wird abgebrochen und nicht gespeichert.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Fortsetzen</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Aufnahme fortsetzen</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Linienfarbe ändern</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Farbe auswählen</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Randfarbe de/aktivieren</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Füllfarbe ändern</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Füllfarbe de/aktivieren</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Linienstärke ändern</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Schließen</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Schriftgröße anpassen</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Aufnahme löschen</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gäste</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Von:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Raum</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Abbrechen</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Chatlog löschen</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Nachricht abschicken</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Wählen Sie die Geräte aus:</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ton und Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>nur Ton (Mikrophon)</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>nur Video (Webcam)</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>kein Video/Ton (nur Profil-Bild)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Kein Video/Ton veröffentlichen. Wählen Sie diese Einstellung wenn die verfügbare Bandbreite sehr niedrig ist.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>DI</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>MI</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>DO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SO</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Montag</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Dienstag</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Mittwoch</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Donnerstag</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Freitag</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Samstag</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sonntag</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalenderwoche</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januar</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Februar</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>März</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mai</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Dezember</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalender</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Teilnehmerzahl</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Zeige Layouteinstellungen</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderations-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Aktiviert</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Dateien-, Chat-, Teilnehmer-Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Aktiv</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Breite | Höhe</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Der Moderator hat den Raum verlassen. Sie müssen die Moderation beantragen wenn Sie auf das Zeichenbrett zeichnen wollen.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Es gibt momentan keinen Moderator in diesen Raum. Sie müssen die Moderation beantragen oder warten.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Einladung</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Nachricht von Benutzer:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Nachricht:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klicken Sie auf diesen Link, um in den Raum zu gelangen:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile ihres Browsers:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Registrierung</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Ihre Benutzerdaten:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Registrierung</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Passwort zurücksetzen</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klicken Sie hier, um ein neues Passwort einzugeben:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile Ihres Browsers:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Password Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Bitte geben Sie ein gültiges Datum an, zum Beispiel 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Bitte geben Sie eine gültige E-Mail an, zum Beispiel name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Bitte geben Sie eine Dezimalzahl an, zum Beispiel 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Bitte geben Sie eine Ganzzahl an, zum Beispiel 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Bitte geben Sie eine gültige Telefon-Nummer an, zum Beispiel ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Bitte geben Sie eine gültige Uhrzeit an, zum Beispiel 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Passwort geschützt</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Passwort</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Gültigkeit</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Immer</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Zeitspanne</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Einmalig</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Gültig ab:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Gültig bis:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Einladung für diese Konferenz</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Keine Einladung für diesen Code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Die Einladung ist nicht mehr gültig.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Die Einladung ist nicht mehr gültig.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Passwort:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Überprüfen Sie das Passwort</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Falsches Passwort!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Ton/Video neu starten</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Sitzung abgelaufen oder ungültig.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId ist nicht eingeloggt oder hat keine Administratorrechte. Das SOAP Gateway benötigt einen Benutzer mit Admin-Rechten um einen neuen Nutzer einzubetten.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Diese Sitzung steht mit keiner Remoteuser-Data in Verbindung. Entweder haben Sie das SOAP-Gateway vor dem Zugriff auf die Anwendung nicht gerufen oder Sie benutzen die falsche Sitzungs-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Die Aufnahme von Meetings ist noch Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-Achse</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-Achse</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>Breite</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>Höhe</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Transparenz ändern</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser offen</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser geschlossen</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Die Verbindung zum Server ist abgebrochen. Prüfen Sie ihre Netzwerk-Verbindung und starten Sie die Anwendung neu.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronisiere</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchroniziere Benutzer, bitte warten Sie</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download als SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download als PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download als JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download als PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download als TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Erinnerung</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategorie</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Wiederholung</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>Keine</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Ort:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Ende</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titel:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Kommentar:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Jemanden einladen</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>täglich</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>monatlich</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>jährlich</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Terminstart muss vor Terminende liegen!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Bitte geben Sie einen Titel an!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktivieren Sie die falls es sich um eine Eingabe einer Rechts-Nach-Links Sprache (arabisch, persich, hebräisch) handelt.</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Start</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Aufgenommene Konferenzen betrachten</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Machen Sie eine Konferenz&lt;br/&gt;</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Benutzer, Konfiguration und Verwaltung</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Benutzer in diesem Raum</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Einloggen</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Lade Dokument. Bitte warten Sie bis alle Benutzer synchonisiert wurden.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Dokument hochgeladen. Konvertiere ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Starte Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Hochladen und importieren. Bitte wählen Sie eine Datei aus.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Abbrechen</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Datei auswählen</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Verbindungen</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Wert</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Verbunden seit</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Raum / Bereich</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Ausloggen</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Benutzeranbindung ausloggen</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Wollen Sie diesen Benutzer wirklich von dieser Verbingung ausschließen?&lt;br/&gt; Diese Maßnahme entfernt den Benutzer lediglich aus dem Raum. Der Benutzer kann sich wieder einloggen.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Ihre Sitzung wurde beendet.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Benutzer ist Moderator dieses Raumes.</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Benutzer darf nicht auf dem Zeichenbrett zeichnen</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Neu starten von Ton/Video oder Einstellungen ändern</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Diesem Benutzer den Zugang zum Zeichenbrett gewähren.</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Diesem Benutzer den Zugang zum Zeichenbrett verwehren.</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Benutzer</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Dateien</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Zeichenbrett</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Ihr Benutzer-Profil ist Mitglied in mehreren Organisationen. Bitte wählen Sie eine für diese Sitzung.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Der Raum ist im Moment voll. Bitte versuchen Sie es später noch einmal.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Raumtyp</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Termin Raum</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Zeit</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Erinnerung</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Nachricht von Benutzer:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Nachricht:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klicken Sie auf diesen Link um in den Raum zu gelangen [Der Link funktioniert erst 15 Minuten vor dem Meeting!]:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klicken Sie hier</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Wenn der Link fehlerhaft dargestellt wird, kopieren Sie bitte folgenden Link in die Adresszeile Ihres Browsers:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Suche intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Externe Benutzer eingeben</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Vorname</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Abmeldung bestätigen</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Wollen Sie sich wirklich ausloggen?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Aktionen</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demoraum</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Zeit</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Zeitmesser</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Dies ist ein Demo-Raum. Um diesen Hinweis abzuschalten sollten Sie entweder einen privaten Meeting-Raum für Ihren persönlichen Zweck aufsuchen oder Ihren eigenen Server anlegen. Sie werden automatisch ausgeloggt in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderiert</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Bitte warten Sie bis der Moderator den Raum betreten hat. Der Moderator kann ein Lehrer, ein Administrator oder der Erschaffer dieses Raumes sein.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Einkommende Bildteilung</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Es gibt eine neue ankommende Bildteilung vom Benutzer:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Beginne Teilung</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Füge ein neues Meeting hinzu</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Raum</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Raum</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderiere Benutzer</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderiere Räume</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Wollen Sie diesen Benutzer zum Moderator der Organisation ernennen?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Bitte wählen Sie zuerst die Organisation aus bevor Sie einen Benutzer hinzufügen wollen!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Wollen Sie diesen Benutzer aus der Organisation wirklich löschen?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Dieser Benutzer ist ein Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Dieser Benutzer ist kein Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Wollen Sie diesem Benutzer die Funktion des Moderators entziehen?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Räume innerhalb der Organisation hinzufügen oder löschen</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Wollen Sie diese Aufnahme wirklich löschen?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Wollen Sie diesen Benutzer aus Ihrer Organisation wirklich löschen? Sie werden nur die Verbindung zwischen dem Benutzer und Ihrer Organisation löschen können, um den Benutzer wirklich zu löschen brauchen Sie Administrator-Rechte.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Sie können Ihren eigenen Nutzeraccount nicht löschen!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Diese Methode benötigt ein Administrator-Account um aufgerufen zu werden.</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Es ist keine Sitzung mit dieser ID verbungen.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Dies ist ein Administrator- oder Moderator-Account. Dieses Account können Sie nur mittels eines Administrator-Tableau bearbeiten.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Um Ihre Registration abzuschließen klicken Sie bitte auf den folgenden Link. Oder kopieren Sie die URL(Link) in Ihre Browser-Adressleiste.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klicken Sie um Ihre E-Mail zu bestätigen</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Es wurde kein Benutzer für diesen Hash gefunden.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Dieser Benutzer ist bereits aktiviert!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Sie haben Ihr Account erfolgreich aktiviert!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Jetzt einloggen</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Ihr Account ist nicht aktiviert. Benutzen Sie zuerst den Link in der E-Mail die Sie während der Registrierung erhalten haben.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Sie haben sich erfolgreich angemeldet. Wir haben eine E-Mail mit einem Verifizierungscode an Ihre E-Mail-Adresse geschickt. Bitte überprüfen Sie Ihren Posteingang.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Diesem Benutzer die Moderationsrechte entziehen.</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Diesem Benutzer Moderatoionsrechte übertragen</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Benutzer</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Zugang zum Zeichenbrett</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Wählen Sie einen Benutzer aus der Liste um ihm den Zugriff auf Zeichenbrett, Moderation oder Video zu ermöglichen.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Dieser Benutzer ist bereits Moderator. Er hat automatisch das Recht zu zeichnen.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Das sind Sie! Sie können Ihre eigenen Moderatorrechte nicht entfernen.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Erlaube diesem Benutzer sein Video/ Audio zu veröffentlichen</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Audio/Video von diesem Benutzer entfernen</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Ich würde gerne die Moderation dieses Raumes übernehmen.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Ich würde gerne auf dem Zeichenbrett zeichnen.</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Ich würde gerne mein Audio/Video mit anderen teilen</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Sie sind der Moderator dieses Raumes</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Ihnen ist es erlaubt, auf dem Zeichenbrett zu zeichnen</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Ihnen ist es erlaubt, Ihr Audio/Video mit anderen zu teilen</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Nachricht an den Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Der Benutzer</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>würde gerne die Moderation übernehmen.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>würde gerne auf dem Zeichenbrett zeichnen.</value>
+  </string>
+  <string id="695" name="695">
+    <value>würde gerne sein Audio/Video mit anderen teilen.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Sie müssen warten bis der Moderator den Raum betritt.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Abbruch</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Speichern</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Tag</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Monat</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Jahr</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Datei hochladen</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Aktualisieren</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Papierkorb (Ziehen Sie eine Datei mit der Maus hierher)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Meine Dateien (persönliches Laufwerk)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Konferenzdokumente (öffentliches Laufwerk)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Datei hinzufügen</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Ordner löschen</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Name bearbeiten</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Neuer Ordner</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Sind Sie sicher, dass Sie dieses Element löschen wollen?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Suche</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Suche</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Dokument öffnen</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Zeige alle Dateien (Baum Ansicht)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Dokument schließen</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Datei löschen</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Es ist Ihnen nicht gestattet auf dem Zeichenbrett zu zeichnen. Sie müssen Moderator sein oder zumindest das Recht besitzen das Zeichenbrett zu bearbeiten. Sie können den Moderator nach den Rechten fragen.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Dokumenteigenschaften</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Starte Client (extern)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Starte Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Ein Benutzer will seinen Desktop freigeben. Wollen Sie ihn sehen?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Sie haben ihren Desktop freigegeben. Wenn Sie die Freigabe beenden wollen drücken Sie die Anhalten-Schaltfläche im Desktop Sharer.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Geteilte Sitzung</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Sie haben Ihren Desktop bereits freigegeben!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop-Betrachter</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Beenden</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop-Teiler</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Drücken Sie Start, um ihren Desktop freizugeben</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Anhalten</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Wählen Sie einen Bildschirmbereich aus:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Breite ändern</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Die Freigabe wurde beendet!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Höhe ändern</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Abstand</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Abstand</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Breite:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Höhe:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Die Verbindung wurde vom Server abgebrochen.</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Abbrechen</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Extern starten</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Wenn Sie diese Session schließen, können Sie die Session nicht wieder starten.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Sitzung wirklich schließen?</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Bildschirm teilen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Sitzung aufnehmen</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Geteiltes surfen</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Upsa, ... Firefox unter Windows ist nicht in der Lage, mangelfreies Co-Browsing zu gewährleisten. Bitte benutzen Sie einen anderen Browser um die Co-Browsing-Funktion zu nutzen.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Vorherige</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Nächste</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Nachladen</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Heim</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Laden</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Diese Webseite als vorgegebene Webseite zu meinem Profil hinzufügen.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Teste Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Überprüfen Sie Ihre Mikrofon- und Kameraeinstellungen bevor Sie einen Raum betreten und Aufzeichnungen durchführen. Sie können Ihre Aufnahmen im Nachhinein abspielen.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Dieses Fenster nicht wieder anzeigen</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Abbrechen</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Beginne Konferenz</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Nicht wieder fragen</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>Aufnahme</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>Abspielen</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Sie können auch ohne einen Test fortfahren, falls Sie beabsichtigen Ihre Stimme oder Ihr Bild nicht zu veröffentlichen. Kursteilnehmer ohne Video oder Audio können dennoch das Zeichenbrett benutzen, ihren Desktop mit anderen teilen oder am Chat teilnehmen.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>Stop</value>
+  </string>
+  <string id="767" name="767">
+    <value>Lautstärke</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Start drücken</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Konferenz starten</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Event starten</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Raum wählen</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Prüfe Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Starte Konferenz</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Wie starte ich eine Konferenz</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Starte Aufnahme</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Audio-/Video-Test (Aufnahme) vor dem Betreten einer Konferenz nicht zeigen</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Öffentliche Räume</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Öffentliche Räume können von allen Benutzern benutzt werden.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Gruppenräume</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Räume sind nur für Benutzer in der selben Organisation verfügbar.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Private Räume</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Räume in diesem Bereich sind für den persönlichen Bedarf. Die Räume haben ein Start und Enddatum und stehen nur in diesem Zeitraum zur Verfügung.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Sie müssen Moderator sein, um diese Aktion auszuführen.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Moderation beantragen</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Zeichenbrett beantragen</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>WebCam/Mikrofon beantragen</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Dieser SessionHasgh wird bereits genutzt. Er kann nicht zweifach vergeben werden.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Wollen Sie die Konferenz wirklich verlassen? Vielleicht sollten Sie zuerst Dokumente, Zeichenbrett und Chat History leeren. Andernfalls werden die Dateien einfach in diesem Raum bis zu Ihrem nächsten Besuch bleiben.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Konferenz beenden</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Räume</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Wählen Sie einen Raum für die Konferenz aus</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Es ist ein nicht gespeichertes Event im Kalender. Speichern Sie es oder löschen Sie es wieder.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Bitte fügen Sie mindestens einen Teilnehmer zum Event.</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Soll dieses Event wirklich aus dem Kalender gelöscht werden?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warnung</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Neues Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Tag</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Woche</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Monat</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Beschreibung</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, Ihre Web Konferenz Plattform. Entweder starten Sie sofort ein Meeting indem Sie den 1-2-3 Anweisungen folgen oder Sie benutzen "Meetings planen" um eine Konferenz zu planen.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Konferenz planen</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Um eine Konferenz zu planen können Sie einen Event im Kalender hinzufügen.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Brauchen Sie Hilfe?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Webinar</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Suche</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Ok</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Es ist kein Benutzer ausgewählt. Wählen Sie zuerst einen Benutzer und drücken dann Ok.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Teilnehmer hinzufügen</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Speichern</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Löschen</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderatoren</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Neuen Default-Moderator hinzufügen</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Ist Super-Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>In einem moderierten Raum sind Nutzer mit den Rollen Level-Moderator oder Administrator beim Betreten des Raums automatisch Moderatoren. Um dies abzuschalten, verwenden Sie die Funktion Default-Moderator.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Der Super-Moderator ist beim Betreten eines Raums immer Moderator. Das Recht kann ihm im Raum nicht genommen werden.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Nutzer Super-Moderatorrechte zuweisen</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Nutzer Super-Moderatorrechte aberkennen</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Wenn eine Organisation einen Raum zugewiesen wird, haben nur Mitglieder der Organisation Zugang. (Dies gilt nur wenn die Einstellung isPublic auf false gesetzt wurde!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Begrenzungen</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisation</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Sind Sie sicher?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Wirklich löschen? Diese Aktion kann nicht wiederufen werden.</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Es wurde kein Nutzer ausgewählt. Bitte erst auswählen, um ihn hinzuzufügen!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Neuen Default-Moderator hinzufügen</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Soll dieser Nutzer Super-Moderation werden? Super-Moderatorenrechte können nicht gelöscht werden. Zum Speichern der Einstellungen muss das Raumobjekt gespeichert werden!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Sollen die Super-Moderatorenrechte für diesen Nutzer aufgehoben werden? Zum Speichern der Einstellungen muss das Raumobjekt gespeichert werden!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Dies ist ein Super-Moderator. Sie können die Moderationsrechte dem Nutzer nicht entziehen!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Wollen Sie wirklich diese Datei oder Ordner löschen?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Datei/Ordner löschen?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Fräulein</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Einstellungen</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Teilnehmern Mauszeiger anzeigen</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Audio mit SIP Applet übertragen</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Audio mit SIP aud Video mit Flash übertragen</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Vollformat</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Bildschirm zeigen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>Der Nutzer</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>möchte den Bildschirm übertragen. Wollen Sie ihn sehen?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Schließen</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Die Sitzung wurde vom übertragenden Nutzer geschlossen!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Neuer Desktop verfügbar</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimieren</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximieren</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Video Zeitspur</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Meine Aufnahmen</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Öffentliche Aufnahmen</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Länge</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Datum</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Von</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Haupt - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Aufnahmen</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Sie können gleichzeitig ihren Bildschirm teilen ode die komplette Session aufnehmen. Wenn Sie nur den Bildschirm teilen wollen genügt esauf Start zu drücken. Die fertige Aufnahme befindet sich bei den anderen Aufnahmen im öffentlichen Ordner.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Aufnahme starten</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Aufnahme stoppen</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download FLV-Datei</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Raum</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Abspielen</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stopp</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Teilnehmer hat das Mikrofon an</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Bildschirm teilen stoppen</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Benutzerfragen erlauben</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Wenn Sie diese Option aktivieren ist die Schaltfläche zum beantragen der Moderation für andere Teilnehmer nicht sichtbar und Sie werden nicht in ihrem Vortrag gestört.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rechte</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Nur Audio nur</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Es gab Fehler beim Verarbeiten der Aufzeichnung.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>Die Aufzeichnung ist noch nicht zur Wiedergabe bereit. Versuchen Sie es in einigen Minuten erneut.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Nachricht</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet ist nicht bereit</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Einstellungen</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP Einstellungen für jeden Nutzer. De-Aktivieren Sie SIP über Administration &gt; Konfiguration (Key: enable_sip). Die SIP Daten für jeden Nutzer sollten automatisch generiert werden. Sie können diese neu erstellen lassen über die Funktion "Re-Generate/Wieder Herstellen der SIP Daten"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-Nutzer</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Passwort</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>Der Login zum SIP Gateway ist fehlgeschlagen. Prüfen Sie die Authentifizierungsdaten zum SIP-Provider und die SIP-Account Daten für jeden Nutzer. Als Administrator können Sie sich enloggen und die Konfiguration überprüfen. Nur Nutzer und Moderatoren sind derzeit von den Aktionen ausgeschlossen.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>Der Login zum SIP Gateway ist fehlgeschlagen. Kontakten Sie das SerrviceTeam.</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Am SIP-Gateway einloggen...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Am SIP-Gateway einloggen ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Log anzeigen</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log-Mitteilungen früherer Aufzeichnungen</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Mitteilungen</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>Das SIP-Applet ist nicht bereit. Applet bitte bestätigen und dann 'OK' klicken.</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Moderation bekommen</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Terminänderungen speichern</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>Der Termin wurde geändert. Wollen Sie die Änderungen nun speichern? &lt;br/&gt;&lt;br/&gt;Alle Teilnehmer des Termins erhalten nun eine Benachrichtigung per E-Mail mit den neuen Daten (abhängig vom Benachrichtigungstyp).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Zugriff zu anderen Aufzeichnungen über $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Nutzer für dieses Video auswählen</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Verfügbare Nutzer für dieses Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Sie sind Moderator dieses Interview. Sie legen die Sprecher fest und können die Aufzeichnung starten und stoppen.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Aufzeichnung starten</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Aufzeichnung stoppen</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>Die Interviewaufzeichung wurde bereits gestartet.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>Die Aufzeichung wurde bereits gestoppt oder noch nicht gestartet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>Die Aufzeichnung des Interviews wurde bereits gestartet.</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Abbrechen</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>Die Nachbearbeitung eines Interview benötigt fünf Minuten für jede aufgezeichnete Minute. Die Anzeige zeigt den Fortschritt:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Sie müssen das Passwort erneut eingeben, um SIP Daten automatisch zu erzeugen.</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>SIP Daten neu erzeugen</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Sie können die Datei oder Ordner nicht in einen eigenen Unterordner verschieben.</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Größe Homeverzeichnis</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Größe öffentliches Verzeichnis</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Lizenzeinstellungen</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>Mit der Lizenzaktivierung können Sie ein Ablaufdatum oder eine Höchstnutzungszeit (Minuten) für Nutzer festlegen.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Lizenz prüfen</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Ablaufdatum</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Verbrauchte Sekunden</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Gesamtzeit</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Ihre Lizenz ist abgelaufen. Sie können weitere Minuten ((Pay-per-minute) oder eine Flatate erwerben.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click-and-buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Restzeit für Account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Nutzerlizenzinformation</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Schließen</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Ihre Lizenz ist abgelaufen. Sie können weitere Minuten ((Pay-per-minute) oder eine Flatate erwerben.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Lizenzeinstellungen</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Sie können entweder Nutzungszeit für Webkonferenzen (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; oder eine Volumenflatrate für 3-12 Monate erwerben. &lt;br/&gt;&lt;br/&gt;Der Versand von Einladungen mit direktem Link zum Konferenzraum oder dasErstellen von Konferenzräumen mittels Kalender für externe Nutzer ist nur mit einer Volumenflatrate zulässig.</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>60 Minuten 9,99 EURO (16 Cent pro Minute) kaufen</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>5 Stunden 19,99 EURO (6 Cent pro Minute) kaufen</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>3 Monate für 29,99 EURO (9,99 Euro pro Monat) kaufen</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>6 Monate fürr 39,99 EURO (6,66 Euro pro Monat) kaufen</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volumenflatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>Sie haben eine unbegrenzte Lizenz</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Ablaufdatum Ihrer Lizenz:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>Sie nutzen das Pay-per-minute-Modell. Sie haben noch:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Neue einkaufen!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Wollen Sie einen eigenen Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Sie wünschen $APP_NAME als eigenständige Installation oder integriert in Moodle, SugarCRM, Website oder Intranet? Beginnen Sie ab 500 Euro.</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Oder senden Sie uns eine Nachricht</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Antwort an:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Nachricht:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Senden</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Kontaktinformationen und Preise? Klicken Sie hier</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Kreditkartendetails</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Vorname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Nachname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Kreditkartentyp</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Karte</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Kreditkartennummer</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Ablaufdatum</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Kartenprüfnummer</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Rechnungsanschrift</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Adresse</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Stadt</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Land</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Staat (nur US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>PLZ</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Betrag</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Abschicken</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Schritt 1: $APP_NAME - Zahlungsformular</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>E-Mail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Klicken Sie auf "Zahlen mit Paypal".&lt;br/&gt; Paypal akzeptiert VISA, MasterCard, Discover oder American Express. &lt;br/&gt;Sie müssen sich dazu nicht bei Paypal registrieren. &lt;br/&gt;Nutzer aus Deutschland können auch per Lastschrift-Einzug zahlen.</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Vielen Dank für Ihren Einkauf von $APP_NAME. &lt;br/&gt; &lt;br/&gt; Sobald die Zahlung bei uns eingetroffen ist wird Ihr Account aktualisiert.&lt;br/&gt; Sie erhalten eine E-Mail mit Ihrer Rechnung als PDF.&lt;br/&gt;Die aktuelle und frühere Transaktionen sind in Ihren Profileinstellungen dokumentiert.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sie können dieses browserfenster/den Tab nun schließen und zu $APP_NAME zurückkehren.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Abschicken Kauf bestätigen.</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Schritt: $APP_NAME Bezahlung - Bestellung prüfen und kaufen.</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Zahlung erhalten.</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Guten Tag,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value></value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Vielen Dank für die Nutzung von $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Zahlung erhalten $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Zahlungen und Transaktionsstatus</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transaktions-Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minuten</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Monate</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Rechnung</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Zum Versand von Einladungen oder zur Erstellung von Sitzungen über den Kalender benötigen Sie eine Volumenflatrate. Mit Pay-per-minute Tarifen können Sie selber das Angebot von $APP_NAME nutzen, nicht aber Dritte zur Teilnahme an einem Meeting einladen.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>Diese E-Mail-Adresse wird bereits durch einen anderen Nutzer verwandt.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Einstellungen</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>Die Konferenznummer und PIN ist automatisch über das OpenXG RPC-Gateway erstellt worden.</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Nummer</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Nur auf aktueller Seite löschen.</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Nur die URL der Statusanzeige wird an Teilnehmer versandt.</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Teamräume [Breakout session] erstellen</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Nutzer für neuen Teamraum auswählen</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Sie können nun Teilnehmer auswählen und für diese einen Konferenzraum (Teamraum) anlegen. Die ausgewählten Teilnehmer werden direkt in den Raum verschoben oder benachrichtigt. Moderateoren in den Teamräumen erhalten eine Liste ihrer aktuellen Räume, um zwischen diesen zu wechseln falls ein Moderator benötigt wird.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Nutzername</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Nutzer für neuen Teamrraum:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Teamraum anlegen</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Abbrechen</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Wählen Sie zumindest einen Nutzer für den Teamraum</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>In Team einfügen</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Aus Teamraum austragen</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>Nutzer hat Moderatorenrolle im Teamraum. Er ist zur Verwaltung des Teamraums berechtigt und kann Teilnehmer zulassen.</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Raumtyp</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Wenn Sie "Wechseln in neuen Teamraum erzwingen" anklicken erden alle Nutzer automatisch in diesen Raum übertragen. Andernfalls erhalten sie eine Benachrichtigung mit einem Button und &lt;i&gt;können&lt;/i&gt; wählen, ob sie in den neuen Raum wechseln wollen. Teammoderatoren haben immer die Wahl zu entscheiden,ob sie wechseln wollen.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Teamräume verwalten</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Als Teamraummoderator können Sie zwischen allen Räumen wechseln, denen Sie zugewiesen wurden. Teilnehmer in Teamräumen können Ihnen eine Nachricht senden, uz.B. um Sie zu bitten Ihnen behilflich zu sein. Sie können die Teamräume auch beschränken und Nutzer ausloggen.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Wechseln in neuen Teamraum erzwingen</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Erstellt</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Verfügbare Nutzer</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Mit Pluszeichen Nutzer hinzufügen; mit Kreuz austragen.</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1. Teamraumeinstellungen</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2. Nutzer zu Teamraum hinzufügen</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Titel Teamraum</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Teamraum</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>In Raum wechseln</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>In diesen Teamraum wechseln</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Teamraum schließen und alle Nutzer ausloggen</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Neuer Teamraum</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Ein neuer Teamraum wurde für Sie angelegt.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>In Teamraum wechseln</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Teamraumaktionen</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Sie können dieses Fenster erneut öffnen über das Hauptmenu &gt; Aktionen.</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Mitteilung an Teamraummoderator versenden</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Neuer Teamraum</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Ein neuer Teamraum steht zur Verfügung. Sie können nun in diesen Raum wechseln. Teamräume sind Bereiche für Arbeitsgruppen. Sie haben zusätzlich die Möglichkeit, einen Moderator um Hilfe zu bitten. Der Teamraum wird ihnen auch in der Übersicht "Meine Meetings" angezeigt.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>In Teamraum wechseln</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Erstelltvon:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Name des Teamraums:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Dieses Fenster bleibt offen auch wenn Sie den Teamraum verlassen.</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Nutzer dieses Teamraums</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3. Andere Teamräume auf die Sie Zugriff haben</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Teammoderator Nachricht senden. Nutzen Sie diese Möglichkeit falls Sie Hilfe benötigen oder eine Frage haben.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Senden</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2. Eingeladene Nutzer für diesen Teamraum</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>ist Teamraummoderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Alle vom Moderator eingeladenen Nutzer für diesen Teamraum.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>Zur Zeit ist kein Teammoderator eingeloggt.</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Bitte Nachricht eintragen</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Bitte helfen Sie uns. Wir haben ein Problem im Teamraum.</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>Ein Nutzer des Teamraums bittet Sie um Unterstützung.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Teamraum Unterstützungsanfrage</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Mitteilung:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>Von:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Sie befinden sich derzeit in keinem Teamraum. Von hier aus können Sie in jeden Teamraum wechseln auf den Sie Zugriff haben.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Systembackup. Das Backup schließt alle von Nutzern erzeugten Daten ein. Die Konfiguration wird nicht ins Backup einbezogen, da diese Daten mit der Systeminstallation erstellt werden. Zum Update des Systems exportieren Sie das alte System (1), installieren Sie das neue Systempaket in eine neue Datenbank (2) und imporieren Sie das Backup des alten Systems (3). Achten Sie darauf, das Backup vorzunehmen, bevor im neuen System neue Daten erzeugt werden.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Systembackup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Bildschirm teilen/Aufzeichnung Nutzern erlauben</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Bildschirm teilen/aufzeichnen Nutzern untersagen</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>Nutzer ist Moderator. Er kann alles tun.</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>möchte Bildschirm zeigen/aufzeichnen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Sie können den Bildschirm teilen /aufzeichnen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Anfrage zum Teilen/Aufzeichnen des Bildschirms.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Erlauben/untersagen Bildschirm zu teilen/aufzuzeichnen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Ton abschalten</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Ton anschalten</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Raum nur mit Audio</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Mit dieser Funktion erlauben Sie im Raum nur Audioübertragung und schalten Video ab. Dies kann sinnvoll sein, um Bandbreite zu reduzieren.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Remote Control erlauben (während Bildschirmübertragung)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Remote Control untersagen (während Bildschirmübertragung)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Remote Control Screen-Berechtigung anfragen (während Bildschirmübertragung)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>Sie sind berechtigt zu Remote Control Screen (während Übertragung)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>bittet um Zugriff auf remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>Nutzer ist Moderator. Er kann alles tun. [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Erlauben/untersagen Recht auf Remote Control Screen (Während Bildschirmübertragung)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1. Ihr PC an Remote-PC: Klicken Sie auf den Bildschirm um Text aus Zwischenablage in Remote Screen einzufügen. Machen Sie dann einen Rechtsklick im Textfeld und wählen 'Einfügen' im Kontextmenu&lt;br&gt;&lt;br&gt;2. Vom Remote PC auf Ihren PC: Um Text vom Remote PC auf ihren PC zu übertragen markieren Sie zunächst am Remote PC mit der Maus. Klicken sie dort mit der rechten Maustaste auf den Text und wählen Sie &lt;i&gt;Kopieren des markierten Texts&lt;/i&gt; im Kontextmenu. Auf Ihrem PC nutzen Sie die Funktion 'einfügen'.</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Kopieren und Einfügen von Text zwischen Remote PC und eigenem PC.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Kopieren des markierten Texts</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Kopieren und Einfügen</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Qualität der Übertragung:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Sehr hohe Qualität</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Hohe Qualität</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Mittlere Qualität</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Niedrige Qualität</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Tastatur:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Webinar beenden</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>Das Webinar ist bereits beendet. Weitere interessante Angebote befinden sich in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Raum schließen</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Ausgang (URL)</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Einstellungen für Raumbeschränkung (zeitlich)</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Wenn der Raum geschlossen wird, werden die Teilnehmer zum Ausgang (URL) geleitet.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>LDAP</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Configurationsdatei</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>LDAP Konfiguration</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Aktiviert</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Eingefügt</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Eingefügt von</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Aktualisiert</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Aktualisiert von</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>Die Konfigurationsdateien liegen im gleichen Ordner wie webapps/openmeetings/conf. Die Dateien müssen manuell in den Ordner kopiert werden. Änderungen an der Konfigurationsdatei sind direkt online wirksam.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Name der Konfigurationsdatei</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Wenn Sie "Domain zum Nutzernamen hinzufügen" aktivieren wird der Eingabe des Nutzers beim Login derim Feld 'Domain' hinterlegte Wert hinzugefügt. Dies ist sinnvoll wenn in einem LDAP System der Nutzer mit einer Domainangabe geführt wird. Beispiel. Der Nutzer gibt beim Login 'Hans' ein. Die Domain ist mit 'localhost.com' eingetragen. Im LDAP wird hans@localhost.com geprüft.</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Domain zum Nutzernamen hinzufügen</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Einfügen</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Markierten Text kopieren</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Text aus Remote Zwischenablage</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Remote Zwischenablage anzeigen</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Nicht noch einmal anzeigen</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Text hier einfügen ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>Sie benötigen Remote Control-Rechte (oder Moderationsrechte)um das kopieren und Enfügen auf dem Remote Screen auszuführen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Grundeinstellungen bearbeiten ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Infofeld zum Kopieren/Einfügen nicht in Remote Control anzeigen</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Speichern</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Entfernen</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Abbrechen</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Nutzer in Konferenzraum einladen</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Konferenzraum auswählen. Die eingeladenen Nutzer erhalten eine Nachricht mit Ihrem Namen und dem Link zum Raum.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Verbunden seit:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Nach Einladungsversand Raum betreten</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Einladen</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Nachricht</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>möchte Sie in den Konferenzraum einladen:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Einladung</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Einladung versenden</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>nimmt Ihre Einladung &lt;b&gt;nichtt&lt;/b&gt; an.</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Annehmen</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Ablehnen</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Zeitzone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Beschreibung</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Erstellt von</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Hinweis zur Zeitzone</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>"Hinweis zur Zeitzone" geben wenn Nutzer sich das nächste Mal einloggt, damit diese das Nutzerprofil aktualisieren.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Bitte prüfen Sie die eingestellte Zeitzone in Ihrem Nutzerprofil.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>Neue $APP_NAME Konferenz:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Ende:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>$APP_NAME Konferenz geändert:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organisation durch:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>$APP_NAME Konferenz abgesagt:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>Erinnerung an $APP_NAME Konferenz:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community-Einstellungen</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Kontaktdaten für alle sichtbar</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Interessenfelder eingeben, um ebenfalls interessierte Partner für Konferenz zu finden. Werte durch Komma trennen (z.B.: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Meine Angebote</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Meine Interessen</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Zeitzone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Interessenfelder</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Kontaktinformationen</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Meine Kontaktdaten nur persönlichen Kontakten anzeigen</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Niemanden meine Kontaktdaten anzeigen</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Mein Profil</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Einstellungen bearbeiten</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Nutzer suchen</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Profilvorschau</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Einstellungen bearbeiten; z.B: Interessen eingeben, um gefunden zu werden</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Andere Nutzer suchen und Netzwerk erweitern</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Suchen</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Nutzer bietet an</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Nutzer sucht</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freitext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Zeitzone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Angebote</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Gesuche</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Suchergebnis</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Aktionen</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Als Kontakt hinzufügen</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Nachricht senden</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Kontakte und Nachrichten</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Wartende Kontakte</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Akzeptiern</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Ablehnen</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Guten Tag,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>ich würde Sie gerne als Kontakt hinzufügen.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Prüfen Sie Ihre Kontaktanfragen in $APP_NAME oder klicken Sie auf die Links zum Akzeptieren oder Ablehnen der Anfragen.</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>Der Nutzer ist bereits in Ihrer Kontaktliste oder hat von Ihnen eine Benachrichtigung erhalten, die noch nicht beantwortet wurde.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Ihre Kontaktliste</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Kontakte und Nachrichten bearbeiten,&lt;br/&gt; wartende Kontakte bearbeiten</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>hat Sie als Kontakt bestätigt</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Chat Log anzeigen/kopieren</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>Von</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Thema</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Senden</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Nachrichten</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Neue Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Neue Nachricht an meine Kontakte schreiben</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Neue Nachricht schreiben</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>An:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Thema:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Vollansicht: das Whiteboard wird in der größtmöglichen Ansicht &lt;br/&gt; gezeigt. Darstellung ist abhängig von der&lt;br/&gt;Bildschirmauflösung der Nutzer.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Nutzer entfernen</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>Sie können sich nicht selbst aus dem Konferenzraum entfernen. Wenn Sie den Konferenzraum verlassen wollen, schließen Sie das Browserfenster oder nutzen Sie den Ausgang-Button.</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Wollen Sie den Nutzer tatsächlich aus diesem Konferenzraum entfernen?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Aktion bestätigen....</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>Sie können den Super-Moderator nicht aus dem Raum ausschließen</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Konferenzraum buchen</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Ende</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Erstellen Sie einen Konferenzraum und eine optionale Teilnahmeanfrage zum Meeting. Der Termin wird in die Kalender aller Teilnehmer eingetragen.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Eingang</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Gesendet</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Gelöscht</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>Sie können sich nicht selbst als Kontakt einfügen.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>Der Nutzer wurde bereits abgelehnt.</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>Der Nutzer wurde bereits bestätigt.</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>Nutzerkontakt Hash-Wert ist ungültig</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Nutzer wurde zu Kontaktliste hinzugefügt.</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>Kontakt für Nutzer abgelehnt und von Warteliste entfernt.</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>Kein Kontakt gefunden.</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Wollen Sie den Kontakt tatsächlich entfernen?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Kontakt entfernen bestätigen</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Kontakt von Liste entfernen</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Nutzerprofile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Nutzerprofile anzeigen</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Nachrichten</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Suche</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Alle auswählen</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Keine auswählen</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Ungelesene auswählen</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Gelesene auswählen</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>In Ordner verschieben ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Neuen Ordner anlegen ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Löschen</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Gelöschte Mails liegen im Papierkorb.</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Ungelesene markieren</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Gelesene markieren</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Antwort</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Antwort an alle</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Weiterleiten</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Aktionen ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Private Nachricht senden</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nichts ausgewählt</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>In Eingang verschieben</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Löschen (endgültig)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>Diese Aktion kann nicht rückgängig gemacht werden.</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Ordner hinzufügen und Nachrichten verwalten.</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Ordner hinzufügen</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Hinzufügen</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Ordner löschen</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>Löschen oder verschieben Sie erst die Nachrichten in dem Ordner. Danach kann der Ordner gelöscht werden.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Name bearbeiten</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Wollen Sie den Ordner wirklich löschen? Der Vorgang kann nicht rückgängig gemacht werden.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Ihre Anfrage wurde an den Nutzer gesandt. Er kann die Benachrichtigung annhmen oder ablehnen. Nur angenommene Anfragen erscheinen in Ihrer Kontaktliste.</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Nachricht</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>Der Nutzer veröffentlicht die persönlichen Kontaktdaten nicht.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>Der Nutzer zeigt die persönlichen Kontaktdaten nur seinen bestätigten Kontakten.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Adresse &amp; Telefon</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>Ihr Einladungscode ist ungültig. Er kann nur im angegebenen Zeitraum genutzt werden:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Der Termin ist in den Kalendern anderer Nutzer eingetragen. Die Änderungen werden auch dort vorgenommen. Wollen Sie den Termine wirklich aktualisieren?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Aktualisierung bestätigen</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Dieser Kontakt darfen meinen Kalender einsehen (nur Ansicht)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Kalender nicht veröffentlichen</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Kalender meiner Kontakte</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Erste wenn die Kontakte bestätigt wurden besteht Zugriff auf die Kalender.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Sie können nur in Ihrem eigenen Kalender Termine speichern oder löschen.</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Meinen eigenen Kalender anzeigen.</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Der Termin ist in den Kalendern anderer Nutzer eingetragen. Soll der Termin wirklich überall gelöscht werden?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Aktion bestätigen</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Raum betreten</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Zugang zum Konferenzraum</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>Ein Konferenzraum und Termin ist durch diese private Nachricht gebucht worden.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>DerTermin muß erst noch gespeichert werden.</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Der Termin und der gebuchte Raum wurden inzwischen gelöscht. Der Raum steht nicht zur Verfügung.</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Spitznamen wählen</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Vorname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Nachname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>E-Mail</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Mindestens 4 Zeichen für Vor- und Nachname eingeben.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Bitte geben Sie eine gültige Mail-Adresse ein.</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login mit Ihrem Facebook-Account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Mitglied seit</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Sie sind über Ihren Facebook-Account eingeloggt. Aktualisieren Sie in Ihrem Profil Ihre E-Mailadresse. Sie erhalten sonst keine Einladungen zu Sitzungen odr Nachrichten von Ihren Kontakten.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Nachricht</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Mitteilung zur Profilaktualisierung künftig nicht anzeigen.</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>weitere Anzeigemöglichkeiten ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Neue private Nachrichten:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Klicken Sie auf Ihr Profil um die ganze Nachricht zu sehen....</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Anworten</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Räume und Chat</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Meine Räume</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Mein Konferenzraum (für 1-16 Benutzer)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Mein Webinarraum (für 1-120 Benutzer)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Eigne ID</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Bitte Passwort eingeben</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Sie benötigen einen Nutzeraccount als Teilnehmer, Moderator oder Administrator</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (nur SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Direkt auf Whiteboard ablegen</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Soll dieses Whiteboard wirklich entfernt werden? Die Aktion kann nicht rückgängig gemacht werden.</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>In Whiteboard laden</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Vergessen Sie nicht die Aufzeichnung zu starten. Ein Nutzer des Raum muß die Aufzeichnung starten, damit diese anschließend zur Verfügung steht.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Aufzeichnung starten</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Pfeil</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Kreis</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Linie</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Rechteck</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Dreieck</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Notiz</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Frei Zeichnen</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Auswählen/Verschieben</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Form zeichnen</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Ausschneiden/verschieben</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Drucken</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Rückgängig</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Löschen</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Raster einfügen</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Datei bereitstellen</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Form auswählen</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Clipart auswählen</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Kopieren</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Ausschneide</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Einfügen</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Löschen</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Wollen Sie wirklich den gesamten Inhalt der Whiteboard löschen?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Direkt auf Whiteboard ablegen.</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Teilnehmer</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Teilnehmerverwaltung</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Anwesend</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Control</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Austragen</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Teilnehmer einladen</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>Per E-Mail</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>Nutzer ist Moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>Nutzer hat Webcam aktiviert</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Form ausfüllen deaktivieren</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Form ausfüllen aktivieren</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Einrasten</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Aufzeichnung erlauben</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Warten auf Aufzeichnung</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Topbar verbergen</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Video abspielen</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Wollen Sie wirklich den Inhalt der aktuellen Folie löschen?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Nutzerrechte akzeptieren/gewähren</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Ablehnen</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Aktivitäten und Aktionen</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Whiteboard entfernen</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Um Whiteboards zu entfernen benötigen Sie Moderations- oder Schreibrechte für die Whiteboards.</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Nicht erlaubt</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>hat den Raum verlassen.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Mathematische Zeichen</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Keine Kategorie</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Farbstil</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Qualität</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>besuche</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>rot-orange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mittel seegrün</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>stahlblau</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>hellstahlblau</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>rotgold</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silbergrau</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>nutzerdefiniert</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>beste</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>Upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>mittlere</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mikrofone für alle stumm schalten</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Mikrofone für alle aktivieren</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mikrofone für andere stumm schalten</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>Der Moderator hat ihr Mikrofon stumm geschaltet. Sie können dies nicht selber ändern.</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mikrofon für alle stumm schalten?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Wollen Sie Ihr Mikrofon wirklich stumm schalten? Niemand wird Sie dann hören können.</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mikrofon für alle stumm schalten?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Wollen Sie dieses Mikrofon wirklich stumm schalten? Sie hören danach den Nutzer nicht mehr. Dies hat keine Auswirkung ob andere Nutzer es noch hören. Nur Moderatoren können Mikrofone für alle abschalten.</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mikrofon für alle stumm schalten?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Wenn Sie dieses Mikrofon für alle stumm schalten wird kein Nutzer es mehr hören können.</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Ihr Ton ist aktiv. Klicken Sie hier, um dem Moderator eine Nachricht zu senden, Ihr Mikrofon für alle Nutzer im Konferenzraum stummzuschalten.</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Ihr Ton ist stummgeschaltet. Klicken Sie hier, um dem Moderator eine Nachricht zu senden, Ihr Mikrofon für alle Nutzer im Konferenzraum anzuschalten.</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>bittet den Moderator das eigene Mikrofon für alle Nutzer des Raums stummzuschalten.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>bittet den Moderator das eigene Mikrofon für alle Nutzer des Raums anzuschalten.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>bittet den Moderator sein/ihr Mikrofon anzuschalten.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>bittet den Moderator sein/ihr Mikrofon stummzuschalten.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Mikrofon anschalten. Hier klicken, um das Mikrofon für alle Nutzer des Raums stummzuschalten.</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mikrofon stummschalten. Hier klicken, um das Mikrofon für alle Nutzer des Raums anzuschalten.</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>Mikrofon des Nutzers ist vom Moderator für alle stummgeschaltet. Sie können es nicht reaktivieren.</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mein Mikrofon für alle stummschalten.</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Mein Mikrofon für alle anschalten.</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mikrofon stummschalten</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Mikrofon anschalten</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mikrofon für alle abschalten</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Mikrofon für alle anschalten</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Nur Moderatoren können Mikrofone für alle an/abschalten. Sie können Ihr eigenes Mikrofon mit dem Mikrofon-Icon abschalten.</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Titel der Abstimmung</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Sie</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archivierte Abstimmungen</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>aktiv</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Einfache Grafik</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Tortengrafik</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Bitte geben Sie eine E-Mail-Adresse an</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Neue Nachricht(en)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Abstimmung schließen</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Wollen Sie die Abstimmung wirklich schließen? Danach kann sich niemand mehr beteiligen.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Abstimmung löschen</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Wollen Sie die Abstimmung wirklich löschen? Damit werden auch alle Ergebnisse gelöscht.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Sprache: ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Recht für exklusiven Audiozugriff vergeben/entziehen.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Nutzer erhält Recht für exklusives Audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Recht für exklusives Audio für Nutzer entziehen</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>bittet um Recht für exklusives Audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>bittet den Moderator darum ihm exklusives Audio-Recht zu geben.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Recht für exklusives Audio geben.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Kamera-Auflösung</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Die Kamera-Auflösung hat einen direkten Einfluss auf die verbrauchte Upload-Bandbreite!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>Sie verfügen nicht über das Recht sich selbst oder anderen exklusives Audiorecht zu geben. Sie können jedoch den Moderator bitten, Ihnen diese Berechtigung zuzuweisen.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Ich würde gerne das Recht auf exklusives Audio erhalten.</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Mir exklusives Rederecht geben (alternativ: klick auf Video Pod oder F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Mikrofon ist an</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Mikrofon ist abgeschaltet</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Chat verbergen</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Aktivitäten verbergen</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Dateiverwaltung verbergen</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Aktionenmenü verbergen</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Screen Sharing verbergen</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Whiteboard verbergen</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Mikrofonstatus in Video anzeigen</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout Optionen</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Neuer Termin</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Passwortgeschützt ist nicht der Raum sondern die Einladungen die an die Teilnehmer verschickt werden! D.h. wenn Sie einen Termin mehrmals mit unterschiedlichem Passwort speichern wird jedesmal ein Link per mail zum Konferenzraum an alle Teilnehmer verschickt mit dem jeweiligem Passwort. Bereits versendete Einladungen funktionieren weiterhin!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Termin ändern</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Zeige sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Anrufen</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Zeige Kalender Einträge</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Startseite</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Ihr Terminkalender</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Aufnahmen ansehen und verwalten</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Konferenzraum beitreten</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Benutzerrechte verwalten</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Verbindungen verwalten</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Benutzergruppen verwalten</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Konferenzräume verwalten</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>System-Einstellungen verwalten</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Sprachen verwalten</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>LDAP und ADS Konfiguration</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import von Systemsicherungen</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Sie verfügen nicht über die erforderlichen Berechtigungen für diese Funktion</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Text bearbeiten</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Veröffentlichen</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduzieren Sie die Breite des Sharing-Screens, bevor Sie versuchen ihn nach links zu verschieben.</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduzieren Sie die Höhe des Sharing-Screens, bevor Sie versuchen ihn nach unten zu verschieben,</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduzieren Sie x des Sharing-Screens, bevor Sie versuchen ihn zu erweitern weiter,</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduzieren Sie y des Sharing-Screens, bevor Sie versuchen die Höhe zu verändern.</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Tragen Sie hier die Einstellungen zu Ihren Bildschirmdaten für Drittanbeiter wie justin.tv ein</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Bitte starten Sie Screen-Sharing, um in der Lage zu sein, ihn zu veröffentlichen</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator Berechtigung erforderliche, um die Aufnahme zu starten</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>Sie haben keine Berechtigung, um jedem Teilnehmer Audio-Rechte zu gewähren. Sie müssen Rolle Moderator besitzen oder das Recht Audio für jedes Mikrofon einzuschalten.</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>neue Datei in Datei-Explorer hochladen</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Öffne neuen Dialog mit Sharing-Einstellungen</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Ein existierender Moderator muss dies genehmigen</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Fragen Sie den Moderator, um Ihr/e Webcam/Mikro zu teilen</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Feedback sammeln, indem sie eine Umfrage starten</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Vergangene und gegenwärtige Umfrage-Ergebnisse als Diagramme</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Stimmen Sie ab, wenn es eine Umfrage für diesen Konferenzraum gibt</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Bearbeiten der Webcam und Mikrofon-Einstellungen</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Bestätigen und verlassen des Raumes</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Rufen Sie externe Personen über VoIP/SIP an</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Senden Sie eine E-Mail mit einem direkten Link zu diesem Raum</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Ändern Sie Ihre Whiteboard-Einstellungen</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Maximal Upload-Größe</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Fragen Sie den Moderator, um Ihr Whiteboard teilen</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Alle</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>Sie können nicht mit sichselbst einen privaten Chat starten.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Sie haben bereits einen privaten Chat mit diesem Teilnehmer gestartet.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Wollen Sie wirklich diesen privaten Chat löschen?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Server</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Beteiligten Server im Cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server-Addresse</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server-Details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Sende SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Veröffentlichen. Nutzer:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Um Zeit und Internet-Verkehr sparen, können Sie den Befehl admin für Backup/Wiederherstellen/Aktualisieren verwenden. &lt;ol&gt; &lt;li&gt;Gehen sie zum OM-Installationspfad (z.b. /opt/red5)&lt;/li&gt; &lt;li&gt;Stopen Sie OM (z.b. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/heute_om_backup.zip (Backup vom bestehenden OM erstellen)&lt;/li&gt; &lt;li&gt;Laden Sie die neue Version OM herunter&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (kopieren Sie die existierende OM-Version für den Fall :))&lt;/li&gt; &lt;li&gt;Entpacken Sie die heruntergeladene OM-Version nach /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/heute_om_backup.zip (or './admin.sh -i -file ~/heute_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass', für den Fall, dass Sie eine Nicht-Standard-DB verwenden)&lt;/li&gt; &lt;li&gt;Starten Sie OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>gemeinsame Räume für alle Benutzer</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>gemeinsame Räume für die aktuelle Benutzer-Gruppe</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Räume des aktuellen Benutzers</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Erstellen/Ändern Termin spezieller Raum</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Sie können mehrere Adressen im folgenden Format angeben: vorname1 nachname1 &lt;email1&gt;,"vorname2 nachname2" &lt;email2&gt;,'vorname nachname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Stream-Volumen anpassen</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Mikrofon-Volumen anpassen</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Chat ist moderiert</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Erlaube Nachrichten</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat-Feld standardmäßig geöffnet</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Dateien-Fenster standardmäßig geöffnet</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>letzter ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Jeder Slave sendet alle 3 Sekunden einen Ping an den Master (konfigurierbar). Der lastPing des Slave muss kleiner sein als 1 Minute, so dass der Master den Slave verwendet.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>Benutzer (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Passwort</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapplikations-Pfad</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protokoll</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>ping läuft</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>URL generieren</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Netzwerk testen</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auswahl Interview Video Pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>unterstreichen</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Schriftart</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Schriftarten erlauben</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Schriftfarbe</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Session-Statistiken anzeigen</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Details zur Session</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System Import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>beinhaltet hochgeladene Dateien und Aufnahmen im Backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Aktivieren Sie SIP-Verkehr im Raum</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Wollen Sie wirklich diesem Benutzer exklusive Audiorechte geben?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/dutch.xml b/src/main/webapp/languages/dutch.xml
new file mode 100644
index 0000000..5a8809d
--- /dev/null
+++ b/src/main/webapp/languages/dutch.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Overleg</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Afspraak</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Evenementen</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Instellingen</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profiel</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Beheer</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Opnemen</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Geen bestand beschikbaar</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Opnamen door Presentator</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Aanwezige gebruikers:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Start een overleg</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mijn Naam</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Video Overleg</value>
+  </string>
+  <string id="15" name="import">
+    <value>Bestand Importeren</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Lijst vernieuwen</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Naar hoofd bestand</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>nieuwe stembus</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Een nieuwe stembus.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Vraag:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Soort stembus:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Aanmaken</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Informatie: Iedere gebruiker krijgt een bericht over de stembus.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Stembus aanmaken</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Annuleren</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ja/Nee</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Getal 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Stembus</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Je moet een organisator zijn om een vraag aan te maken</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Jouw stem is geregistreerd.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Je hebt al gestemd op deze stembus.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Stem!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Jouw Antwoord:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ja</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nee</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Wil weten:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Stembus resultaat</value>
+  </string>
+  <string id="38" name="question">
+    <value>Vraag:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultaat:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Antwoorden:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Er is geen stembus.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Stem!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Overleg (max 4 plekken)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Overleg (max 50 plekken)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Soort</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Andere plekken</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Reeds gekozen</value>
+  </string>
+  <string id="48" name="enter">
+    <value>deelnemen</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>De organisator heeft het overleg verlaten.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systeem informatie</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Gekozen apparaat</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Gekozen webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Gekozen microfoon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Annuleren</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Je moet opnieuw verbinding maken.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Wijzig instellingen.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Cursus:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Taal:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Annuleren</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Tekenbord schoonmaken</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Wil je dat het tekenbord schoon wordt gemaakt bij het toevoegen van een nieuw plaatje?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Niet weer vragen</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nee</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Wijzig instellingen</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Bevestiging vragen voor het schoonmaken van het tekenbord.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Gebruikers Informatie</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Tekenbord schoonmaken</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Ongedaan maken</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Opnieuw maken</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Selecteer een object</value>
+  </string>
+  <string id="73" name="text">
+    <value>Tekst</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Verf</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Lijn Trekken</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Onderstrepen</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rechthoek</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Pijl</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Verwijder het geselecteerde object</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Toepassen voor aanpassing</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Toepassen</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Annuleren</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Organisator worden</value>
+  </string>
+  <string id="85" name="close">
+    <value>Afsluiten</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>bold</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>WACHTEN</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Een gebruiker wil organisator worden, je kunt hem toegang geven tot het whiteboard of ook organisator maken. Gebruiker:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Accepteren</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Afwijzen</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Annuleren</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Verstuur verzoek naar de volgende gebruikers</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Geaccepteerd</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Afgewezen</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Verander organisator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Je bent geen organisator!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Organisator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Dit overleg is vol. Probeer het later nogmaals.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Sluiten</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>input data foutmelding</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Gebruikersnaam moet minimaal 4 karakters zijn en is hoofdletter gevoelig!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Wachtwoord moet minimaal 4 karakters zijn</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Deze gebruikersnaam is al gebruikt</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Dit e-mail adres is al geregistreerd</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Systeem fout neem contact op met een Systeem beheerder</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Inloggen</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Inlognaam/E-mail</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Wachtwoord</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Taal</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Inloggen</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Inschrijven</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Inlognaam</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Wachtwoord</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Nogmaals</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Voornaam</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Achternaam</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-mail</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Land</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registreer</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Annuleren</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Geen lid?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Start</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Gebruikers</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Groepen</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisaties</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Vergaderruimtes</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Openbaar</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisatie</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Deelnemen</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Inlognaam</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Wachtwoord</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Wachtwoord</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Voornaam</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Achternaam</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Geboortedatum</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Straat en nummer</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Postcode en Plaats</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Land</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Meer gegevens</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Gebruikersgegevens</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Opslaan</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Opslaan</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Loginnaam</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Voornaam</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Achternaam</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Volgende tonen</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Vorige tonen</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Verwijder</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Annuleren</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Verwijderen</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Toevoegen</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Vernieuwen</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Verwijderen</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Blokkeren</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Vrijgeven</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisatie(s)</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Sluiten</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Naam</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Gebruiker</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Organisator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Beheerder</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Toegangsniveau</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisatie</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Naam</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Organisatie toevoegen</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Organisatie toevoegen</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Annuleren</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Toevoegen</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Verwijder organisatie</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Gebruiker</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Gebruiker toevoegen</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Gebruiker verwijderen</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Gebruiker aan organisatie toevoegen</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Zoek gebruiker</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Zoek</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Gebruiker</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisatie</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Deelnemen</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Kamers</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Kamer</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Naam</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Openbaar</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisaties</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Kamers</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Naam</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Soort</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Openbaar</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Toelichting</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Opslaan en exporteren</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>laden</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Opslaan als</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Bestandsnaam</value>
+  </string>
+  <string id="201" name="files">
+    <value>bestandsnaam</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Annuleren</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Opslaan</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Foutmelding</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Laden</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objecten geladen</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Wachten op synchronisatie van gebruikers:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Laden van afbeelding</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Wachten op synchronisatie van gebruikers:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Tekenbord Leegmaken</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Tekenbord leegmaken, gegevens op tekenbord gaan verloren</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Bevestiging voor het laden van een bestand</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Uitnodiging versturen</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Verstuur uitnodiging</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Onderwerp</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>E-mail geadresseerde</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Bericht</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Verstuur</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>annuleren</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Verstuur</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Gebruikersgegevens</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Je naam voor dit overleg</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Naam</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Voornaam</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Achternaam</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Taal</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>deelnemen</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Laden</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Laden, even wachten aub!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Verkeerde wachtwoord</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Please enter two identical passwords with at least 6 characters</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Foutmelding</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Dit is geen geldig E-mail adres</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registratie Afgerond</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Je gebruikersaccount is nu aangemaakt. Je nu kunt inloggen.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Je kunt je scherm op dit moment niet delen. Iemand anders is al een scherm aan het delen.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Delen is verboden</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Delen van scherm</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Slechts netwerk: Synchronisatie van het scherm lukt niet. Als je deze melding vaker krijgt, kun je de beheerder vragen of hij de quality van beeld wil verminderen.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Scherm van:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Verf</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Bestanden</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Leden</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Orginele document downloaden</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>PDF document downloaden</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Zet presentatie op tekenbord</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Instellingen</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Verplaats dit object</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Verander de grote</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>van</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Na naar de eerste pagina</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ga naar de vorige pagina</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Na gaan de volgende pagina</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ga naar de laatste pagina</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Uitzoomen</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Inzoomen</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Dhr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Mevr.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Instellingen</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Instelling</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Instellingen</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Instelling</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Laatste update</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Bijwerkt door</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Toelichting</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Waarde</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>van</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Gebruikers</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>haal gebruiker uit organisatie</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>D</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Deze gebruiker zit al in deze organisatie.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Nieuws</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Snelkoppelingen</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Ga naar overleg</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Ga luisteren</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Help en Hulp</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Meld probleem!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>meer</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project Webside (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Inloggegevens onthouden</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Inhoud</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Mijn Start Pagina</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mijn geplande overleggen</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Mijn geplande evenementen</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Openbare overleggen</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Prive overleggen</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Openbare evenementen</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Prive evenementen</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Openbare inhoud</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Prive inhoud</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Persoonlijke inhoud</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Nakijken</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Nalaten kijken</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Stembussen</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Kies een bestand</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Instellingen</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Beeld/Geluid instellingen</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Tekenbord instellingen</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Verlaten</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Terug naar kamers</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Uitloggen</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Wachtwoord vergeten?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Wachtwoord opnieuw instellen</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Via E-mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Via inlognaam</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Je E-mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Je loginnaam</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Verstuur E-mail met een Link</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Dit E-mail adres is niet gevonden. Geeft E-mail adres waar ook het account mee gemaakt is.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Geeft inlognaam of E-mail adres</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Er is geen gebruiker met deze inlognaam</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Een E-mail met een link is naar je toegestuurd, controller je Postvak-In. Als je dan nog steeds niets hebt ontvangen bekijk je E-mail spam instellingen.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Foutmelding</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Bericht</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Er is geen gebruiker met deze gegevens.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Wachtwoord opnieuw instellen</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Inlognaam</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Verander wachtwoord</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>wachtwoord invoeren</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>wachtwoord opnieuw invoeren</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>De wachtwoorden zijn niet gelijk.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Minimaal 4 karakters en hoofdlettergevoelig!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Wachtwoord ingesteld. Je kunt nu inloggen.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Onbekende Foutmelding. Geef dit door aan de beheerder.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Inlognaam niet gevonden</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Verkeerd wachtwoord</value>
+  </string>
+  <string id="337" name="logout">
+    <value>U bent uitgelogd</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registratie is uitgezet.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Verkeerd E-mail adres</value>
+  </string>
+  <string id="340" name="registration">
+    <value>een bestand met deze naam is al aanwezig, kies een andere naam</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>bestandsnaam te kort</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Kan bestand niet opslaan</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Gebruiker toegevoegd. Account moet nog wel worden toegevoegd aan een organisatie.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nieuw item</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Geen veld gevonden met dit veld ID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Geen label gevonden voor dat veld.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Beheer authorisatie is vereist.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Taal Bewerker</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Taal</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label naam</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Label tekst</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Display tekst</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Label naam</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Label tekst</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Je hebt alleen het label verwijderd en niet het veld! Je kunt dit veld niet verwijderen omdat het gebruikt worden in andere talen.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Onjuist Label-ID. De 'FieldLanguagesvalues_Id' kan niet worden gevonden in de database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Je kunt alleen labels verwijderen en geen velden.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Exporteren</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Je moet opnieuw aanmelden om de veranderingen te zien.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Nieuwe taal toevoegen</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Taal verwijderen</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Nieuwe taal toevoegen</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Naam</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Taal toevoegen</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ga naar het begin</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>vorige</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>volgende</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ga naar de laatste</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Gebruiker spreekt (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Geluid aan/uit</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Systeem</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Jouw instellingen</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hallo,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Profiel bijwerken</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nieuw bericht:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Pasfoto uploaden</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Gebruikersdata exporteren</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Om per organisatie een backup te maken, moeten organisatie aanwezig zijn.</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Backup</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Backup een organisatie</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Backup</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Gebruikersdata importeren</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Restore</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Importeren</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exporteren naar XML - Deze bestanden kunnen gebruikt worden voor:&lt;br/&gt; - Bijdrage aan het project - Importeren in een ander systeem&lt;br/&gt; - Backup - Optimalisatie&lt;br/&gt; - Plaats het in de 'openmeeting/language' directory voor de volgende installatie</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Kies een taal bestand om te importeren. &lt;br/&gt;Opletten! Kies de juiste taal uit de selectie lijst! &lt;br/&gt;Het maakt niet uit wat de naam van het bestand is, &lt;br/&gt;het zal worden geimporteerd in deze taal!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importeren - kies een bestand</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Opslaan als</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Naam:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Toelichting:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Opslaan</value>
+  </string>
+  <string id="395" name="record">
+    <value>Opnames</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Opnames bekijken</value>
+  </string>
+  <string id="397" name="record">
+    <value>Opnames van openbare en prive kamers</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Gebruikers:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Aanwezig:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Active deelnemers:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>vernieuwen</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Dit overleg is vol. Probeer het later nogmaals.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Klik op een kamer voor meer informatie</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat met deelnemers:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Overleg:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Active deelnemers:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Vanaf:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Bekijk opname</value>
+  </string>
+  <string id="410" name="record">
+    <value>Duur:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Datum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Opname bekijken! Je kunt niets wijzigen. Dit is een opgenomen overleg!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Start deze opname</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Neem dit overleg op</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stop opname</value>
+  </string>
+  <string id="417" name="record">
+    <value>Opname:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Dit overleg wordt al opgenomen door een andere gebruiker!</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Opgenomen! Door gebruiker:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Annuleren</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>De opname wordt gestopt en wordt niet bewaard.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>hetvatten</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Sluit dit scherm en blijf opnemen</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Verander lijnkleur</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Kies een kleur</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Uizetten/Aanzetten lijnkleur</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Verander opvulkleur</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Uitzetten/Aanzetten opvulkleur</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Verander lijn dikte</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Afsluiten</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Verander lettertype</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Verwijder opname</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gast</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Door:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Naam</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Overleg</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Annuleren</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Naam</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Verwijder Server-Chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Verstuur bericht</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choose Published Devices</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Beeld en Geluid</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Alleen geluid</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Alleen beeld</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Geen beeld/geluid (pasfoto afbeelden)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Als er netwerk problemen zijn, kies dan voor pasfoto afbeelden. Je profiel pasfoto wordt hiervoor gebruikt.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>Ma</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>Di</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>Wo</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>Do</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>Vr</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>Za</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>Zo</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Maandag</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Dinsdag</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Woensdag</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Donderdag</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Vrijdag</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Zaterdag</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Zondag</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>WK</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalender Week</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januari</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Februari</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Maart</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mei</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Augustus</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalender</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Aantal Deelnemers</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Toon opmaak instellingen</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Breedte | Hoogte</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Beeld-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Organisator-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Tekenbord-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Aanzetten</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Breedte | Hoogte</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Bestanden, chat en deelnemers - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Aanzetten</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Breedte | Hoogte</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>De organisator heeft het overleg verlaten. Niemand is aan het presenteren. Je kunt organisator worden of wachten.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Er zijn deelnemers maar nog geen organisator. Je kunt Organisator worden of wachten.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Terugkoppeling $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Uitnodiging</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Bericht van gebruiker:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Bericht:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klik op deze link om deel te nemen aan dit overleg:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klik hier om deel te nemen aan dit overleg</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Als je problemen ondervindt met de link, kopieer en plak deze in een internet browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME registeren</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Je gebruikersgegevens:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Inlognaam:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Wachtwoord:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Registeren</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Wachtwoord Reset</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klik op deze link voor een nieuw wachtwoord:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klik hier voor een nieuw wachtwoord</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Als je problemen ondervindt met de link, kopieer en plak deze in een internet browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME wachtwoord reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Geef een juiste datum (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Geef een juist E-mail adres (voorbeeld naam@domein.nl)</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Geef een Float-Number (voorbeeld 1.00)</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Geef een Integer (voorbeeld 100)</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Geef een juist telefoonnummer (voorbeeld +31 0123 456789</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Geef een juiste tijd (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Beveiligd door wachtwoord</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Wachtwoord</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Geldigheidsduur</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Altijd</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Periode</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Eenmalig</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Geldig van:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Geldig tot:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Uitnodiging van $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Geen uitnodiging beschikbaar met deze code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Deze is uitnodiging is eenmalig en al eens gebruikt.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Deze uitnodigingscode is onjuist.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Wachtwoord:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Controleer wachtwoord</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Verkeerd wachtwoord!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Beeld_Geluid</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchronisatie van beeld en geluid</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>De recorder functie is Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-as</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-as</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>b</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>breedte</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>hoogte</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Verander doorzichtigheid</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Open browser</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Sluit browser</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>De is geen verbinding met de server meer. Start de applicatie opnieuw of controleer je netwerk verbinding.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Aanwijzer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronisatie</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Aan het synchroniseren. Even geduld aub</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Opslaan als SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Opslaan als PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Opslaan als JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Opslaan als PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Opslaan als TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Herinnering:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categorie:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Herhaling:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>Geen</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Lokatie:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Begin</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Einde</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Onderwerp:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Toelichting:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Gebruikers uitnodigen</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Dagelijks</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Maandelijks</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Jaarlijks</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Opmerking: Het einde van het overleg moet altijd later zijn dan het begin!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Geef een onderwerp!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RnL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Zet deze functie aan als je taal van Rechts naar Links wordt geschreven</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Instrumentenbord</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Bekijk opgenomen overleg of evenement</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Overleg - Organiseer een overleg met 4 tot 16 personen.&lt;br/&gt;Iedereen heeft mogelijkheid tot beeld en geluid.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Evenement - Organiseer een overleg met maximaal 200 personen.&lt;br/&gt;Alleen de organisator heeft beeld en geluid.</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Beheer gebruikers, kamers, organisaties&lt;br/&gt; of verander de instellingen</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Active deelnemers</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Inlognaam</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Document aan het laden. Even wachten tot alle gebruikers zijn gesynchroniseerd.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Importeren gelukt, nu aan het converteren...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Begin importeren</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Importeer scherm. Zoek en selecteer een bestand.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Annuleren</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Selecteer bestand</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Active sessies</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Waarde</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Inlognaam</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Verbonden sinds</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Kamer / bereik</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Uitloggen</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Uitloggen</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Weet je zeker dat je deze gebruiker wilt uitloggen?&lt;br/&gt;De gebruiker zal uit dit overleg worden gehaald. De gebruiker kan wel weer opnieuw deelnemen.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Je bent door een organisator of beheerder uit het overleg gehaald.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefoon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Gebruiker is organisator in dit overleg</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Gebruiker mag tekenen op het tekenbord</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Her) Start beeld/geluid of verander instellingen</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Geef gebruiker toestemming om op het tekenbord te tekenen</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Ontneem gebruiker toestemming om op het tekenbord te tekenen</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Gebruikers</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Bestanden</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tekenbord</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Jouw account heeft meerdere organsiaties toegewezen gekregen. Selecteer een organisatie voor dit overleg.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Dit overleg is vol. Probeer het later nogmaals.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Kamer soort</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Afspraak kamer</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server tijd</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - herinnering</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Bericht van:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Bericht:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klik op deze link om deel te nemen aan dit overleg:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klik om deel te nemen aan dit overleg</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Als je problemen ondervindt met de link, kopieer en plak deze in een internet browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Zoek intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Externe toevoegen</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Voornaam</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Achternaam</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail adres</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Uitloggen bevestigen</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Weet je zeker dat je wilt uitloggen?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Acties</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo kamer</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo tijd (sec)</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Overleg tijd</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Dit is een demonstratie kamer. Je wordt automatisch uitlogd in :</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Toezichthouder</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>De organisator, beheerder of planner van dit overleg is nog niet aanwezig. Even wachten aub.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>OK</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Scherm delen</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Er wordt een scherm gedeelte door gebruiker:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start met delen</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Nieuw overleg toevoegen</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Kamers</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Evenement kamer</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Organisator</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Beheer de gebruikers</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Beheer de kamers</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Wil je deze gebruiker organisator maken van deze organisatie?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Je kunt pas een gebruiker toevoegen als je een organisatie hebt gekozen!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisatie - organisatoren</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Wil je deze gebruiker echt uit deze organisatie halen?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Deze gebruiker is organisator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Deze gebruiker is geen organisator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Deze gebruiker geen organisator?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Toevoegen of verwijderen van gebruikers of kamers in je organisatie</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Wil je dit item echt verwijderen?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Wil je deze gebruiker echt uit je organisatie verwijderen? Het gebruikersaccount blijft wel bestaan.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Je kunt je eigen gebruikersaccount niet verwijderen!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Dit kan alleen een beheerder doen!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Er zijn geen sessie gekoppeld aan dit ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Dit is een beheeraccount. Je kunt dit account bewerken in het beheer Beheer/Gebruikers gedeelte.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Klik op de link om de registratie af te ronden. Mocht dit niet lukken, kopieer en plak deze in een internet browser.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klik om je E-mail adres te controleren</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Er is geen gebruiker met deze gegevens.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Deze gebruiker is al actief!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Het account is succesvol geactiveerd!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Nu inloggen</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Het account is nog niet actief. Gebruik eerste de link in de E-mail die je hebt gekregen tijdens de registratie.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>In inschrijven is nu volledig. Er is een E-mail gestuurd met een verificatie link. Controlleer je Postvak-In.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Verwijder organisator rol van gebruiker</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Geef organisator rol aan deze gebruiker</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Gebruiker</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Toegang tot tekenbord</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Organisator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Selecteer een gebruiker om deze tekenbord en/of organisator toegang te geven.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Deze gebruiker is al organisator en heeft dus toegang tot het tekenbord.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Dit ben je zelf! Je kunt jezelf geen organisator rechten ontnemen.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Geef deze gebruiker beeld en geluid</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Ontneem deze gebruiker beeld en geluid</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Ik zou graag organisator van dit overleg worden</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Ik zou graag willen tekenen op het tekenbord</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Ik zou graag mijn beeld en geluid delen</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Je bent organisator van deze kamer</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Je mag tekenen op het tekenbord</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Je mag je beeld en geluid delen</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Bericht van de organisator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>De gebruiker</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>wil graag organisator worden. Gebruik de status iconen naast de gebruiker om dit in te stellen.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>wil graag tekenen op het tekenbord. Gebruik de status iconen naast de gebruiker om dit in te stellen.</value>
+  </string>
+  <string id="695" name="695">
+    <value>wil graag beeld en geluid delen. Gebruik de status iconen naast de gebruiker om dit in te stellen.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Je moet wachten totdat de organisator er is.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Annuleren</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Opslaan</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dag</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Maand</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Jaar</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Bestand uploaden</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Directory toevoegen</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Vernieuwen</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Vuilnisbak</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Mijn bestanden</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Bestanden in de kamer</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Bestand toevoegen</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Directory toevoegen</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Directory verwijderen</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Naam wijzigen</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nieuwe directory</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Weet je zeker dat je dit wilt verwijderen?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Zoek</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Zoek</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Toon alle bestanden (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Sluit Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Verwijder bestand</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Je mag niet tekenen op het tekenbord. Je dient organisator te zijn of toestemming hiervoor te krijgen. Je kunt de organisator vragen voor toestemming.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document eigenschappen</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Een gebruiker wil een scherm met je delen. Wil je deze zien?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Op dit momenn deel je een scherm. Klik op de Stop knop om dit te beeidingen.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Gegevens delen</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Je scherm wordt al getoond aan andere gebruikers!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Stop Delen</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Scherm deler</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Klik op Start om je scherm te delen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start delen</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pause delen</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Selecteer het gebied op je scherm:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Breedte veranderen</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Het scherm delen is beindigd!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Hoogte veranderen</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-afstand</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-afstand</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Breedte:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Hoogte:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Verbinding is beindigd door de server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Annuleren</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Als je deze sessie volledig beindigd, kun je hem niet opnieuw bekijken.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Bevestiging van het sluiten van deze sessie</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Deel scherm</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Neem sessie op</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Samen browsen</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Firefox op Windows geeft soms problemen met samen browsen.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Vorige</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Volgende</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Opnieuw laden</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Begin</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Laden</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Maak deze website je default website.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Test beeld en geluid voordat je aan een overleg begint.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Laat deze test niet weer zien</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Annuleren</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Overleg</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Niet opnieuw vragen</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Wil je doorgaan zonder test? Je bent dan nog steeds in staan om te chatten en te teken op het tekenbord.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Niveau meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Kies Begin</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Begin direct een overleg</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Begin evenement</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Kies Kamer</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Wijzig Instellingen</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Begin Overleg</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Start wizard:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Opname</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Beeld en geluid iedere keer testen</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Openbare kamers</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Openbare kamers zijn toegankelijk voor alle gebruikers!</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Prive kamers</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Prive kamers zijn alleen toegankelijk voor gebruikers van dezelfde organisatie.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Mijn kamers</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Deze kamers zijn voor persoonlijk gebruik en aangemaakt middels de kalender. Ze hebben een start en eind datum. Ze staan hier zolang ze nog geldig zijn.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Je dient organisator te zijn om dit te doen.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Toegang aanvragen</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Toegang aanvragen</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Vragen voor beeld en geluid deelname</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Deze sessie is al gebruikt en kun je niet nogmaals gebruiken.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>BEGIN</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EINDE</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Wil je dit overleg echt verlaten? Het is raadzaam bestanden, tekenbord en chat historie op te schonen!</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Verlaat overleg</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Kamers</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Kies een kamer voor een overleg</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Er is een niet opgeslagen evenement in de kalender. Bewaar of verwijder deze.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Je dient minimaal 1 persooon uit te nodigen!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Weet je zeker of je dit evenement wilt verwijderen?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Waarschuwing</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Evenement toevoegen</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>dag</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>maand</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Omschrijving</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Deelnemers</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>Kies voor BEGIN om meteen een overleg te starten of ga naar de kalendar om iets te plannen.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan een overleg</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Om een overleg te plannen, dien je een evenement aan de kalender toe te voegen. Voor ieder evenement zal automatisch een kamer aangemaakt worden. Iedere deelnemer zal E-mail ontvangen met een link naar de kamer.&lt;br/&gt;&lt;br/&gt;Er is keuze in verschillende soorten kamers. Tevens kan iedere kamer een eigen layout krijgen.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Hulp nodig?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Beperkt</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Zoek</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Toevoegen</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Er is geen gebruiker geselecteerd. Kies eerst een item en klik dan op toevoegen.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Nieuwe deelnemer</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Opslaan</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Verwijderen</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Evenement details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Standaard organisators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Hoofd</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Naam</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-mail adres</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Nieuwe standaard organisator toevoegen</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is hoofd-organisator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Als de kamer voorzien is van organisatoren, worden gebruikers met deze rol automatisch organisator als ze het overleg betreden. Als je dit niet wilt, stel dan een standaard organisator in.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Geef hoofd-organisator rol</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Ontneem hoofd-organisator rol</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Als je een organisatie toevoegd aan een kamer, kunnen alleen gebruikers van die organisatie de kamer betreden (letop: dat de kamer niet openbaar is!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Organisatoren</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Conditie</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisatie</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Weet je het zeker?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Weet je zeker dat je dit object wilt verwijderen? Kies voor opslaan om dit te bewaren!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Er is geen gebruiker geselecteerd!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Nieuwe standaard organisator toevoegen</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Wil je deze gebruiker hoofd-organisator maken? Een hoofd-organisator is organisator en niemand kan deze organisator rol terugdraaienn. Kies voor opslaan om dit te bewaren!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Wil je de rol hoofd-organisator weghalen voor de gebruiker? Kies kamer opslaan om dit door te voeren!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Dit een een hoofd-organisator. Je kunt een organisator rol niet verwijderen van een hoofd-organisator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Weet je zeker dat dit bestand/directory verwijder kan worden?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Verwijder bestand/directory?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mevrouw</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Meneer</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Eigenschappen</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Toon muis positie aan kijkers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Deel geluid middels SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Deel geluid middels SIP en beeld via flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Beeldvullend</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Toon scherm</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>De gebruiker</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wil zijn scherm delen, wil je dit zien?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Sluiten</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Deze sessie is beindigd door de gebruiker die aan het delen was!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Opnieuw scherm delen</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimaliseren</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximaliseren</value>
+  </string>
+  <string id="858" name="858">
+    <value>Beeld</value>
+  </string>
+  <string id="859" name="">
+    <value>Opname tijdlijn</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Mijn opnames</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Openbare opnames</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Informatie</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Naam</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Lengte</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Datum</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Door</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Hoofd - Beeld</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Opnemen</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Opnemen en scherm delen kan op hetzelfde moment. Om je scherm te delen, kies voor scherm delen.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Begin opnemen</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop opnemen</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download FLV-bestand</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Kamer</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Afspelen</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Gebruiker heeft de microfoon aan</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/english.xml b/src/main/webapp/languages/english.xml
new file mode 100644
index 0000000..43da804
--- /dev/null
+++ b/src/main/webapp/languages/english.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conference</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Meeting</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Events</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Settings</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profile</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Record</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>No file available</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Record by teacher</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Connected users</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Start a conference</value>
+  </string>
+  <string id="13" name="myname">
+    <value>My name</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Video conference</value>
+  </string>
+  <string id="15" name="import">
+    <value>File upload</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Refresh list</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>To main file</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>new poll</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>A new poll for the conference</value>
+  </string>
+  <string id="20" name="question">
+    <value>Question</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Type of poll</value>
+  </string>
+  <string id="22" name="create">
+    <value>Create</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Each connected user receives a message with the new poll</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Create a poll</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Yes/No</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numeric 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Poll</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>You must be a moderator to create a question</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Your vote has been registered</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Your have already voted in this poll</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Vote</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Your response</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Yes</value>
+  </string>
+  <string id="35" name="no">
+    <value>No</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>wants to know</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Poll results</value>
+  </string>
+  <string id="38" name="question">
+    <value>Question</value>
+  </string>
+  <string id="39" name="results">
+    <value>Results</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Answers</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>No polls have been started</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Vote</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Meeting (max 4 seats)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conference (max 50 seats)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Type</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Other seats</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Already chosen</value>
+  </string>
+  <string id="48" name="enter">
+    <value>enter</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>The moderator has left the meeting</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>System information</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Choose device</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Choose webcam</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Choose micro</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancel</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>You need to reconnect</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Edit setup</value>
+  </string>
+  <string id="58" name="course">
+    <value>Course</value>
+  </string>
+  <string id="59" name="language">
+    <value>Language</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Cancel</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Clear whiteboard</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Do you want to empty the whiteboard before a new picture is added?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Don't ask again</value>
+  </string>
+  <string id="65" name="no">
+    <value>No</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Edit setup</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Confirm request to empty the whiteboard</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>User info</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Clear whiteboard</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Undo</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Redo</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Select an object</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Paint</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Draw line</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Draw underline</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectangle</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Arrow</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Delete</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Apply to be a moderator</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Apply</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="84" name="mod">
+    <value>I have a question</value>
+  </string>
+  <string id="85" name="close">
+    <value>Close</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>bold</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>WAITING</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>A user has applied to be a moderator, you can either grant them only access to the whiteboard or completely switch the moderation role. User:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Accept</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Reject</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Sending the request to the following users</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accepted</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rejected</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Change moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>You are not the moderator of this course</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>This room is full</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Close</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>input data error</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Password and or login is too short</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Password and or login is too short</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>The username is already used</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>The mail address is already registered</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>System error please contact the administrator</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Username or mail address</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Password</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Language</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Sign in</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Sign up</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Username</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Password</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Re-enter password</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>First name</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Surname</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email address</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Country</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Register</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Cancel</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Not a member?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Users</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Groups</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Usergroups</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Conference rooms</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Public</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Usergroups</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Enter</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Password</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Re-enter password</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Title/first name</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Last name</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email address</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Birthday</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Street/No</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Post code/Town</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Country</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Address</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>User details</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Save</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Save</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>User ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>First name</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Last name</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Show next</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Show previous</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Delete record</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Cancel</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Delete</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>New record</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Refresh record</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Delete record</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Disabled</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Enabled</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Usergroup</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Calendar</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Close</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Usergroup ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Name</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>User</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>User level</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Usergroup</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Name</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Add usergroup</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Add usergroup</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Cancel</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Add</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Remove usergroup</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>User</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Add user</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Delete user</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Add user to usergroup</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Search user</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Search</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>User</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Usergroup</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Enter</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Conference rooms</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Conference rooms</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Name</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Public</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Usergroups</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Conference rooms</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Name</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Type</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Public</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Comment</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Save and export</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Load</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Save as</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Filename</value>
+  </string>
+  <string id="201" name="files">
+    <value>Filename</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Cancel</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Save</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Error</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Loading</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objects loaded</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronizing, please wait</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Loading image</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronizing, please wait</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Clear whiteboard</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Clear whiteboard, all data on the whiteboard will be lost</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirm before loading a file</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Send invitation</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Send invitation</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Subject</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Recipient</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Message</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Send</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Send</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>User details</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Your nickname for this conference</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Nick</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>First name</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Last name</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Language</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Enter</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Loading</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Loading data, please wait</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Wrong password</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Please enter two identical passwords</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Wrong email</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>You have entered an invalid email address</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registration complete</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Your account has been created. You can now login.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Someone is already sharing their screen</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Sharing forbidden</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Share/record screen</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Unable to synchronize the screen. If this warning is shown often you should ask the moderator to reduce the quality.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Screen of:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Paint</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Files</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Members</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download original document</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download PDF document</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Load presentation to whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Drag this object</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Resize this object</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>of</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Go to first page</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Go to previous page</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Go to next page</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Go to last page</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Mr</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Ms</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Key</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Key</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Last update</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Updated by</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Comment</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Value</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>of</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Users</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Delete user from usergroup</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>D</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>This user is already a member of this usergroup</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>News</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quick links</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Go to conference</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Goto auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Help and support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Report a bug</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>more</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project website (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User mailing list (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Remember login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Content</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Dashboard</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Calendar</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My scheduled events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Public meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Public events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Public content</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private content</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personal content</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderation</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>I have a question</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Polls</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Choose a file</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Settings</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Camera and mic settings</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Whiteboard settings</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Exit</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Back to rooms</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Forgotten your password?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Reset password</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Using email address</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Using login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Your email address</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Your login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Send email with a reset link</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>No such email address was found. Make sure you entered the same email address you used to create your account.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Please enter either an email address or a user name</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>There is no user connected to this username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>The email containing a special link has been sent to your email address</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Error</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Message</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>No user found</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset your password</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Change password</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>New password</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Re-enter password</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>The passwords you entered weren't identical</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Password and or username too short, required minimum length for user name / password are:</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password set. You can now login.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Unknown error. Please report this to the administrator.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username not found</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Invalid password</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Successfully logged out</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registration disabled</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Invalid email address</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Duplicate file name, please enter another</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>File name too short</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Could not save the address</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>User added but you need to assign this user to an usergroup, otherwise they won't be able to log in</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>New record</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No field found for the ID</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No label found</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin authorization required</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Language editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Language</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Value</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Field values</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Label name</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Label value</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>You have deleted the label</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Invalid label ID</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>You cannot delete this field</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>You need to logout for any changes to update</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Delete language</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Add language</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>goto first</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>goto previous</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>goto next</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>goto last</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>user speaks (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>turn sound on/off</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Your settings</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hello</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Edit your profile</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Unread messages</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Upload new image</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Export user data</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>All usergroups must already exist</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Start export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>By usergroup</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Import user data</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Choose users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Import</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export to XML</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choose a language file to import</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Import</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Save as</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Name</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comment</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Save</value>
+  </string>
+  <string id="395" name="record">
+    <value>Recordings</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Recordings viewer</value>
+  </string>
+  <string id="397" name="record">
+    <value>Recordings of public and private rooms</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Users</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Joined</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Users in this room</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Refresh</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>This room is full</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Click on a room to get the room details</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat with the users in this room</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Room</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Users in this room</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>since</value>
+  </string>
+  <string id="409" name="record">
+    <value>Play recording</value>
+  </string>
+  <string id="410" name="record">
+    <value>Length</value>
+  </string>
+  <string id="411" name="record">
+    <value>Date</value>
+  </string>
+  <string id="412" name="record">
+    <value>Recorder mode</value>
+  </string>
+  <string id="413" name="record">
+    <value>Play this recording</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play/Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Record this meeting</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stop recording</value>
+  </string>
+  <string id="417" name="record">
+    <value>Recording</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Someone is already recording this meeting</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Recording. User:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Recording will be canceled and not saved</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>resume</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Close this window and resume recording</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Change line colour</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Choose colour</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disable/enable line colour</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Change fill colour</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disable/enable fill colour</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Change line width</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Close</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Change font size</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Delete recording</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Guest</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>By:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Room</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Delete server chat log</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Send message</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choose published devices</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio and video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Audio only</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Video only</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>No audio/video (static image)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>No audio/video from your PC will be published, your profile picture will be shown</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TU</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>WE</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TH</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SU</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Monday</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tuesday</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Wednesday</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Thursday</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Friday</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Saturday</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sunday</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendar week</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>January</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>February</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>March</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>May</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>June</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>July</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>October</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendar</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participants</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Show layout settings</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Width | height</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderation container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Enabled</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Width | height</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Files, chat, participants container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Enabled</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Width | height</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>The moderator has left the room. No one is presenting at the moment.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>There is no moderator in this room, but there are some participants. You have to apply to be the moderator or wait.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Message from user:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Click this link to participate in the conference [The link may only work for a certain period.]:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>If you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Account Details</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Your account details</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>Your $APP_NAME account details</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Click on this link to enter a new password</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Click here to enter a new password</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>If you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME password reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Please enter a valid date, for example 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Please enter a valid email address, for example name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Please enter a float-number, for example 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Please enter an integer number, for example 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Please enter a valid phone number, for example ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Please enter a valid time, for example 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Password protected</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Password</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Validity period</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Endless</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Period</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>One time</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valid from</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valid to</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitation to $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>No invitation available for this invitation code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>This invitation was already used</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>The invitation code is invalid</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Password</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Check password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Invalid password</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Audio/video</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchronize audio/video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the session is not active or stored on the server</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The session ID is not logged in or has no admin rights. The SOAP gateway needs a user with admin rights to embed new users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This session has no remoteuser-data connected. You did not call the SOAP gateway before accessing the application or you are using a wrong session ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently beta</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Open browser</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Close browser</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The connection to the server has been lost</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Notification type</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment end is after of appointment start</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title</value>
+  </string>
+  <string id="580" name="580">
+    <value>Right to left</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded meetings or events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - make a conference with between 4 and 25 users&lt;br/&gt;and everybody will have audio and video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - make a conference with up to 200 participants&lt;br/&gt;but only the moderator will have audio and video access</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, usergroups&lt;br/&gt; and change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this room</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading document. Please wait until all clients have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting document</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and import dialog. Please select a file.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select file</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Stream ID</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Unenroll user</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Unenroll user</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to unenroll this client from the room?</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an administrator or moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the moderator of this room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start audio/video or change device settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this user to draw on the whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple usergroups. Please choose one for this session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from user:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the conference [The link does only work 15 minutes before the meeting starts.]:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Add external</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>First name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Surname</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Email</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This room is a demo room. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait until the moderator has entered the room</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>OK</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming screen sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new screen sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this user to be a moderator of that organisation?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an organisation before you try to add a user to it</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this user from the organisation?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This user is a moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This user is not a moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you not want this user to be a moderator of this organisation?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete users or rooms within your organisation</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organisation?</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own user</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This method needs an adminstration account to be invoked</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no session associated with this ID</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an administrator or moderator account. You can only edit this account through the administration panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your email</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this hash</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You successfully activated your account</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. Please use the link in the email you received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You have successfully signed up. An email with a verification code will be sent to your mailbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove moderator role from this user</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant moderator rights to this user</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Please choose any user on the list to make them a moderator or to grant them access to the whiteboard or video</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This user is already a moderator</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>You cannot remove the moderator rights for yourself</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this user to publish their audio/video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove audio/video of this user</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I have a question</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on the whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my audio/video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are the moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on the whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your audio/video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The user</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to ask a question</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his audio/video</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait until a moderator enters the room</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload file</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (drag and drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My files (home drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room files (public drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add file</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all files (tree view)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete file</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the whiteboard</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user wants to share their screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your desktop</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Stop sharing</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pause sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The sharer has finished this session</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you will not be able to restart the viewer for this session</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm closing viewer session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Please use Internet Explorer and not Firefox for Windows</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as the default website to your profile</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Use audio or video setup before you enter a room by recording for a few seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without audio or video can still use the whiteboard, share their desktop or write chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Level-meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start recording test</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show audio/video test before entering a conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public rooms are accessible for all users</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private rooms are only accessible for users of the same usergroup</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply to be moderator</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for audio/video access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This session hash has already been used</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit?</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved event in the "Event details" on the right. Please save, remove or cancel and edit the details before adding another event.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your web conferencing platform. You can either follow the 1-2-3 steps to enter a conference room directly or you choose the Calendar to set up and plan a meeting.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To setup a conference you can add a new event in the calendar</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no user selected</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is super moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the room is moderated, any users with a moderator or administrator level access are automatically set to moderator when they enter the room</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A super moderator is always a moderator when they enter a room</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Make user a super moderator</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove super moderator from user</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an usergroup to the room only users of that usergroup have access to it</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Usergroup</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this item?</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no user selected</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new default moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the super moderation flag for this user?</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the super moderation flag for this user? You need to save the room object to save these settings.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This user is a super moderator. You cannot remove the moderation flag.</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this file/folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete file/folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share audio with SIP applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share audio with SIP and video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share their screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing user</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New screen sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download as FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Close</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow user questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent any user from disturbing you in this room</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw screen video</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the recording</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The recording is not yet ready for watching</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>OK</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP applet is not ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP account settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP user</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>SIP password</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>SIP auth ID</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The login to the SIP gateway has failed</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The login to the SIP gateway has failed. Contact the administrator.</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging onto the SIP gateway...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging onto the SIP gateway...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP applet message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP applet is not ready. Accept the applet and click OK</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save appointment changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointment has been changed. Do you want to save these changes?</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login to the $APP_NAME application</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the user for this video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available users for this pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a moderator in this interview. You can decide who is speaking in this interview and you can start/stop the recording of the session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started.</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder.</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your license has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User license Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make web-conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into conference rooms) or creating conference rooms via the calendar with external users is only allowed with a volume flatrate.</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited license</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit.</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per installation.</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact info and prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Typec</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (with Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and buy.</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and buy.</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy.</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received.</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your invoice. The invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME.</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and transaction status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th parties to access a meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This email is already used by another user.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The conference number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only.</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the status bar is send to participants.</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make team rooms [breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new team-room.</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new conference room ("Team room") for them. The chosen users will automatically switch to the new team-room or get a notification. Team room moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>User name</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new team room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create team room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the team room.</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from team room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is team room moderator (He is able to manage team rooms and users of the team room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Room type</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new team room" all chosen users will automatically switch to the newly created team room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-moderators always have the free choice to manage the team rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage team rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all team rooms that you are assigned as team room moderator. Users inside the team room can send you a message, for example to ask you to come to their room and help them. You can also terminate the team room and all users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new team room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right.</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the team room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team room name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this team room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate team room and logout all users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New team room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new team room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to team room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team room actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>This is a team room, you can send the team moderator a message if you need help. You can re-open this window via the main menu in the "Actions" section.</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>1) Send message to team room moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New team room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new team room available. You can switch to that room. Team rooms are like "Workgroups" with additionally possibilities to ask the team room moderator for help. Your team rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to team room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This window will stay open even if you leave the room.</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this team room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other team rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the team room moderators. For example if you need help in moderating the Rroom or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this team room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is team room moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this team room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no team moderator logged in at the moment.</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our team room.</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a team room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any team room. But you can switch here to all team rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the system. The backup includes all user generated data. The configuration is not included as well as the language labels. Because those values are imported with the system installer. To update your system, export your old system (1) re-install into a new database the new package (2) and import the backup file again (3). The backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share screen/record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share screen/record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is moderator, he can do anything. [screen sharing]</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this flag on and the users will have only the audio option and no video in a conference room. This can bee good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (during screen sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (during screen sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (during screen sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (during screen sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything.</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (during screen sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose &lt;i&gt;Insert&lt;/i&gt; from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;&lt;u&gt;&lt;FONT color='#0000CC'&gt;&lt;A HREF="http://www.youtube.com/watch?v=Ukqa01O48uI" TARGET="_BLANK"&gt;watch the demo&lt;/A&gt;&lt;/FONT&gt;&lt;/u&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and paste text from your PC to remote PC and vice versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy and paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the screen share:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close webinar.</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>LDAP</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config file</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>LDAP Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to user name" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the login in the LDAP is stored including the domain name. Example: user enters "hans" domain is specified as "localhost.com", login that is verified against LDAP is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add domain to user name</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote clipboard text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about copy and paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation.</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Timezone message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "Timezone message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the timezone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Free text</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Search result</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts.</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact.</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show /copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Unenroll user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot unenroll yourself out of the conference room. If you want to leave it close the browser or use the exit button.</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot unenroll a super moderator out of a room.</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you. You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied.</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved.</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid.</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list.</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list.</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact.</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder.</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected.</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone.</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages.</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside. Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course.</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is not valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own.</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again.</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first.</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted.</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nick name</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>First name</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Last name</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars. For both, first name and last name.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email.</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner ID</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with user level user, moderator or admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Webservice (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Load directly to the Whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone.</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget to 'Start recording', if you want have the meeting recorded."</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom in/out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Show grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share file</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny and remove message</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards.</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>user defined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others. Give exclusive audio to me (You can also press F12)</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself.</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore.</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally.</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore.</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off.</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on.</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally.</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally.</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him.</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally. To mute your own microphone: Please use the microphone icon in your video pod.</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this poll? No one will be able to vote.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>would like to have permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith.</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>You have the right to give exclusive audio. Click here to make yourself exclusive audio (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need to be a Moderator or have the 'draw on whiteboard' rights to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="main_loading">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/errorvalues.xml b/src/main/webapp/languages/errorvalues.xml
new file mode 100644
index 0000000..2db93d2
--- /dev/null
+++ b/src/main/webapp/languages/errorvalues.xml
@@ -0,0 +1,471 @@
+<?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.
+  
+-->
+<ROOT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="errorvalues.xsd">
+    <row>
+      <field name="errorvalues_id">1</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">334</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">2</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">319</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">3</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">320</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">4</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">321</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">5</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">324</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">6</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">330</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">7</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">331</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">8</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">332</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">9</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">318</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">10</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">335</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">11</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">336</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">12</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">337</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">13</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">103</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">14</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">338</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">15</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">105</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">16</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">107</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">17</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">106</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">18</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">236</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">19</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">339</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">20</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">340</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">21</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">341</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">22</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">342</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">23</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">343</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">24</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">345</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">25</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">346</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">26</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">347</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">27</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">358</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">28</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">357</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">29</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">358</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">30</field>
+      <field name="starttime">2007-12-06 19:01:07</field>
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">403</field>
+      <field name="errortype_id">2</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">31</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">533</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">32</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">534</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">33</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">535</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">34</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">538</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">35</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">276</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">36</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">664</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">37</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">665</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">38</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">663</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">39</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">666</field>
+      <field name="errortype_id">1</field>
+    </row>	
+    <row>
+      <field name="errorvalues_id">40</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">674</field>
+      <field name="errortype_id">2</field>
+    </row>  
+    <row>
+      <field name="errorvalues_id">41</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">673</field>
+      <field name="errortype_id">1</field>
+    </row>  	
+    <row>
+      <field name="errorvalues_id">42</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">787</field>
+      <field name="errortype_id">1</field>
+    </row>  
+    <row>
+      <field name="errorvalues_id">43</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">920</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">44</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1000</field>
+      <field name="errortype_id">1</field>
+    </row> 	
+    <row>
+      <field name="errorvalues_id">45</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1195</field>
+      <field name="errortype_id">1</field>
+    </row> 
+    <row>
+      <field name="errorvalues_id">46</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1226</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">47</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1227</field>
+      <field name="errortype_id">1</field>
+    </row>		
+    <row>
+      <field name="errorvalues_id">48</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1228</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">49</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1231</field>
+      <field name="errortype_id">1</field>
+    </row>	
+    <row>
+      <field name="errorvalues_id">50</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1271</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">51</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1309</field>
+      <field name="errortype_id">1</field>
+    </row>   	
+    <row>
+      <field name="errorvalues_id">52</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1310</field>
+      <field name="errortype_id">1</field>
+    </row> 	
+    <row>
+      <field name="errorvalues_id">53</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1416</field>
+      <field name="errortype_id">1</field>
+    </row> 	
+    <row>
+      <field name="errorvalues_id">54</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1431</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">55</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1540</field>
+      <field name="errortype_id">1</field>
+    </row>
+    <row>
+      <field name="errorvalues_id">56</field>
+      <field name="starttime" />
+      <field name="updatetime" />
+      <field name="deleted">false</field>
+      <field name="fieldvalues_id">1544</field>
+      <field name="errortype_id">1</field>
+    </row>
+</ROOT>
diff --git a/src/main/webapp/languages/errorvalues.xsd b/src/main/webapp/languages/errorvalues.xsd
new file mode 100644
index 0000000..66f06d1
--- /dev/null
+++ b/src/main/webapp/languages/errorvalues.xsd
@@ -0,0 +1,41 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="ROOT">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="row"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="row">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="field"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="field">
+    <xs:complexType mixed="true">
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/languages/finnish.xml b/src/main/webapp/languages/finnish.xml
new file mode 100644
index 0000000..45d9d49
--- /dev/null
+++ b/src/main/webapp/languages/finnish.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferenssi</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Kokous</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Tapahtumat</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Asetukset</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profiili</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Ylläpito</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Pysäytä</value>
+  </string>
+  <string id="8" name="record">
+    <value>Nauhoita</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Ei tiedostoa saatavilla</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Opettajan nauhoitus</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Aktiiviset käyttäjät:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Aloita konferenssi</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Oma nimi</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonferenssi</value>
+  </string>
+  <string id="15" name="import">
+    <value>Lähetä tiedosto</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Päivitä lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Päätiedostoon</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>uusi kysely</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Uusi kysely konferenssiin.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Kysymys:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Kyselyn tyyppi:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Luo</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Tiedoksi: Jokainen paikalla oleva käyttäjä vastaanottaa viestin kyselystä.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Luo kysely</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Peruuta</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Kyllä/Ei</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numeerinen 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Kysely</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Sinun täytyy olla moderaattori luodaksesi kysymyksen.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Äänesi on rekisteröity.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Olet jo äänestänyt tässä kysymyksessä.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Äänestä!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Vastauksesi:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Kyllä</value>
+  </string>
+  <string id="35" name="no">
+    <value>Ei</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>haluaa tietää:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Kyselyn tulokset</value>
+  </string>
+  <string id="38" name="question">
+    <value>Kysymys:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Tulokset:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Vastaukset:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Kyselyitä ei ole aloitettu.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Äänestä!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Kokous (enintään 4 osanottajaa)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferenssi (enintään 50 osanottajaa)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tyyppi</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Vapaita paikkoja</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>On jo valittu</value>
+  </string>
+  <string id="48" name="enter">
+    <value>astu sisään</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderaattori on lähtenyt kokouksesta.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Järjestelmän viesti</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Valitse laite</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Valitse web-kamera:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Valitse mikrofoni:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>peruuta</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Sinun täytyy yhdistä uudelleen.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Muokkaa asetuksia.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurssi:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Kieli:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>peruuta</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Tyhjää kirjoitustaulu</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Haluatko tyhjentää kirjoitustaulun ennen uuden kuvan lisäämistä?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Älä kysy uudestaan</value>
+  </string>
+  <string id="65" name="no">
+    <value>ei</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Muokkaa asetuksia</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Kysy varmistus ennen kirjoitustaulun tyhjäystä.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Käyttäjätiedot</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Tyhjää piirtoalue</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Peru</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Tee uudestaan</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Valitse objekti</value>
+  </string>
+  <string id="73" name="text">
+    <value>Teksti</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Piirrä</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Piirrä viiva</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Alleviivaa</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Suorakaide</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipsi</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Nuoli</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>poista valittu kohde</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Pyydä moderaattorin oikeutta</value>
+  </string>
+  <string id="82" name="apply">
+    <value>aseta</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>peruuta</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Muutu moderaattoriksi</value>
+  </string>
+  <string id="85" name="close">
+    <value>sulje</value>
+  </string>
+  <string id="86" name="italic">
+    <value>kursivointi</value>
+  </string>
+  <string id="87" name="bold">
+    <value>lihavointi</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ODOTTAA</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Käyttäjä hakee moderaattorin oikeutta:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>hyväksy</value>
+  </string>
+  <string id="91" name="reject">
+    <value>hylkää</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>peruuta</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Sending request to following Users</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Hyväksytty</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Hylätty</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Vaihda moderaattoria</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Et ole tämän kurssin moderaattori!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderaattori:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Tämä huone on täynnä. Yritä myöhemmin uudestaan.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipsi</value>
+  </string>
+  <string id="101" name="close">
+    <value>sulje</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>syötevirhe</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>vähintään 4 merkkiä; isoilla kirjaimilla on merkitystä!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>salasanan täytyy olla vähintään 4 merkkiä pitkä</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Tunnus on jo varattu</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Sähköpostiosoite on jo rekisteröity</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Järjestelmävirhe, ota yhteyttä ylläpitoon</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Kirjautuminen</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Käyttäjä:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Salasana:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Kieli</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Kirjaudu</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Rekisteröinti</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Käyttäjätunnus:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Salasana:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Uudestaan:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Etunimi:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Sukunimi:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Sähköposti:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Maa:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Rekisteröidy</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Peruuta</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Etkö ole jäsen?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Koti</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Users</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Ryhmät</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisaatiot</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Kokoushuoneet</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>julkinen</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisaatio</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>astu sisään</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Tunnus</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Salasana</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Uudestaan</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Etunimi</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Sukunimi</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Sähköposti</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Synnyinaika</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Katuosoite</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Postinumero/Toimipaikka</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Maa</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Osoitteen lisätieto</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Käyttäjätieto</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>tallenna</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Tallenna</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Tunnus</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Etunimi</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Sukunimi</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>näytä seuraava</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>näytä edellinen</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>poista tietue</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>peruuta</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>poista</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>uusi tietue</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>päivitä tietue</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>poista tietue</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>tila</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>pois käytöstä</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>käytössä</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisaatiot</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>kalenteri</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>sulje</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisaatio-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nimi</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Käyttäjä</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderaattori</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Ylläpitäjä</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>käyttäjätaso</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisaatio</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nimi</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>uusi organisaatio</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>uusi organisaatio</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>peruuta</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>lisää</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>poista organisaatio</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>käyttäjä</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>uusi käyttäjä</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>poista käyttäjä</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>uusi käyttäjä</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>etsi käyttäjää</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>haku</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>käyttäjä</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisaatio</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>hyväksy</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferenssihuoneet</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferenssihuoneet</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nimi</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>julkinen</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisaatiot</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Kokoushuoneet</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nimi</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Tyyppi</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Julkinen</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Kommentti</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>tallenna ja vie</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>lataa</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>tallenna nimellä</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Tiedostonimi</value>
+  </string>
+  <string id="201" name="files">
+    <value>tiedostonimi</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>peruuta</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>tallenna</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Virhe</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>ladataan</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objektia ladattu</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>synkronisoidaan, odottavat asiakkaat:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Ladataan kuvadataa</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>synkronisoidaan, odottavat asiakkaat:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>tyhjää piirtoalue</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>tyhjää piirtoalue, koko piirtoalue tyhjennetään</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Varmista ennen tiedoston lataamista</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Lähetä kutsu</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Lähetä kutsu</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Aihe</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Vastaanottaja</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Viesti</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Lähetä</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>peruuta</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>lähetä</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Käyttäjätieto</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Lempinimesi tähän konferenssiin</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Lempinimi</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Etunimi</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Sukunimi</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Sähköposti</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Kieli</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>lisää</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Ladataan</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Ladataan, ole hyvä ja odota!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Väärä salasana</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Anna kaksi samaa salasanaa joissa vähintään 6 merkkiä</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Epäkelpo sähköposti</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Annoit epäkelvon sähköpostiosoitteen</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Rekisteröinti onnistui</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Tilisi on luotu, voit kirjautua sisään.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Et voi jakaa ruutua tällä hetkellä, koska joku muu jakaa jo omaa ruutuaan.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Jakaminen kielletty</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Jaa ruutusi</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Kaistanleveys ei riitä: Et pysty synkronisoimaan ruutua. Ruudunpäivityksiä saattaa jäädä pois. Jos tämä ilmoitus toistuu usein, voit pyytää moderaattoria pienentämään kuvan laatua.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Käyttäjän ruutu:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Maalaa</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokumentti</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Keskustelu</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Tiedostot</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Jäsenet</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Lataa alkuperäinen dokumentti</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Lataa pdf-dokumentti</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Lataa esitys piirtoalueelle</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Asetukset</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Raaha tätä objektia</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Muuta objektin kokoa</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>of</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Mene ensimmäiselle sivulle</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Mene edelliselle sivulle</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Mene seuraavalle sivulle</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Mene viimeiselle sivulle</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Herra</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Rouva</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Asetukset</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Avain</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Asetukset</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Avain</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>edellinen päivitys</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>päivityksen tekijä</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>kommentti</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Arvo</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>/</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Käyttäjät</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>poista käyttäjä organisaatiosta</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>poista</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Käyttäjä on jo tämän organisaation jäsen.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Uutiset</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Pikalinkit</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Mene konferenssiin</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Mene auditorioon</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Apua ja tukea</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Ilmoita bugi!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>lisää</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projektin web-sivut (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Käyttäjien postituslista (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Muista kirjautuminen</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Sisältö</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Oma sivu</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Tulevat kokoukset</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Omat tulevat kokoukset</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Julkiset kokoukset</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Yksityiset kokoukset</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Julkiset tapahtumat</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Yksityiset tapahtumat</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Julkinen sisältö</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Yksityinen sisältö</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Henkilökohtainen sisältö</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderointi</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Hae moderointioikeutta</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Kyselyt</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Valitse tiedosto</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Asetukset</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kamera ja mikrofoni</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Piirtoalueen asetukset</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Poistu</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Takaisin huoneisiin</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Poistu</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Unohditko salasanasi?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Nollaa salasana</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Sähköpostilla</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Käyttäjätunnuksella</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Sähköpostisi</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Tunnuksesi</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Lähetä sähköposti nollauslinkillä</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Sähköpostiosoitetta ei löytynyt. Varmista että annoit saman osoitteen kuin mitä käytit rekisteröityessäsi.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Anna sähköpostiosoite tai käyttäjätunnus</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Käyttäjätunnusta ei ole</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Linkin sisältävä sähköposti on lähetetty osoitteeseesi, ole hyvä ja tarkista sähköpostisi. Jos et ole vielä vastaanottanut viestiä, tarkista roskapostiasetuksesi ja yritä uudestaan.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Virhe</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Viesti</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Epäkelpo hash. Käyttäjää ei löydy.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Nollaa salasanasi</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Kirjaudu</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>vaihda salasana</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>uusi salasana</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>salasana uudestaan</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Antamasi salasanat eivät täsmänneet.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 merkkiä tai pidempi; isoilla kirjaimilla on merkitystä!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Salasana asetettu. Voit nyt kirjautua sisään.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Tuntematon virhe. Ole hyvä ja ilmoita virheestä tukitiimillesi.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Käyttäjää ei löydy</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Epäkelpo salasana</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Uloskirjautuminen onnistui</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Rekisteröinti on poissa käytöstä.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Epäkelpo sähköposti</value>
+  </string>
+  <string id="340" name="registration">
+    <value>saman niminen tiedosto on jo olemassa, valitse toinen nimi</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>tiedostonimi liian lyhyt</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Ei voitu tallentaa osoitetta</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Käyttäjä lisätty, mutta sinun täytyy lisätä tämä käyttäjä johonkin organisaatioon jotta hän voi kirjautua sisään.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Uusi tietue</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Kenttää ei löytynyt kentän id:llä.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Kentälle ei löydy kuvausta.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Ylläpitäjän oikeudet tarvitaan.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Kielien muokkaus</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Kieli</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Nimi-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Kuvaus-Nimi</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Arvo</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Kentän arvot</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Kuvaus</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Arvo</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Kuvaus-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Poistit pelkän kuvauksen etkä kenttää! Et voi poistaa kenttää, sillä voi olla kuvauksia muilla kielillä.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Epäkelpo kuvaus-ID. Kenttää FieldLanguagesvalues_Id ei löydy tietokannasta.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Et voi poistaa tätä kenttää. Voit ainostaa poistaa kuvauksia, et kenttiä. Kuvausta ei ole ladattuna nyt, joko sitä ei ole valittuna mistään kentästä tai tälle kielelle ei ole määritelty kuvauksen mukaista kenttää.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>vie</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Sinun täytyy kirjaudua uudestaan nähdäksesi muutokset.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Lisää kieli</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>poista kieli</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Lisää kieli</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nimi</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>lisää kieli</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Varmuuskopiointi</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>mene alkuun</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>edellinen</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>seuraava</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>viimeinen</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>käyttäjä puhuu (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>ääni päälle/pois</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Järjestelmä</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Asetuksesi</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>hei,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Muokkaa profiiliasi</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Uudet viestit:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Lataa uusi kuva</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Käyttäjädata - Vie</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Organisaatioiden täytyy olla jo olemassa!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>aloita vienti</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Organisaation mukaan</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>aloita vienti</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Käyttäjädata - Tuo</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>valitse users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>tuo</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Vie XML-tiedostoksi - Näitä tiedostoja voidaan käyttää: Projektiin osallistuminen - Toiseen järjestelmään vienti - Varmuuskopiointi - Mukautus - Laita se hakemistoon language seuraavaa asennustasi varten.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Valitse kielitiedosto tuotavaksi. Valitse oikea kieli valintalistalta! Tämä määrää asetettavan kielen tiedoston nimestä riippumatta!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>tuonti - valitse tiedosto</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Tallenna nimellä</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nimi:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Kommentti:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>tallenna</value>
+  </string>
+  <string id="395" name="record">
+    <value>Nauhoitukset</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Nauhoitusten katselu</value>
+  </string>
+  <string id="397" name="record">
+    <value>Julkisten ja yksityisten huoneiden nauhoitukset</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Käyttäjät :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Liittynyt:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Käyttäjiä huoneessa:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>päivitä</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Tämä huone on täynnä. Yritä uudestaan muutaman minuutin kuluttua.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>klikkaa huonetta saadaksesi lisätietoja</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Keskustele tämän huoneen käyttäjien kanssa:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Huone:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Käyttäjät huoneessa:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>since:</value>
+  </string>
+  <string id="409" name="record">
+    <value>toista nauhoitus</value>
+  </string>
+  <string id="410" name="record">
+    <value>Pituus:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Päivämäärä:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Nauhoitustila! Et voi muuttaa arvoja, tämä on nauhoitettu tiedosto!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Toista nauhoitus</value>
+  </string>
+  <string id="414" name="record">
+    <value>Toista / Keskeytä</value>
+  </string>
+  <string id="415" name="record">
+    <value>Aloita nauhoitus</value>
+  </string>
+  <string id="416" name="record">
+    <value>pysäytä nauhoitus</value>
+  </string>
+  <string id="417" name="record">
+    <value>Nauhoittaa:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Joku on jo nauhoittamassa tällä hetkellä:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Nauhoitetaan! Käyttäjä:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>peruuta</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Nauhoitus peruutetaan ja sitä ei tallenneta.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>palaa</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Sulje ikkuna ja jatka nauhoitusta</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>muuta viivan väriä</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Valitse väri</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Viivan väri päälle/pois</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>muuta täytön väriä</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>täyttöväri päälle/pois</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Muuta viivan leveyttä</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>sulje</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>muuta fontin kokoa</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Poista nauhoitus</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Vieras</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Tehnyt:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nimi</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Huone</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Aika</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>peruuta</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>aloita</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nimi</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Päivämäärä</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Poista palvelimen keskusteluloki</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Keskustelu</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>lähetä viesti</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Hymiöt</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Hymiöt</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Valitse julkaistavat laitteet</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ääni ja video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Vain ääni</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Vain video</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Ei ääntä/videota (kiinteä kuva)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Ääntä/kuvaa tietokoneelta ei julkaista. Profiilikuvasi näytetään sen sijaan. Valitse tämä asetus jos sinulla on ongelmia yhteytesi kanssa tai yhteytesi on erittäin hidas.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MA</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TI</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>KE</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>PE</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>LA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SU</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Maanantai</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tiistai</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Keskiviikko</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Torstai</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Perjantai</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Lauantai</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sunnuntai</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KV</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalenteriviikko</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Tammikuu</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Helmikuu</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Maaliskuu</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Huhtikuu</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Toukokuu</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Kesäkuu</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Heinäkuu</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Elokuu</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Syyskuu</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Lokakuu</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Marraskuu</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Joulukuu</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalenteri</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Osanottajat</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Näytä asettelun asetukset</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Leveys | Korkeus</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Säiliö</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderaatio-Säiliö</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Piirtoalue-Säiliö</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Päällä</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Leveys | Korkeus</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Tiedostot,Keskustelu,Osanottajat - Säiliö</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Päällä</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Leveys | Korkeus</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderaattori on lähtenyt huoneesta, kukaan ei ole esittäjänä tällä hetkellä. Voit hakea moderaattorin oikeuksia tai odottaa.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Tässä huoneessa on muutama osanottaja mutta ei moderaattoria. Voit hakea moderaattorin oikeuksia tai odottaa.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>$APP_NAME palaute</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Kutsu</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Viesti käyttäjältä:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Viesti:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Käytä tätä linkkiä ottaaksesi osaa kokoukseen:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klikkaa tästä liittyäksesi huoneeseen</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>jos linkin kanssa on ongelmia, ole hyvä ja kopioi se selaimesi osoiteriville:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Rekisteröinti</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Käyttäjätietosi:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Tunnus:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Salasana:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Sähköposti:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Tiimi</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Rekisteröinti</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Salasanan nollaus</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Käytä tätä linkkiä syöttääksesi uuden salasanan:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klikkaa tästä syöttääksesi uuden salasanan</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>jos linkin kanssa on ongelmia, ole hyvä ja kopioi se selaimesi osoiteriville:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Salasanan nollaus</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Anna päivämäärä muodossa pp.kk.vvvv (esim. 24.12.2009)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Anna toimiva sähköpostiosoite, muodossa nimi@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Anna liukuluku, esim. 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Anna kokonaisluku, esim. 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Anna puhelinnumero, esim. +358501234567</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Anna kellonaika, esim. 12:23 (tt:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Salasanasuojaus</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Salasana</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Voimassaoloaika</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Päättymätön</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Aikaväli</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Kertakäyttöinen</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Voimassa alkaen:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Voimassa kunnes:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Kutsu $APP_NAMEiin</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Kutsua ei ole saatavilla antamallesi kutsukoodille</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Kutsu on jo käytetty. Kutsua ei voi uudelleenkäyttää.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Kutsu ei ole kelvollinen.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Salasana:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Tarkista salasana</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Väärä salasana!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Ääni_Kuva</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synkronisoi ääni/kuva</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Kirjautuminen onnistu, mutta haluamasi istunto ei ole aktiivinen tai ei ole tallennettu palvelimelle. Sinun täytyy hankkia uusi istunto-id ja yrittää kirjautumista uudelleen.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Istunnon id ei ole kirjautunut tai sillä ei ole ylläpitäjän oikeuksia. SOAP-yhdyskäytävä tarvitsee ylläpitokäyttäjän oikeudet lisätäkseen käyttäjiä.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Tällä istunnolla ei ole etäkäyttäjän tietoja. Joko kutsuit SOAP-yhdyskäytävää ennen ohjelman käyttämistä tai käytät väärää istunnon id:tä</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Nauhoittaminen on vielä Beta-asteella!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-akseli</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-akseli</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>l</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>leveys</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>k</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>korkeus</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Muuta läpinäkyvyyttä</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Avaa selain</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Sulje selain</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Yhteys palvelimeen menetettiin. Sinun täytyy käynnistää sovellus uudelleen ja/tai tarkistaa verkkoyhteytesi.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Osoitin</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synkronisoidaan</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synkronisoidaan käyttäjiä, ole hyvä ja odota</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Lataa SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Lataa PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Lataa JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Lataa PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Lataa TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Muistutus:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategoria:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Toisto:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>tyhjä</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Sijainti:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Alku</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Loppu</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Otsikko:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Kommentti:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Kutsu ihmisiä</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Päivittäinen</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Kuukausittainen</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Vuosittainen</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Tapaamisen loppuaika on ennen alkuaikaa!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Anna otsikko!</value>
+  </string>
+  <string id="580" name="580">
+    <value>Oikea-Vasen</value>
+  </string>
+  <string id="581" name="581">
+    <value>Käytä tätä jos tarvitset käänteistä sanajärjestystä (oikealta vasemmalle)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Paneeli</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Katsele nauhoitettuja kokouksia tai tapahtumia</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Kokous - Perusta konferenssi neljälle käyttäjälle (korkeintaan 16) &lt;br/&gt;kaikilla on oikeus ääneen + kuvaan</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Tapahtuma - Luo konferenssi enintään 200 osanottajalle. &lt;br/&gt;Vain moderaattorilla on kuva ja ääni</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Luo käyttäjiä, huoneita, organisaatioita &lt;br/&gt; + muokkaa asetuksia</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Käyttäjät tällä hetkellä tässä huoneessa</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Tunnis</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Ladataan dokumenttia. Ole hyvä ja odota kunnes kaikki asiakkaat ovat synkronisoineet.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Lähetys valmis, muunnetaan dokumenttia ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Aloita lähetys</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Tiedoston lähetys ja tuonti-ikkuna. Ole hyvä ja valitse tiedosto koneeltasi.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Peruuta</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Valitse tiedosto</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Yhteydet</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Arvo</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Stream id</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Kirjaudu</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Yhdistetty alkaen</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Huone / Laajuus</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Poista käyttäjä</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Poista käyttäjä</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Haluatko varmasti katkaista tämän asiakkaan yhteyden?&lt;br/&gt; Tämä vain poistaa asiakkaan huoneesta. Asiakas voi kirjautua aina uudestaan.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Istuntosi on lopetettu ylläpitäjän tai moderaattorin toimesta.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Puhelin</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Käyttäjä on tämän huoneen moderaattori</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Käyttäjä voi piirtää piirtoalueelle</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Käynnistä Ääni/Kuva tai muuta laitteiden asetuksia</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Salli tämän käyttäjän piirtää piirtoalueelle</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Estä käyttäjän piirtäminen piirtoalueelle</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Käyttäjät</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Tiedostot</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Piirtoalue</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Keskustelu</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Tunnuksesi on liitetty useampaan organisaatioon. Ole hyvä ja valitse yksi tätä istuntoa varten.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Tämä huone on täynnä. Ole hyvä ja yritä myöhemmin uudestaan.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Huoneen tyyppi</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Tapaamishuone</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Palvelimen aika</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Muistutus</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Viesti käyttäjältä:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Viesti:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klikkaa tätä linkkiä osallistuaksesi kokoukseen:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klikkaa tästä liittyäksesi huoneeseen</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>jos linkin kanssa on ongelmia, ole hyvä ja kopioi se selaimesi osoiteriville:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>hae sisäisiä</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>ulkoiset käyttäjät</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>nimen etuliite</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>nimi</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Sähköposti</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Varmista poistuminen</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Haluatko varmasti kirjautua ulos?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Toiminnot</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Esittelyhuone</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Esittelyaika</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Kokousajastin</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Tämä on esittelyhuone. Poistaaksesi tämän varoituksen voit hankkia oman yksityishuoneesi tai perustaa oman palvelimen. Sinut kirjataan ulos automaattisesti hetken kuluttua:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderoitu</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Ole hyvä ja odota kunnes moderaattori on liittynyt huoneeseen. Moderaattori voi olla joko opettaja, ylläpitäjä tai tämän huoneen tekijä.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Uusi ruudun jako on tulossa käyttäjältä:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Aloita jakaminen</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Lisää uusi kokous</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Kokoushuone</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Tapahtumahuone</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderointi</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderoi käyttäjiä</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderoi huoneita</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Haluatko asettaa tämän käyttäjän moderaattoriksi tälle organisaatiolle?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Ole hyvä ja valitse organisaatio ennenkuin yrität lisätä siihen käyttäjiä!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisaatio - Moderaattori</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Haluatko poistaa käyttäjän organisaatiosta?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Tämä käyttäjä on Moderaattori</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Tämä käyttäjä ei ole moderaattori</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Haluatko että käyttäjä ei ole moderaattori tälle organisaatiolle?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Lisää tai poista käyttäjiä tai huoneita organisaatiossasi</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Haluatko poistaa tämän tietueen?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Haluatko todella poistaa käyttäjän organisaatiostasi? Tämä poistaa pelkästään linkin käyttäjän ja organisaation välillä, jos haluat poistaa käyttäjän niin joudut kirjautumaan ylläpitopaneeliin.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Et voi poistaa itseäsi!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Tämä toiminto vaatii ylläpitäjän oikeudet!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Tälle ID-numerolle ei ole määritelty istuntoa.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Tämä on ylläpitäjän tai moderaattorin tili. Voit muokata tiliä vain ylläpitopaneelin kautta.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Klikkaa seuraavaa linkkiä viimeistelläksesi rekisteröintisi tai kopioi osoite selaimesi osoiteriville.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klikkaa varmistaaksesi sähköpostiosoitteesi</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Käyttäjää ei löytynyt annetulla tunnuksella</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Käyttäjä on jo aktivoitu!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Käyttäjätunnuksesi aktivoitiin onnistuneesti!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Kirjaudu nyt</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Käyttäjätunnustasi ei ole aktivoitu. Muista käyttää varmistussähköpostin mukana tullutta linkkiä ennen uutta yritystä.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Olen rekisteröitynyt onnistuneesti. Lähetimme sinulle sähköpostin jossa on varmistuskoodi. Ole hyvä ja tarkista sähköpostilaatikkosi.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Poista käyttäjän moderointioikeus</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Anna moderointioikeus tälle käyttäjälle</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Käyttäjä</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Käyttöoikeus piirtopöydälle</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderaattori</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderointi: Ole hyvä ja valitse käyttäjä listalta antaaksesi hänelle oikeuden piirtopöydälle, moderointiin tai videoon.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Tämä käyttäjä on jo moderaattori, joten hänellä on aina oikeus piirtää.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Et voi poistaa moderointioikeutta itseltäsi!</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Salli tämän käyttäjän julkaista ääntä / kuvaa</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Poista ääni/kuva tältä käyttäjältä</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Haluaisin saada moderointioikeuden tähän huoneeseen</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Haluan piirtää piirtoalueelle</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Haluan jakaa ääntä/kuvaa</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Olet tämän huoneen moderaattori</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Sinulla on oikeus piirtää piirtoalueelle</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Sinulla on oikeus jakaa ääntä/kuvaa</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Lähetä viesti moderaattorille</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Käyttäjä</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>pyytää moderointioikeutta. Käytä kuvakkeita listassa käyttäjän vieressä salliaksesi tai poistaaksesi oikeuden.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>pyytää oikeutta piirtää piirtoalueelle. Käytä kuvakkeita listassa käyttäjän vieressä salliaksesi tai poistaaksesi oikeuden.</value>
+  </string>
+  <string id="695" name="695">
+    <value>pyytää oikeutta jakaa ääntä/kuvaa. Käytä kuvakkeita listassa käyttäjän vieressä salliaksesi tai poistaaksesi oikeuden.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Sinun täytyy odottaa kunnes moderaattori liittyy huoneeseen.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Peruuta</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Tallenna</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Päivä</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Kuukausi</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Vuosi</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/french.xml b/src/main/webapp/languages/french.xml
new file mode 100644
index 0000000..1ff0e42
--- /dev/null
+++ b/src/main/webapp/languages/french.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conférence</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Réunion</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Conférence</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Paramètres</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Enregistrer</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Aucun fichier disponible</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Enregistrement par le professeur</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Utilisateurs connectés :</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Commencer une conférence</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mon nom</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Vidéoconférence</value>
+  </string>
+  <string id="15" name="import">
+    <value>Nouvelle présentation</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Charger à nouveau la liste</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Retour à la liste des fichiers</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nouveau sondage</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Un nouveau sondage pour la conférence.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Question :</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Type de sondage :</value>
+  </string>
+  <string id="22" name="create">
+    <value>Créer</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info : Chaque utilisateur reçoit le nouveau sondage.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Créer un sondage</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Oui/Non</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numérique 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Sondage</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Vous devez être modérateur pour créer un sondage.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Votre vote est enregistré.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Vous avez déjà voté pour ce sondage.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Voter !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Votre réponse :</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Oui</value>
+  </string>
+  <string id="35" name="no">
+    <value>Non</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Question posée :</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Résultats des votes</value>
+  </string>
+  <string id="38" name="question">
+    <value>Question :</value>
+  </string>
+  <string id="39" name="results">
+    <value>Résultats :</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Réponses :</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Aucun sondage n'est en cours.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Voter !</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Réunion (max. 4 places)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conférence (max. 50 places)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Mode</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Autres places</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Déjà choisi</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Entrer</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>L'animateur a quitté la réunion.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Information du système</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Choix du périphérique</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Choix de la caméra :</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Choix du micro :</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Annuler</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Vous devez vous reconnecter</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Edition des réglages</value>
+  </string>
+  <string id="58" name="course">
+    <value>Cours :</value>
+  </string>
+  <string id="59" name="language">
+    <value>Langue :</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Annuler</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Nettoyer le tableau blanc</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Voulez-vous nettoyer le tableau blanc avant d'ajouter une nouvelle image ?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Ne pas redemander</value>
+  </string>
+  <string id="65" name="no">
+    <value>Non</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Modifier les réglages</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Demander confirmation avant de nettoyer le tableau blanc</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Information sur l'utilisateur</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Effacer tableau blanc</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Annuler</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Refaire</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Sélectionner un objet</value>
+  </string>
+  <string id="73" name="text">
+    <value>Texte</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Dessiner</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Tracer une ligne</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Surligner</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectangle</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Flèche</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Supprimer l'élément sélectionné</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Demander la modération</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Appliquer</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Devenir modérateur</value>
+  </string>
+  <string id="85" name="close">
+    <value>Fermer</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Italique</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Gras</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>En attente...</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Un utilisateur souhaite devenir modérateur :</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Accepter</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Rejeter</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Envoi aux autres utilisateurs</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accepté</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rejeté</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Changer de modérateur</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Vous n'êtes pas le modérateur de ce cours !</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Modérateur :</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Cette salle est pleine. Merci de revenir plus tard.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Fermer</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Erreur de formulaire</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Le nom d'utilisateur doit contenir au moins 4 caractères</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Le mot de passe doit contenir au moins 4 caractères</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Le nom d'utilisateur existe déjà</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Cette adresse e-mail est déjà utilisée</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Erreur système, merci de contacter l'administrateur</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Connexion</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Utilisateur :</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Mot de passe :</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Langue :</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Se connecter</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>S'enregistrer</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Utilisateur :</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Mot de passe :</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Retapez :</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Prénom :</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Nom :</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-mail :</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Pays :</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Enregistrer</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Annuler</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Inscription</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Accueil</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Utilisateurs</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Groupes</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisations</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Salles</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Publique</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Entrer</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Identifiant</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Mot de passe</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Confirmez</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Prénom</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Nom</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Date de naissance</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Rue et N°</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Code postal/Ville</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Pays</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Commentaires</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Détails sur l'utilisateur</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Sauvegarder</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Sauvegarder</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Prénom</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Nom</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Suivant</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Précédent</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Effacer l'enregistrement</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Annuler</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Effacer</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nouvel enregistrement</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Actualiser l'enregistrement</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Effacer l'enregistrement</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Statut</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Désactivé</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Activé</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisations</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Calendrier</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Fermer</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID Organisation</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nom</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Utilisateur</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Modérateur</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Type d'utilisateur</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Nom</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Ajouter une organisation</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Ajouter une organisation</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Annuler</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Ajouter</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Effacer organisation</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Utilisateur</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Ajouter utilisateur</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Effacer utilisateur</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Ajouter utilisateur</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Rechercher un utilisateur</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Rechercher</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Utilisateur</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Entrer</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Salles</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Salles</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nom</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Publique</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisations</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Salle de conférence</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nom</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Type</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Publique</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Commentaire :</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Enregistrer</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Charger</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Enregistrer sous</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Nom du fichier</value>
+  </string>
+  <string id="201" name="files">
+    <value>Nom du fichier</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Annuler</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Sauvegarder</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Erreur</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Chargement</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objets chargés</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronisation des clients, patientez...</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Chargement des données</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronisation des clients, patientez...</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Effacer la zone de dessin</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Effacer la zone de dessin, toutes les données sur le tableau blanc seront perdues</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirmer avant de charger un fichier</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Envoyer invitation</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Envoyer invitation</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Sujet</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinataire</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Message</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Envoyer</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Envoyer</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Détails sur l'utilisateur</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Votre pseudonyme pour cette conférence</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Pseudo</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Prénom</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Nom</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Langue</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Entrer</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Chargement</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Sélectionnez votre langue</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Mot de passe erroné</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Merci de mettre deux mots de passes identiques avec 6 caractères minimum</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Adresse e-mail erronée</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Vous avez utilisé une adresse E-mail non valide</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Enregistrement effectué</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Votre compte a été créé. Vous pouvez maintenant vous connecter</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Vous ne pouvez pas partager votre écran car un autre utilisateur utilise déjà cette fonctionnalité</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Partage annulé</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Partager votre écran</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Mauvaise bande passante : Vous ne pouvez pas synchroniser votre écran. Des images seront supprimées.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Ecran de :</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Dessiner</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>T'chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Fichiers</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membres</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Télécharger le document original</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Télécharger le document PDF</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Chargement de la présentation sur le tableau blanc</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Déplacer cet objet</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Redimensionner cet objet</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Aller à la première page</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Aller à la page précédente</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Aller à la page suivante</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Aller à la dernière page</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>M.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Mme.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Clé</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Clé</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Dernière MAJ</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Mis à jour par</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Commentaire</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Clé</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Utilisateurs</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Effacer l'organisation</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Effacer</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Cet utilisateur est déjà membre de l'organisation</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Nouvelles</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Raccourcis</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Aller à la réunion</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Aller à la conférence</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Aide et support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Un bug !</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Détail</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Site du projet (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Liste de diffusion pour les utilisateurs (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Se souvenir de moi</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Contenu</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Ma page personnelle</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mes réunions programmées</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Mes conférences programmées</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Réunions publiques</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Réunions privées</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Auditorium public</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Auditorium privé</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Contenu public</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Contenu privé</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Contenu personnel</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Modération</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Demander la modération</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Sondage</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Choisir un fichier</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Configuration</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Choix micro/caméra</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Config. du tableau blanc</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Sortir</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Retour aux salles</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Quitter</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Mot de passe oublié ?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Réinitialiser votre mot de passe</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Par e-mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Par login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Votre e-mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Votre login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Envoyer un e-mail de réinitialisation</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Aucune adresse trouvée. Soyez sûr d'avoir entré la même adresse que durant l'inscription.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Entrez votre e-mail ou nom d'utilisateur</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Il n'y a pas d'utilisateur avec ce nom</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Un e-mail contenant un lien vous a été envoyé. Si vous n'avez pas reçu d'e-mail, vérifiez votre antispam et redemandez une confirmation.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Quitter</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Message</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Hachage non valide. Pas d'utilisateur trouvé.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Changez votre mot de passe</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Changez votre mot de passe</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Nouveau mot de passe</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Retapez votre mot de passe</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Les mots de passe que vous avez entrés ne sont pas identiques.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 caractères ou plus ; la casse a de l'importance !</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Mot de passe changé. Vous pouvez vous connecter.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Erreur inconnue. Veuillez le signaler à votre équipe support.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Nom d'utilisateur inconnu</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Mot de passe non valide</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Déconnecté avec succès</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Enregistrement depuis la page d'accueil désactivé.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>E-mail non valide</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Nom de fichier identique, veuillez choisir un autre nom de fichier</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Nom de fichier trop court</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Impossible de sauvegarder l'adresse</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Utilisateur ajouté. Si vous ne l'avez pas assigné à une organisation, veuillez le faire sans quoi il ne pourra pas se connecter.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nouvel enregistrement</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Pas de champ trouvé avec cet ID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Pas d'étiquette trouvée pour ce champ.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Requière l'autorisation de l'administrateur</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editeur de langue</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Langue</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Nom</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Label-Valeur</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Champs</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Label-Nom</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Label-Valeur</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Vous avez effacé le label, pas le champ ! Vous ne pouvez pas effacer le champ, il peut contenir des labels pour d'autres langues.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ID du label non valide. Le FieldLanguagesvalues_Id n'est pas dans la base de données.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Vous ne pouvez pas supprimer ce champ, seulement les labels. Il n'y a pas de labels pour le moment ou il n'y a pas de labels pour ce langage.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Exporter</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Vous devez vous déconnecter pour voir les changements.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Ajouter un langage</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Effacer un langage</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Ajouter un langage</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nom</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Ajouter un langage</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Sauvegarde</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Retour au début</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Précédent</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Suivant</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Aller au dernier</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>L'utilisateur parle</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Son marche/arrêt</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Système</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Votre configuration</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Bonjour,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editez votre profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nouveau(x) Message(s) :</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Nouvelle image</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Détails utilisateurs</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Choisissez votre organisation</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Commencer l'export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Tous les utilisateurs</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Commencer l'export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Importer détails utilisateurs</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Choisissez users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Importer</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export en XML - Ces fichiers peuvent être utilisés pour : - Contribuer au projet - Importation sur un autre système - Sauvegarde - Personnalisation - Mettez-le dans le dossier des langues pour votre prochaine installation</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choisissez un fichier de langue à importer. Choisissez le bon langage depuis la boite déroulante ! Peu importe le nom du fichier, il sera importé pour ce langage</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Import - Choisir un fichier</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Enregistrer sous</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nom :</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Commentaire :</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Sauvegarde</value>
+  </string>
+  <string id="395" name="record">
+    <value>Enregistrements</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Lecteur d'enregistrements</value>
+  </string>
+  <string id="397" name="record">
+    <value>Enregistrement des salles privées et publiques</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Utilisateurs :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Inscrits :</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Utilisateur dans la salle :</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Rafraichir</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Cette salle est pleine. Réessayez dans quelques minutes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Infos : Cliquez sur une salle</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Discutez avec les utilisateurs de cette salle :</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Salle :</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Utilisateurs dans cette salle :</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Depuis :</value>
+  </string>
+  <string id="409" name="record">
+    <value>Lire l'enregistrement</value>
+  </string>
+  <string id="410" name="record">
+    <value>Durée :</value>
+  </string>
+  <string id="411" name="record">
+    <value>Date :</value>
+  </string>
+  <string id="412" name="record">
+    <value>Mode enregistrement ! Vous ne pouvez rien modifier, ceci est un document enregistré !</value>
+  </string>
+  <string id="413" name="record">
+    <value>Lire cet enregistrement</value>
+  </string>
+  <string id="414" name="record">
+    <value>Lecture/Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Commencer l'enregistrement</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stopper l'enregistrement</value>
+  </string>
+  <string id="417" name="record">
+    <value>Enregistrement :</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Quelqu'un est déjà en train d'enregistrer cette session :</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Enregistrement par :</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Si vous annulez l'enregistrement, il ne sera pas sauvegardé.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Reprendre</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Fermer cette fenêtre et reprendre l'enregistrement</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Changer la couleur de ligne</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Choisir une couleur</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Désactiver/Activer la couleur de ligne</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>changer la couleur de remplissage</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Désactiver / Activer couleur de remplissage</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Changer la largeur de ligne</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Fermer</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Changer la taille de la police</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Effacer l'enregistrement</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Invité</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Par :</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nom</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Salle</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Annuler</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Démarrer</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nom</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Effacer l'historique du t'chat</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>T'chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Envoyer message</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticônes</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticônes</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choisissez le périphérique</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio et Vidéo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Audio seulement</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Vidéo seulement</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Pas d'audio ni de vidéo (image statique)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Aucun flux Audio/Vidéo ne sera émis, à la place l'image de votre profil sera affichée. Choisissez cette configuration en cas de problème de bande passante ou si votre connexion internet est lente.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>LU</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>MA</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ME</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>JE</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>VE</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DI</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Lundi</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Mardi</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Mercredi</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Jeudi</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Vendredi</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Samedi</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Dimanche</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CS</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendrier semaine</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Janvier</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Février</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Mars</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Avril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mai</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juin</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juillet</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Août</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Septembre</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Octobre</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembre</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Décembre</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendrier</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participants</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Montrer la disposition</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Largeur | Hauteur</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Conteneur-vidéo</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Conteneur-modération</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Conteneur-tableau blanc</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Activé</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Largeur | Hauteur</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Conteneur Fichier,t'chat,participants</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Activé</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Largeur | Hauteur</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Le modérateur a quitté la salle. Personne n'est présent actuellement. Vous pouvez demander la modération ou attendre.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Il n'y a pas de modérateur dans cette salle, mais il reste des participants. Vous pouvez demander la modération ou attendre.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Sentiments sur $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Message de :</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Message :</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Cliquez sur le lien pour participer à la conférence :</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Cliquez pour entrer dans la salle</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Si ce lien ne fonctionne pas, copier/coller-le dans votre navigateur.</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Inscription $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Vos données utilisateur :</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Mot de passe :</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-mail :</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Equipe-$APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>Inscription $APP_NAME</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Réinitialiser mot de passe</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Cliquez sur le lien pour saisir un nouveau mot de passe :</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Cliquez ici pour saisir un nouveau mot de passe</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Si ce lien ne fonctionne pas, copier/coller-le dans votre navigateur.</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME nouveau mot de passe</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Entrez une date valide, par exemple 24.12.2001 (jj.mm.aaaa)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Entrez un e-mail valide, par exemple name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Entrez un nombre décimal valide, par exemple 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Entrez un entier valide, par exemple 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Entrez un numéro de téléphone valide, par exemple 01 02 03 04 05</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Entrez une heure valide, par exemple 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Protégé par mot de passe</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Mot de passe</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Période de validité</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Indéfinie</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Temporaire</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Une connexion</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valide à partir de :</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valide jusqu'à :</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitation à une conférence $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Pas d'invitation disponible pour ce code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>L'invitation est déjà utilisé. Impossible d'accéder à la réunion/conférence.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Ce code d'invitation n'est pas valide.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Mot de passe:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Vérification du mot de passe</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Mot de passe non valide !</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Navigateur</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchroniser Audio/Vidéo</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Votre mot de passe est correct mais la session est inactive. Vous devez récupérer une nouvelle ID de session et vous reconnecter.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>L'ID de session n'est pas connecté ou ne possède pas les droits d'administration. La passerelle SOAP nécessite un utilisateur ayant les droits d'administration pour intégrer de nouveaux utilisateurs.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Cette session n'a pas d'utilisateur distant connecté. Soit vous n'avez pas appelé la passerelle SOAS avant d'accéder à l'application, soit vous utilisez une mauvaise ID de session.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>L'enregistrement est en construction...</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>axe-x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>axe-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>Largeur</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>Hauteur</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Modifier la transparence</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Navigateur ouvert</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Navigateur fermé</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>La connexion avec le serveur est interrompue. Vérifiez le réseau ou contactez l'adminitrateur.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointeur</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronisation</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronisation des utilisateurs, patientez s'il vous plait...</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Télécharger en SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Télécharger en PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Télécharger en JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Télécharger en PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Télécharger en TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Rappel :</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Catégorie:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Répétition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>Nul</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Lieu :</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Début</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Fin</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titre :</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Commentaire :</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Inviter</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Jour</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mois</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Année</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Fin de rendez-vous est après début de rendez-vous !</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Indiquez un titre s'il vous plait</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Cochez cette case pour écrire de droite à gauche</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Tableau de bord</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Visionner vos réunions ou conférences</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Accéder aux réunions en cours&lt;br/&gt;Tout le monde pourra parler et entendre l'ensemble des conversations.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Accéder aux conférences en cours&lt;br/&gt;Le droit de parole est réservée au conférencier. Vous ne pourrez qu'écouter.</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Créer un utilisateur, une réunion, une organisation.&lt;br/&gt; + changer la configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Utilisateurs actuellement dans cette réunion :</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Document en chargement. Attendez que tous les utilisateurs soient synchronisés.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Téléchargement ok, conversion en cours...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Démarrer l'importation</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Sélectionnez un fichier sur votre disque :</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Quitter</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Sélectionner un fichier</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connexions</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Valeur</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connecté depuis</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Salle / Limite</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Sortir utilisateur</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Sortir utilisateur</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Voulez-vous vraiment sortir cet utilisateur ?&lt;br/&gt; Cela supprimera le client de la réunion actuelle mais il pourra se reconnecter.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Votre session a été interrompue par l'administrateur ou le modérateur.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Téléphone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Modérateur de cette réunion</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Autoriser/Refuser le droit de dessiner sur le tableau blanc</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Démarrer audio/vidéo ou changer les paramètres</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Autoriser cet utilisateur à dessiner sur le tableau blanc</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Retirer le droit de dessiner sur le tableau blanc.</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Utilisateurs</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Fichiers</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tableau blanc</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>T'chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Votre compte est assigné à plusieurs organisations. Choisissez-en une pour cette session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Le nombre max. d'utilisateurs est atteint. Veuillez réessayez plus tard.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Type de salle</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Salle temporaire</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Heure serveur</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Rappel</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message de l'utilisateur :</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message :</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Cliquez sur ce lien pour participer à la réunion :</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Cliquez ici pour entrer dans la salle</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Si vous avez un problème avec le lien, copier-coller-le dans votre navigateur s.v.p. :</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>recherche interne</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Ajouter un utilisateur extérieur</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Prénom</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Nom</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirmer la sortie</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Etes-vous sûr de vouloir quitter ?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Salle Démo</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Heure Démo</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Temps de réunion</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>C'est une salle de Démo. Pour désactiver ce message vous devez utiliser une réunion privée pour votre usage personnel ou avoir votre propre serveur. Vous allez être automatiquement déconnecté dans :</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Modération</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>S.V.P. attendez que le modérateur rejoigne la salle.&lt;br/&gt;Le modérateur peut-être un enseignant,&lt;br/&gt;l'administrateur ou le créateur de&lt;br/&gt; cette réunion.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Nouveau partage d'écran</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>C'est un nouveau partage d'écran de cet utilisateur:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Démarrer le partage</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Ajouter une nouvelle réunion</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Salle de réunion</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Salle de conférence</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Modération</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Modérer les utilisateurs</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Salles modérées</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Voulez-vous que cet utilisateur devienne un modérateur de cette organisation ?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Choisissez une organisation avant de lui ajouter un utilisateur s.v.p. !</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - Modérateur</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Voulez-vous réellement supprimer cet utilisateur de cette organisation?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Cet utilisateur est un modérateur</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Cet utilisateur n'est pas un modérateur</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Voulez-vous que cet utilisateur ne soit pas un modérateur de cette organisation ?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Ajouter ou supprimer des utilisateurs ou des salles de votre organisation</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Voulez-vous réellement supprimer cet enregistrement ?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Voulez-vous réellement supprimer cet utilisateur de votre organisation ? Vous supprimez seulement le lien entre cet utilisateur et votre organisation, pour supprimer réellement cet utilisateur vous devez aller dans l'onglet d'administration.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Vous ne pouvez pas vous supprimer !</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Cette méthode nécessite des droits d'administration.</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Il n'y a pas de session associée à cet ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>C'est un compte d'administration ou de modérateur. Vous ne pouvez l'éditer qu'à travers l'onglet d'administration.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Pour terminer votre enregistrement veuillez cliquer sur le lien suivant. Ou copier l'URL dans la barre d'adresse de votre navigateur.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Cliquez pour vérifier votre E-mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Aucun utilisateur pour ce hachage.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Cet utilisateur est déjà activé !</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Vous avez activé votre compte avec succès !</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Se connecter maintenant</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Votre compte n'est pas actif. Utilisez le lien dans l'e-mail que vous avez reçu pour l'enregistrement.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Vous êtes enregistré. Nous vous avons envoyé un e-mail avec un code de vérification. Regardez votre boite de messagerie.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Enlever le rôle de modérateur à cet utilisateur</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Donner les droits de modération à cet utilisateur</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Utilisateur</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Accès au tableau blanc</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Modérateur</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Modération : Choisissez un utilisateur de cette liste pour lui donner accès au tableau blanc, à la modération ou à la vidéo.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Cet utilisateur est déjà modérateur, donc il a le droit de dessiner.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Il s'agit de vous ! Vous ne pouvez pas vous retirer &lt;br/&gt;les droits de modération.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Autoriser cet utilisateur à publier son Audio/Vidéo</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Supprimer l'Audio/Vidéo de cet utilisateur</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Je souhaiterais obtenir le modération de cette salle.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Je souhaiterais dessiner sur le tableau blanc</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Je souhaiterais partager mon audio/vidéo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Vous êtes le modérateur de cette salle</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Vous êtes autorisé à dessiner sur le tableau blanc</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Vous êtes autorisé à partager votre Audio/Vidéo.</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message au modérateur</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>L'utilisateur</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>&lt;br/&gt;demande la modération. Utilisez l'icône dans la liste des utilisateurs pour ajouter ou enlever la modération.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>&lt;br/&gt;demande l'accès au tableau blanc. Utilisez l'icône dans la liste des utilisateurs pour ajouter ou enlever le droit de dessiner sur le tableau blanc.</value>
+  </string>
+  <string id="695" name="695">
+    <value>&lt;br/&gt;demande le partage audio/vidéo. Utilisez l'icône dans la liste des utilisateurs pour ajouter ou enlever le droit de partager l'audio/vidéo.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Vous devez attendre qu'un modérateur entre dans la salle.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Annuler</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Sauver</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Jour</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mois</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Année</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Ajouter un fichier</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Ajouter un dossier</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Rafraichir</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Poubelle</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Mes fichiers personnels</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Les fichiers de la salle (Public)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Ajouter un fichier</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Ajouter un dossier</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Supprimer un dossier</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Modifier le nom</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nouveau dossier</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Etes-vous sûr de vouloir supprimer cet item ?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Recherche</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Recherche</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Ouvrir le document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Montrer tous les fichiers (Arborescence)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Fermer le document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Supprimer le fichier</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Tableau blanc non autorisé.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Propriétés Document</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>+net +long</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>conseillé</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Un utilisateur souhaite partager son écran. Voulez-vous le voir ?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Vous partagez actuellement votre écran. Pour arrêter ce partage, cliquez sur le bouton Sortie de la fenêtre de partage.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Session de partage</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Vous partagez déjà votre écran !</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Vue d'écran</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Sortie</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Partage d'écran</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Cliquez sur Partager pour publier votre écran</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Partager</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Arrêter</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Sélectionner la partie d'écran :</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Changer la largeur</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>La session de partage est terminée !</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Changer la hauteur</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Marge-X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Marge-Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Largeur :</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Hauteur :</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>La connection a été fermée par le serveur</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Annuler</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>+ net</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Si vous fermez cette session vous ne pourrez plus redemarrer le partage pour cette session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirmez la fermeture de cette session de partage</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Ecran partage</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Enregistrement de la session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Navigation collaborative</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Oups... Firefox et Windows ne permettent pas une bonne navigation collaborative. Veuillez utiliser un autre navigateur pour utiliser cette fonction.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Précédent</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Suivant</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Rechargement</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Accueil</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Chargement</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Ajouter ce site web comme site par défaut pour votre profil</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Testez votre micro et votre caméra avant d'entrer dans la réunion en enregistrant quelques secondes. Vous pourrez alors rejouer votre enregistrement pour vérification.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Ne plus montrer ce test (modifiable dans le profil)</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Annuler</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Début de réunion</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Ne plus poser cette question</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Vous pouvez continuer sans tester si vous ne pensez pas publier votre voix ou votre vidéo. Les participants sans audio ou vidéo peuvent utiliser le tableau blanc, partager leur écran ou écrire des messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Niveau</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Cliquer sur Début</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Commencer la réunion</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Commencer la conférence</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choisir la salle</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Auto-test</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Commencer la réunion</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Chronologie d'emploi :</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Début d'enreg.</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Ne pas montrer le test audio/vidéo (Enregistrement) avant d'entrer en réunion.</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Salles publiques</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Les salles publiques sont accessibles à tous les utilisateurs.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Salles privées</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Les salles privées ne sont accessibles qu'aux utilisateurs de l'organisation pour laquelle elles ont été créées.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Mes salles</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Ici les salles sont créées pour un usage personnel. Elles sont créées par le calendrier et ont une date de début et de fin. Elles ne sont listées ici que tant qu'elles sont valides dans le jour J (aujourd'hui).</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Vous devez être modérateur pour faire cela.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Demander la modération</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Demander l'accès au tableau blanc</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Demander l'accès à caméra/micro</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Ce hachage est déjà utilisé. Vous ne pouvez l'utiliser deux fois.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>DEBUT</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>Sortie</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Voulez-vous réellement sortir ? Vous devriez peut-être préalablement nettoyer les documents chargés, le tableau blanc ou les messages instantanés.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Sortie de réunion</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Salles</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choisir une salle pour la réunion</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Il y a un évènement non sauvegardé dans le calendrier. S.V.P. sauvegardez-le ou supprimez-le.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>S.V.P. ajoutez au moins un participant à votre réunion</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Voulez-vous réellement supprimer cet évènement ?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Attention</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Ajouter un évènement</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>jour</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>semaine</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mois</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Participants</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, votre plateforme de conférence web. Suivez les instructions.&lt;br/&gt;Cliquez sur le bouton 'Début' pour commencer une réunion immédiatement ou allez au calendrier pour planifier une réunion.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Planifier</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Pour planifier une réunion vous pouvez créer un événement dans le calendrier.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Besoin d'aide ?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Accès réservé</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Recherche</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Ajouter</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Il n'y a pas d'utilisateur sélectionné. S.V.P. choisissez un utilisateur dans la liste.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Ajouter un participant</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Sauvegarde</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Supprimer</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Détails de l'évènement</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Modérateurs par défaut</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Nom</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Ajouter un nouveau modérateur par défaut</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>C'est le super modérateur</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Si la salle est modérée, un utilisateur avec le niveau modérateur ou administrateur est automatiquement modérateur s'il participe à la réunion. Si vous ne voulez pas de ce fonctionnement et que voulez qu'un certain utilisateur devienne modérateur, utilisez l'option modérateur par défaut.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Un super modérateur est toujours modérateur quand il participe à une réunion, et personne ne peut lui retirer ce droit</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Appliquer la super-modération à cet utilisateur</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Retirer la super-modération à cet utilisateur</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Si vous spécifiez une organisation pour la réunion, seuls les utilisateurs qui appartiennent à cette organisation y ont accès (S'il ne s'agit pas d'une réunion publique !)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisation</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Etes-vous sûr ?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Voulez-vous réellement supprimer cet item ? Vous devez utiliser le bouton Sauvegarde pour garder les modifications !</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Aucun utilisateur sélectionné. S.V.P. sélectionnez en un avant de l'ajouter !</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Ajouter un nouveau modérateur par défaut</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Voulez-vous que cet utilisateur soit super-modérateur ? Un super-modérateur n'est pas seulement modérateur de la réunion, son rôle ne peut de plus être enlevé par aucun autre modérateur. Vous devez sauvegarder la salle pour sauvegarder ces paramètres !</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Voulez-vous retirer la super-modération à cet utilisateur ? Vous devez sauvegarder la salle pour sauvegarder ces paramètres !</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Cet utilisateur est un super-modérateur. Vous ne pouvez pas enlever la modération à un super-modérateur !</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Voulez-vous réellement supprimer ce fichier/dossier ?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Supprimer Fichier/Dossier ?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mlle.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Propriétés</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Montrer la souris sur l'écran</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Partager l'audio avec l'applet SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Partager l'audio avec SIP et la vidéo avec Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Zoom 100%</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Voir écran</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>L'utilisateur</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>souhaite partager son écran. Voulez-vous le voir ?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Fermer</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>La session a été fermée par l'utilisateur qui partageait son écran!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Nouveau partage d'écran</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Réduire</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximiser</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Vidéo</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Chronologie de l'enregistrement</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Mes enregistrements</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Enregistrements publics</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Nom</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Durée</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>par</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Enregistrement</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Vous pouvez enregistrer et partager votre écran en même temps. Pour permettre aux autres de voir votre écran, cliquez le bouton Partager en haut. Pour seulement enregistrer la session, il suffit de cliquer sur Démarrer l'enregistrement.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Démarrer l'enregistrement</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Arrêter l'enregistrement</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Télécharger le fichier FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Salle</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Jouer</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>L'utilisateur a son micro activé</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Arrêter le partage</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Accepter les questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Désactivez ceci pour éviter que les utilisateurs ne vous disturbent dans la salle. Cela a pour effet de masquer le bouton permettant de demander la modération.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Droits</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Télécharger le fichier AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Ecran vidéo brut</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio seulement</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Il y a eu des erreurs durant le traitement de l'enregistrement.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>L'enregistrement n'est pas encore prêt à être visionné. Veuillez réessayer dans quelques minutes.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log :</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Message de l'enregistreur</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>L'applet SIP n'est pas prêt</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Paramètre compte SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>Paramètres SIP pour chaque utilisateur. Vous pouvez activer ou désactiver SIP via Administration &gt; Configuration (Champ : enable_sip). Les données SIP pour chaque utilisateur devraient être créées automatiquement. Vous pouvez recréer les données en cochant "Regénérer les données SIP"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>La connexion à la passerelle SIP a échoué. Vous devrier vérifier les données d'autentification de votre fournisseur SIP et les données des comptes SIP de chaque utilisateur. En tant qu'administrateur vous pouvez toujours vous connecter et vérifier la configuration. En tant qu'utilisateur ou modérateur vous ne pourrez pas interragir.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>La connexion à la passerelle SIP a échoué. Veuiller contacter votre équipe de support !</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Connexion à la passerelle SIP...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Connexion à la passerelle SIP...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Montrer le journal</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Journaliser les messages de post traitement de l'enregistreur</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>Message de l'applet SIP</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>L'applet SIP n'est pas prêt. Acceptez l'applet et cliquez ok !</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Obtenir la modération</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Sauvegarder les modifications de la réunion</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>La réunion a été modifiée. Voulez-vous sauvegarder les changements ? &lt;br/&gt;&lt;br/&gt;Tous les participants à la réunion recevront un e-mail avec la date et l'heure mises à jour (cela dépend du type de notification pour cette réunion).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Pour accéder à d'autres enregistrements vous devez vous connecter à l'application $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choisissez l'utilisateur pour cette vidéo</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Utilisateurs disponibles pour ce conteneur</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Vous êtes un modérateur dans cette salle d'interview. Vous pouvez décider de qui parle et vous pouvez démarrer/arrêter l'enregistrement de la session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Démarrer l'enregistr.</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Arrêter l'enregistr.</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>L'enregisrement de l'interview est déjà démarré.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>L'enregistrement est déjà arrêté ou n'a pas encore démarré.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>L'enregistrement pour cette interview a déjà démarré !</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Annuler</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>Le post traitement d'une interview dure 5 minutes par minute d'interview. L'avancement actuel du post traitement est :</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Vous devez entrer votre mot de passe à nouveau pour créer automatiquement les données SIP</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Regénérer les données</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Vous ne pouvez déplacer ce fichier ou dossier dans son propre sous-dossier !</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Taille du disque local</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Taille du disque public</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Paramètres de la licence</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>Vous pouvez soit lier l'utilisateur à une date d'expiration ou à un nombre de minutes lorsque vous activez la licence.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Vérifier la licence</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Forfait</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Date d'expiration</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Secondes restantes</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Temps total</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Votre licence a expiré. Vous devez soit acheter des minutes (paiement à la minute) soit un volume forfaitaire.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Cliquez et achetez</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Temps restant sur votre compte :</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Information licence utilisateur</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Fermer</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Votre licence a expiré. Vous devez soit acheter des minutes (paiement à la minute) soit un volume forfaitaire</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Paramètres de la licence</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Vous pouvez soit acheter des minutes pour faire des conférences en ligne (paiement à la minute).&lt;br/&gt;&lt;br/&gt; Ou acheter un volume forfaitaire de 3-12 mois.&lt;br/&gt;&lt;br/&gt;Envoyer des invitations (liens directs vers les salles de conférences) ou créer des salles de conférences via le calendrier pour des utilisateurs externes est seulement possible avec un volume forfaitaire !</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Acheter 60 minutes 9,99 euros (16 cents par minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Acheter 5 heures 19,99 euros (6 cents par minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Acheter 3 mois pour 29,99 euros (9,99 euros par mois)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Acheter 6 mois pour 39,99 euros (6,66 euros par mois)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Paiement à la minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume forfaitaire</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>Vous avez une licence illimitée</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Votre licence expirera à :</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>Vous avez effectué un paiement à la minute. Il vous reste :</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Acheter un nouveau crédit !</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Voulez-vous votre propre serveur ?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Vous voudriez avoir $APP_NAME installé sur votre serveur ou intégré dans Moodle, SugarCRM, votre site web ou intranet ? Les prix commencent à 500 euros par installation !</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Ou envoyez-nous un message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Répondre à :</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message :</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Envoyer</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Cliquez ici pour obtenir des infos et les prix</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Détails de la carte de crédit</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Prénom</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Nom</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Type de carte de crédit</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>Carte VISA</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Numéro de carte</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Date d'expiration</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Numéro de vérification</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Adresse de facturation</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Adresse</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Ville</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Pays</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Etat (seulement USA)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>Code postal</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Montant</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Soumettre</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Etape 1: $APP_NAME - Formulaire de paiement</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>E-mail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Cliquez "Régler avec Paypal" pour payer.&lt;br/&gt; Paypal accepte VISA, MasterCard, Discover ou American Express. &lt;br/&gt;Il ne faut pas s'inscrire chez Paypal. &lt;br/&gt;Les citoyens allemands peuvent aussi payer avec un débit direct (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Merci d'avoir acheté $APP_NAME. &lt;br/&gt; &lt;br/&gt; Dès que nous aurons reçu le paiement, votre compte sera mis à jour.&lt;br/&gt; Vous recevrez un e-mail avec votre facture en PDF.&lt;br/&gt;Vous pouvez également vérifier les transactions passées et actuelles dansd votre profil.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Vous pouvez fermer cette fenêtre maintenant et retourner à $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Soumettre et acheter !</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Cliquer et acheter !</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Etape 3 : Paiement $APP_NAME - Vérifier la commande et acheter !</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Nom</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Paiement reçu !</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Bonjour,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>Nous avons reçu votre paiement. Votre profil utilisateur a été mis-à-jour. Voir votre facture ci-attachée. La facture ansi que toutes les factures passées peuvent être téléchargées dans votre profil utilisateur.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Merci d'utiliser $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Paiement $APP_NAME reçu-</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Statut des paiements et transactions</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Hachage de transaction</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Mois</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Statut</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Facture</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Vous devez acheter un volume forfaitaire pour pouvoir envoyer des invitations ou créer des réunions via le calendrier. Avec un paiement à la minute il ne vous est possible que d'accéder à $APP_NAME. Vous ne pouvez pas permettre à des tiers de participer à une réunion.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>Cette adresse e-mail est déjà utilisée par un autre utilisateur.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>Paramètres SIP</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>Le numéro de conférence et PIN sont créés automatiquement via la passerelle OpenXG RPC</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>Numéro SIP</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Supprimer les objets sur le document actuel seulement !</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Seule l'URL entrée dans la barre de statut est envoyée aux participants !</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Créer des groupes de travail [Groupes restreints]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choisir les utilisateurs pour un nouveau groupe de travail !</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Vous pouvez choisir les utilisateurs ici et créer une nouvelle salle de conférence ("Groupe de travail") pour eux. Les utilisateurs choisis seront automatiquement transférés dans la nouvelle salle ou recevront une notification. Les modérateurs des groupes de travail recevront en plus une liste des salles actuelles afin qu'ils puissent changer de salle si nécessaire.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Nom d'utilisateur</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Utilisateurs pour le nouveau groupe de travail :</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Créer un groupe de travail</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Annuler</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choisissez au moins un utilisateur pour le groupe de travail !</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Ajouter utilisateur au groupe</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Supprimer utilisateur du groupe de travail</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>L'utilisateur est modérateur du groupe de travail (Il peut gérer les groupes de travail et les utilisateurs des groupes de travail peuvent lui demander de venir dans la salle)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Type de salle</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Si vous cochez "Forcer utilisateur à changer de groupe de travail", tous les utilisateurs choisis seront automatiquement transférés vers la nouvelle salle. Autrement ils recevront une notification avec un bouton afin qu'ils &lt;i&gt;puissent&lt;/i&gt; aller dans la nouvelle salle. Les modérateurs de groupes de travail ont toujours la possibilité de gérer les groupes de travail et de passer de l'un à l'autre.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Gérer les groupes de travail</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Vous pouvez ici passer d'un groupe de travail à l'autre pour lesquels vous êtes modérateur. Les utilisateurs dans les groupes de travail peuvent vous envoyer un message, par exemple pour vous demander de passer les aider. Vous pouvez également terminer un groupe de travil et tous les utilisateurs seront alors déconnectés.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Forcer utilisateur à passer dans un nouveau groupe de travail</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Nom</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Créé</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Utilisateurs disponibles</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Ajouter un utilisateur avec le 'plus' à gauche ou le supprimer avec la croix à droite !</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Paramètres du groupe de travail</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Ajouter des utilisateurs au groupe de travail</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Nom du groupe de travail</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Groupe de travail</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Aller dans la salle</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Changer pour ce groupe de travail</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminer le groupe de travail et déconnecter tous les utilisateurs</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Nouveau groupe de travail</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Il y a un nouveau groupe de travail disponible pour vous.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Aller dans le groupe de travail</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Actions du groupe de travail</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Vous pouvez réouvrir cette fenêtre via le menu principal dans la sedction "Actions" !</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Envoyer un message au modérateur du groupe de travail</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Nouveau groupe de travail</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Il y a un nouveau groupe de travail disponible. Vous pouvez passer dans cette salle. Les groupes de travail sont des groupes restreints avec la possibilité de demander de l'aide au modérateur. Votre groupe de travail est également accessible dans la section 'Mes réunions'.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Aller au groupe de travail</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Créé par :</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Nom du groupe de travail :</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Cette fenêtre restera ouverte même si vous quittez la salle !</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Utilisateurs pour ce groupe de travail</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Autres groupes de travail auxquels vous avez accès</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Envoyer un message au modérateur du groupe de travail. Par exemple si vous devez modérer la salle ou si vous avez une question particulière.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Envoyer</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Utilisateurs invités à ce groupe de travail</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Est modérateur du groupe de travail</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Voici tous les utilisateurs qui ont été invités à ce groupe de travail par le modérateur.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>Il n'y a pas de modérateur connecté pour le moment !</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Veuillez entrer un message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Veuillez venir nous aider, nous avons un problème dans notre groupe de travail !</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>Un utilisateur d'un groupe de travail a besoin de votre aide.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Groupe de travail demande de l'aide</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message :</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>De :</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Vous n'êtes pour le moment dans aucun groupe de travail. Mais vous pouvez accéder ici à tous les groupes de travail auxquels vous avez accès.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Sauvegarder le système. La sauvegarde inclut toutes les données générées par les utilisateurs. La configuration n'est pas inclue ainsi que les étiquettes des langues car ces données sont importées avec l'installateur du système. Pour mettre votre système à jour, exportez votre système (1) réinstallez la nouvelle version dans une nouvelle base de données (2) et importez la sauvegarde (3). La sauvegarde devrait être importée avant de générer de nouvelles données avec le nouveau système.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Sauvegarde système</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Permettre à l'utilisateur de partager/enregistrer son écran</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Refuser à l'utilisateur de partager/enregistrer son écran</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>L'utilisateur est modérateur, il peut tout faire !</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>voudrait partager/enregistrer son écran.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Vous avez la permission de partager/enregistrer votre écran</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Demander le droit de partager/enregistrer l'écran.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Autoriser/Refuser le droit de partager/enregistrer l'écran</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Couper le son</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Mettre le son</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Salle audio seulement</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Activez ce champ et les utilisateurs auront seulement l'option audio et non vidéo dans une salle de conférence. Ceci peut-être bon pour économiser de la bande passante.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Permettre le contrôle à distance (Durant un partage d'écran)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Refuser le contrôle à distance (Durant un partage d'écran)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Demander le droit de contrôler à distance (Durant un partage d'écran)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>Vous avez le droit de contrôler à distance (Durant un partage d'écran)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>souhaite contrôler à distance.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>L'utilisateur est modérateur, il peut tout faire (Contôle du bureau à distance)</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Autoriser/Refuser le droit au contrôle à distance (Durant un partage d'écran)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Pour copier et coller du texte de votre presse-papier vers l'écran du PC distant, cliquez sur l'écran, ensuite cliquez avec le bouton droit dans le champ de texte et choisissez "Insérer" du menu contextuel.&lt;br/&gt;&lt;br/&gt;2) Pour copier du texte depuis le PC distant vers le presse-papier de votre PC, mettez le texte en surbrillance sur l'écran du PC distant, ensuite cliquez avec le bouton droit et choisissez &lt;i&gt;Copier le texte en surbrillancet&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copier et coller du texte de votre PC vers un PC distant et vice-versa..</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copier le texte en surbrillance</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Comment copier-coller</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Qualité du partage d'écran :</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>très haute qualité</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Haute qualité</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Qualité moyenne</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Basse qualité</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Clavier :</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Fermer le Webinar !</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>Le Webinar est déjà fermé, vous allez être redirigé vers une offre intéressante dans</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Fermer la salle</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>URL de sortie</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Paramètres de fermeture</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Si la salle est fermée les utilisateurs seront redirigés vers l'URL de sortie.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Nom</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Fichier de configuration</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Configuration Ldap</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Nom</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Activé</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inséré</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inséré par</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Mis à jour</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Mis à jour par</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>Les fichiers de configuration sont dans le répertoire webapps/openmeetings/conf. Vous devez charger manuellement les fichiers vers ce répertoire. Les modifications dans le fichier de configuration sont en ligne immédiatement.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Nom du fichier</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Si vous activez "Ajouter le domaine au nom d'utilisateur" la veleur du champ "domaine" sera ajoutée à chaque login entré dans la fenêtre de login. Ceci peut-être utile si le login dans le Ldap est enregistré en incluant le nom de domaine. Par exemple : un utilisateur entre "hans" le domaine spécifié étant "localhost.com", le login vérifié avec Ldap sera : hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Ajouter le domaine</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domaine</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insérer</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copier le texte en surbrillance</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Texte du presse-papier distant</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Montrer le presse-papier distant</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Ne plus montrer</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copier le texte ici...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>Vous devez avoir le droit de contôler à distance (ou avoir la modération) pour copier et coller du texte de ou vers l'écran distant.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Editer les paramètres par défaut...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Ne pas montrer la boite d'info dans le contrôle à distance à propos du copier-coller</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Sauver</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Enlever</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Annuler</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Inviter l'utilisateur dans la salle de conférence</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choisissez une salle de conférence. L'utilisateur invité recevra un message avec votre nom et un lien vers la salle.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connecté depuis :</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Entrer dans la salle après l'envoi de l'invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Inviter</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>souhaite vous inviter dans la salle de conférence :</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Message d'invitation</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Envoyer invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>n'a &lt;b&gt;pas&lt;/b&gt; accepté votre invitation !</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accepter</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Refuser</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Fus. horaire</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Détails de l'événement</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Nom</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Créé par</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Message du fus. hor.</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Vérifiez "le message du fuseau horaire" pour transmettre aux utilisateurs un message la fois prochaine qu'ils se connectent.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Veuillez vérifier le fuseau horaire dans votre profil utilisateur.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>Nouvelle conférence $APP_NAME :</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Détails :</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Début :</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Fin :</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Conférence $APP_NAME modifiée :</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organisateur :</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Conférence $APP_NAME annulée :</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>Rappel conférence $APP_NAME :</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Paramètres communautaires</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Montrer les données de contact à tout le monde</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Ajoutez des champs d'intérêt que vous avez ou que vous cherchez afin de trouver des partenaires intéressants pour une conférence. Séparez les termes par des virgules.</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Mes intérêts</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Je cherche</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Nom</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Fus. horaire</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Centres d'intérêt</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Information de contact</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Montrer les données de contact aux contacts seulement</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Ne montrer les données de contact à personne</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Mon profil</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Editer les paramètres</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Chercher des utilisateurs</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Voir votre profil comme les autres le voient</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Editer vos paramètres, ajouter vos centres d'intérêts</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Chercher d'autres utilisateurs et étendre votre réseau</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Chercher</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Utilisateur offre</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Utilisateur cherche</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Texte libre</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Nom</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Fus. horaire</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offres</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Recherches</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Résultat :</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Ajouter à vos contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Envoyer un message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts et Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Contacts en attente</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accepter</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Refuser</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Bonjour,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>souhaite vous ajouter à sa liste de contacts.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Vérifiez vos demandes de contact dans $APP_NAME ou cliquez sur les liens pour accepter ou refuser les demandes</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>cet utilisateur est déjà dans vos contacts ou a reçu une invitation à votre liste de contact à laquelle il n'a pas encore répondu.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Votre liste de contacts</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Editez vos contacts et messages,&lt;br/&gt; gérez vos contacts en attente !</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>vous a confirmé comme contact !</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Afficher/Copier le journal du t'chat</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Journal du t'chat</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>De</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Sujet</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Envoyer</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Nouveau mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Cliquez pour écrire un nouveau message à n'importe quel de vos contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Ecrire un nouveau message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>A :</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Sujet:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Activez le zoom 100% et le tableau blanc zoomera de telle sorte que tous les&lt;br/&gt;documents seront visibles suivant la résolution d'écran de chaque participant.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Ejecter l'utilisateur</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>Vous ne pouvez pas vous éjecter vous-même de la salle de conférence ! Si vous désirez sortir, fermez votre navigateur ou utilisez le bouton de sortie !</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Voulez-vous vraiment déconnecter cet utilisateur de cette salle de conférence ?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirmez l'action...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>Vous ne pouvez pas éjecter un super-modérateur d'une salle !</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Réserver une salle de conférence</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Début</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Fin</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Ajouter une requête opionnelle pour la réunion et créer la salle. L'événement sera alors copié dans le calendrier de chaque participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Boite de réception</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Envoyé</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Poubelle</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>C'est vous ! Vous ne pouvez pas vous ajouter vous-même à vos propres contacts.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>L'utilisateur a déjà été refusé !</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>L'utilisateur a déjà été approuvé !</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>Le hachage de ce contact n'est pas valide !</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Utilisateur ajouté à la liste de contact !</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>Utilisateur refusé comme contact et supprimé de la liste des contacts en attente !</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>Il n'y a pas un tel contact !</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Vous voulez vraiment supprimer ce contact ?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirmez la suppression du contact</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Supprimer le contact de la liste</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Profil utilisateur</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Afficher le profil utilisateur</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Chercher</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Tout sélectionner</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Sélectionner aucun</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Sélectionner non lus</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Sélectionner lus</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Déplacer vers répertoire...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Ajouter nouveau répertoire...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Supprimer</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Des mails effacés se trouvent toujours dans votre poubelle !</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Marquer non lu</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Marquer lu</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Répondre</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Répondre à tous</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Faire suivre</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Envoyer un message privé</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Rien de sélectionné !</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Déplacer dans la boite de réception</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Supprimer (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>Cette action ne peut être annulée !</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Créer dossier</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Ajouter des dossiers et organiser vos messages !</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Ajouter un dossier</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Ajouter</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Supprimer un dossier</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>Vous ne pouvez supprimer ce dossier, il contient toujours des messages ! Supprimez-les d'abord ou déplacez-les vers un autre dossier.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Editer le nom</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Voulez-vous vraiment supprimer ce dossier ? Il n'est pas possible d'annuler cette action par la suite.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Votre demande a été envoyée à l'utilisateur. L'utilisateur va recevoir une notification pour accepter ou refuser votre demande. Bien évidemment, seules les demandes acceptées se trouvent dans vore liste de contacts !</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>L'utilisateur ne partage pas ses données personnelles de contact.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>L'utilisateur ne partage ses données personnelles de contact qu'avec ses contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Adresse &amp; tél.</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>Votre code d'invitation n'est pas valide, le code n'est valide que durant cette date et heure spécifiques :</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Cet événement est connecté à plusieurs calendriers d'autres utilisateurs. Vos modifications seront également mises-à-jour dans leurs calendriers. Voulez*-vous vraiment mettre à jour l'événement ?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirmez la mise à jour</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Permettre au contact de voir le calendrier (voir seulement)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Ne pas partager le calendrier</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendriers des contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Vos contacts doivent vous approuver d'abord avant que vous ne puissiez voir leurs calendriers.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Vous ne pouvez pas enregistrer ou supprimer des événements d'un autre calendrier que le vôtre !</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Montrer mon propre calendrier à nouveau !</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Cet événement est connecté à plusieurs calendriers d'autres utilisateurs. Votre action va également supprimer l'événement de leurs calendriers. Voulez-vous vraiment supprimer cet événement ?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirmez l'action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Entrer dans la salle</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Accéder à la salle de conférence</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>Il y a un événement et une salle de conférence liée à ce message privé.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>Vous devez enregistrer l'événement d'abord !</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Il n'y a pas de telle salle libre. L'événement dans le calendrier et de la salle associée a déjà été supprimé !</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choisissez votre pseudo</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Prénom</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Nom</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>E-mail</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Longueur minimum de 4 caractères pour le prénom et le nom.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Veuillez entrer un e-mail valide !</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Vous connecter avec votre login Facebook</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Date inscr.</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Vous êtes connecté avec votre compte Facebook. Vous devriez mettre à jour votre profil avec l'e-mail correct. Sans quoi vous ne recevrez pas les invitations et messages privés des autres utilisateurs.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Ne plus montrer le message de mise à jour du profil</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>plus d'options d'affichage...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Nouveau message privé :</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Cliquez ici pour aller dans votre profil et voir le message complet...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Répondre</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Salles et t'chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Mes salles</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Ma salle de conférence (pour 1-16 utilisateurs)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Ma salle webinar (pour 1-120 utilisateurs)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Id du propriétaire</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Veuillez entrer un mot de passe</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Vous devez avoir un compte de niveau Utilisateur, Modérateur ou Administrateur</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Service-Web (accessible seulement via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Charger directement sur le tableau blanc</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Voulez-vous vraiment supprimer ce tableau blanc ? Cette action ne peut être annulée !</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Charger sur le tableau blanc</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>N'oubliez pas de commencer l'enregistrement ! Un utilisateur par salle doit toujours le commencer si vous souhaitez avoir l'enregistrement par la suite.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Commencer l'enregistrement</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Flèche</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Cercle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Ligne</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Carré</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Texte/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Dessin libre</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Sélectionner/Déplacer</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Dessiner Formes</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Couper/Déplacer</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom +/-</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Imprimer</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Défaire</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Poubelle</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Ajouter Grille</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Partager Fichier</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Sélectionner Forme</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Sélectionner Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copier</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Couper</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Coller</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Effacer</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Voulez-vous vraiment effacer le contenu entier du tableau blanc ?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Charger directement sur le tableau blanc</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Participants</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Gestionnaire de participants</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Présent</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Contrôle à distance</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Ejecter</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>T'chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Inviter Participants</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>Par e-mail</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>L'utilisateur est modérateur</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>L'utilisateur a sa webcam connectée</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Désactiver le remplissage de forme</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activer le remplissage de forme</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Aimanter à la grille</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Autoriser l'enregistrement</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Attendre l'enregistrement</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Cacher la barre supérieure</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Jouer la vidéo</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Voulez-vous vraiment supprimer le contenu du document actif ?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accepter et donner le droit à l'utilisateur</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Refuser</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>Je</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activités et actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Supprimer le tableau blanc</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Vous devez avoir la modération ou le droit de dessiner sur le tableau blanc pour supprimer un tableau blanc !</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Pas permis</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>a quitté la salle.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Icônes mathématiques</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Pas de catégorie</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Style de couleurs</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Qualité</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domaine</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>Aller à</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>rouge-orange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>vert océan</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>bleu acier</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>bleu acier clair</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>rouge doré</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>gris argent</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>défini par l'utilisateur</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>meilleur</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>charger/déposer</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>moyen</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Couper le micro globalement</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Activer le micro globalement</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Couper le micro des autres</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>Votre micro a été globalement coupé par le modérateur. Vous ne pouvez pas l'activer vous-même !</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Couper le micro globalement ?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Voulez-vous vraiment couper votre propre micro globalement ? Plus personne ne pourra plus vous entendre !</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Couper le micro localement ?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Voulez-vous vraiment couper ce micro ? Vous ne pouvez le couper que localement sur votre écran. Cela n'a pas d'effet sur les autres utilisateurs. Seuls les modérateurs peuvent couper un micro globalement !</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Couper le micro globalement ?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Voulez-vraiment couper le micro de cet utilisateur globalement ? Plus personne ne pourra l'entendre !</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Votre micro est allumé. Cliquez ici pour envoyer un message au modérateur afin qu'il coupe votre micro globalement (dans toute la salle) !</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Votre micro est coupé. Cliquez ici pour envoyer un message au modérateur afin qu'il active votre micro globalement (dans toute la salle) !</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>souhaite que le modérateur coupe mon micro globalement.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>souhaite que le modérateur active mon micro globalement.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>souhaite que le modérateur active son micro.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>souhaite que le modérateur coupe son micro.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Activer micro. Cliquez ici pour couper son micro globalement !</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Couper micro. Cliquez ici pour activer son micro globalement !</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>Le micro de cet utilisateur est coupé globalement par le modérateur. Vous ne pouvez pas l'activer !</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Couper votre micro globalement</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Activer votre micro globalement</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Couper micro</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Activer micro</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Couper le micro globalement</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Activer micro globalement</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Seuls les modérateurs peuvent couper ou activer le micro d'un utilisateur globalement ! Pour couper votre propre micro : veuillez utiliser l'icône microphone sur votre fenêtre vidéo !</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Nom du sondage</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Vous</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Sondages</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>actif</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple graphique</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Graphique camembert</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Veuillez entrer e-mail</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Nouveau(x) message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Clôturer</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Etes-vous sûr de vouloir clore ce sondage ? Plus personne ne pourra plus voter.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Supprimer</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Etes-vous sûr de vouloir supprimer ce sondage ? Les résultats seront supprimés également.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Code IS de la langue</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Autoriser/Refuser le droit de donner l'audio exclusif</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Autoriser l'utilisateur à donner l'audio exclusif</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Refuser à l'utilisateur de donner l'audio exclusif</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>souhaite avoir la permission d'avoir l'audio exclusif.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>souhaite que le modérateur me donne la permission d'audio exclusif.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Donner une permission d'audio exclusif.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Résolution caméra</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changer la résolution affecte la bande passante, une image plus grande à besoin de plus de bande passante !</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>Vous n'avez pas l'autorisation de vous donner à vous ou aux autres l'audio exclusif. Vous devez demander cette autorisation au modérateur ou lui demander de le faire.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Je souhaite avoir le droit d'avoir l'audio exclusif</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Me donne l'audio exclusif (alternativement cliquez sur votre fenêtre vidéo ou appuyez sur F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone est allumé !</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone est coupé !</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Cacher le t'chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Cacher les activités</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Cacher l'explorateur de fichiers</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Cacher le menu actions</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Cacher le partage d'écran</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Cacher le tableau blanc</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Afficher le statut du micro</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Options de disposition</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Nouvel événement</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Les liens envoyés aux participants pour une conférence lorsque vous sauvez le calendrier sont protégés par mot de passe, pas la salle ! Cela signifie que si vous sauvez l'événement plusieurs fois avec un mot de passe différent, chaque participant recevra un nouveau lien avec un mot de passe différent. Les anciens liens sont toujours valables une fois envoyés !</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Editer les détails</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Afficher composeur SIP</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Appeler</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Afficher les événements du contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Votre page d'accueil</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Organiser les réunions</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Regarder les enregistrements et les interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choisir et démarrer une conférence</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Gérer les utilisateurs et les droits</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Gérer les connections et éjecter des utilisateurs</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Gérer les groupes d'utilisateurs</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Gérer les salles de conférences</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Gérer les paramètres système</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Gérer les étiquettes et les formulations</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Gérer les configurations LDAP et ADS</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Exporter/Importer les sauvegardes système</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Vous devez être modérateur ou avoir le droit d'accéder au tableau blanc pour pouvoir déposer ou télécharger des fichiers ou pour ajouter ou supprimer des dossiers.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Editer texte</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publier</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Commencer la diffusion</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Arrêter la diffusion</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Hôte</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>ID</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Réduisez la largeur de l'écran avant de le déplacer</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Réduisez la hauteur de l'écran avant de le déplacer</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Réduisez 'x' avant d'agrandir</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Réduisez 'y' avant d'agrandir</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Complétez ces paramètres pour diffuser votre écran vers un site tiers.</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Veuillez démarrer le partage d'écran pour pouvoir le diffuser</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>La permission du modérateur est requise pour enregistrer</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>Vous n'avez pas la permission de donner l'audio exclusif à un participant. Vous devez être modérateur ou avoir le droit de donner l'audio exclusif.</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Charger un fichier</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Ouvre la fenêtre des paramètres du partage d'écran</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Un modérateur existant doit l'approuver</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Demander au modérateur de pouvoir partager votre micro/caméra</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Proposez aux utilisateurs de voter en répondant à un sondage</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Les résultats graphiques des sondages</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Voter s'il existe un sondage activé dans cette salle</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Editer les paramètres de la caméra et du micro</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirmer et quitter la salle</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Appeler une personne extérieure via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Envoyer un mail avec un lien direct vers cette salle</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Changer les paramètres de votre tableau blanc</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Taille maximum</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Demander au modérateur le droit de partager votre tableau blanc</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Démarrer t'chat privé</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Tous</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>Vous ne pouvez pas démarrer un t'chat privé avec vous-même.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Vous avez déjà démarré un t'chat privé avec ce participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Voulez-vous vraiment supprimer ce t'chat privé ?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Serveurs</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Serveurs dans le groupe</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Nom du serveur</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Adresse du serveur</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Détails du serveur</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Envoyer SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publier. Utilisateur :</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Pour économiser du temps et de la bande passante vous pouvez utiliser la ligne de commande pour sauvegarder/restaurer/mettre à niveau votre système &lt;ol&gt; &lt;li&gt;Aller dans le répertoire d'installation d'OM (par ex. /opt/red5)&lt;/li&gt; &lt;li&gt;Arrêter OM (par ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/nom_du_backup.zip (créer la sauvegarde d'OM)&lt;/li&gt; &lt;li&gt;télécharger la nouvelle version d'OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (déplacer la version d'OM qui fonctionne par sécurité.)&lt;/li&gt; &lt;li&gt;extraire la nouvelle version d'OM dans /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (ou './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' dans le cas d'une BD qui n'est pas celle par défaut )&lt;/li&gt; &lt;li&gt;Démarrer OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Salles pour tous les utilisateurs</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Salles pour les utilisateurs du groupe actuel</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Salles de l'utilisateur</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Créer/Modifier salle particulière</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Vous pouvez entrer plusieurs adresses sous le format : prénom1 nom1 &lt;e-mail1&gt;,"prénom2 nom2" &lt;e-mail2&gt;,'prénom3 nom3' &lt;e-mail3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Ajuster le volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Ajuster le volume du micro</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>T'chat est-t-il modéré</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Autoriser les messages</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Panneau de t'chat ouvert par défaut</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Panneau des fichiers ouvert par défaut</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Dernier ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Chaque 'esclave' envoie un ping au maitre toutes les 3 secondes (configurable). Le dernier ping doit être inférieur à 1 minute pour que le maitre utilise l'esclave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>Port HTTP</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>Utilisateur (Accès SOAP)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Mot de passe</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Chemin vers Webapp</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocole</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Actif</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Générer URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Test réseau</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Sélection auto de la fenêtre vidéo de l'interview</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Souligné</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Style de police</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Autoriser les styles de police</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Couleur de police</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlien</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Montrer les statistiques de session</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Détails de session</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>Importer Système</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Inclure les fichiers uploadés et les enregistrements dans le backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Activer le transport SIP dans la salle</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Voulez-vous vraiment donner l'audio exclusif à cet utilisateur ?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Veuillez spécifier votre fuseau horaire</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conférence (1-25 utilisateurs)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restreint (1-150 utilisateurs)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 réunion avec enregistrement)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Une configuration avec cette clé existe déjà, veuillez spécifier une autre clé ou éditer la configuration existante</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Sauvegarde, veuillez patienter.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Bienvenue</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget affichant les infos de base des utilisateurs et les liens pour le support</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/galician.xml b/src/main/webapp/languages/galician.xml
new file mode 100644
index 0000000..5f15db7
--- /dev/null
+++ b/src/main/webapp/languages/galician.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferencia</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Xuntanza</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Eventos</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Axustes</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Perfíl</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administración</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Parar</value>
+  </string>
+  <string id="8" name="record">
+    <value>Gravar</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Non hai ningín ficheiro dispoñíbel</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Gravado polo profesor</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Usuarios conectados:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Iniciar unha conferencia</value>
+  </string>
+  <string id="13" name="myname">
+    <value>O meu nome</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Vídeo conferencia</value>
+  </string>
+  <string id="15" name="import">
+    <value>Enviar un ficheiro</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Actualizar a lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Marcar como ficheiro principal</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nova enquisa</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nova enquisa para a conferencia</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipo de enquisa:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Crear</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Información: Cada usuario conectado recibe unha mensaxe coa nova enquisa.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Crear unha enquisa</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Sí/Non</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Valor numérico 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Enquisa</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Precisase ser moderador para crear unha enquisa.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>O seu voto foi rexistrado</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Xa respostou á enquisa previamente</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Votar!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>A súa resposta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Sí</value>
+  </string>
+  <string id="35" name="no">
+    <value>Non</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>desexa coñecer:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Resultados da enquisa</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultados:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Respostas:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Non hai enquisas</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Votar!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Reunión (max 4 postos)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conferencia (max 50 postos)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipo</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Outros postos</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Xa foi seleccionado</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Entrar</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>O moderador abandonou a reunión.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Información do sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Seleccionar un dispositivo</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Seleccionar a cámara:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Seleccionar o micrófono:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Aceptar</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancelar</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Precisa volverse conectar</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Editar a configuración</value>
+  </string>
+  <string id="58" name="course">
+    <value>Curso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Idioma:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Aceptar</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Cancelar</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Borrar o taboleiro</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Desexa limpar o taboleiro antes de engadir outro gráfico?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Non volver preguntar</value>
+  </string>
+  <string id="65" name="no">
+    <value>non</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Editar a configuración</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Requirir confirmación antes de limpar o taboleiro</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Información do usuario</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Limpar o taboleiro</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Desfacer</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Refacer</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Seleccionar un obxeto</value>
+  </string>
+  <string id="73" name="text">
+    <value>Texto</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Pintar</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Debuxar unha liña</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Debuxar un subraiado</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectángulo</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Frecha</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Borrar o elemento escollido</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Solicitar ser moderador</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Solicitar</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Teño unha pregunta</value>
+  </string>
+  <string id="85" name="close">
+    <value>Pechar</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Cursiva</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Negriña</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ESPERANDO</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Un usuario desexa facerse moderador, pode concederlle acceso só ao taboleiro ou cambiar por completo o rol da moderación. Usuario:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Aceptar</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Rexeitar</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Enviando solicitudes aos seguintes usuarios</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Aceptado</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rexeitado</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Cambiar de moderador</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Vostede non é moderador deste curso!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderador:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Sentimolo pero esta aula está completa. Ténteo máis tarde</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Pechado</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>erro na entrada de datos</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>o nome de usuario debe conter alo menos 4 caracteres</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>o contrasinal de usuario debe conter alo menos 4 caracteres</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Este nome de usuario xa existe</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Este correo-e xa está rexistrado</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Erro do sistema, por favor contacte co administrador do sistema</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Inicio de sesión</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Usuario ou correo-e:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Contrasinal:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Idioma</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Conectarse</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Rexistrarse</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Usuario:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Contrasinal:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Contrasinal (de novo):</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Nome:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Apelido(s):</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Correo Electrónico:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>País:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Rexistrarse</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Cancelar</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Non está rexistrado?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Inicio</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Usuarios</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupos</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizacións</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Salas de xuntanzas</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>público</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organización</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Entrar</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Inicio de sesión</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Contrasinal</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Contrasinal (de novo)</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Nome</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Apelido(s)</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Correo Electrónico</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Data de nacemento</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Enderezo</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Código postal</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>País</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Información adicional</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Datos do usuario</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Gardar</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Gardar</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID do usuario</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Inicio de sesión</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Nome</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Apelido(s)</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Mostrar o seguinte</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Mostrar o anterior</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Eliminar o rexistro</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Cancelar</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Eliminar</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Novo rexistro</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Actualizar o rexistro</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Eliminar o rexistro</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Estado</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>desactivado</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>activado</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organizacións</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Calendario</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Pechar</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID da organización</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nome</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Usuario</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderador</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Administrador</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Nivel de usuario</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organización</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nome</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Engadir unha organización</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Engadir unha organización</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Cancelar</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Engadir</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Eliminar unha organización</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Usuario</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Engadir un usuario</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Eliminar un usuario</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Engadir un usuario á organización</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Buscar un usuario</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Buscar</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Usuario</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organización</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Entrar</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Salas de conferencias</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Salas de conferencia</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nome</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>pública</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organizacións</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Salas de xuntanzas</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nome</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Tipo</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Pública</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Comentario</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Gardar e exportar</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>cargar</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Gardar como</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Nome do ficheiro</value>
+  </string>
+  <string id="201" name="files">
+    <value>nome do ficheiro</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Cancelar</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Gardar</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Erro</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Cargando</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Obxetos cargados</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Sincronizando, usuarios en espera:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Cargando datos de imaxe</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Sincronizando, usuarios en espera:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Limpar o taboleiro</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>limpiar o taboleiro, perderase toda a información do taboleiro</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirmar antes de cargar un ficheiro</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Enviar convite</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Enviar convite</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Asunto</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatario</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Mensaxe</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Enviar</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>enviar</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Datos do usuario</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>O seu alcume para esta conferencia</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Alcume</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Nome</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Apelido(s)</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Correo-e</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Idioma</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>entrar</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Cargando</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Cargando datos, espere un momento</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Contrasinal incorrecto</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Por favor introduza dúas veces o mesmo contrasinal con un mínimo de 6 caracteres</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Correo incorrecto</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Vostede introduciu un enderezo de correo electrónico incorrecto</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>O rexistro completouse satisfactoriamente</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>A súa conta foi creada, a partires deste momento xa pode iniciar unha sesión</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Vostede non pode compartir o seu escritorio neste momento. Alguén está xa a compartir o seu escritorio neste momento.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Compartición non permitida</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Compartir/gravar o seu escritorio</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Problemas de conexión: O seu largo de banda non é abondo e perderase información. Si a mensaxe se repite con frecuencia solicitelle ao moderador que reduza a calidade.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Escritorio de:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Debuxar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Documento</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Conversa</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Ficheiros</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membros</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Descargar o documento orixinal</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Descargar o documento en pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Cargar unha presentación no taboleiro</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuración</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Arrastrar este obxecto</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Axustar o tamaño do obxecto</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ir á primeira páxina</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ir á páxina anterior</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ir á páxina seguinte</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ir á última páxina</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Diminuir Zoom</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Aumentar Zoom</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sra.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuración</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Chave</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuración</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Chave</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>última actualización</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>actualizado por</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Valor</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Usuarios</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Eliminar un usuario da organización</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>E</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Este usuario xa é membro da organización</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Novas</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Ligazóns rápidas</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Ir á conferencia</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Ir ao auditorio</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Axuda e asistencia</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Informar dun fallo!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>máis</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Sitio web do proxecto (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Lista de correo do Proxecto (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Lembrar o inicio de sesión</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Contido</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>A miña páxina de inicio</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>As miñas xuntanzas programadas</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Os meus eventos programados</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Xuntanzas públicas</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Xuntanzas privadas</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Eventos públicos</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Eventos privados</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Contido público</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Contido privado</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Contido persoal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value>...</value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderación</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Teño unha pregunta</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Enquisas</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Seleccione un ficheiro</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Axustes</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Axustes de cámara e micrófono</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Configuración do taboleiro</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Saír</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Volver ás salas</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Saír</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Esqueceu o seu contrasinal?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Restablecer o contrasinal</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Por correo-e</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Por inicio de sesión</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>O seu correo-e</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>O seu inicio de seción</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Enviar correo-e con ligazón de restablecemento</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Nose atopou o enderezo de correo electrónico. Asegúrese de introducir o mesmo enderezo de correo electrónico que utilizou para crear a súa conta.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Escriba o seu correo-e ou o nome de usuario</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Non hai ningun usuario con este nome</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Enviouselle un correo-e cunha ligazón especial, revise a súa bandexa de entrada de correo. Se non atopa este correo revise a configuración de spam do seu servidor e reenvie o correo de confirmación.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Erro</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Mensaxe</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Non se atopou ó usuario (hash incorrecto).</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Xerar contrasinal</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Inicio de sesión</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>cambiar o contrasinal</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>novo contrasinal</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>volva a escribir o contrasinal</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Os contrasinais introducidos non son identicos.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Escriba 4 ou máis caracteres. Diferéncianse as maiúsculas</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Cambiouse o contrasinal, agora pode a iniciar sesión.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>Aceptar</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Erro descoñecido. Informe ao administradores.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Non se atopou o nome de usuario</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Contrasinal incorrecto</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Vostede saiu do sistema</value>
+  </string>
+  <string id="338" name="registration">
+    <value>A ferramenta de rexistro está desactivada.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Correo-e incorrecto</value>
+  </string>
+  <string id="340" name="registration">
+    <value>nome de ficheiro duplicado, por favor elixa outro</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>o nome de ficheiro é moi curto</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Non se puido gardar o enderezo</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>O usuario foi engadido, máis deberá engadilo a unha organización, ou non poderá conectarse.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nova gravación</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Non se atopou un campo neste FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Non se atopou unha etiqueta para este campo.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Precisase autorización do administrador</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor de idioma.</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Idioma</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID da etiqueta</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Nome da etiqueta</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valor</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Valores do campo</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nome da etiqueta</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Valor da etiqueta</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID da etiqueta</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Vostede só eliminou a etiqueta pero NON o campo! Non se pode eliminar un campo, é probábel que existan etiquetas noutros idiomas.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ID de etiqueta incorrecto. O seu FieldLanguagesvalues_Id non se atopou na base de datos.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Vostede non pode eliminar este campo, só pode eliminar etiquetas, NON campos. Non hai unha etiqueta cargada polo momento, ou non hai ningún campo seleccionado, ou non é unha etiqueta para este idioma para o campo definido.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportar</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Precisa pechar a sesión para ver os cambio.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Engadir un novo idioma</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>eliminar un idioma</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Engadir un novo idioma</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nome</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>engadir un idioma</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Copia de seguranza</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ir ao inicio</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>ir á anterior</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ir á seguinte</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ir ao final</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>o usuario fala (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>acender ou apagar o son</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Os seus axustes</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>ola!</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editar o seu perfil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Novas mensaxes:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Cargar unha nova imaxe</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Datos do usuario - Exportar</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Todas as organizacións deben existir previamente!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>iniciar a exportación</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Por organización</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>iniciar a exportación</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Datos do usuario - Importar</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>elixa users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importar</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportar a XML - Estos ficheiros poden ser usados para:&lt;br/&gt; - Contribuir ao proxecto - Importalos a outro sistema&lt;br/&gt; - Copia de seguranza - Personalización&lt;br/&gt; - Colocalo no directorio de idiomas para a próxima instalación.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Seleccione un ficheiro de idioma a importar. &lt;br/&gt;Seleccione correctamente o idioma no selector! &lt;br/&gt;non importa cal sexa o nome do ficheiro, &lt;br/&gt;será importado a ese idioma!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importar - escoller ficheiro</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Gardar como...</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nome:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comentario:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>gardar</value>
+  </string>
+  <string id="395" name="record">
+    <value>Gravacións</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Visor de gravacións</value>
+  </string>
+  <string id="397" name="record">
+    <value>Gravacións de salas públicas e privadas</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Usuarios:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Unido:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Usuarios na sala:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>actualizar</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>A sala está chea, por favor tenteo nuns minutos.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>prema nunha sala para ver os detalles</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Conversar cos usuarios desta sala:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Sala:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Usuarios nesta sala:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>desde:</value>
+  </string>
+  <string id="409" name="record">
+    <value>reproducir a gravación</value>
+  </string>
+  <string id="410" name="record">
+    <value>Duración:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Modo de gravación! Non pode cambiar ningún valor xa que se trata dun ficheiro gravado.</value>
+  </string>
+  <string id="413" name="record">
+    <value>Reproducir esta gravación</value>
+  </string>
+  <string id="414" name="record">
+    <value>Reproducir / Pausa</value>
+  </string>
+  <string id="415" name="record">
+    <value>Gravar esta xuntanza</value>
+  </string>
+  <string id="416" name="record">
+    <value>parar a gravación</value>
+  </string>
+  <string id="417" name="record">
+    <value>Gravación:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Alguén esta a gravar agora esta xuntanza:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Gravando! Polo usuario:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>A gravación será cancelada e non gardada.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>reanudar</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Pechar esta fiestra e reanudar a gravación</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Cambiar a liña de cor</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Seleccionar cor</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Desactivar / activar a liña de cor</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>cambiar a cor de recheo</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Desactivar / activar o recheo de cor</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Cambiar o groso da liña</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Pechar</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>cambiar tamaño de letra</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Eliminar a gravación</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Convidado</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Por:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Sala</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>iniciar</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Eliminar o rexistro da conversa no servidor</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Conversa</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>enviar a mensaxe</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticonas</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticonas</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Escolla os dispositivos</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Són e vídeo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Só son</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Só vídeo</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Sen son/vídeo (imáxe fixa)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Non se enviará son/vídeo desde o seu computador, no seu lugar mostrarase a imáxe do seu perfil. Seleccione esta configuración se vostede tén problemas co seu largo de banda ou unha conexión de Internet lenta.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>LU</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>MA</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ME</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>XO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>VE</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DO</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Lúns</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Martes</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Mércores</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Xoves</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Venres</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sábado</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Domingo</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>S</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Número de semana do calendario</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Xaneiro</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Febreiro</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marzo</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Abril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maio</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Xuño</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Xullo</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Agosto</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Setembro</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Outubro</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembro</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Decembro</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendario</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participantes</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostrar os axustes de deseño</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Largo | Alto</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Contedor de video</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Contedor de moderación</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Contedor de taboleiro</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Activado</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Largo | Alto</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Contedor de ficheiros, conversas, participantes</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Activado</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Largo | Alto</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>O moderador retirouse, polo que ninguén está a realizar unha presentación actualmente. Vostede pode agardar ou solicitar ser moderador.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Non hai moderador nesta sala, pero si participantes. Vostede pode esperar ou solicitar ser moderador.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Comentario de $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Convite</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Mensaxe do usuario:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Mensaxe:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Prema nesta ligazón para poder participar na xuntanza:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Prema aquí para entrar á sala</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Se ten problemas coa ligazón, suxerímoslle que copie e pegue o seguinte texto no seu navegador:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME, rexistro</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Os seus datos de usuario:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Iniciar sesión:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Contrasinal:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Correo-e:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME - Equipo</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME, rexistro</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Restablecer o contrasinal</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Prema na seguiente ligazón para introducir un novo contrasinal:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Prema aquí para introducir un novo contrasinal</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Se ten problemas coa ligazón, suxerimoslle que copie e pegue o seguinte texto no seu navegador:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME, restablecer o contrasinal</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Por favor introduza unha data correcta no formato dd.mm.aaaa, p.ex. 24.12.2001</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Por favor introduza un enderezo de correo-e corecto</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Por favor introduza un número decimal, p.ex. 1.00 (use punto e non coma)</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Por favor introduza un número enteiro, p.ex. 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Por favor introduza un número de teléfono correcto, p.ex +34 999 111 111</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Por favor introduza unha hora válida no formato hh:mm, p.ex. 12:34</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Contrasinal protexido</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Contrasinal</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Período de validez</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Interminable</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Período</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Unha vez</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Válido desde:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Válido até:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Convite a $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Non existe un convite dispoñíbel para este código.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Este convite xa foi usado e non pode utilizarse de novo.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>O código do convite é incorrecto. O convite ao través de ligazón ten validez só no momento da xuntanza! vostede non pode acceder á sala antes ou despois da reunión a través desa ligazón!</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Contrasinal:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Verificar o contrasinal</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Contrasinal incorrecto!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Navegador</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Sincronizar son/vídeo</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>O acceso é correcto, pero a sesión non está activa ou gardada no servidor.Vostede ten que conseguir un novo identificador de sesión e volver a acceder.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>O identificador de sesión non está iniciado ou non ten permisos de Administración. A pasarela SOAP precisa un usuario con dereitos de administrador para engadir novos usuarios.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Esta sesión non ten datos do usuario remoto conectado. Quizais non chamou á pasarela SOAP antes de acceder ao aplicativo ou está usando un identificador de sesión incorrecto</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>O gravador aínda está en fase Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>eixo-x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>eixo-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>l</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>largo</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>a</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>alto</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Cambiar transparencia</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Abrir o navegador</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Pechar o navegador</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Perdeuse a conexión co servidor. Vostede precisa reiniciar o aplicativo e/ou comprobar a súa rede.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Punteiro</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Sincronizando</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Sincronizando, por favor agarde</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Descargar como SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Descargar como PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Descargar como JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Descargar como PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Descargar como TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Lembranza:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categoría:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetición:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>nada</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Ubicación:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Comeza</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Remata</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Título:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comentario:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Convidar xente</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Diario</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mensual</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Anual</value>
+  </string>
+  <string id="578" name="alert">
+    <value>A data de fin é despois da data de comezo!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Por favor, insira un título!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Active isto se vostede escribe nunha lingua de dereita a esquerda (orde inversa de palabras)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Panel de control</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Ver eventos ou xuntanzas gravadas</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Xuntanza - Facer unha conferencia con 4 (ata 16) Usuarios&lt;br/&gt;todos terán acceso de son + vídeo</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Evento - Facer unha conferencia con ata 200 participantes&lt;br/&gt;Só o moderador terá son/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Crear usuarios, salas, organizacións&lt;br/&gt; + cambiar a configuración</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Usuarios nesta sala agora</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Inicio de sesión</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Cargando o documento. Por favor agarde ata que todos os clientes estean sincronizados.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Carga completa, convertindo Documento ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Comezar carga</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Dialogo de cargar e importar. Por favor escolla un ficheiro do seu disco.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancelar</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Seleccionar ficheiro</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Conexións</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Valor</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Identificador de fluxo</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Iniciar sesión</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Conectado desde</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Sala / Alcance</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Expulsar usuario</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Expulsar a un usuario</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Realmente quere expulsar este cliente da conexión?&lt;br/&gt; Isto só borra ao cliente da sala actual. O cliente pode volver a acceder de novo.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>A súa sesión foi pechada por un administrador ou un moderador.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Teléfono</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>O usuario é moderador desta sala</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>O usuario está autorizado a escribir no taboleiro</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re)iniciar o son/vídeo ou cambiar a configuración dos dispositivos</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Autorizar a este usuario a debuxar no taboleiro</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Denegar o permiso a debuxar no taboleiro</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Usuarios</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Filtros</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Taboleiro</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Conversa</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>A súa conta está asignada a multiples organizacións. Por favor escolla unha para esta sesión.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Esta sala atópase completa neste momento. Por favor, ténteo de novo máis tarde.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Tipo de sala</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Nomeado da sala</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Hora do servidor</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Lembranza</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Mensaxe do usuario:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Mensaxe:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Prema nesta ligazón para participar na xuntanza:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Prema aquí para entrar na sala</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>se ten problemas coa ligazón, por favor copie e pegue no seu navegador:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>busca interna</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Engadir externos</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Nome</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Apelido(s)</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Correo-e</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirme a saída</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Ten a certeza de querer saír agora?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Acccións</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Sala de demostración</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Hora da demostración</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Horario da xuntanza</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Esta é unha sala de demostración. Para desactivar esta advertencia debería conseguir unha sala privada para o seu uso persoal ou obter un servidor propio. Será automaticamente redirixido dentro:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderado</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Por favor, agarde ata que o moderador entre na sala. O moderador pode ser un profesor, administrador, ou o creador desta sala.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Aceptar</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Recibindo o escritorio compartida</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Hai unha nova recepción de escritorio compartido do usuario:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Iniciar a compartición do escritorio</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Engadir nova xuntanza</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Sala de xuntanzas</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Sala de eventos</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderación</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderar usuarios</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderar salas</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Desexa que este usuario se convirta en moderador desa organización?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Por favor, escolla unha organización antes de tentar engadir un usuario a ela!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organización - Moderador</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Ten a certeza de que desexa eliminar este usuario da organización?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Este usuario é moderador</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Este usuario non é moderador</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Desexa que este usuario non sexa moderador desta organización?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Engadir ou eliminar usuarios ou salas na súa organización</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Desexa elmininar este rexistro?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Relmente desexa eliminar este usuario da súa organización? Só eliminará a relación entre o usuario e a organización, para eliminar definitivamente ao usuario ten que entrar no menú de administración.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Non pode eliminar o seu propio usuario!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Para usar este método precisa dunha conta de administrador!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Non hai unha sesión asociada con este ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Esta é unha conta de administrador ou moderador. Só pode editar esta conta a través do panel de administración.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Para completar o seu rexistro, por favor prema na seguinte ligazón. Ou copie o URL na barra de navegación do seu navegador.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Prema para verificar o seu correo-e</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Non se atopou un usuario para este Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Este usuario xa está activado!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>A súa conta foi activada satisfactoriamente!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Iniciar sesión agora</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>A súa conta non está activada. Antes use a ligazón do correo-e que recebiu durante o rexistro.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Rexistrouse correctamente. Enviamoslle un correo-e cun código de verificación. Por favor, comprobe a súa bandexa de entrada de correo.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Eliminar o rol de moderador deste usuario</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Dar dereitos de moderador a este usuario</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Usuario</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Acceso ao taboleiro</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderador</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderación: Por favor escolla un usuario da lista para darlle acceso ao taboleiro, moderación ou video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Este usuario xa é moderador, ten automáticamente acceso para debuxar.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Este é vostede! Non é posíbel quitarse dereitos de moderador a un mesmo.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Permitir a este usuario enviar o seu son / vídeo</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Eliminar son/vídeo deste usuario</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Teño unha pregunta</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Gustarialle debuxar no taboleiro</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Gustarialle compartir o meu son/vídeo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Vostede é moderador desta sala</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Vostede ten acceso a debuxar no taboleiro</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Non lle está permitido compartir o seu son/vídeo</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Mensaxe ao moderador</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>O usuario</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>gustarialle facer unha pregunta.&lt;br/&gt;&lt;br/&gt; &lt;i&gt;(Use as iconas de estado cerca do usuario na lista de usuarios para engadir ou eliminar dereitos de moderación.)&lt;7i&gt;</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>gustarialle debuxar no taboleiro. Use as iconas de estado cerca do usuario na lista de usuarios para engadir ou eliminar dereitos de debuxo no taboleiro.</value>
+  </string>
+  <string id="695" name="695">
+    <value>gustarialle compartir o seu son/vídeo. Use os iconos de estado preto do usuario na lista de usuarios para dar ou quitar dereitos de Audio/vídeo para calquera usuario.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Ten que agardar até que un moderador entre na sala.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancelar</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Gardar</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Día</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mes</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Ano</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Cargar un ficheiro</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Engadir un ficheiro</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Actualizar</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Lixo</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Meus ficheiros Files (Dispositivo personal)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Ficheiros da sala (Dispositivo público)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Engadir ficheiro</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Engadir cartafol</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Borrar cartafol</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Editar o nome</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Novo cartafol</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Ten a certeza de que desexa eliminar este elemento?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Abrir o documento</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Mostrar todos os ficheiro (Vista en árbore)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Pechar o documento</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Borrar o ficheiro</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Non ten permisos para escribir ou debujar no taboleiro. Debe ser moderador ou, alo menos, ter permisos de edición do taboleiro. Solicítello a un moderador.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Propiedades do documento</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Iniciar Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Iniciar Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Un usuario desexa compartir o seu escritorio. Quere visualizala?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Actualmente está compartindo o seu escritorio. Para deixar de facelo, prema no botón Parar no cliente de compartición.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Compartindo a sesión</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Xa está compartindo o seu escritorio!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Visor de escritorio</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Parar a compartición</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Compartición de escritorio</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Pulse Iniciar para publicar o seu escritorio</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Iniciar a compartición</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pausa na compartición</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Seleccione un área da pantalla:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Cambiar a largura</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Rematou a sesión de compartición!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Cambiar a altura</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Desprazamento-X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Desprazamento-Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Largo:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Alto:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>O servidor pechou a conexión</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancelar</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Iniciar Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Se pecha completamente esta sesión, non será posíbel reiniciar o visor durante esta sesión.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirme o peche da sesión do visor</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Compartir escritorio</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Gravar a sesión</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-navegación</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Umm... Firefox en windows non mostra a co-navegación con claridade. Por favor, utilice outro navegador ou peche esta funcionalidade.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Anterior</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Seguinte</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Recargar</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Inicio</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Cargar</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Engadir este sitio ao seu perfil como sitio predeterminado.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Probar a configuración</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Comprobe a configuración do seu micrófono e/ou cámara antes de entrar na sala. Para el grave durante algúns segundos e reprodúzao, deberá escoitar a súa voz e ver a súa imaxe.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Non volver a mostrar esta proba</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancelar</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Iniciar unha conferencia</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Non volver a preguntar</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Pode continuar sen facer a comprobación se non desexa publicar a imaxe e/ou o son. Os participantes sen son ou sen vídeo poden en todo caso utilizar o taboleiro, compartir o seu escritorio ou enviar mensaxes utilizando a liña de conversas.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Medidor de niveis</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Prema en Iniciar</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Iniciar a conferencia</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Iniciar o evento</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Elixir a sala</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Probar a config.</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Iniciar a conferencia</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Instruccións «Conferencia»:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Iniciar a gravación</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Non mostrar a proba de son /vídeo antes de entrar nunha conferencia</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Salas públicas</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>As salas públicas son accesíbeis para todos os usuarios.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Salas privadas</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>As salas privadas son accesíbeis só para os usuarios da mesma organización.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>As miñas salas</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>As salas nesta sección son para uso persoal. Creanse utilizando o calendario e teñen unha data de inicio e de final. Só están listadas nesta sección durante o período de tempo en que teñen validez.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Ten que ser moderador para poder facer isto.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Solicitar a moderación</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Solicitar acceso ao taboleiro</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Solicitar acceso á cámara/micrófono</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>A autenticación Hash desta sesión xa foi usada. Non pode facerse dúas veces.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>INICIAR</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>SAÍR</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Ten a certeza de que desexa saír? Sería convinte que antes limpe os documentos cargados, o taboleiro e o historial de conversas.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Saír da conferencia</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Salas</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Elixa unha sala para a xuntanza</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Hai un evento sen gardar no calendario. Gardeo ou elimineo.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Engada, polo menos, un participante!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Ten a certeza de que desexa eliminar este evento?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Aviso</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Engadir un evento</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>día</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>semana</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mes</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Descrición</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Asistentes</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, a súa Plataforma Web de Videoconferencia. Tan só ten que segir as instruccións, prema no botón para iniciar unha conferencia inmediatamente ou vaia ao calendario para planificar unha conferencia para o futuro.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Planificar</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Para planificar unha conferencia, engada un novo evento no calendario. Para cada evento crearase automaticamente unha sala. Vostede e o resto de asistentes recibirán un correo-e cunha ligazón á sala.&lt;br/&gt;&lt;br/&gt;Pode escoller entre diferentes tipos de salas con diferentes deseños e sistemas de moderación. Tamén pode escoller entre diferentes tipos de notificación de correo-e que se envíen en cada evento do calendario.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Necesita axuda?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restrinxido</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Buscar</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Engadir</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Non hai ningún usuario seleccionado. Seleccione primero un ítem da lista e prema en Engadir.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Engadir un asistente</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Gardar</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Borar</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Detalles do evento</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Moderadores predeterminados</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Nome</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Correo-e</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Engadir novo moderador predeterminado</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>É supermoderadorrator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Se a sala está moderada, sexa quen sexa xa o moderador seguirá a selo. Se non desexa que sexa así, e quere que só determinado usuario sexa o moderador, utilice a opción de moderador predeterminado.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Un supermoderador é sempre o moderador dunha sala cando entra nela. Ademáis, naide pode quitarlle a marca de moderación</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Aplicar a supermoderación ao usuario</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Eliminar a supermoderación ao usuario</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Se engade unha organización á sala, só os usuarios de dita organización terán acceso á mesma (isto só é así se a marca de Pública está configurada como falsa!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderación</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitacións</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organización</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Ten certeza?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Ten a certeza de que desexa borar este elemento? Ten que premer no botón Gardar para almacenar os cambios!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Non hai ningún usuario seleccionado. Seleccióneo antes para engadilo!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Engadir un novo moderaror predeterminado</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Ten a certeza de que desexa engadir unha marca de supermoderador a este usuario? Lembre que un supermoderador non só é o moderador dunha sala, senon que ademáis ningún outro moderador poderá borrar a marca de moderación. Necesita gardar o obxecto sala para almacenar estas configuracións!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Ten a certeza de que desexa eliminar a marca de supermoderador a este usuario? Necesita gardar o obxecto sala para almacenar estas configuracións!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Este usuario é supermoderador. Non pode quitarlle a marca de moderación a un supermoderador!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Ten a certeza de que desexa borrar este ficheiro/cartafol?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Borrar un ficheiro/cartafol?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Dna.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>D.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Propiedades</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Mostrar a posición do rato aos participantes</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Compartir o son co miniaplicativo SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Compartir o son con SIP e o vídeo con Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Pantalla completa</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Ver o escritorio</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>O usuario</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>desexa compartir o seu escritorio. Desexa visualizalo?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Pechar</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>A sesión foi pechada por quen compartia o escritorio!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pausa</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Nona compartición de escritorio</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimizar</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximizar</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Vídeo</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Liña temporal da gravación</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>As miñas gravacións</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Gravacións públicas</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Información</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Nome</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Lonxitude</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Data</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Por</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Descarga</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Principal - Vídeo</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Gravación</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Pode gravar e compartir o escritorio de vez. Para permitir que outros veaan o seu escritorio prema no botón Iniciar na parte superior. Para só gravar a sesión, é abondo que prema en Iniciar a grabación.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Iniciar a gravación</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Parar a gravación</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Descargar o ficheiro FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Sala</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Reproducir</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Parar</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>O usuario ten o micrófono activado</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Parar a compartición</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Permitir as preguntas do usuario</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Desactive esta opción para evitar que calquera usuario o moleste nesta sala. Facendoo o boton para solicitar a moderación («Teño unha pregunta») non é visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Permisos</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Descargar como AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Só son</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Houbo algún erro mentres de procesaba a gravación.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>La grabación no está aínda preparada para ver. Tenteo de novo dentro dun par de minutos.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Rexistro:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Mensaxe do gravador</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>O miniaplicativo SIP non está preparado</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Axustes da conta SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/greek.xml b/src/main/webapp/languages/greek.xml
new file mode 100644
index 0000000..5e8b42c
--- /dev/null
+++ b/src/main/webapp/languages/greek.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Συνδιάσκεψη</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Συνάντηση</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Γεγονότα</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Ρυθμίσεις</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Προφίλ</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Διαχείριση</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Διακοπή</value>
+  </string>
+  <string id="8" name="record">
+    <value>Εγγραφή</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Το αρχείο δεν βρέθηκε!</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Εγγραφή κατά Δάσκαλο</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Συνδεδεμένοι Χρήστες:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Έναρξη Συνδιάσκεψης</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Το Όνομά Μου</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>ΒιντεοΣυνδιάσκεψη</value>
+  </string>
+  <string id="15" name="import">
+    <value>Φόρτωση Αρχείου</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Ανανέωση Λίστας</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Στο Βασικό Αρχείο</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Νέα Ψηφοφορία</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Νέα Ψηφοφορία Συνδιάσκεψης.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Ερώτηση:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Τύπος Ψηφοφορίας:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Δημιουργία</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Ενημέρωση: Κάθε συνδεδεμένος Χρήστης λαμβάνει ένα μήνυμα με τη νέα Ψηφοφορία.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Δημιουργία Ψηφοφορίας</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ναι/Όχι</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Αριθμός 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Ψηφοφορία</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Μόνο ο Συντονιστής μπορεί να δημιουργεί Ερωτήσεις!</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Η Ψήφος σας καταχωρήθηκε.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Έχετε ήδη συμμετάσχει σε αυτήν την Ψηφοφορία.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Ψηφίστε!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Η Απάντησή Σας:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ναι</value>
+  </string>
+  <string id="35" name="no">
+    <value>Όχι</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>θέλει να ξέρει:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Αποτελέσματα Ψηφοφορίας</value>
+  </string>
+  <string id="38" name="question">
+    <value>Ερώτηση:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Αποτελέσματα:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Απαντήσεις:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Δεν έχει ξεκινήσει καμία Ψηφοφορία.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Ψηφίστε!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Συνάντηση (μέγιστο 4 θέσεις)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Συνδιάσκεψη (μέγιστο 50 θέσεις)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Τύπος</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Άλλες Θέσεις</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Ήδη Επιλεγμένη</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Είσοδος</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Ο Συντονιστής εγκατέλειψε τη Συνάντηση.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Πληροφορίες Συστήματος</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Επιλογή Συσκευής</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Επιλογή Web Κάμερας:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Επιλογή Μικροφώνου:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Εντάξει</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Πρέπει να συνδεθείτε ξανά!</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Τροποποίηση Εγκατάστασης.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Μάθημα:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Γλώσσα:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Εντάξει</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Εκκαθάριση Πίνακα</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Να αδειάζει ο Πίνακας πριν από την προσθήκη Νέας Εικόνας</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Να μην ερωτηθώ ξανά!</value>
+  </string>
+  <string id="65" name="no">
+    <value>Όχι</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Ρύθμιση Εγκατάστασης</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Να ζητείται Επιβεβαίωση πριν από την εκκαθάριση του Πίνακα</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Πληροφορίες Χρήστη</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Εκκαθάριση Περιοχής Σχεδίασης</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Αναίρεση</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Επαναφορά</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Επιλογή Αντικειμένου</value>
+  </string>
+  <string id="73" name="text">
+    <value>Κείμενο</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Ζωγραφική</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Σχεδίαση Γραμμής</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Σχεδίαση Υπογράμμισης</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Ορθογώνιο</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Έλλειψη</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Βέλος</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Διαγραφή Επιλεγμένου Στοιχείου</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Αίτηση για Συντονισμό</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Αίτηση</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Γίνετε Συντονιστής</value>
+  </string>
+  <string id="85" name="close">
+    <value>Κλείσιμο</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Bold</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Σε Αναμονή</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Κάποιος Χρήστης θέλει να κάνει Αίτηση για Συντονισμό. Μπορείτε να του παραχωρήσετε πρόσβαση μόνο στον Πίνακα ή να μεταστρέψετε πλήρως το ρόλο Συντονισμού. Χρήστης:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Αποδοχή</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Απόρριψη</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Αποστολή Αιτήματος στους ακόλουθους Χρήστες:</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Αποδεκτό</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Μη Αποδεκτό</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Αλλαγή Συντονιστή</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Δεν συντονίζετε εσείς αυτό το Μάθημα!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Συντονιστής:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Αυτό το Δωμάτιο είναι πλήρες. Παρακαλούμε δοκιμάστε ξανά αργότερα.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Έλλειψη</value>
+  </string>
+  <string id="101" name="close">
+    <value>Κλείσιμο</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Σφάλμα Δεδομένων Εισόδου</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 ή Περισσότεροι Χαρακτήρες: Προβλήματα Καταχώρησης με Κεφαλαία Γράμματα!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Ο Κωδικός Χρήστη πρέπει να περιέχει τουλάχιστον 4 Χαρακτήρες!</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Το συγκεκριμένο Όνομα Χρήστη έχει επιλεγεί ήδη!</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Το συγκεκριμένο Email έχει καταχωρηθεί ήδη!</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Σφάλμα Συστήματος: Παρακαλούμε επικοινωνήστε με τους Διαχειριστές Συστήματος!</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Χρήστης ή Email:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Κωδικός:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Γλώσσα</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Σύνδεση</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Εγγραφή</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Χρήστης:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Κωδικός:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Επαν. Κωδικού:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Όνομα:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Επώνυμο:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Χώρα:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Καταχώρηση</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Δεν είστε Μέλος;</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Αρχική Σελίδα</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Χρήστες</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Ομάδες</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Οργανισμοί</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Δωμάτια Συναντήσεων</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Κοινό</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Οργανισμός</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Είσοδος</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Κωδικός</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Επαν. Κωδικού</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Όνομα</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Επώνυμο</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Γενέθλια</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Οδός/Αριθμός</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Τ.Κ./Πόλη</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Χώρα</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Διεύθυνση</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Στοιχεία Χρήστη</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Όνομα</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Επώνυμο</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Επόμενο</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Προηγούμενο</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Διαγραφή Εγγραφής</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Διαγραφή</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Νέα Εγγραφή</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Ανανέωση Εγγραφής</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Διαγραφή Εγγραφής</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Κατάσταση</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Απενεργοποιημένη</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Ενεργοποιημένη</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Οργανισμοί</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Ημερολόγιο</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Κλείσιμο</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Όνομα</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Χρήστης</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Συντονιστής</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Διαχειριστής</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Επίπεδο Χρήστη</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Οργανισμός</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Όνομα</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Προσθήκη Οργανισμού</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Προσθήκη Οργανισμού</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Προσθήκη</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Αφαίρεση Οργανισμού</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Χρήστης</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Προσθήκη Χρήστη</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Διαγραφή Χρήστη</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Προσθήκη Χρήστη σε Οργανισμό</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Εύρεση Χρήστη</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Εύρεση</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Χρήστης</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Οργανισμός</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Είσοδος</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Δωμάτια Συνδιασκέψεων</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Δωμάτιο Συνδιάσκέψεων</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>Αριθμός</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Όνομα</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Δημόσιο</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Οργανισμοί</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Δωμάτια Συναντήσεων</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Όνομα</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Τύπος</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Δημόσιο</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Σχόλιο</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Αποθήκευση και Εξαγωγή</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Φόρτωση</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Αποθήκευση ως</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Όνομα Αρχείου</value>
+  </string>
+  <string id="201" name="files">
+    <value>Όνομα Αρχείου</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Μήνυμα</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Φόρτωση</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Τα Αντικείμενα Φορτώθηκαν με Επιτυχία</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Συγχρονισμός πελατών. Πελάτες προς Αναμονή:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Φόρτωση Δεδομένων Εικόνας</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Συγχρονισμός πελατών. Πελάτες προς Αναμονή:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Εκκαθάριση Περιοχής Σχεδίασης</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Εκκαθάριση Περιοχής Σχεδίασης: Όλα τα δεδομένα του Πίνακα θα χαθούν!</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Να ζητείται Επιβεβαίωση πριν από την Φόρτωση Αρχείου</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Αποστολή Πρόσκλησης</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Αποστολή Πρόσκλησης</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Θέμα</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Παραλήπτης</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Μήνυμα</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Αποστολή</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Aποστολή</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Στοιχεία Χρήστη</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Ψευδώνυμο για αυτήν τη Συνδιάσκεψη</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Ψευδώνυμο</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Όνομα</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Επώνυμο</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Γλώσσα</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Είσοδος</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Φόρτωση</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Φόρτωση Δεδομένων: Παρακαλούμε περιμένετε!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Λάθος Κωδικός</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Παρακαλούμε εισάγετε δύο πανομοιότυπους Κωδικούς τουλάχιστον 6 Χαρακτήρων!</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Λάθος Email</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Μη Έγκυρη Διεύθυνση Email!</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Η Kαταχώρηση Oλοκληρώθηκε</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ο Λογαριασμός σας δημιουργήθηκε με επιτυχία. Τώρα μπορείτε να συνδεθείτε.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Δεν μπορείτε να μοιραστείτε την Οθόνη σας αυτή τη στιγμή! Κάποιος άλλος μοιράζεται ήδη την δική του.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Διαμοίραση Απαγορευμένη</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Διαμοίραση Οθόνης</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Κακό Bandwidth: Δεν μπορέσατε να συγχρονίσετε την Οθόνη. Κάποια πλαίσια θα χαθούν. Αν αυτή η ειδοποίηση εμφανίζεται συχνά μπορείτε να ζητήσετε στο συντονιστή να μειώσει την Ποιότητα.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Οθόνη του:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Ζωγραφική</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Έγγραφα</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Συνομιλία</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Αρχεία</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Μέλη</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Αποθήκευση Γνήσιου Εγγράφου</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Αποθήκευση pdf Εγγράφου</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Φόρτωση Παρουσίασης στον Πίνακα</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Διαμόρφωση</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Σύρετε το Αντικείμενο</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Αλλάξτε το μέγεθος του Αντικειμένου</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>από</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Μεταφορά στην Πρώτη Σελίδα</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Μεταφορά στην Προηγούμενη Σελίδα</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Μεταφορά στην Επόμενη Σελίδα</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Μεταφορά στην Τελευταία Σελίδα</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Εστίαση --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Εστίαση ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Κος</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Κα</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Διαμόρφωση</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Κλειδί</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Διαμόρφωση</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Κλειδί</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Τελευταία Τροποποίηση</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Τροποποιημένο από</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Σχόλιο</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Τιμή</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>από</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Χρήστες</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Διαγραφή Χρήστη από Οργανισμό</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Δ</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Ο Χρήστης είναι ήδη Μέλος του συγκεκριμένου Οργανισμού!</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Νέα</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Γρήγοροι Σύνδεσμοι</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Συνδιάσκεψη</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Αμφιθέατρο</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Βοήθεια και Υποστήριξη</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Αναφορά Bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Περισσότερα</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project Website (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Λίστα με Email Χρηστών (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Υπενθύμιση Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Περιεχόμενο</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Η Αρχική Μου Σελίδα</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Προγραμματισμένες Συναντήσεις</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Προγραμματισμένα Συμβάντα</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Δημόσιες Συναντήσεις</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Ιδιωτικές Συναντήσεις</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Δημόσια Συμβάντα</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Ιδιωτικά Συμβάντα</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Δημόσιο Περιεχόμενο</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Ιδιωτικό Περιεχόμενο</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Προσωπικό Περιεχόμενο</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Συντονισμός</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Αίτηση για Συντονισμό</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Ψηφοφορίες</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Επιλογή Αρχείου</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Ρυθμίσεις</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Κάμερα &amp; Μικρόφωνο</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Πίνακας</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Έξοδος</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Πίσω στα Δωμάτια</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Ξεχάσατε τον Κωδικό σας?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Αλλάξτε Κωδικό</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Μέσω Email</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Μέσω Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>To Email Σας</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Το Login Σας</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Αποστολή Email με Σύνδεσμο εκ νέου ρύθμισης (reset)</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Η διεύθυνση Email δεν βρέθηκε! Εισάγετε την ίδια διεύθυνση Email με εκείνην που χρησιμοποιήσατε για τη δημιουργία του Λογαριασμού σας.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Παρακαλούμε εισάγετε Διεύθυνση Email ή Όνομα Χρήστη</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Δεν βρέθηκε Χρήστης που να αντιστοιχεί στο συγκεκριμένο Όνομα Χρήστη!</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Ένα mail με Ειδικό Σύνδεσμο έχει σταλεί στη διεύθυνση Email σας. Παρακαλούμε ελέγξτε το ταχυδρομείο σας. Αν δεν έχετε λάβει ακόμα mail, παρακαλούμε προσαρμόστε τις ρυθμίσεις spam του ταχυδρομείου σας και επαναλάβατε την αποστολή του mail Επιβεβαίωσης.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Μήνυμα</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Μήνυμα</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Μη Έγκυρη Τιμή Hash! Δεν βρέθηκαν Χρήστες.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Αλλάξτε τον Κωδικό σας</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Αλλαγή Κωδικού</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Νέος Κωδικός</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Επανάληψη Κωδικού</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Οι Κωδικοί που πληκτρολογήσατε δεν είναι ίδιοι!</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 ή Περισσότεροι Χαρακτήρες: Προβλήματα Καταχώρησης με Κεφαλαία Γράμματα!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Ο Κωδικός ρυθμίστηκε. Τώρα μπορείτε να συνδεθείτε.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>Εντάξει</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Άγνωστο Σφάλμα: Παρακαλούμε να το αναφέρετε στην Ομάδα Εξυπηρέτησής σας.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Το Όνομα Χρήστη δεν βρέθηκε.</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Μη Έγκυρος Κωδικός</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Επιτυχής Αποσύνδεση</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Frontend Εγγραφές Απενεργοποιημένες.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Μη Έγκυρο Email</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Επανάληψη Ονόματος Αρχείου: Παρακαλούμε επιλέξτε διαφορετικό Όνομα Αρχείου!</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Πολύ μικρό Όνομα Αρχείου!</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Αδυναμία Αποθήκευσης Διεύθυνσης</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Ο Χρήστης προστέθηκε επιτυχώς, αλλά πρέπει να τοποθετηθεί σε κάποιον Οργανισμό, αλλιώς δεν θα μπορεί να συνδεθεί!</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Νέα Εγγραφή</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Δεν βρέθηκε Πεδίο με το συγκεκριμένο ID (Κωδικό Αριθμό) Πεδίου!</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Δεν βρέθηκε Ετικέτα για το συγκεκριμένο Πεδίο!</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Απαιτείται Εξουσιοδότηση από το Διαχειριστή!</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Σύνταξη Γλώσσας</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Γλώσσα</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID Ετικέτας</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Όνομα Ετικέτας</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Τιμή</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Τιμές Πεδίου</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Όνομα Ετικέτας:</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Τιμή Ετικέτας:</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Αριθμός Ετικέτας:</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Διαγράψατε μόνο την Ετικέτα και ΟΧΙ το Πεδίο! Δεν μπορείτε να διαγράψετε το Πεδίο, διότι ενδέχεται να περιέχει Ετικέτες σε άλλες Γλώσσες.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Μη Έγκυρο ID (Κωδικός Αριθμός) Ετικέτας! Δεν βρέθηκε καταχωρημένο στη Βάση Δεδομένων.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Δεν μπορείτε να διαγράψετε το συγκεκριμένο Πεδίο! Μπορείτε να διαγράφετε Ετικέτες αλλά ΟΧΙ Πεδία. Αυτή τη στιγμή δεν έχει επιλεγεί κάποια Ετικέτα. Είτε δεν έγινε επιλογή Ετικέτας από κανένα Πεδίο, είτε δεν υπάρχει Ετικέτα για την συγκεκριμένη Γλώσσα και το συγκεκριμένο Πεδίο.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Εξαγωγή</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Πρέπει να αποσυνδεθείτε για να δείτε τις αλλαγές!</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Προσθήκη Νέας Γλώσσας</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Διαγραφή Γλώσσας</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Προσθήκη Νέας Γλώσσας</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Όνομα</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Προσθήκη Γλώσσας</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Αντίγραφα Ασφαλείας</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Αρχή</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Προηγούμενο</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Επόμενο</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Τέλος</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Ο Χρήστης μιλάει (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Ανοιγμα/Κλείσιμο Ήχου</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Σύστημα</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Οι Ρυθμίσεις Σας</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Γειά σας,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Επεξεργασία Προφίλ</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Νέα Μηνύματα:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Αλλαγή Εικόνας</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Δεδομένα Χρήστη - Εξαγωγή</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Όλοι οι Oργανισμοί πρέπει να είναι ήδη υπάρχοντες!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Εκκίνηση Εξαγωγής</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Κατά Οργανισμό</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Εκκίνηση Εξαγωγής</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Δεδομένα Χρήστη - Εισαγωγή</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Επιλογή users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Εισαγωγή</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Εξαγωγή σε XML Αρχείο. Το Αρχείο αυτό μπορεί να χρησιμοποιηθεί για:&lt;br/&gt; - Συνεισφορά στο Project &lt;br/&gt; - Εισαγωγή σε άλλο Σύστημα&lt;br/&gt; - Αντίγραφο Ασφαλείας &lt;br/&gt; - Εξατομίκευση&lt;br/&gt; - Εισαγωγή στο φάκελο Γλωσσών για επόμενη Εγκατάσταση</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Επιλογή Αρχείου Γλώσσας για Εισαγωγή. &lt;br/&gt;ΠΡΟΣΟΧΗ: Επιλέξτε τη σωστή Γλώσσα από τη λίστα! &lt;br/&gt;Όποιο και να είναι το όνομα του αρχείου&lt;br/&gt;θα εισαχθεί στην επιλεγμένη γλώσσα!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Εισαγωγή - Επιλογή Αρχείου</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Αποθήκευση ως</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Όνομα:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Σχόλιο:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="395" name="record">
+    <value>Μαγνητοσκοπήσεις</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Προβολέας Μαγνητοσκοπήσεων</value>
+  </string>
+  <string id="397" name="record">
+    <value>Μαγνητοσκοπήσεις Δημοσίων και Ιδιωτικών Δωματίων.</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Χρήστες :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Συνδεδεμένοι:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Χρήστες σε αυτό το Δωμάτιο:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Ανανέωση</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Αυτό το Δωμάτιο είναι πλήρες! Δοκιμάστε ξανά σε μερικά λεπτά.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Επιλέξτε ένα Δωμάτιο για να δείτε Λεπτομέρειες.</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Συνομιλήστε με τους Χρήστες σε αυτό το Δωμάτιο:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Δωμάτιο:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Χρήστες σε αυτό το Δωμάτιο:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Από:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Αναπαραγωγή Μαγνητοσκόπησης</value>
+  </string>
+  <string id="410" name="record">
+    <value>Μήκος:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Ημερομηνία:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Λειτουργία Μαγνητοσκόπησης! Δεν μπορείτε να μεταβάλλετε καμία Τιμή. Πρόκειται για ένα μαγνητοσκοπημένο Αρχείο!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Αναπαραγωγή</value>
+  </string>
+  <string id="414" name="record">
+    <value>Αναπαραγωγή / Παύση</value>
+  </string>
+  <string id="415" name="record">
+    <value>Έναρξη Μαγνητοσκόπησης</value>
+  </string>
+  <string id="416" name="record">
+    <value>Λήξη Μαγνητοσκόπησης</value>
+  </string>
+  <string id="417" name="record">
+    <value>Μαγνητοσκόπηση:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Κάποιος άλλος μαγνητοσκοπεί ήδη αυτή τη στιγμή:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Μαγνητοσκόπηση! Από τον Χρήστη:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Ακύρωση Μαγνητοσκόπησης χωρίς Αποθήκευση!</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Συνέχεια</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Κλείσιμο Παραθύρου και Συνέχεια Μαγνητοσκόπησης.</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Αλλαγή Χρώματος Γραμμής</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Επιλογή Χρώματος</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Απενεργοποίηση / Ενεργοποίηση Χρώματος Γραμμής</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Αλλαγή Χρώματος Γεμίσματος</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Απενεργοποίηση / Ενεργοποίηση Χρώματος Γεμίσματος</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Αλλαγή Πλάτους Γραμμής</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Κλείσιμο</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Αλλαγή Μεγέθους Γραμματοσειράς</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Διαγραφή Μαγνητοσκόπησης</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Επισκέπτης</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Από:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Όνομα</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Δωμάτιο</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Ημερομηνία</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Έναρξη</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Όνομα</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Ημερομηνία</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Διαγραφή Chatlog από το Διακομιστή</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Συνομιλία</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Aποστολή Μηνύματος</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Επιλογή Δημοσιευμένων Συσκευών</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ήχος και Βίντεο</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Ήχος μόνο</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Βίντεο μόνο</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Χωρίς Ηχό/Βίντεο (Στατική Εικόνα)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Δεν θα δημοσιεύεται ούτε Ήχος ούτε Βίντεο από το PC σας. Αντί αυτού θα εμφανίζεται η Εικόνα του Προφίλ σας. Επιλέξτε αυτήν τη ρύθμιση αν έχετε προβλήματα με το bandwidth σας ή μια πολύ αργή Σύνδεση Internet.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>ΔΕΥ</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>ΤΡΙ</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ΤΕΤ</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>ΠΕΜ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>ΠΑΡ</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>ΣΑΒ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>ΚΥΡ</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Δευτέρα</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Τρίτη</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Τετάρτη</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Πέμπτη</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Παρασκευή</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Σάββατο</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Κυριακή</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>ΗΕ</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Ημερολογιακή Εβδομάδα</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Ιανουάριος</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Φεβρουάριος</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Μάρτιος</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Απρίλιος</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Μάιος</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Ιούνιος</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Ιούλιος</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Αύγουστος</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Σεπτέμβριος</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Οκτώβριος</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Νοέμβριος</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Δεκέμβριος</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Ημερολόγιο</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Συμμετέχοντες</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Εμφάνιση Ρυθμίσεων Διάταξης</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Πλάτος | Ύψος</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Χώρος Βίντεο</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Χώρος Συντονισμού</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Χώρος Πίνακα</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Ενεργοποιημένος</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Πλάτος | Ύψος</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Χώρος Αρχείων, Συνομιλιών και Συμμετεχόντων</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Ενεργοποιημένος</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Πλάτος | Ύψος</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Ο Συντονιστής εγκατέλειψε το Δωμάτιο. Κανείς δεν παρουσιάζει αυτήν τη στιγμή. Μπορείτε να κάνετε αίτηση για Συντονισμό ή να περιμένετε.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Δεν υπάρχει Συντονιστής σε αυτό το Δωμάτιο, αλλά υπάρχουν κάποιοι Συμμετέχοντες. Πρέπει να κάνετε αίτηση για Συντονισμό ή να περιμένετε.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>$APP_NAME - Ανάδραση</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Πρόσκληση</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Μήνυμα από το Χρήστη:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Μήνυμα:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Κάντε κλικ σε αυτόν το Σύνδεσμο για να συμμετάσχετε στις Συναντήσεις:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Κάντε κλικ εδώ για να μπείτε σε κάποιο Δωμάτιο.</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Αν έχετε προβλήματα με το Σύνδεσμο, παρακαλούμε αντιγράψτε και επικολλήστε αυτό στο Φυλλομετρητή σας:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Εγγραφή στο $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Τα Στοιχεία Σας:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Κωδικός:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME - Ομάδα</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME - Εγγραφή Μέλους</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Αλλαγή Κωδικού</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Κάντε κλικ σε αυτόν το Σύνδεσμο για να εισάγετε έναν νέο Κωδικό:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Κάντε κλικ εδώ για να εισάγετε έναν νέο Κωδικό.</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Αν έχετε προβλήματα με το Σύνδεσμο, παρακαλούμε αντιγράψτε και επικολλήστε αυτό στο Φυλλομετρητή σας:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME - Αλλαγή Κωδικού</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Παρακαλούμε εισάγετε μια έγκυρη Ημερομηνία, για παράδειγμα: 24.12.2001 (ΗΗ.ΜΜ.ΕΕΕΕ)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Παρακαλούμε εισάγετε ένα έγκυρο Email, για παράδειγμα: name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Παρακαλούμε εισάγετε έναν πραγματικό Aριθμό, για παράδειγμα: 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Παρακαλούμε εισάγετε έναν ακέραιο Aριθμό, για παράδειγμα: 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Παρακαλούμε εισάγετε έναν έγκυρο Aριθμό Tηλεφώνου, για παράδειγμα: ++30 210 5731230</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Παρακαλούμε εισάγετε μια έγκυρη Ώρα, για παράδειγμα: 12:23 (ΩΩ:ΛΛ)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Προστατευμένο με Κωδικό</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Κωδικός</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Εγκυρότητα</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Απεριόριστη</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Περίοδος</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Μία Φορά</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Έγκυρο Από:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Έγκυρο Έως:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Πρόσκληση στο $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Δεν υπάρχει διαθέσιμη Πρόσκληση για το συγκεκριμένο Κωδικό!</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Η Πρόσκληση έχει ήδη χρησιμοποιηθεί! Αυτός ο τύπος Πρόσκλησης δεν μπορεί να χρησιμοποιηθεί ξανά.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Ο συγκεκριμένος Κωδικός Πρόσκλησης δεν είναι έγκυρος!</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Κωδικός:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Έλεγχος Κωδικού</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Μη Έγκυρος Κωδικός!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Ήχος/Βίντεο</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Συγχρονισμός Ήχου/Βίντεο</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Το login ήταν σωστό, αλλά η Σύνοδος που δοκιμάσατε δεν είναι ενεργή ή δεν είναι αποθηκευμένη στον Διακομιστή. Πρέπει να αποκτήσετε νέο Αριθμό Συνόδου και να δοκιμάσετε να συνδεθείτε ξανά.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Ο Αριθμός Συνόδου δεν είναι ενεργός ή δεν έχει δικαιώματα Διαχείρισης. Η πύλη SOAP χρειάζεται έναν Χρήστη με Δικαιώματα Διαχείρισης για την ενσωμάτωση νέων Χρηστών.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Η συγκεκριμένη Σύνοδος δεν έχει συνδεδεμένα Στοιχεία Απομακρυσμένου Χρήστη. Είτε δεν καλέσατε την πύλη SOAP πριν την πρόσβαση στην Εφαρμογή, είτε χρησιμοποιείτε λάθος Αριθμό Συνόδου.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Η Συσκευή Εγγραφής είναι σε πειραματικό στάδιο προς το παρόν!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>Άξονας-x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>Άξονας-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>π</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>Πλάτος</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>υ</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>Ύψος</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Αλλαγή Βαθμού Διαφάνειας</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Άνοιγμα Φυλλομετρητή</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Κλείσιμο Φυλλομετρητή</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Η Σύνδεση με το Διακομιστή χάθηκε. Πρέπει να φορτώσετε ξανά την Εφαρμογή ή/και να ελέγξετε το Δίκτυό σας.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Δείκτης</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Συγχρονισμός</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Συγχρονισμός Χρηστών. Παρακαλούμε περιμένετε.</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Αποθήκευση ως SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Αποθήκευση ως PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Αποθήκευση ως JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Αποθήκευση ως PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Αποθήκευση ως TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Υπενθύμιση:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Κατηγορία:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Επανάληψη:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>Καμία</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Τοποθεσία:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Έναρξη</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Λήξη</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Τίτλος:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Σχόλιο:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Προσκαλέστε Κόσμο</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Καθημερινά</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Κάθε Μήνα</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Κάθε Έτος</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Η Λήξη μιας Συνάντησης πρέπει να είναι μετά από την Έναρξη της Συνάντησης!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Παρακαλούμε εισάγετε Τίτλο!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Ενεργοποιήστε αυτό για γλώσσες με διάταξη από τα δεξιά προς τα αριστερά.</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Αρχικό Ταμπλό</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Παρακολουθήστε μαγνητοφωνημένες Συναντήσεις ή Συμβάντα</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Συνάντηση - Συνδιάσκεψη με 4 (έως 16) Χρήστες&lt;br/&gt;Όλοι θα έχουν πρόσβαση σε Ήχο και Βίντεο.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Συμβάν - Συνδιάσκεψη με έως και 200 συμμετέχοντες&lt;br/&gt;Μόνο ο Συντονιστής θα έχει Ήχο και Βίντεο.</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Δημιουργία Χρηστών, Δωματίων, Οργανισμών&lt;br/&gt; και Αλλαγή Διαμόρφωσης.</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Χρήστες Δωματίου</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>Δ</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Φόρτωση Εγγράφου. Παρακαλούμε περιμένετε μέχρι να συγχρονιστούν όλοι οι Πελάτες.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Η Φόρτωση Ολοκληρώθηκε. Μετατροπή Εγγράφου ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Έναρξη Φόρτωσης</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Διάλογος Φόρτωσης και Εισαγωγής: Παρακαλούμε επιλέξτε ένα Αρχείο από το Δίσκο.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Επιλογή Αρχείου</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Συνδέσεις</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Τιμή</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Συνδεδεμένος Από</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Δωμάτιο / Πλαίσιο</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Αφαίρεση Χρήστη</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Αφαίρεση Χρήστη</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Θέλετε πραγματικά να βγάλετε αυτόν τον Πελάτη από τη Σύνδεση;&lt;br/&gt; Με αυτόν τον τρόπο ο Πελάτης αφαιρείται μόνο από το τρέχον Δωμάτιο και μπορεί να συνδεθεί ξανά.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Η Σύνοδός σας έχει κλείσει από Διαχειριστή ή Συντονιστή.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Τηλέφωνο</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Ο Χρήστης είναι ο Συντονιστής του συγκεκριμένου Δωματίου!</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Ο Χρήστης επιτρέπεται να σχεδιάσει πάνω στον Πίνακα.</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Επαν)Εκκίνηση Ήχου/Βίντεο ή Αλλαγή Ρυθμίσεων Συσκευής</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Επιτρέψτε στο Χρήστη να σχεδιάσει πάνω στον Πίνακα</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Αφαιρέστε τη δυνατότητα σχεδίασης πάνω στον Πίνακα</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Χρήστες</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Αρχεία</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Πίνακας</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Συνομιλία</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Ο Λογαριασμός σας αντιστοιχεί σε πολλαπλούς Οργανισμούς. Παρακαλούμε επιλέξτε έναν από αυτούς για τη συγκεκριμένη Σύνοδο.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Αυτό το Δωμάτιο είναι πλήρες. Παρακαλούμε δοκιμάστε ξανά αργότερα.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Τύπος Δωματίου</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Δωμάτιο Συνάντησης</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Χρόνος Διακομιστή</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Υπενθύμιση</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Μήνυμα από τον Χρήστη:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Μήνυμα:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Κάντε κλικ σε αυτόν το Σύνδεσμο για να συμμετάσχετε στις Συναντήσεις:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Κάντε κλικ εδώ για να εισέλθετε στο Δωμάτιο</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Αν έχετε προβλήματα με το Σύνδεσμο, παρακαλούμε αντιγράψτε και επικολλήστε αυτό στο Φυλλομετρητή σας:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Εσωτερική Αναζήτηση</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Εξωτερική Προσθήκη</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Όνομα</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Επώνυμο</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Email</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Επιβεβαίωση Αποσύνδεσης</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Θέλετε σίγουρα να αποσυνδεθείτε;</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Ενέργειες</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Δωμάτιο Επιδείξεων</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Χρόνος Επίδειξης</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Χρονόμετρο Συνάντησης</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Αυτό το Δωμάτιο είναι ένα Δωμάτιο Επιδείξεων. Για να απενεργοποιήθεί αυτή η ειδοποίηση πρέπει να βρείτε ένα Ιδιωτικό Δωμάτιο Συναντήσεων για προσωπική χρήση ή να εγκαταστήσετε Διακομιστή της κυριότητάς σας. Αυτόματη Αποσύνδεση σε:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Υπό Συντονισμό</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Παρακαλούμε περιμένετε μέχρι να εισέλθει στο Δωμάτιο Συντονιστής. ο Συντονιστής μπορεί να είναι κάποιος Δάσκαλος, Διαχειριστής ή ο δημιουργός του Δωματίου.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Εντάξει</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Εισερχόμενη Διαμοίραση Οθόνης</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Υπάρχει μια νέα εισερχόμενη Διαμοίραση Οθόνης από το Χρήστη:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Έναρξη Διαμοίρασης</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Προσθήκη Νέας Συνάντησης</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Δωμάτιο Συναντήσεων</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Δωμάτιο Συμβάντων</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Συντονισμός</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Συντονισμός Χρηστών</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Συντονισμός Δωματίων</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>Σ</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Θα θέλατε να μετατρέψετε αυτόν το Χρήστη σε Συντονιστή του Οργανισμού;</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Παρακαλούμε επιλέξτε έναν Οργανισμό πριν προσπαθήσετε να προσθέσετε κάποιον Χρήστη σε αυτόν!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Οργανισμός - Συντονιστής</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Θέλετε πραγματικά να διαγράψετε αυτόν το Χρήστη από τον Οργανισμό;</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Αυτός ο Χρήστης είναι Συντονιστής!</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Αυτός ο Χρήστης δεν είναι Συντονιστής.</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Θέλετε αυτός ο Χρήστης να μην είναι Συντονιστής του Οργανισμού;</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Προσθέστε ή διαγράψτε Χρήστες/Δωμάτια στον Οργανισμό σας.</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Θέλετε πραγματικά να διαγράψετε αυτήν την Εγγραφή;</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Θέλετε πραγματικά να διαγράψετε αυτόν το Χρήστη από τον Οργανισμό σας; Θα διαγραφεί μόνο η Σύνδεση μεταξύ του Χρήστη και του Οργανισμού. Για να διαγράψετε πραγματικά τον Χρήστη πρέπει να συνδεθείτε στον Πίνακα Διαχείρισης.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Δεν μπορείτε να διαγράψετε το δικό σας Χρήστη!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Αυτή η Μέθοδος χρειάζεται Λογαριασμό Διαχειριστή για να εκτελεστεί!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Δεν υπάρχει Σύνοδος που να σχετίζεται με το συγκεκριμένο Κωδικό Αριθμό (ID).</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Πρόκειται για Λογαριασμό Διαχειριστή ή Συντονιστή! Η επεξεργασία τέτοιων Λογαριασμών είναι δυνατή μόνο από τον Πίνακα Διαχείρισης.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Για την ολοκλήρωση της Εγγραφής σας παρακαλούμε κάντε κλικ στον παρακάτω Σύνδεσμο ή αντιγράψτε το URL στην μπάρα του Φυλλομετρητή σας.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Κάντε κλικ για να επιβεβαιώσετε το Email σας.</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Δεν βρέθηκε Xρήστης για τη συγκεκριμένη τιμή Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Αυτός ο Xρήστης έχει ενεργοποιηθεί ήδη!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Ο Λογαριασμός σας ενεργοποιήθηκε με επιτυχία!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Συνδεθείτε Τώρα</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Ο Λογαριασμός σας δεν είναι ενεργοποιημένος! Χρησιμοποιείστε πρώτα το Σύνδεσμο που βρίσκεται στο Email που λάβατε κατά την διάρκεια της Εγγραφής σας.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Εγγραφήκατε με επιτυχία. Ένα μήνυμα με Επαναληπτικό Κωδικό έχει σταλεί στο Email σας. Παρακαλούμε ελέγξτε το Ταχυδρομείο σας.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Αφαίρεση Συντονιστικού Ρόλου από αυτόν το Χρήστη.</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Παραχώρηση Δικαιωμάτων Συντονισμού σε αυτόν το Χρήστη.</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Χρήστης</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Πρόσβαση στον Πίνακα</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Συντονιστής</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Συντονισμός: Επιλέξτε κάποιον Χρήστη από τη Λίστα για να του παραχωρήσετε το Συντονισμό και πρόσβαση σε Πίνακα ή Βίντεο.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Αυτός ο Χρήστης είναι ήδη Συντονιστής, οπότε έχει αυτόματα Δικαιώματα Σχεδίασης.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Πρόκειται για εσάς! Δεν μπορείτε να αφαιρέσετε δικαιώματα Συντονισμού από τον εαυτό σας.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Επιτρέψτε σε αυτόν τον Χρήστη να Δημοσιεύσει τον Ήχο/Βίντεό του.</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Αφαίρεση Ήχου/Βίντεο του συγκεκριμένου Χρήστη.</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Θα ήθελα να αναλάβω τον Συντονισμό αυτού του Δωματίου.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Θα ήθελα να σχεδιάσω πάνω στον Πίνακα.</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Θα ήθελα να μοιραστώ τον Ήχο/Βίντεό μου.</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Είσαστε ο Συντονιστής αυτού του Δωματίου.</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Μπορείτε να σχεδιάσετε πάνω στον Πίνακα.</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Μπορείτε να μοιραστείτε τον Ήχο/Βίντεό σας.</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Μήνυμα στο Συντονιστή</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Ο Χρήστης</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>θα ήθελε να αναλάβει το Συντονισμό. Χρησιμοποιήστε τα Εικονίδια Κατάστασης δίπλα στο Χρήστη (Λίστα Χρηστών) για να αναθέσετε ή να αφαιρέσετε το Συντονισμό.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>θα ήθελε να σχεδιάσει πάνω στον Πίνακα. Χρησιμοποιείστε τα Εικονίδια Κατάστασης δίπλα στο Χρήστη (Λίστα Χρηστών) για να παραχωρήσετε ή να αφαιρέσετε δικαιώματα σχεδίασης πάνω στον Πίνακα.</value>
+  </string>
+  <string id="695" name="695">
+    <value>θα ήθελε να μοιραστεί τον Ήχο/Βίντεό του. Χρησιμοποιείστε τα Εικονίδια Κατάστασης δίπλα στο Χρήστη (Λίστα Χρηστών) για να παραχωρήσετε ή να αφαιρέσετε το δικαίωμα οποιουδήποτε Χρήστη να μοιράζεται Ήχο/Βίντεο.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Πρέπει να περιμένετε μέχρι να εισέλθει κάποιος Συντονιστής στο Δωμάτιο.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Ημέρα</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Μήνας</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Έτος</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Φόρτωση Αρχείου</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Προσθήκη Φακέλου</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Ανανέωση</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Σκουπίδια</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Τα Αρχεία Μου (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Αρχεία Δωματίου (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Προσθήκη Αρχείου</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Προσθήκη Φακέλου</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Διαγραφή Φακέλου</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Επεξεργασία Ονόματος</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Νέος Φάκελος</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Θέλετε σίγουρα να διαγράψετε το συγκεκριμένο Στοιχείο;</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Αναζήτηση</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Αναζήτηση</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Άνοιγμα Εγγράφου</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Εμφάνιση όλων των Αρχείων (Δενδρική Εικόνα)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Κλείσιμο Εγγράφου</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Διαγραφή Αρχείου</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Δεν επιτρέπεται να σχεδιάσετε τίποτα πάνω στον Πίνακα. Πρέπει να γίνετε Συντονιστής ή τουλάχιστον να αποκτήσετε δικαιώματα Επεξεργασίας του Πίνακα. Μπορείτε να ζητήσετε από ένα Συντονιστή να σας παραχωρήσει τέτοια δικαιώματα.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Ιδιότητες Εγγράφου</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Έναρξη Πελάτη (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Έναρξη Πελάτη (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Κάποιος Χρήστης θέλει να μοιραστεί την Οθόνη του. Επιθυμείτε να την δείτε?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Αυτήν τη στιγμή μοιράζεστε την Επιφάνεια Εργασίας σας. Για την διακοπή της Συνόδου Διαμοίρασης παρακαλούμε πατήστε το κουμπί Διακοπής στο Διαμοιραζόμενο Πελάτη.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Σύνοδος Διαμοίρασης</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Ήδη μοιράζεστε την Επιφάνεια Εργασίας σας!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Προβολή Επιφάνειας Εργασίας</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Έξοδος</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Διαμοιραστής Επιφάνειας Εργασίας</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Πατήστε "Έναρξη Διαμοίρασης" για να δημοσιοποιήσετε την Οθόνη σας.</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Έναρξη Διαμοίρασης</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Τερματισμός Διαμοίρασης</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Επιλογή Περιοχής Οθόνης:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Μεταβολή Πλάτους</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Ο Διαμοιραστής τερμάτισε την συγκεκριμένη Σύνοδο!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Μεταβολή Ύψους</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Αρχικό Σημείο-X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Αρχικό Σημείο-Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Πλάτος:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Ύψος:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Η Σύνδεση έκλεισε από τον Διακομιστή!</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Εξωτερική Έναρξη</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Αν κλείσετε πλήρως αυτήν την Σύνοδο δεν θα μπορείτε να επανεκκινήσετε την προβολή για την συγκεκριμένη Σύνοδο!</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Επιβεβαίωση Τερματισμού Συνόδου Προβολής</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Διαμοίραση Οθόνης</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Σύνοδος Εγγραφής</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Από Κοινού Φυλλομέτρηση</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Λυπούμαστε, ... Ο Firefox στα Windows δεν εμφανίζει καθαρά την Από Κοινού Φυλλομέτρηση (Co-Browsing). Παρακαλούμε χρησιμοποιήστε κάποιον άλλο Φυλομετρητή για να κάνετε χρήση του συγκεκριμένου χαρακτηριστικού.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Προηγούμενο</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Επόμενο</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Επαναφόρτωση</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Αρχική Σελίδα</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Φόρτωση</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Προσθήκη του συγκεκριμένου Website ως Εξ'ορισμού Website στο Προφίλ σας.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Δοκιμή Εγκατάστασης</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Ελέγξτε την εγκατάσταση του Μικροφώνου και της Κάμεράς σας πριν εισέλθετε σε κάποιο Δωμάτιο, μαγνητοσκοπώντας για κάποια δευτερόλεπτα.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Να μην εμφανιστεί αυτός ο έλεγχος ξανά.</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Ακύρωση</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Συνδιάσκεψη</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Να μην ερωτηθώ ξανά.</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Μπορείτε να συνεχίσετε χωρίς ελέγχους αν δεν σχεδιάζετε να δημοσιοποιήσετε την φωνή ή την εικόνα σας. Οι Συμμετέχοντες χωρίς Ήχο ή Βίντεο μπορούν να κάνουν χρήση του Πίνακα, να μοιράζονται την Επιφάνεια Εργασίας τους ή να γράφουν μηνύματα Συνομιλιών.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Μέτρο Επιπέδου</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Έναρξη</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Έναρξη Συνδιάσκεψης</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Έναρξη Συμβάντος</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Επιλογή Δωματίου</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Έλεγχος</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Έναρξη Συνδιάσκεψης</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Διαδικασία Συνδιάσκεψης:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Μαγνητοσκόπηση</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Να μην γίνεται Έλεγχος Ήχου/Βίντεο (Μαγνητοσκόπηση) πριν από την είσοδο σε Συνδιάσκεψη.</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Δημόσια Δωμάτια</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Στα Δημόσια Δωμάτια έχουν πρόσβαση όλοι οι Χρήστες.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Ιδιωτικά Δωμάτια</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Στα Ιδιωτικά Δωμάτια έχουν πρόσβαση μόνο οι Χρήστες του ίδιου Οργανισμού.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Τα Δωμάτιά Μου</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Τα Δωμάτια του συγκεκριμένου τμήματος δημιουργούνται για προσωπική χρήση μέσα από το Ημερολόγιο και διαθέτουν μια αρχική και μια τελική ημερομηνία. Μόνο έγκυρα Δωμάτια εμφανίζονται εδώ.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Πρέπει να είσαστε Συντονιστής για να πραγματοποιήσετε την συγκεκριμένη ενέργεια.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Αίτηση Συντονισμού</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Αίτηση Πρόσβασης στον Πίνακα</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Αίτηση Πρόσβασης σε Κάμερα/Μικρόφωνο</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Η συγκεκριμένη τιμή Hash Συνόδου έχει χρησιμοποιηθεί ήδη. Δεν μπορείτε να την χρησιμοποιήσετε ξανά!</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>ΕΝΑΡΞΗ</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>ΕΧΙΤ</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Θέλετε πραγματικά να εγκαταλείψετε την Συνδιάσκεψη; Καλό θα ήταν να καθαρίσετε τον Πίνακα και το Ιστορικό Συνομιλιών και να αφαιρέσετε Έγγραφα που πιθανώς έχουν φορτωθεί.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Έξοδος από την Συνδιάσκεψη</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Δωμάτια</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Επιλέξτε Δωμάτιο για Συνάντηση</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Υπάρχει κάποιο μη αποθηκευμένο Συμβάν στο Ημερολόγιο. Παρακαλούμε είτε να το αποθηκεύσετε είτε να το αφαιρέσετε.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Παρακαλούμε προσθέστε τουλάχιστον έναν Συμμετέχοντα στην Συνάντησή σας!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Θέλετε πραγματικά να διαγράψετε αυτό το Συμβάν;</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Προειδοποίηση</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Προσθήκη Συμβάντος</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Μέρα</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Εβδομάδα</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Μήνας</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Περιγραφή</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Συμμετέχοντες</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME: Η Πλατφόρμα Σας για Web Συνδιασκέψεις. Μπορείτε να ακολουθήσετε τις Οδηγίες, να πατήσετε το κουμπί Έναρξης και να ξεκινήσετε αμέσως μια Συνδιάσκεψη ή να μετα-φερθείτε στο Ημερολόγιο και να προγραμματίσετε μια Συνδιάσκεψη για το μέλλον.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Σχέδιο Συνάντησης</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Για να προγραμματίσετε μια Συνδιάσκεψη μπορείτε να προσθέσετε ένα νέο Συμβάν στο Ημερολόγιο. Για κάθε Συμβάν του Ημερολογίου δημιουργείται αυτόματα ένα Δωμάτιο Συνδιασκέψεων. Εσείς, μάζι με όλους τους Συμμετέχοντες στην Συνδιάσκεψη, θα λάβετε ένα mail με σύνδεσμο στο συγκεκριμένο Δωμάτιο.&lt;br/&gt;&lt;br/&gt;Μπορείτε να επιλέξετε μεταξύ διαφορετικών τύπων Δωματίων που έχουν διαφορετικές διατάξεις και διαφορετικά συστήματα Συντονισμού. Μπορείτε επίσης να επιλέξετε μεταξύ διαφορετικών τύπων Ειδοποίησης για το mail που θα σταλεί για κάθε Συμβάν του Ημερολογίου.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Χρειάζεστε Βοήθεια;</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Περιορισμένη</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Αναζήτηση</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Προσθήκη</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Δεν έχει επιλεγεί Χρήστης! Παρακαλούμε επιλέξτε πρώτα ένα στοιχείο από τη λίστα και έπειτα πατήστε "Προσθήκη".</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Προσθήκη Συμμετέχοντα</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Αποθήκευση</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Διαγραφή</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Λεπτομέρειες Συμβάντος</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Εξ Oρισμού Συντονιστές</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Ανώτερος</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Όνομα</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Προσθήκη Νέου Εξ Oρισμού Συντονιστή</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Είναι Ανώτερος Συντονιστής</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Αν το Δωμάτιο είναι συντονιζόμενο, οι Χρήστες επιπέδου Συντονιστή ή Διαχειριστή γίνονται αυτόματα Συντονιστές όταν εισέλθουν στο Δωμάτιο. Αν θέλετε μόνο κάποιος συγκεκριμένος Χρήστης να γίνει Συντονιστής χρησιμοποιήστε την επιλογή Εξ Ορισμού Συντονιστή.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Ένας Ανώτερος Συντονιστής είναι πάντα Συντονιστής όταν εισέρχεται σε κάποιο Δωμάτιο και κανείς δεν μπορεί να αφαιρέσει το Σήμα Συντονισμού από αυτόν.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Εφαρμογή Ανώτερου Συντονισμού σε Χρήστη</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Αφαίρεση Ανώτερου Συντονισμού από Χρήστη</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>Δ</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Με την προσθήκη ενός Οργανισμού σε ένα Δωμάτιο, μόνο οι Χρήστες που ανήκουν στον συγκεκριμένο Οργανισμό έχουν πρόσβαση στο συγκεκριμένο δωμάτιο (Αυτό ισχύει μόνο όταν η τιμή "Δημόσιο" είναι ίση με false!).</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Συντονισμός</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Περιορισμοί</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Οργανισμός</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Είστε σίγουρος;</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Θέλετε πραγματικά να διαγράψετε το συγκεκριμένο Στοιχείο; Πρέπει να πατήσετε το κουμπί αποθήκευσης για να αποθηκευτούν οι αλλαγές!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Δεν έχει επιλεγεί κάποιος Χρήστης! Παρακαλούμε επιλέξτε πρώτα έναν Χρήστη και μετά κάντε προσθήκη.</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Προσθήκη Νέου Εξ Ορισμού Συντονιστή</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Επιθυμείτε να προσθέσετε το Σήμα Ανώτερου Συντονισμού σε αυτόν τον Χρήστη; Ένας Ανώτερος Συντονιστής δεν είναι μόνο Συντονιστής κάποιου Δωματίου. Επιπλέον, κανένας άλλος Συντονιστής δεν μπορεί να αφαιρέσει το Σήμα Συντονισμού από αυτόν. Πρέπει να αποθηκεύσετε το Αντικείμενο Δωματίου για την αποθήκευση των συγκεκριμένων ρυθμίσεων!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Επιθυμείτε να αφαιρέσετε το Σήμα Ανώτερου Συντονισμού από αυτόν τον Χρήστη; Πρέπει να αποθηκεύσετε το Αντικείμενο Δωματίου για την αποθήκευση των συγκεκριμένων ρυθμίσεων!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Αυτός ο Χρήστης είναι Ανώτερος Συντονιστής! Δεν μπορείτε να αφαιρέσετε το Σήμα Συντονισμού από έναν Ανώτερο Συντονιστή!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Θέλετε πραγματικά να διαγράψετε το συγκεκριμένο Αρχείο/Φάκελο;</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Διαγραφή Αρχείου/Φακέλου;</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Δις.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Δρ.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Ιδιότητες</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Εμφάνιση θέσης ποντικιού στους θεατές</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/hebrew.xml b/src/main/webapp/languages/hebrew.xml
new file mode 100644
index 0000000..8837ac1
--- /dev/null
+++ b/src/main/webapp/languages/hebrew.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conference</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Meeting</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Events</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Settings</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profile</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Record</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>No file available</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Record by Teacher</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Connected users:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Start a conference</value>
+  </string>
+  <string id="13" name="myname">
+    <value>My Name</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>VideoConference</value>
+  </string>
+  <string id="15" name="import">
+    <value>File Upload</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Refresh list</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>To Main File</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>new poll</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>A new poll for the conference.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Question:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Type of poll:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Create</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Each connected user receives a message with the new poll.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Create a poll</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Yes/No</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numeric 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Poll</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Must be Moderator to create an question</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Your vote is registered.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Your have already voted in this poll.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Vote !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Your response:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Yes</value>
+  </string>
+  <string id="35" name="no">
+    <value>No</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>wants to know:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Poll results</value>
+  </string>
+  <string id="38" name="question">
+    <value>Question:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Results:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Answers:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>No polls have been started.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Vote!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Meeting (max 4 seats)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conference (max 50 seats)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Type</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Other seats</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Already chosen</value>
+  </string>
+  <string id="48" name="enter">
+    <value>enter</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>The moderator has left the meeting.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>System information</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Choose device</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Choose webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Choose micro:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancel</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>You need to reconnect.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Edit setup.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Course:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Language:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Cancel</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Clear whiteboard</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Do you want that the whiteboard to be emptied before a new picture is added?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Don't ask again</value>
+  </string>
+  <string id="65" name="no">
+    <value>no</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Edit setup</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Confirmation request before emptying the whiteboard.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>User Info</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Clear Whiteboard</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Undo</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Redo</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Select an Object</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Paint</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Draw Line</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Draw Underline</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectangle</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Arrow</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Delete</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Apply</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="84" name="mod">
+    <value>I have a question</value>
+  </string>
+  <string id="85" name="close">
+    <value>Close</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>bold</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>WAITING</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>A User wants to apply for moderation, you can either grant him only access to the whiteboard or completely switch the moderation role. User:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Accept</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Reject</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Cancel</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Sending request to following Users</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accepted</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rejected</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Change Moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>You are not moderating this course!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>This Room is full. Sorry please try again later.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Close</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>input data error</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 or more characters; capitalization matters!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>userpass must be at least 4 characters</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>The username is already taken</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>The email is already registered</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>System error please contact System-Admins</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>User or EMail:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Pass:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Language</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Sign In</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Sign Up</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>User:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Pass:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>ReType:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Firstname:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Lastname:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Country:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Register</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Cancel</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Not a member?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>משתמשים</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Groups</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisations</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Meeting-Rooms</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>public</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Enter</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Password</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Retype</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Firstname</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Birthday</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Street/No</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>ZIP/Town</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Country</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adress-Info</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Userdata</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Save</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Save</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Firstname</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Show next</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Show pre</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Delete record</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Cancel</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Delete</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>New record</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Refresh record</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Delete record</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>disabled</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>enabled</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisations</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Calendar</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Close</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisation-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Name</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>User</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Userlevel</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>name</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Add organisation</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Add organisation</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Cancel</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Add</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Remove Organisation</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>User</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Add user</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Delete user</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Add user to Organization</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Search user</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Search</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>User</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Enter</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Conferencerooms</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Conferencerooms</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Name</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>public</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisations</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Meetingrooms</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Name</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Type</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Public</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Comment</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Save and Export</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>load</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Save As</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Filename</value>
+  </string>
+  <string id="201" name="files">
+    <value>קבצים</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Cancel</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Save</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Error</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Loading</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objects loaded</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronizing, Users to wait:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Loading Imagedata</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronizing, Users to wait:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Clear Whiteboard</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Clear Whiteboard, all data on Whiteboard will be lost</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirm before loading a file</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Send invitation</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Send invitation</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Subject</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Recipient</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Message</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Send</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancel</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>send</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Userdata</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Your nickname for this conference</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Nick</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Firstname</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Lastname</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Language</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>enter</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Loading</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Data loading, please wait!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Wrong Password</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Please enter two identical passwords with at least 6 characters</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Wrong Mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>You have entered an invalid Mail-Adress</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registration Complete</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Your account has been created. You can login now.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>You cannot share your screen at the moment. Somebody else already share's its screen.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Sharing forbidden</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Share/Record Screen</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Bad Bandwidth: You have not been able to syncronize the Screen. Frames will be dropped. If this Warning is shown often you could ask the moderator to reduce the Quality.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Screen of:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Paint</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>קבצים</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Members</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download original document</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download pdf document</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Load Presentation to whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Drag this Object</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Resize this Object</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>of</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Go to first Page</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Go to previous Page</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Go to next Page</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Go to last Page</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Mr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Ms.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Key</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Key</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>last update</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>updatedby</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comment</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Value</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>of</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>משתמשים</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>delete user from organisation</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>D</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>This user is already member of this organisation.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>News</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Goto Conference</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Goto Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Help and Support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Report a bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>more</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project Webside (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Remember Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Content</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>My Home Page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>My Scheduled Meetings</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My Scheduled Events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Public Meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private Meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Public Events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private Events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Public Content</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private Content</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personal Content</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderation</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>I have a question</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Polls</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Choose a file</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Settings</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Cam and Mic Settings</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Whiteboard Settings</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Exit</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Back to Rooms</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Forgot your password?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Reset Password</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>By Mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>By Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Your Mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Your Login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Send Mail with reset Link</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>No such email address was found. Make sure you enter the same email address you used to create your account.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Please enter either a Mail or a Username</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>There is no User connected to this Username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>The email containing a special link has been sent to your email address, please check your mailbox. If you still have not received a email, please adjust your email spam settings and resend confirmation email.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Error</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Message</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Invalid Hash. No User found.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset Your Password</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>change Password</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>new Password</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>re-enter Password</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>The Passwords you entered weren't identical.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 or more characters; capitalization matters!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password set. You can login now.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Unkown Error. Please report this to your Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username not found</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Invalid Password</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Successfully Logged out</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Frontend Registration disabled.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Invalid EMail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>duplicate filename, please choose another filename</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>filename too short</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Could not save Address</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>User added but you need to assign this User to an Organisation, otherwise he won't be able to sign-in.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>New Record</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No Field found with this FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No Label found for that Field.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin Authorization required</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Language-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Language</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Value</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Fieldvalues</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelValue</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>You did only delete the Label NOT the Field! You cannot delete the Field, it may has Labels in other Languages.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Invalid Labelid. The FieldLanguagesvalues_Id cannot be found in the database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>You cannot delete this Field. You can only delete Labels NOT Fields. There is no Label loaded at the moment, wether it is not selected any Field or there is no Label for this Language for that Field defined.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>You need to logout to see any changes.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>delete language</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>add language</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>goto first</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>goto previous</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>goto next</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>goto last</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>user speaks (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>turn sound on/off</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Your Settings</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>hi,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Edit your profile</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>New Messages:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Upload new Image</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Userdata - Export</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>All organisations must be already existing!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>By organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Userdata - Import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>choose users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>import</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export to XML - These files can be used to:&lt;br/&gt; - Contribute to the project - Import into another System&lt;br/&gt; - Backup - Customization&lt;br/&gt; - Put it into the language-directory for your next installation</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choose a language file to import. &lt;br/&gt;Choose the right Langauge from the Combobox! &lt;br/&gt;No matter what the name of the file is, &lt;br/&gt;it will be imported into this language!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>import - choose file</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Save as</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Name:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comment:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>save</value>
+  </string>
+  <string id="395" name="record">
+    <value>Recordings</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Recordings Viewer</value>
+  </string>
+  <string id="397" name="record">
+    <value>Recordings of public and private Rooms</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>משתמשים :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Joined:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Users in this Room:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>refresh</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>This Room is Full. Try again in a few minutes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>click on a room to get details</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat with the users in this Room:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Room:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Users in this room:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>since:</value>
+  </string>
+  <string id="409" name="record">
+    <value>play recording</value>
+  </string>
+  <string id="410" name="record">
+    <value>Length:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Date:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Recorder Mode! You cannot change any values, this is a recorded File!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Play this recording</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Record this Meeting</value>
+  </string>
+  <string id="416" name="record">
+    <value>stop recording</value>
+  </string>
+  <string id="417" name="record">
+    <value>Recording:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>There is already somebody recording in this meeting!</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Recording! By User:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancel</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Recording will be canceled and not saved.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>resume</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Close this window and resume recording</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>change Linecolor</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Choose Color</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disable / Enable Linecolor</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>change Fillcolor</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disable / Enable Fillcolor</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Change Linewidth</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Close</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>change Fontsize</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Delete Recording</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Guest</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>By:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Room</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancel</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Delete Server-Chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>send message</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choose Published Devices</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio and Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Audio only</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Video only</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>no Audio/Video (static Image)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>No Audio/Video from your PC will be published, instead of that a picture from your profile will be shown. Choose these settings if you have problems with your bandwidth or a very slow Internet connection.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TU</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>WE</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TH</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SU</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Monday</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tuesday</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Wednesday</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Thursday</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Friday</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Saturday</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sunday</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendar week</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>January</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>February</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>March</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>May</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>June</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>July</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>October</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendar</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participants</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Show Layout Settings</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Width | Height</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderation-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Enabled</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Width | Height</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Files,Chat,Participants - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Enabled</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Width | Height</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>The Moderator has left the Room. No one is presenting at the Moment. You could apply for Moderation or wait.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>There is no Moderator in this Room, but there are some Participants. You have to apply for Moderation or wait.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Your userdata:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Sign-Up</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Click on this link to enter a new password:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Click here to enter a new Password</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Password Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Please enter a valid Date, for example 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Please enter a valid EMail, for example name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Please enter a Float-Number, for example 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Please enter a Number (Integer), for example 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Please enter a valid Phone number, for example ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Please enter a valid time, for example 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Password protected</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Password</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Validity period</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Endless</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Period</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>One-Time</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valid From:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valid to:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitation To $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Not Invitation availible for this Invitation-Code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>The Invitation was already used. This type of Invitation cannot be re-used.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>This Invitation-Code is not valid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Password:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Check Password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Invalid Password!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Audio_Video</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Syncronize Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>משתמשים</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>קבצים</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Add external</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Firstname</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Lastname</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user himself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs an Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I have a question</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to ask a question.&lt;br/&gt;&lt;br/&gt; &lt;i&gt;(Use the status Icons next to the user in the List of Users to add or remove the Moderation.)&lt;7i&gt;</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait until a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pause Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Use Audio or Video setup before you enter a room by recording for a few seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. They are created through the calendar and have a start and a end date. They are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>יציאה</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Download</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/hungarian.xml b/src/main/webapp/languages/hungarian.xml
new file mode 100644
index 0000000..3e43149
--- /dev/null
+++ b/src/main/webapp/languages/hungarian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferencia</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Találkozó</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Előadás</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Beállítások</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Beállítások</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Adminisztráció</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Állj</value>
+  </string>
+  <string id="8" name="record">
+    <value>Felvétel</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Nincs elérhető fájl</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Felvétel az előadónál</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Csatlakozott felhasználók:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Konferencia indítása</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Nevem</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>VideoKonferencia</value>
+  </string>
+  <string id="15" name="import">
+    <value>Fájl feltöltés</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Lista frissítése</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Filejaim</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>új szavazás</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Új szavazás a konferencián.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Kérdés:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>A szavazás típusa:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Létrehoz</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Infó: Minden bejelentkezett felhasználó értesül az új szavazásról.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Szavazás létrehozása</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Mégse</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Igen/Nem</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Szám 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Szavazás</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Előadónak kell lenned, hogy feltehess kérdést</value>
+  </string>
+  <string id="30" name="vote">
+    <value>A szavazatot elfogadtuk.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Erre a kérdésre már szavaztál.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Szavazz !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Válasz:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Igen</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nem</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Tudni akarja:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Szavazás eredménye</value>
+  </string>
+  <string id="38" name="question">
+    <value>Kérdés:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Eredmény:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Válaszok:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nincs elindított szavazás.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Szavazz!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Találkozó (max. 4 férőőhely)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Előadás (max. 50 férőhely)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Típus</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Szabad helyek</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Foglalt helyek</value>
+  </string>
+  <string id="48" name="enter">
+    <value>bevitel</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>A előadó elhagyta a szobát.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Rendszer információk</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Válassz eszközt</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Válassz webkamerát:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Válassz mikrofont:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Rendben</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Mégse</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Újra be kell jelentkezned.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Beállítások módosítása.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Téma:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Nyelv:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Rendben</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Mégse</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Tábla törlése</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Szeretnéd, hogy a tábla törölve legyen mielőtt új kép lesz hozzáadva?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Ne kérdezd többször</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nem</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Beállítások módosítása</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Megerősítés a tábla törlése előtt</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Felhasználói információ</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Rajzterület törlése</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Vissza</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Újra</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Válassz objektumot</value>
+  </string>
+  <string id="73" name="text">
+    <value>Szöveg</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Rajz</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Vonal</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Aláhúzás</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Négyszög</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellipszis</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Nyíl</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>a kiválasztott elem törlése</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Jelentkezés előadónak</value>
+  </string>
+  <string id="82" name="apply">
+    <value>beállít</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Mégse</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Előadóvá válni</value>
+  </string>
+  <string id="85" name="close">
+    <value>bezár</value>
+  </string>
+  <string id="86" name="italic">
+    <value>dőlt</value>
+  </string>
+  <string id="87" name="bold">
+    <value>félkövér</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>VÁRAKOZIK</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>A felhasználó előadónak jelentkezik:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>elfogad</value>
+  </string>
+  <string id="91" name="reject">
+    <value>elutasít</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>mégse</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Kérelem küldése felhasználóknak:</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Elfogadva</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Elutasítva</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Előadó változtatás</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Te nem moderálhatod ezt az előadást!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Előadó:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>A terem tele van. Kérem próbálja később.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellipszis</value>
+  </string>
+  <string id="101" name="close">
+    <value>bezár</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>beviteli adathiba</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 vagy több karakter; kis/nagybetű számít!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>a felhasználói jelszónak legalább 4 karakternek kell lennie</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>A felhasználó már létezik</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Az e-mail cím már regisztrálva van</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Rendszerhiba, keresse fel a rendszergazdát.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Bejelentkezés</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Felhasználó:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Jelszó:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Nyelv</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Bejelentkezés</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Bejelentkezni</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Felhasználó:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Jelszó:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Újra:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Keresztnév:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Családnév:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Ország:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Regisztráció</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Mégse</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Regisztráció</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Nyitó oldal</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Felhasználók</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Csoportok</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Szervezet</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Előadás-szoba</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>nyilvános</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Szervezet</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>belépés</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Bejelentkezési név</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Jelszó</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Újra</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Keresztnév</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Családnév</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Születésnap</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Utca hsz.</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Ir.szám/Település</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Ország</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Megjegyzés</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Felhasználói adatok</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>mentés</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Mentés</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Bejelentkezés</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Keresztnév</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Családnév</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>következő mutatása</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>előző mutatása</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>bejegyzés törlése</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>mégse</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>törlés</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>új bejegyzés</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>bejegyzés frissítése</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>bejegyzés törlése</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>státusz</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>tiltott</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>engedélyezett</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Szervezetek</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>naptár</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>bezár</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Szervezet-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Név</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Felhasználó</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Előadó</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Adminisztrátor</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>felhasználó szint</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Szervezet</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>név</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>szervezet hozzáadása</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>szervezet hozzáadása</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>mégse</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>hozzáad</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>szervezet törlése</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>felhasználó</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>felhasználó hozzáadása</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>felhasználó törlése</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>felhasználó hozzáadása</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>felhasználó keresése</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>keres</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>felhasználó</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Szervezet</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Belépés</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferenciatermek</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferenciatermek</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Név</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>nyilvános</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Szervezetek</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Találkozószobák</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Név</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Típus</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Nyilvános</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Megjegyzés</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>mentés</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>betölt</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>mentés mint</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Fájlnév</value>
+  </string>
+  <string id="201" name="files">
+    <value>fájlnév</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>mégse</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>mentés</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>hiba</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>betöltés</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objektum betöltve</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>kliensek szinkronizálása, várakozó kliensek:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Képinformációk betöltése</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>kliensek szinkronizálása, várakozó kliensek:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>rajzterület törlése</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>rajzterület törlése, a tábla adatai elvesznek</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Megerősítés mielőtt a fájlt betöltené</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Meghívó küldése</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Meghívó küldése</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Tárgy</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Címzett</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Üzenet</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Elküld</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>mégse</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>elküld</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Felhasználói adat</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>A beceneved ehhez a konferenciához</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Becenév</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Keresztnév</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Családnév</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Nyelv</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>bevitel</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Betöltés</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Adatok betöltése, kérlek várj!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Rossz jelszó</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Adj meg két megegyező legalább 6 karakter hosszú jelszót</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Hibás e-mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Hibás e-mail címet adtál meg</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>A regisztráció megtörtént</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Az fiókod elkészült. Beléphetsz.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>A képernyődet nem oszthatod meg most. Valaki más már megosztotta az övét.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Megosztás megtiltva</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Képernyőmegosztás</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Hibás sávszélesség: Nem lehetett szinkronizálni a képenyődet. El lesznak dobva képkockák. Ha sokszor jelenik meg ez a figyelmeztetés, kérd meg a előadót, hogy a minőséget vegye vissza.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Képernyő:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Rajz</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokumentum</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Csevej</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Fájlok</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Tagok</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Eredeti dokumentum letöltése</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>pdf letöltése</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Bemutató betöltése a táblára</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Beállítások</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Objektum mozgatása</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Objektum átméretezése</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>-</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ugrás az első oldalra</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ugrás az előző oldalra</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ugrás a következő oldalra</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ugrás az utolsó oldalra</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Kicsinyít --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Nagyít ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Úr</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Hölgy</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Beállítás</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Kulcs</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Beállítás</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Kulcs</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>utolsó módosítás</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>módosítva</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>megjegyzés</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Érték</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>-</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Felhasználók</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>felhasználó törlése a szervezetből</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>töröl</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Ez a felhasználó már tagja a szervezetnek.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Hírek</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Gyorslinkek</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Konferenciára megyek</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Előadásra megyek</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Segítség</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Hibabejel.!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>tovább</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projekt weboldala (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Felhasználói levelezőlista (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Bejelentkezés megjegyzése</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Tartalom</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Kezdőoldalam</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Találkozóim</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Eseményeim</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Nyilvános találkozók</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Zártkörű találkozók</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Nyilvános előadások</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Zártkörű előadások</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Nyilvános tartalmak</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Zártkörű tartalmak</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Személyes tartalmak</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderálás</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Jelentkezés előadónak</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Szavazás</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Fájl választás</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Beállítások</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kamera és mikrofon beállítások</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Tábla beállítások</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Kilép</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Vissza a szobákhoz</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Kilépés</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Elfelejtetted a jelszavad?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Jelszó törlése</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>E-mail alapján</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Bejelentkezés alapján</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Az e-mail címed</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>A bejelentkező neved</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Levél küldése (with reset link)</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Nem található az e-mail cím. Ellenőrizd, hogy ugyanazt az e-mail címet adtad meg amit a felhasználó létrehozásához használtál.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Kérlek add meg az e-mail címet vagy felhasználói nevet.</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Nincs felhasználó ehhez a névhez.</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>A levél, amit küldtünk neked, tartalmaz egy speciális linket, ellenőrizd a postafiókodat. Ha még nem kaptad meg a levelet, állítsd be a spamszűrődet és küldd újra a megerősítő e-mail-t.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Hiba</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Üzenet</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Rossz Hash. A felhasználható nem található.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Jelszó törlése</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Bejelentkező név</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Jelszóváltás</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Új jelszó</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Jelszó újra</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>A begépelt jelszavak nem egyeznek meg.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 vagy több karakter; kis/nagybetű számít!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Jelszó beállítva. Bejelentkezhetsz.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>Rendben</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Ismeretlen hiba. Írd meg a fejlesztőknek.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Felhasználónév nem található</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Hibás jelszó</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Sikeres kijelentkezés</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Regisztráció letiltva.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Hibás E-mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>létező fájlnév, válassz mást</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>a fájlnév túl rövid</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Cím nem menthető</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Felhasználó hozzáadva de hozzá kell rendelni Szervezethez, különben nem fog tudni bejelentkezni.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Új bejegyzés</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Nincs ilyen mező azonosító.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Nincs cimke ehhez a mezőhöz.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Adminisztrátori jog szükséges</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Nyelv-szerkesztő</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Nyelv</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Cimke-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Cimke-név</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Érték</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Mezőértékek</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Cimkenév</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Cimkeérték</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Cimke-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Csak a cimke értékét törölheted és nem a mezőt! A mezőt nem törölheted, mert más nyelvben szükséges lehet.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Hibás cimke-ID. A FieldLanguagesvalues_Id nem található az adatbázisban.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Ez a mező nem törölhető. Csak a cimke értékét törölheted. Nincs betöltött cimke, vagy nincs kiválasztva vagy nincs definiálva ehhez a nyelvhez.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportálás</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Ki kell jelentkezned, hogy lásd a változásokat.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Új nyelv hozzáadása</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Nyelv törlése</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Új nyelv hozzáadása</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Név</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>nyelv hozzáadása</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Mentés</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ugrás az elsőre</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>ugrás az előzőre</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ugrás a következőre</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ugrás az utolsóra</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>a felhasználó beszél (Kattints ide a mikrofonja némításhoz, bekapcsoláshoz)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>hang ki/bekapcsolása</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Rendszer</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Beállításaid</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Üdv,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Személyes adatok szerkesztése</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Új üzenetek:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Új kép feltöltése</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Felh.adatok - mentés</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Minden szervezetnek léteznie kell!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>exportálás indítása</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Szervezetek szerint</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>exportálás indítása</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Felh.adatok - betöltés</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>válassz users.xml -t</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>betöltés</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>XML-be mentés - Ezek a fájlok felhasználhatók: - A projektnek felajánlható - Más rendszerbe betölthető - Mentés - Személyre szabható - Betehető a language könyvtárba telepítéshez</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Válassz ki egy betöltendő nyelvi fájlt. Válaszd ki a kívánt nyelvet a legördülő menüből! Mindegy, hogy a fájlnak mi a neve, a kiválasztott nyelvhez lesz mentve!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>betöltés - válassz fájlt</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Mentés mint</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Név:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Megjegyzés:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>mentés</value>
+  </string>
+  <string id="395" name="record">
+    <value>Felvételek</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Felvételek megtekintése</value>
+  </string>
+  <string id="397" name="record">
+    <value>Nyilvános és zártkörű szobák felvételei</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Felhasználók :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Csatlakozott:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Felhasználók ebben a szobában:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>frissítés</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>A szoba megtelt. Próbálkozz pár perc múlva.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>kattints a szobára az információkér</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Csevegés a felhasználókkal a szobában:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Szoba:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Felhasználók a szobában:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>innentől:</value>
+  </string>
+  <string id="409" name="record">
+    <value>felvétel lejátszása</value>
+  </string>
+  <string id="410" name="record">
+    <value>Hossz:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Dátum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Felvétel üzemmód! Nem változtatható meg egy érték sem, mert ez egy felvett fájl!</value>
+  </string>
+  <string id="413" name="record">
+    <value>A felvétel lejátszása</value>
+  </string>
+  <string id="414" name="record">
+    <value>Lejátszás / Megállítás</value>
+  </string>
+  <string id="415" name="record">
+    <value>Felvétel indítása</value>
+  </string>
+  <string id="416" name="record">
+    <value>Felvétel megállítása</value>
+  </string>
+  <string id="417" name="record">
+    <value>Felvétel:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Már valaki felvételt készít:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Felvétel! Felhasználó:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>mégse</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>A felvétel meg lesz szakítva mentés nélkül.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>újraindít</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Zárd be az ablakot és indítsd újra a felvételt.</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Vonalszin változtatás</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Szin választás</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Ki / Bekapcsolja a vonalszint</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Kitöltőszin változtatás</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Ki / Bekapcsolja a kitöltésszint</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Vonalvastagság változtatás</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>bezár</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Betűméret változtatás</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Felvétel törlés</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Vendég</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Kitől:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Név</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Szoba</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Dátum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>mégse</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>felvétel</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Név</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Dátum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Szerver-csevegési napló törlés</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Csevegés</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>üzenet küldése</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Válassz engedélyezett eszközt</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Hang és kép</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Csak hang</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Csak kép</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Hang és kép nélkül (álló kép)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Sem hang sem kép nem kerül megosztásra a gépedről, hanem a felhasználói adataidból a feltöltött kép. Használd ezt, ha gondjaid vannak a sávszélességgel vagy nagyon lassú az Interneted.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>h</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>k</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>sz</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>cs</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>p</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>szo</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>v</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>hétfő</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>kedd</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>szerda</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>csütörtök</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>péntek</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>szombat</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>vasárnap</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>hsz</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Hetek száma</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>január</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>február</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>március</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>április</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>május</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>június</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>július</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>augusztus</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>szeptember</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>október</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>november</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>december</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Naptár</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Résztvevők</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Nézet beállítások megtekintése</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Szél. | Magasság</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Ablak</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Előadói-Ablak</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Tábla-Ablak</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Engedélyezett</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Szél. | Magasság</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Fájlok,csevegés,résztvevők - Ablak</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Engedélyezett</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Szél. | Magasság</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Az előadó elhagyta a szobát. Jelenleg nincs előadó. Jelentkezhetsz előadónak vagy várhatsz.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Nincs előadó a szobában, de vannak résztvevők. Jelentkezz előadónak vagy várj.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>$APP_NAME visszajelzés</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Meghívó</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Üzenet ettől a felhasználótól:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Üzenet:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Kattints erre a linkre a találkozókon való részvételhez:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Kattints ide a szobába való belépéshez</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>ha problémád adódik a linkkel akkor ezt másold a böngésző címsorába:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Regisztráció</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Felhasználói adataid:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Bejel.név:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Jelszó:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Csapat</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Regisztráció</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Jelszó csere</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Kattints erre a linkre a jelszó cseréhez:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Kattints ide az új jelszó megadásához</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>ha problémád adódna a linkkel, kérlek másold át ezt a böngésződ címsorába:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Jelszó váltás</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Kérlek adj meg egy érvényes dátumot, például 24.12.2001 (nn.hh.éééé)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Kérlek adj meg egy érvényes e-mail címet, például name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Kérlek adj meg egy számot, például 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Kérlek egész számoz adj meg, például 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Kérlek érvényes telefonszámot adj meg, például ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Kérlek érvényes időpontot adj meg, például 12:23 (óó:pp)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Jelszóval védve</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Jelszó</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Érvényességi periódus</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Végtelen</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Időszak</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Egyszer használható</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Ettől érvényes:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Eddig érvényes:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Meghívás OpenMeetingre</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Nincs meghívás ehhez a meghívó kódhoz.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>A meghívás már használva volt. Ez a típusú meghívás nem használható fel többször.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>A meghívó kód nem érvényes.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Jelszó:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Jelszó ellenőrzés</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Hibás jelszó!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Böngésző</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Hang/kép szinkronizáció</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>A bejelentkezés helyes volt, de session vagy nem aktív vagy nincs a szerveren tárolva. Újra be kell jelentkezned.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Ez a SessionId nincs bejelentkezve, vagy nincsen adminisztrátori joga. A SOAP átjárónak adminisztrátori jogokkal kell egy felhasználó új felhasználó beágyazásához.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Ehhez a Session-höz nincs Remoteuser-Data kapcsolat. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>A felvételkészítő egyenlőre béta állapotú!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-méret</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-méret</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>szélesség</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>magasság</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Áttetszőre váltás</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Böngésző megnyitása</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Bömgésző bezárása</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>A kapcsolat megszakadt a szerverrel. Ellenőrizze az internet kapcsolatát, majd lépjen be újra az alkalmazásba.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Mutató</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Szinkronizálás</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Szinkronizálás a látogatókkal, kérem várjon</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Letöltés mint SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Letöltés mint PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Letöltés mint JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Letöltés mint PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Letöltés mint TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Emlékeztető:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategória:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Ismétlés:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>nincs</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Hely:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Indul</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Vége</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Cím:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Leírás:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Személyek meghívása</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Napi</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Havi</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Évi</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Találkozó vége miután a találkozó elindult!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Adja meg a címet!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Jelölje be, ha jobbról-balra író nyelvet akar használni (fordított irányú írás)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Vezérlőpult</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Megtekintheti a rögzített felvételeket, eseményeket</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Előadás - Indítson konferenciát 4 (től max 16) felhasználóval&lt;br/&gt; mindenkinek audio+video lehetőséggel</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Előadás - Indítson konferenciát 200 látogatóig&lt;br/&gt;A moderátornak audio+video lehetősége van</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Felhasználó hozzáadása, konferenciaszoba, szervezet &lt;br/&gt; + beállítások változatása</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Látogató belépett a konferenciába</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Belépés</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Dokumentum betöltés. Kérjük várjon ameddig az összes kliens szinkronizálódik.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Feltöltés kész, konverzió folyamatban ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Feltöltés indítása</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Feltöltő és importáló ablak. Válassza ki a file-t a meghajtóról.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Megszakít</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>File választása</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Kapcsolatok</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Érték</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Stream azonosító</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Belépés</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Csatlakozott</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Konferencia szoba / Nézet</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>User kitiltása</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>User kitiltása</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Biztosan kitiltja a látogatót?&lt;br/&gt; Csak a jelenlegi konferenciából kerül kitiltásra. A látogató vissza tud jelentkezni.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Az Adminisztrátor,Moderátor kitiltotta a teremből.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>A látogató moderátor ebben a konferenciában.</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Látogatónak engedélyezi a táblára rajzolást.</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Újra) Indítja az Audio/Video eszköz beállítását</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Ennek a látogatónak engedélyezi a táblára rajzolást.</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Visszaveszi a táblára rajzolás lehetőségét</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Látogatók</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Fileok</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tábla</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Ön több szervezetnek is tagja, válassza ki a megfelelőt.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Ez a terem megtelt, próbálkozzon később</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Terem típusa</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Talákozó szoba</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Szerver idő</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Emlékeztető</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Üzenet a felhasználótól:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Üzenet:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Kattintson a linkre az előadásba való belépéshez:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Kattintson ide az előadásba való belépéshez</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>ha problémája adódik a link megnyitásával, másolja ki és illessze be a böngésző címsorába:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>keresés belül</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>külső felhasználók</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Előnév</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Név</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Kilépés jóváhagyása</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Kijelentkezik most?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Eszközök</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Terem</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Idő</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Előadás ideje</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Ez Demo terem. Ön autómatikusan kiléptetésre kerül:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderálja</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Várnia kell egy moderátor belépésére. Moderátor lehet előadó, a terem létrehozó előadója, vagy a rendszeradminisztrátor.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Bejövő képernyő megosztás</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Egy új képernyőmegosztás érkezett (küldő):</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Meosztás indítása</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Új előadás hozzáadása</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Előadó terem</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Esemény</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderálás</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Látogató moderálása</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Terem moderálása</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Ennek a szervezetnek a modárátoraihoz adja a felhasználót?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Válassza ki a szervezetet, mielőtt hozzáadja a felhasználót!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Szervezet - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Valóban törli a felhsználót ebből a szervezetből?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Ez a felhasználó moderátor</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Ez a felhasználó nem moderátor</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Azt akarja, hogy ez a felhasználó ne legyen moderátor ebben a szervezetben?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Hozzáad/töröl felhasználót vagy konferencia szobát a szervezethez?</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Valóban törli ezt a felvételt?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Valóban törli ezt a felhasználót a szervezetből? Csak a szervezettel való kapcsolat törlődik, a felhasználó tényleges törlését az admnisztrátori felületen tudja elvégezni.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Ön nem törölheti ezt a felhasználót!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Ehhez a tevékenységhez Adminisztrátori jog szükséges!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Nem tartozik Session ehhez az ID-hez.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Ez Adminisztrátori, Moderátori fiók. Ezt csak Adminisztrátori panelen szerkesztheti.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>A regisztráció aktiválásához kattintson a linkre, vagy másolja ki és illessze a böngésző címsorába.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Kattintson az E-Mail megerősítéshez</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Nincs felhasználó ezzel a Hash azonosítóval.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>A felhasználó már aktiválásra került!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Sikeresen aktiválta a felhasználói fiókját!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Belépés most</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Hozzáférése nem aktív. Először aktiválja a regisztrációkor kapott megerősítő e-mail segítségével.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Regisztráció kérését fogadtuk. Küldtünk egy megerősítést kérő linket a megadott e-mail címére, kérjük keresse fel az e-mail fiókját, a regisztrációs kérést vissza kell igazolnia!</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Moderációs jogok visszavétele a látogatótól</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Moderációs jog adása a látogatónak</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Látogató</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Hozzáférés a táblához</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderátor</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderáció: Válasszon a listából és adjon jogot a táblához, moderációhoz, videóhoz...stb való hozzáféréshez.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Ez a látogató már moderátor</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Ez Ön! Nem veheti el a moderációs jogot.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Bekapcsolja az Audio / Video lehetőséget a látogatónak</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Kikapcsolja az Audio/Video lehetőséget a látogatónál</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Moderátori jogot kérek</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Hozzáférést kérek a táblához</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Audio/Video hozzáférést kérek</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Moderátori jogot kaptál</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Hozzáférést kaptál a táblához</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Audio/Video hozzáférést kaptál</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Üzenet a Moderátornak</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>A látogató</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>moderáció megadásához. Kattintson a névre és a megfelelő ikonra a moderáció hozzáadásához, visszavételéhez.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>tábla használatához. Kattintson a névre és a rajztábla ikonra a tábla használatának hozzáadásához, visszavételéhez.</value>
+  </string>
+  <string id="695" name="695">
+    <value>Audio/Video hozzáféréséhez. Kattintson a nevére és a Mikrofon/Kamera ikonra a hozzászólás engedélyezéséhez, visszavételéhez.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Várjon amég a Moderátor belép a terembe.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Mégsem</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Ment</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Nap</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Hónap</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Év</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>File feltöltése</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Könyvtár létrehozása</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Frissít</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Kuka (húzza bele a kiválasztott elemet)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Saját fileok (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Terem fileok (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>File hozzáadása</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Könyvtár létrehozása</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Könyvtár törlése</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Név szerkesztése</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Új könyvtár</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Biztosan törli ezt az elemet?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Keresés</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Keresés</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Dokumentum megnyitása</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Összes mutatása (Fa nézet)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Dokumentum bezárása</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>File törlése</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Nem rajzolhat a táblára. Moderátornak kell lennie, vagy kérjen a moderátortól hozáférést.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Dokumentum tulajdonságai</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Kliens indítása (külső)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Kliens indítása (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A látogató megosztotta a képernyőjét. Megtekinti?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>A képernyőd meg van osztva. A képernyőmegosztás leállításához kattintson a kliensen a Leállítás gombra.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Megosztás</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>A képernyő már meg van osztva!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Képernyő nézete</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Kilépés</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Képernyő megosztó</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Kattintson a Start-ra a képernyő megosztásához</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Megosztás indítása</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Megosztás leállítása</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Válassza ki a megosztandó területet:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Szélesség megadása</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>A megosztás befejeződött!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Magasság megosztása</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-eltolás</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-eltolás</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Szélesség:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Magasság:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>A kapcsolat lezárult a szerverrel</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Mégse</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Indítás kívülről</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Ha bezárja ezt a nézetet, nem fogja tudni újraindítani ebben a munkamenetben.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Megerősíti az aktuális nézet leállítását</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Képernyő megosztása</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Munkamenet rögzítése</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Előző</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Következő</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Újratölt</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Betöltés</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Adja hozzá alapértelmezett weboldalaként a profiljában.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Teszt beállítás</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Teztelje a kameráját/mikrofonját pár másodperces felvétellel, mielőtt belépne a konferencia terembe. Visszajátszuk a felvételt, hogy ellenőrizhesse a működést.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Ne mutassa ezt többet</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Mégsem</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Belépés a konferenciába</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Ne figyelmeztessen többet</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>Felvétel</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>Lejátszás</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Beléphet kamerát/mikrofon nélkül is. Látogatóként ezek nélkül is használhatja a rajztáblát, megoszthatja képernyőjét, írhat a Chat-be.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>MNegállít</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Jelerősség mérő</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Belépés akonferenciába</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Esemény indul</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Konferencia szoba választása</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Beállítás ellenőrzése</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Konferencia indítása</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Hogyan indíthat konferenciát</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Felvétel indítása</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Ne mutassa az Audio / Video tesztet (Recording) mikor belép akonferenciába.</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Nyilvános termek</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Nyilvános termekhez minden felhasználó hozzáfér.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Zárt termek</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Zárt termekhez csak a szervezet felhasználói férhetnek hozzá.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Saját termek</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Ezen szekció termeit csak a létrehozó személy éri el (moderátorként). Bejegyezheti az eseménynaptárba és megadhat kezdeti/vége időpontokat. Itt csak az érvényességi ideig jelenik meg a listában.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Ennek a moderátorának kell lenned ehhez.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Moderáció megadása</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Tábla használat megadása</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Kamera/mikrofon használat megadása</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Ezt a munkamenetet már használ(ja/ta). Nem használhatja többször.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>Indítás</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>Kilépés</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Valóban kilép? Törlődni fognak a feltöltött dokumentumok, rajztábla, chat tartalma.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Kilépé s konferenciából</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Termek</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Válassza ki a termet az előadáshoz</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Az esemény nincs mentve a naptárba. Kérjük mentse most, vagy távolítsa el.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Kérjük adjon legalább egy látogatót az előadásához !</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Biztosan törli ezt az eseményt?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Figyelmeztetés</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Esemény hozzáadása</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Nap</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Hét</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Hónap</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Leírás</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Látogatók</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, az Ön webkonferencia platformja. Kövesse az utasításokat és gombnyomásra nyithat egy konferenciát, vagy bejegyezhet a naptárba és beállíthat egy előadást előre.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>A konferencia beállításához adja hozzá az eseményt a naptárhoz.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Segítségre van szüksége?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Fenntartott</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Keresés</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Hozzáad</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Nincs felhasználó kiválasztva. Vállasszon elemet a listából és adja hozzá.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Látogató hozzáadása</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Mentés</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Törlés</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Esemény részletei</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Alapértelmezett Moderátor</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Név</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Új alapértelmezett moderátor hozzáadása</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Moderált terem, ha a felhasználó moderátor, vagy adminisztrátor, automatikusan moderátora lesz a teremnek. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator mindíg moderátora a teremnek, a többi moderátor jogait Ő szabályozhatja</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Super Moderátorrá teszi a felhasználót</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Super Moderator visszavétele a felhasználótól</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Ha szervezeteket rendel a teremhez, csak a szervezet tagjai érhetik el a termet (Ez csak a "Nyilvános" típusú termeknél értelmezett)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderáció</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitációk</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Szervezet</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Megerősíti?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Valóban törli ezt az elemet? Kattintson a mentés gomba a változások végrehajtásához!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>TNincs felhasználó kiválasztva. Kérjük előbb válassza ki és adja hozzá!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Új alapértelmezett Moderátor hozzáadása</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Super Moderátorr-á teszi ezt a felhasználót? A Super Moderator nem csak moderátora a teremnek, elveheti a moderátori jogot másoktól. A beállítások alkalmazásához mentse azokat!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Elveszi a Super Moderátor jogot a felhasználótól? A beállítások alkalmazásához mentse azokat!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Ez a felhazsnáló Super-Moderator. Nem veheti el a Super-Moderator jogot!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Biztosan törli ezt a filet/könyvtárat?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>File/Könyvtár törlése?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Tulajdonságok</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Mutasd az egér pozíciót a nézőknek</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Audio megosztása SIP alkalmazáson</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Audio megosztása SIP-n és video flash alatt</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Teljes méret</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Képernyő nézete</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>A felhasználó</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>megosztotta a képernyőjét. Megnézi?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Bezár</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Nagyító</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>A munkamenetet a felhasználó lezárta!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Új képernyő megosztás</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimalizál</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximalizál</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Felvétel ideje</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Felvételeim</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Publikus felvételek</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Név</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Hossz</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Dátum</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Lejátszás</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Videóm</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Felvétel</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Megoszthatja képernyőjét, rögzítheti az előadást. Hogy mások láthassák a képernyőjét, kattintson fent a megosztás gombra. Ha csak rögzíteni szeretné az előadást, kattintson a felvétel indítása gombra.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Felvétel indítása</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Felvétel vége</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>FLV-File letöltése</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Konferencia szoba</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Lejátszás</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Megállít</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>A felhasználó mikrofonja aktív</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Megosztás leállítása</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Engedéylezi a felhasználók kérdését</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Kapcsolja ki, ha nem akarja, hogy kérdésekkel zavarják. A moderátor ilyenkor nem kapja a ("Kérdésem van") üzenetet.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rendben</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>AVI-File letöltése</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Csak Audio</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Hiba történt a felvétel készítése közben.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>A felvétel még nem nézhewtő vissza. Kérjük próbálja ismét pár perc múlva.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Felvétel üzenet</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP alkalmazás nem áll készen</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP hozzáférés beállítása</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP beállítás a felhasználóknak. Kapcsolja be az SIP-t adminisztrátorként &gt; Beállítások (Key: enable_sip). Az SIP adat minden felhasználónak autómatikusan létrejön. Az újrageneráláshoz ellenőrizze "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-Felhasználó</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Jelszó</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>A bejelentkezés az SIP szerverre nem sikerült. Ellenőrizze az SIP hozzáférés adatait és az authentikációt az SIP szolgáltatójánál. Adminisztrátorként lépjen be és ellenőrizze a beállításokat. Felhasználók, Moderátorok nem módosíthatják a paramétereket.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>A bejelentkezés az SIP szerverre nem sikerült. Forduljon a szolgáltatóhoz!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Bejelentkezés az SIP-Szerverre ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Bejelentkezés az SIP-Szerverre ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Log mutatása</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log üzenet a rögzítő folyamattól</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Alkalmazás menedzsment</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>Az SIP-Alkalmazás nem áll készem. Fogadja el az alkalmazást és próbálja újra!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Moderációs lehetőséget kérek</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Bejegyzés változásainak mentése</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>A bejegyzés megváltozotta. Menti a beállításokat? &lt;br/&gt;&lt;br/&gt;Minden látogató értesítést fog kapni e-mailben a változásokról (függ a figyelmeztetés típusától).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Egyéb felvételetkhez való hozzáféréshez be kell jelentkeznie a $APP_NAME alkalmazásba.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Felhasználó kiválasztotta ezt a videót</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Ezen a felületen elérhető felhasználók</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Moderátora vagy ennek az interjúnek. Döntsd el ki beszéljen ebben az interjúban, indítsd/állítsd meg a videó rögzítését.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Felvétel indítása</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Felvétel megállítása</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>A felvétel már folyamatban van.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>A felvétel megállításra került, vagy nem indítható most.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>Az interj felvétele sikeresen elindult!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Mégsem</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>A felvétel feldolgozása akár 5 perc is lehet 1 perces video esetén. A kiválasztott videó feldolgozása, kódolása:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Írja be a jelszavát ismét, miután az SIP adatokat megadta</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Újra generált SIP adatok</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Nem helyezheti át ezt a filet/könyvtárat ebbe az alkönyvtárba!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Privát meghajtó mérete</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Publikus meghajtó mérete</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Licenc beállítások</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Licenc ellenőrzése</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Terjedelem</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Lejárat dátuma</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Teljes idő</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>A licence lejárt. Vásároljon idő hosszabbítást (Pay-per-minute) vagy feltöltést.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Kattintson a vásárláshoz</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Rendelkezésre álló idő:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Felhasználói licenc információk</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Bezár</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>A licence lejárt. Vásároljon idő hosszabbítást (Pay-per-minute) vagy feltöltést.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Licenc beállítások</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Vásároljon időhosszabbítást a konferenciához (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; vagy vásároljon feltöltést 3-12 hónapot.&lt;br/&gt;&lt;br/&gt;Küldjön meghívókat (direkt linkek a konferencia teremből) vagy készítsen webkonferenciákat a naptárral együtt a külső felhasználók csak előfizetéssel férhetnek hozzá!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>60 perc vásárlása 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>5 óra 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>3 hónap 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>6 hónap 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Perc alapú fizetés</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Feltöltés értékek</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>Végtelen licencel rendelkezik</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Licence lejár:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Vásároljon új kreditet!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Saját szervere van?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Szeretné a szerverén az $APP_NAME alkalmazást telepíteni, integrálni a Moodle, SugarCRM, Weboldalalal, Internettel? Darabáras díj 500 Euro per telepítéstől!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Vagy vegye fel a kapcsolatot</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Válaszra várok:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Üzenete:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Küldés</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Kattintson ide a kapcsolati és ár információk kéréséhez</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Kredit kártya adatok</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Vezetéknév</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Keresztnév</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Kredit kártya típusa</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Érvényességi idő</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Kártya ellenőrző száma (CVV)</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Fizetési cím</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Cím</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Város</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Ország</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Állam (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>Irányítószám</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Összeg</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Beküld</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>1. lépés: $APP_NAME - Fizeti</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Kattintson a "Check out with Paypal" a fizetéshez.&lt;br/&gt; PayPal alkalmas VISA, MasterCard, Discover vagy American Express. &lt;br/&gt;Nem szükséges PayPal regisztrációval rendelkeznie. &lt;br/&gt;Németország területén direktben is fizethet (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Köszönjük, hogy az $APP_NAME vásárolta. &lt;br/&gt; &lt;br/&gt; A vásárlás lekönyvelésével aktivljuk az accountját.&lt;br/&gt; A számlát PDF-ként e-mailben kapja meg.&lt;br/&gt;A profiljában ellenőrizheti a tranzakció részleteit.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Zárja be a böngészőt, majd térjen vissza az $APP_NAME alkalmazásba.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Beküld és vásárol!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Kattints a vásárláshoz!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>3. lépés: $APP_NAME Vásárlás: ellenőrzés és fizetése!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Név</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Befizetését fogadtuk!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hello,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>Megkaptuk a befizetését. A profilját frissítettük. Nézze meg a kapott számlát. A számla és minden egyéb igazolás a profiljából letölthető.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Köszönjük, hogy az $APP_NAME használja!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Befizetését feldolgoztuk $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Fizetési és tranzakciós állapot</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Tranzakció azonosító</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Perc</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Hónap</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Állapot</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Számla</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Előfizetésének feltöltése szükséges, hogy meghívót küldhessen, vagy használja a naptárat. Az $APP_NAME alkalmazáshoz csak fizetéssel férhet hozzá akár perc alapon is. A konferenciához nincs hozzáférése 3. személynek, alakalmazásnak.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>Ezt az e-mail címet másik felhazsnáló már használja.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Beállítások</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>A konferencia száma és PIN kódja automatikusan létrehozva az OpenXG RPC-Átjáróval</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Azonosító</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Törli az objektumot a jelenelgi lapról!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Csak a státuszbárba beírt URL-t küldi a résztvevőknek!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Csoport szobát csinál [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Válasszon felhazsnálókat a csoport szobához!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Válassza ki a felhasználókat és lépjen velük át a csoport-szobába ("Team Room"). A választott felhazsnálók üzenetet kapnak és automatikusan átlépnek a csoport szobába. A csoport szoba moderátora(i) automatikusan megegyeznek a jelen szoba moderátora(i)val.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Felhasználónév</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Belépés</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Felhasználók az új csoportszobában:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Csoportszoba létrehozása</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Mégsem</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Válasszon legalább egy résztvevőt a csoportszobába!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Felhasználó csoporthoz adása</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Felhazsnáló elvétele a csoporttól</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>A felhasználó csoportszoba-moderátor (ezt szabályozni csak a csoportszobából tudja)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Szoba típusa</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Ha be van állítva a "Felhasználók átléptetése az új csoportszobába" minden kiválasztott felhasználó átléptetésre kerül automatiksan az új csoportszobába. Egyébként csak figyelmeztető üzenetet kapnak az átlépéshez. A csoport-moderátorok mindíg szabadon választhatnak a csoportszobák közül.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Csoport-szobák kezelése</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Válasszon a csoportszobák közül, ha csoportszoba-moderátor. A bent lévő felhasználóknak tud üzenetet küldeni, pl. hamarosan belép a szobába. Le tudja zárni a szobát és a bejelentkezett látogatók kiléptetésre kerülnek a szobából</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Felhasználók átléptetése az új csoportszobába</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Név</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Létrehozva</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Elérhető felhasználók</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Csoportszoba beállítása</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Felhasználük hozzáadása</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Csoportszoba neve</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Csoportszoba</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Szoba változtatása</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Váltás erre a csoportszobára</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Csoportszoba bezárása, résztvevők kiléptetése</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Új csoportszoba</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Új csoportszoba érhető el.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Váltás a csoportszobára</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Csoportszoba tevékenység</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Nyissa meg újra ezt az ablakot, a menüben az "Akciók" alól!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Üzenet küldése s csoport-moderátornak</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Új csoportszoba</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Új csoportszoba érhető el. Váltson át a szobára. A munkacsoportban a szoport-moderátorhoz forduljon segítségért. A csoportsuobáit elérheti a "Előadásaim" szekcióban.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Váltás a csoportszobára</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Készítette:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Csoportszoba neve:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Az ablak nyitvamarad, hakilép a csoportszobából!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Felhasználók ebben a szobában</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) vags válasszon másik csoportot és lépjen be</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Küldhet üzenetet a csoport moderátorának. Pl.: ha segítségre van szüksége a moderátortól, vagy nézzen körül a topic-okban.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Küldés</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) felhasználó meghívott a csoportszobába</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Csoportszoba moderátora</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Minden felhasználót a moderátor hívot meg.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>Nem vagy csoportmoderátor, várni kell a belépésre!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Írja ide üzenetét</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Segítséget kérek, problémám akadt a csoportszobával!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A felhassnáló válasza a csoportszobából.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Csoportszoba segítség kérés</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Üzenet:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>Tól/Től:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Nem vagy benne egyik csoportban sem. Kattints ide a csoportszobákhoz való hozzáféréshez.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Rendszer mentése. A mentés minden felhazsnálói adatot ment. A konfiguráció és a nyelvek nincsenek benne. Because those values are imported with the System Installer. A rendszer frissítéséhez előbb nemtse el a régi adatokat(1) installálja újra az adatbázist is a telepítővel (2) végül importálja be a mentett adatokat (3). Az importálást elsőként hajtsa végre és csak után aadjon új adatokat a rendszerhez.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Rendszer mentése</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Engedélyezi a felhasználónak a képernyő megosztást/rögzítést</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Tiltja a felhasználónak a képernyő megosztást/rögzítést</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>A felhasználó moderátor, válasszon másikat!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>szeretne képernyőt megosztíni/rögzíteni.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Heozzáférésed van a képernyő megosztáshoz/rögzítéshez</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Alkalmazza a képernyő megosztáshoz/rögzítéshez.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Engedélyezi/Tiltja a kpernyő megosztását/rögzítését.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Hang kikapcsolása</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Hang bekapcsolása</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Csak Audio szoba</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Kapcsolja be az opciót és a látogatók csak audio eszközt használhatnak, video-t nem. Jó megoldás alacsony sávszélesség esetén.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Távvezérlés engedélyezése (képernyőmegosztás alatt)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Távvezérlés tiltása (képernyőmegosztás alatt)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Alkalmazza a távvezérléshez (képernyőmegosztás alatt)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>Engedélyezted a távvezérlést (képernyőmegosztás alatt)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>szeretné használni a távvezérlést.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>A látogató moderátor, bármt tehet! [Távvezérlés Alkalmazás]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Engedi/Tiltja a távvezérlést (képernyőmegosztás alatt)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) PC-dtől a távoli PC-re: Másold a szöveget a vágólapra (Ctrl+C), majd távoli PCre küldéshez kattints a távoli gép képernyőjére. Kattints ajobb gombal a szövegmezőn és válaszd a "Beillesztés" menüpontot.&lt;br/&gt;&lt;br/&gt;2) Távoli PC-ről a Te PC-dre: Jelöld ki a szöveget (kiemelés) és kattints a jobb gombbel, majd válaszd a "Kijelölt másolása" menöpontot. Kattints aj obb gombal a saját PC-den a szövegmezőn és válaszd a "Beillesztés" menüpontot.</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Másol és beilleszt szöveget a helyi PC-ről a távoli PC-re, vagy fordítva.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Kijelölt másolása</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Hogyan kell másolni és beilleszteni</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Képernyőmegosztás minősége:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Nagyon jó minőség</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Jü minőség</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Közepes minőség</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Alacsony minőség</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Nillentyűzet:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Előadás lezárása!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>Ez az előadás lezárásra került, átirányítás.</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Szoba lezárása</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Kilépő URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Konferencia szoba bezárás beállításai</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Ha a konferencia lezárásra kerül, alátogatókat átirányítja a kilépő URL-re.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Név</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Konfigurációs file</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap konfiguráció</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Név</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Engedélyezve</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Hozzáadva</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Hozzáadta</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Frissítve</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Frissítette</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>A konfigurációs file helye webapps/openmeetings/conf. Manuálisan töltse fel ebbe a könyvtárba. A beállításokat online bármikor megváltoztathatja.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Konfigurációs file neve</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Ha negedélyezi a "Tartomány hozzáadása a felhasználó névhez" a "Tartomány" (domain) mező értéke hozzáadódik minden bejelentkezéshez mikor a felhasználó belép. Használja ezt, ha az LDAP bejelentezés támogatja a tartomány kezelést. Pl.: Felhasználó belép "hans", tartomány meghatározva mint "localhost.com", a belpést az LDAP ellenőrzi mint: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Tartomány hozzáadása a felhasználó névhez</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Tartomány</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Beszúr</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Kijelölt szöveg másolása</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Távoli vágólap tartalma</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Távoli vágólapot mutat</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Nem mutathatja mégegyszer</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Másolása ide ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>Távoli vezérlés használata szükséges (vagy moderátor) hogy aszöveget másolhasson a képernyőre/képernyőről.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Alap beállítások szerkesztése ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Ne mutassa a Távvezérlés info dobozt a másolás/beillesztés közben.</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Mentés</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Eltávolítás</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Mégsem</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Felhasználó meghívása a konferenciába</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Válasszon konferencia szobát. A meghívott felhasználó üzenetet kap a Nevével és a belépési linkkel.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Kapcsolódva:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Belépés a konferencia szobába a meghívó küldés után</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Meghívás</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Üzenet</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>szeretne meghívni a konferencia szobába:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Meghívó üzenet</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Meghívó küldése</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>&lt;b&gt;nem&lt;/b&gt; fogadta el a meghívást!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Elfogad</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Visszautasít</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Időzóna</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Esemény részletei</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Név</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Leírás</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Létrehozta</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Időzóna üzenet</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Ellenőrizze az "TimeZone Message" a profiljában, amit a felhasználók a belépéskor látni fognak.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Ellenőrizze az időzóna beállítását a profiljában.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>új $APP_NAME konferencia:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Részletek:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Kezdődik:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Vége:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Változás $APP_NAME konferencia:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Szervezet:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Törölt $APP_NAME konferencia:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME konferencia emlékeztető:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Közösség beállításai</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Mindenkinek mutassa a kapcsolati adatokat</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Adjon hozzá érdeklődési köröket, vagy keresési adatokat a mezőhöz, hogy az érdeklődők rákereshessenek az előadására. Vesszővel válassza el a felsorolt elemeket (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Ajánlásaim</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Érdeklődésem</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Név</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Időzóna</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Érdeklődési terület</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Kapcsolati információ</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Kapcsolati adatokat csak a személyes kontakt listámon láthatják</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Ne mutassa a kapcsolati adataimat</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Profilom</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Beállítások szerkesztés</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Felhasználók keresése</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Profilom megtekintése, ahogyan mésok látják</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Szerkeszd a beállításaidat, add hozzá az érdeklődési körödhöz</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Keress felhasználókat és add hozzá a hálózatodhoz</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Keresés</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Felhasználói ajánlatok</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Felhasználó nézi ezt</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Szabad szöveg</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Név</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Időzóna</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Ajánl</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Keresés</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Keresési eredmények</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Akciók</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Kontaktlistához ad</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Üzenet küldése</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Kapcsolatok és üzenetek</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Függő kapcsolat</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Elfogad</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Visszautasít</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hello,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>szeretne kapcsolatként hozzáadni téged.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Ellenőrizze a felkérést a $APP_NAME alkalmazásban, vagy kattintson a megfelelő linkre az Elfogadáshoz/Visszautasításhoz.</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>A felhasználó már a kontaktlistádon van, vagy kapott egy meghívást a kapcsolatilistádra, amire nem adott még választ.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Kapcsolataid</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Kapcsolatok és üzenetek szerkesztése,&lt;br/&gt; függő kapcsolatok kezelése!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>hagyd jóvá a kapcsolatod!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Chat napló Mutat / Másol</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat napló</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>Küldő</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Tárgy</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Küld</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Üzenet</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Új email</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Kattintson az új üzenet írásához a kapcsolatai számára</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Új üzenet írása</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>Címzett:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Tárgy:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Engedélyezi a tábla teljes méretre igazítását&lt;br/&gt;a dokumentumot minden felhasználó a saját felbontása szerint látja.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Felhasználó kitiltása</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>Saját magát nem tilthatja ki a teremből! A szoba elhagyásához kattintson a kilépésre, zárja be az ablakot, vagy a böngészőt!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Biztosan leválasztja ezt a felhasználót a konferenciáról?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Megerősítés ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>A Super-Moderátort nem tilthatja ki a konferenciából!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Konferencia szoba kapcsolat lista</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Kezdődik</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Befejeződik</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Adhat kérdéseket a konferencia üzenetéhez és létrehozza a konferenciát. Az esemény bekerül minden látogató naptárába.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Bejövő</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Küldött</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Kuka</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>Ez Te vagy! Nem adhatod magad a kontakt listához.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>Ez a felhasználó tiltva van!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>Ez a felhasználó már el van fogadva!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>A felhasználó kapcsolata érvénytelen!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Felhasználó hozzáadva a kontakt listához!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>A felhasználó kapcsolata tiltva van és folyamatban van a kontakt listáról levétele!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>Ezzel nincs kapcsolat!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Biztosan eltávolítja ezt a kapcsolatot?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Eltávolítás megerősítése</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Kapcsolat törlése a listáról</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Felhasználói profil</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Motasd a profilját</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Üzenet</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Keresés</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Mind kijelöl</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Kijelölés törlése</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Olvasatlanok kijelölése</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Olvasottak kijelölése</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Könyvtárba áthelyez ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Új könyvtár hozzáadása ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Törlés</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>A törölt üzenetek a "Kukába" kerülnek!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Olvasatlannak jelöl</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Olvasottnak jelöl</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Válasz</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Válasz mindenkinek</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Továbbít</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Művelet ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Privát üzenet küldése</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nincs kiválasztva!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Bejövőbe áthelyez</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Törlés (végleges)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>A művelet sikertelen!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Küönyvtár hozzáadása</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Könyvtár hozzáadása</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Hozzáad</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Könyvtár törlése</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>Nem törölheti ezt a konyvtárat, üzenetek vannak benne! Először törölje, vagy helyezze át az üzeneteket.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Név szerkesztése</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Biztosan törli ezt a könyvtárat? Később nem vonható vissza.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>A felkérésed elküldtük a felhasználónak. Amint megkapja üzeneted, elfogadja/visszautasítja a felkérésed. Csak az elfogadottak kerülnek a kontaktlistára!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Üzenet</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>A felhasználó nem osztotta meg a privát kapcsolati adatait.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>A felhasználó csak a kpcsolataival osztotta meg a privát kapcsolati adatait.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Cím &amp; Telefon</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>A meghívód érvénytelen, a meghívó csak az alábbi időben érvényes:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Ez az esemény több felhasználó, több naptár bejegyzéshez is kapcsolódik. A változás mindegyiket érinti. Valóban frissíted a bejegyzést?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Frissítés megerősítése</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Engedélyezem a kapcsolataimnak a naptárat (csak nézet)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Nem osztja meg a naptárat</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Kapcsolatok naptára</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Előbb vetesse fel magát a kapcsolatlistára, hogy megnézhesse ezt a naptárbejegyzést.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Nem menthet, törölhet olyan eseményt, amit nem Ön hozott létre!!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Mutasd a naptáraimat ismét!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Ez az esemény több felhasználó, több naptár bejegyzéshez is kapcsolódik. A változás mindegyiket érinti. Valóban törli a bejegyzést?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Művelet megerősítése</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Belépés a szobába</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Hpzzáférés a konferencia szobához</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>A konferencia szoba és az esemény tárolva lett a privát bejegyzésekhez.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>Először le kell tárolnia az eseményt!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Ez a szoba nem elérhető. Az esemény a naptárból és a konferencia szoba el lett távolítva !</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Válasszon megjelenő felhasználó nevet</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Vezetéknév</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Keresztnév</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Legalább 4 karakter szükséges! Esetleg a vezeték és keresztnév.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Érvényes e-mail címet adjon meg!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Belépés Facebook azonosítóval</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Felhasználói</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Facebook azonosítóval lépett be. A profilban adja meg az e-mail címét. Ha nem adja meg az email címét, nem tud üzeneteket fogadni a bejegyzésekről, konferenciákról, más felhasználóktól.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Üzenet</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Ne mutasa újra a profil frissítési üzenetet</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>mtovábbi opciók megjelenítése ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Új privát üzenet:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Kattintson ide a profil megtekintéséhez ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Válasz</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Szobák és Chat</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Saját szobák</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Konferencia szobáim (1-16 résztvevő)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Webinárium szobáim (1-120 résztvevő)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Tulajdonos Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Adjameg a jelszót</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Szükséges jogosultsági szint (felhasználó,vagy moderátor, vagy admnisztrátor)</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (Csak SOAP hozzáférés)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Közvetlen betöltés a táblába</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Valóban eltávolítja ezt a táblát? A művelet nem fordítható vissza!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Betöltés a táblába</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Ne felejtse el a felvételt indítani! Legalább egy látogató belépése szükséges a felvétel elindításához.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Felvétel indítása</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Nyíl</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Kör</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Vonal</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Négyszög</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Háromszög</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Szöveg</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Ikonok</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Szabadkézi rajz</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Kiválaszt/Mozgat</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Terület rajzolása</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Kivág/Mozgat</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Nagyató</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Nyomtat</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Visszavon</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Kuka</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Rács hozzáadása</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>File megosztása</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Kijelölő négyzet</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Ikon választása</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Másol</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Kivág</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Beilleszt</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Töröl</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Biztosan törli a tábla tartalmát?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Töltse be a táblába közvetlenül</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Látogatók</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Látogatók kezelése</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Bemutat</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Távoli vezérlés</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Kiad</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Látogató meghívása</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>E-mailben</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>Felhasználó moderátor</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>Felhasználó webkamerájának bekapcsolása</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Terület kitöltés be</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Terület kitöltés ki</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Ugrás a rácsra</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Felvétel engedélyezése</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Várakozás a felvételre</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Felső menü elrejtése</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Videó lejátszása</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Valóban eltávolítja ezt a tartalmat a lapról?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Elfogadja és alkalmazza a felhasználónak ezt</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Tilt</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Aktivitások és műveletek</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Tábla eltávolítása</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Moderátornak kell lennie, vagy engedéllyel kell rendelkeznie a tábla művletekhez!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Nem engedélyezett</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>kilépett a szobából.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Matematikai ikonok</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Kategorizálatlan</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Szín stílus</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Minőség</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Tartomány</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>meglátogat</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>narancsvörös</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>középzöld</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>sötétkék</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>világoskék</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>aranyvörös</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>ezüstszürke</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>egyéni</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>jobb</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>feltölt</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>közepes</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Összes mikrofont némít</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Összes mikrofont visszakapcsol</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mások mikrofonjának némítása</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>A moderátor lenémította a mikrofonját, nem kapcsolhatja vissza!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Összes mikrofont némítja?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Biztosan mindent elnémít? A hallgatók nem fogják hallani!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mikrofon helyileg némítja?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Biztosan némítja a mikrofonját? Csak a helyi képernyőn némítja. Nincs hatással a többi hallgatóra, ők hallhatják továbbra is. Csak a moderátor némíthatja le globálisan!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mikrofont globálisan némítja?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Globálisan némítja ezt a látogatót? Nem fogják tovább hallani!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>A hangod be van kapcsolva. Kattints ide, hogy jelezd a moderátornak, ha kapcsolja ki!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>A hangod ki van kapcsolva. Kattints ide, hogy jelezd a moderátornak, ka kapcsolja be</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>szeretném, hogy a moderátor némítsa mindenknél a hangomat.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>szeretném, hogy a moderátor kapcsolja vissza mindenkinél a hangomat.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>a moderátor visszakapcsolta a mikrofonját.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>a moderátor némította a mikrofonját.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Hangja visszakapcsolva. Kattintson ide, ha globálisan némítani akarja!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Hangja némítva. Kattintson ide, ha globálisan vissza akarja kapcsolni!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>A felhasználót a moderátor globálisan némította. Ön nem kapcsolhatja vissza!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Hangját mindenkinél némítja</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Hangját mindenkinél visszakapcsolja</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mikrofont némít</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Mikrofont visszakapcsol</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Hangot mindenkinél némítja</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Hangot mindenkinél visszakapcsolja</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Csak amoderátor tudja globálisan némítani/visszaadni a hangot! A mikrofonja némításához: Kattintson a mikrofon ikonra a panelján!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Szavazás neve</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Te</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Régebbi szavazások</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>aktív</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Egyszerű diagramm</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Oszlop diagramm</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Adja meg e-mail címét</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Új üzenet(ek)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Szavazás lezárása</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Biztosan lezárja a szavazást? Nem lehet később szavazni rá.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Szavazás törlése</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Biztosan törli ezt a szavazást? Az eredmények is törlésre kerülnek.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Nyelv ISO kódja</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Engedi/Tiltja az audio hozzászólást.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Engedélyezi a felhasználónak az audio hozzászólást</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Tiltja a felhasználónak az audio hozzászólást</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>hozzá szeretne szólni, hang eszköz engedélyt kér.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>a moderátor hozzászólási engedélyt adott.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Hozzászólási engedélyt kérek.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Kamera felbontás</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Sávszélességének (Feltöltési irány) megfelelően válassza meg a felbontás. Nagyobb felbontás, nagyobb sávszélességet igényel!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>Nincs engedélye az egyéni Audio/Video kapcsolathoz. Kérjen engedélyt a moderátortól, vagy figyelmeztesse, hogy kapcsolja be a hozzáférését.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Egyéni audio hozzáférést kérek a hozzászóláshoz!</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Egyéni audio/video kapcsolat velem (kattintson a panelen, vagy F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Mikrofon aktív!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Mikrofon némítva</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Chat elrejtése</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Aktivitások elrejtése</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>File böngésző elrejtése</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Akciók menü elrejtése</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Képernyő megosztás elrejtése</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Tábla elrejtése</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Mutassa a mikrofon jelet a videó panelen</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Felület tulajdonságai</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Új esemény</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Az eseményhez tartozó link jelszóval védett, a jelszó az eseményhez tartozik, nem a konferencia szobához! Az értesítő az eseményhez kapcsolt kontaktoknak szól és kerül kiküldésre! Amikor megváltoztatja az eseményt, minden alkalommal kiküldésre kerülnek az új linkek új jelszóval. A linkek csak egyszer működnek, a régi jelszók érvénytelenek!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Részletek szerkesztése</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Mutasd a SIP számot</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Hívás</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Mutasd a kapcsolataim eseményeit</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Főoldal!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Előadásai térképe</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Felvételek, interjúk megnézése</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Válassza kis és indítson Web-konferenciát</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Felhasználók kezelése</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Kapcsolatok kezelése, látogatók leválasztása</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Csoportok kezelése</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Konferencia szobák kezelése</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Rendszer beállításainak kezelése</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Cimkék és szavak kezelése</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>LDAP és ADS konfigurációs beállítások</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Rendszer biztonsági mentés Export/Import</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Moderátornak kell lenned, hogy létrehozhass, feltölthess, módosíthass, táblához adhass filet/könyvtárat.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Szöveg szerkezstése</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publikáció</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Publikálás indítása</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Publikáció befejezése</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publikációs alkalmazás</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publikációs Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Csökkentse a megosztási kép szélességét mielőtt odébb húzza.</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Csökkentse a megosztási magasságot, mielőtt lejebb húzza</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Csökkenti a megoszási képernyő X méretét mielőtt megpróbálja szélesíteni</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Csökkenti a megoszási képernyő Y méretét mielőtt megpróbálja magasítani</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Töltse fel a meosztási streamet külső alkalmazásba(3rd.) pl.: justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Indítsa el a képernyőmegosztást a publikáláshoz</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderátornak kell lennie a felvétel indításához</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>YNincs jogosultsága, hogy egyéni audoi/video kapcsolatot állítson be a látogatókkal. Moderátornak kell lennie, vagy több egyéni kapcsolatának, hogy egyéni mikrofonokat kapcsolhasson be.</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Új file feltöltése</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Megosztási beállítások megnyitása</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Moderátor alkalmazhatja</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Jelezzen a moderátornak, hogy ossza meg a kameráját/mikrofonját</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Visszacsatolást gyűjt azáltal, hogy létrehoz egy szavazást</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>A régebbi és jelen szavazatok alapján az eredmények</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Válaszol, ha a szavazás ehhez a konferenciához tartozik</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Kamera/Mikrofon beállításai</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Kilép az előadásból</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Külső személy hívása VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Direkt belépési link küldése ehhez a szobához</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Rajztábla beállításainak változtatása</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Maximális feltöltési méret</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Moderátort kéri, hogy ossza meg a tábládat</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Privát chat nyitása</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Mindenki</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>Vele nem kezdhet privát chatet.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Már privát shatban van ezzel a felhasználóval.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>DTörli ezt a privát chatet?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Szerverek</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Szerver látogatói a kluszterben</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Szerver neve</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Szerver címe</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Szerver adatai</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>SMS Küldése</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Közzététel. Felhasználó:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Időt és adatforgalmat takarít meg ha a parancssori admint használja a mentésekhez backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;lépjen be az OM telepített könyvtárába (pl.: /opt/red5)&lt;/li&gt; &lt;li&gt;állítsa meg az OM-et (cmd: ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (backup készítése az aktuális OM -ről)&lt;/li&gt; &lt;li&gt;töltse le az új OM-et&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (A működő OM verziót őrizze meg :))&lt;/li&gt; &lt;li&gt;Csomagolja ki az új OM-et /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' adja meg, ha nem az alapértelmezett DB hozzáférést használja )&lt;/li&gt; &lt;li&gt;OM indítása&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Közös termek minden felhasználó számára</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Közös termek a csoport felhasználói számára</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>A felhasználó termei</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Speciális találkzó szoba étrehozás/módosítás</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Több cím megadása az alábbiak szerint: vezetéknév1 keresztnév1 &lt;email1&gt;,"vezetéknév2 keresztnév2" &lt;email2&gt;,'vezetéknév3 keresztnév3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Stream hangerő változtatása</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Mikrofon hangerő változtatása</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>A chat moderált</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Üzenet engedélyezése</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel alapértelmezésben nyitva</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Fileok panel alapbértelmezésben nyitva</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Utolsó ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Minden slave küldi a pinget a masternek 3 másodpercenként (konfigurálható). Utolsó slave kevess mint 1 perce érkezett, a mastar használja a slave-t.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>Felhasználó (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Jelszó</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp útvonala</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Aktív</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>URL készítése</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Hálózat tesztelése</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Automatiksan kiválasztja az interjú video ablakot</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Aláhúzott</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Betükészlet</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Alkalmazott betükészlet</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Betü szín</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Session statisztika mutat</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session részletei</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>Rendszer import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Feltöltött fileok és felvételek betöltése a mentásből</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>SIP átvitel engedélyezése a szobában</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Egyéni hangkapcsolatot kezdeményez ezzel a felhasználóval?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Adjameg az időzónáját</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>csoportmunka (n:n) konferencia (1-25 látogatóval)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>moderált (1:n) konferencia (1-150 látogatóval)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interjú (1:1 megbeszélés felvétellel)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Konfigurációs beállító kulcs már létezik, válasszon másikat, vagy szerkessze a meglévőt</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Tartalom mentése, kérem várjon...</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Üdvözöljük</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widgeten megjelenő felhasználói adatok és linkek</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgetek</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>Rólunk</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Név</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Betöltés ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>ma</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>ne küldjön értesítést</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>egyszerű e-mail</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/indonesian.xml b/src/main/webapp/languages/indonesian.xml
new file mode 100644
index 0000000..9532b3d
--- /dev/null
+++ b/src/main/webapp/languages/indonesian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferensi</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Rapat</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Event</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Seting</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administrasi</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Rekam</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>File tidak tersedia</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Rekaman dr dosen</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Pengguna terkoneksi:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Mulai Konferensi</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Nama Saya</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Video Konferensi</value>
+  </string>
+  <string id="15" name="import">
+    <value>Simpan File</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Panggil Ulang</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Ke File Utama</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Poling Baru</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Poling Baru untuk Konferensi.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pertanyaan:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Model Poling:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Buat</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Catatan: Setiap user terkoneksi akan menerima pesan dangan poling baru.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Buat Poling</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Batal</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ya/Tidak</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Angka dari 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Poling</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Hanya moderator yang bisa membuat pertanyaan</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Pilihan anda udah tercatat.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Anda telah melakukan pilihan pada Poling ini.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Pilih !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Respon Anda:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ya</value>
+  </string>
+  <string id="35" name="no">
+    <value>Tidak</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Yang diinginkan:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Hasil Poling</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pertanyaan:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Hasil:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Jawaban:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Belum ada poling yang dimulai.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Pilih!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Rapat (4 kursi maksimum)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferensi (50 kursi maksimum)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipe</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Kursi lainnya</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Sudah dipilih</value>
+  </string>
+  <string id="48" name="enter">
+    <value>masuk</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderator meninggalkan rapat.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Sistem informasi</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Pilih perangkat</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Pilih webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Pilih Mic:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>batal</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Anda harus konek kembali.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Edit seting.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kursus:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Bahasa:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>batal</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>hapus whiteboard</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Anda ingin whitboard di bersihkan sebelum gambar baru ditambahkan?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Jangan bertanya lagi</value>
+  </string>
+  <string id="65" name="no">
+    <value>Tidak</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Edit seting</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Diperlukan Konfirmasi sebelum membersihkan whiteboard.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Info Pengguna</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>bersihkan Area Gambar</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Batal</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Ulangi</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Pilih Objek</value>
+  </string>
+  <string id="73" name="text">
+    <value>Tulisan</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Gambar</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Gambar garis</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Gambar garis bawah</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Kotak</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Lonjong</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Panah</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Hapus item yg dipilih</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Tambahkan ke moderator</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Tambah</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>batal</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Menjadi Moderator</value>
+  </string>
+  <string id="85" name="close">
+    <value>tutp</value>
+  </string>
+  <string id="86" name="italic">
+    <value>cetak miring</value>
+  </string>
+  <string id="87" name="bold">
+    <value>cetak tebal</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>TUNGGU</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Peserta menginginkan masuk menjadi moderator:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>diterima</value>
+  </string>
+  <string id="91" name="reject">
+    <value>ditolak</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>batal</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Kirimkan permintaan ke beberapa peserta berikut</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Diterima</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Ditolak</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Ganti Moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Anda bukan moderator dalam kursus ini!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Kelas penuh, coba lagi nanti.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Bentuk Lonjong</value>
+  </string>
+  <string id="101" name="close">
+    <value>tutup</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>entri data salah</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 karakter atau lebih; hurup kapital semua!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>userpass harus lebih dari 4 karakter</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>username sudah terpakai</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>email sudah diregistrasi</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>System error silahkan kontak Admin</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>User:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Pass:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Bahasa</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Masuk</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Mendaftar</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>User:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Pass:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Ulangi Pass:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Nama Depan:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Nama Belakang:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Negara:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Daftar</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Batal</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Bukan anggota?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Halaman Utama</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>User</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Group</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisasi</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Ruang-Rapat</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>publik</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>organisasi</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>masuk</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Password</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Ulangi Password</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Nama Depan</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Nama Belakang</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Ulang tahun</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Jalan/No</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Kodepos/Kota</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Negara</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Informasi alamat</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Data User</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>simpan</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Simpan</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID USER</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>nama depan</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>nama belakang</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>selanjutnya</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>sebelumnya</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>hapus rekot</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>batal</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>hapus</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>rekot baru</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>panggil ulang</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>hapus rekot</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>abaikan</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>aktifkan</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>organisasi</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>tutup</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID Organisasi</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>nama</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>user</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>mod</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>level user</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>organisasi</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nama</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>tambahkan organisasi</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>tambahkan organisasi</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>batal</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>tambah</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>hapus organisasi</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>user</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>tambah user</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>hapus user</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>tambah user</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>cari user</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>cari</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>user</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>organisasi</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>masuk</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>ruang konferensi</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Ruang Konferensi</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nama</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>publik</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>organisasi</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Ruang Rapat</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>nama</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>tipe</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>publik</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>komentar</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>simpan</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>panggil</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>simpan sebagai</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>nama file</value>
+  </string>
+  <string id="201" name="files">
+    <value>nama file</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>batal</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>simpan</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>salah</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>panggil</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objek terpanggil</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>sinkronasi klien, harap menunggu:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Panggil data gambar</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>sinkronasi klien, harap menunggu:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>bersihkan area gambar</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>area gambar di bersihkan, semua data akan hilang</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Konfirmasi sebelum panggil file</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Kirim undangan</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Kirim undangan</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Judul</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Penerima</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Pesan</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Kirim</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Batal</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>batal</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Data User</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Nama panggilan anda untuk konferensi ini</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Panggilan</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>nama depan</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>nama belakang</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>bahasa</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>masuk</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Panggil</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Data sedang dipanggil, tunggu!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Password salah</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Silahkan masukan dua password yang sama, minimal 6 karakter</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Email salah</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Alamat email yang anda masukan salah</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrasi Komplet</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Akun anda udah dibuat, silahkan login sekarang.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Anda tidak dapat melakukan sharing layar anda, seseorang sedang melakukannya.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Tidak diperbolekan melakukan Sharing</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Sharing layar anda</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Bandwidth kurang: Anda tidak dapat melakukan sinkronasi. Jika peringatan ini terjadi terus menerus, silahkan meminta moderator untuk menurunkan tingkat kualitas.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Layar dari:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Gambar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokumen</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>File</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Anggota</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Ambil dokumen asli</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Ambil dokumen pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Panggil presentasi ke dalam whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfigurasi</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Drag Objek ini</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Atur ulang Objek ini</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>dari</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ke halaman utama</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ke halaman sebelumnya</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ke halaman selanjutnya</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ke halaman terakhir</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Kecilkan --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Besarkan ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Tuan.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Nyonya.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfigurasi</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Kunci</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfigurasi</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Kunci</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>update terakir</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>diupdate oleh</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>komentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>kunci</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>dari</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>User</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>hapus user dari organisasi</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>hapus</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>User ini udah teregistrasi dalam organisasi ini.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Berita</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Jalan singkat</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>ke Konferensi</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>ke Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Support dan Bantuan</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>laporkan bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Selebihnya</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Website (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Ingat saya</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Konten</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Home Page saya</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Jadwal Rapat</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Jadwal Acara</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Rapat Umum</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Rapat Tertutup</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Acara Umum</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Acara Khusus</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Konten Publik</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Konten Khusus</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Konten Personal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderasi</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Tambahkan ke moderasi</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Poling</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Pilih file</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Seting</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Seting Kamera dan Mic</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Seting Whiteboard</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Keluar</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Kembali ke ruangan</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Keluar</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Lupa password?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Ubah password</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Lewat Email</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Lewat Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Email Anda</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Login Anda</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Kirim email dengan alamat ubah password</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Email tidak ditemukan. Pastikan email tersebut anda gunakan saat membuat akun.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Silahkan masukan alamat email yang lain atau Username</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Tidak ada User terkoneksi dengan Username ini</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Email yang berisi informasi alamat baru telah dikirim ke email anda, silahkan cek email anda. Jika anda belum mendapatkan email, pastikan pada baigan seting spaming pada konfigurasi email anda dan kirimkan email lagi.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Salah</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Pesan</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Hash tidak valid. User tidak ditemukan.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Isi Ulang Password Anda</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>ubah Password</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Password baru</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Tulis lagi Password anda</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Pasword berbeda, silahkan ulangi lagi.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 karakter atau lebih, huruf kapital bermasalah!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password sudah di seting. Anda dapat login sekarang.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Kesalahan belum terlacak. Silahkan laporkan ke Team Servis.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username tidak ditemukan</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Password tidak valid</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Sukses keluar dari sistem</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Halaman depan registrasi dimatikan.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>EMail tidak valid</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Duplikasi nama file, silahkan menggunakan nama lain</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>nama file terlalu pendek</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Alamat tidak dapat disimpan</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>User telah ditambahkan tetapi anda harus memasukan kedalam salah satu organisasi, jika tidak akan mengakibatkan gagal login.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Rekot baru</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Tidak ditemukan Kolom dengan ID kolom ini.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Tidak ditemukan Label untuk kolom tersebut.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Dibutuhkan Autorisasi sebagai Admin</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor Bahasa</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Bahasa</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID Label</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Nama Label</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Nilai</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Nilai Kolom</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nama Label</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Nilai Label</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID Label</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Anda hanya bisa hapus label bukan kolom! Anda tidak dapat menghapus kolom, mungkin ada label didalam bahasa yang lain.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ID Label tidak valid. Kolom FieldLanguagesvalues_Id tidak dapat ditemukan dalam database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Anda tidak dapat menghapus kolom ini. Anda hanya dapat menghapus label bukan kolom. Tidak ada label yang dipanggil sekarang, Mungkin belum dipiliah salah satu kolom atau tidak ada definisi label untuk kolom yang dimaksud pada pilihan bahasa ini.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>expor</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Anda harus keluar dahulu untuk melihat perubahan.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Tambah pilihan bahasa</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>hapus pilihan bahasa</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Tambah pilihan bahasa</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nama</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Tambah pilihan bahasa</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Buat Arsip</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>awal</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>sebelumnya</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>selanjutnya</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>akhir</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>user yang berbicara (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>mode suara nyala/mati</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistem</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Setingan Anda</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hola,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Edit profil anda</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Pesan baru:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Kirim Gambar baru</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Expor - Data User</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Semua organisasi harus sudah tersedia!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>mulai expor</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Berdasarkan organisasi</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>mulai expor</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Ambil - Data User</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Pilih users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>ambil</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Expor dalam XML - File ini dapat di gunakan untuk : - Kontribusi kedalam project - Kirim ke sistem lain - Arsip - Opsi pilihan - Simpan ke dalam direktori bahasa - direktori untuk instalasi berikutnya</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Pilih file bahasa yang akan di ambil. Pilih bahasa yang benar dari form pilihan! Apapun nama filenya, yang dipilih yang akan diambil kedalam pilihan bahasa ini!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Ambil - pilih file</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Simpan sebagai</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nama:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>komentar:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>simpan</value>
+  </string>
+  <string id="395" name="record">
+    <value>Proses rekam</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Proses rekam Tampilan</value>
+  </string>
+  <string id="397" name="record">
+    <value>Proses rekam dari Ruangan umum atau khusus</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Users :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Terkoneksi:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Users dalam ruangan ini:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>panggil ulang</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Ruangan ini penuh, silahkan mencoba lagi dalam beberapa menit.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Klik pada Judul ruangan untuk melihat detilnya</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat dengan user dalam ruangan ini:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Ruangan:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Users dalam ruangan ini::</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>mulai sejak:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Putar Rekaman</value>
+  </string>
+  <string id="410" name="record">
+    <value>Durasi:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Tanggal:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Modus Rekam! Anda tidak dapat melakukan perubahan. Ini adalah file hasil rekaman!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Putar hasil rekam</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Mulai Rekam</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stop Rekam</value>
+  </string>
+  <string id="417" name="record">
+    <value>Merekam:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Seseorang sedang merekam sekarang :</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Sedang Rekam! Oleh:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Batal</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Proses rekam dibatalkan dan tidak disimpan.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>lanjut</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Tutup jendela ini dan lanjut rekam</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Ubah warnagaris</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Pilih Warna</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Aktipkan / Matikan warnagaris</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Ubah isianwarna</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Aktipkan / Matikan isianwarna</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Ubah besaran garis</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>tutup</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>ubah ukuran huruf</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Hapus Rekaman</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Tamu</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Oleh:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nama</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Ruang</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Tanggal</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>batal</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>mulai</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nama</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Tanggal</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Hapus Log chat di Server</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>kirim pesan</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Pilih Perangkat</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio dan Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Hanya Audio</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Hanya Video</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Tidak ada Audio/Video (gambar saja)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Tidak ada Audio/Video dari PC anda, hanya akan menampilkan gambar anda dari profile. Kemungkinan anda mengalami gangguan koneksi internet atau koneksi internet anda lambat.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>Sn</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>Sl</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>Rb</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>Km</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>Jm</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>Sb</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>Mg</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Senin</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Selasa</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Rabu</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Kamis</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Jumat</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sabtu</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Minggu</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kelendar mingguan</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januari</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Pebruari</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Maret</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mei</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Agustus</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Desember</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalendar</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Peserta</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Tampilkan Setingan Layout</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Lebar | Tinggi</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Jendela Video</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Jendela Moderation</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Jendela Whiteboard</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Fungsikan</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Lebar | Tinggi</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Jendela Files,Chat,Partizipants</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Fungsikan</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Lebar | Tinggi</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderator meninggalkan Ruang. Tidak ada moderator sekarang. Anda dapat menjadi moderator atau menunggu sebentar.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Tidak ada moderator sekarang, tetapi ada beberapa peserta. Anda harus menjadi moderator atau tunggu.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Komentar tentang $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>Undangan - $APP_NAME</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Pesan dari peserta:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Pesan:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klik link berikut untuk bergabung dalam rapat :</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klik disini untuk masuk ke rapat</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Jika anda mengalami kesulitan, silahkan copy dan paste link berikut ke browser :</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Daptar ke $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Data anda:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Tim - $APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>Daftar ke $APP_NAME</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>Seting ulang password -$APP_NAME</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klik link berikut untuk menseting ulang password :</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klik disini untuk isi password baru</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>ika anda mengalami kesulitan dengan link, silahkan copy dan paste ke browser :</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Seting ulang password $APP_NAME</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Silahkan isi tanggal dengan benar, contoh 24-12-2001 (dd-mm-yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Silahkan isi alamat email dengan benar, contoh nama@alamat.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Silahkan masukan angka pecahan, contoh 1,05</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Silahkan masukan angka, contoh 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Silahkan masukan nomor telepon, contoh +62 274 486883</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Silahkan masukan format jam, contoh 12:24 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Terproteksi dengan Password</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Password</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Periode Valid</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Terakhir</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Periode</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Sekali waktu</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valid dari :</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valid sampai dengan:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Undangan ke $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Tidak ada Undangan untu Kode undangan ini!</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Undangan sudah terpakai, tidak bisa dipergunakan lagi.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Kode - Undangan tidak valid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Password:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Periksa Password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Password salah!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>audio_video</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Syncronize Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/italian.xml b/src/main/webapp/languages/italian.xml
new file mode 100644
index 0000000..6ea73ec
--- /dev/null
+++ b/src/main/webapp/languages/italian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferenza</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Riunione</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditorium</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Impostazioni</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Utente</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Amministrazione</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Registra</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Nessun file disponibile</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Solo il docente</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Utenti connessi:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Inizia una conferenza</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Il mio nome</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Video Conferenza</value>
+  </string>
+  <string id="15" name="import">
+    <value>Carica presentazione</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Aggiorna la lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>All'archivio principale</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nuovo sondaggio</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Un nuovo sondaggio per la conferenza.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Domanda:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipo di sondaggio:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Crea</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Informazione: Ogni utente connesso riceve un messaggio con il nuovo sondaggio.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Crea un sondaggio</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancella</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Si/No</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numerico 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Sondaggio</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Devi essere moderatore per creare una domanda</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Il tuo voto è stato registrato.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Hai già votato per questo sondaggio.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Vota!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>La tua risposta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Si</value>
+  </string>
+  <string id="35" name="no">
+    <value>No</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Rispondi alle domande:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Risultati del sondaggio</value>
+  </string>
+  <string id="38" name="question">
+    <value>Domanda:</value>
+  </string>
+  <string id="39" name="results">
+    <value>risultati:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Risposte:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nessun sondaggio è attivo.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Vota!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Riunione</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Auditorium (massimo 200 partecipanti)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipo</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Altri partecipanti</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Già scelto</value>
+  </string>
+  <string id="48" name="enter">
+    <value>entra</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Il moderatore ha lasciato la riunione.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Informazioni di sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Scegli il dispositivo</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Scegli la webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Scegli il microfono:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>annulla</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Devi riconnetterti.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Modifica le impostazioni.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Corso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Lingua:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>annulla</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Cancella la lavagna</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Vuoi che la lavagna sia pulita prima di aggiungere una nuova immagine?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Non chiedere ancora</value>
+  </string>
+  <string id="65" name="no">
+    <value>no</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Modifica impostazioni</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Richiesta di conferma prima di pulire la lavagna.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informazioni sull'utente</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Pulisci la lavagna</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Annulla le modifiche</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Ripristina le modifiche</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Seleziona un'oggetto</value>
+  </string>
+  <string id="73" name="text">
+    <value>Testo</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Disegna</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Disegna una linea</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Evidenziatore</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rettangolo</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellisse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Freccia</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Cancella l'oggetto selezionato</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Sottoponi al moderatore</value>
+  </string>
+  <string id="82" name="apply">
+    <value>applica</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>cancella</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Diventa moderatore</value>
+  </string>
+  <string id="85" name="close">
+    <value>chiudi</value>
+  </string>
+  <string id="86" name="italic">
+    <value>corsivo</value>
+  </string>
+  <string id="87" name="bold">
+    <value>grassetto</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ATTENDERE</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Un utente vuole sottoporre al moderatore:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>accetta</value>
+  </string>
+  <string id="91" name="reject">
+    <value>rifiuta</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>cancella</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Invia la richiesta agli utenti seguenti</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accettata</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rifiutata</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Cambia moderatore</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Non sei il moderatore per questo corso!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderatore:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>La stanza è piena. Spiacenti riprovare più tardi.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellisse</value>
+  </string>
+  <string id="101" name="close">
+    <value>chiudi</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>errori nei dati inseriti</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Il nome utente deve essere di almeno 4 caratteri</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>la password deve essere di almeno 4 caratteri</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Il nome utente è già in uso</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>L'indirizzo email è già stato usato</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Errore di sistema, contattare l'amministratore</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Nome utente:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Password:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Lingua</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Entra</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Iscriviti</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Nome utente:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Password:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Riscrivere:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Nome:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Cognome:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Stato:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrati</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Annulla</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrati</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Utenti</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Gruppi</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizzazioni</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Stanze delle conferenze</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>pubblico</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>organizzazione</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>entra</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Password</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Riscrivere</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Nome</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Cognome</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Data di nascita</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Indirizzo/civico</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>C.A.P/Città</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Stato</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Informazioni</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Dati utente</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>salva</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>salva</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID-Utente</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>nome</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>cognome</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>mostra prossimo</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>mostra precedente</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Elimina il record</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>annulla</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>elimina</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>nuovo record</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>aggiorna record</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>elimina record</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>stato</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>disabilitato</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>abilitato</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>organizzazioni</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>calendario</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>chiudi</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID-organizzazione</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>nome</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>utente</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>mod</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>amministratore</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>livello utente</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>organizzazione</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nome</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>aggiungi un'organizzazione</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>aggiungi un'organizzazione</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>annulla</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>aggiungi</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>rimuovi l'organizzazione</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>utente</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>aggiungi un'utente</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>elimina l'utente</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>aggiungi l'utente</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>cerca un utente</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>cerca</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>utente</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>organizzazione</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>entra</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>stanze delle conferenze</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>stanze delle conferenze</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nome</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>pubblico</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>organizzazioni</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>stanze delle conferenze</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>nome</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>tipo</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>pubblico</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>commento</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>salva</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>carica</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>salva con nome</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>nome del file</value>
+  </string>
+  <string id="201" name="files">
+    <value>nome del file</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>annulla</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>salva</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>errore</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>caricamento</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>oggetto caricato</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>sincronizzazione con i client, attendere:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Caricamento delle immagini</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>sincronizzazione con i client, attendere:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>pulisci la lavagna</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>pulisci la lavagna, tutte le informazioni su di essa saranno perse</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Conferma prima di caricare il file</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Invia un invito</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Invia un invito</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Soggetto</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatario</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Messaggio</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Invia</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>annulla</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>invia</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>dati utente</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Il tuo appellativo per la conferenza</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>appellativo</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>nome</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>cognome</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>lingua</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>entra</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Caricamento</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Caricamento dati, attendere prego!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Password sbagliata</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Inserisci due password identiche di minimo 6 caratteri</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Mail sbagliata</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Hai inserito una mail non valida</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrazione completata</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Il tuo profilo è stato creato correttamente. Puoi effettuare il login.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Non è possibile condividere il tuo desktop in questo momento. Potrebbe essere in condivisione con qualcun'altro</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Condivisione non permessa</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Condivisione desktop</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>larghezza di banda insufficiente: Non sei abilitato a sincronizzare le immagini. i Frames saranno lasciati. Se visualizzi questo messaggio chiedi al moderatore di abbassare la qualità.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>immagine di:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Disegna</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Documento</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Files</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membri</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Scarica il documento originale</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Scarica il documento PDF</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Carica la presentazione sulla lavagna</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configurazione</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Muovi quest'oggetto</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Ripristina quest'oggetto</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>di</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Vai alla prima pagina</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Vai alla pagina precedente</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Vai alla prossima pagina</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Vai all'ultima pagina</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>sig.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sig.ra</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configurazione</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Chiave</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configurazione</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Chiave</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Ultimo aggiornamento</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>aggiornato da</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>commenti</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>chiave</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>di</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Utenti</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Cancella l'utente dall'organizzazione</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>cancella</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Questo utente è già membro di questa organizzazione.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>News</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Link veloce</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Vai alla Riunione</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Vai all'Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Aiuto e supporto</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Altre informazioni</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Sito web del progetto (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Mailing List utenti (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Ricorda utente</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Content</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Mia Home Page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mie conferenze fissate</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Miei eventi fissati</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Conferenze pubbliche</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Conferenze private</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Eventi pubblici</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Eventi privati</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Contenuti pubblici</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Contenuti privati</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Contenuti personali</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderatore</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Assegna moderatore</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Sondaggio</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Scegli un file</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Impostazioni</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Impostazioni Cam e Mic</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Impostazioni lavagna</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Esci</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Torna alle stanze</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Visualizzatore desktop</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Avvia visualizzatore desktop</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Video e Audio</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Chat</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Lavagna</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Moderatore</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Files</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Utenti</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Sondaggio</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Non ci sono utenti collegati con questo Username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Una mail, contenente un link, è stata inviata al tuo indirizzo email, controlla la tua posta. Se non hai ricevuto la mail, controlla il tuo filtro di spam e richiedi nuovamente la mail di conferma.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Errore</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Messaggio</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Hash non valida. Utente non trovato.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Resetta la tua password</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>cambia password</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nuova password</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>ripeti la password</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Le password inserite non sono identiche.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 o più caratteri; sensibile alle maiuscole;</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password impostata. Ora puoi collegarti.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Errore sconosciuto. Contatta il tuo amministratore.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username non trovato</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Password non valida</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Scollegamento effettuato</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrazioni disabilitate.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>EMail non valida</value>
+  </string>
+  <string id="340" name="registration">
+    <value>nome del file duplicato, scegli un altro nome</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>nome di file troppo corto</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Salvataggio di indirizzo non possibile</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Utente aggiunto, ma deve essere assegnato ad un'organizzazione, altrimenti non potrà collegarsi.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nuova registrazione</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Nessun testo trovato con questo ID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Nessun valore trovato per questo elemento.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Permessi da amministratore richiesti</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor linguaggi</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Linguaggi</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Identificativo-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Identificativo-Nome</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valore</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Record</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nome dell'identificativo</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Testo</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Puoi cancellare solo l'identificativo, non il record! Potrebbe essere utilizzato in altri linguaggi.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ID non valido. l'identificativo del linguaggio non è presente nel database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Non puoi cancellare questo campo. Puoi solo cancellare il contenuto non il campo. Non ci sono dati contenuti caricati in questo momento, potrebbe non esser stato scelto un campo o non ci sono contenuti impostati per questo linguaggio.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>esporta</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Devi scollegarti per vedere i cambiamenti.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Aggiungi un nuovo linguaggio</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>cancella linguaggio</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Aggiungi nuovo linguaggio</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nome</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>aggiungi linguaggio</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>vai al primo</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>vai al precedente</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>vai al prossimo</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>vai all'ultimo</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>utente parla (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>suono on/off</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>I tuoi settaggi</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>ciao,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Modifica il profilo</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nuovi messaggi:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Carica nuove immagini</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Esporta dati utente</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Le organizzazioni devono esistere tutte!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Inizia esportazione</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Per organizzazione</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>inizia esportazione</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Dati utente - Importazione</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>scegli users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importa</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>esporta in XML - Questi file possono essere usati per: - Contribuire al progetto - Importare in altro sistema - Backup - Personalizzazione - Inserire nella directoy dei linguaggi della tua prossima installazione</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Scegli un file di linguaggio da importare. Scegli il giusto linguaggio dalla combobox! Non importa il nome del file, esso sarà importato in questo linguaggio!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importazione - file scelto</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Salva come</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nome:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Commento:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>save</value>
+  </string>
+  <string id="395" name="record">
+    <value>Registra</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Visualizzatore delle registrazioni</value>
+  </string>
+  <string id="397" name="record">
+    <value>Registrazioni di stanze private e pubbliche</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Utenti:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Accedi:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Utenti nella stanza:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>ricarica</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Questa stanza è piena. Riprova fra qualche minuto.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>premi su una stanza per avere dettagli</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Parla con gli utenti nella stanza:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Stanza:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Utenti in questa stanza:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>fino:</value>
+  </string>
+  <string id="409" name="record">
+    <value>vedi registrazione</value>
+  </string>
+  <string id="410" name="record">
+    <value>Durata:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Registrazione! Non puoi cambiare nessuna impostazione, è una registrazione!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Vedi questa registrazione</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Avvia registrazione</value>
+  </string>
+  <string id="416" name="record">
+    <value>ferma registrazione</value>
+  </string>
+  <string id="417" name="record">
+    <value>Registrazione:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>C'e' già qualcuno che sta registrando in questo momento:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Registrazione! dall'utente:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancella</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>La registrazione sarà cancellata e non salvata.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>recupera</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Chiudi questa finestra e recupera registrazione</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>cambia colore della linea</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Scegli colore</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disabilita / Abilita il colore della linea</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>cambia il colore di riempimento</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disabilita / abilita riempimento colore</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Cambia spessore linea</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>chiudi</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>cambia grandezza carattere</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Cancella registrazione</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Ospite</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Da:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Stanza</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancella</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>inizio</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Cancella i log della chat sul server</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>invia messaggio</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Scegli i devices da pubblicare</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio e Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>solo Audio</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>solo Video</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>no Audio/Video (immagine statica)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Nessun Audio/Video del tuo PC saranno pubblicati, al loro posto sarà visualizzata l'immagine del tuo profilo. Scegli questa impostazione se hai problemi di banda o velocità di Internet.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>LU</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>MA</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ME</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>GI</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>VE</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DO</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Lunedi</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Martedi</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Mercoledi</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Giovedi</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Venerdi</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sabato</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Domenica</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendario settimane</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Gennaio</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Febbraio</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marzo</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Aprile</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maggio</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Giugno</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Luglio</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Agosto</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Settembre</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Ottobre</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembre</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Dicembre</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendario</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Partecipanti</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostra i settaggi del layout</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Larghezza | Altezza</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderatore-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Lavagna-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Abilitato</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Larghezza | Altezza</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Files,Chat,Partecipanti - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Abilitato</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Larghezza | Altezza</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Il moderatore ha lasciato la stanza. Nessuno è presente in questo momento. Tu puoi diventare moderatore o attendere.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Non ci sono moderatori in questa stanza, ma ci sono dei partecipanti. Puoi diventare moderatore o attendere.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invito</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Messaggio dall'utente:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Messaggio:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Clicca questo link per partecipare alla conferenza:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Clicca qui per entrare nella stanza</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>se hai problemi con il link, per favore copia e incolla questo sul browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>I tuoi dati:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Accesso</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Re-imposta password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Clicca su questo link per inserire una nuova password:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Clicca qui per inserire una nuova password</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>se hai problemi con il link, per favore copia e incolla questo sul browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Reset della password di $APP_NAME</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>inserisci una data valida, per esempio 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Inserisci un email valido, per esempio name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Inserisci un numero decimale, per esempio 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Inserisci un numero (Intero), per esempio 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Inserisci un numero di telefono valido, per esempio ++39 0461 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Inserisci un orario valido, per esempio 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Protetto da password</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Password</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Periodo di validità</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Senza scadenza</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Periodo</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Una volta</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valido da:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valido fino:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invito a $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Nessun invito presente per questo codice.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>L'invito è già stato utilizzato. Questo tipo di invito non può essere riutilizzato.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Il codice di invito non è valido.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Password:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Controlla password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Password non valida!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Sincronizzazione Audio/video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Accesso corretto, ma la sessione non è attiva o presente sul server. Sarà assegnato una nuova sessione e dovrà essere ripetuto l'accesso.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>La sessione non è collegata o non ha diritti di amministrazione. The SOAP Gateway necessita di un utente con diritti di amministrazione per creare un utente..</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>La sessione non ha utenti remoti-dati connessi. Potrebbe esser stato chiamato il SOAP-Gateway prima di effettuare l'accesso all'applicazione o è stato utilizzato un id di sessione errato.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>La registrazione è in fase beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>larghezza</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>altezza</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Cambia trasparenza</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Apri browser</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Chiudi browser</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>La connessione al serve è stata persa. E' necessario ricollegarsi all'applicazione e/o controllare la rete.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Puntatore</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Sincronizzazione</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Sincronizzazione utenti, attendere</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>Scarica come SVG</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>Scarica come PNG</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>Scarica come JPG</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>Scarica come PDF</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>Scarica come TIF</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Promemoria:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categoria:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Ripetizione:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>niente</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Località:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Inizio</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Fine</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titolo:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Commento:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invita partecipanti</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Giornaliero</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mensile</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Annuale</value>
+  </string>
+  <string id="578" name="alert">
+    <value>La data di fine è dopo quella di inizio dell'appuntamento!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Inserisci un titolo!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Attiva le la scrittura del tuo linguaggio va da destra a sinistra (inverte ordine parole)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Cruscotto</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Guarda eventi e conferenze registrate</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Conferenza - Conferenze con 4 (fino a 16) utenti; tutti hanno accesso a audio e video</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Eventi - Conferenze fino a 200 utenti. Solo il moderatore ha audio e video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Crea utenti, stanze, organizzazioni + cambia configurazione</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Utenti nella stanza ora</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Caricamento documento. Aspettare finché i client sono sincronizzati.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Caricamento completato, conversione del documento in corso ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Inizia caricamento</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Carica e importa il dialogo. Scegli un file dal disco.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Annulla</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Scelta file</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connessioni</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connesso da</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Caccia utente</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Caccia utente</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Sei sicuro di voler chiudere la connessione a questo client? Il client sarà solamente rimosso dalla stanza corrente. Il client potrà ricollegarsi.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>La tua sessione è stata chiusa da un amministratore o moderatore</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefono</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>L'utente è il moderatore di questa stanza</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>L'utente è abilitato a disegnare sulla lavagna</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Ri) attiva Audio/Video o cambia le impostazioni</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Abilita questo utente a disegnare sulla lavagna</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Rimuovi possibilità di disegnare sulla lavagna</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Utenti</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Lavagna</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Il tuo account è assegnato a più organizzazioni. Per favore scegline una per questa sessione.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Questa stanza è piena al momento. Per favore riprova più tardi.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Tipo stanza</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Stanza appuntamenti</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Ora del server</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>Agenda</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Messaggio dall'utente:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Messaggio:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Clicca questo link per partecipare alla videoconferenza:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Clicca qui per entrare nella stanza</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>se hai problemi con il link, copia e incolla sul browser il seguente link:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>ricerca interna</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>utente esterno</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>titolo</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>nome</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Conferma uscita</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Sei sicuro di voler uscire?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Azioni</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Stanza demo</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Orario demo</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Orario meeting</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Questa stanza è una stanza demo. Per disabilitare questo avviso è necessario attivare una conferenza privata per uso ristretto o attivare un server dedicato. Sarai automaticamente sconnesso in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>moderata</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Perfavore attendi finchè un moderatore si collega alla stanza. Il moderatore può essere un insegnante, un amministratore o il creatore della stanza.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Condivisione schermo in ingresso</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>C'è una nuova condivisione di schermo in ingresso dall'utente:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Inizia condivisione</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Aggiungi nuovo meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Stanza meeting</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Stanza eventi</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderazione</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Utenti moderatori</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Stanze moderate</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Vuoi modificare questo utente a diventare moderatore dell'organizzazione?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Perfavore scegli un organizzazione prima di aggiungere l'utente!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organizzazione - Moderatori</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Sei sicuro di cancellare questo utente dall'organizzazione?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Questo utente è moderatore</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Questo utente non è moderatore</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Vuoi che questo utente non sia moderatore dell'organizzazione?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Aggiungi o cancella utenti o stanze della tua organizzazione</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Sei sicuro di cancellare questo record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Sei sicuro di cancellare questo utente dall'organizzazione? Sarà cancellato il legame tra utente e organizzazione, per cancellare completamente l'utente devi collegarti al pannello di amministratore.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Non puoi cancellare te stesso!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Questo metodo ha bisogno di un account da amministratore per essere chiamato!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Non ci sono sessioni collegate a questo ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Questo utente è un amministratore o moderatore. Puoi editare questo account solo dal pannello di amministratore.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Per completare la registrazione per favore clicca sul seguente link o copia l'url nel tuo browser.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>clicca per convalidare la tua e-mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Nessun utente è stato trovato per questo codice hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Questo utente è già stato attivato!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Hai attivato correttamente il tuo utente!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Collegati ora</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Il tuo utente non è attivo. Per prima cosa clicca sul link presente nella mail ricevuta nel processo di registrazione</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Ti sei registrato correttamente. E' stata inviata una e-mail per la verifica dell'utente. Per favore controlla la tua posta in arrivo.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Rimuovi il ruolo di moderatore da questo utente.</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Assegna i diritti di moderatore a questo utente.</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Utente</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Accesso alla lavagna virtuale</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderatore</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderazione: Per favore scegli dalla lista gli utenti a cui assegnare i diritti della lavagna virtuale, la moderazione o il video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Questo utente è già moderatore, ha automaticamente i diritti di disegno.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Sei tu! Non puoi toglierti i diritti di amministratore.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Abilita questo utente a pubblicare Video e Audio</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Rimuovi Audio e Video a questo utente</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Vorrei ricevere la moderazione di questa stanza.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Vorrei disegnare sulla lavagna virtuale</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Vorrei condividere il mio Audio e Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Sei il moderatore della stanza</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Hai i diritti di disegnare sulla lavagna virtuale</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Sei abilitato a inviare il tuo Audio e Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Messaggio al moderatore</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>L'utente</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>vorrebbe diventare moderatore. Utilizza l'icona di stato vicino all'utente nella lista utenti per aggiungere e rimuovere i moderatori.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>vorrebbe disegnare sulla lavagna virtuale. Utilizza l'icona di stato vicino all'utente nella lista utenti per aggiungere e rimuovere i diritti di uso della lavagna virtuale.</value>
+  </string>
+  <string id="695" name="695">
+    <value>vorrebbe condividere i suoi Audio e Video. Utilizza l'icona di stato vicino all'utente nella lista utenti per aggiungere e rimuovere i diritti di condivisione Audio e Video.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Devi attendere fino a quando un moderatore entra nella stanza.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Annulla</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Salva</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Giorno</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mese</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Anno</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Carica File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Aggiungi directory</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Aggiorna</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Cestino</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Miei File (Spazio privato)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Files della stanza (Spazio pubblico)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Aggiungi File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Aggiungi directory</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Cancella directory</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Modifica nome</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nuova directory</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Sei sicuro di voler cancellare questo elemento?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Ricerca</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Ricerca</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Apri documento</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Mostra tutti i file (Visualizzazione ad albero)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Chiudi documento</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Cancella file</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Non sei autorizzato a disegnare sulla lavagna. Devi diventare moderatore o almeno ricevere i diritti per lavorare sulla lavagna. Chiedi al moderatore l'assegnazione di questi diritti.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Proprietà documento</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Avvia Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Avvia Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Un utente vuol condividere il suo schermo. Vuoi vederlo?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Ora stai condividendo il tuo desktop. Per interrompere la sessione di condivisione, premi sul bottone di Stop nella finestra di condivisione.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Condivisi sessione</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Stai già condividendo il tuo desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Visualizzatore Desktop</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Esci</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Condividi Desktop</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Clicca avvia per pubblicare il tuo video</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Avvia condivisione</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Ferma condivisione</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Scegli l'area del tuo schermo:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Cambia larghezza</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>La condivisione ha finito la sessione!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Cambia altezza</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Larghezza:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Altezza:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connessione chiusa dal Server!</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Annulla</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Avvia External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Condividi schermo</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Registra sessione</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Precedente</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Avanti</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Ricarica</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Carica</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Imposta questo sito come default nel tuo profilo.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Verifica le impostazioni del tuo microfono e della tua cam prima di entrare nella stanza, registrando qualche secondo. Potrai poi rivedere la registrazione per verificare l'audio e il video.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Non mostrare più questo test</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Annulla</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Avvia conferenza</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Non richiedere ancora</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Puoi procedere senza verificare se hai intenzione di non condividere la tua voce e video. I partecipanti senza audio e video possono ugualmente utilizzare la lavagna, condividere il proprio desktop o scrivere messaggi in chat.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Premi Avvia</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Avvia conferenza</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Avvia evento</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Scegli la stanza</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Verifica impostazioni</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Avvia conferenza</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Come fare una videoconferenza:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Avvia registrazione</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Non mostrate il test Audio/Video (registrazione) prima di entrare in una conferenza</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Stanze pubbliche</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Le stanze pubbliche sono accessibili da tutti gli utenti</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Stanze private</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Le stanze private sono accessibili solo dagli utenti della rispettiva organizzazione.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Mie stanze</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Le stanze di questa sezione sono create per usi personali. Sono create attraverso il calendario e hanno una data di inizio e di fine. Sono visibili in questa sezione solo per la durata della loro validit√†.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Devi essere moderatore per fare questa azione.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Assegna moderatore</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Assegna accesso alla lavagna</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Assegna accesso a cam/microfono</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Questa hash di sessione √® gi√† in uso. Non puoi accedere contemporaneamente.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>INIZIO</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>ESCI</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Sei sicuro di voler uscire? Potresti dover pulire i documenti caricati, la lavagna e la chat</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Esci conferenza</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Stanze</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Scegli la stanza per un meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>E' presente un evento non salvato nel calendario. Per favore salvalo o cancellalo.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Si prega di aggiungere almeno un partecipante per la riunione!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Sei sicuro di voler cancellare questo evento?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Attenzione</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Aggiungi evento</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>giorno</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>settimana</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mese</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Descrizione</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Partecipanti</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, la tua piattaforma di videoconferenza. Segui le istruzioni premendo il tasto inizio per cominciare subito una videoconferenza, o vai al calendario e pianifica una conferenza per il futuro.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Pianifica una conferenza</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Per pianificare una conferenza tu puoi aggiungere un evento nel calendario. Per ogni evento sar√† creata un apposita stanza. Tu e tutti gli invitati riceverete una mail con un link per accedere alla stanza.&lt;br/&gt;&lt;br/&gt;Puoi scegliere tra diverse tipologie di stanze con differenti tipologie di layout e mdoerazione. Puoi anche scegliere tra diversi tipi di notifica via email che avvisano dell'evento in calendario.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Serve aiuto?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Ristretto</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Cerca</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Aggiungi</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Non ci sono utenti selezionati. Si prega di scegliere un elemento dalla lista e poi premere aggiungi.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Aggiungi partecipanti</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Salva</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Cancella</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Dettagli evento</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/japanese.xml b/src/main/webapp/languages/japanese.xml
new file mode 100644
index 0000000..f810eba
--- /dev/null
+++ b/src/main/webapp/languages/japanese.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>会議室</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>会議</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>講演</value>
+  </string>
+  <string id="4" name="settings">
+    <value>設定</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>ユーザー</value>
+  </string>
+  <string id="6" name="admin">
+    <value>管理</value>
+  </string>
+  <string id="7" name="stop">
+    <value>停止</value>
+  </string>
+  <string id="8" name="record">
+    <value>録画</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>利用可能なファイルがありません</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>講師による録画</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>接続済みユーザー:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>会議開始</value>
+  </string>
+  <string id="13" name="myname">
+    <value>名前</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>ビデオ会議</value>
+  </string>
+  <string id="15" name="import">
+    <value>アップロード</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>ファイルリスト表示更新</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>ファイルリストへ</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>新規投票</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>新規投票</value>
+  </string>
+  <string id="20" name="question">
+    <value>質問:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>投票タイプ:</value>
+  </string>
+  <string id="22" name="create">
+    <value>作成</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>ヒント: 接続中の全参加者に対して、投票を促すメッセージを送信します</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>投票の作成</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>はい/いいえ</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>1～10の数字</value>
+  </string>
+  <string id="28" name="poll">
+    <value>投票</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>質問を作成するには司会者になる必要があります</value>
+  </string>
+  <string id="30" name="vote">
+    <value>投票が登録されました</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>投票済みです</value>
+  </string>
+  <string id="32" name="voting">
+    <value>投票する</value>
+  </string>
+  <string id="33" name="answer">
+    <value>あなたの回答:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>はい</value>
+  </string>
+  <string id="35" name="no">
+    <value>いいえ</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>質問内容:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>投票結果閲覧</value>
+  </string>
+  <string id="38" name="question">
+    <value>質問:</value>
+  </string>
+  <string id="39" name="results">
+    <value>結果:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>回答:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>開始されている投票はありません</value>
+  </string>
+  <string id="42" name="votings">
+    <value>投票</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>ミーティング</value>
+  </string>
+  <string id="44" name="conference">
+    <value>会議</value>
+  </string>
+  <string id="45" name="type">
+    <value>タイプ</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>他の席</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>既に選択されています</value>
+  </string>
+  <string id="48" name="enter">
+    <value>入室</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>司会者が退室しました</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>システム情報</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>デバイス選択</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Webカメラ:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>マイク:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>はい</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>キャンセル</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>再接続が必要です。</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>デバイス設定の編集</value>
+  </string>
+  <string id="58" name="course">
+    <value>コース:</value>
+  </string>
+  <string id="59" name="language">
+    <value>言語:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>キャンセル</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>ホワイトボードのクリア</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>ホワイトボードをクリア</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>次回から入力を省略</value>
+  </string>
+  <string id="65" name="no">
+    <value>いいえ</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>設定の編集</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>ホワイトボードをクリアする前に確認を要求</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>ユーザー情報</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>描画領域のクリア</value>
+  </string>
+  <string id="70" name="undo">
+    <value>取り消し</value>
+  </string>
+  <string id="71" name="redo">
+    <value>繰り返し</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>オブジェクト選択</value>
+  </string>
+  <string id="73" name="text">
+    <value>文字列</value>
+  </string>
+  <string id="74" name="paint">
+    <value>自由線</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>直線</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>下線</value>
+  </string>
+  <string id="77" name="rect">
+    <value>四角形</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>楕円</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>矢印</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>削除</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>司会者になる</value>
+  </string>
+  <string id="82" name="apply">
+    <value>適用</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="84" name="mod">
+    <value>司会者になる</value>
+  </string>
+  <string id="85" name="close">
+    <value>閉じる</value>
+  </string>
+  <string id="86" name="italic">
+    <value>イタリック</value>
+  </string>
+  <string id="87" name="bold">
+    <value>ボールド</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>待機中</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>司会者希望のユーザー:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>許可</value>
+  </string>
+  <string id="91" name="reject">
+    <value>拒否</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>次のユーザーにリクエストを送信</value>
+  </string>
+  <string id="94" name="accept">
+    <value>許可されました</value>
+  </string>
+  <string id="95" name="reject">
+    <value>拒否されました</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>司会者の変更</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>あなたは司会者ではありません。</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>司会者:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>この会議室は満室です。</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>楕円</value>
+  </string>
+  <string id="101" name="close">
+    <value>閉じる</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>入力データエラー</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>ユーザー名は最低4文字以上必要です</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>パスワードは最低4文字以上必要です</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>そのユーザー名は既に使われています</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>そのメールアドレスは既に登録されています</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>システムエラー。管理者に連絡してください。</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>ログイン</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>ユーザー:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>パスワード:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>言語</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>ログイン</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>サインアップ</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>ユーザー:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>パスワード:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>パスワード再入力:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>名:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>姓:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>メールアドレス:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>国名:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>登録</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>キャンセル</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>登録</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>ホーム</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>ユーザー管理</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>グループ</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>組織管理</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>会議室一覧</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>公開</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>組織</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>入室</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>ログイン名</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>パスワード</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>パスワード再入力</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>名</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>姓</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>メールアドレス</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>誕生日</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>市町村/番地</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>郵便番号/都道府県</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>国名</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>その他情報</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>ユーザープロフィール</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>保存</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ユーザーID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>ログイン名</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>名</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>姓</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>次</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>前</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>削除</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>キャンセル</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>削除</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>新規作成</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>更新</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>削除</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>ステータス</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>無効</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>有効</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>組織</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>カレンダー</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>閉じる</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>組織-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>名前</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>ユーザー</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>司会者</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>管理者</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>ユーザーレベル</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>組織</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>名前</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>組織の追加</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>組織の追加</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>キャンセル</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>追加</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>組織の削除</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>ユーザー</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>ユーザー追加</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>ユーザー削除</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>ユーザー追加</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>ユーザー検索</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>検索</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>ユーザー</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>組織</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>入室</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>会議室管理</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>会議室</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>名前</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>公開</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>組織</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>会議室</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>名前</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>タイプ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>公開</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>コメント</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>保存</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>ロード</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>名前を付けて保存</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>ファイル名</value>
+  </string>
+  <string id="201" name="files">
+    <value>ファイル名</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>キャンセル</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>保存</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>エラー</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>ロード中</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>オブジェクトがロードされました</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>クライアント同期中、待機中のクライアント:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>イメージデータロード中</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>クライアント同期中、待機中のクライアント:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>ホワイトボードクリア</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>ホワイトボードの内容がクリアされます。</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>ファイルロード前の確認</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>招待メールを送信</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>招待メールを送信</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>件名</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>相手</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>メッセージ</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>送信</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>発言</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>ユーザーデータ</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>この会議の別名</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>別名</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>名</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>姓</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>メールアドレス</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>言語</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>入室</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>ロード中</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>データロード中。お待ちください。</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>パスワードが間違っています</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>4文字以上の同一のパスワードを2回入力してください</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>メールアドレスが間違っています</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>メールアドレスが無効です</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>登録完了</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>アカウントが作成されました。ログイン可能です。</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>ただいまデスクトップ共有ができません。誰かが既に共有しています。</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>共有は許可されていません。</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>画面の共有/録画</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>帯域不良: 画面の同期ができません。フレームが落ちます。この警告が頻発する場合、品質を落とすように司会者に依頼してください。</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>画面:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>ペイント</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>ドキュメント</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>チャット</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>ファイル</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>メンバー</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>オリジナルドキュメントのダウンロード</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>PDFドキュメントのダウンロード</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>プレゼンテーションをホワイトボードにロード</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>グローバル設定</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>ドラッグ</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>サイズ変更</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>/</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>最初へ</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>前へ</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>次へ</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>最後へ</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>縮小</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>拡大</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Mr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Ms.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>グローバル設定</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>キー</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>設定</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>キー</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>最終更新日</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>更新者</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>コメント</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>キー値</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>/</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>ユーザー</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>組織からユーザーを削除</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>削除</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>このユーザーは既にこの組織のメンバーです。</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>ニュース</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>リンク</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>会議室リスト</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>講演室リスト</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>ヘルプ・サポート</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://mail-archives.apache.org/mod_mbox/openmeetings-user/</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>バグ報告</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>続き・・・</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>プロジェクトWebサイト</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>ユーザーメーリングリスト</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>次回から入力を省略</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>コンテンツ</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>ダッシュボード</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>カレンダー</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>スケジュール済みイベント</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>パブリック会議</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>プライベート会議</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>パブリックイベント</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>プライベートイベント</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>パブリックコンテンツ</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>プライベートコンテンツ</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>パーソナルコンテンツ</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>司会者</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>質問があります</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>投票</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>フィル選択</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>設定</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>カメラとマイクの設定</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>ホワイトボード設定</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>退室する</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>会議室一覧に戻る</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>ログアウト</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>パスワードを忘れた</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>パスワードのリセット</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>メールでリセット</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>ログインでリセット</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>メールアドレス</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>ログイン名</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>パスワード・リセット用リンクを含むメールを送信する</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>指定されたメール・アドレスが見つかりません。アカウント作成時に指定したメール・アドレスを指定してください。</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>メール・アドレスまたはユーザー名を入力してください。</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>このユーザー名で接続するユーザーはありません。</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>専用リンクを含むメールをあなたのメール・アドレスに対して送信しました。メール受信箱をご確認ください。もし受信できない場合は、スパムとして除外されている可能性があります。その場合はスパム設定を見直し、再度、確認メールを送信してください。</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>エラー</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>メッセージ</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>ハッシュ値が不正です。ユーザーが見つかりません。</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>パスワードのリセット</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>ログイン</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>パスワード変更</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>新しいパスワード</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>パスワード再入力</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>パスワードが合っていません。</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4文字以上必要です。大文字小文字の区別があります。</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>パスワードが設定されました。ログイン可能です。</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>未知のエラーです。管理者に報告してください。</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>ユーザー名が見つかりません。</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>パスワードが無効です。</value>
+  </string>
+  <string id="337" name="logout">
+    <value>ログアウト完了</value>
+  </string>
+  <string id="338" name="registration">
+    <value>フロントエンド登録は無効です。</value>
+  </string>
+  <string id="339" name="registration">
+    <value>無効なメールアドレスです。</value>
+  </string>
+  <string id="340" name="registration">
+    <value>ファイル名が重複しています。別の名前にしてください。</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>ファイル名が短すぎます。</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>アドレスが保存できませんでした。</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>ユーザーは追加されました。このユーザーは少なくとも一つの組織に所属させる必要があります。</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>新規作成</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>このフィールドIDのフィールドが見つかりません。</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>このフィールドのラベルが見つかりません。</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>管理者権限が必要です。</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>言語エディタ</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>言語</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ラベルID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>ラベル名</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>値</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>フィールド値</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>ラベル名</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>値</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ラベルID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>ラベルを削除しました。</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ラベルIDが無効です。</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>このフィールドは削除不可です。</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>エクスポート</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>変更結果を反映するには再ログインが必要です。</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>新しい言語の追加</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>言語の削除</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>新しい言語の追加</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>名前</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>言語の追加</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>バックアップ</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>最初へ</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>前へ</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>次へ</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>最後へ</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>ユーザーが話し中（マイク権の与奪をするにはここをクリック）</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>音声オン/オフ</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>システム</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>設定</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>ユーザー:</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>プロフィール編集</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>新しいメッセージ:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>画像アップロード</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>ユーザーのエクスポート</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>すべてのユーザーをエクスポートします。</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>全ユーザーエクスポート</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>ユーザーを組織ごとにエクスポートします:</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>組織別ユーザーのエクスポート</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>ユーザーのインポート</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>インポートファイル(users.xml)の選択</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>インポート</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>XMLファイルにエクスポート 主な用途: - プロジェクトへのコントリビュート - 他のシステムへのインポート - バックアップ - カスタマイズ languagesディレクトリにコピーして、 再インストールした後に反映されます</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>インポートする言語ファイルを選択してください。 ファイル名に関わらず選択したものがインポートされます。</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>インポート - ファイル選択</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>名前を付けて保存</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>名前:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>コメント:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>保存</value>
+  </string>
+  <string id="395" name="record">
+    <value>録画</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>録画ファイル</value>
+  </string>
+  <string id="397" name="record">
+    <value>パブリック/プライベート会議室の録画ファイル</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>入室者数:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>参加者数:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value>会議室リスト</value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>会議室内のユーザー:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>更新</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>この会議室は満員です。</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>詳細表示</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>会議室内のユーザーとチャット:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>会議室:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>会議室にいるユーザー:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>入室時刻:</value>
+  </string>
+  <string id="409" name="record">
+    <value>録画ファイルの再生</value>
+  </string>
+  <string id="410" name="record">
+    <value>長さ:</value>
+  </string>
+  <string id="411" name="record">
+    <value>日付:</value>
+  </string>
+  <string id="412" name="record">
+    <value>再生中です。画面上では何も変更できません。これは録画ファイルです。</value>
+  </string>
+  <string id="413" name="record">
+    <value>録画ファイルの再生</value>
+  </string>
+  <string id="414" name="record">
+    <value>再生 / 一時停止</value>
+  </string>
+  <string id="415" name="record">
+    <value>録画開始</value>
+  </string>
+  <string id="416" name="record">
+    <value>録画停止</value>
+  </string>
+  <string id="417" name="record">
+    <value>録画:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>現在、他の人が録画中です。</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>録画中です。実行ユーザーは:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>録画はキャンセルされ、保存されません。</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>再開</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>このウィンドウを閉じ、録画を再開します</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>線の色</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>色選択</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>線の色変更の有効/無効</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>塗りつぶし</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>塗りつぶし色変更の有効/無効</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>線の太さ</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>閉じる</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>フォントサイズ変更</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>録画ファイルの削除</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>ゲスト</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>作成者:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>名前</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>会議室</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>日付</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>キャンセル</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>開始</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>名前</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>日付</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>チャット記録の削除</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>チャット</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>メッセージ送信</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>顔文字</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>顔文字</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>デバイスの選択</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>音声/映像</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>音声のみ</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>映像のみ</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>音声/映像なし(静止画像)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>このPCから音声も映像も送信されません。代わりにユーザープロフィールの画像が表示されます。 このオプションは、ネットワーク帯域に問題がある場合や、インターネット接続が著しく遅い場合に選択してください。</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>月</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>火</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>水</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>木</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>金</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>土</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>日</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>月曜</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>火曜</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>水曜</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>木曜</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>金曜</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>土曜</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>日曜</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>週番</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>週番号</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>1月</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>2月</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>3月</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>4月</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>5月</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>6月</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>7月</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>8月</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>9月</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>10月</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>11月</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>12月</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>カレンダー</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>定員</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>レイアウト設定の表示</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>横(x) | 縦(y)</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>幅 | 高さ</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>動画画面ブロック</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>司会者ブロック</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>ホワイトボードブロック</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>有効</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>横(x) | 縦(y)</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>幅 | 高さ</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>チャット、ファイル、メンバーブロック</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>有効</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>横(x) | 縦(y)</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>幅 | 高さ</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>司会者は退室しましたので主催者が不在です。司会者になるか他の人が司会者になるのをお待ちください。</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>この会議室には、参加者はいますが司会者がいません。司会者になるか他の人が司会者になるのをお待ちください。</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>$APP_NAME フィードバック</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - 会議参加依頼</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>宛先ユーザー:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>メッセージ:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>会議に参加するには:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>会議室に入室するにはここをクリックしてください。</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>リンクが動作しない場合、ブラウザに下記URLをコピー&amp;ペーストしてください。:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME サインアップ</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>あなたの情報:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>ログイン名:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>パスワード:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>メールアドレス:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-チーム</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME サインアップ</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - パスワードリセット</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>新しいパスワードを入力するにはこのリンクをクリックしてください:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>新しいパスワードを入力するにはここをクリックしてください。</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>リンクが動作しない場合、ブラウザにコピー&amp;ペーストしてください。:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME パスワードリセット</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>正しいフォーマットで日付を入力してください。（例）24.12.2001 (日.月.年)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>正しいメールアドレスを入力してください。(例) name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>実数を入力してください。(例) 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>整数を入力してください。(例) 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>正しい電話番号を入力してください。(例) ++81 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>正しい時刻を入力してください。(例)12:23 (時:分)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>パスワード保護する</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>パスワード</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>利用期間</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>エンドレス</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>期間指定</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>ワンタイム</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>開始:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>終了:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>$APP_NAME 会議参加依頼</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>この招待コードで利用可能な招待はありません。</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>その招待はすでに使われています。このタイプの招待は再利用ができません。</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>この招待コードは無効です。</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>パスワード:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>パスワードチェック</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>パスワードが間違っています。</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>ブラウザ</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>音声/ビデオの同期処理</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>ログインには成功しましたが、セッションの取得に失敗しました。新しいセッションを取得するために再度ログインしてください。</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>このセッションでは操作できません。SOAP Gatewayはアドミン権限が必要です。</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>このセッションはもう有効ではありません。アプリケーションにアクセスする前にSOAP-Gatewayを呼び出したか、使っているセッションIDが正しくないようです。</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>この機能はベータ版です</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x軸</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y軸</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>幅</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>高さ</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>透過率変更</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>ブラウザ開く</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>ブラウザ閉じる</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>サーバへの接続が切断されました。アプリケーションの再ロードを行うか、またはネットワーク接続を確認してください。</value>
+  </string>
+  <string id="557" name="557">
+    <value>ポインタ</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>同期しています</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>ユーザーを同期しています。しばらくお待ちください。</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;SVGとしてダウンロード&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;PNGとしてダウンロード&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;JPGとしてダウンロード&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;PDFとしてダウンロード&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;TIFとしてダウンロード&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>リマインダ:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>カテゴリ:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>繰り返し:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>無し</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>場所:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>開始</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>終了</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>タイトル:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>備考:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>参加者</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>毎日</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>毎月</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>毎年</value>
+  </string>
+  <string id="578" name="alert">
+    <value>開始時刻は終了時刻よりも前でなければなりません。</value>
+  </string>
+  <string id="579" name="alert">
+    <value>タイトルを入力してください!</value>
+  </string>
+  <string id="580" name="580">
+    <value>右から左方向へ書く言語</value>
+  </string>
+  <string id="581" name="581">
+    <value>右から左方向へ書く言語の場合</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>ダッシュボード</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>録画済みのミーティング/イベントを視聴する</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>ミーティング - 4名（最大16名）までの会議&lt;br/&gt;参加者全員が音声+ビデオを利用できます</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>イベント - 最大200名までの会議&lt;br/&gt;司会者だけが音声/ビデオを利用できます</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>ユーザー、会議室、組織を作成する&lt;br/&gt; + 構成を変更する</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>この会議室に入室中のユーザー</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>ログイン</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>ドキュメントをロードしています。全クライアントの同期が完了するまでしばらくお待ちください。</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>アップロード完了。ドキュメントを変換しています...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>アップロードを開始する</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>アップロード/インポートを行います。ローカル・ディスク上のファイルを選択してください。</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>キャンセル</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>ファイルを選択する</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>接続</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>値</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>ストリームID</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>ログイン</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>接続開始時刻</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>会議室 / スコープ</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>ユーザー追放</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>ユーザーを追放</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>本当にこのユーザーを追い出してよろしいですか?&lt;br/&gt; 追い出したとしても、ユーザーは単にこの会議室から追い出されるだけです。ユーザーは、再度ログインすることができます。</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>管理者または司会者によって、セッションが切断されました。</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>電話</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>会議室の司会進行権限</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>ホワイトボードの利用可否</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>音声/ビデオを開始（再開）する、またはデバイス設定を変更する</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>ホワイトボードの利用を許可する</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>ホワイトボードの利用を禁止する</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>ユーザー</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>ファイル</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>ホワイトボード</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>チャット</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>あなたのアカウントは複数の組織に所属しています。このセッションで使用する組織を選択してください。</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>会議室は現在満室です。間を置いて再入室してください。</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>会議室タイプ</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>会議室</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>サーバ時刻</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - リマインダ</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>メッセージ送信者:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>メッセージ:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>ミーティングに参加するには、このリンクをクリックしてください:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>入室するにはこのリンクをクリックしてください</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>リンクが機能しない場合は、下記URLをブラウザにコピー・ペーストしてください:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>内部ユーザー検索</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>外部ユーザー</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>名</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>姓</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>メール・アドレス</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>ログアウトの確認</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>ログアウトしてよろしいですか?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>アクション</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>デモ・ルーム</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>デモ時間</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>この会議室は、デモ用です。この警告を非表示にするためには、個人使用向けにプライベート会議室を用意するか、新たにミーティング・サーバーを設置する必要があります。自動的に退室します:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>司会権保持者が仕切る</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>司会者が入室するまでしばらくお待ちください。司会者は本会議室の管理者/作成者/講師になります。</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>新規画面共有</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>新着の画面共有があります。送信者：</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>共有を開始する</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>新規ミーティングを追加する</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>ミーティング・ルーム</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>イベント・ルーム</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>管理</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>ユーザー管理</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>会議室管理</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>このユーザーを所属組織の司会者に設定してよろしいですか？</value>
+  </string>
+  <string id="654" name="error message">
+    <value>所属組織を指定してください。</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>組織 - 司会者</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>このユーザーを所属組織から除外してよろしいですか？</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>このユーザーは司会者です</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>このユーザーは司会者ではありません</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>このユーザーを所属組織の司会者から除外してよろしいですか？</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>所属組織内にユーザーまたは会議室を追加・削除する</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>削除してよろしいですか？</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>このユーザーをあなたの所属組織から除外してよろしいですか？この操作は、ユーザーを所属する組織から除外するだけです。このユーザーをシステムから削除するためには、管理者パネルにログインする必要があります。</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>あなた自身を削除することはできません!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>管理者でなければ実行できません!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>このIDに紐付くセッションがありませんでした。</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>このユーザーは管理者、または司会者アカウントです。このアカウントは、管理者パネル上でしか変更できません。</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>登録を完了するためには、下記のリンクをクリックしてください。あるいは下記URLをブラウザにコピー・ペーストしてください。</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>メールを確認するにはここをクリックしてください</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>このハッシュは無効です</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>ユーザーは既に有効化されています!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>アカウントの有効化が完了しました。</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>ログインしてください</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>アカウントが有効化されていません。アカウント登録時に受信したメール中のリンクをクリックしてアカウントを有効化してください。</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>サインアップが完了しました。登録メールアドレスに対して確認コードを送付しましたので、メール受信箱をご確認ください。</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>司会者権限を剥奪する</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>司会者権限を付与する</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>ユーザー</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>ホワイトボード・アクセス</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>司会者</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>ホワイトボード使用権限、司会者権限、ビデオ共有権限を付与するユーザーを選択してください。</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>このユーザーは既に司会者権限を有するため、ホワイトボード使用権限を有しています。</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>自分自身から司会者権限を剥奪することはできません。</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>ビデオ共有権限を付与する</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>ビデオ共有権限を剥奪する</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>質問があります</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>ホワイトボードを使いたい</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>ビデオ・音声を共有したい</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>あなたは司会者です</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>ホワイトボードの使用を許可されています</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>ビデオ・音声の共有を許可されました</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>司会者へメッセージを送信</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value></value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>さんが、司会者(話者)権限を要求しています。ユーザー一覧のユーザー名右側にあるステータス・アイコンを使って司会者権限の与奪を行います。</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>さんが、ホワイトボードの使用を要求しています。ユーザー一覧のユーザー名右側にあるステータス・アイコンを使ってホワイトボード使用権限の与奪を行います。</value>
+  </string>
+  <string id="695" name="695">
+    <value>さんが、ビデオ・音声の共有を要求しています。ユーザー一覧のユーザー名右側にあるステータス・アイコンを使ってビデオ共有権限の与奪を行います。</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>司会者が入室するまでしばらくお待ちください。</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>キャンセル</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>保存</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>日</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>月</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>年</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>ファイルをアップロードする</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>フォルダを追加する</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>リフレッシュ</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>ゴミ箱 (アイテムをここにドラッグ&amp;ドロップ)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>私のファイル (ホーム・ドライブ)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>会議室のファイル (パブリック・ドライブ)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>ファイルを追加する</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>フォルダを追加する</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>ファイル/フォルダを消去する</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>名前を編集する</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>新規フォルダ</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>このアイテムを消去してよろしいですか?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>検索</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>検索</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>ドキュメントを開く</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>全てのファイルを表示する (ツリー・ビュー)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>ドキュメントを閉じる</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>ファイルを消去する</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>ホワイトボードに対する書き込みが許可されていません。書き込みをするには、司会者になるか、書き込み権限を付与してもらう必要があります。司会者に権限付与を依頼してください。</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>ドキュメント・プロパティ</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>クライアントを開始 (外部プログラム使用)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>クライアントを開始 (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>ユーザーがデスクトップ共有を提供しています。画面を閲覧しますか？</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>現在、あなたのデスクトップは共有されています。デスクトップ共有を停止する際は、共有クライアント上の停止ボタンを押してください。</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>セッション共有</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>あなたのデスクトップは既に共有されています!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>デスクトップ・ビューア</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>終了</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>デスクトップ共有</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>開始をクリックして画面を共有します</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>共有を開始する</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>共有を停止する</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>共有する画面領域を選択してください:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>幅を変更する</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>画面共有提供者がセッションを終了しました。</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>高さを変更する</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X オフセット</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y オフセット</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>幅:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>高さ:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>サーバによって接続が切断されました。</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>キャンセル</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>外部ビューアを開始</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>ビューアを完全に閉じてしまうと、本セッション中はビューアを再開することができません。</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>ビューア終了確認</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>画面を共有する</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>録画する</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>並行ブラウジング</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Windows版Firefoxでは並行ブラウジング機能をクリアに表示することができません。他のブラウザをご利用ください。</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>前へ</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>次へ</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>リロード</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>ホーム</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>ロード</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>このウェブサイトをあなたのデフォルト・ウェブサイトに設定する。</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>設定のテスト</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>入室する前に、マイクとカメラの設定を確認してください。まず録画・録音を数秒間実施してください。続いてそれを再生し、録画・録音状態が適正であることをご確認ください。</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>以降このテスト画面を表示しない</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>キャンセル</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>会議を開始する</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>以降表示しない</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>録画</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>再生</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>音声・画像を送信する予定が無い場合はテストを省略することができます。音声・画像を利用しない参加者も、ホワイトボード、デスクトップ共有、チャットを利用することは可能です。</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>停止</value>
+  </string>
+  <string id="767" name="767">
+    <value>レベル・メータ</value>
+  </string>
+  <string id="768" name="start view">
+    <value>「開始」を押してください</value>
+  </string>
+  <string id="769" name="start view">
+    <value>会議を開始する</value>
+  </string>
+  <string id="770" name="start view">
+    <value>イベントを開始する</value>
+  </string>
+  <string id="771" name="start view">
+    <value>会議室を選択する</value>
+  </string>
+  <string id="772" name="start view">
+    <value>設定を確認する</value>
+  </string>
+  <string id="773" name="start view">
+    <value>会議を開始する</value>
+  </string>
+  <string id="774" name="start view">
+    <value>使用方法:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>録画/録音品質のテスト</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>入室の際に音声/ビデオのテスト画面を表示しない</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>パブリック会議室</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>パブリック会議室はだれでもアクセスすることができます。</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>プライベート会議室</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>プライベート会議室は、同じ組織に所属する参加者のみ入室することができます。</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>私の会議室</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>このセクションの会議室は個人使用（または少人数使用）目的です。開始･終了時刻を指定して作成します。会議室が有効である期間、カレンダーに表示されます。</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>司会者以外の方は実行できません。</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>司会者権限を許可</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>ホワイトボードへのアクセスを許可</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>カメラ・マイクへのアクセスを許可</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>このセッションは既に使用済です</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>開始</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>終了</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>終了してよろしいですか? 終了しても、アップロード済みのドキュメント、ホワイトボード、チャット内容は消去されずに残ることにご注意ください。</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>終了確認</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>会議室</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>会議室を選択してください。</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>未保存のイベントがあります。保存するか、削除してください。</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>最低一人以上の参加者を選択してください!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>このイベントを削除してよろしいですか?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>警告</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>イベントを追加する</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>日表示</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>週表示</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>月表示</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>概要</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>参加者</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME (オープン・ミーティングス) ウェブ会議プラットホーム</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>会議を予約する</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>イベントをカレンダーに追加して会議を設定します。イベントのそれぞれについて会議室が自動生成されます。</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>お困りですか?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>大人数向け会議室</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>検索</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>追加</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>ユーザーが選択されていません。一覧から選択して「追加」を押してください。</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>参加者を追加</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>保存</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>削除</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>イベント詳細</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>デフォルト司会者</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>特権</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>姓名</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Eメール</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>デフォルト司会者を追加</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>は特権司会者です</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>この項目が選択されている場合、司会進行権保持者(または管理者)は入室によって自動的に司会者権限を与えられます。会議の際、特定のユーザーを司会者に指定したい場合は、この項目を選択しないでください。</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>特別司会進行権保持者は、入室によって自動的に司会者権限を与えられます(他のユーザーがこのユーザーから司会者権限を奪い取ることはできません)。</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>このユーザーに特別司会進行権を付与する</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>このユーザーの特別司会進行権を剥奪する</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>組織を会議室に登録すると、登録された組織に所属するユーザーのみがその会議室に入室することができます。(「公開」が選択されていない場合(つまり非公開の場合)のみ適用)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>司会進行</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>制限</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>組織</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>よろしいですか?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>選択された項目を削除してよろしいですか？変更した内容は、保存する必要があります。続いて保存ボタンを押してください。</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>ユーザーが選択されていません。追加するユーザーを選択してください。</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>司会者を追加する</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>このユーザーに特別司会進行権を付与しますか？特別司会進行権保持者は、会議室の司会者になることができます(他のユーザーは特別司会進行権保持者から司会権限を奪い取ることはできません)。変更した内容は、保存する必要があります。続いて保存ボタンを押してください。</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>このユーザーの特別司会進行権を剥奪しますか？変更した内容は、保存する必要があります。続いて保存ボタンを押してください。</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>この参加者は、特別司会進行権を付与されています。あなたは、特別司会進行権保持者から当該権利を剥奪することはできません。</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>このファイル/フォルダを削除してよろしいですか？</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>ファイル/フォルダを削除しますか？</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>プロパティ</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>ビューア上でマウス・ポインタを表示する</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>SIPアプレットと音声を共有する</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>SIPと音声を、Flashと画像を共有する</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>画面サイズに合わせる</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>デスクトップを表示する</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>ユーザー「</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>」さんがデスクトップ共有を要求してます。表示しますか?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>閉じる</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>ズーム</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>画面が共有ユーザーによって閉じられました!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>一時停止</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>新規画面共有</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>最小化</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>最大化</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>ビデオ</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>タイムライン</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>私の録画</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>パブリック録画</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>備考</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>名称</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>全長</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>日時</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>作成者</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>再生</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>メイン - ビデオ</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>録画</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>デスクトップの共有だけでなく録画もできます。デスクトップを公開するためには「共有を開始する」ボタンを押してください。録画をするためには「録画を開始する」をクリックしてください。</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>録画を開始する</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>録画を停止する</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>FLV形式でダウンロードする</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>会議室</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>再生</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>停止</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>共有を停止する</value>
+  </string>
+  <string id="879" name="room config">
+    <value>質疑を許可する</value>
+  </string>
+  <string id="880" name="room config">
+    <value>質疑を許可すると、「質問があります」ボタンが表示されます。</value>
+  </string>
+  <string id="881" name="room config">
+    <value>権限</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>AVI形式でダウンロードする</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw スクリーン・ビデオ</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>音声のみ</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>録画視聴の準備がまだ整っていません。数分後に再実行してください。</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>ログ:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>作成者メッセージ</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIPアプレットの準備が完了していません。</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP アカウント設定</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>ユーザー毎にSIPを設定します。</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP ユーザー</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip パスワード</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip 認証ID</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>SIPゲートウェイにログインできませんでした。SIPプロバイダの認証情報、および各ユーザーのSIPアカウント情報を確認してください。管理者でログインして、構成を確認してください。(一般ユーザーはブロックされます)</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>SIPゲートウェイにログインできませんでした。サービス管理者にお問い合わせください。</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>SIPゲートウェイにログインしています ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>SIPゲートウェイにログインしています ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>ログを表示する</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>録画終了時の変換処理のログ</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-アプレット・メッセージ</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>SIPアプレットの準備が完了していません。アプレットを承認してOKボタンを押してください。</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>司会者になる</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>予定の変更を保存する</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>予定が変更されました。変更を保存しますか？</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>他の録画を見るためには、$APP_NAMEにログインする必要があります。</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>ビデオ表示するユーザーを選択</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>あなたはこのインタビューの司会者です。あなたは、話者を選択したり、録画・録音の開始・停止をすることができます。</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>録画・録音を開始</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>録画・録音を停止</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>インタビュー録画は既に開始されています。</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>インタビュー録画は既に停止しているか、まだ開始されていません。</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>インタビュー録画は既に開始されています。!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>キャンセル</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>インタビュー終了時の変換処理には、インタビュー１分あたり５分を要します。現在の処理の進捗は:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>SIPデータを生成するためには、パスワードを再入力してください</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>SIPデータを再生成する</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>このファイル/フォルダを、それ自身のサブフォルダに移動することはできません。</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>ホーム・ドライブ使用量</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>パブリック・ドライブ使用量</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>各ユーザーにライセンスを付与する際、使用期限を設定するか、最大使用量制限(分で指定)を設定することができます。</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>ライセンスを検証する</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>使い放題コース</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>有効期限</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>残り秒数</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>合計時間</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>ライセンスの有効期限が切れました。新たにライセンスを購入してください。(分単位ライセンス、または「使い放題コース」ライセンスがあります)</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>購入する</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>ユーザー・ライセンス情報</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>情報</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>閉じる</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>ライセンスの有効期限が切れました。新たにライセンスを購入してください。(分単位ライセンス、または「使い放題コース」ライセンスがあります)</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>ライセンス設定</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>分単位でウェブ会議の利用権を購入することが出来ます。&lt;br/&gt;&lt;br/&gt; または、3～12ヶ月の定額利用権を購入することが出来ます。&lt;br/&gt;&lt;br/&gt;招待状（会議室に直接入室可能なリンク）の送付、および外部の参加者をともなう、カレンダーからの会議室作成機能は、定額利用権でのみ提供されます。</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>60分利用権 9.99€（分当り16セント）を購入</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>5時間利用権 19.99€（分当り6セント）を購入</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>3ヶ月利用権 29.99€（月当り9.99セント）を購入</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>6ヶ月利用権 39.99€（月当り6.66セント）を購入</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>分単位利用権</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>定額利用権</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>無制限ライセンス</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>ライセンス有効期限：</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>分単位利用権を購入済みです。残り：</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>新しいライセンスを購入してください。</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>専用ミーティング・サーバーをお考えですか？</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>$APP_NAMEのインストール、あるいはMoodle／SugraCRM、ウェブサイトやイントラネットとの統合をお考えなら、Prizingsへご相談を！インストール当り500ユーロから承ります。</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>メッセージを送信</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>返信先：</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>メッセージ：</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>送信</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Prizings コンタクト先はこちら。</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>クレジットカード詳細</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>名</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>姓</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>クレジットカードタイプ</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISAカード</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>マスターカード</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>ディスカバーカード</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>アメリカン・エクスプレス</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>クレジットカード番号</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>有効期限</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>カード確認番号</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>請求先</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>住所</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>市区町村</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>国</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>州 (米国のみ)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>郵便番号</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>数量</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>送信</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>ステップ１： $APP_NAME - 支払いフォーム</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>Eメール</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>送信して購入</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>クリックして購入</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>ステップ３：$APP_NAME 支払い - 内容をご確認ください</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>お名前</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>$APP_NAMEのご利用ありがとうございました!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>分</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>月</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>ユーロ</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>状態</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>納品書</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>このメール・アドレスは既に他のユーザーに使用されています。</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP設定</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>会議番号、およびPINは、OpenXG RPCゲートウェイ経由で自動生成されます。</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP番号</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>現在表示中のスライド内のオブジェクトだけを消去!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>ステータス・バーに入力されたURLのみが参加者に送付されます!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>チーム・ルームの作成 [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>作成するチーム・ルームに所属させるユーザーを選択してください。</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>メンバーを指定して、新しい小会議室 (チーム・ルーム) に移動することができます。指定されたメンバーは、強制的にチーム・ルームに移動させられるか、あるいは、通知メッセージが送信されます。また、チーム・ルーム室長(管理者)には、加えて、管理下のチーム・ルーム一覧が表示され、室長は必要に応じて各チーム・ルームの応援に駆けつけることができます。</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>ユーザー名</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>ログイン</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>ユーザー一覧 チーム・ルーム:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>チーム・ルームを作成する</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>キャンセル</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>最低ひとり以上のユーザーをチームに登録する必要があります。</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>ユーザーをチームに追加する</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>ユーザーをチームから削除する</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>ユーザーは、チーム・ルーム室長です。(室長は、チーム・ルームの管理者です。メンバーはいつでも室長をチーム・ルームに呼び出すことができます)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>ルーム・タイプ</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>「メンバーを新規チーム・ルームに強制移動する」を選択した場合、選択されたメンバーはチーム・ルームに自動的に移動します。強制移動を選択しなかった場合、各メンバーには通知メッセージが送付されます。通知メッセージには、チーム・ルームに&lt;i&gt;移動することができる&lt;i&gt;ボタンがあり、それを押すことによってチーム・ルームに移動することができます。</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>チーム・ルーム管理</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>あなたは、あなたが管理するチーム・ルーム(あなたが室長のチーム・ルーム)の間を自由に行き来できます。管理下のチーム・メンバーは、あなたにいつでも応援要請メッセージを送信することができます。また、あなたは管理するチーム・ルームをいつでも閉鎖することもできます。</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>メンバーを新規チーム・ルームに強制移動する</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>チーム名</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>作成日時</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>追加するメンバー</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>メンバーを追加するには「＋」を、削除するには「－」を押してください!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) チーム・ルームの設定</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) チーム・メンバーの追加</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>チーム・ルーム名</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>チーム・ルーム</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>会議室変更</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>このチーム・ルームに移動する</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>チーム・ルームを終了し、全メンバーをログアウトさせる</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>新規チーム・ルーム</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>新規チーム・ルームがあります。</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>チーム・ルームに移動</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>チーム・ルーム・アクション</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>再度このウィンドウを開く場合は、「アクション」から行ってください。</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>チーム・ルーム室長にメッセージを送信する</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>新規チーム・ルーム</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>新規チーム・ルームがあります。あなたは、そのチーム・ルームに入室することができます。チーム・ルームは、言わば「ワークショップ・グループ」のようなものです。あなたのチーム・ルームには、「私の会議室」からも入室できます。</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>チーム・ルームに移動</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>作成者:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>チーム・ルーム名:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>このウィンドウは、あなたの退室後も開いたままになります!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>チーム・ルームのメンバー</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) あなたが移動することができる、チーム・ルーム</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>チーム・ルーム室長にメッセージを送信します。例えば、討論中の件で何か質問したいことができ、室長に応援を依頼したいときなど。</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>送信</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) このチーム・ルームに参加要請したメンバー</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>さんは、チーム・ルーム室長です。</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>参加要請したメンバー全員が揃いました。</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>チーム・ルーム室長がいません!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>メッセージを入力してください。</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>私たちのチームが問題を抱えているので、応援をお願いします!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>チームが、あなたの応援を要請しています。</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>チーム・ルームから応援要請</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>メッセージ:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>送信者:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>あなたは現在、どのチーム・ルームにも入室していませんが、過去に入室したことのあるチーム・ルームに入室することができます。</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>システムをバックアップします。バックアップには、ユーザーが生成した、あらゆるデータが含まれます。サーバ設定、および各言語ラベルはバックアップされません。システムをより新しいバージョンにアップデートする場合は、&lt;br&gt;(1)まずバックアップ・ファイルにエクスポートし、&lt;br&gt;(2)新規に作成したデータベース上にアプリケーションを再インストールし、&lt;br&gt;(3)バックアップ・ファイルをインポート、してください。バックアップ・ファイルのインポートは、新システム上で最初に行う必要があります。</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>システム･バックアップ</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>ユーザーに対し画面共有/録画を許可する</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>ユーザーに対し画面共有/録画を拒否する</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>このユーザーは司会者であるため全ての権限を与えられています!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>さんが画面の共有/録画を要求しています。</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>あなたは画面の共有/録画をする権限を与えられています</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>画面の共有/録画を行う権限を適用する。</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>画面/録画の共有を行うことを許可/拒否する</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>サウンドをオフ</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>サウンドをオン</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>音声のみの会議室</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>このフラッグをオンにすると、ユーザーは会議室で音声のみ使用できるようになります(ビデオ無し)。これにより、ネットワーク帯域を節約することができます。</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>リモート制御を許可 (デスクトップ共有中)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>リモート制御を拒否 (デスクトップ共有中)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>リモート制御権限を適用する (デスクトップ共有中)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>あなたは、リモート画面の制御を許可されています(デスクトップ共有時)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>さんがリモート画面の制御権限を要求しています。</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>ユーザーは司会者です。司会者はすべてのアクションを行うことができます! [リモート・デスクトップ制御]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>デスクトップ共有中のリモート・コントロールを許可/拒否する</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) あなたのPCからリモートPCへ: あなたのPCのクリップボードからリモートPC画面にテキストをコピーするには、画面をクリックし続いてテキスト上で右クリックしてメニューを表示して「挿入」を選択します。&lt;br/&gt;&lt;br/&gt;2) リモートPCからあなたのPCへ: リモートPCからあなたのPCのクリップボードにテキストをコピーするには、リモート画面上のテキスト上でテキストをハイライト選択し、リモート画面上で右クリックしてメニューを表示し「&lt;i&gt;ハイライトされたテキストをコピー&amp;lt;/i&gt;」を選択します。</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>あなたのPCとリモートPCの間で相互にテキストのコピー&amp;ペーストを行うには</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>ハイライトされたテキストをコピー</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>コピー&amp;ペースト手順</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>画面共有の品質:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>超高品質</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>高品質</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>中品質</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>低品質</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>キーボード:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>ウェビナーを閉じる</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>ウェビナーは既に終了しています。</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>会議室を閉鎖する</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>終了URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>閉鎖設定</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>会議室を閉鎖すると、ユーザーは終了URLにリダイレクトされます。</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>LDAP</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>識別名</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>設定ファイル</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>LDAP設定</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>識別名</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>有効化</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>登録日時</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>登録者</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>更新日時</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>更新者</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>設定ファイルは、フォルダ 'webapps/openmeetings/conf' に置かれている必要があります。前もって手動アップロードしておいてください。設定ファイルに対する変更は逐次オンライン反映されます。</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>設定ファイル名</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>「ドメインをユーザー名に付加する」を選択すると、指定したドメインが、ログイン画面で指定したログイン名に自動的に付加されます。もしLDAPに、ドメイン名付きのログイン名が保存されている場合に利用してください。例: ログイン名「hans」、ドメイン名「localhost.com」の場合、「hans@localhost.com」でLDAP認証を行います。</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>ドメインをユーザー名に付加する</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>ドメイン</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>挿入</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>ハイライトされたテキストをコピー</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>リモートPCのクリップボード・テキスト</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>リモートPCのクリップボードを表示する</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>次回は表示しない</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>テキストをここにコピーする ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>リモート画面との間でコピー&amp;ペーストするためには、リモート制御(またはモデーレーション)権限が必要です。</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>デフォルト設定を編集する ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>リモート・コントロールでコピー&amp;ペーストについての情報ボックスを表示しない</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>保存</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>削除</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>キャンセル</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>ユーザーを会議室に招待する</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>会議室を選択してください。参加依頼を受けるユーザーには、あなたの名前、メッセージとともに会議室へのリンクが発行されます。</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>ログイン日時:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>参加依頼の送信後に入室する</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>参加を依頼する</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>メッセージ</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>会議への参加を依頼されています。依頼者＝</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>参加依頼メッセージ</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>参加依頼を送信する</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>さんは、あなたからの参加依頼をdid &lt;b&gt;拒否&lt;/b&gt;しました!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>承認</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>拒否</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>タイムゾーン</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>イベント詳細</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>名称</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>概要</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>作成者</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>タイムゾーン設定を勧奨</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>次回ログイン時にタイムゾーン設定を行うことを進めるメッセージを表示する場合にチェックを入れてください。</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>ユーザー・プロフィールのタイムゾーン設定を確認してください。</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>$APP_NAME会議が設定されました:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>詳細:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>開始時刻:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>終了時刻:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>$APP_NAME会議が更新されました:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>主催者:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>$APP_NAME会議がキャンセルされました:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME会議リマインダ:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>コミュニティ設定</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>コンタクト・データを全員に公開する</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>あなたのお勧めや、興味あるものを指定します。これらはパートナーを検索する際に利用されます。複数項目を指定する場合は、各項目をコンマで区切って指定してください。(例: 医療サービス, 健康保険, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>私のお勧め</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>私の関心</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>姓名</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>タイムゾーン</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>興味・関心</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>コンタクト情報</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>コンタクト・データをコンタクトにのみ公開する</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>コンタクト・データを非公開にする</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>プロフィール</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>設定</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>ユーザー検索</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>他のユーザーが見るのと同じ表示形態であなたのプロフィールを表示します</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>プロフィールを設定します。関心事項を設定して他のユーザーが検索できるようにできます</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>ユーザーを検索して、あなたのネットワークを広げましょう</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>検索</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>お勧め</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>ユーザー名</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>検索テキスト</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>姓名</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>タイムゾーン</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>お勧め</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>関心</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>検索結果</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>アクション</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>コンタクトを追加する</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>メッセージを送信する</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>コンタクトとメッセージ</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>承認待ちコンタクト</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>承認</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>拒否</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>こちらは$APP_NAMEです。</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>さんが、あたなをコンタクトに加えることを希望しています。</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>$APP_NAMEのコンタクト要求を確認するか、承認/拒否のリンクのいずれかをクリックしてください。</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>このユーザーは既にコンタクト・リストに登録済みか、未回答のコンタクト追加要請メッセージを受信済みです。</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>コンタクト・リスト</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>コンタクトとメッセージを編集したり,&lt;br/&gt; 承認待ちコンタクトの処理を行います</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>さんが、あなたをコンタクトとして承認しました!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>チャット･ログを表示/コピーする</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>チャット・ログ</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>送信者</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>件名</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>送信</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>メッセージ</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>新規メール</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>コンタクトに送信するメッセージを新規に作成します</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>新規メッセージ</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>宛先:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>件名:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>各ユーザーの画面解像度に合うようにホワイトボードとドキュメントのサイズを変更する。</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>ユーザーを追い出す</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>あなた自身を会議室から追い出すことはできません! 退出する場合は、終了ボタンをクリックするかブラウザを閉じてください!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>このユーザーを会議室から切断してよろしいですか?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>アクションの確認 ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>特権司会者を会議室から追い出すことはできません!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>会議室を予約する</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>開始</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>終了</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>ミーティングをスケジュールします。全てのミーティング参加予定者のカレンダーにイベントが追加されます。</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>受信箱</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>送信</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>ゴミ箱</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>あなた自身をコンタクトに加えることはできません。</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>ユーザーは既に拒否されています!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>ユーザーは既に承認されています!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>コンタクト・ハッシュが不正です!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>コンタクト・リストに追加されました!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>ユーザーは拒否されました。承認待ちリストからも削除されました。</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>該当するコンタクトがありません!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>コンタクトを削除してよろしいですか?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>コンタクト削除の確認</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>コンタクトを一覧から削除する</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>ユーザー・プロフィール</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>ユーザー・プロフィールを表示する</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>メッセージ</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>検索</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>全てを選択</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>選択を解除</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>未読を選択</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>既読を選択</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>フォルダに移動 ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>新規フォルダを追加 ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>削除</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>削除したメールは、ゴミ箱の中にまだ残されています!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>未読にする</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>既読にする</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>回答</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>全員に回答</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>フォワード</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>アクション ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>プライベート・メッセージを送信する</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>選択がありません</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>受信箱に移動する</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>削除する (最終)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>新規フォルダ</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>フォルダを追加してメッセージを整理します</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>新規フォルダ</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>追加</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>フォルダを削除する</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>フォルダを削除できません。フォルダ内にメッセージが存在します! あらかじめメッセージを削除するか、他のフォルダに移動してください。</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>姓名を編集する</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>フォルダを削除してよろしいですか? 削除されたフォルダは復元できないことにご注意ください。</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>承認依頼が送信されました。承認されたユーザーのみがコンタクト・リストに追加されます。</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>メッセージ</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>ユーザーは個人コンタクト・データを共有していません。</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>ユーザーは個人コンタクト・データをコンタクトとのみ共有しています。</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>住所 &amp; 電話番号</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>参加依頼コードが無効です。参加依頼コードは一定期間のみ有効です。</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>このイベントは他のユーザーのカレンダーにリンクしています。イベントを更新すると、他のユーザーのカレンダーにも更新が反映されます。イベントを更新してよろしいですか?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>更新の確認</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>コンタクトに私のカレンダーを公開する (書き込みはできません)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>カレンダーを共有しない</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>コンタクトのカレンダー</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>コンタクトのカレンダーを見るためには、コンタクトの承認が必要です。</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>他のユーザーのカレンダーからイベントを削除/保存することはできません!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>カレンダーを再表示する!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>このイベントは他のユーザーのカレンダーにリンクしています。イベントを削除すると、他のユーザーのカレンダーからも削除されます。イベントを削除してよろしいですか?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>アクションの確認</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>入室</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>会議室にアクセスする</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>プライベート・メッセージ付き会議室/イベントがあります。</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>あらかじめイベントを保存してください!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>指定された会議室が見つかりません。イベントおよび会議室は既に削除されています!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>ニックネームを選択してください</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>名</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>姓</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Eメール</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>姓・名ともに4文字以上の長さが必要です。</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Eメール・アドレスが無効です!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Facebookアカウントでログインする</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>登録日</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Facebookアカウントでログインしました。プロフィールに適切なEメール・アドレスを設定してください。さもないと、参加依頼やプライベート・メッセージを受信することができません。</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>メッセージ</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>プロフィール更新についてのメッセージを今後表示しない</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>詳細表示オプション ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>新規プライベート・メッセージ:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>メッセージ全体を見るにはここをクリックしてください ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>再生</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>会議室とチャット</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>私の会議室</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>私の会議室 (ユーザー数 1-16 向け)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>ウェビナー (ユーザー数 1-120 向け)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>会議室の管理者(室長)</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>パスワードを入力してください</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>ユーザー・レベル、司会者、または管理者権限を有するアカウントが必要です。</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>ウェブ・サービス (SOAPでのみ適用)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>ホワイトボードに直接ロードする</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>ホワイトボードを削除してよろしいですか？ 注意：削除したホワイトボードは元に戻せません!!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>ホワイトボードにロードする</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>録画する必要がある場合は、録画を開始してください。だれかが録画を開始しない限り、会議の録画はされません。</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>録画を開始</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>矢印</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>円</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>線</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>四角形</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>三角形</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>テキスト・注釈</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>クリップアート</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>フリーライン</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>選択・移動</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>図形描画</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>切り取り・移動</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>ズーム・イン/アウト</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>印刷</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>元に戻す</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>ゴミ箱</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>グリッド線を表示</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>ファイル共有</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>図形を選択</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>クリップアートを選択</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>コピー</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>切り取り</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>貼り付け</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>削除</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>ホワイトボードの内容を全て削除してよろしいですか？</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>ホワイトボードに直接ロードする</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>参加者</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>参加者マネージャ</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>在席</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>リモートコントロール</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>追い出す</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>チャット</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>参加者を招待する</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>メール使用</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>ユーザーは司会者です</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>ユーザーはウェブカメラをオンラインにしました</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>塗りつぶしを無効にする</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>塗りつぶしを有効にする</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>グリッドに位置を合わせる</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>録画を許可する</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>録画開始まで待機する</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>トップバーを隠す</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>録画を再生する</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>表示中のスライドの内容を削除してよろしいですか？</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>ユーザー権限を許可する</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>メッセージを拒否して削除する</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>私</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>アクティビティ/アクション</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>ホワイトボードを削除する</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>ホワイトボードを削除したり、書き込んだりするためには権限または許可が必要です。</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>許可されていません</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>さんは会議室から退室しました</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>数式アイコン</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>カテゴリ無し</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>カラー・スタイル</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>回線品質</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>ドメイン</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>プロジェクト</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>レッドオレンジ</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>海緑色</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>暗青灰色</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>青灰色</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>ゴールデンレッド</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>銀白色</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>ユーザー定義</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>最高</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>アップロード</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>中位</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>マイクを無効にする</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>マイクを有効にする</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>他の参加者のマイクを無効にして私のマイクだけを有効にする (F12)</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>あなたのマイクは、司会者によって無効化されています。あなた自身の手でマイクを有効化することはできません。</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>あなたのマイクを無効にしますか？</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>あなたのマイクを無効にしてよろしいですか？無効にすると、他の参加者はだれも、あなたの音声を聞くことができなくなります。</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>消音してよろしいですか？</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>この参加者のマイクからの音声を消音してよろしいですか？この操作は、あなたの端末上で消音するだけであって、他の参加者は指定のマイクからの音声を引き続き聞くことができます。司会者だけが、全参加者のマイクの有効化・無効化を行うことができます。</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>マイクを無効にしてよろしいですか？</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>この参加者のマイクを無効化してよろしいですか？他の参加者はだれも、この参加者の音声を聞くことができなくなります。</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>あなたのマイクは有効です。ここをクリックして、司会者にマイクの無効化を依頼することができます。</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>あなたのマイクは無効です。ここをクリックして、司会者にマイクの有効化を依頼することができます。</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>は、マイクの無効化を依頼します。</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>は、マイクの有効化を依頼します。</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>さんが、参加者のマイクの有効化を依頼しています。</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>さんが、参加者のマイクの無効化を依頼しています。</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>マイクを有効化する</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>マイクを無効化する</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>この参加者は、司会者によってマイクを無効にされています。あなたの手で有効化することはできません。</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>あなたのマイクを無効化します</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>あなたのマイクを有効化します</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>マイクを無効にする</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>マイクを有効にする</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>マイクを無効にする</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>マイクを有効にする</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>司会者だけが各参加者のマイクの有効・無効を設定できます。あなた自身のマイクを消音したい場合は、あなたのビデオ画面中のマイク・アイコンを使ってください。</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>投票名</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>あなた</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>過去の投票</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>実施中の投票</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>シンプル・チャート</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>パイ・チャート</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>メールアドレスを入力してください</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>新着メッセージ</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>投票を締め切る</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>投票を締め切ってよろしいですか？</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>投票を削除する</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>この投票を削除してよろしいですか？同時に投票結果も削除されます。</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>ISO言語コード</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>単独話者になることを許可・拒否する</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>単独話者になることを許可する</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>単独話者になることを拒否する</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>は、単独話者になることを希望します。</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>さんが、単独話者になることを希望しています。</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>単独話者になることを許可する。</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>カメラ解像度</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>解像度の変更はネットワーク帯域に影響します。高解像度のビデオ画像は、より多くのネットワーク帯域を必要とします。</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>あなたは、あなた自身を、あるいは他の参加者を単独話者にする権限を持っていません。司会者に権限を付与してもらうか、司会者に単独話者の指定を依頼してください。</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>私は、単独話者になることができる権限の付与を依頼します。</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>あなたは、自分自身の手で単独話者になることができます。単独話者になるには、ここをクリックしてください。(または、あなたのビデオ画面でクリック、あるいはF12押下でも可能です)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>マイクは有効です!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>マイクは消音（無効）です</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>チャットを隠す</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>アクティビティを隠す</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>ファイル・エクスプローラを隠す</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>アクション･メニューを隠す</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>画面共有を隠す</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>ホワイトボードを隠す</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>ビデオにマイク状態を表示する</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>レイアウト・オプション</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>新規イベント</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>カレンダー・イベントを保存時にパスワードを設定する場合、パスワードは、参加者に対して送付される会議室リンクに対して設定されます。会議室にパスワードが設定されるわけではありません。したがって、一つのイベントを、異なるパスワードで複数回保存したような場合、参加者は、異なるパスワードの会議室リンクを受け取ることになります。また、一旦送付されたリンクは、古いパスワードの会議室リンクであっても有効のまま残ります。</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>詳細を編集</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>SIPダイアラーを表示</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>発呼</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>コンタクトのカレンダー・イベントを表示する</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>あなたのホーム!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>会議予定を作成する</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>録画を視聴する</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>ウェブ会議を選択・開始する</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>ユーザーと権限を管理する</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>接続を管理する／ユーザーを追い出す</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>ユーザー・グループを管理する</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>会議室を管理する</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>システム設定を管理する</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>画面上のラベルを管理する</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>LDAP/ADS構成を管理する</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>システム・バックアップをエクスポート／インポートする</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>ファイル／フォルダのアップロード／追加／削除／ロードを行うためには、司会者であるか、あるいはホワイトボード描画権限が必要です。</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>テキストを編集</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>教授</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>共有画面公開</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>共有画面を公開開始</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>共有画面を公開終了</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>ホスト</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>公開アプリ</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>公開ID</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>共有画面を左に移動するには、共有画面幅を縮小してください。</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>共有画面を下に移動するには、共有画面高を縮小してください。</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>共有画面の幅を拡大するためには、共有画面を左に移動してください。</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>共有画面の高さを拡大するためには、共有画面を上に移動してください。</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>外部プロバイダー向けストリーミングのための設定を行ってください。</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>画面を公開するには、画面共有を開始してください。</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>録画を開始するには、司会者権限が必要です。</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>単独話者権限がありません。司会者権限または単独話者権限が必要です。</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>ファイルをファイル・エクスプローラにアップロード</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>共有設定画面を開く</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>司会者による許可が必要</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>カメラ／マイクの共有を司会者に要求</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>投票によるフィードバック収集</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>投票結果のチャート表示</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>この会議室に投票にあれば投票する</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>カメラ／マイクを設定する</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>退室する</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>外部参加者をVoIP/SIP経由で招待する</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>この会議室へのリンクをEメールで送信する</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>ホワイトボードを設定する</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>最大アップロード・サイズ</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>ホワイトボードの共有を司会者に要求する</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>プライベート・チャットを開始する</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>すべて</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>自分自身とのプライベート・チャットを開始することは出来ません。</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>指定された参加者とのプライベート・チャットは既に開始されています。</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>このプライベート・チャットを削除してよろしいですか？</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>サーバー</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>クラスター参加済みサーバー</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>サーバー名</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>サーバー・アドレス</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>サーバー詳細</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>SMSを送信</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>公開中。ユーザー：</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>バックアップ／リストア／アップグレードを行なう際にコマンドライン・ツールを利用すると、時間とインターネット・トラフィックを節約することができます: &lt;ol&gt; &lt;li&gt;オープンミーティングスのインストール・ディレクトリに移動する (例：/opt/red5)&lt;/li&gt; &lt;li&gt;オープン・ミーティングスを停止する(例： ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (オープン・ミーティングスの現状バックアップを作成する)&lt;/li&gt; &lt;li&gt;オープン・ミーティングスの最新アーカイブをダウンロードする&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (必要に応じて、現環境を移動しておく)&lt;/li&gt; &lt;li&gt;/opt/red5 にダウンロードしたアーカイブを展開する&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip&lt;br/&gt; (デフォルトのデータベースを使用していない場合は './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass')&lt;/li&gt; &lt;li&gt;オープン・ミーティングスを起動する&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>全ユーザーに供用される会議室</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>現ユーザー・グループに供用される会議室</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>現ユーザーの会議室</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>イベント専用会議室を作成／編集する</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>複数のアドレスを書式に含めることができます: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>ストリーミング音量を調整する</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>マイク音量を調整する</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>チャットを制限</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>メッセージを許可</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>チャット画面をデフォルトで表示</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>ファイル画面をデフォルトで表示</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>最終ピング</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>全スレーブは3秒毎(設定可)にピング信号を送信します。マスターがスレーブを利用するためには、最終ピング値は1分未満である必要があります。</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP ポート</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>ユーザー(SOAP経由)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>パスワード</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>ウェブ・アプリ・パス</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>プロトコル</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>ピング実行中</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>アクティブ</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>URLを生成</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>ネットワーク・テスト</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>インタビュー用ビデオ・カメラを自動選択</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>下線</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>フォント・スタイル</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>フォント・スタイルを許可</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>フォント色</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>ハイパーリンク</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>セッション統計を表示</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>セッション詳細</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>システム・インポート</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>バックアップにアップロード済みファイルと録音・録画を含める</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>会議室のSIPトランスポートを有効にする</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>このユーザーに単独話者権限を付与してよろしいですか？</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>タイムゾーンを指定してください</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>会議(ユーザー数:1〜25)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>大人数向け会議(ユーザー数:1〜150)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>インタビュー(1対1のミーティング；録画付き)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>指定されたキーの構成は既に存在しています。別のキーを指定するか、既存の構成を編集してください。</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>保存中です。しばらくお待ちください。</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>ようこそ</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>ユーザー基本情報／サポート・リンク ウィジェット</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>ウィジェット</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>について</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>名称</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>バージョン</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>リビジョン</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>ビルド日時</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>ロード中 ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>今日</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>1月</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>2月</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>3月</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>4月</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>5月</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>6月</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>7月</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>8月</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>9月</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>10月</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>11月</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>12月</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>リマインダーを送信しない</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>Eメール</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal Eメール</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>OAuth2設定</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>名前</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>有効</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>アイコンURL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>クライアントID</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>クライアント秘密鍵</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>鍵のURL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>リクエストトークンURL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>リクエスト情報URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2設定</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>ログイン名</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>姓</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>名</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>トークン属性値</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>リダイレクトURI</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>Emailアドレスを入力します: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>通信切断時の処理</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>表示</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>アカウントが作成されました。メールを送信しましたのでご確認ください。すぐにログインできます。</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>終了日をご確認ください</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>終了値</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>変換メッセージ</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>録音データがみつかりません</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>ホワイトボード追加</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>Emailアドレスを入力: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>セキュリティ</value>
+  </string>
+  <string id="1599" name="security">
+    <value>この会議室へは入れません</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/korean.xml b/src/main/webapp/languages/korean.xml
new file mode 100644
index 0000000..2c8fa81
--- /dev/null
+++ b/src/main/webapp/languages/korean.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>회의</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>모임</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>교실</value>
+  </string>
+  <string id="4" name="settings">
+    <value>세딩</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>유저</value>
+  </string>
+  <string id="6" name="admin">
+    <value>관리</value>
+  </string>
+  <string id="7" name="stop">
+    <value>정지</value>
+  </string>
+  <string id="8" name="record">
+    <value>기록</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>유효한 파일 없음</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>교사 기록</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>연결된 유저:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>회의 시작</value>
+  </string>
+  <string id="13" name="myname">
+    <value>본인 이름</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>비데오 회의</value>
+  </string>
+  <string id="15" name="import">
+    <value>가지고온 기획안</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>새로운 목록</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>메인파일에</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>새 선거</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>새 선거의장</value>
+  </string>
+  <string id="20" name="question">
+    <value>질문:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>선거 종류:</value>
+  </string>
+  <string id="22" name="create">
+    <value>창안하다</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Each connected user receives a message with the new poll.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>선거를 만드셨습니다.</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>무효</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>네/아니오</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>숫자 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>투표</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>질문을 만들기 위해서 의장이 되어야합니다.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>당신의 투표가 등록 되었습니다.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>이번 선거에 벌써 투표하셨습니다.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>투표 !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>당신의 응답:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>네</value>
+  </string>
+  <string id="35" name="no">
+    <value>아니오</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>will wissen:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>선거 결과:</value>
+  </string>
+  <string id="38" name="question">
+    <value>질문:</value>
+  </string>
+  <string id="39" name="results">
+    <value>결과:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>대답:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>시작된 선거가 없습니다.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>선거!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>미딩 (최고 4 자리까지)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>회의 (최고 50 자리까지)</value>
+  </string>
+  <string id="45" name="type">
+    <value>종류</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>다른 자리</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>이미 선택 하셨습니다.</value>
+  </string>
+  <string id="48" name="enter">
+    <value>들어가다.</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>의장이 미딩에서 나가셨습니다</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>시스템 설명</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>디바이스를 선택하십시요.</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>웹카메라를 선택해 주십시요:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>마이크를 선택해 주십시요:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>네</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>무효</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>다시 연결이 필요했습니다.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>셋업 편집</value>
+  </string>
+  <string id="58" name="course">
+    <value>진행:</value>
+  </string>
+  <string id="59" name="language">
+    <value>언어:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>네</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>무효</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>칠판 지우기</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>새로운 그림을 넣기전에 칠판을 지우길 원하십니까?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>다시 질문을 해주시마십시요</value>
+  </string>
+  <string id="65" name="no">
+    <value>아니오</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>셋업 편집2</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>칠판지우시전 확인 요청.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>유저 정보</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>그리는 자리 지움</value>
+  </string>
+  <string id="70" name="undo">
+    <value>원래대로 돌려놓다.</value>
+  </string>
+  <string id="71" name="redo">
+    <value>다시하다</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>물건을 선택해주십시요.</value>
+  </string>
+  <string id="73" name="text">
+    <value>원문</value>
+  </string>
+  <string id="74" name="paint">
+    <value>페인트</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>선 긋기</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>밑줄 긋기</value>
+  </string>
+  <string id="77" name="rect">
+    <value>직사각형</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>타원형</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>화살표</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>선택한 항목 삭제</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>알맞게 신청하십시요.</value>
+  </string>
+  <string id="82" name="apply">
+    <value>신청하다.</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>삭제</value>
+  </string>
+  <string id="84" name="mod">
+    <value>사회자가 돼다</value>
+  </string>
+  <string id="85" name="close">
+    <value>닫다</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>굵은 체</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>기다림</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>유저가 사회자 신청을 원합니다:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>받아들이다.</value>
+  </string>
+  <string id="91" name="reject">
+    <value>거부하다.</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>삭제</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>밑의 유져들에가 요청을 보냄</value>
+  </string>
+  <string id="94" name="accept">
+    <value>확임이 됩습니다.</value>
+  </string>
+  <string id="95" name="reject">
+    <value>거부가됩습니다.</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>사회자로 바끰</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>You are not moderating this course!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>사회자:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>이방 정원은 꽉 찾습니다. 죄송합니다. 다음에 오십시요.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>타원</value>
+  </string>
+  <string id="101" name="close">
+    <value>닫다</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>데이다 오류 입력</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>유저 이름은 최소 4 문자가 돼어야합니다.</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>유저 비밀번호는 최소 4 문자가 돼여야합니다.</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>똑같은 유저이름이 존재합니다.</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>똑같은 이메일 주소가 이미 등록돼어 있습니다.</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>시스템 오류가 생겼습니다. 시스템 관리자에 연락주십시요.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>로긴</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>유저:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>패스:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>언어</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>로긴</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>등록</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>유저:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>패스:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>다시타임:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>이름:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>성:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>주소:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>나라:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>등록</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>취소</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>등록</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>집</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>유저</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>다체</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>조직</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>회의실</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>공공장소</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>조직</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>들어가다</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>로긴</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>비밀번호</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>다시 타이프 치다.</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>이름</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>성</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>주소</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>생일</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>길이름/번호</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>우편번호/동네</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>나라</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>주소 인호</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>유져데이다</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>저장</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>저장</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>USER-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>로긴</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>이름</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>성</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>다음으로 보여주다</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>먼저 보여줌.</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>기록을 지우다.</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>삭제</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>삭제</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>새로운 기록</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>기록을 다시 재생하다</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>기록을 지우다</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>상태</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>무력하게 하다</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>권한을 주다</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>조직</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>달력</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>닫다</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>조직 번호</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>이름</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>유저</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>바끰</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>관리자</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>유저높이</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>조직</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>이름</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>조직 추가</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>조직 추가</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>삭제</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>추가하다</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>조직 추가</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>유저</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>유저추가</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>유저 지우기</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>유저 추가</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>유저 찾기</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>찾기</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>유저</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>조직</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>입력</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>회의실</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>회의실</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>아이디</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>이름</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>공공장소</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>조직</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>회의실</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>이름</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>종류</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>공공장소</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>의견</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>저장</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>입력</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>..와 같이 저장 하다</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>파일이름</value>
+  </string>
+  <string id="201" name="files">
+    <value>파일이름</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>삭제</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>저장</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>오류</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>장전</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>물체 장전</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>snychronizing clients, clients to wait:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>이미지데이다 로딩</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>snychronizing clients, clients to wait:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>그리는 곳 지우기</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>그리는 곳 지우기 칠판위에 모든 데이다가 없어집니다.</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>파일이 로딩돼기전에 확인해주십시요.</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>초대장을 보내다.</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>초대장을 보내다.</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>주제</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>수령인</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>메세지</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>보내기</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>삭제</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>보내기</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>유저데이다</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>이번 회의의 니크네임</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>nick</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>이름</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>성</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>이메일</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>언어</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>입력</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>로딩</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>데이다로딩, 기다려주십시요!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>잘못된 패스워드</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>최소 4 개 문자로된 두개의 똑같은 패스워드를 입력시켜주십시요</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>다른 메일</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>잘못된 이멜주소를 입력하였습니다.</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>등록이 됬습니다.</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>당신의 어카운트가 생겼습니다. 지금 로긴이돼어 있습니다.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>당신의 스크린을 지금 공유할수 없습니다. 다른사람이 이미 스크린을 공유하고 있습니다.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>공유금지</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>당신의 스크린을 공유하다.</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Bad Bandwidth: You have not been able to syncronize the Screen. Frames will be dropped. If this Warning is shown often you could ask the moderator to reduce the Quality.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Screen of:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Paint</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Document</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Files</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Members</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download original document</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download pdf document</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Load Presentation to whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Drag this Object</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Resize this Object</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>of</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Go to first Page</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Go to previous Page</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Go to next Page</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Go to last Page</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Mr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Ms.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Key</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Key</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>last update</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>updatedby</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comment</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>key</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>of</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Users</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>delete user from organisation</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>delete</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>This user is already member of this organisation.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>News</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Goto Conference</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Goto Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Help and Support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Report a bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>more</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project Website (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Remember Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Content</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>My Home Page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>My Scheduled Meetings</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My Scheduled Events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Public Meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private Meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Public Events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private Events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Public Content</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private Content</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personal Content</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderation</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Apply for Moderation</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Polls</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Choose a file</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Settings</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Cam and Mic Settings</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Whiteboard Settings</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Exit</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Back to Rooms</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>start Desktop Viewer</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Video and Audio</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Chat</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Whiteboard</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Moderation</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Files</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Users</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Polls</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>There is no User connected to this Username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>The email containing a special link has been sent to your email address, please check your mailbox. If you still have not received a email, please adjust your email spam settings and resend confirmation email.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Error</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Message</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Invalid Hash. No User found.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset Your Password</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>change Password</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>new Password</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>re-enter Password</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>The Passwords you entered weren't identical.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 or more characters; capitalization matters!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password set. You can login now.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Unkown Error. Please report this to your Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username not found</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Invalid Password</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Successfully Logged out</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Frontend Registration disabled.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Invalid EMail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>duplicate filename, please choose another filename</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>filename too short</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Could not save Address</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>User added but you need to assign this User to an Organisation, otherwise he won't be able to sign-in.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>New Record</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No Field found with this FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No Label found for that Field.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin Authorization required</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Language-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Language</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Value</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Fieldvalues</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelValue</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>You did only delete the Label NOT the Field! You cannot delete the Field, it may has Labels in other Languages.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Invalid Labelid. The FieldLanguagesvalues_Id cannot be found in the database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>You cannot delete this Field. You can only delete Labels NOT Fields. There is no Label loaded at the moment, wether it is not selected any Field or there is no Label for this Language for that Field defined.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>You need to logout to see any changes.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>delete language</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>add language</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>goto first</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>goto previous</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>goto next</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>goto last</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>user speaks (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>turn sound on/off</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Your Settings</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>hi,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Edit your profile</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>New Messages:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Upload new Image</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Userdata - Export</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>All organisations must be already existing!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>By organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Userdata - Import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>choose users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>import</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export to XML - These files can be used to: - Contribute to the project - Import into another System - Backup - Customization - Put it into the language-directory for your next installation</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choose a language file to import. Choose the right Langauge from the Combobox! No matter what the name of the file is, it will be imported into this language!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>import - choose file</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Save as</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Name:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comment:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>save</value>
+  </string>
+  <string id="395" name="record">
+    <value>Recordings</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Recordings Viewer</value>
+  </string>
+  <string id="397" name="record">
+    <value>Recordings of public and private Rooms</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Users :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Joined:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Users in this Room:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>refresh</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>This Room is Full. Try again in a few minutes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>click on a room to get details</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat with the users in this Room:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Room:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Users in this room:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>since:</value>
+  </string>
+  <string id="409" name="record">
+    <value>play recording</value>
+  </string>
+  <string id="410" name="record">
+    <value>Length:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Date:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Recorder Mode! You cannot change any values, this is a recorded File!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Play this recording</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Start recording</value>
+  </string>
+  <string id="416" name="record">
+    <value>stop recording</value>
+  </string>
+  <string id="417" name="record">
+    <value>Recording:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>There is already somebody recording at the moment:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Recording! By User:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancel</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Recording will be canceled and not saved.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>resume</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Close this window and resume recording</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>change Linecolor</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Choose Color</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disable / Enable Linecolor</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>change Fillcolor</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disable / Enable Fillcolor</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Change Linewidth</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>close</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>change Fontsize</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Delete Recording</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Guest</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>By:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Room</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancel</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Name</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Date</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Delete Server-Chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>send message</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choose Published Devices</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio and Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Audio only</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Video only</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>no Audio/Video (static Image)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>No Audio/Video from your PC will be published, instead of that a picture from your profile will be shown. Choose these settings if you have problems with your bandwidth or a very slow Internet connection.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TU</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>WE</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TH</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SA</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SU</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Monday</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tuesday</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Wednesday</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Thursday</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Friday</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Saturday</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Sunday</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CW</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendar week</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>January</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>February</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>March</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>May</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>June</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>July</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>October</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendar</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participants</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Show Layout Settings</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Width | Height</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderation-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Enabled</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Width | Height</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Files,Chat,Partizipants - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Enabled</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Width | Height</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>The Moderator has left the Room. No one is presenting at the Moment. You could apply for Moderation or wait.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>There is no Moderator in this Room, but there are some Participants. You have to apply for Moderation or wait.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Your userdata:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Pass:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Sign-Up</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Click on this link to enter a new password:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Click here to enter a new Password</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Password Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Please enter a valid Date, for example 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Please enter a valid EMail, for example name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Please enter a Float-Number, for example 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Please enter a Number (Integer), for example 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Please enter a valid Phone number, for example ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Please enter a valid time, for example 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Passwort protected</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Password</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Validity period</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Endless</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Period</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>One-Time</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valid From:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valid to:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitation To $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Not Invitation availible for this Invitation-Code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>The Invitation was already used. This type of Invitation cannot be re-used.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>This Invitation-Code is not valid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Password:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Check Password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Invalid Password!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Syncronize Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/language.xsd b/src/main/webapp/languages/language.xsd
new file mode 100644
index 0000000..8ad8377
--- /dev/null
+++ b/src/main/webapp/languages/language.xsd
@@ -0,0 +1,48 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="language">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="string"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="string">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="value"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:integer"/>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="value">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element ref="br" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element ref="i" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="br"/>
+  <xs:element name="i" type="xs:string"/>
+</xs:schema>
diff --git a/src/main/webapp/languages/languages.xml b/src/main/webapp/languages/languages.xml
new file mode 100644
index 0000000..35b4172
--- /dev/null
+++ b/src/main/webapp/languages/languages.xml
@@ -0,0 +1,54 @@
+<?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.
+  
+-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="languages.xsd">
+	<lang id="1" rightToLeft="false" code="en">english</lang>
+	<lang id="2" rightToLeft="false" code="de">deutsch</lang>
+	<lang id="3" rightToLeft="false" code="de-StudIP">deutsch (studIP)</lang>
+	<lang id="4" rightToLeft="false" code="fr">french</lang>
+	<lang id="5" rightToLeft="false" code="it">italian</lang>
+	<lang id="6" rightToLeft="false" code="pt">portugues</lang>
+	<lang id="7" rightToLeft="false" code="pt-br">portugues brazil</lang>
+	<lang id="8" rightToLeft="false" code="es">spanish</lang>
+	<lang id="9" rightToLeft="false" code="ru">russian</lang>
+	<lang id="10" rightToLeft="false" code="sv">swedish</lang>
+	<lang id="11" rightToLeft="false" code="zh_CN">chinese simplified</lang>
+	<lang id="12" rightToLeft="false" code="zh_TW">chinese traditional</lang>
+	<lang id="13" rightToLeft="false" code="ko">korean</lang>
+	<lang id="14" rightToLeft="true" code="ar">arabic</lang>
+	<lang id="15" rightToLeft="false" code="ja">japanese</lang>
+	<lang id="16" rightToLeft="false" code="id">indonesian</lang>
+	<lang id="17" rightToLeft="false" code="hu">hungarian</lang>
+	<lang id="18" rightToLeft="false" code="tr">turkish</lang>
+	<lang id="19" rightToLeft="false" code="uk">ukrainian</lang>
+	<lang id="20" rightToLeft="false" code="th">thai</lang>
+	<lang id="21" rightToLeft="false" code="fa">persian</lang>
+	<lang id="22" rightToLeft="false" code="cs">czech</lang>
+	<lang id="23" rightToLeft="false" code="gl">galician</lang>
+	<lang id="24" rightToLeft="false" code="fi">finnish</lang>
+	<lang id="25" rightToLeft="false" code="pl">polish</lang>
+	<lang id="26" rightToLeft="false" code="el">greek</lang>
+	<lang id="27" rightToLeft="false" code="nl">dutch</lang>
+	<lang id="28" rightToLeft="true" code="he">hebrew</lang>
+	<lang id="29" rightToLeft="false" code="ca">catalan</lang>
+	<lang id="30" rightToLeft="false" code="bg">bulgarian</lang>
+	<lang id="31" rightToLeft="false" code="da">danish</lang>
+	<lang id="32" rightToLeft="false" code="sk">slovak</lang>
+</language>
diff --git a/src/main/webapp/languages/languages.xsd b/src/main/webapp/languages/languages.xsd
new file mode 100644
index 0000000..d6a0592
--- /dev/null
+++ b/src/main/webapp/languages/languages.xsd
@@ -0,0 +1,36 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="language">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="lang"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="lang">
+    <xs:complexType mixed="true">
+      <xs:attribute name="code" use="required" type="xs:NCName"/>
+      <xs:attribute name="id" use="required" type="xs:integer"/>
+      <xs:attribute name="rightToLeft" use="required" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/languages/persian.xml b/src/main/webapp/languages/persian.xml
new file mode 100644
index 0000000..6926ac6
--- /dev/null
+++ b/src/main/webapp/languages/persian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>كنفرانس</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>ملاقات</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>درس كلاس</value>
+  </string>
+  <string id="4" name="settings">
+    <value>تنظيمات</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>فردي مشخصات</value>
+  </string>
+  <string id="6" name="admin">
+    <value>مدیریت</value>
+  </string>
+  <string id="7" name="stop">
+    <value>توقف</value>
+  </string>
+  <string id="8" name="record">
+    <value>ضبط</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>دسترس قابل غير فايل</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>استاد توسط ضبط</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>حاضر كاربران</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>كنفرانس يك شروع</value>
+  </string>
+  <string id="13" name="myname">
+    <value>من نام</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>ويديويي كنفرانس</value>
+  </string>
+  <string id="15" name="import">
+    <value>بارگذاري</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>ليست بازبيني</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>اصلي فايل</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>جديد سنجي نظر</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>كنفرانس براي جديد راي يك</value>
+  </string>
+  <string id="20" name="question">
+    <value>:پرسش</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>:سنجي نظر انواع</value>
+  </string>
+  <string id="22" name="create">
+    <value>ايجاد</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>اطلاعات پيام</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>سنجي نظر يك ايجاد</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>انصراف</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>خير/بله</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>1-10 اعداد</value>
+  </string>
+  <string id="28" name="poll">
+    <value>سنجي نظر</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>اعتدال</value>
+  </string>
+  <string id="30" name="vote">
+    <value>راي</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>پيشين آرا</value>
+  </string>
+  <string id="32" name="voting">
+    <value>راي</value>
+  </string>
+  <string id="33" name="answer">
+    <value>پاسخ</value>
+  </string>
+  <string id="34" name="yes">
+    <value>بله</value>
+  </string>
+  <string id="35" name="no">
+    <value>خير</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>:پاسخ درخواست</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>راي پيامد</value>
+  </string>
+  <string id="38" name="question">
+    <value>:پرسش</value>
+  </string>
+  <string id="39" name="results">
+    <value>:پيامد</value>
+  </string>
+  <string id="40" name="answers">
+    <value>:پاسخ</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>است نشده آغاز سنجي نظر هيچ</value>
+  </string>
+  <string id="42" name="votings">
+    <value>آرا</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>جلسه</value>
+  </string>
+  <string id="44" name="conference">
+    <value>كنفرانس</value>
+  </string>
+  <string id="45" name="type">
+    <value>نوع</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>ديگر جايگاه</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>پيشين انتخابهاي</value>
+  </string>
+  <string id="48" name="enter">
+    <value>ورود</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>.کردند ترک را جلسه سيستم مدير</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>سيستم پيام</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>انتخاب شيوه</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>دوربين انتخاب</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>ميكروفن انتخاب</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ادامه</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>انصراف</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>داريد مجدد اتصال به احتياج شما</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>تنظيمات ويرايش</value>
+  </string>
+  <string id="58" name="course">
+    <value>رشته</value>
+  </string>
+  <string id="59" name="language">
+    <value>:زبان</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ادامه</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>انصراف</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>مانيتور صفحه كردن پاك</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>شود؟ اضافه جديد عكس يك اينكه از قبل شود خالي مانيتور صفحه ميخواهيد آيا</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>نفرماييد سوال دوباره</value>
+  </string>
+  <string id="65" name="no">
+    <value>خير</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>نصب تصحيح</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value></value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>كاربر اطلاعات</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>شده ترسيم محيط وضوح</value>
+  </string>
+  <string id="70" name="undo">
+    <value>كردن خنثي</value>
+  </string>
+  <string id="71" name="redo">
+    <value>دوباره انجام</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>نظر مورد موضوع</value>
+  </string>
+  <string id="73" name="text">
+    <value>متن</value>
+  </string>
+  <string id="74" name="paint">
+    <value>كردن نقاشي</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>كشيدن خط</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>كردن دار خط زير</value>
+  </string>
+  <string id="77" name="rect">
+    <value>گوش چهار</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>بيضي</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>پيكان</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>انتخابي آيتم حذف</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>مديريت درخواست</value>
+  </string>
+  <string id="82" name="apply">
+    <value>اجرا قابل</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>انصراف</value>
+  </string>
+  <string id="84" name="mod">
+    <value>مديريت درخواست</value>
+  </string>
+  <string id="85" name="close">
+    <value>بستن</value>
+  </string>
+  <string id="86" name="italic">
+    <value>كج حروف</value>
+  </string>
+  <string id="87" name="bold">
+    <value>توپر حروف</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ماندن منتظر</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>اجرا قابل پيغام</value>
+  </string>
+  <string id="90" name="accept">
+    <value>پذيرفتن</value>
+  </string>
+  <string id="91" name="reject">
+    <value>كردن رد</value>
+  </string>
+  <string id="92" name="cancel">
+    <value></value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>سيستم مدير به درخواست پيام ارسال</value>
+  </string>
+  <string id="94" name="accept">
+    <value>پذيرفتن</value>
+  </string>
+  <string id="95" name="reject">
+    <value>كردن رد</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>سيستم مدير تغيير</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>You are not moderating this course!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>:سيستم مدير</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>This Room is full. Sorry please try again later.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>بيضي</value>
+  </string>
+  <string id="101" name="close">
+    <value>بستن</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value></value>
+  </string>
+  <string id="103" name="min4username">
+    <value>كاراكتر 4 از بيش يا 4</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>باشد كاراكتر 4 حداقل بايد عبور رمز</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>The username is already taken</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>The email is already registered</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>سيستم اخطار</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>ارتباط قطع</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>:كاربر</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>:عبور رمز</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>:زبان</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>سيستم به ورود</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Sign Up</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>:كاربر</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>عبور رمز:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>تايپ بازبيني:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>:نام</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>:خانوادگي نام</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>:ايميل</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>:كشور</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>ثبت</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>انصراف</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Not a member?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>اصلي صفحه</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>كاربر</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>ها گروه</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>گفتگو اطاق</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>همگاني</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>ورود</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>ارتباط قطع</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>عبور رمز</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>تايپ بازبيني</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>:نام</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>:خانوادگي نام</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>:ايميل</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>:تولد تاريخ</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>:سكونت محل</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>:كدپستي</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>:كشور</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>:آدرس</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>كاربر سوابق</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>ذخيره</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>ذخيره</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>كاربر شناسه</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>ارتباط قطع</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>نام</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>خانوادگي نام</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>بعدي نمايش</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>قبلي نمايش</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>ضبط حذف</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>انصراف</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>حذف</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>جديد ضبط</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>ضبط بيني باز</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>ضبط حذف</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>وضعيت</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>صلاحيت فاقد</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>ساختن قادر</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>تقويم</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>بستن</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>سازمان شناسه</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>نام</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>كاربر</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>سيستم مدير</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>سيستم مدير</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>كاربر سطح</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>نام</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>دهي سازمان افزودن</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>دهي سازمان افزودن</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>انصراف</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>افزودن</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>remove organisation</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>كاربر</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>اضافه كاربر</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>كاربر حذف</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>كاربر افزودن</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>كاربر جستجوي</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>كاوش</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>كاربر</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>ورود</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>كنفرانس اطاق</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>كنفرانس اطاق</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>شناسه</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>نام</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>همگاني</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>دهي سازمان</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>گفتگو اطاق</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>نام</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>تايپ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>همگاني</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>تفسير</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>ذخيره</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>گذاري بار</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>از ذخيره</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>فايل نام</value>
+  </string>
+  <string id="201" name="files">
+    <value>فايل نام</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>انصراف</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>ذخيره</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>خطا</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>گذاري بار</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>موضوع بارگذاري</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>snychronizing clients, clients to wait:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>تصويري هاي داده گذاري بار</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>snychronizing clients, clients to wait:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>شده ترسيم محيط وضوح</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>clear drawarea, all data on whiteboard will be lost</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>فايل گذاري بار از قبل تثبيت</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>نامه دعوت ارسال</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>نامه دعوت ارسال</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>موضوع</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>گيرنده</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>پيام</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>ارسال</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>انصراف</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>ارسال</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>كاربر داده</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>كنفرانس اين براي شما اختصار نام</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>مستعار نام</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>نام</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>خانوادگي نام</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>ايميل</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>زبان</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>ورود</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>گذاري بار</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>كنيد صبر لطفا-اطلاعات گذاري بار حال در</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>ورود رمز اخطار</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>كنيد وارد عبور رمز دو لطفا</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>ايميل اخطار</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>كرديد وارد صحيح نا پستي آدرس</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registration Complete</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>است شده ايجاد شما اكانت</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>بگذاريد اشتراك به را خود صفحه نميتوانيد شما</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>ممنوع گذاري اشتراك به</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>شما صفحه گذاري اشتراك</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Bad Bandwidth: You have not been able to syncronize the Screen. Frames will be dropped. If this Warning is shown often you could ask the moderator to reduce the Quality.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>:صفحه</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>كردن نقاشي</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>سند</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value></value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>ها فايل</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>اعضا</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>اصلي سند دانلود</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>pdf سند دانلود</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Load Presentation to whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>بندي پيكره</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>موضوع اين كشيدن</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>موضوع اين سايز تغيير</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>درصد</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>مبدا</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>اول صفحه به بازگشت</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>قبلي صفحه به بازگشت</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>بعدي صفحه به رفتن</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>آخر صفحه به رفتن</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>-- زوم</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>++ زوم</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Mr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Ms.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>موقعيت</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>شناسه</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>راهنما</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>موقعيت</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>راهنما</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>رساني بروز آخرين</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>توسط شده روز به</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>تفسير</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>بها</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>مبدا</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>كاربر</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>سازمان از كاربر حذف</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>حذف</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>This user is already member of this organisation.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>خبر</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Quicklinks</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>كنفرانس به بازگشت</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>كنفرانس تالار به بازگشت</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>پشتيباني و همكاري</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>!اشكال يك ضبط</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>بيشتر</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Project website (http://openmeetings.apache.org/)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User mailing list (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Remember Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>محتوا</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>من خانگي صفحه</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>My Scheduled Meetings</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My Scheduled Events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>همگاني گفتگوي</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>همگاني گفتگو</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>همگاني وقايع</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>خصوصي وقايع</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>همگاني محتوا</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>خصوصي محتواي</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>شخصي محتواي</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>مديريت</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>مديريت درخواست</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>سنجي نظر</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>فايل يك انتخاب</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>تنظيمات</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>دوربين و ميكروفن تنظيمات</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>مانيتور صفحه تنظيمات</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>خروج</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>اتاق به بازگشت</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>خروج</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>ايد؟كرده فراموش را خودعبور رمز</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Reset Password</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>ايميل توسط</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>By Login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>شما ايميل</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Your Login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Send Mail with reset Link</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>No such email address was found. Make sure you enter the same email address you used to create your account.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Please enter either a Mail or a Username</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>There is no User connected to this Username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>The email containing a special link has been sent to your email address, please check your mailbox. If you still have not received a email, please adjust your email spam settings and resend confirmation email.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>خطا</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>پيام</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Invalid Hash. No User found.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset Your Password</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>ارتباط قطع</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>عبور رمز تغيير</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>جديد عبور رمز</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>عبور رمز مجدد ورود</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>The Passwords you entered weren't identical.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 از بيش يا كاراكتر 4</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Password set. You can login now.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>ادامه</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Unkown Error. Please report this to your Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username not found</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>صحيح نا عبور رمز</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Successfully Logged out</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Frontend Registration disabled.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>صحيح نا ايميل</value>
+  </string>
+  <string id="340" name="registration">
+    <value>كنيد وارد را ديگري فايل نام لطفا است تكراري فايل نام</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>است كوتاه خيلي فايل نام</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>كنيد ذخيره توانيد نمي را آدرس</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>User added but you need to assign this User to an Organisation, otherwise he won't be able to sign-in.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>جديد ضبط</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No Field found with this FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No Label found for that Field.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin Authorization required</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Language-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>زبان</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Value</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Fieldvalues</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelValue</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>You did only delete the Label NOT the Field! You cannot delete the Field, it may has Labels in other Languages.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Invalid Labelid. The FieldLanguagesvalues_Id cannot be found in the database.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>You cannot delete this Field. You can only delete Labels NOT Fields. There is no Label loaded at the moment, wether it is not selected any Field or there is no Label for this Language for that Field defined.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>You need to logout to see any changes.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>جديد زبان افزودن</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>زبان حذف</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>جديد زبان افزودن</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>نام</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>زبان افزودن</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>پشتيبان</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>اولين به بازگشت</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>قبلي به بازگشت</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>بعدي به رفتن</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>آخر به رفتن</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>كاربر گفتگوي (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>صدا كردن خاموش/روشن</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>سيستم</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>شما تنظيمات</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>سلام</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>شما نمودار ويرايش</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>:جديد پيام</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>جديد تصوير گذاري بار</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Userdata - Export</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>بندي طبقه همه</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>بندي طبقه بوسيله</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>كاربر داده</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>كاربر انتخاب</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>اهميت</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Export to XML - These files can be used to: - Contribute to the project - Import into another System - Backup - Customization - Put it into the language-directory for your next installation</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Choose a language file to import. Choose the right Langauge from the Combobox! No matter what the name of the file is, it will be imported into this language!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>فايل انتخاب</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>از ذخيره</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>:نام</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>:توضيح</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>ذخيره</value>
+  </string>
+  <string id="395" name="record">
+    <value>بایگانی</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Recordings Viewer</value>
+  </string>
+  <string id="397" name="record">
+    <value>Recordings of public and private Rooms</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>:كاربر</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>:پيوستن</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>:اطاق اين در كاربر</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>بيني باز</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>This Room is Full. Try again in a few minutes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>click on a room to get details</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat with the users in this Room:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>:اطاق</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>:اطاق در كاربر</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>:ابتدا از</value>
+  </string>
+  <string id="409" name="record">
+    <value>play recording</value>
+  </string>
+  <string id="410" name="record">
+    <value>:طول</value>
+  </string>
+  <string id="411" name="record">
+    <value>:تاريخ</value>
+  </string>
+  <string id="412" name="record">
+    <value>Recorder Mode! You cannot change any values, this is a recorded File!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Play this recording</value>
+  </string>
+  <string id="414" name="record">
+    <value>مكث/</value>
+  </string>
+  <string id="415" name="record">
+    <value>ضبط شروع</value>
+  </string>
+  <string id="416" name="record">
+    <value>ضبط توقف</value>
+  </string>
+  <string id="417" name="record">
+    <value>:ضبط</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>There is already somebody recording at the moment:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>كاربر توسط!ضبط</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>انصراف</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Recording will be canceled and not saved.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>مطالب خلاصه</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>شود ضبط مطالب خلاصه و شود بسته پنجره اين</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>خط رنگ تغيير</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>رنگ انتخاب</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>خط رنگ ساختن توانايي عدم /توانايي</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>رنگ سطل ساختن توانايي عدم/توانايي</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>خط رنگ ساختن توانايي عدم/توانايي</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>خط ضخامت تغيير</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>بستن</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>فونت تغيير</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>ضبط حذف</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>مهمان</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>:بوسيله</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>نام</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>اطاق</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>تاريخ</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>انصراف</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>شروع</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>نام</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>تاريخ</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>سرور حذف</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value></value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>پيام ارسال</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>احساسات</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>احساسات</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Choose Published Devices</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>بصري و سمعي</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>سمعي فقط</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>بصري فقط</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>بصري نه/سمعي نه</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>بصري نه/سمعي نه</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>دوشنبه</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>شنبه سه</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>شنبه چهار</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>شنبه پنج</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>جمعه</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>شنبه</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>شنبه يك</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>شنبه دو</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>شنبه سه</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>شنبه چهار</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>شنبه پنج</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>جمعه</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>شنبه</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>شنبه يك</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>هفتگي تقويم</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>هفتگي تقويم</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>ژانويه</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>فوريه</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>مارس</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>آوريل</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>مه</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>ژوئن</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>جولاي</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>آگوست</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>سپتامبر</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>اكتبر</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>نوامبر</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>دسامبر</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>تقويم</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>كنندگان شركت</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Show Layout Settings</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>عرض/طول</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderation-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>ساختن قادر</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Width | Height</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Files,Chat,Participants - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>ساختن قادر</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>عرض/طول</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>The Moderator has left the Room. No one is presenting at the Moment. You could apply for Moderation or wait.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>There is no Moderator in this Room, but there are some Participants. You have to apply for Moderation or wait.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitation</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>كاربر براي پيام</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>:پيام</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>:كنيد كليك كنندگان شركت با گفتگو براي لينك اين در</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>كنيد كليك را اينجا اطاق به ورود براي</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>:شما كاربر داده</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>:عبور رمز</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>:ايميل</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Sign-Up</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Click on this link to enter a new password:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>كنيد كليك اينجا جديد عبور رمز ورود براي</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Password Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>(dd.mm.yyyy)24/12/2001 مثال عنوان به كنيد وارد صحيح تاريخ يك لطفا</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>name@mail.com مثال عنوان به كنيد وارد صحيح ايميل يك لطفا</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Please enter a Float-Number, for example 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>100 مثال عنوان به كنيد وارد عدد يك لطفا</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>++490123123123مثال عنوان به كنيد وارد صحيح تلفن يك لطفا</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>(hh:mm)12:23 مثال عنوان به كنيد وارد صحيح زمان يك لطفا</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>عبور رمز حفاظت</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>عبور رمز</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>دوره اعتبار</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>ناپذير پايان</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>دوره يك</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>اول دوره</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>:از اعتبار</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>:تا اعتبار</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>آنلاين كلاس به دعوت</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Not Invitation availible for this Invitation-Code</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>The Invitation was already used. This type of Invitation cannot be re-used.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>This Invitation-Code is not valid.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>:عبور رمز</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Check Password</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Invalid Password!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>گذاشتن اجرا به</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>بصري /سمعي بودن مطابق</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/polish.xml b/src/main/webapp/languages/polish.xml
new file mode 100644
index 0000000..a5f2ff8
--- /dev/null
+++ b/src/main/webapp/languages/polish.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferencja</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Spotkania</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Wykłady</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Ustawienia</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administracja</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Nagrywanie</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Brak pliku</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Nagrywanie przez wykładowcę</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Podłaczeni użytkownicy:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Rozpocznij konferencję</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Moje imię</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Wideokonferencja</value>
+  </string>
+  <string id="15" name="import">
+    <value>Przesłanie pliku</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Odświeżenie listy</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Do pliku głównego</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>nowe głosowanie</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nowe głosowanie.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pytanie:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Rodzaj głosowania:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Utwórz</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Uwaga: Każdy połączony użytkownik otrzyma wiadomość z nowym głosowaniem.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Utwórz głosowanie.</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Anuluj</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Tak/Nie</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Liczba 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Głosowanie</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Musisz być moderatorem aby utworzyć pytanie</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Twój głos został zarejestrowany.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Już głosowałeś w tym głosowaniu..</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Głosuj !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Twoja odpowiedź:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Tak</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nie</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>chciał(a)by wiedzieć:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Wyniki głosowania</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pytanie:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Wyniki:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Odpowiedzi:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nie rozpoczęto żadnego głosowania.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Głosuj !</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Spotkanie (maks. 4 miejsca)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferencja (maks. 50 miejsc)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Rodzaj</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Pozostałe miejsca</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Już wybrano</value>
+  </string>
+  <string id="48" name="enter">
+    <value>wejdź</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderator wyszedł ze spotkania.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Informacja systemowa</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Wybierz urządzenie</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Wybierz kamerę:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Wybierz mikrofon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>anuluj</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Połącz się powtórnie.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Edytuj ustawienia.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurs:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Język:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>anuluj</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Wyczyść tablicę</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Czy chcesz wyczyściń tablicę przed dodaniem nowego obrazka?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Nie pytaj więcej</value>
+  </string>
+  <string id="65" name="no">
+    <value>nie</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Edytuj ustawienia</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Proszę potwierdziś zmazanie tablicy.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informacje o użytkowniku</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Wyczyść obszar rysowania</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Cofnij</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Powrtórz</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Wskaż obiekt</value>
+  </string>
+  <string id="73" name="text">
+    <value>Tekst</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Malowanie</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Rysuj linię</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Podkreśl</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Prostokąt</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Strzałka</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Skasuj wskazany obiekt</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Złóż wniosek o moderację</value>
+  </string>
+  <string id="82" name="apply">
+    <value>złóż</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>anuluj</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Zostań moderatorem</value>
+  </string>
+  <string id="85" name="close">
+    <value>zamknij</value>
+  </string>
+  <string id="86" name="italic">
+    <value>kursywa</value>
+  </string>
+  <string id="87" name="bold">
+    <value>pogrubiony</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>CZEKAM</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Użytkownik prosi o prawa moderatora. Możesz nadać mu tylko dostęp do tablicy, albo pełne prawa moderatorskie. Użytkownik:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>akceptuj</value>
+  </string>
+  <string id="91" name="reject">
+    <value>odrzuć</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>anuluj</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Wysyłam prośbę do następujących użytkowników:</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Przyjęte</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Odrzucone</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Zmień moderatora</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Nie jesteś tutaj moderatorem!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Ten pokój jest pełny. Zajrzyj później.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="101" name="close">
+    <value>zamknij</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>błąd w danych wejściowych</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 lub więcej znaków; duże i małe litery mają znaczenie!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Hasło musi składać się przynajmniej z 4 znaków</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Ta nazwa użytkownika jest już zajęta</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Ten adres e-mail jest już zarejestrowany</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Błąd systemu. Skontaktuj się z administratorem.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Logowanie</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Użytkownik:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Hasło:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Język</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Zapisz się</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Zapisz się</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Użytkownik:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Hasło:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Powtórz:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Imię:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Nazwisko:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>e-mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Kraj:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Zarejestruj</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Anuluj</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Nie zapisałeś się jeszcze?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Strona startowa</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Użytkownicy</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupy</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizacje</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Pokoje spotkań</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>publiczne</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organizacja</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Wejdź</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Hasło</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Powtórz</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Imię</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Nazwisko</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>e-mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Urodziny</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Ulica/Numer</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Kod/Miasto</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Kraj</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Informacje adesowe</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Dane użytkownika</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Zapisz</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Zapisz</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID-użytkownika</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Imię</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Nazwisko</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Pokaż następny</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Pokaż poprzedni</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Skasuj wpis</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Anuluj</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Skasuj</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nowy wpis</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Odświerz wpis</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Skasuj wpis</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>zablokowany</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>odblokowany</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organizacje</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalendarz</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>zamknij</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID-organizacji</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nazwa</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Użytkownik</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Administrator</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Prawa użytkownika</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organizacja</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nazwa</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Dodaj organizację</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Dodaj organizację</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Anuluj</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Dodaj</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>skasuj organizację</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Użytkownik</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>dodaj użytkownika</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>skasuj użytkownika</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Dodaj uzytkownika do organizacji</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Wyszukaj użytkownika</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Wyszukaj</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Użytkownik</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organizacja</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Wprowadź</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Pokoje konferencyjne</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Pokoje konferencyjne</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nazwa</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>publiczny</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organizacje</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Pokoje spotkań</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nazwa</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Rodzaj</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Publiczny</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Komentarz</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>zapisz i eksportuj</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>wczytaj</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>zapisz jako</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Nazwa pliku</value>
+  </string>
+  <string id="201" name="files">
+    <value>nazwa pliku</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>anuluj</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>zapisz</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Błąd</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>wczytuję</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>wczytane obiekty</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>synchronizuję klientów; klienci oczekujący:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Wczytuję obrazek</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>synchronizuję klientów; klienci oczekujący:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>wyczyść obszar rysowania</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>wyczyść obszar rysowania - znikną wszystkie informacje z tablicy</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Potwierdź zanim wczytam plik</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Wyślij zaproszenie</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Wyślij zaproszenie</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Temat</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Do</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Treść zaproszenia</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Wyślij</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>anuluj</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>wyślij</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Dane użytkownika</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Twój pseudonim na potrzeby tej konferencji</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Pseudonim</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Imię</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Nazwisko</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>e-mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Język</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>wejdź</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Wczytuję</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Wczytywanie danych, proszę czekać!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Niepoprawne haslo</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Proszę wprowadzić dwa identyczne hasła o długości przynajmniej 6 znaków.</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Niepoprawny e-mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Wprowadziłe(a)ś niepoprawny adres e-mail</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Rejestracja zakończona</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Konto utworzone. Możesz się zalogować.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Nie możesz teraz pokazać swojego ekranu. Ktoś inny pokazuje teraz swój ekran.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Pokazywanie ekranu nie jest teraz dopuszczalne</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Pokaż swój ekran</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Zbyt niska przepustowość łącza: synchronizacja nie powiodła się. Pominięto kilka ramek. Jeśli ten komunikat powtarza się często poproś moderatora o obniżenie jakości transmisji.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Ekran użytkownika:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Obraz</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokument</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Czat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Pliki</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Uczestnicy</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Pobierz oryginalny dokument</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Pobierz dokument jako PDF</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Pokaż prezentację na tablicy</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfiguracja</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Przesuń obiekt</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Skaluj obiekt</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>z</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Przejdź do pierwszej strony</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Przejdź do poprzedniej strony</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Przejdź do następnej strony</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Przejdź do ostatniej strony</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zmniejsz</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Powiększ</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Pan</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Pani</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfiguracja</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Klucz</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfiguracja</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Klucz</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>ostatnio aktualizowane</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>aktualizowane przez</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>komentarz</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Wartość</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>z</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Użytkownicy</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>usuń użytkownika z organizacji</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Sk.</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Użytkownik już należy to tej organizacji.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Wiadomości</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Łącza</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Przejdź do konferencji</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Przejdź do sali wykładowej</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Pomoc i wsparcie</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Zgłoś błąd!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>więcej</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Witryna projektu (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Lista mailingowa użytkowników (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Zapamiętaj login i hasło</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Zawartość</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Moja strona startowa</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Moje zaplanowane spotkania</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Moje zaplanowane wykłady</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Publiczne spotkania</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Prywatne spotkania</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Publiczne wykłady</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Prywatne wykłady</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Public Content</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Prywatna zawartość</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Osobista zawartość</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderacja</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Poproś o moderację</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Głosowania</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Wybierz plik</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Ustawienia</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Ustawienia kamery</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Ustawienia tablicy</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Wyjście</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Wróć do listy pokojów</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Wyloguj</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Zapomniałe(a)ś hasła?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Ustaw nowe hasło</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Według maila</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Według loginu</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Twój adres e-mail</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Twój login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Wyślij e-mail z prośbą o potwierdzenie zmiany hasła</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Nie znaleziono adresu. Upewnij się, że wpisałe(a)ś ten sam adres, jaki podałe(a)ś przy zakładaniu konta.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Proszę podać e-mail lub nazwę użytkownika.</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Nie ma użytkownika o takiej nazwie</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>E-mail zawierający specjalne łącze (link) został wysłany na twój adres. Sprawdź swoją pocztę. Jeśli nie otrzymałe(a)ś listu, sprawdź/zmień ustawienia antyspamowe swojej skrzynki i ponownie wygeneruj mail potwierdzający zmianę hasła.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Informacja</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Błąd</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Niepoprawny kod. Nie ma takiego użytkownika.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Ustaw nowe hasło.</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>zmień hasło</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nowe hasło</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>powtórz hasło</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Hasła, które wpisałe(a)ś nie były identyczne.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 lub więcej znaków; małe i duże litery mają znaczenie!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Hasło ustawione. Możesz się zalogować.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Nieznany błąd. Proszę poinformować administratora.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Nie ma takiego użytkownika</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Niepoprawne hasło</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Poprawnie wylogowano.</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Samodzielna rejestracja nie jest możliwa.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Niepoprawny e-mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>plik o tej nazwie istnieje, proszę wybrac inną nazwę pliku</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>nazwa pliku za krótka</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Nie mogłem zapisać adresu</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Dodano użytkownika, ale należy go przypisać do organizacji, bo w innym przypadku nie będzie mógł się zalogować.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nowy wpis</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Nie ma pola o takim identyfikatorze.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>To pole nie ma etykiety.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Potrzebne zezwolenie administratora</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Edytor języka</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Język</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID-etykiety</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Nazwa etykiety</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Wartość</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Wartości pola</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nazwa etykiety</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Wartość etykiety</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID-etykiety</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Skasowałeś tylko etykietę, a nie pole! Nie możesz skasować pola, może mieć etykiety w innych językach.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Niepoprawne ID etykiety. FieldLanguagesvalues_Id nie zostało znalezione w bazie.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Nie można skasować tego pola. Można kasować tylko etykiety, a nie pola. Obecnie brak etykiety. Albo nie wskazano żadnego pola, albo to pole nie ma etykiety w języku, któty edytujesz.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>eksport</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Musisz się przelogować, aby zobaczyć zmiany.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Dodaj nowy język</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>skasuj język</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Dodaj nowy język</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nazwa</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>dodaj język</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Kopia zapasowa</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>pierwszy</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>poprzedni</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>następny</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ostatni</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>użytkownik mówi (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>włącz/wyłącz dźwięk</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Twoje ustawienia</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>cześć,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Edytuj swój profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nowe wiadomości:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Prześlij nowy obrazek</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Dane użytkowników - eksport</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Wszystkie organizacje muszą już istnieć!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>rozpocznij eksport</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>wg organizacji</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>rozpocznij eksport</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Dane użytkowników - import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>wskaż users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importuj</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Eksport do XML-a. Te pliki mogą być użyte:&lt;br/&gt; - jako twój wkład do projektu - do zaimportowania do innego systemu&lt;br/&gt; - jako kopia zapasowa - do dostosowania komunikatów do swoich potrzeb&lt;br/&gt; - do umieszczenia w katalogu z plikami językowymi przed kolejną instalacją</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Wskaż plik językowy do zaimportowania. &lt;br/&gt;Wybierz język z listy! &lt;br/&gt;Nie ważne jaka jest nazwa pliku, &lt;br/ &gt;zostanie on zaimportowany do tego języka!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>import - wskaż plik</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Zapisz jako</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nazwa:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Komentarz:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>zapisz</value>
+  </string>
+  <string id="395" name="record">
+    <value>Nagrania</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Przeglądarka nagrań</value>
+  </string>
+  <string id="397" name="record">
+    <value>Nagrania z pokojów publicznych i prywatnych</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Użytkownicy:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Dołączyli:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Użytkownicy w tym pokoju:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>odśwież</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Pokój jest pełny. Zajrzyj za parę minut.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>kliknij na pokój, aby zobaczyć szczegóły</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Czatuj z użytkownikami tego pokoju:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Pokój:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Użytkownicy w tym pokoju:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>od:</value>
+  </string>
+  <string id="409" name="record">
+    <value>odtwórz nagranie</value>
+  </string>
+  <string id="410" name="record">
+    <value>Długość:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Nie możesz tu nic zmieniać. To jest nagranie!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Odtwarzaj to nagranie</value>
+  </string>
+  <string id="414" name="record">
+    <value>Odtwarzaj / Pauza</value>
+  </string>
+  <string id="415" name="record">
+    <value>Rozpocznij nagrywanie</value>
+  </string>
+  <string id="416" name="record">
+    <value>zakończ nagrywanie</value>
+  </string>
+  <string id="417" name="record">
+    <value>Nagrywanie:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Już ktoś to w tej chwili nagrywa:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Nagrywane przez użytkownika:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>anuluj</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Nagrywanie zostanie anulowane i nie będzie zapisane.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>kontynuuj</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Zamknij to okno i powróć do nagrywania</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>zmień kolor linii</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Wybierz kolor</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Wyłącz / Włącz kolor linii</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>zmień kolor wypełnienia</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Wyłącz / Włącz kolor wypełnienia</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Zmień grubość linii</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>zamknij</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>zmień rozmiar czcionki</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Skasuj nagranie</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gość</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Przez:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nazwa</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Pokój</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>anuluj</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nazwa</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Skasuj transkrypt czatu</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Czat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>wyślij wiadomość</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emotikony</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emotikony</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Wybierz udostępniane urządzenia</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Dźwięk and Wideo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Tylko dźwięk</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Tylko obraz</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>bez transmisji Audio/Wideo (statyczny obrazek)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Nie będzie transmisji audio/wideo z twojego komputera. Zamiast tego zostanie pokazany obrazek (awatar) z twojego profilu. Wybierz te ustawienia, jeśli masz problemy z przepustowością lub bardzo wolne łącze internetowe.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>PO</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>WT</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ŚR</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>CZ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>PT</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SO</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>ND</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Poniedziałek</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Wtorek</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Środa</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Czwartek</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Piątek</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sobota</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Niedziela</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>TY</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Tydzień kalendarzowy</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Styczeń</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Luty</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marzec</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Kwiecień</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maj</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Czerwiec</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Lipiec</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Sierpień</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Wrzesień</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Październik</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Listopad</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Grudzień</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalendarz</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Uczetnicy</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Pokaż ustawienia wyglądu</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Szerokość | Wysokość</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Kontener wideo</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Kontener moderacji</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Kontener tablicy</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Włączony</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Szerokość | Wysokość</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Kontener plików, czatu, uczestników</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Włączony</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Szerokość | Wysokość</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderator wyszedł z pokoju. Nikt obecnie nie przeprowadza prezentacji. Możesz wystąpić z wnioskiem o zostanie moderatorem, albo poczekać.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>W pokoju nie ma moderatora, ale są uczestnicy. Możesz wystąpić z wnioskiem o zostanie moderatorem, albo poczekać.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Zaproszenie</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Wiadomość od użytkownika:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Wiadomość:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Kliknij na link, aby wziąć udział w spotkaniu:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Kliknij tu, any wejść do pokoju</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>jeśli masz kłopot z linkiem, skopiuj go i wklej do paska adresu w przeglądarce:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Zapisy</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Twoje dane użytkownika:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Hasło:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>e-mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Zespół $APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Zapisy</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - zmiana hasła</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Kliknij na ten link, aby wprowadzić nowe hasło:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Kliknij tutaj, aby wprowadzić nowe hasło</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>jeśli masz kłopot z linkiem, skopiuj go i wklej do paska adresu w przeglądarce:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Zmiana hasła</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Proszę wprowadzić poprawną datę, np. 24.12.2001 (dd.mm.rrrr)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Proszę wprowadzić poprawny adres e-mail, np. name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Proszę wpisać liczbę dziesiętną, np. 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Proszę wpisać liczbę całkowitą, np. 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Proszę wpisać poprawny numer telefonu, np. +48 12 1234567</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Proszę wpisać poprawny czas, np. 12:23 (gg:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Zabezpieczone hasłem</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Hasło</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Okres ważności</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Nieskończony</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Okres</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Jednorazowe</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Ważne od:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Ważne do:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Zaproszenie do $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Nie ma zaproszenia z takim kodem</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>To zaproszenie było już uzyte. Ten rodzaj zaproszenia nie może być wykorzystany powtórnie.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Ten kod zaproszenia jest nieważny.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Hasło:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Sprawdź hasło</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Niepoprawne hasło!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Audio_Wideo</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchronizuj Audio/Wideo</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Zalogowanie było poprawne, ale podana sesja nie jest aktywna lub przechowywana na serwerze. Musisz otrzymać nowy identyfikator sesji i potórzyć logowanie.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Ten identyfikator sesji nie jest zalogowany, albo nie ma uprawnień administratorskich. Brama SOAP wymaga użytkownika o uprawnieniach administratora do zamieszczania nowych użytkowników.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Ta sesja nie ma przyłaczonych danych użytkownika. Albo nie wuwołałeś poprawnie bramy SOAP przed dostępem do aplikacji, albo używasz niewłaściwego identyfikatora sesji.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Nagrywanie jest obecnie w fazie BETA testów!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>oś-x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>oś-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>s</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>szerokość</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>w</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>wysokość</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Zmień przezroczystość</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Otwórz przeglądarkę</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Zamknij przeglądarkę</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Utracono połączenie z serwerem. Przeładuj aplikację lub sprawdź swoje połaczenie sieciowe.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Wskaźnik</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizuję</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizuję użytkowników, proszę czekać</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Pobierz jako SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Pobierz jako PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Pobierz jako JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Pobierz jako PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Pobierz jako TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Typ zaproszenia:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategoria:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Powtarzanie:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>brak</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>lokalizacja:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Koniec</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Tytuł:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Komentarz:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Zaproś ludzi</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Codziennie</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Co miesiąc</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Co roku</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Koniec okresu jest przed jego początkiem!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Proszę podać tytuł!</value>
+  </string>
+  <string id="580" name="580">
+    <value>PDL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Włącz to, jeśli piszesz od prawej do lewej</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Tablica rozdzielcza</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Oglądaj nagrane spotkavia i wykłady</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Spotkanie - konferencja z 4 (do 16) użytkownikami&lt;br/ &gt;każdy ma możliwość nadawania audio/wideo</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Wykład - konferencja do 200 uczestników&lt;br/&gt;Tylko moderator może nadawać audio/wideo</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Utwórz użytkowników, pokoje, organizacje&lt;br/&gt; + zmień konfigurację</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Użytkownicy w tym pokoju</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Wczytuję dokument. Proszę czekać na zsynchronizowanie stacji klienckich.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Przesyłanie zakończone, przeprowadzam konwersję dokumentu ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Zacznij przesyłanie</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Przesyłanie i import. Proszę wybrać plik z dysku.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Anuluj</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Wybierz plik</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Połączenia</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Wartość</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>ID strumienia</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Połączony od</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Pokój / zakres</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Wyrzuć użytkownika</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Wyrzuć użytkownika</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Czy chcesz wyrzucić (rozłączyć) połączenie tego użytkownika? &lt;br/&gt; Wyrzucisz użytkownika z pokoju, ale może on się powtórnie zalogować.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Połączenie przerwane przez administratora lub moderatora.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Użytkownik jest moderatorem tego pokoju</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Użytkownik ma prawo do rysowania na tablicy</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re)startuj Audio/Wideo zmień ustawienia urządzeń</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Pozwól temu użytkownikowi rysować na tablicy</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Zabierz temu użytkownikowi prawo do rysowania na tablicy</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Użytkownicy</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Pliki</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tablica</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Czat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Twoje konto jest przypisane do kilku organizacji. Proszę wybrać jedną z nich na potrzeby bieżącej sesji.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Ten pokój jest chwilowo pełny. Zajrzyj później.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Rodzaj pokoju</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Pokój spotkań</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Czas serwera</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - przypomnienie</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Wiadomość od użytkownika:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Wiadomość:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Kliknij na ten link, aby wziąć udział w spotkaniu:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Kliknij tutaj, aby wejść do pokoju</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>jeśli masz kłopot z linkiem, skopiuj go i wklej do paska adresu w przeglądarce:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>wyszukiwanie wewnętrzne</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>zewnętrzni użytkownicy</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre-nazwa</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>nazwa</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>e-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>potwierdź wylogowanie</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Wylogowanie. Jesteś pewien?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Działania</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Pokój demo</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Czas demonstracji</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Zegar spotkania</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Ten pokój jest pokojem demo. Aby wyłączyć to ostrzeżenie utwórz prywatny pokój spotkań, dla własnego użytku, albo postaw własny serwer. Zostaniesz wylogowany automatycznie za:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderowany</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Poczekaj, aż moderator wejdzie do pokoju. Moderatorem może być wykładowca, administrator lub twórca tego pokoju.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Pojawia się udostępniony ekran</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Pojawia się nowy ekran udostępniony przez:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Rozpocznij udostępnianie</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Dodaj nowe spotkanie</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Pokój spotkań</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Sala wykładowa</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderacja</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderuj użytkowników</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderuj pokoje</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Czy chcesz aby użytkownik został moderatorem tej organizacji?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Proszę wskazać organizację, zanim spróbujesz przypisać do niej użytkownika!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organizacja - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Czy rzeczywiście chcesz usunąć użytkownika z organizacji?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Ten użytkownik jest moderatorem</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Ten użytkownik nie jest moderatorem</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Czy chcesz aby użytkownik nie był moderatorem tej organizacji?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Dodawaj i kasuj użytkowników i pokoje w swojej organizacji</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Czy rzeczywiście chcesz skasować ten wpis?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Czy rzeczywiście chcesz usunąć użytkownika z organizacji? Usuniesz tylko powiązanie użytkownika z tą organizacją. Aby rzeczywiście usunąć samego użytkownika, musisz zalogować się do panelu administratorskiego.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Nie możesz usunąć samego siebie!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Ta metoda wymaga użycia konta administratorskiego!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Nie ma sesji powiązanym z tym ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>To jest konto administratora lub moderatora. Możesz etdytować to konto tylko poprzez panel administracyjny.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Aby dokończyć rejestrację proszę kliknąć na link, albo skopiować URL do paska adresu w przeglądarce internetowej.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Kliknij tu, aby potwierdzić e-mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet   [ActivateUser]">
+    <value>Nie znaleziono użytkownika dla tego kodu.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet   [ActivateUser]">
+    <value>Ten użytkownik już jest zaktywowany!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet   [ActivateUser]">
+    <value>Poprawnie aktywowałe(a)ś swoje konto!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet   [ActivateUser]">
+    <value>Zaloguj się</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Twoje konto nie zostało aktywowane. Najpierw musisz kliknąć na link w e-mailu, który otrzymałeś podczas rejestracji.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Poprawnie się zapisałe(a)ś. Wysłaliśmy Ci e-mail z kodem potwierdzającym. Proszę sprawdź swoją skrzynkę.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Zabierz prawa moderatora temu użytkownikowi</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Nadaj prawa moderatora temu użytkownikowi</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Użytkownik</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Dostęp do tablicy</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderacja: Proszę wybrać użytkownika z listy, aby nadać mu prawa dostępu do tablicy, moderacji lub przesyłania wideo.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Ten użytkownik jest już moderatorem, więc automatycznie ma prawa do rysowania na tablicy.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>To ty! Nie możesz odebrać praw moderatora samemu sobie.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Zezwól użytkownikowi przesyłać jego głos i obraz wideo</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Usuń głos i wideo tego użytkownika</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Chciał(a)bym otrzymać prawa moderatora tego pokoju</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Chciał(a)bym otrzymać prawo do rysowania na tablicy</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Cciał(a)bym przesyłać głos i obraz wideo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Jesteś moderatorem tego pokoju</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Masz prawo rysować na tablicy</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Możesz transmitować dźwięk i obraz wideo</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Wiadomość dla moderatora</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Użytkownik</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>chciałby otrzymać prawa moderatorskie. Użyj ikonki statusu przy użytkowniku na liście, aby dać lub odebrać mu prawo moderacji.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>rysować na tablicy. Użyj ikonki statusu przy użytkowniku na liście, aby dać lub odebrać mu prawo do rysowania na tablicy.</value>
+  </string>
+  <string id="695" name="695">
+    <value>chciałby transmitować swój głos i obraz wideo. Użyj ikonki statusu przy użytkowniku na liście, aby dać lub odebrać mu prawo do transmitowania głosu i obrazu wideo.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Musisz poczekać, aż moderator wejdzie do pokoju.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Anuluj</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Zapisz</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dzień</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Miesiąc</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Rok</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Prześlij plik</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Nowy filder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Odśwież</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Śmietnik</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Moje pliki</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Pliki publiczne (dla pokoju)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Nowy plik</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Nowy folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Skasuj folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Zmień nazwę</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nowy folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Jesteś pewien, że chcesz to skasować?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Szukaj</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Szukaj</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Otwórz dokument</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Pokarz pliki (widok drzewa)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Zamknij dokument</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Skasuj plik</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Testy</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/portugues brazil.xml b/src/main/webapp/languages/portugues brazil.xml
new file mode 100644
index 0000000..3058f8e
--- /dev/null
+++ b/src/main/webapp/languages/portugues brazil.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferência</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Reunião</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditório</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Configurações</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Usuário</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administração</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Parar</value>
+  </string>
+  <string id="8" name="record">
+    <value>Gravar</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Nenhum arquivo disponível</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Admissão disponível apenas para professores</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Usuários conectados:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Iniciar uma conferência</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Meu nome:</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>VideoConferência</value>
+  </string>
+  <string id="15" name="import">
+    <value>Importar apresentação</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Atualizar lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Voltar ao índice principal</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>nova enquete</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Uma nova enquete para conferência.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pergunta:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipo de enquete:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Criar</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Cada usuário conectado recebe uma menssagem com a nova enquete.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Criar uma enquete</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Sim/Não</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numérico 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Enquete</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Eles podem ser moderadores/professores nessa área de enquetes</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Seu voto foi registrado.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Você já votou nessa enquete.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Votar !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Sua resposta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Sim</value>
+  </string>
+  <string id="35" name="no">
+    <value>Não</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Quer saber:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Resultados da enquete</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pergunta:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultados:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Respostas:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nenhuma enquete foi iniciada.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Votar!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Reunião (todos se vêem)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conference (um ou mais falam para milhares)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipo</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Outros participantes</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Já escolhido</value>
+  </string>
+  <string id="48" name="enter">
+    <value>entrar</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>O moderaror saiu da reunião.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Informações do sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Escolher dispositivo</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Escolher webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Escolher microfone:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancelar</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Você precisa reconectar.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Editar configurações.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Curso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Idioma:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Cancelar</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Limpar a lousa.</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Você quer que a lousa seja apagada antes que uma figura seja adicionada ?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Não perguntar de novo.</value>
+  </string>
+  <string id="65" name="no">
+    <value>Não</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Editar configurações</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Confirmação de requisição antes de limpar a lousa.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informações do usuário</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Limpar a lousa</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Desfazer</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Refazer</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Selecionar um objeto</value>
+  </string>
+  <string id="73" name="text">
+    <value>Texto</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Pintura</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Desenhar linha</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Desenhar sublinha</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Retângulo</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Seta</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>excluir ítem selecionado</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Aplicar para moderação</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Aplicar</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>fechar</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Tornar-se moderador</value>
+  </string>
+  <string id="85" name="close">
+    <value>fechar</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>negrito</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>AGUARDANDO</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Um usuário quer se tornar moderador:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>aceitar</value>
+  </string>
+  <string id="91" name="reject">
+    <value>rejeitar</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Enviando requisição para os seguintes usuários</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Aceito</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rejeitado</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Mudar moderador</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Você não está moderando este curso!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderador:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>A sala está cheia. Por favor tente novamente mais tarde.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>fechar</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>erro na entrada de dados</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Nome do usuário deve ter no mínimo 4 letras</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>senha deve ter no mínimo 4 letras</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Nome de usuário já existente</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>O email já foi registrado.</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Erro no sistema, por favor, contacte os administradores.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Usuário:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Senha:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>idioma</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Login</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Inscreva-se</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Usuário:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Senha:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Re-digite:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Primeiro nome:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Último nome:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>País:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrar</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>cancelar</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrar</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Início</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Usuários</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupos</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizações</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Salas de Conferência</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>público</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>organização</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>entrar</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Senha</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Re-digite</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Primeiro nome</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Último nome</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Aniversário</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Rua/Nro.</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>CEP/Cidade</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>País</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Endereço</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Dados do usuário</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>salvar</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Salvar</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>primeiro nome</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Ùltimo nome</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Mostrar próximo</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>mostrar anterior</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>excluir registro</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>cancelar</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>excluir</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>novo registro</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>atualizar registro</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>excluir registro</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Estado</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Desabilitado</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Habilitado</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>organizações</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>CALENDÁRIO</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>fechar</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID da Organização</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>nome</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>usuário</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderador</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Nível do usuário</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>organização</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nome</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Adicionar organização</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Adicionar organização</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>cancelar</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>adicionar</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Remover organização</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>usuário</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>adicionar usuário</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>excluir usuário</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>adicionar usuário</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>procurar usuário</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>procurar</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>usuário</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>organização</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>entrar</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Salas de Conferência</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Salas de conferência</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nome</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>público</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>organizações</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Salas de conferência</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>nome</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>tipo</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>público</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>comentário</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>salvar</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>abrir</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>salvar como</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>nome do arquivo</value>
+  </string>
+  <string id="201" name="files">
+    <value>nome do arquivo</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>cancelar</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>salvar</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>erro</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>carregando</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objetos carregados</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>sincronizando clientes... aguarde:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Carregando imagem</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>sincronizando clientes... aguarde:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>limpar área de desenho</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>limpar área de desenho, todos os dados da lousa serão perdidos</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirme antes de carregar o arquivo</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Enviar convite</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Enviar convite</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Assunto</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatário</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Mensagem</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Enviar</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>enviar</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Dados do usuário</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Seu apelido para essa conferência</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>apelido</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>primeiro nome</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>último nome</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>idioma</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>entrar</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Carregando</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Carregando dados, por favor aguarde!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Senha Incorreta</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Por favor digite duas senhas iguais com pelo menos 6 caracteres</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Email Incorreto</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Voê digitou um endereço de email inválido.</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Usuário registrado com sucesso</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Sua conta foi criada. Você pode fazer o login agora.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Você não pode compartilhar sua tela agora. Alguem já compartilhou a tela.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Compartilhamento perdido</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Compartilhe sua tela</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Falha na transmissão: Você não está apto a sincronizar a tela. Quadros serão perdidos. Caso esse aviso tenha sido mostrado cedo você pode pedir ao moderador para reduzir a qualidade.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Tela de:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Desenhar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Documento</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Conversar</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Arquivos</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membros</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download do documeto original</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download do pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Carregar apresentação no quadro</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuração</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Arrastar esse objeto</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Redimensionar esse objeto</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ir para primeira página</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ir para página anterior</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ir para a próxima página</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ir para a última página</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sra.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuração</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Chave</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuração</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Chave</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>última atualização</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>atualizado por</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comentário</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>chave</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Usuários</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>excluir usuário da Organização</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>excluir</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Este usuário já é membro desta organização.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Notícias</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Links Rápidos</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Ir para conferência</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Ir para auditório</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Ajuda e suporte</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://www.tvqweb.com.br</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://www.tvqweb.com.br</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Suporte</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>mais</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>http://www.tvqweb.com.br</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>http://www.tvqweb.com.br</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Relembrar Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Conteúdo</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Minha Home Page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Calendário</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Eventos Agendados</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Reuniões Públicas</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Reuniões Privadas</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Eventos Públicos</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Eventos Privados</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Conteúdo Público</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Conteúdo Privado</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Conteúdo Pessoal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value>Conteúdo</value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderação</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Aplicar para Moderação</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Conjuntos</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Escolha um arquivo</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Configurações</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Configurações de Cam e Mic</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Configurações da lousa</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Sair</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Voltar para salas</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Sair</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Esqueceu sua senha?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Redefinir a senha</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Usando o endereço de e-mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Using login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Seu email</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Seu login</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Enviar e-mail com um link para redefinição</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Nenhum endereço de e-mail foi encontrado. Verifique se você digitou o endereço de email que você usou para criar sua conta.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Por favor, indique um endereço de e-mail ou um nome de usuário</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Não existe usuário conectado com este nome</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Um email contendo um link foi enviado a seu endereço de email, por favor confira sua caixa postal. Se você ainda não tiver recebido um email, por favor ajuste as configurações de spam e re-envie a confirmação de email.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Erro</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Mensagem</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Hash inválido. Nenhum usuário encontrado.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Redefina sua senha</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>alterar senha</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nova senha</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>redigite a senha</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>As senhas que você digitou não são iguais.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 ou mais caracteres; maiúsculas e minúsculas são diferentes!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Senha configurada. Você pode acessar agora.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Erro desconhecido. Por favor informe isso ao Administrador.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username não encontrado</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Senha inválida</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Desconectado com sucesso</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Cadastro do frontend desabilitado.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Email inválido</value>
+  </string>
+  <string id="340" name="registration">
+    <value>nome de arquivo duplicado, por favor escolha outro nome</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>nome de arquivo muito curto</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Não foi possível salvar o endereço</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Usuário adicionado mas você precisa associar esse usuário a uma organização, se não ele não estará apto a se associar.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Novo Registro</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Nenhum campo encontrado com esse id.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Nenhum valor encontrado para este campo.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Necessário perfil de administrador</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor de idiomas</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Idioma</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Campo-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Campo-Nome</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valor</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Valores dos campos</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nome do campo</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Valor do campo</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Você apenas deletou o campo NÂO o Field! Você não pode excluir esse Field, podem existir campo em outros idiomas.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>campoid inválido. O FieldLanguagesvalues_Id não pode ser encontrado na base de dados.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Você não pode excluir esse Field. Você pode apenas excluir Labels NÂO Fields. Não existe Label carregado no momento, se nenhum Field for selecionado ou não existir Label para esse idioma para esse Field definido.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportar</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Você precisa fazer login novamente para visualizar as mudanças.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Adicionar novo idioma</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>excluir idioma</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Adicionar novo idioma</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nome</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>adicionar idioma</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ir para o primeiro</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>ir para o anterior</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ir para o próximo</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ir para o último</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>palestras do usuário</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>desligar/ligar som</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Suas configurações</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Olá,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editar meu perfil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Novas Mensagens:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Nova imagem</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Dados do Usuário - Exportar</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Todas as organizações já devem existir!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>começar a exportar</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Por organização</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>começar a exportar</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Dados do Usuário - Importar</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>escolha users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importar</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportar para XML - Esses arquivos podem ser usados para: - Contribua com o projeto - Importe em outro sistema - Backup - Customização - Coloque no diretório de idiomas para sua próxima instalação</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Escolha um arquivo de idioma para importar. Escolha o idioma correto no Combobox! Não importa o nome do arquivo, ele será importado nesse idioma!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importar - escolha o arquivo</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Salvar como</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nome:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comentário:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>salvar</value>
+  </string>
+  <string id="395" name="record">
+    <value>Gravações</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Vizualizador de Gravações</value>
+  </string>
+  <string id="397" name="record">
+    <value>Gravações de salas públicas e privadas</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Usuários :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Entrou:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value>Entrou:</value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Usuários nessa sala:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>atualizar</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Essa sala está cheia. Tente novamente em alguns instântes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>clique em uma sala para ver os detalhes</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat com os usuários dessa sala:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Sala:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Usuários nessa sala:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>desde:</value>
+  </string>
+  <string id="409" name="record">
+    <value>mostrar a gravação</value>
+  </string>
+  <string id="410" name="record">
+    <value>Tamanho:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Modo Gravação! Você não pode mudar nenhum valor, este é um arquivo gravado!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Mostrar essa gravação</value>
+  </string>
+  <string id="414" name="record">
+    <value>Reproduzir / Parar</value>
+  </string>
+  <string id="415" name="record">
+    <value>Começar gravação</value>
+  </string>
+  <string id="416" name="record">
+    <value>parar gravação</value>
+  </string>
+  <string id="417" name="record">
+    <value>Gravação:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Já existe alguém gravando nesse momento:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Gravando! Pelo usuário:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Gravação será cancelada e não será salva.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>continuar</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Fechar essa janela e continuar a gravação.</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>mudar cor da linha</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Mudar Cor</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disabilitar / Habilitar cor da linha</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>mudar Fillcolor</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disabilitar / Habilitar Fillcolor</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Mudar tamanho da linha</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>fechar</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>mudar tamanho da fonte</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>excluir Gravação</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Convidado</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Por:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Sala</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>excluir Server-Chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Bate-papo</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>enviar mensagem</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Escolher adaptadores publicados</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Áudio e Vídeo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Áudio somente</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Vídeo somente</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>sem Áudio/Vídeo (Image estática)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Nenhum Áudio/Vídeo do seu PC será publicado, ao invés disso uma figura do seu perfil será mostrada. Escolha essas configurações se você tem problemas com sua conexão ou uma conexão de Internet lenta.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>SEG</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TER</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>QUA</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>QUI</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>SEX</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SAB</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DOM</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Segunda</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Terça</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Quarta</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Quinta</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Sexta</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sabado</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Domingo</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CS</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendário da semana</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Janeiro</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Fevereiro</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Março</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Abril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maio</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Junho</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Julho</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Augosto</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Setembro</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Outubro</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembro</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Dezembro</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendário</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participantes</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostrar configurações de layout</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderação-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Lousa-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Habilitado</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Arquivos,Chat,Participantes - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Habilitado</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>O moderador saiu da sala. Nenhum está presente no momento. Você pode se candidatar para moderação ou esperar.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Não existe nenhum moderador nessa sala, mas existem alguns participantes. Você pode se candidatar a moderação ou esperar.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Convite</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Mensagem do Usuário:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Mensagem:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Click neste link para participar das reuniões:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Clique aqui para entrar na sala</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>se você tiver problemas com o link, por favor copie e cole isso no seu browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Inscrição</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Seus dados:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Senha:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>TVQWEB - Equipe</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>TVQWEB - Inscrição</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>TVQWEB - Redefinição de Senha</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Clique neste link para criar uma nova senha:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Click aqui para criar umanova senha</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>se você tiver problemas com o link, por favor copie e cole isso em seu browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>TVQWEB - Redefinição de Senha</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Por favor informe uma data válida, por exemplo 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Por favor informe um email válido, por exemplo nome@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Por favor informe um número de ponto flutuante, por exemplo 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Por favor informe um número (Inteiro), por exemplo 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Por favor informe um número de telefone válido, por exemplo ++49 1234 1234</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Por favor informe um horário válido, por exemplo 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Proteger com senha</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Senha</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Período de validade</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Final</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Período</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Uma vez</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valido de:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valido até:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Convite para reunião instantânea no TVQWEB</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Nenhum convite disponível para esse código</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>O convite já foi utilizado. Esse tipo de convite não pode ser reutilizado.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Esse código de convite não é válido.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Senha:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Verificar senha</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Senha Inválida!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Navegador</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Sincronizar Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Seu login estava correto, porém sua sessão expirou ou não está ativa no servidor. Por favor faça login novamente.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>O SessionID não está logado ou não tem privilégios de admin. O SOAP Gateway precisa de um usuário com privilégios de administrador para criar novos usuários.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>O gravador atualmente é Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>largura</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>altura</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Alterar transparência</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Abrir Navegador</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Fechar o Navegador</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>A conexão com o servidor foi perdida. Você precisa reiniciar a aplicação e/ou verificar sua conexão com a internet.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Ponteiro</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Sincronizando</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Sincronizando usuários, aguarde.</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download como SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download como PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download como JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download como PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download como TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Lembrete:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categoria:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetição:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Localização:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Inicio</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Fim</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Título:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comentário:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Convidar pessoas</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Diário</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mensal</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Anual</value>
+  </string>
+  <string id="578" name="alert">
+    <value>O fim do encontro marcado é antes do início!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Por favor, insira um título!</value>
+  </string>
+  <string id="580" name="580">
+    <value>Escrever da direita para a esquerda</value>
+  </string>
+  <string id="581" name="581">
+    <value>Ative isso se você escrever em uma linguagem de esquerda para a direita</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Painel</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Assista reuniões ou eventos gravados</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Faça uma conferência com vários usuários&lt;br/&gt;Todos terão acesso a áudio e vídeo</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Evento - Faça uma conferência com milhares de participantes&lt;br/&gt;Somente o Moderador terá acesso ao áudio e vídeo</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Criar usuários, salas, organizações&lt;br/&gt; acesso as configurações</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Usuários nessa sala agora</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Carregando Documento. Por favor aguarde enquanto todos os clientes são sincronizados.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload completo, convertendo documento...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Inicia Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload e Importação. Por favor, selecione um arquivo do seu disco.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancela</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Seleciona arquivo</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Conexões</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Valor</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Conectado desde</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Sala / Escopo</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Desconectar usuário</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Desconectar usuário</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Tem certeza que deseja desconectar esse cliente dessa conexão?&lt;br/&gt; Isso somente remove o cliente da sala atual. O cliente pode reconectar-se novamente.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Sua sessão foi terminada por um Administrador ou Moderador.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>O usuário é o moderador desta sala</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>O usuário está autorizado a desenhar na lousa</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Inicie áudio/vídeo ou modifique as configurações de dispositivos</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Permitir que esse usuário a desenhar na lousa</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remover a capacidade de desenhar na lousa</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Usuários</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Arquivos</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Lousa</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Bate-papo</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Sua conta está associada a várias organizações. Por favor escolha uma para essa sessão.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Esta sala está cheia nesse momento. Por favor tente mais tarde.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Tipo de sala</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Sala designada</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Hora do servidor</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>TVQWEB - Lembrete</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Mensagem do usuário:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Mensagem:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click nesse link para participar nas reuniões:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click aqui para entrar na sala</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>se você estiver com problemas nesse link, copie e cole este endereço em seu navegador:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>busca interna</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>usuários externos</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Nome</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Sobrenome</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirmar Saida</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Tem certeza que quer fazer logout?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Ações</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Sala Demo</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Tempo de Reunião</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Está é uma sala de demonstração. Para desligar esse aviso você deve entrar em reunião privada,ou configurar um servidor próprio. Você será desconectado em:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderado</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Por favor, aguarde até que o moderador tenha entrado na sala. O moderador pode ser um Professor, Admin ou o criador dessa sala.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Entrada do compartilhamento de tela</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Há um novo compartilhamento de tela do usuário:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Inicia compartilhamento</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Adiciona nova reunião</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Sala de Reunião</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Sala de Evento</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderação</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderar usuários</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderar salas</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Você quer alterar esse usuário para se tornar um moderador dessa organização?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Por favor, escolha uma organização antes de tentar adicionar um usuário para ele!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organização - Moderador</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Tem certeza que deseha excluir esse usuário dessa organização?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Este usuário é o moderador</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Este usuário não é o moderador</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Você deseja que esse usuário não seja moderador dessa organização?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Adiciona ou exlui usuários ou senhas dentro de usa organização</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Tem certeza que quer excluir esse registro?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Tem certeza que quer excluir esse usuário da sua organização? Você irá excluir somente a conexão do usuário entre a organização. Para excluir o usuário do sistema, vá para o painel de administração.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Você não pode excluir seu próprio usuário!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Este método necessita de uma conta administrativa a ser invocada!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Não existe uma sessão associada com esse ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Está é uma conta de administrador ou moderador. Você pode editar esta conta no painel de administração.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Para completar seu registro, clique no link ou cole a URL no seu navegador.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Clique para verificar seu e-mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Nenhum usuário encontrado para esse Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Este usuário já está ativado!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Você ativou com sucesso sua conta!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Logar agora</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Sua conta não está ativa. Use o link fornecido que foi enviado para seu e-mail durante o processo de registro.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Cadastro efetuado com sucesso. Enviaremos um e-mail com um código de verificação. Por favor, verifique seu e-mail.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove regras de moderação para esse usuário</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Dá direitos de moderação para esse usuário</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Usuário</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Acesso a lousa</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderação: Escolha um usuário da lista para conceder acesso a lousa, moderação ou video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Esse usuário já é moderador, então ele tem já tem direitos de desenhar na lousa.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Esse é você! Não é possível remover seu próprio direito de moderador.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Permite esse usuário publicar seu Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove ádio/Vídeo desse usuário</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Eu tenho uma pergunta.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Gostaria de desenhar na lousa</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Gostaria de compartilhar meu áudio/vídeo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Você é o moderador dessa sala</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Você está autorizado a desenhar na lousa</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Você está autorizado a compartilhar seu áudio/vídeo</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Mensagem do moderador</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>O usuário</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>gostaria de fazer uma pergunta.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>gostaria de desenhar na lousa.</value>
+  </string>
+  <string id="695" name="695">
+    <value>gostaria de compartilhar meu áudio / vídeo</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Você tem que aguardar enquanto o moderador entra na sala.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancela</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Salva</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dia</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mês</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Ano</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload de arquivo</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Adiciona pasta</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Atualiza</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Lixeira</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Meus Arquivos (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Arquivos da sala (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Adiciona arquivo</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Adiciona pasta</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Deleta pasta</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edita Nome</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nova pasta</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Tem certeza que quer excluir esse item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Busca</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Busca</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Abre documento</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Mostra todos os arquivos (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Fecha Documento</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Deleta arquivo</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Você não está autorizado a desenhar nada na lousa. Você precisa tornar-se moderador ou conseguir o direito. Você pode pedir esse direito a um moderador.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Propriedade do documento</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Inicia cliente (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Inicia cliente (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Um usuário deseja compartilhar sua tela. Quer ver isso?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Você está compartilhando seu desktop. Para parar, pressione o botão Stop no cliente de compartilhamento.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Compartilhar sessão</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Você já está compartilhando seu desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Visualisador de Desktop</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Sai</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Compartilhador de Desktop</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Clique em iniciar para publicar sua tela</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Inicia compartilhamento</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Para compartilhamento</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Seleciona a área de sua tela:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Troca largura</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>O compartilhamento foi finalizado nessa sessão!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Troca largura</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Largura:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Altura:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>A conexão foi terminada pelo servidor</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancelar</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Iniciar externo</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Se você fechar essa sessão completamente, você não será capaz de reiniciar o visualizador para essa sessão.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirme o fechamento do visualizador de sessão</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Compartilha Tela</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Grava sessão</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Melhor visualizado no Internet Explorer.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Anterior</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Próximo</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Recarregar</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Carrega</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Adiciona esse site como site padrão do seu perfil.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Teste as conf.</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Verifique se o microfone e a camera antes de entrar em uma sala .</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Não mostre esse teste novamente</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancela</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Iniciar conferência</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Não pergunte novamente</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>GRAVA</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Você pode continuar sem o teste, se você não pretente publicar sua imagem ou voz. Participantes sem audio e video podem usar a lousa, compartilhar o desktop ou usar o chat.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>PARAR</value>
+  </string>
+  <string id="767" name="767">
+    <value>Intensidade</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Pressione inicia</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Inicia Conferencia</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Iniciar Evento</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Selecione a sala</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Verifique a configuração</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Inicie a Conferência</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Passos para a conferência:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Iniciar Gravação</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Não mostrar Áudio/Vídeo teste (gravação) antes de entrar em uma conferência</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Salas públicas</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Salas públicas são acessiveis por todos os usuários.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Salas privadas</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Salas privadas são acessiveis somente por usuários da mesma organização.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Minha sala</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Salas criadas nessa seção são de uso pessoal. Elas são criadas através do calendário e tem um início e uma data final. Elas só estão listadas nesta seção durante sua validade.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Você tem que ser o moderador para fazer isso.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Pedir moderação</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Pedir acesso para a lousa</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Pedir acesso para camera/microfone</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Esse hash já foi usado. Você não pode utiliza-lo duas vezes.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>INICIA</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>SAIR</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Tem certeza que quer sair? Você deve limpar os documentos, lousa, e histórico do chat.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Deixar a conferência</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Salas</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Escolha uma sala para a reunião</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Existe um evento não salvo no calendário. Por favor salve ou exclua.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Por favor, adicionar pelo menos um participante para a reunião!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Tem certeza que quer excluir esse evento?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Aviso</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Adiciona evento</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>dia</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>semana</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mês</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Descrição</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Participantes</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, sua plataforma de conferência web. Você pode seguir os passos 1-2-3 para entrar em uma sala de conferência diretamente ou selecione a opcão calendário para planejar uma reunião.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Planejar Reunião</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Para configurar uma conferência você pode adicionar um novo evento ao calendário</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Precisa de ajuda?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restrito</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>busca</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Adiciona</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Não há nenhum usuário selecionado, Por favor selecione um item da lista, e depois clique em adicionar.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Adicionar Participante</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Salva</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Exclui</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Detalhes do evento</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Moderadores padrão</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Nome</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Adiciona o moderador padrão</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>É um Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Se a sala é moderada, usuários com permissão de Moderador ou Administrador são automaticamente Moderadores quando entram na sala. Se você não quer espeficificar e só deseja que um determinado usuário torne-se moderador use a opção Moderador Padrão.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Um Super Moderador é sempre um Moderador quando entra na sala, e ninguem pode remover seu privilégio de moderação.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Aplica Super-Moderação para o usuário</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super-Moderação do usuário</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Se você adicionar uma Organização para a sala apenas usuários dessa organização têm acesso a ela (esta opção só é válido se a opção Público não estiver selecionada!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderação</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitações</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organização</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Tem certeza?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Tem certeza que quer excluir esse item? Você precisa pressionar o botao Salvar para fazer as mudanças!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Nenhum usuário selecionado. Por favor selecione um depois adicione isso!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Adiciona um novo moderador padrão</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Quer adicionar a permissão de Super-moderador para esse usuário? Um super-moderador não é moderador somente da sala, e nenhum outro moderador pode remover a permissão de moderação dele. Você precisa salvar para que as configurações tenham efeito.</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Tem certeza que quer remover a permissão de Super-moderador para esse usuário? Você precisa salvar para que as configurações tenham efeito.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>É um Super-moderador. Você não pode remover a permissão de Moderação de um Super-moderador!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Tem certeza que quer exclurir esse Arquivo/Diretório?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Excluir Arquivo/Diretório?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Sr.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Propriedades</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Mostra a posição do mouse para os espectadores</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Compartilhar Audio com o SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Compartilhar Áudio e Vídeo via SIP com Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Ajuste</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Ver Tela</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>O Usuário</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>quer compartihar sua tela. Você quer ver?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Fecha</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>A sessão foi fechada pelo usuário que compartilhava!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pausa</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Novo compartilhamento de tela</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimiza</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximiza</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Vídeo</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Linha do tempo</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Minhas Gravações</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Gravações Públicas</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Nome</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Duração</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Data</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Por</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Vídeo - Principal</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Gravando</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Você pode gravar e compartilhar a qualquer momento. Para que outros usuários consigam ver sua tela, clique no botão Iniciar no topo da tela. Para somente gravar, clique no botão Inicia Gravação.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Inicia gravando</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Para a gravação</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download o arquivo FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Sala</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Parar</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>O microfone do usuário está ligado</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Interromper o compartilhamento</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Permitir perguntas dos usuários</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Desligue isso para evitar que qualquer usuário perturbe você nessa sala. O botão para pedir a moderação ("Eu tenho uma pergunta") fica invisível.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Direitos</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download como AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Somente Audio</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Os erros aconteceram no processo de gravação.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>A visualização da gravação ainda não está pronta. Por favor tente novamente em alguns minutos.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Gravador de mensagem</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>O Applet SIP não está pronto</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Configurações da conta SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>Definições SIP para cada usuário. Você pode ligar ou desligar o SIP via Administração &gt; Configuração (Chave: enable_sip). Os dados SIP para cada usuário deve ser criados automaticamente.</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>Usuário do SIP</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Senha do SIP</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>O Login no Gateway SIP falhou. Você deve conferir seus dados de autenticação do seu provedor SIP. Como administrador, você ainda poderá fazer o login e verificar a configuração. Como usuário ou moderador, você será bloqueado a partir de qualquer iteração.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>O Login no Gateway SIP falhou, entre em contato com o suporte do serviço!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logando no SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logando no SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Mostra Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log de mensagem do processo de gravação</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>Mensagem do Applet SIP</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>O Applet SIP não está pronto. Aceite o applet e clique em ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Para acessar outras gravações que você tem para fazer login no aplicativo $APP_NAME.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Escolha o usuário para este vídeo</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Você é um moderador nessa entrevista. Você pode decidir quem está falando nesta entrevista e pode iniciar / parar a gravação da Sessão.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Iniciar gravação</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Parar gravação</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>A gravação da entrevista já foi iniciada.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>A gravação está parada ou não foi iniciada ainda.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>A gravação desta entrevista já começou!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancelar</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>O processamento de uma entrevista demora 5 minutos por 1 minutos de entrevista. O progresso atual da transcodificacao da entrevista e processamento é a seguinte:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Você tem que digitar sua senha novamente para criar automaticamente os dados SIP</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generar SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Você não pode mover o arquivo ou pasta em sua própria pasta!</value>
+  </string>
+  <string id="923" name="file explorer">
+    <value>Tamanho da unidade</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Tamanho do HD público</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Propriedades da licença</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>Você pode vincular o usuário a uma data de expiração ou a um número máximo de minutos, quando você ativar o licenciamento.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Verifique licença</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Aquisição de volume</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Data de expiração</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Segundos restantes</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Tempo total</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Sua licença expirou. Você precisa comprar novos minutos (pagar por minuto) ou uma base fixa de consumo / volume.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Clique e compre</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Tempo restante em sua conta</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Informações de Licença de Usuário</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Fechar</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Sua licença expirou. Você precisa comprar novos minutos (pagar por minuto) ou uma base fixa de consumo / volume.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Propriedades da licença</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Você pode optar por comprar minutos para fazer videoconferências (pagar por minuto)&lt;br/&gt;&lt;br/&gt; Ou adquirir um plano de 3 a 12 meses&lt;br/&gt;&lt;br/&gt;Envio de convites (links diretos para salas de conferências) ou a criação de salas de conferências via o calendário com usuários externos só é permitido com uma base fixa de volume!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Compre 60 minutos: R$...</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Compre 5 horas: R$...</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Compre 3 meses R$...</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Compre 6 meses R$...</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pagar por minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Aquisição de volume</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>Você tem licença ilimitada</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Sua licença expira em:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>Você adquiriu o plano por minuto e ainda tem:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Compre mais créditos!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Quer seu prórpio serviço personalizado de videoconferências?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Você gostaria de ter o nome de seu aplicativo instalado em seu servidor ou integrado em seu Moodle, SugarCRM, site ou Intranet? Preços a partir de xxx reais por instalação!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Responder a:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Mensagem:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Clique aqui para informações de condições e contato</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Detalhes do cartão de crédito</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Nome</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Sobrenome</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Tipo de Cartão</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>Cartão VISA</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Descobrir</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Número do Cartão</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Data de Validade</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Número de verificação do cartão</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Endereço de Cobrança</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Endereço</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value>Endereço</value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Cidade</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>País</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Estado (somente US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>CEP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Quantidade</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Passo 1: $APP_NAME - Forma de Pagamento</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Clique"Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Obrigado por comprar o $APP_NAME. &lt;br/&gt; Tão logo recebermos o pagamento sua conta será atualizada. &lt;br/&gt; Você receberá um email com a sua factura em formato PDF. &lt;br/&gt; Você também pode verificar as transações atuais e passadas em seu configurações do perfil. &lt;br/&gt; &lt;br/&gt; Você pode fechar esta janela do navegador / guia agora e voltar para $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Confirme e compre!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Clique e compre!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Passo 3: Pagamento $APP_NAME - Confira a ordem e compre!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Nome</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Pagamento recebido!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Olá,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>Nós recebemos o seu pagamento. Seu perfil de usuário está atualizado agora. Veja anexo a sua fatura. As Notas Fiscais Futura e passada também podem ser baixadas em seu perfil de usuário.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Obrigado por utilizar o $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>$APP_NAME Pagamento Recebido -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Estado de pagamento e transações</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Código de transação</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutos</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Meses</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>R$</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Fatura</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value>Fatura</value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Você necessita pagar uma taxa para ser capaz de enviar convites ou criar encontros através do calendário. Com pagamento por minuto só é possível para você acessar o $APP_NAME. Você não pode permitir a terceiros o acesso a uma reunião.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Configurações</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>O número de conferência e PIN é criado automaticamente através do OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>Número SIP</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Limpar objetos desenhados na lousa!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Somente a URL digitada na barra de status é enviada para os participantes!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Faça salas de equipe [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Escolha usuários para a sala de equipe</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Você pode escolher usuários aqui e criar uma nova sala de conferência ("Equipe da Sala") para eles. Os usuários escolhidos irão automaticamente para a nova equipe da sala ou recebem uma notificação. Equipe da sala-Moderadores recebem ainda uma lista de salas atuais, para que possam mudar de sala, se houver a necessidade de um moderador.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Usuário</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Usuários para a nova sala de equipe:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Criar equipe da sala</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancelar</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Escolha pelo menos um usuário para a equipe da sala!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Adicionar usuário a equipe</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remover usuário da sala de equipe</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>Usuário é moderador. Ele pode gerenciar outros usuários</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Tipo de sala</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Se você ticar "Forçar usuario a mudar para nova Sala" todos os usuários escolhidos irão automaticamente para a recém-criada sala. Caso contrário, receberão uma notificação que eles &lt;i&gt;podem&lt;/ i&gt; mudar para a nova sala. Equipe de Moderadores sempre tem a livre escolha para gerir as Salas e alternar entre elas.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Gerencias salas de equipe</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Você pode alternar entre aqui todas as salas de equipe que são atribuídas como moderador de sala de equipe. Usuários dentro da sala de equipe, você podem lhe enviar uma mensagem, por exemplo, pedindo para vir para a sua sala de reunião e ajudá-los. Você também pode encerrar a sala de equipe e todos os usuários serão desconectados.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Forçar usuário a mudar para nova sala</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Nome</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Criado por</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value>Criado por</value>
+  </string>
+  <string id="1028" name="team-split">
+    <value>Criado por</value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Usuários disponíveis</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Adicionar um usuário com o "-" da esquerda ou removê-lo com o "+" da direita!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Configurações de salas de equipe</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Adicionar usuários à sala de equipe</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Nome da sala de equipe</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Sala de equipe</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Mudar para a sala</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Mudar para essa sala de equipe</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Encerrar sala de equipe e desconectar todos os usuários!</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Nova sala de equipe</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Há uma nova sala de equipe disponível para você!</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Mudar para uma sala de equipe</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Ações da sala de equipe</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Você pode reabrir esta janela através do menu principal &gt;&gt;&gt; ações</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Enviar mensagem ao moderador da sala de equipe</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Nova sala de equipe</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Há uma nova sala de equipe deisponível.Você pode mudar para essa sala. Salas de euipe são como grupos de trabalho com possibilidades de pedir ajuda ao moderador. Suas salas de equipe também estão disponíveis na seção "minhas reuniões".</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Mudar para a sala de equipe</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Criada por:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Nome da sala de equipe</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Esta janela permanecerá aberta mesmo que você deixe a sala!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Usuários para esta sala de equipe</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Outras sala de equipe para as quais você pode se mudar:</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Deixe uma mensagem para o moderador da sala de equipe.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Enviar</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Usuário convidados para esta sala de equipe</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>É moderador da sala de equipe</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Estes são todos os usuários que o moderador convidou para a sala de equipe</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>Não há moderador da equipe logado no momento!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Por favor insira uma mensagem</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Por favor, nos ajude!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>Um usuário de uma sala de equipe precisa de sua ajuda!</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Equipe da sala solicita ajuda</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Mensagem:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>De:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Você não está atualmente em qualquer equipe da sala. Mas você pode mudar aqui para todas as salas as quais você tem acesso.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Faça o backup do sistema. O backup inclui todos os dados de usuários. A configuração não está incluído, bem como as etiquetas de idiomas. Porque esses valores são importados com o instalador de sistema. Para atualizar seu sistema, exportar seu antigo sistema (1) re-instalar em um novo banco de dados um novo pacote (2) e importar o arquivo de backup novamente (3). O backup deve ser importado antes de gerar os dados no sistema recém-instalado.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Backup do sistema</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Permitir ao usuário Compartilhar/Gravar a tela</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Negar ao usuário compartilhar tela/Gravar</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>Usuário é Moderador, ele pode fazer qualquer coisa!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>gostaria de compartilhar/gravar a tela.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Você está autorizado a compartilhar/gravar a tela</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Aplicar para direito de compartilhar/gravar a tela</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Permitir/Negar direito de compartilhar/gravar tela</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Desligar o som</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Ligar o som</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Sala só com áudio</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Permitir controle remoto (Durante o Compartilhamento de Tela)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Negar Controle Remoto (Durante o Compartilhamento de Tela)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>Você está autorizado a controlar remotamente a tela (Durante o Compartilhamento de Tela)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>gostaria de controlar remotamente a tela.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>Usuário é Moderador, ele pode fazer qualquer coisa! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Permitir/Negar direito de acesso de controlar remotamente a tela (Durante o Compartilhamento de Tela)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Seu PC para o PC remoto: Para copiar e colar texto de sua área de transferência para a tela controlada remotamente, clique na tela, clique com o botão direito no campo de texto e escolha "insert" do menu.&lt;br/&gt;&lt;br/&gt;2) Do PC remoto para seu PC: Para copiar texto do PC remoto para o seu, destaque (clique e arraste sobre as palavras) o texto com o mouse na tela remota, clique com o botão direito e escolha a opção &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copiar e colar texto do seu PC para o PC remoto e vice versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copiar o texto realçado</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Como copiar e colar</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Qualidade do compartilhamento de tela:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Qualidade muito alta</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Qualidade alta</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Qualidade média</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Qualidade baixa</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Teclado:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Feche conferência!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>a conferência terminou. Você será direcionado para assuntos interessantes em</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Fechar a sala</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Fechar endereço eletrônico</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Configurações de terminação da sala</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Se a sala estiver encerrada, usuários serão redirecionados para o endereço eletrônico</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Nome</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Arquivo de configuração</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Configuração LDAP</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Nome</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Habilitado</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserido</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserido por</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Atualizado</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Atualizado por</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>Os arquivos de configuração estão na pasta webapps/openmeetings/conf. Você precisa carregar manualmente os arquivos para esta pasta. As alterações no arquivo de configuração estarão imediatamente online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Nome de arquivo de configuração</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Se você escolheu "Adicionar domínio para nome de usuário" o valor no campo "domínio" é adicionado para cada login que o usuário digitar no box de login. Isso é útil se o login no LDAP é salvo incluindo o nome do domínio. Exemplo: Usuário entra com "Maria" especificado como "localhost.com". O login que é verificado em relação ao LDAP é maria@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Adicionar Domínio ao usuário</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Inserir</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copiar o texto realçado</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Texto da área de transferência remota</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Mostrar área de transferência remota</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Não mostrar novamente</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copiar o texto aqui ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Editar configurações padrão ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Não mostrar caixa de informação no controle remoto sobre Copiar e Colar</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Salvar</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remover</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancelar</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Convidar usuário a sala de conferência</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Escolha uma sala de conferência. O usuário convidado irá receber uma mensagem com seu nome e um link para a sala.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Conectado desde:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Entre na sala após o envio de convite</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Convidar</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Mensagem</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Mensagem convite</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Enviar convite</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>&lt;b&gt;não&lt;/b&gt; aceitou seu convite!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Aceitar</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Aceitar</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Fuso horário</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Descrição</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Criado por</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Mensagem Fuso Horário</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Marque a opção "Mensagem do Fuso Horário" para apresentar aos usuários uma mensagem na próxima vez entrarem para atualizar o perfil.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Por favor, verifique o fuso horário no seu perfil de usuário.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>Nova conferência $APP_NAME</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Detalhes:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Inicio:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Fim:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Conferência $APP_NAME Modificada:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizador:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Conferência $APP_NAME Cancelada:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME Lenbrete de conferência:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Definições comunitárias</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Mostrar dados de contato para todos.</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Adicionar campos de interesse que você tem a oferecer ou que você está procurando, para encontrar parceiros interessantes para uma conferência. Vírgula separa os termos (por exemplo: serviço médico, garantia de saúde, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Minhas ofertas</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Meus interesses</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Fuso horário</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Áreas de interesse</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Informações para contato</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Mostrar dados de contato apenas para os contatos</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Não mostrar dados de contato</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Meu Perfil</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Editar configurações</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Pesquisar usuários</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Veja o seu perfil como outro o vêem</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edite suas configurações, adicionar os seus interesses para ser encontrado</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Pesquisar outros usuários e ampliar sua rede</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Pesquisar</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Usuário oferece</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Usuário procura</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Texto livre</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Nome</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Fuso Horário</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Oferece</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Busca</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Resultado da pesquisa</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Ações</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Adicionar aos contatos</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contatos e Mensagens</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Aceitar</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Negar</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Olá,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>gostaria de adicioná-lo como contato.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Verifique os seus pedidos de contacto em $APP_NAME ou clique sobre os links para aceitar ou negar o pedido</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>Este usuário já está em sua lista de contatos ou recebeu um convite para sua lista de contatos que não foi respondida ainda.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Sua lista de contatos</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edite seu contato e mensagens, &lt;br/&gt; gerencie seus contatos pendentes!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmou você como contato!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value>Informação de chat</value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Mostrar / Copiar log do chat</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Log do chat</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>De</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Assunto</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Enviar</value>
+  </string>
+  <string id="1205" name="private message">
+    <value>Enviar</value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Menssagens</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Novo email</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Clique para escrever uma nova mensagem para quaquer um de seus contatos</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Escrever nova mensagem</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>Para:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Assunto:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Ative ajuste e a lousa irá ampliar na tela inteira, então &lt;br/&gt; documentos estarão visíveis de acordo com a resolução da tela de cada participante.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Expulsar usuário</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>Você não pode expulsar a si mesmo da sala de conferência! Se você quiser sair da sala feche o navegador!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Você realmente deseja desconectar este usuário da sala de conferência?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirme ação ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>Você não pode expulsar um Super-Moderador de uma sala!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Iniciar</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Fim</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Adicionar uma solicitação de reunião opcional para a mensagem e criar uma sala de conferência. O evento é copiado no calendário de cada participante.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Caixa de Entrada</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Enviado</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Lixo</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>Este é você! Você não pode adicionar a si mesmo como contato.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>O usuário já está negado!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>O usuário já está aprovado!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>Este hash de contato do usuário é inválido!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Usuário adicionado à lista de contatos!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>Usuário negado como contato e removido da lista de contatos pendentes!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>Não há esse contato!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Será que você realmente deseja remover o contato?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirmar remoção de contato</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Deletar contato da lisa</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Perfil de usuário</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Mostrar o perfil do usuário</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Mensagens</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Pesquisar</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Selecionar todos</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Desmarcar</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Selecionar não lidas</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Selecione ler</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Mover para pasta ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Adicionar nova pasta ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Excluir</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>e-mails deletados ainda permanecem na sua lixeira!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Marcar não lidas</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Marcar lidas</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Responder</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Responder a todos</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Para frente</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Ações ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Enviar mensagem privada</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nada selecionado!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Mover para Caixa de Entrada</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>Essa ação não pode ser desfeita!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Adicionar pasta</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Adicionar pastas e organizar suas mensagens!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Adicionar pasta</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Adicionar</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>excluir pasta</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>Você não pode excluir esta pasta, ainda existem nela! Excluir primeiro as mensagens ou movê-los para outra pasta.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Você realmente quer apagar esta pasta? Não há maneira de desfazer isso.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>O seu pedido foi enviado para o usuário. O usuário receberá uma notificação para aceitar ou negar o seu pedido. Apenas os pedidos aceitos estão em sua lista de contatos, é claro!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Mensagem</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>O usuário não compartilha seus dados de contato pessoal.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>O usuário não compartilha seus dados pessoais de contacto só para contatos.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Endereço &amp; Telefone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>Seu código de convite não é válido, o código só é válido durante esta data e hora específicas:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Este evento está ligado a vários calendários de outros usuários. Sua alteração irá também atualizar o calendário deles. Será que você realmente gostaria de atualizar o evento?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirme atualização</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Permitir que contato veja meu calendário (somente visualização)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Não compartilhe o calendário</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendário de contatos</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Seus contatos devem aprová-lo primeiro para poder ver seu calendário.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Você não pode armazenar ou excluir eventos de outros calendários. Somente do seu!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Mostrar o meu calendário de novo!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Este evento está ligado a vários calendários de outros usuários. Sua ação também irá apagar o evento do calendario deles. Será que você realmente deseja apagar o evento?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirme ação</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Entre na sala</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Acesse a sala de conferência</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>Há uma sala de conferências e evento reservados com esta mensagem privada.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>Você precisa armazenar o evento primeiro!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Não há sala disponível. O evento no calendário para esta sala já foi apagado!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Escolha seu apelido</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Primeiro nome</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Último nome</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Tamanho mínimo 4 caracteres! Tanto Nome e Sobrenome</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Por favor, entre com email válido!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Entrar com sua conta do Facebook</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Membro desde</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Você conectado com sua conta do Facebook. Você deve atualizar seu perfil com o e-mail correto. Caso contrário, você não receberá convites e mensagens privadas de outros usuários.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Mensagem</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Não mostrar mensagem de atualização de perfil novamente</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>mais opções de tela ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Nova mensagem privada:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Clique aqui para visitar o seu perfil para ver a mensagem completa ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Responder</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Salas e bate-papo</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Minhas salas</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Minha sala de conferência (de 1-16 usuários)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Minha sala de seminário (Webinar) (de 1-120 usuários)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>ID do dono</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Digite uma senha</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Você precisa de uma conta com nível de Usuário, Moderador ou Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (acesso apenas através via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Carregar diretamente na lousa</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Você realmente deseja remover esta lousa? Essa ação não pode ser desfeita!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Carregar para a lousa</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Não se esqueça de "Iniciar gravação", se você quiser ter a reunião gravada.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Iniciar gravação</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Seta</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circulo</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Linha</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Quadrado</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangulo</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Texto/Nota</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Desenho livre</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Selecionar/Mover</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Desenhar uma forma</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cortar/Mover</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Imprimir</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Desfazer</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Lixo</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Adicionar Grade</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Compartilhar Arquivo</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Selecionar Forma</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Selecionar Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copiar</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Recortar</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Colar</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Excluir</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Você realmente deseja excluir todo o conteúdo da lousa?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Carregar directamente para a lousa</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Participantes</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Gerente de participantes</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Presente</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Controle remoto</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Ejetar</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Bate-papo</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Convidar Participantes</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>Por Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>É moderador</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>Webcam do usuário ligada</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Desativar preenchimento de formulário</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Ativar preenchimento de formulário</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Ajustar ao grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Permitir gravação</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Espere para gravação</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Ocultar barra superior</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Reproduzir vídeo</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Você realmente deseja excluir objetos desenhados na tela atual?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Aceitar e conceder direito de usuário</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Negar</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>Eu</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Atividades e ações</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remover a lousa</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Você precisa da moderação ou o direito de desenhar no quadro branco para remover quadros!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Não é permitido</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>saiu da sala.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Ícones de Matemática</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Nenhuma categoria</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Cor-Estilo</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Qualidade</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domínio</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visitar</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>Verde mar médio</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>azul celeste</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>Azul escuro</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>Amarelo ouro</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>Prata</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>definicao do usuário</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>o melhor</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medio</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Fechar o microfone</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Ativar microfone globalmente</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Microfone dos outros mudo</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>Você está globalmente silenciado pelo moderador. Você não pode reativar!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Silenciar o microfone totalmente?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Você realmente quer silenciar-se globalmente? Nenhum outro usuário vai ouvir você!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Silenciar microfone localmente?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Você realmente quer silenciar este microfone? Você só pode silenciá-lo localmente em sua tela. Não tem nenhum efeito para outros usuários. Apenas os moderadores podem desligá-lo globalmente!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Silenciar microfone globalmente?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Você realmente quer para silenciar este usuário globalmente? Nenhum outro usuário vai ouvi-lo mais!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Seu som está ligado. Clique aqui para enviar mensagem ao moderador para silenciar seu microfone (para toda sala de conferência)!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Seu som está desligado. Clique aqui para enviar mensagem ao moderador para ativar seu microfone (para todos na sala de conferência)!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>gostaria que o moderador silenciasse meu microfone.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>gostaria que o moderador habilitasse microfone globalmente.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>gostaria que o moderador habilitasse o microfone dele/dela.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>gostaria que o moderador desabilite o microfone dele/dela.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Microfone mudo. Clique aqui para ativar o microfone seu / dela!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>Este usuário foi silenciado pelo moderador. Você não pode ativa-lo!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Silenciar o microfone</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Ativar o microfone para toda a sala</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Microfone mudo</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Ativar microfone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Silenciar microfone</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Ativar microfone para toda a sala</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Somente moderadores podem silenciar ou ativar um usuário! Para silenciar o microfone próprio: Por favor, use o ícone de microfone na caixa de vídeo!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Nome da enquete</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Você</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Enquetes arquivadas</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>ativo</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Gráfico simples</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Gráfico de pizza</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Por favor, indique e-mail</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Nova(s) mensagem(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Encerrar enquete</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Tem certeza que deseja encerrar esta enquete? Ninguém será capaz de votar após isto.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Excluir Enquete</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Tem certeza de que deseja excluir esta enquete? Os resultados serão excluídos.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Permitir/Negar o direito de dar áudio exclusivo.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Permitir ao usuário dar áudio exclusivo</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Negar usuário dar áudio exclusivo</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>gostaria de obter uma permissão para áudio exclusivo.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>gostaria de obter permissão para áudio exclusivo.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>dar permissão para áudio exclusivo.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Resolução da camera</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Alterar a resolução afeta a largura de banda, foto maior precisa de mais largura de banda!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>Você não tem permissão conceder audio exclusivo a si mesmo ou outras pessoas. Você precisa ter permissao do moderador ou pedir ao moderador para lhe dar áudio exclusivo.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Gostaria de obter o direito exclusivo para áudio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Dê áudio exclusivo para mim (em alternativa clique sobre o vídeo pod ou pressione F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microfone está ligado!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microfone está mudo</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Ocultar bate-papo</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Ocultar atividades</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Ocultar o explorador de arquivos</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Ocultar menu de ações</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Ocultar o compartilhamento de tela</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Ocultar a lousa</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Mostrar status de microfone no vídeo</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Opções de layout</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Novo Evento</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Protegido por senha são os links para a conferência que são enviados para os participants quando você salvar o calendário de eventos, e não a sala! Isso significa que se você salvar o evento várias vezes, mas com senhas diferentes, cada participent recebe um novo link que tem uma senha diferente. Mas os links antigos ainda funcionam uma vez enviados!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Editar detalhes</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Mostrar discador SIP</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Chamar</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Mostrar eventos de calendário de contato</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Página inicial!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Planeje suas reuniões</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Assista a gravação e entrevistas</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Escolha e inicie uma web-conferência</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Gerencie usuários e direitos</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Gerencie conexões e expulse usuários</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Gerencie grupos de usuários</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Gerenciar salas de conferência</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Gerenciar as configurações do sistema</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Gerenciar rótulos e redação</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Gerenciar LDAP e configurações de ADS</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Exportar/Importar Backups do Sistema</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Você precisa ser um moderador ou ter direitos para "desenhar na lousa", adicionar, excluir ou carregar arquivos e pastas.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Editar texto</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publicar</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Iniciar Publicação</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Parar Publicação</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Contexto</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Id da Publicação</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduza a largura do compartilhamento de tela antes de tentar mover isto para esquerda</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduzir a altura da tela compartilhada antes de tentar movê-lo para o fundo</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduzir o x da tela compartilhada antes de tentar torná-la mais ampla</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduzir o y da tela compartilhada antes de tentar torná-la maior</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Favor iniciar o compartilhamento de tela para publicar isto</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>É necessária permissão de moderador para iniciar a gravação</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>Você não tem permissão para habilitar áudio exclusiva para qualquer participante. Você precisa de direitos de moderação ou o direito exclusivo de áudio para habilitar qualquer microfone em modo exclusivo..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Carregar novo arquivo para a pasta de arquivos</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Abra nova caixa de diálogo com as configurações de compartilhamento</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Um moderador existente tem que aprovar isto</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Pergunte moderador para compartilhar sua webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Reúna comentários, criando uma enquete</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Resultados da enquete corrente e passada como gráfico</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Votar se houver uma enquete para esta sala de conferência</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Editar configurações de câmara e microfone</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirmar e sair da sala</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Ligue para pessoas externas via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Envie um email com um link direto para esta sala</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Alterar as configurações de sua lousa</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Tamanho máximo de upload</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Pergunte ao moderador para compartilhar sua lousa</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Começar bate-papo particular / privado</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Todos / tudo</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>Você não pode iniciar um bate-papo consigo mesmo!</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Você já iniciou um bate-papo com este participante!</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Você realmente quer apagar esse bate-papo?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servidores</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servidores em cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Nome do servidor</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Endereço do servidor</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Detalhes do servidor</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Enviar SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publicando...usuário</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Para ganhar tempo e economizar tráfego na internet você pode usar "command line admin" para backupear / restaurar / atualizar / upgrade:\n 1) Vá ao diretório instalador TVQWEB (por ex. /opt/red5) \n 2) pare o TVQWEB (por ex. ./red5-shutdown.sh)\n 3) ./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)\n 4) download archive with new OM\n 5) mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))\n 6) extract downloaded OM to the /opt/red5\n 7) ./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )\n 8) start OM\n</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Salas comuns a todos os usuários</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Salas comuns ao atual grupo de usuários</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Salas do atual usuário</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Crie / modifique sala especial de reunião</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Você pode entrar com endereços múltiplos no formato : firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Ajuste volume da transmissão</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Ajuste volume do microfone</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>É moderada por chat</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Permite mensagens</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Painel de bate-papo aberto por definição</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Painel de arquivos aberto por definição</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Último ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Todo escravo envia um ping para o mestre a cada 3 segundos (configurável). O último ping do escravo precisa ser menor que 1 minuto para que o mestre use o escravo.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>Porta HTTP</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>Usuário (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Senha</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocolo</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping em andamento</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Ativar</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Gerar convite</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Teste de conexão</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto selecionar sala de entrevista</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Sublinhar</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Estilo da fonte</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Permitir estilos de fonte</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Cor da fonte</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Mostrar estatísticas de sessão</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Detalhes da sessão</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>Importação de sistema</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Incluir arquivos armazenados e gravações no backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Permitir "SIP transport" na sala</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Dar exclusividade de áudio a este usuário?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Por favor, especifique seu fuso horário / timezone</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Salvando conteúdo. Por favor, aguarde!</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/portugues.xml b/src/main/webapp/languages/portugues.xml
new file mode 100644
index 0000000..3430f72
--- /dev/null
+++ b/src/main/webapp/languages/portugues.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferência</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Reunião</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditório</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Configurações</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Usuário</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administração</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Parar</value>
+  </string>
+  <string id="8" name="record">
+    <value>Gravar</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Nenhum arquivo disponível</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Admissão disponível apenas para professores</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Usuários conectados:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Iniciar uma conferência</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Meu nome:</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>VideoConferência</value>
+  </string>
+  <string id="15" name="import">
+    <value>Importar apresentação</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Atualizar lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Zum Hauptverzeichnis</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>nova enquete</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Uma nova enquete para conferência.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pergunta:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipo de enquete:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Criar</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Cada usuário conectado recebe uma menssagem com a nova enquete.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Criar uma enquete</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Sim/Não</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numérico 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Enquete</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Eles podem ser moderadores/professores nessa área de enquetes</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Seu voto foi registrado.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Você já votou nessa enquete.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Votar !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Sua resposta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Sim</value>
+  </string>
+  <string id="35" name="no">
+    <value>Não</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Quer saber:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Resultados da enquete</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pergunta:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultados:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Respostas:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Nenhuma enquete foi iniciada.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Votar!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Reunião (máximo 4 assentos)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conference (máximo 50 assentos)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipo</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Outros assentos</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Já escolhido</value>
+  </string>
+  <string id="48" name="enter">
+    <value>entrar</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>O moderaror saiu da reunião.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Informações do sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Escolher dispositívo</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Escolher webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Escolher microfone:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>cancelar</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Você precisa reconectar.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Editar configurações.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Curso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Idioma:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>cancelar</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Limpar a lousa.</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Você quer que a lousa seja apagada antes que uma figura seja adicionada ?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Não perguntar de novo.</value>
+  </string>
+  <string id="65" name="no">
+    <value>Não</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Editar configurações</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Confirmação de requisição antes de limpar a lousa.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informações do usuário</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Limpar área de desenho</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Desfazer</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Refazer</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Selecionar um objeto</value>
+  </string>
+  <string id="73" name="text">
+    <value>Texto</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Pintura</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Desenhar linha</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Desenhar sublinha</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Retângulo</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Seta</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>excluir ítem selecionado</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Aplicar para moderação</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Aplicar</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>fechar</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Tornar-se moderador</value>
+  </string>
+  <string id="85" name="close">
+    <value>fechar</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>negrito</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>AGUARDANDO</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Um usuário quer se tornar moderador:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>aceitar</value>
+  </string>
+  <string id="91" name="reject">
+    <value>rejeitar</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Enviando requisição para os seguintes usuários</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Aceito</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rejeitado</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Mudar moderador</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Você não está moderando este curso!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderador:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>A sala está lotada. Por favor tente novamente mais tarde.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>fechar</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>erro na entrada de dados</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>nome do usuårio deve ter no mínimo 4 letras</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>senha deve ter no mínimo 4 letras</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Nome de usuário já existente</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>O email já foi registrado.</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Erro no sistema, por favor, contacte os administradores.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Usuário:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Senha:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>idioma</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Login</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Sign Up</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Usuário:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Senha:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Re-digite:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Primeiro nome:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Último nome:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>País:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrar</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>cancelar</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrar</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>home</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Usuários</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupos</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizações</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Salas de Conferência</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>público</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>organização</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>entrar</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Senha</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Re-digite</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Primeiro nome</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Último nome</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Aniversário</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Rua/No</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>CEP/Cidade</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>País</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Endereço</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Dados do usuário</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>salvar</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Salvar</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID DO USUÁRIO</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>primeiro nome</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>último nome</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>mostrar próximo</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>mostrar anterior</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>excluir registro</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>cancelar</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>excluir</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>novo registro</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>atualizar registro</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>excluir registro</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>desabilitado</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>habilitado</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>organizações</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>calendário</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>fechar</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID da Organização</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>nome</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>usuário</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>mod</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>nível do usuário</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>organização</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nome</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>adicionar organização</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>adicionar organização</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>cancelar</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>adicionar</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>remover organização</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>usuário</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>adicionar usuário</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>excluir usuário</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>adicionar usuário</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>procurar usuário</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>procurar</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>usuário</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>organização</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>entrar</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>salas de conferência</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Salas de conferência</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nome</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>público</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>organizações</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Salas de conferência</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>nome</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>tipo</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>público</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>comentário</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>salvar</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>abrir</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>salvar como</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>nome do arquivo</value>
+  </string>
+  <string id="201" name="files">
+    <value>nome do arquivo</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>cancelar</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>salvar</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>erro</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>carregando</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>objetos carregados</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>sincronizando clientes, clientes a esperar:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Carregando imagem</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>sincronizando clientes, clientes a esperar:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>limpar área de desenho</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>limpar área de desenho, todos os dados da lousa serão perdidos</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirme antes de carregar o arquivo</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Enviar convite</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Enviar convite</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Assunto</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatário</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Mensagem</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Enviar</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>enviar</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Dados do usuário</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Seu apelido para essa conferência</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>apelido</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>primeiro nome</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>último nome</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>idioma</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>entrar</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Carregando</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Carregando dados, por favor aguarde!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Senha Incorreta</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Por favor digite dois passwords idênticos com pelo menos 6 caracteres</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Email Incorreto</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Voê digitou um endereço de email inválido.</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Cadastro completo</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Sua conta foi criada. Você pode fazer o login agora.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Você não pode compartilhar sua tela agora. Alguem já compartilhou a tela.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Compartilhamento perdido</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Compartilhe sua tela</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Falha na transmissão: Você não está apto a sincronizar a tela. Frames serão perdidos. Caso esse aviso tenha sido mostrado cedo você pode pedir ao moderador para reduzir a qualidade.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Tela de:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Desenhar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Documento</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Arquivos</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Membros</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Download do documeto original</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Download do pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Carregar apresentação no quadro</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuração</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Arrastar esse objeto</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Redimensionar esse objeto</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ir para primeira página</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ir para página anterior</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ir para a próxima página</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ir para a última página</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sra.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuração</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Chave</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuração</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Chave</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>última atualização</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>atualizado por</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comentário</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>chave</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Usuários</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>excluir usuário da compania</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>excluir</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Este usuário já é membro desta companhia.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Notícias</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Links Rápidos</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Ir para conferência</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Ir para auditório</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Ajuda e suporte</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Reportar um bug!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>mais</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Website do projeto (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Lista de emails (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Relembrar Login</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Conteúdo</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Minha Home Page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>My Reuniões Agendadas</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My Eventos Agendados</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Reuniões Públicas</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Reuniões Privadas</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Eventos Públicos</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Eventos Privados</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Conteúdo Público</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Conteúdo Privado</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Conteúdo Pessoal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderação</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Aplicar para Moderação</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Conjuntos</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Escolha um arquivo</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Configurações</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Configurações de Cam e Mic</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Configurações da lousa</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Sair</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Voltar para salas</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logout</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Visão Desktop</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>iniciar visão Desktop</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Vídeo e Áudio</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Chat</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Lousa</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Moderação</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Arquivos</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Usuários</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Conjuntos</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Não existe usuário conectado a este nome</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Um email contendo um link foi enviado a seu endereço de email, por favor confira sua caixa postal. Se você ainda não tiver recebido um email, por favor ajuste as configurações de spam e remande a confirmação de email.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Erro</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Mensagem</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Hash inválido. Nenhum usuáio encontrado.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Reset sua senha</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>alterar senha</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nova senha</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>redigite a senha</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>As senhas que você digitou não são iguais.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 ou mais caracteres; maiúsculas e minúsculas são diferentes!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Senha configurada. Você pode se logar agora.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Erro desconhecido. Por favor informe isso ao Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Username não encontrado</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Senha inválida</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Desconectado com sucesso</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Cadastro do frontend desabilitado.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>EMail inválido</value>
+  </string>
+  <string id="340" name="registration">
+    <value>nome de arquivo duplicado, por favor escolha outro nome</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>nome de arquivo muito curto</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Não foi possível salvar o endereço</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Usuário adicionado mas você precisa associar esse usuário a uma organização, se não ele não estará apto a se associar.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Novo Registro</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Nenhum campo encontrado com esse id.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Nenhum Label encontrado para este campo.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Necessário perfil de administrador</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor de idiomas</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Idioma</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label-Nome</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valor</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Fieldvalues</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>LabelName</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>LabelValue</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Você apenas deletou o Label NÂO o Field! Você não pode deletar esse Field, podem existir Labels em outros idiomas.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Labelid inválido. O FieldLanguagesvalues_Id não pode ser encontrado na base de dados.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Você não pode deletar esse Field. Você pode apenas deletar Labels NÂO Fields. Não existe Label carregado no momento, se nenhum Field for selecionado ou não existir Label para esse idioma para esse Field definido.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportar</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Você precisa fazer login novamente para ver as mudanças.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Adicionar novo idioma</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>excluir idioma</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Adicionar novo idioma</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nome</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>adicionar idioma</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ir ao primeiro</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>ir ao anterior</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ir ao próximo</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ir ao último</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>palestras do usuário (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>desligar/ligar som</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Suas configurações</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>olá,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editar seu perfil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Novas Mensagens:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Upload de nova imagem</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Dados do Usuário - Exportar</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Todas as organizações já devem existir!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>começar a exportar</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Por organização</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>começar a exportar</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Dados do Usuário - Importar</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>escolha users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importar</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportar para XML - Esses arquivos podem ser usados para: - Contribua com o projeto - Importe em outro sistema - Backup - Customização - Coloque no diretório de idiomas para sua próxima instalação</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Escolha um arquivo de idioma para importar. Escolha o idioma correto no Combobox! Não importa o nome do arquivo, ele será importado nesse idioma!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importar - escolha o arquivo</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Salvar como</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nome:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comentário:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>salvar</value>
+  </string>
+  <string id="395" name="record">
+    <value>Gravações</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Vizualizador de Gravações</value>
+  </string>
+  <string id="397" name="record">
+    <value>Gravações de salas públicas e privadas</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Usuários :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Entrou:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Usuários nessa sala:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>atualizar</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Essa sala está cheia. Tente novamente em alguns instântes.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>clique em uma sala para ver os detalhes</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat com os usuários dessa sala:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Sala:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Usuários nessa sala:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>desde:</value>
+  </string>
+  <string id="409" name="record">
+    <value>mostrar a gravação</value>
+  </string>
+  <string id="410" name="record">
+    <value>Tamanho:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Data:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Modo Gravação! Você não pode mudar nenhum valor, este é um arquivo gravado!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Mostrar essa gravação</value>
+  </string>
+  <string id="414" name="record">
+    <value>Play / Pause</value>
+  </string>
+  <string id="415" name="record">
+    <value>Começar gravação</value>
+  </string>
+  <string id="416" name="record">
+    <value>parar gravação</value>
+  </string>
+  <string id="417" name="record">
+    <value>Gravação:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Já existe alguém gravando nesse momento:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Gravando! Pelo usuário:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Gravação será cancelada e não será salva.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>continuar</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Fechar essa janela e continuar a gravação.</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>mudar cor da linha</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Mudar Cor</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Disabilitar / Habilitar cor da linha</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>mudar Fillcolor</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Disabilitar / Habilitar Fillcolor</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Mudar tamanho da linha</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>fechar</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>mudar tamanho da fonte</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Deletar Gravação</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Convidado</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Por:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Sala</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>start</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nome</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Data</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Deletar Server-Chatlog</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>enviar mensagem</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticons</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticons</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Escolher adaptadores publicados</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Áudio e Vídeo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Áudio somente</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Vídeo somente</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>sem Áudio/Vídeo (Image estática)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Nenhum Áudio/Vídeo do seu PC será publicado, ao invés disso uma figura do seu perfil será mostrada. Escolha essas configurações se você tem problemas com sua conexão ou uma conexão de Internet lenta.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>SEG</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TER</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>QUA</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>QUI</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>SEX</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SAB</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DOM</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Segunda</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Terça</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Quarta</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Quinta</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Sexta</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sabado</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Domingo</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>CS</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Calendário da semana</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Janeiro</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Fevereiro</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Março</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Abril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maio</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Junho</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Julho</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Augosto</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Setembro</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Outubro</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Novembro</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Dezembro</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendário</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participantes</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostrar configurações de layout</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Container</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderação-Container</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Lousa-Container</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Habilitado</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Arquivos,Chat,Participantes - Container</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Habilitado</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Largura | Altura</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>O moderador saiu da sala. Nenhum está presente no momento. Você pode se candidatar para moderação ou esperar.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Não existe nenhum moderador nessa sala, mas existem alguns participantes. Você deve se candidatar a moderação ou esperar.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Convite</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Mensagem do Usuário:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Mensagem:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Click neste link para participar das reuniões:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Click aqui para entrar na sala</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>se você tem problemas com o link, por favor copie e cole isso no seu browser:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Seus dados:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Senha:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>EMail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Sign-Up</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Clique neste link para criar uma nova senha:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Click aqui para criar umanova senha</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>se você tiver problemas com o link, por favor copie e cole isso em seu browser:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Senha Reset</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Por favor informe uma data válida, por exemplo 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Por favor informe um email válido, por exemplo name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Por favor informe um número de ponto flutuante, por exemplo 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Por favor informe um número (Inteiro), por exemplo 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Por favor informe um número de telefone válido, por exemplo ++49 1234 1234</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Por favor informe um horário válido, por exemplo 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Senha protegida</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Senha</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Período de validade</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Final</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Período</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Uma vez</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Valido de:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Valido até:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Convite para o $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Nenhum convite disponível para esse código</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>O convite já foi utilizado. Esse tipo de convite não pode ser reutilizado.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Esse código de convite não é válido.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Senha:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Verificar senha</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Senha Inválida!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Browser</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Syncronize Audio/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Login was correct, but the Session you tried is not active or stored on the Server. You have to get a new SessionId and retry login.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>The SessionId is not loggedin or has no Admin rights. The SOAP Gateway needs an User with Admin-Rights to embed new Users.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently Beta!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/russian.xml b/src/main/webapp/languages/russian.xml
new file mode 100644
index 0000000..6eaea62
--- /dev/null
+++ b/src/main/webapp/languages/russian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Конференция</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Совещания</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Лекции</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Установки</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Профиль</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Администрирование</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Пауза</value>
+  </string>
+  <string id="8" name="record">
+    <value>Запись</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Нет данных</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Функция записи только для лекторов</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Связанный пользователь:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Начать конференцию</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Мое имя</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Видеоконференция</value>
+  </string>
+  <string id="15" name="import">
+    <value>Загрузить файл</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Заново загрузить список</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>К списку документов</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Новый опрос</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Новый опрос для конференции</value>
+  </string>
+  <string id="20" name="question">
+    <value>Вопрос:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Вид опроса:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Создать</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Информация: каждый подключённый участник получает сообщение с новым опросом.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Создать опрос</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Отменить</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Да/Нет</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Число 1 - 10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Опрос</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Для создания опроса Вы должны быть модератором/лектором в этой комнате.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Вы проголосовали.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Вы уже проголосовали в данном опросе.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Проголосовать!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Ваш ответ:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Да</value>
+  </string>
+  <string id="35" name="no">
+    <value>Нет</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>хочу знать:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Результаты опроса</value>
+  </string>
+  <string id="38" name="question">
+    <value>Вопрос:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Ответы:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Результат:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>В настоящее время опроса не существует.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Проголосовать!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Совещание (макс. 4 места)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Конференция (макс. 50 мест)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Тип</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Оставшиеся места</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Уже присвоено</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Вхождения</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Модератор/лектор этой комнаты покидает совещание.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Системное сообщение</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Выбор устройства</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Выбрать камеру:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Выбрать микрофон:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Отменить</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Чтобы активировать изменения, войдите заново</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Изменить установки</value>
+  </string>
+  <string id="58" name="course">
+    <value>Курс:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Язык курса:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Отменить</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Очистить доску</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Очистить доску перед добавлением нового изображения</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Больше не спрашивать</value>
+  </string>
+  <string id="65" name="no">
+    <value>нет</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Редактировать установки</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Запросить подтверждение перед очисткой доски</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Информация о пользователе</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Очистить область рисования</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Отмена</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Восстановление</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Выбрать объект</value>
+  </string>
+  <string id="73" name="text">
+    <value>Текст</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Рисование</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Провести линию</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Подчеркнуть</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Прямоугольник</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Эллипс</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Стрелка</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Удалить выбранный элемент</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Запрос функции модератора</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Запрос</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Отменить</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Запросить ф-ции модератора</value>
+  </string>
+  <string id="85" name="close">
+    <value>Закрыть</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Курсив</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Жирный шрифт</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Ожидание</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Участник желает запросить функцию модератора:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Согласие</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Отклонение</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Отменить</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Отсылка запроса следующему участнику</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Выдано согласие</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Отклонено</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Замена модератора</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Вы не являетесь модератором данного курса!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Модератор:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>В этой комнате нет мест. Извините, попробуйте еще раз через некоторое время.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Эллипс</value>
+  </string>
+  <string id="101" name="close">
+    <value>Закрыть</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Ошибка при вводе</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Имя пользователя должно состоять минимум из 4 знаков</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Пароль должен состоять минимум из 4 знаков</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Это имя пользователя уже занято</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Электронный адрес уже зарегистрирован</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Выдается ошибка, просьба связаться с административной группой</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Вход</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Пользователь:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Пароль:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Язык</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Войти</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Подписка</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Пользователь:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Пароль:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Повторить:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Имя:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Фамилия:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Страна:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Регистрировать</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Отменить</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Регистрация</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>На главную</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Пользователи</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Группы</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Организации</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Комнаты совещаний</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Публично</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Организация</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Вход</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Логин</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Пароль</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Повторить</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Имя</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Дата рождения</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Улица/№ дома</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Индекс/город</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Страна</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Информация</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Данные пользователя</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Сохранить</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Процесс сохранения</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Идент. № пользователя</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Логин</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Имя</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>вперед</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>назад</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Удалить запись</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Отменить</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Удалить</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Создать запись</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Заново загрузить запись</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Удалить запись</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Статус</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>заблокировано</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>активно</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Организации</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Календарь</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Закрыть</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Идент. № орг-ии</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Имя</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Пользователь</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Модератор</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Администратор</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Роль пользов-ля</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Организация</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Имя</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Добавить организацию</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Добавить организацию</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Отменить</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Добавить</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Удалить организацию</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Пользователь</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Добавить пользователя</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Удалить пользователя</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Добавить пользователя</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Поиск пользоват-я</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Искать</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Пользователь</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Организация</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Выбрать</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Комнаты совещаний</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Комнаты совещаний</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>Идент. №</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Имя</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Публичная комната</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Организации</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Комнаты совещаний</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Имя</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Тип</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>публично</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Комментарий</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Сохранить</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Открыть</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Сохранить как</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Имя файла</value>
+  </string>
+  <string id="201" name="files">
+    <value>Имя файла</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Отменить</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Сохранить</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Ошибка</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Загрузить</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Объект загружен</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Синхронизация клиентов. Оставшиеся клиенты:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Загрузка графических данных</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Синхронизация клиентов. Оставшиеся клиенты:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Очистить область рисования</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Очистить область рисования, при этом все изменения будут утеряны!</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Перед загрузкой файла запросить подтверждение</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Отправить приглашение</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Отправить приглашение</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Тема</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Адрес получателя</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Сообщение</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Отправить</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Отменить</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Отправить</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Данные пользователя</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Ник для данной конференции</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Ник/псевдоним</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Имя</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Фамилия</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-Mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Язык</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Отправить</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Загружается...</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Даные загружаются, подождите!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Неверный пароль</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Пожалуйста, введите два раза один и тот же пароль длиной не менее 6 символов</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Неверный E-Mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Вы ввели неверный E-Mail</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Регистрация завершена</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ваш аккаунт создан. Теперь вы можете войти под своим именем.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Сейчас вы не можете сделать ваш экран общим. Сейчас другой пользователь сделал свой экран общим.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Запрещено делать ваш экран общим</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Сделать экран общим</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Неверная ширина канала: невозможно синхронизовать экран. Некоторые кадры будут пропущены. Если это сообщение появляется слишком часто, Вы можете попросить модератора ухудшить качество соединения.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Экран пользователя:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Рисование</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Документ</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Чат</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Файл</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Юзеры</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Загрузить первоначальный документ</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Загрузить документ pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Поместить документ на доску</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Конфигурация</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Перетащить этот объект</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Изменить размеры объекта</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>из</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>На первую страницу</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>На предыдущую страницу</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>На следующую страницу</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>На последнюю страницу</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Уменьшение</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Увеличение</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Г-н</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Г-жа</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Конфигурация</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Ключ</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Конфигурация</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Ключ:</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Дата обновления</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Обновлено:</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Описание:</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Значение:</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>из</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Пользователи</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Удалить пользователя из организации</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Удалить</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Этот пользователь уже входит в эту организацию.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Новости</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Быстрый переход</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Перейти к совещанию</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Перейти к лекции</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Помощь и поддержка</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Ошибка?</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>еще</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Вебсайт проекта (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Список электронных адресов пользователей (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Запомнить вход в систему</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Контент</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Моя домашняя страница</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Мои совещания</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Мои запланированные лекции</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Публичные совещания</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Личные совещания</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Публичные лекции</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Личные лекции</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Публичный контент</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Приватный контент</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Персональный контент</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Модерация</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Запросить ф-ции модера</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Опросы</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Выбор файла</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Установки</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Установки камеры и микрофона</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Установки доски</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Выход</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Выход (к комнатам)</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Выход</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Забыли пароль?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Восстановление пароля</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>По e-mail</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>По имени пользователя</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Ваша почта</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Ваш логин</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Послать линк на e-mail</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Такой e-mail не найден. Убедитесь, что вы ввели верный e-mail</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Введите e-mail или имя пользователя</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Никто больше не подключился с таким именем пользователя</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Письмо, содержащее специальную ссылку, выслано на ваш e-mail, пожалуйста, проверьте ваш почтовый ящик. Если вы все еще не получили письмо, проверьте анти-спам фильтры и пошлите еще раз подтверждающее письмо.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Информация</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Сообщение</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Неверный хэш. Пользователь не найден.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Переустановить ваш пароль</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Логин</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>изменить пароль</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>новый пароль</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>повторите пароль</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Вы ввели неидентичные пароли.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 или более знаков. Регистр имеет значение!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Пароль установлен. Теперь можно логиниться.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Неизвестная ошибка. Пожалуйста, сообщите в вашу сервисную службу.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Имя пользователя не найдено</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Неверный пароль</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Вы успешно вышли</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Frontend Registration disabled.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Неверный e-mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>неуникальное имя файла, выберите другое имя файла</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>слишком короткое имя файла</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Не могу сохранить Адрес</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Пользователь добавлен, но нужно назначить этому пользователю организацию, иначе он не сможет войти.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Новая запись</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Поле с таким ID не найдено.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Метка для этого поля не найдена.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Требуется авторизация администратора</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Редактор языков</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Язык</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID метки</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Имя метки</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Значение</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Значения полей</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Имя метки</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Значение метки</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID метки</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Вы можете лишь удалить метку, но не само поле! Нельзя удалить поле, у него могут быть метки на других языках.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Неверный ID метки. Невозможно найти FieldLanguagesvalues_Id в базе данных.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Нельзя удалить это поле! Можно лишь удалить метку, но не само поле Метка сейчас не загружена. Либо не выбрано ни одно поле, либо не определена метка на этом языке (для этого поля)</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Экспорт</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Вам нужно выйти, чтобы увидеть изменения.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Добавить новый язык</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>удалить язык</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Добавить новый язык</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Имя</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>добавить язык</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Резервное копирование</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>к первому</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>к предыдущему</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>к следующему</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>к последнему</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Участник говорит (Нажимая здесь Вы предоставляете этому участнику эксклюзивный микрофон / выключая микрофоны остальных участников)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Включить/выключить звук</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Система</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Ваши установки</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Привет,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Ваш профиль</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Новые сообщения:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Изображение</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Экспорт пользовательских данных</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Организации уже должны существовать!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>начать экспорт</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>По организации</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>начать экспорт</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Польз. данные - импорт</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>выбрать users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Импорт</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Экспорт в XML - эти файлы можно использовать для: - Внесения в проект - Импорта в другую систему - Резервного копирования - Кастомизации - Помещения в директорию "language" при следующей инсталляции</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Выберите файл языка для импорта. Выберите язык в выпадающем списке. Неважно, какое имя у этого файла, он будет импортирован в этот язык!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>импорт - выберите файл</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Сохранить как</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Имя:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Описание:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>сохранить</value>
+  </string>
+  <string id="395" name="record">
+    <value>Записи</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Просмотр записей</value>
+  </string>
+  <string id="397" name="record">
+    <value>Записи публичных и приватных комнат</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Участники :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Присоединившиеся:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Участники в этой комнате:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>обновить</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Эта комната полна. Попробуйте через несколько минут.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Нажмите на комнату для деталей</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Чат с пользователями этой комнаты:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Комната:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Участники в этой комнате:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>с:</value>
+  </string>
+  <string id="409" name="record">
+    <value>проиграть записи</value>
+  </string>
+  <string id="410" name="record">
+    <value>Длина:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Дата:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Режим воспроизведения! Вы не можете менять параметры.</value>
+  </string>
+  <string id="413" name="record">
+    <value>Проиграть эту запись</value>
+  </string>
+  <string id="414" name="record">
+    <value>Играть / Пауза</value>
+  </string>
+  <string id="415" name="record">
+    <value>Начать запись</value>
+  </string>
+  <string id="416" name="record">
+    <value>остановить запись</value>
+  </string>
+  <string id="417" name="record">
+    <value>Запись:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Кто-то уже записывает в данный момент:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Идет запись! Участник:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>отмена</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Запись будет отменена и не будет записана.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>продолжить</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Закрыть окно и продолжить запись</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>изменить цвет линий</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Выбор цвета</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Запретить/разрешить цвет линий</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>изменить цвет заливки</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Запретить/разрешить заливки</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Изменить ширину линий</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>закрыть</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>изменить размер шрифта</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Удалить запись</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Гость</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>По:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Имя</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Комната</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>отменить</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>старт</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Имя</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Удалить лог чата на сервере</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Чат</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>послать сообщение</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Иконки эмоций</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Иконки эмоций</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Изменить публичные устройства</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Аудио и видео</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Только аудио</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Только видео</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>без аудио и видео (статическое изобр.)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Аудио/видео с вашего компьютера не будет опубликовано, опубликована будет только картинка из вашего профиля. Выберите эту установку, если вы испытываете проблемы с шириной канала или если у вас медленное соединение с Интернетом</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>ПН</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>ВТ</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>СР</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>ЧТ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>ПТ</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>СБ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>ВС</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Понедельник</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Вторник</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Среда</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Четверг</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Пятница</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Суббота</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Воскресенье</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>КН</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Календарная неделя</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Январь</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Февраль</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Март</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Апрель</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Май</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Июнь</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Июль</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Август</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Сентябрь</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Октябрь</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Ноябрь</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Декабрь</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Календарь</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Участники</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Показать установки Layout</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Ширина | Высота</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Видео-контейнер</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Модерация-контейнер</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Доска-контейнер</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Разрешено</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Ширина | Высота</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>файлы,чат,участники - контейнер</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Разрешено</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Ширина | Высота</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Модератор покидает комнату. Сейчас нет модераторов. Вы можете запросить функции модератора, либо подождать.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>В этой комнате нет модератора, но есть участники. Вы можете запросить функции модератора или подождать</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Обратная связь $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME: Приглашение</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Сообщение от участника:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Текст сообщения:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Для того, чтобы принять участие в совещании, нажмите на следую ссылку:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Нажмите здесь для того, чтобы войти в комнату совещаний</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Если не удаётся перейти по ссылке, скопируйте этот URL в браузер:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME регистрация</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Ваши пользовательские данные:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Логин:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Пароль:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>e-mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Команда</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>Регистрация в $APP_NAME</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME: Переустановить пароль</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Кликните на этот линк и введите новый пароль:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Кликните здесь, и введите новый пароль</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Если не удаётся перейти по ссылке, скопируйте этот URL в браузер:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Переустановка пароля $APP_NAME</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Пожалуйста, введите дату, например 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Пожалуйста, введите e-mail, например name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Пожалуйста, введите вещественное число, например 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Пожалуйста, введите целое число, например 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Пожалуйста, введите телефонный номер, например ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Пожалуйста, введите время, например 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Защитить паролем</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Пароль</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Период действия</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Бесконечно</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Период</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Однократно</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Действует от:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Действует до:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Приглашение в $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Для этого кода приглашения нет доступных приглашений</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Это приглашение уже использовано. Приглашение этого типа не может быть переиспользовано.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Этот код приглашения недействителен.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Пароль:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Проверить пароль</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Неверный пароль!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Браузер</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Синхронизовать аудио/видео</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Корректный логин, но эта сессия неактивна или не записана на сервере. Вам нужно получит новый ID сессии и перелогиниться</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId не залогинен или не имеет прав администратора. Чтобы встраивать новых пользователей, SOAP Gateway'ю нужен пользователь с правами администратора.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>У этой сессии нет connected Remoteuser-Data. Либо вы не вызвали SOAP-Gateway перед доступом к приложению, либо используете неверный ID сессии.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>У этого рекордера - Beta-версия</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>ось x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>ось y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>ширина</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>высота</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Изменить прозрачность</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Браузер открыть</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Браузер закрыть</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Потеряно соединение с сервером. Загрузите заново приложение, либо проверьте вашу сеть.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Указатель</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Синхронизация</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Синхронизация участников, подождите</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value></value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value></value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value></value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value></value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value></value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Напоминатель:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Категория:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Повторение:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Место:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Начало</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Конец</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Название</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Комментарий</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Приглашения</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Ежедневно</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Ежемесячно</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Ежегодно</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Конец совещания после начала совещания!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Пожалуйста, вставьте заголовок!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Активируйте это, если на вашем языке пишут справа налево</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>информационная панель</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Посмотреть записанные совещания и лекции</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Совещание - проведите конференцию с 4 участниками (число участников может доходить до 16)у каждого будет аудио/видео</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Лекция - проведите конференцию с участниками, число которых – до 200. Аудио/видео будет только у модератора</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Создание пользователей, комнат, организаций + изменить конфигурацию</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Сейчас участников в этой комнате</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Логин</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>x</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Загрузка документа. Подождите, пока клиент синхронизируется.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Загружено, конвертация документа</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Начать</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Импорт файла. Выберите файл на вашем компьютере.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Отмена</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Выбрать файл</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Соединения</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Значение</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>ID потока</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Логин</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Соединено с</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Комната/Кол-во</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Отключить</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Отключить</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Вы действительно хотите отключит этого клиента? Клиент может залогиниться вновь</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Ваша сессия завершена администратором или модератором.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Телефон</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Этот пользователь - модератор в этой комнате</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Участнику разрешено рисовать на доске</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Ре)старт аудио/видео или изменение установок устройства</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Разрешить этому участнику рисовать на доске</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Запретить рисовать на доске</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Участники</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Документы</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Доска</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Чат</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Вашей учетной записи соответствует несколько организаций. Пожалуйста, выберите одну организацию для данной сессии.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Эта комната заполнена. Попробуйте попозже.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Тип комнаты</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Комната назначений</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Время сервера</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME: Напоминание</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Сообщение от пользователя:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Текст сообщения:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Для того, чтобы принять участие в совещании, кликните на ссылку:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Нажмите здесь для того, чтобы войти в комнату совещаний</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Если не удаётся перейти по ссылке, скопируйте этот URL в браузер:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>имеющиеся пользователи</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>пригласить других</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Имя</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Фамилия</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>e-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Подтверждение выхода</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Вы уверены, что хотите выйти?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Действия</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Демо комната</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Время демонстрации</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Таймер совещания</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Это - демо комната. Чтобы отключить это сообщение, либо создайте личную комнату, либо установите собственный сервер. Вы автоматически будете отключены от комнаты через:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Модерируется</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Подождите, пока модератор зайдёт в комнату. Модератором может быть лектор, администратор, либо создатель этой комнаты.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>ОК</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Другой участник делает экран общим</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Участник делает экран общим:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Сделать экран общим</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Добавить новое совещание</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Комната совещаний</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Комната лекций</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Модерация</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Модерировать участников</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Модерировать комнаты</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Хотите сделать этого пользователя модератором этой организации?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Выберите организации перед тем, как добавлять в неё пользователей</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Модератор организации</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Вы действительно хотите удалить пользователя из этой организации</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Этот пользователь - модератор</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Этот пользователь - не модератор</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Хотите, чтобы пользователь не был модератором в этой организации?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Добавление или удаление польз-ля/комнаты, относящихся к вашейорганизации</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Вы действительно хотите удалить эту запись?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Вы действительно хотите удалить этого польз-ля из вашей организации? В этом случае вы лишь удалите пользователем из организации, а для полного удаления пользователя нужно зайти на панель администрирования.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Вы не можете удалить себя</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Этот метод можно вызвать, только используя аккаунт администратора.</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Не было сессии, ассоциирующийся с этим ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Это - аккаунт администратора или модератора. Вы можете редактировать его только через панель адмиинистрирования.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Для завершения регистрации кликните на эту ссылку или скопируйте URL в окно браузера.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Нажмите для проверки вашего e-mail.</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Для этого Хеша не найдено пользователей.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Этот пользователь уже активирован!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Вы успешно активировали ваш аккаунт</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Входите сейчас</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Ваш аккаунт не активирован. Сначала перейдите по ссылке, полученной в письме, которое вы получили при регистрации.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Вы успешно зарегистрировались. Вам отправлено письмо с кодом проверки. Проверьте вашу почту.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Снять роль модератора у этого пользователя</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Дать пользователю права модерации</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Пользователь</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Доступ к доске</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Модератор</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Модерация: Выберите поль-ля из списка для того, чтобы дать ему доступ к доске, модерации или видео.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Этот пользователь уже модератор, поэтому он автоматически имеет право рисовать.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Это вы! Вы не можете удалить права модерации у себя.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Разрешить этому пользователю публиковать своё Аудио/Видео</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Удалить Аудио/Видео этого пользователя</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Я хочу получить права модерации в этой комнате</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Я хочу рисовать на доске</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Я хочу сделать моё Аудио/Видео общим</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Вы - модератор в этой комнате</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Вам разрешено рисовать на доске</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Вам разрешено сделать ваше Аудио/Видео общим</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Сообщение модератору</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Пользователь</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>желает стать модератором. Для того, чтобы разрешить или запретить функцию модерации, используйте иконки статуса рядом с именами в списке участников.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>желает рисовать на доске. Для того, чтобы разрешить или запретить рисовать на доске, используйте иконки статуса рядом с именами в списке участников.</value>
+  </string>
+  <string id="695" name="695">
+    <value>желает сделать своё Аудио/Видео общим. Для того, чтобы разрешить или запретить участникам делать Аудио/Видео общим, используйте иконки статуса рядом с именами в списке участников.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Нужно подождать, пока модератор войдёт в комнату.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Отменить</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Сохранить</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>День</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Месяц</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Год</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Загрузить файл</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Добавить папку</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Обновить</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Корзина</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Мои файлы (Локальное устройство)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Файлы из комнаты (Общее устройство)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Добавить файл</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Добавить папку</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Удалить папку</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Редактировать имя</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Новая папка</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Вы уверены, что хотите удалить этот пункт?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Поиск</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Поиск</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Открыть документ</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Показать все файлы (в виде дерева)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Закрыть документ</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Удалить файл</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Вы не можете рисовать на доске. Вам нужно либо стать модератором, либо получить от модератора право на рисование. Вы можете попросить модератора предоставить вам такое право.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Свойства документа</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Запустить клиент (внешний)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Запустить клиент (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Пользователь хочет сделать свой экран общим. Хотите увидеть его экран?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>В данный момент вы публикуете ваш экран. Чтобы прекратить публикацию, нажмите кнопку "Stop" клиента</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Сессия публикации экрана</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Вы уже опубликовали ваш экран</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Просмотрщик рабочего стола</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Выйти</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Публикатор экрана</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Нажмите, чтобы открыть общий доступ к вашему экрану</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Открыть доступ</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Приостановить доступ</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Выберите область экрана</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Изменить ширину</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Участник закончил публиковать свой рабочий стол</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Изменить высоту</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Смещение X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Смещение Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Ширина:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Высота:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Соединение завершено сервером</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Отмена</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Запустить внешний</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Полностью закрыв сессию, вы не сможете больше перезапустить просмотрщик для неё</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Подтвердите закрытие сессии просмотрщика</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Сделать экран общим</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Сессия записи</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Совместный просмотр</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>К сожалению, Firefox на ОС Windows не поддерживает совместный просмотр. Используйте другой браузер.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Предыдущая</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Следующая</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Перегрузить</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Домашняя страница</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Загрузить</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Добавить в ваш профиль эту веб-страницу как страницу по умолчанию</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Настройки теста</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Проверьте установки микрофона и камеры перед тем, как войти в комнату. Запишите 5-секундное тестовое видео. После записи можно проиграть видео и проверить качество картинки и звука.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Больше не показывать этот текст</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Отмена</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>К конференции</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Больше не спрашивать</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>ЗАПИСЬ</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>ПРОИГРАТЬ</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Можно продолжить без тестирования, если не планируете публиковать ваш голос и видео. Участники без аудио и видео могут использовать доску, публиковать свой экран, а также участвовать в чате.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>СТОП</value>
+  </string>
+  <string id="767" name="767">
+    <value>Уровень звука</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Старт</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Участвуйте в конференции</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Начните лекцию</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Выбор комнаты</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Настройки</value>
+  </string>
+  <string id="773" name="start view">
+    <value>К конференции</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Как участвовать в конференции:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Начать запись</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Не показывать окно проверки аудио/записи видео при входе в конференцию</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Публичные комнаты</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Публичными комнатами могут пользоваться все пользователи</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Приватные комнаты</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Приватными комнатами могут пользоваться только пользователи из той же организации</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Мои комнаты</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Комнаты этой секции - для персонального использования. Они созданы через календарь, у них есть начало и конец жизни. Эти комнаты перечислены здесь только то время, пока ими можно пользоваться.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Для этого действия вы должны быть модератором</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Подать заявку на модерацию</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Подать заявку на доступ к доске</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Подать заявку на доступ к камере и микрофону</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Хеш-код этой сессии уже использован. Нельзя использовать его дважды.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>СТАРТ</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>ВЫХОД</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Вы на самом деле хотите выйти? Возможно, вам нужно удалить загруженные документы, очистить доску и историю чата.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Выйти из конференции</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Комнаты</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Выберите комнату для совещания</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>В календаре есть несохранённые события. Сохраните их или удалите.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Добавьте хотя бы одного участника в совещание</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Вы действительно хотите удалить это событие?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Предупреждение</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Добавить событие</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>День</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Неделя</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Месяц</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Описание</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Участники</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME - платформа ваших веб-конференций. Вы можете 1) следуя инструкциям, нажать кнопку "Старт" и участвовать в конференции или 2) перейти в календарь и назначить время.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Запланировать</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Чтобы назначить конференцию, добавьте новое событие в календарь.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Нужна помощь?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Ограниченная</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Поиск</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Добавить</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>Ни один пользователь не выбран. Выберите его из списка, а затем нажмите "Добавить".</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Добавить участника</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Сохранить</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Удалить</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Детали события</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Модератор по умолчанию</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Супер</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Имя</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>e-mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Добавить нового модератора по умолчанию</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Является супермодератором</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Если комната модерируется, пользователь с правами модератора или администратора автоматически становится модератором при входе. Если вам это не нужно, а Вы лишь хотите, чтобы определённый польз-ль стал модератором, используйте опцию "модератор по умолчанию".</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Супермодератор всегда становится модератором при входе в комнату. У него нельзя снять флаг модерации.</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Сделать польз-ля супермодератором</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Снять флаг супермодерации с польз-ля</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>x</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Если для комнаты вы добавите организацию, только пользователи этой организации будут иметь доступ к ней (действительно только если флаг isPublic не установлен)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Модерация</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Ограничения</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Организация</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Вы уверены?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Вы действительно хотите удалить запись?</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Пользователь не выбран. Пожалуйста, выберите пользователя</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Добавить модератора по умолчанию</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Хотите добавить флаг супермодератора этому пользователю? Чтобы сохранить это, сохраните объект комнаты.</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Вы действительно хотите удалить флаг супермодератора у пользователя? Чтобы сохранить это, сохраните объект комнаты.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Этот польз-ль - супермодератор. Вы не можете удалить флаг модератора у него.</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Вы действительно хотите удалить этот файл/папку?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Удалить этот файл/папку?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Г-жа</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Д-р</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Свойства</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Показывать позицию мыши зрителям</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Совместно использовать аудио и SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Совмистно использовать аудио с SIP и видео с флеш</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Смотреть экран</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>Пользователь</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>хочет сделать экран общим. Хотите видеть его?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Закрыть</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Масштаб</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Сессия была закрыта хозяином экрана!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Пауза</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Новый общий экран</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Минимизировать</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Максимизировать</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Видео</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Сроки записи</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Мои записи</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Публичные записи</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Инфо</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Имя</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Длина</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Дата</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>От</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>ИГРАТЬ</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Главное - видео</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Запись</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Вы можете записывать и делать экран общим одновременно. Чтобы сделать экран общим, нажмите кнопку “Открыть доступ” сверху. Чтобы только записывать сессию, нажмите "Начать запись".</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Начать запись</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Остановить запись</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Загрузить файл FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Комната</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Играть</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Стоп</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Микрофон польз-ля включен</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Закрыть доступ</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Разрешить вопросы</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Выключите, чтобы участники в комнате вам не мешали.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Права</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Загрузить как AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Необработанное видео</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Только аудио</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>При обработке записи возникли ошибки.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>Запись ещё не готова. Попробуйте снова через пару минут.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Лог:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Сообщение рекордера</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>Апплет SIP не готов</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Установки аккаунта SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>Установки SIP для каждого пользователя.</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>Польз-ль SIP</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Пароль Sip</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>Неправильный логин к шлюзу SIP. Проверьте данные ауфентикациивашего провайдера SIP и данные аккаунта SIP для каждого польз-ля. Администратор может сделать проверку через пункт меню Конфигурация. Пользователи и модераторы заблокированы от любых взаимодействий.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>Неправильный логин для шлюза SIP. Обратитесь в службу поддержки!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Войти в шлюз SIP</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Войти в шлюз SIP</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Показать лог</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Лог процесса записи</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>Сообщения апплета SIP</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>Апплет SIP не готов. Примите апплет и нажмите ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Стать модератором</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Сохранить изменения назначения</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>Назначение было изменено. Сохранить изменения? Все участники получат мейл с изменённой датой и временем (в зависимости от типа нотификаций этого назначения).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Для доступа к другим записям войдите в приложение $APP_NAME.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Выберите пользователя для этого видео</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Доступные пользователи для этого Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Вы модератор этого интервью. Вы можете решать, кому говорить, и можете начинать / останавливать запись</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Начать запись</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Остановить запись</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>Запись интервью уже начата.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>Запись уже остановлена или ещё не начата.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>Запись этого интервью уже начата!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Отменить</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>Обработка интервью занимает 5 минут на каждую минуту интервью. Текущий прогресс обработки:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Введите пароль снова, чтобы автоматически создать данные SIP</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Авто-генерация SIP</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Вы не можете переместить этот файл или папку в его собственную подпапку!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Размер домашнего накопителя</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Размер публичного накопителя</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Лицензионные установки</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>Вы можете либо назначить дату конца срока действия, либо макс. число минут срока действия лицензии.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Проверить лицензию</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Единая ставка</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Дата конца срока действия</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Осталось секунд</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Общее время</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Ваша лицензия истекла. Вам нужно купить новые минуты либо заплатить по единой ставке.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Нажмите и купите</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Оставшееся время вашего аккаунта:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Информация о лицензии</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Информация</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Закрыть</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Ваша лицензия истекла. Вам необходимо купить новые минуты либо заплатить по единой ставке.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Установки лицензии</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Вы можете купить минуты для того, чтобы проводить веб-конференции. Или заплатите по единой ставке за 3-12 месяцев.Посылка приглашений (прямые ссылки на комнаты) или создание конференций с внешними польз-лями через календарь возможны только в случае оплаты по единой ставке!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Купить 60 минут за 9,99 евро (16 центов за минуту)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Купить 5 часов за 19,99 евро (6 центов за минуту)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Купить 3 месяца за 29,99 евро (9,99 евро за месяц)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Купить 6 месяцев за 39,99 евро (6,66 евро за месяц)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Платить поминутно</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Единая ставка</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>У вас неограниченная лицензия</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Ваша лицензия истекает:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>Вы купили поминутную лицензию. У вас есть:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Купите новый кредит</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Хотите свой собственный сервер?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Вы хотите установить $APP_NAME на ваш сервер или интегрироваться с Moodle, SugarCRM, веб-сайтом или внутренней сетью? Цены начинаются с 500 евро за инстолляцию!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>или послать сообщение</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Ответить:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Сообщение:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Послать</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Нажмите здесь, чтобы получить контактную информацию и прайс-лист</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Кредитная карта</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Имя</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Фамилия</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Тип карты</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Номер карты</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Срок окончания действия</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Номер для верификации карты</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Платёжный адрес</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Адрес</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Город</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Страна</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Штат (Только US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>Индекс</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Кол-во</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Послать</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Шаг 1: $APP_NAME - Платёжная форма</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Нажмите "Послать через PayPal" чтобы заплатить. Paypal принимает VISA, MasterCard, Discover или American Express. PaypAL не требует подписи.Граждене Германии могут также платить с дебетовой карты (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Спасибо за покупку $APP_NAME. Как только мы получим ваш платёж, ваш аккаунт будет изменён. Вы поллучите письмо с вашим счётом в формате PDF.Вы также можете проверять текущие и прошлые операции в вашем профайле.Сейчас вы можете закрыть ваше окно браузера и вернуться к $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Отправьте и купите!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>нажмите и купите!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Шаг 3: Платёж за $APP_NAME - проверьте заявку и купите!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Имя</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Платёж получен!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Здравствуйте,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>Мы получили ваш платёж. Ваш профайл изменён. Смотрите прикреплённый счёт. Этот и все предыдущие счета могут также быть загружены в ваш профайл.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Спасибо за использование $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Платёж получен $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Статус платежа и транзакции</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Хэш транзакций</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Минуты</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Месяцы</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Статус</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Счёт</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Для того, чтобы посылать приглашения или создавать митинги через календарь, Вы должны платить по единой ставке. Для поминутной тарификации возможен только доступп к $APP_NAME. Вы не можете разрешить сторонним участникам доступ к митингу.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>Этот email уже используется другим пользователем.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>Установки SIP</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>Номер конференции и PIN автоматически созданы через шлюз OpenXG RPC</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>Номер SIP</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Очистить объекты только на текущем слайде!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Только введённый в строке состояния URL посылается участникам!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Сделать групповые комнаты [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Выберите пользователей для групповой комнаты!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Здесь вы можете выбрать пользователей и создать новую групповую комнату для конференций для них. Выбранные пользователи будут автоматически перемещены в новую комнату или получат сообщение. Модераторы получат список текущих комнат так, чтобы они могли переключаться на каждую комнату, если нужно.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Имя пользователя</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Логин</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Пользователи в новой групповой комнате:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Создать групповую комнату</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Отмена</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Выберите хотя бы одного пользователя для комнаты!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Добавить пользователя в группу</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Удалить пользователя из комнаты</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>Пользователь - модератор групповой комнаты (Он может управлять комнатами и пользователи комнаты могут просить его прийти)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Тип комнаты</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Если вы выберете "Переключить пользователя на новую групповую комнату" все выбранные пользователи будут автоматически переключены на новую комнату. Иначе они получат нотификацию с кнопкой, которой они переключиться на новую комнату. Модераторы всегда имеют выбор в управлении комнатами и переключении между ними.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Управление групповыми комнатами</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Вы можете переключаться между всеми групповыми комнатами, в которых вы модератор. Пользователи внутри комнаты могут посылать вам сообщения, например просить вас зайти в икомнату и помочь. Вы можете также прервать комнату, и все пользователи будут выведены оттуда.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Переместить пользователя в новую комнату</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Имя</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Создано</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Доступные пользователи</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Добавьте польз-ля плюсом слева или удалите крестиком справа!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Установки групповой комнаты</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Добавить пользователя в групповую комнату</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Название групповой комнаты</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Групповая комната</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Изменить для комнаты</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Переключиться на эту групповую комнату</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Прервать групповую комнату и заставить всех пользователей выйти</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Новая групповая комната</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Есть новая групповая комната, доступная для вас.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Переключиться на групповую комнату</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Действия групповой комнаты</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Вы можете переоткрыть это окно через пункт Действия меню!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Послать сообщение модератору групповой комнаты</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Новая групповая комната</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Есть новая доступная групповая комната. Вы можете переключиться на неё. Групповые комнаты похожи на "рабочие" с дополнительной возможностью задавать вопросы модератору. Ваши комнаты также доступны в разделе "Мои Митинги".</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Перейти в групповую комнату</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Создано:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Название групповой комнаты:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Это окно останется открытым даже если вы выйдете из комнаты!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Польз-ли этой групповой комнаты</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Другие групповые комнаты, к которым вы можете перейти</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Послать сообщение модераторам групповой комнаты. Например, если вам нужна помощь в модерации или у вас есть вопрос по теме.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Послать</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Пользователи, приглашённые в эту комнату</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Модератор групповой комнаты</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Это - люди, которых модератор пригласил в эту групповую комнату.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>Сейчас в этой комнате нет залогиненных модераторов!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Пожалуйста, введите сообщение</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Помогите, в нашей групповой комнате проблемы!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>Пользователь из групповой уомнаты просит помощи.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Запрос групповой комнаты для помощи</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Сообщение:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>От:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Сейчас вы не находитесь ни в какой групповой комнате. Но можете преключиться на комнаты, к котоым имеете доступ, здесь.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Бэкап системы. Включает все данные, сгенерированные пользователем. Не включается конфигурация и метки языка, потому что они импортируются системным инстоллятором. Для апдейта, сэкспортируйте вашу старую систему (1) преустановите новые пакеты для новой базы данных (2) и симпортируйте файл бэкапа снова (3). Бэкап должен быть симпортирован перед генерацией данных в новой системе.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Системный бэкап</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Позволить пользователю делать его экран/запись общим</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Запретить пользователю делать его экран/запись общим</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>Пользователь-модератор, и может делать что угодно!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>хотел бы сделать его экран/запись общим.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Вам разрешается оделать экран/запись общим</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Применить права для общих экрана и записи.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Позволить или запретить делать экран или запись общими.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Выключить звук</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Включить звук</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Только с аудио</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Установите этот флаг, и польз-ли будут иметь только звук опции без видео в комнате для конференций. Полезно для уменьшения нагрузки сети.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Позволить удалённый контроль (для общего экрана)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Запретить удалённый контроль (для общего экрана)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Применить к правам удалённого контроля (для общего экрана)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>У вас нет прав на удалённый контроль (для общего экрана)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>хочет удалённый контроль для общего экрана.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>Пользователь - модератор он может делать всё</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Позволить тлт запретить удалённый контроль (для общего экрана)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) ваш PC удалённому PC: Чтобы скопировать и вставить текст из вашего буфера обмена в удалённый экран, нажмите на экран, потом кликните в текстовом поле и выберите "Вставить" из контекстного меню.2) С удалённого PC на ваш PC: Чтобы скопировать текст с удалённого PC в ваш буфер обмена, выделите текст на удалённом, кликните и выберите</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Скопировать и вставить текст с вашего PC на удалённый PC и наоборот.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Скопировать выделенный текст</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Как скопировать и вставить</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Качество общего доступа:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Очень высокое качество</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Высокое качество</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Среднее качество</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Низкое качество</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Клавиатура:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Закрыть вебинар!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>Вебинар уже закрыт, вы будете перенаправлены в</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Закрыть комнату</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Переадресация</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Установки выхода из комнаты</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Если комната закрыта, пользователь будет переадресован на указанный URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Имя</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Конфигурационный файл</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Конфигурация Ldap</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Название</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Включено</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Вставлено</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Вставлено</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Изменено</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Изменено</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>Конфигурационные файлы в той же папке, что и webapps/openmeetings/conf. Загрузите файлы в папку вручную. Изменения конфиг-файлов происходят немедленно онлайн.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Имя конфиг-файла</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Если вы включите "добавить домен к имени", значение поля "домен" добавится к каждому логину, который вводится при входе в систему. Это удобно, если логин в Ldap запоминается с доменным именем. Например: пользователь вводит "hans", домен установлен в "localhost.com", логин, который проверяется для Ldap будет: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Добавить домен к имени</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Домен</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Вставить</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Скопировать выделенный текст</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Удалть текст из буфера обмена</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Показать удалённый буфер обмена</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Не показывать снова</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Скопировать текст здесь.</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>Вам нужны права для удалённого контроля (или модерация), чтобы скопировать и вставить текст в или из удалённого экрана.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Установки по умолчанию</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Не показывать информацию о копировании и вставке в удалённом доступе</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Сохранить</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Удалить</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Отменить</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Пригласить польз-ля в комнату для конференций</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Выбрать комнату для конференций. Приглашённый участник получит сообщение с вашим именем и ссылку на комнату.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Присоединён с:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Войдите в комнату после отправки приглашения</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Пригласить</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Сообщение</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>хотелось бы пригласить вас в комнату для конференций:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Приглашение</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Послать приглашение</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>принял ваше приглашение!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Принять</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Отказать</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Таймзона</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Детали события</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Имя</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Описание</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Создано</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Сообщение в ТЗ</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Включите "Сообщение в таймзоне", чтобы попросить пользователя сменить свой профайл при след. логине.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>пожалуйста проверьте таймзону в вашем профайле.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>Новая конференция $APP_NAME:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Детали:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Старт:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Конец:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Изменённая конференция $APP_NAME:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Организатор:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Отменённая конференция $APP_NAME:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>Напоминание конференции $APP_NAME:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Общие установки</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Показывать контактные данные всем</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Добавить поля ваших интересов или интересов ваших партнёров в конференцию. Запятая разделяет термины (например: медицинские услуги, забота о здоровье, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Мои предложения</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Мои интересы</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Имя</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Таймзона</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Области интересов</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Контактная информация</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Показывать контактные данные только контактам</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Не показывать контактные данные никому</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Мой профайл</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Редактировать установки</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Искать пользователей</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Посмотреть ваш профайл, как его видят другие</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Редактировать ваши установки, добавить интересы для поиска</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Искать других пользователей и расширить вашу сеть</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Искать</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Польз-ль предлагает</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Польз-ль ищет</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Свободный текст</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Имя</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Таймзона</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Предложения</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Поиски</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Результаты поиска</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Действия</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Добавить в контакты</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Послать сообщение</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Контакты и сообщения</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Ожидающие контакты</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Принять</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Запретить</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Здравствуйте,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>хочет добавить вас в список контактов.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Проверьте запросы вашего контакта в $APP_NAME или пойдите по этой ссылке, чтобы on принять или отклонить запрос</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>Этот пользователь уже в вашем списке контактов или получил приглашение добавиться в список, но не ответил.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Ваш список контактов</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Редактируйте ваши контакты и сообщения, управляйте ожидающими контактами!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>подтвердил вас как контакт!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Показать или скопировать лог</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Лог чата</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>От</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Тема</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Послать</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Сообщения</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Новый мейл</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Нажмите, чтобы написать сообщение вашему контакту</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Напишите новое сообщение</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>Кому:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Тема:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Включиите full fit и доска будет масштабироваться так, чтобы все документы становились видимыми в соответствии с разрешением экрана каждого участника.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Исключить участника</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>Вы не можете удалить сами себя из комнаты!Если вы хотите покинуть её, закройте окно браузера или используйте кнопку Выход!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Вы действительно хотите исключить этого участника из комнаты?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Подтвердите действие ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>Вы не можете исключить супер-модератора из комнаты!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Зарезервировать комнату</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Старт</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Конец</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Добавьте дополнительный запрос для митинга и создайте комнату для конференций. Событие скопируется в календарь каждого участника.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Входящие</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Посланные</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Корзина</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>Это вы! Вы не можете добавить себя в свои контакты.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>Пользователь уже отклонён!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>Пользователь уже подтверждён!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>Хеш контактов этого пользователя невалиден!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Пользователь добавлен в список контактов!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>Пользователь отклонён как контакт и удалён из списка ожидающих!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>Нет такого контакта!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Вы действительно хотите удалить этот контакт?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Подтвердите удаление контакта</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Удалить контакт из списка</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Профайл пользователя</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Показать профайл пользователя</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Сообщения</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Поиск</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Все</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Никто</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Непрочит.</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Прочитанные</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>К папке ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Новая папка ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Удалить</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Удалённый мейл всё ещё в корзине!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Непрочит.</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Прочитанное</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Ответить</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Ответить всем</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Переслать</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Действия ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Послать приватное сообщение</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Ничего не выбрано!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Во входящие</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Удалить (навсегда)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>Действие не может быть отменено!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Новая папка</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Добавить папки и упорядочить сообщения!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Добавить папку</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Добавить</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Удалить папку</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>Вы не можете удалить эту папку, там есть сообщения! Удалите их или переместите их в другую папку.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Редактировать имя</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Вы действительно хотите удалить эту папку? Её нельзя восстановить.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Ваш запрос был послан пользователю. Пользователь получит нотификацию о подтверждении или отклонении. Только подтверждённые запросы могут быть в вашем списке контактов!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Сообщение</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>Пользователь не дал совместного доступа к его персональным данным.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>Пользователь разрешил доступ к своим персональным данным только контактам.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Адрес и телефон</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>Код вашего приглашения невалиден, он действует только в определённый период времени.</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Это событие связано с несколькими календарями других пользователей. Ваши изменения также изменят их календари. Выхотите изменить событие?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Подтвердите изменение</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Позволить контакту видеть мой календарь (только просмотр)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Не давать доступа к календарю</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Календарь контактов</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Ваши контакты должны разрешить вам доступ, прежде чем вы сможете видеть их календари.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Вы не можете сохранить или удалить события из чужих календарей!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Показать мой календарь снова!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Это событие связано с календарями других пользователей. Ваши действия также удалят сообытие из этих календарей. Вы хотите удалить событие?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Подтвердите действие</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Войти в комнату</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Доступ к комнате</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>К этому приватному сообщению зарезервированы комната и событие.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>Сперва соххраните событие!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Нет таких доступных комнат. Событиея в календаре и присоединённая комната уже удалены!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Выберите ваш ник</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Имя</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Фамилия</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Мейл</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Мин. длина - 4 символа для имени и фамилии вместе!.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Введите валидный мейл</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Войти как Facebook аккаунт</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Записан с</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Вы зашли с аккаунта Facebook. Вам необходимо прописать правильный мейл в профайл, иначе вы не сможете получать приглашения и приватные сообщения.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Сообщение</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Больше не показывать сообщение об изменении профайла</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>Ещё настройки дисплея ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Новое приватное сообщение:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Нажмите сюда, чтобы перейти к профайлу и прочитать сообщение ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Ответить</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Комнаты и чаты</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Мои комнаты</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Моя комната для конференций(до 16 участников)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Моя комната для вебинаров (до 120 участников)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Id владельца</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Введите пароль</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Вам нужен аккаунт уровня пользователя, модератора или админа</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-сервис (только через SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Напрямую загрузите на доску</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Вы действительно хотите удалить эту доску? Это действие не может быть отменено!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Загрузить на доску</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Не забудьте начать запись! 1 участник в комнате хочет начать её.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Начать запись</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Стрелка</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Круг</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Линия</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Квадрат</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Треугольник</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Текст</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Фигуры</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Рисовать</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Выделить/Переместить</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Рисовть форму</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Вырезать или Переместить</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Масштаб</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Печать</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Отмена</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Корзина</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Добавить решётку</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Сделать файл общим</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Выбрать форму</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Выбрать фигуру</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Скопировать</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Вырезать</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Вставить</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Удалить</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Вы действительно хотите удалить контент с доски?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Загрузить прямо на доску</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Участники</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Менеджер участников</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Присутствуют</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Удалённый контроль</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Извлечь</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Чат</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Пригласить участников</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>По eMail</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>Пользователь - модератор</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>У пользователя включена камера</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Деактивировать заполнение формы</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Активировать заполнение формы</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Привязять к решётке</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Разрешить запись</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Подождать запись</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Скрыть панель инстр.</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Играть видео</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Вы действительно хотите удалить содержание текущего слайда?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Принять и назначить пользовательские права</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Отклонить</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>Я</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Активность и действия</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Удалить доску</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Вы должны быть модератором или иметь права на рисование на доске, чтобы удалить доску!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Не разрешено</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>покидает комнату.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Основные иконки</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Без категории</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Цвет-стиль</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Качество</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Домен</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>посетить</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>красно-оранжевый</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>цвет морской волны</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>Стальной</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>светлосероголубой</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>золотистый</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>серебряно-серый</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>пользовательский</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>лучший</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>загрузка</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>средний</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Выключить микр. глобально</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Включить микр. глобально</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Дать слово</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>Микрофон был откл. модератором. Вы не можете вкл. микр. сами!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Выкл. микрофон глобально?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Вы действительно хотите отключит микрофон? Другие участники не смогут вас слышать!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Отключить микрофон локально?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Вы действительно хотите откл. этот микрофон? Этот микрофон можно отключить только на вашем компьютере. Данное действие не повлияет на то, как остальные участники будут слышать этого пользователя. Только модератор может отключить микрофон глобально!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Отключить микрофон глобально?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Вы действительно хотите отключить этого участника? Больше никто не будет слышать его!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Ваш звук включен. Нажмите сюда, чтобы послать модератору сообщение о выключении микрофона глобально (в заполненной комнате)!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Ваш звук выключен. Нажмите сюда, чтобы послать модератору сообщение о включении микрофона глобально (в заполненной комнате)!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>хотел бы, чтобы модератор выключил мой микрофон глобально.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>хотел бы, чтобы модератор включил мой микрофон глобально.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>хочет, чтобы модератор включил его/её микрофон.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>хочет, чтобы модератор выключил его/её микрофон.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Включенный микрофон. Нажмите, чтобы выключить его/её микрофон глобально.</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Выключенный микрофон. Нажмите, чтобы включить его/её микрофон глобально!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>Этот участник глобально выключен модератором. Вы не можете включить его!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Выключить ваш микрофон глобально</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Включить ваш микрофон глобально</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Выключить микрофон</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Включить микрофон</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Выключить микрофон глобально</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Включить микрофон глобально</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Только модераторы могут включать или выключать участников глобально! Чтобы выключить ваш микрофон, используйте иконку микрофона!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Название опроса</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Вы</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Заархивированные голосования</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>активные</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Простая диаграмма</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Круговая диаграмма</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Введите е-мейл</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Новые сообщения</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Закрытый опрос</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Уверены, что хотите закрыть опрос? Больше никто не сможет голосовать.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Удалить опрос</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Хотите удалить этот опрос? Результаты тоже будут удалены.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Код ISO языка</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Разрешить/запретить права на эксклюзивный звук.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Позволить участнику эксклюзивный звук</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Запретить эксклюзивный звук для участника</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>хотел бы получить разрешение на эксклюзивный звук.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>хочу, чтобы модератор разрешил мне эксклюзивный звук.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Разрешить эксклюзивный звук.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Разрешение камеры</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Изменение разрешения влияет на пропускную способность сети, увеличенная картинка требует больше разрешения.</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>У вас нет прав разрешать себе или другим эксклюзивное аудио. Попросите у модератора эти права или пусть он разрешит вам эксклюзивный звук сам.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Я хотел бы получить разрешение на эксклюзивный звук.</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Дать мне эксклюзивный звук (как альтернатива, кликните на ваш экран или нажмите F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Микрофон включён!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Микрофон выключен</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Скрыть чат</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Скрыть панель действий</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Скрыть панель файлов</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Скрыть меню действий</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Скрыть общий экран</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Скрыть доску</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Показать статус микрофона в видео</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Параметры расположения</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Новое событие</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Ссылки, защищённые паролем - это ссылки на комнаты, которые посылаются участникам при сохранении события в календаре, не в комнате! Это значит, что если вы сохраняете событие несколько раз с разными паролями, участники каждый раз получают новые ссылки с разными паролями. Но ссылки, посланные ранее, тоже работают!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Редактировать</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Номеронабиратель SIP</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Позвонить</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Показать события календаря для контакта</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Ваш дом!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Планировать митинги</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Смотреть записи и интервью</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Выбрать и начать конференцию</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Управлять пользователями и правами</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Управлять связями и исключать участников</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Управлять группами пользователей</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Управлять комнатами конференций</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Управлять свойствами системы</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Управлять метками и текстом</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Конфигурировать LDAP и ADS</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Экспорт/импорт системных бэкапов</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Вам нужны права модератора или права на рисование на доске, загрузку, выгрузку, добавление и удаление файлов и папок.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Редактировать текст</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Проф-р</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Опубликовать</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Начать публикацию</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Остановить</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Сервер публикации</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Домен публикации</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Имя публикации</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Уменьшать ширину общего экрана при перемещении его влево</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Уменьшать высоту общего экрана при перемещении его вниз</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Уменьшать смещение x общего экрана при увеличении его ширины</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Уменьшать смещение y общего экрана при увеличении его высоты</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Настройки для трансляции видео конференции на другие сервисы:</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Пожалуйста, сделайте экран общим для того, чтобы опубликовать его</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Для того, чтобы начать запись, необходимо разрешение модератора</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>Вам необходимо разрешение на предоставление эксклюзивного аудио любому участнику, для этого вам необходимо быть модератором или иметь эксклюзивные права на вкл/выкл микрофонов.</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Загрузить новый файл</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Открыть настройки общего экрана в новом окне</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Запросить подтверждение модератора</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Запросить разрешение модератора на доступ к камере/микрофону</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Получение обратной связи посредством опроса</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Прошлые и текущие результаты опросов в виде графиков</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Проголосовать, если существует опрос для этой комнаты</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Изменить настройки камеры и микрофона</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Подтвердить и покинуть комнату</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Позвонить внешним участникам при помощи VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Отправить приглашение с прямой ссылкой на эту комнату</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Изменить настройки доски</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Максимальный размер загружаемого файла</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Запросить разрешение модератора на доступ к доске</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Начать приватный чат</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Все</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>Вы не можете начать приватный чат с собой.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Вы уже начали приватный чат с этим участником.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Вы действительно хотите удалить этот приватный чат?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Сервера</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Сервера кластера</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Имя Сервера</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Адрес Сервера</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Описание Сервера</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>СМС</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Сообщение. Пользователю:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Что бы уменьшить время и интернет траффик вы можете воспользоватся командной строкой admin для копирования/восстановления/обновления: &lt;ol&gt; &lt;li&gt;войдите в установочную папку OM (например /opt/red5)&lt;/li&gt; &lt;li&gt;остановите OM (./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;выполняем ./admin.sh -b -file ~/today_om_backup.zip (создает резервную копию OM)&lt;/li&gt; &lt;li&gt;загрузите новый дистрибутив OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (перемещаем рабочую версию OM :))&lt;/li&gt; &lt;li&gt;распаковываем дистрибутив OM в папку /opt/red5&lt;/li&gt; &lt;li&gt;запускаем ./admin.sh -i -file ~/today_om_backup.zip (или './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' в случае когда база данных отличается от базы по умолчанию )&lt;/li&gt; &lt;li&gt;запускаем OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Общие комнаты для всех пользователей</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Общие комнаты для текущей группы пользователей</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Комнаты данного пользователя</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Создать/редактировать комнату для этого события</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Вы можете ввести несколько адресов в формате: Имя1 Фамилия1 &lt;адрес1&gt;,"Имя2 Фамилия2" &lt;адрес2&gt;,'Имя3 Фамилия3' &lt;адрес3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Регулировать поток</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Регулировать микрфон</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Премодерируемый чат</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Опубликовать сообщение</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Открывать панель чата по умолчанию</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Открывать панель файлов по умолчанию</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Прошлый запрос</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Каждый подчиненный сервер посылает запрос главному через 3 секунды (задается в конфигурации). Параметр lastPing дожен быть менше 1 минуты так, чтобы главный сервер использовал подчиненные сервера.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Порт</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>SOAP Админ</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Пароль</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Путь к приложению</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Протокол</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Исполняемый запрос</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Активный</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Сгенерировать URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Тестирование сети</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Автоматически определять видео окно</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Подчёркнутый шрифт</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Стиль шрифта</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Разрешить использование стилей в чате</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Цвет шрифта</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Гиперссылка</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Показать статистику сессии</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Детализация сессии</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>Системный импорт</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Включать загруженные файлы и записи в бэкап</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Разрешить SIP транспорт в комнате</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Вы действительно хотите дать слово этому участнику?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Укажите Ваш часовой пояс</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>конференц зал (1-25 участников)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>ограниченная (1-150 участников)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>интервью (1:1 встреча с записью)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Конфигурация с этим ключем уже существует, пожалуйста укажите другой ключ или измените существующий</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Сохранение данных, подождите пожалуйста.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Добро пожаловать</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Виджет, содержащий основную информацию о пользователе и ссылки на сайты поддержки</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Виджеты</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>О программе</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Наименование</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Версия</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Ревизия</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Дата билда</value>
+  </string>
+  <string id="1554" name="main_loading">
+    <value>Загрузка ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>сегодня</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Янв</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Фев</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Март</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Апр</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>Май</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Июнь</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Июль</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Авг</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Сен</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Окт</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Ноя</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Дек</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>не посылать уведомление</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>обычный e-майл</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal e-майл</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Конфигурировать OAuth2</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Название</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Активен</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>URL значка</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>URL запроса ключа</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>URL запроса токена</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>URL запроса данных</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>Настройка OAuth2</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Имя пар-ра "логин"</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Имя пар-ра "email"</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Имя параметра "имя"</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Имя пар-ра "фамилия"</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Атрибуты запроса токена</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Uri возврата</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>Вы можете ввести адрес в формате: Имя1 Фамилия1 &lt;адрес1&gt; или "Имя2 Фамилия2" &lt;адрес2&gt; или 'Имя3 Фамилия3' &lt;адрес3&gt; или адрес</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Сообщить об отключении</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Показать</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Ваш аккаунт создан. Письмо с подтверждение было выслано. Теперь вы можете войти под своим именем.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>Введенная дата начала раньше даты окончания.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Код выхода</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Сообщения конвертации</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Файл записи не найден</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Добавить доску</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>Вы можете ввести адрес в формате: Имя1 Фамилия1 &lt;адрес1&gt; ИЛИ "Имя2 Фамилия2" &lt;адрес2&gt; ИЛИ 'Имя3 Фамилия3' &lt;адрес3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Безопасность</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Доступ запрещён. У вас нет прав для входа в эту комнату.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Пересоздать</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/slovak.xml b/src/main/webapp/languages/slovak.xml
new file mode 100644
index 0000000..8aff849
--- /dev/null
+++ b/src/main/webapp/languages/slovak.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferencia</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Stretnutie</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Podujatia</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Nastavenia</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administrácia</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stop</value>
+  </string>
+  <string id="8" name="record">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Žiadny súbor nie je k dispozícií</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Pripojení používatelia</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Začať konferenciu</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Moje meno</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonferencia</value>
+  </string>
+  <string id="15" name="import">
+    <value>Nahrať súbor</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Načítať znovu zoznam</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>K hlavnému súboru</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nové hlasovanie</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nové hlasovanie pre konferenciu</value>
+  </string>
+  <string id="20" name="question">
+    <value>Otázka</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Typ hlasovania</value>
+  </string>
+  <string id="22" name="create">
+    <value>Vytvoriť</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Všetci pripojení používatelia prijímajú správu s novým hlasovaním</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Vytvoriť hlasovanie</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Áno/Nie</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Čísla 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Hlasovanie</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Musíte byť moderátor pre vytvorenie otázky</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Váš hlas bol zaznamenaný</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>V tomto prieskume ste už hlasovali</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Hlasovať</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Vaša odpoveď</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Áno</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nie</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>chce vedieť</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Výsledky hlasovania</value>
+  </string>
+  <string id="38" name="question">
+    <value>Otázka</value>
+  </string>
+  <string id="39" name="results">
+    <value>Výsledky</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Odpovede</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Žiadne hlasovanie nebolo vytvorené</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Hlasovať</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Stretnutie(max 6 miest)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferencia(max 25 miest)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Typ</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Ostatné miesta</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Už vybrané</value>
+  </string>
+  <string id="48" name="enter">
+    <value>vstup</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderátor opustil stretnutie</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systémové informácie</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Vybrať zariadenie</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Vybrať webkameru</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Vybrať mikrofón</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Zrušiť</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Musíte sa znovu pripojiť</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Upraviť nastavenia</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurz</value>
+  </string>
+  <string id="59" name="language">
+    <value>Jazyk</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Zrušiť</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Zmazať tabuľu</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Chcete zmazať tabuľu pred vložením nového obrázka?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Nepýtať sa ma znova</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nie</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Zmeniť nastavenia</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Potvrdiť žiadosť na zmazanie tabule</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Informácie o používateľovi</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Zmazať tabuľu</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Zrušiť</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Prerobiť</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Vybrať objekt</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Farba</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Nakresliť čiaru</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Podčiarknuť</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Obdĺžnik</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Šípka</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Zmazať vybranú položku</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Požiadať o moderáciu</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Aplikovať</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Nemám otázku</value>
+  </string>
+  <string id="85" name="close">
+    <value>Zatvoriť</value>
+  </string>
+  <string id="86" name="italic">
+    <value>ležatý</value>
+  </string>
+  <string id="87" name="bold">
+    <value>hrubý</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>ČAKÁM</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Používateľ požiadal o moderáciu. Môžte mu sprístupniť len prístup k tabuli, alebo plnú moderáciu. Používateľ:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Prijať</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Odmietnuť</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Posielanie žiadosti nasledovným používateľom</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Potvrdené</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Odmietnuté</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Zmeniť moderátora</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Nie ste moderátorom</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderátor</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Táto miestnosť je už obsadená</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipsa</value>
+  </string>
+  <string id="101" name="close">
+    <value>Zatvoriť</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>chyba vstupných údajov</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Rozlíšujte veľké a malé písmena a minimálne 4 znaky</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Heslo musí mať aspoň 4 znaky</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Používateľské meno už existuje</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Email už je zaregistrovaný</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Systémová chyba, kontaktujte administrátora</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Meno a email</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Heslo</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Jazyk</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Prihlásiť sa</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Zaregistrovať sa</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Používateľské meno</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Heslo</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Znova heslo</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Meno</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Priezvisko</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Email</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Krajina</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrovať</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Zrušiť</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Nie ste členom?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Domov</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Používatelia</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Skupiny</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Spoločnosti</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Miestnosti</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Verejnosť</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Spoločnosť</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Vstup</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Heslo</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Znova heslo</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Titul/Meno</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Priezvisko</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Email</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Narodeniny</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Ulica/Číslo</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>PSČ/Mesto</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Krajina</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adresa</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Údaje používateľa</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Uložiť</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Uložiť</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID používateľa</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Meno</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Priezvisko</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Ďalšie</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Predchádzajúce</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Zmazať nahrávku</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Zrušiť</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Zmazať</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nové nahrávanie</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Obnoviť nahrávanie</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Zmazať nahrávku</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Zablokované</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Povolené</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Spoločnosti</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalendár</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Zatvoriť</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID spoločnosti</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Meno</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Používateľ</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderátor</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Administrátor</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>User level</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Spoločnosť</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Meno</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Pridať organizáciu</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Pridať organizáciu</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Zrušiť</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Pridať</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Odstrániť organizáciu</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Používateľ</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Pridať používateľa</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Zmazať používateľa</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Pridať používateľa do spoločnosti</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Hľadať používateľa</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Hľadať</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Používateľ</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Spoločnosť</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Zadať</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Miestnosť</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Miestnosti</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Meno</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Verejné</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Spoločnosti</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Miestnosti</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Meno</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Typ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Verejné</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Komentovať</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Uložiť a exportovať</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Nahrať</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Uložiť ako</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Meno súboru</value>
+  </string>
+  <string id="201" name="files">
+    <value>Meno súboru</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Zrušiť</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Uložiť</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Chyba</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objekty nahrávané</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synchronizujem, prosím čakajte</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Nahrávanie súboru</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synchronizujem, prosím čakajte</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Zmazať tabuľu</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Zmazať tabuľu, všetky objektu budú vymazané</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Potvrdiť pred nahratím súboru</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Zaslať pozvanie</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Zaslať pozvanie</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Predmet</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Príjemca</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Správa</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Poslať</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Poslať</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Informácie o používateľovi</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Vaša prezývka pre túto miestnosť</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Prezývka</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Meno</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Priezvisko</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Jazyk</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Zadať</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Nahrávanie dát, prosím čakajte</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Nesprávne heslo</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Zadajte 2 rovnaké heslá</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Nesprávne heslo</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Zadali ste nesprávny email</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrácia kompletná</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Vaše konto bolo vytvorené. Môžte sa prihlásiť.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Niekto už zdieľa svoju plochu</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Zdieľanie zakázané</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Zdieľať/nahrávať plochu</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Nemožné synchronizovať plochu. Požiadajte moderátora o zníženie kvality.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Plocha:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Kreslenie</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokument</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Súbory</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Členovia</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Stiahnuť pôvodný dokument</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Stiahnuť PDF dokument</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Nahrať prezentáciu na tabuľu</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfigurácia</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Ťahať tento objekt</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Zmeniť veľkosť objektu</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value></value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Prvá strana</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Predchádzajúca strana</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ďalšia strana</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Posledná strana</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Pán</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Pani</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Nastavenie</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Kľúč</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Nastavenie</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Kľúč</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Posledná zmena</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Obnovené</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Komentovať</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Hodnota</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value></value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Použivatelia</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Zmazať používateľa zo spoločnosti</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>D</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Tento používateľ je už členom tejto spoločnosti</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Správy</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Rýchle odkazy</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Choď do miestnosti</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Choď do miestnosti</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Pomoc a podpora</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Nahlásiť chybu</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>viac</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Stránka projektu (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Zoznam používateľov (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Zapamätať prihlásenie</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Obsah</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>My home page</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>My scheduled meetings</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>My scheduled events</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Public meetings</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Private meetings</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Public events</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Private events</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Public content</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Private content</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personal content</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderácia</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Mám otázku</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Hlasovania</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Vybrať súbor</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Nastavenia</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Nastavenie mikrofónu a kamery</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Nastavenie tabuli</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Východ</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Späť k miestnostiam</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Odhlásiť</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Zabudli ste heslo?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Resetovať heslo</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Using email address</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Using login</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Váš email</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Vaše prihlásenie</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Poslať email s reštartovacím odkazom</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Žiadny takýto email neexistuje. Uistite sa, že ste zadali rovnaký email ako pri registrácií.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Prosím zadajte email alebo používateľské meno</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>There is no user connected to this username</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Email bol zaslaný</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Chyba</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Správa</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Používateľ sa nenašiel</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Resetovať vaše heslo</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Zmeniť heslo</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Nové heslo</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Znova zadajte heslo</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Vami zadané heslo nie je identické</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Rozlišujte veľké/malé písmená a viac ako 4 znaky</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Heslo nastavené. Môžte sa prihlásiť.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Chyba. Kontaktujte administrátora.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Používateľské meno sa nenašlo</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Nesprávne heslo</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Úspešne odhlásený</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrácia nemožná</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Chybný email</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Duplikátny názov súboru, prosí, zadajte iný</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Názov súboru príliš krátky</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Nemožno uložiť adresu</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Používateľ pridaný, ale je nutné priradiť ho k spoločnosti.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nový záznam</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No field found for the ID</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No label found</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Autorízácia administrátorom sa vyžaduje</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Jazykový editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Jazyk</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Label ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Label name</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Value</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Field values</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Label name</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Label value</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Label ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>You have deleted the label</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Invalid label ID</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Nemôžte zmazať toto pole</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Export</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Musíte sa odhlásiť pre uloženie zmien.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Delete language</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Add new language</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Name</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Add language</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Backup</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>prvý</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>predchádzajúci</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ďalší</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>posledný</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>používateľ hovorí (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>vypnúť/zapnúť zvuk</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Systém</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Vaše nastavenie</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Zdravím</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Upraviť profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nová správa</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Nahrať nový obrázok</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Exportovať používateľove údaje</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>All organisations must already exist</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Začať exportovať</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>By organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Start export</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Import user data</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Choose users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Importovať</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportovať do XML</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Vybrať jazyk dokumentu pre import</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Importovať</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Uložiť ako</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Meno</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Komentár</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Uložiť</value>
+  </string>
+  <string id="395" name="record">
+    <value>Nahrávky</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Prehliadač nahrávok</value>
+  </string>
+  <string id="397" name="record">
+    <value>Nahrávky verejných a súkromných miestností</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Používatelia</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Pripojený</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Používatelia v tejto miestnosti</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Obnoviť</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Miesta sú obsadené</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Kliknite na miestnosť pre informácie o miestnosti</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chat s používateľmi v tejto miestnosti</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Miestnosť</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Používatelia v tejto miestnosti</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>od</value>
+  </string>
+  <string id="409" name="record">
+    <value>Prehrať nahrávku</value>
+  </string>
+  <string id="410" name="record">
+    <value>Dĺžka</value>
+  </string>
+  <string id="411" name="record">
+    <value>Dátum</value>
+  </string>
+  <string id="412" name="record">
+    <value>Režim nahrávania</value>
+  </string>
+  <string id="413" name="record">
+    <value>Prehrať túto nahrávku</value>
+  </string>
+  <string id="414" name="record">
+    <value>Prehrať/Pauza</value>
+  </string>
+  <string id="415" name="record">
+    <value>Nahrať túto miestnosť</value>
+  </string>
+  <string id="416" name="record">
+    <value>Zastaviť nahrávanie</value>
+  </string>
+  <string id="417" name="record">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Niekto už nahráva túto miestnosť</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Nahrávanie. Používateľ:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Nahrávanie bude zrušené a neuloží sa</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>výsledok</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Zavrieť toto okno a zhrnúť nahrávanie</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Zmeniť farbu</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Vybrať farbu</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Znemožniť/umožniť farbu</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Zmeniť farbu výplne</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Znemožniť/umožniť farbu výplne</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Zmeniť širku</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Zatvoriť</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Zmeniť veľkosť písma</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Zmazať nahrávku</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Hosť</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Meno</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Miestnosť</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Dátum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Zrušiť</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Začať</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Meno</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Dátum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Delete server chat log</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Poslať správu</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emotikony</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emotikony</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Vybrať zariadenie</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio a video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Iba audio</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Video iba</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Žiadne audio/video (obrázok)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Žiadne audio/video z vášho počítača nie je publikované</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>Po</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>Ut</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>Str</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>Štv</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>Pia</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>So</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>Ne</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Pondelok</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Utorok</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Streda</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Štvrtok</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Piatok</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sobota</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Nedela</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KT</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalendár týždeň</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Január</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Február</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marec</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Apríl</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Máj</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Jún</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Júl</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>August</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Október</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalendár</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participujúci</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Zobraziť nastavenie rozloženia</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>šírka | výška</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video kontajner</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Moderátorský kontajner</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Tabuľový kontajner</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Povolený</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>šírka | výška</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Kontajner dokumentov, chatu a participantov</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Povolený</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>šírka | výška</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderátor opustil miestnosť. V tomto momente nikto neprezentuje.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>V tejto miestnosti nie je moderátor, ale sú tu participujúci. Musíte požiadať o moderáciu alebo počkať.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Pozvanie</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Správa od:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Správa:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Pre participáciu v tejto miestnosti kliknite na tento link:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Kliknite sem pre vstup do miestnosti:</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Ak máte problém s odkazom, skopírujte ho do vášho prehliadača:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME prihláseniep</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Your userdata</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>prihlásenie</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Heslo</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Email</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Team</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME prihlásenie</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Reset Password</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Kliknite na tento link pre zadanie nového hesla</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Kliknite sem pre zadanie nového hesla</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Ak máte problémy s týmto odkazom, skopírujte si ho priamo do vyhľadávača:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Reset hesla</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Prosím zadajte správny dátum vo formáte 24.12.2001 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Prosím zadajte správny email vo forme name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Prosím zadajte číslo, napríklad 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Prosím zadajte celé číslo, napríklad 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Prosím zadajte platné telefónne číslo, napríklad +49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Prosím zadajte správny čas, napríklad 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Chránené heslom</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Heslo</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Validačná doba</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Nekonečné</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Obdobie</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Jednorázové</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Platné od</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Platné do</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Pozvanie do $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Žiadna pozvánka pre tento kód neexistuje</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Toto pozvanie už bolo použité</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Pozývací kód je neplatný</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Heslo</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Skontrolovať heslo</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Neplatné heslo</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Audio/video</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synchronizovať audio/video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Prihlásenie je správne, ale stretnutie nie je aktívne</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>ID miestnosti nie je prihlásené alebo nemá administrátorské práva. SOAP brána potrebuje používateľa s administrátorskými právami na vloženie nového používateľa.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no remoteuser-data connected. You did not call the SOAP gateway before accessing the application or you are using a wrong session ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>The recorder is currently beta</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>os x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>os y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>š</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>šírka</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>v</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>výška</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Zmeniť priehľadnosť</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Otvoriť prehliadač</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Zatvoriť prehliadač</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Pripojenie na server zlyhalo</value>
+  </string>
+  <string id="557" name="557">
+    <value>Ukazovátko</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizovanie</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizovanie, prosím čakajte</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Stiahnúť ako SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Stiahnúť ako PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Stiahnúť ako JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Stiahnúť ako PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Stiahnúť ako TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Pripomienka</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategória</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Opakovanie</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>žiadne</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Umiestnenie</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Začiatok</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Koniec</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Názov</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Komentár</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Pozvať ľudí</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Denne</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mesačne</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Ročne</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Stretnutie končí až v čase neskoršom ako začalo</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Prosím vložte názov</value>
+  </string>
+  <string id="580" name="580">
+    <value>Zprava doľava</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktivovať ak píšete sprava doľava</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Tabuľa</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Pozerať nahrávky stretnutí</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Stretnutie - make a conference with between 4 and 16 users&lt;br/&gt;and everybody will have audio and video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - make a conference with up to 200 participents&lt;br/&gt;but only the moderator will have audio and video access</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organisations&lt;br/&gt; and change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Používatelia v tejto miestnosti</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Nahrávam dokument. Počkajte pokiaľ všetci klienti nebudú zosynchronizovaní.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Nahratie kompletné, konvertujem dokument</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Začať nahrávanie</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Nahrať a importovať dialóg. Prosím vyberte súbor.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Zrušiť</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Vybrať súbor</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Pripojenia</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Hodnota</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Stream ID</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Pripojený od</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Miestnosť / Oblasť</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Vyhodiť používateľa</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Vyhodiť používateľa</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Naozaj chcete vyhodiť tohto klienta z miestnosti?</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Vaše stretnutie bolo zavreté administrátorom alebo moderátorom.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefón</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Používateľ je moderátorom tejto miestnosti</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Používateľ má právo kresliť na tabuľu</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) štartovať audio/video alebo zmeniť nastavenia zaradenia</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Povoliť tomuto používateľovi kresliť na tabuľu</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Odobrať právo kresliť na tabuľu</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Používatelia</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Súbory</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Tabuľa</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Váš účet je priradený k viacerým spoločnostiam.Prosím vyberte si jednu pre túto miestnosť.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Miestnosť je už obsadená</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Typ miestnosti</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Miestnosť</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Čas</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>Clickjobfair - Pripomienka</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Správa od používateľa:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Správa:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Kliknite na tento odkaz pre účasť na konferencií:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Kliknite tu pre vstup do miestnosti</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Ak máte problém s odkazom, prosím skopírujte ho priamo do prehliadača:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Hladať vnútorne</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Pridať externý</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Meno</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Priezvisko</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>Email</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Potvrdiť odhlásenie</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Chcete naozaj odísť?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Akcia</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo miestnosť</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo čas</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Časovač stretnutia</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This room is a demo room. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderované</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Prosím počkajte na vstup moderátora do miestnosti</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>OK</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Prichádzajúce zdieľanie plochy</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Prichádza nové zdieľanie plochy od tohto používateľa:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Začať zdieľanie</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Pridať nové stretnutie</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Miestnosť</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Miestnosť</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderácia</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderovať používateľov</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderovať miestnosti</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Chcete aby sa tento používateľ stal moderátorom spoločnosti?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Prosím zvoľte spoločnosť pred pridaním používateľa</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Spoločnosť - moderátor</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Chcete naozaj vymazať tohto používateľa zo spoločnosti?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Tento používateľ je moderátor</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Tento používateľ nie je moderátor</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Chcete aby tento používateľ bol moderátorom tejto spoločnosti?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Pridať alebo zmazať používateľov/miestnosti zo spoločnosti</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Chcete naozaj zmazať túto nahrávku?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Chcete naozaj zmazať tohto používateľa z vašej spoločnosti?</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Nemôžte zmazať vlastného používateľa</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Táto metóda potrebuje administrátorský prístup</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Nie je žiadne stretnutie spojené s týmto ID</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Toto je administrátorsky/moderátorsky účet. Môžte zmeniť tento účet cez administračný panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Pre dokončenie registrácie kliknite na nasledujúci odkaz</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Kliknite pre overenie vášho emailu</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Žiadny používateľ sa nenašiel pre tento hash</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Tento používateľ je už aktivovaný</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Úspešne ste aktivovali svoj účet</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Prihlásiť sa teraz</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. Please use the link in the email you received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You have successfully signed up. An email with a verification code will be sent to your mailbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Odobrať moderovanie tomuto používateľovi</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Udeliť právo moderovať tomuto používateľovi</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Používateľ</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Prístup k tabuli</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderátor</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Prosím vyberte používateľa zo zoznamu pre udelenie práva moderovať/ mať prístup k tabuli alebo videa</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Tento používateľ už je moderátorom</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Nemôžte seba zbaviť práva moderovať</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Povoliť tomuto používateľovi publikovať audio/video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Odobrať audio/video používateľovi</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Mám otázku</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Chcem kresliť na tabuľu</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Chcem zdieľať svoje audio/video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Ste moderátorom tejto miestnoti</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Máte právo kresliť na tabuľu</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Máte právo zdieľať svoje audio/video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Správa moderátorovi</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Používateľ</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>sa chce spýtať otázku</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>chce písať na tabuľu</value>
+  </string>
+  <string id="695" name="695">
+    <value>chce zdieľať svoje audio/video</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Musíte počkať pokiaľ moderátor vstúpi do miestnosti</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Zrušiť</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Uložiť</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Deň</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mesiac</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Rok</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Nahrať súbor</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Pridať súbor</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Obnoviť</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Kôš</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Moje súbory</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Súbory v miestnosti(verejné)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Pridať súbor</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Pridať zložku</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Zmazať zložku</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Zmeniť meno</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nový priečinok</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Naozaj chcete zmazať túto položku?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Hľadať</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Hľadať</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Otvoriť dokument</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Zobraziť všetky súbory</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Zatvoriť dokument</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Zmazať súbor</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>Nemáte právo používať tabuľu</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Vlastnosti dokumentu</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Začať Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Začať Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Používateľ chce zdieľať svoju plochu. Zobraziť?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Práve zdieľate svoju plochu</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Zdieľanie</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>Už zdieľate svoju plochu</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Prehliadač plochy</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Zastaviť zdieľanie</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Zdieľač plochy</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Kliknite Štart pre zdieľanie plochy</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Začať zdieľanie</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pauza</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Vyberte plochu zdieľania:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Zmeniť šírku</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>Zdieľač ukončil stretnutie</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Zmeniť výšku</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Šírka:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Výška:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Spojenie zavreté serverom</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Zrušiť</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Začať Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Ak zavriete toto stretnutie, nebudete môcť reštartovať prehliadač pre toto stretnutie</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Potvrdiť zavretie okna</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Zdieľať plochu</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>nahrať stretnutie</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Spolu prehliadanie</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Prosím použite Internet Explorer pre Windows</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Predchádzajúce</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Ďalšie</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Obnoviť</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Domov</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Načítať</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Pridať túto stránku ako domovskú v mojom profile</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Testovať nastavenie</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Otestovať audio alebo video nastavenie pred vstupom do miestnosti môžte nahratím stretnutia na pár sekúnd. Môžte si potom prehrať nahrávku a skontrolovať svoje audio/video.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Tento test nezobrazovať viac</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Zrušiť</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Začať stretnutie</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Nepýtať sa znova</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Môžte prejsť bez testovania ak neplánujete zverejniť svoje audio/video.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="767">
+    <value>Level-meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Stlačte štart</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Začať konferenciu</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Začať konferenciu</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Vybrať miestnosť</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Skontrolovať nastavenie</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Začať konferenciu</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Ako konferencovať:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Začať nahrávanie</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Nezobrazovať udio/video test pred vstupom do miestnosti</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Verejné miestnosti</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Verejné miestnosti sú prístupné pre všetkých používateľov</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Súkromné miestnosti</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Súkromné miestnosti sú prístupné len pr používateľov určitej spoločnosti.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Moje miestnosti</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Musíte byť moderátorom pre vykonanie tohto úkonu</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Požiadať o moderáciu</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Požiadať o prístup k tabuli</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Požiadať o audio/video prístup</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>Hash tejto miestnosti už bol použitý</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>ŠTART</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>VÝCHOD</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Chcete naozaj odísť?</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Východ z konferencie</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Miestnosti</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Vybrať miestnosť pre stretnutie</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved event in the Calendar. Please save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>Clickjobfair, your web conferencing platform. You can either follow the 1-2-3 steps to enter a conference room directly or you choose the Calendar to set up a meeting.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To setup a conference you can add a new event in the calendar</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no user selected</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is super moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the room is moderated, any users with a moderator or administrator level access are automatically set to moderator when they enter the room</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A super moderator is always a moderator when they enter a room</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Make user a super moderator</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove super moderator from user</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an organisation to the room only users of that organisation have access to it</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organisation</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Ste si istý?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Naozaj chcete zmazať túto položku?</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>Nie je žiadny používateľ označený</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Pridať nového moderátora</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the super moderation flag for this user?</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the super moderation flag for this user? You need to save the room object to save these settings.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This user is a super moderator. You cannot remove the moderation flag.</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Chcete naozaj vymazať?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Vymazať?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Pani</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Vlastnosti</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Zobraziť pozíciu kurzora</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Zdieľať audio cez SIP applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Zdieľať audio cez SIP a video cez Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Napasovanie</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Vidieť plochu</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>Používateľ</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>chce zdieľať svoju plochu. Zobraziť?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Zavrieť</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>Stretnutie bolo zavreté zdieľajúcim používateľom</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pauza</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Nové zdieľanie plochy</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimalizovať</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximalizovať</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Nahrávacia časová os</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Moje nahrávky</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Verejné nahrávky</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Meno</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Dĺžka</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Dátum</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value></value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Stiahnuť</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Hlavné - video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Nahrávanie</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Môžte zdieľať a nahrávať svoju plochu súčasne.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Začať nahrávanie</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Ukončiť nahrávanie</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Stiahnuť FLV-súbor</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Miestnosť</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Prehrať</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>Používateľ má zapnutý mikrofón</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Ukončiť zdieľanie</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Povoliť používateľovi otázky</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Vypnúť - aby vás používatelia nevyrušovali</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Práva</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Stiahnuť ako AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Základná videoplocha</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio iba</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Nastala chyba počas nahrávania</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>Nahrávka nie je ešte hotová na prezeranie</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Zápis:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Správa</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>OK</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP applet nie je pripravený</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP nastavenia</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP nastavenia pre každého používateľa</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP používateľ</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>SIP heslo</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>SIP auth ID</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>Prihlásenie do SIP brány zlyhalo</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>Prihlásenie do SIP brány zlyhalo. Kontaktujte administrátora</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Pripájanie na SIP bránu...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Pripájanie na SIP bránu...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP applet správa</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>SIP applet nie je pripravený. Potvrďte applet a kliknite OK</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Získať moderáciu</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Uložiť zmeny</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointment has been changed. Do you want to save these changes?</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Pre prístup k ostatným nahrávkam sa prihláste do $APP_NAME applikácie</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Vybrať používateľa pre toto video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Používatelia k dispozícií</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Ste moderátorom rozhovoru. Vy rozhodujete kto môže hovoriť.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Začať nahrávanie</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Ukončiť nahrávanie</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>Nahrávanie rozhovoru už prebieha.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>Nahrávanie je zastavené alebo ešte nezačalo.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>Nahrávanie rozhovoru už prebieha!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Zrušiť</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>Spracovanie rozhovoru zaberie 5 minút za každú 1 min nahrávky. Súčasný status spracovania je:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>Nemôžte premiestniť súbor do jeho podsúboru!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Zmazať všetky objekty na tomto slide iba!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Iba adresa zadaná do statusového riadku sa zobrazuje účastníkom!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Spraviť tímové miestnosti</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Vybrať používateľov pre tímové miestnosti!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Môžte vybrať používateľov tu a vytvoriť miestnosti pre nich. Vybraní používatelia budú automaticky preradení do nich.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Meno</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Prihlásenie</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Používatelia pre novú tímovú miestnosť:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Vytvoriť tímovú miestnosť</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Zrušiť</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Vyberte aspoň 1 používateľa pre tímovú miestnosť!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Pridať používateľa pre tím</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Odstrániť používateľa z tímovej miestnosti</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Typ miestnosti</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>This is a Team-Room, you can send the Team-Moderator a message if you need help. You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>1) Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="room-videos">
+    <value>Videá</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything! [Screen Sharing]</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose &lt;i&gt;Insert&lt;/i&gt; from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;&lt;u&gt;&lt;FONT color='#0000CC'&gt;&lt;A HREF="http://www.youtube.com/watch?v=Ukqa01O48uI" TARGET="_BLANK"&gt;watch the demo&lt;/A&gt;&lt;/FONT&gt;&lt;/u&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/spanish.xml b/src/main/webapp/languages/spanish.xml
new file mode 100644
index 0000000..e4c413a
--- /dev/null
+++ b/src/main/webapp/languages/spanish.xml
@@ -0,0 +1,4834 @@
+﻿<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Conferencia</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Reunión</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Eventos</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Ajustes</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Perfil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administración</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Detener</value>
+  </string>
+  <string id="8" name="record">
+    <value>Grabar</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>No hay ningún archivo disponible</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Grabado por el profesor</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Usuarios conectados:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Iniciar conferencia</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mi nombre</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videoconferencia</value>
+  </string>
+  <string id="15" name="import">
+    <value>Enviar un archivo</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Actualizar la lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Marcar como archivo principal</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Nueva encuesta</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Nueva encuesta para la conferencia</value>
+  </string>
+  <string id="20" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Tipo de Encuesta:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Crear</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Información: cada usuario conectado recibe un mensaje con la nueva encuesta.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Crear encuesta</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Sí/No</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Valor numérico [1-10]</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Encuesta</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Se necesita ser moderador para crear una encuesta.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Su voto ha sido registrado</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Ya ha respondido a la encuesta con anterioridad</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Votar</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Su respuesta:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Sí</value>
+  </string>
+  <string id="35" name="no">
+    <value>No</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Desea saber:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Resultados</value>
+  </string>
+  <string id="38" name="question">
+    <value>Pregunta:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultados:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Respuestas:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>No hay encuestas</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Votar</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Reunión (máx 4 puestos)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Conferencia (máx 50 puestos)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tipo</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Otros puestos</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Ya fue seleccionado.</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Entrar</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>El moderador ha abandonado la reunión.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Información del sistema</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Seleccionar dispositivo</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Seleccionar cámara:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Seleccionar micrófono:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>Aceptar</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Cancelar</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Necesita reconectarse</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Editar configuración</value>
+  </string>
+  <string id="58" name="course">
+    <value>Curso:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Idioma:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Aceptar</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Cancelar</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Borrar pizarra</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>¿Desea limpiar la pizarra antes de añadir una nueva imagen?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>No volver a preguntar</value>
+  </string>
+  <string id="65" name="no">
+    <value>no</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Editar configuración</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Requerir confirmación antes de limpiar la pizarra</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Información del usuario</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Limpiar la pizarra</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Deshacer</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Rehacer</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Seleccionar un objeto</value>
+  </string>
+  <string id="73" name="text">
+    <value>Texto</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Pintar</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Trazar una línea</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Subrayar</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rectángulo</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elipse</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Flecha</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Borrar el ítem escogido</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Solicitar ser moderador</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Solicitar</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Tengo una pregunta</value>
+  </string>
+  <string id="85" name="close">
+    <value>Cerrar</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Itálica</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Negrita</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>En espera...</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Un usuario solicita la moderación; puede concederle acceso sólo a la pizarra o cambiar por completo el rol de la moderación. Usuario:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Aceptar</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Denegar</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Cancelar</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Enviando la solicitud a los siguientes usuarios</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Aceptado</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Rechazado</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Cambiar de moderador</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Usted no es moderador</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderador:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Lo sentimos, pero esta sala está llena. Inténtelo más tarde</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elipse</value>
+  </string>
+  <string id="101" name="close">
+    <value>Cerrado</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>error en la introducción de datos</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>el nombre de usuario debe contener al menos 4 caracteres</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>la clave de usuario debe contener al menos 4 caracteres</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Este nombre de usuario ya existe</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Este email ya está registrado</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Error del sistema, por favor contacte con el administrador</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Entrar</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Usuario:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Contraseña:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Idioma</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Entrar</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrarse</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Usuario:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Contraseña:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Contraseña (otra vez):</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Nombre:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Apellidos:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>Correo electrónico:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>País:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrarse</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Cancelar</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>¿No está registrado?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Inicio</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Usuarios</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupos</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organizaciones</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Salas de Conferencias</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Público</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organización</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Entrar</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Inicio</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Contraseña</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Escribir de nuevo</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Nombre</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Apellidos</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>Correo Electrónico</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Fecha nacimiento</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Dirección</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Código/Población</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>País</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Más información</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Datos de Usuario</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Guardar</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Guardar</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Inicio</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Nombre</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Apellido(s)</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Mostrar siguiente</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Mostrar anterior</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Eliminar registro</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Cancelar</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Borrar</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nuevo registro</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Actualizar registro</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Borrar registro</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Estado</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>desactivado</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>activado</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organizaciones</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Calendario</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Cerrar</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Nombre</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Usuario</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderador</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Administrador</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Nivel de usuario</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organización</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>nombre</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Añadir organización</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Añadir organización</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Cancelar</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Añadir</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Eliminar organización</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Usuario</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Añadir usuario</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Eliminar usuario</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Añadir usuario</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Buscar usuario</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Buscar</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Usuario</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organización</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Entrar</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Salas</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Salas de Conferencia</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>ID</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Nombre</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>pública</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organizaciones</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Salas de Conferencia</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Nombre</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Tipo</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Pública</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Comentario</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Guardar y exportar</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>cargar</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Guardar como</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Archivo</value>
+  </string>
+  <string id="201" name="files">
+    <value>archivo</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Cancelar</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Guardar</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Error</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Cargando</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objetos cargados</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Sincronizando clientes, espere un momento.</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Cargando datos de imagen</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Sincronizando. Espere, por favor.</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Limpiar la pizarra</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>limpiar la pizarra, toda la información de la pizarra se perderá</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Confirmar antes de cargar un archivo</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Enviar invitación</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Enviar invitación</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Tema</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Destinatario</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Mensaje</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Enviar</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>enviar</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Datos de usuario</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Su nombre para esta conferencia</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Nombre (apodo)</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Nombre</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Apellido</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>Email</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Idioma</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Entrar</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Cargando</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Cargando datos, espere un momento</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Contraseña errónea</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Por favor introduzca dos veces las misma contraseña con un mínimo de 4 caracteres</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Correo inválido</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Usted ha introducido una dirección no válida de correo electrónico</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>El registro se ha completado con éxito</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Su cuenta ha sido creada, puede ingresar desde este momento</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>No puede compartir su escritorio en este momento. Alguien más ya está compartiendo su escritorio.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Compartición no permitida</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Compartir/grabar escritorio</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Problemas de conexión: Su ancho de banda es insuficiente y se perderá la información. Si el mensaje se repite con frecuencia solicite al moderador reducir la calidad de imagen y audio.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Escritorio de:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Dibujar</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Documento</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Archivos</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Miembros</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Descargar el documento original</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Descargar el documento en pdf</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Subir un archivo a la pizarra</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Configuración</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Arrastrar este objeto</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Ajustar el tamaño del objeto</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>de</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Ir a la primera página</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Ir a la página anterior</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Ir a la página siguiente</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Ir a la última página</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Disminuir Zoom</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Aumentar Zoom</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sr.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sra.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Configuración</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Clave</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Configuración</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Clave</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>última actualización</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>actualizado por</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>comentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Valor</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>de</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Usuarios</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Eliminar usuario de la organización</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Eliminar</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Este usuario ya es miembro de la organización</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Noticias</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Enlaces rápidos</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Ir a la (Vídeo)Conferencia</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Ir al Auditorio</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Ayuda y Soporte Técnico</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Enviar "bug"</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>más</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Web del Proyecto (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Lista de correo del Proyecto (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Recordar</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Contenido</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Mi página de inicio</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Reuniones programadas</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Eventos programados</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Reuniones públicas</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Reuniones privadas</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Eventos públicos</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Eventos privados</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Contenido público</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Contenido privado</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Contenido personal</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value>...</value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderación</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Tengo una pregunta</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Encuestas</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Seleccione un archivo</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Configuración</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Cámara y micrófono</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Configuración de la pizarra</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Salir</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Regresar a las salas</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Salir</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>¿Ha olvidado su contraseña?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Resetear contraseña</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Por email</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Por inicio de sesión</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Su email</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Su inicio de sesión</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Enviar correo con enlace de restablecimiento</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>No se ha encontrado esa dirección de correo. Asegúrese de introducir la misma dirección que utilizó al crear la cuenta</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Escriba o su correo o su nombre de usuario</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>No hay ningún usuario con ese nombre</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Se le ha enviado un correo con un enlace especial. Si no aparece este correo revise la configuración de filtros de spam de su servidor y reenvée este correo nuevamente.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Error</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Mensaje</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>No se encontró al usuario (método de generación de claves incorrecto).</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Generar contraseña</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Inicio</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>cambiar contraseña</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>nueva contraseña</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>vuelva a escribir la contraseña</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Las contraseñas introducidas no son iguales.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Escriba 4 ó más caracteres. Distingue mayúsculas de minúsculas</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>La contraseña ha sido cambiada, ahora puede iniciar sesión.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>Aceptar</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Error desconocido. Envíe esta información al administrador del sistema.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>No se encontró al usuario</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Contraseña incorrecta</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Ha salido del sistema</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registro desactivado.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Correo incorrecto</value>
+  </string>
+  <string id="340" name="registration">
+    <value>nombre de archivo duplicado, por favor seleccione otro</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>el nombre del archivo es demasiado corto</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>No se pudo guardar la dirección</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>El usuario fue añadido, sin embargo deberá estar al menos en una organización para poder iniciar la sesión.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nueva grabación</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>No se encontró un campo en este FieldId.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>No se encontró una etiqueta para este campo.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Se necesita autorización del administrador</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Editor de idioma</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Idioma</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID de la etiqueta</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Nombre de la etiqueta</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Valor</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Valor de los campos</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Nombre</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Valor de la etiqueta</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID de la etiqueta</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Ha eliminado la etiqueta pero no el campo. No se puede eliminar un campo ya que puede tener etiquetas en otros idiomas.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>ID de la etiqueta incorrecto. Su FieldLanguagesvalues_Id no se encontró en la base de datos.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Usted no puede eliminar este campo, sólo las etiquetas. No hay una etiqueta cargada por el momento o no se encuentra seleccionada ninguna (puede que no exista en el idioma seleccionado).</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>exportar</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Necesita cerrar la sesión para ver los cambios.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Añadir nuevo idioma</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>eliminar idioma</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Añadir nuevo idioma</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Nombre</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>añadir idioma</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Copia de seguridad</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ir al inicio</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>anterior</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>siguiente</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ir al final</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>usuario habla (Haciendo clic aquí usted podrá dar audio exclusivo o silenciar el micrófono de los demás)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>encender o apagar sonido</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistema</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Su configuración</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Saludos,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Editar perfil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nuevos mensajes:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Subir imagen</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Datos de usuario - Exportar</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Deben existir todas las organizaciones previamente</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Iniciar la exportación</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Por organización</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Iniciar la exportación</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Datos de usuario - Importar</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Seleccione archivo xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>importar</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportar a XML - Estos archivos pueden ser usados para: 
+		- Contribuir en el proyecto 
+		- Importarlos en otro sistema 
+		- Copia de Respaldo (Backup)
+		- Personalización 
+		- Colocarlo en el directorio de idiomas para la próxima instalación.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Seleccione un archivo de idioma que se importará. Configure correctamente el idioma en el menú desplegable (no importa el nombre que tenga el archivo ya que será importado de todos los modos).</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>importar - seleccionar archivo</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Guardar como...</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Nombre:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Comentario:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>guardar</value>
+  </string>
+  <string id="395" name="record">
+    <value>Grabaciones</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Visor de grabaciones</value>
+  </string>
+  <string id="397" name="record">
+    <value>Grabaciones de salas públicas y privadas</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Usuarios:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Unido:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value/>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Usuarios en la sala:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>actualizar</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>La sala esta llena. Por favor, inténtelo más tarde.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Pulse sobre una sala para ver los detalles</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Conversar con los usuarios de esta sala:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Sala:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Usuarios en esta sala:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>desde:</value>
+  </string>
+  <string id="409" name="record">
+    <value>reproducir grabación</value>
+  </string>
+  <string id="410" name="record">
+    <value>Duración:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Fecha:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Modo de grabación: no puede cambiar ningún valor ya que se trata de un archivo grabado.</value>
+  </string>
+  <string id="413" name="record">
+    <value>Reproducir esta grabación</value>
+  </string>
+  <string id="414" name="record">
+    <value>Reproducir / Pausa</value>
+  </string>
+  <string id="415" name="record">
+    <value>Iniciar grabación</value>
+  </string>
+  <string id="416" name="record">
+    <value>Detener grabación</value>
+  </string>
+  <string id="417" name="record">
+    <value>Grabación:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Actualmente alguien se encuentra grabando:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Grabando por el usuario:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>La grabación será cancelada y no se guardará.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>reanudar</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Cerrar ventana y reanudar grabación</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Cambiar el color de línea</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Seleccionar color</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Deshabilitar / Habilitar color de línea</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Cambiar color de relleno</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Deshabilitar / Habilitar color de relleno</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Cambiar grosor de línea</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Cerrar</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>cambiar tamaño de letra</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Eliminar grabación</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Invitado</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Por:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Nombre</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Sala</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Fecha</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>cancelar</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>iniciar</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Nombre</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Fecha</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Eliminar registro (log) de chat en el servidor</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>enviar mensaje</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emoticones</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Emoticones</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Seleccionar dispositivos</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Audio y vídeo</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Sólo audio</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Sólo vídeo</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Sin audio/vídeo (Imagen fija)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>No se transmitirá audio/vídeo desde su equipo. En su lugar se mostrará la imagen de su perfil. Seleccione esta configuración si tiene problemas con el ancho de banda de internet.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>LU</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>MA</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>MI</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>JU</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>VI</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>SÁ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>DO</value>
+  </string>
+  <string id="460" name="calendar_dayname_MondayLabel">
+    <value>Lunes</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Martes</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Miércoles</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Jueves</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Viernes</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Sábado</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Domingo</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>S#</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Número de semana de calendario</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Enero</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Febrero</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Marzo</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Abril</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mayo</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Junio</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Julio</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Agosto</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Septiembre</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Octubre</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Noviembre</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Diciembre</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Calendario</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Participantes</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mostrar la configuración</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Ancho | Alto</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Contenedor de vídeo</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Contenedor de moderación</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Contenedor de pizarra</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Activado</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Ancho | Alto</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Contenedor de archivos, chat, participantes</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Activado</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Ancho | Alto</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>El moderador se ha retirado por lo que nadie está realizando una presentación en estos momentos. Puede solicitar la moderación o esperar.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>No hay moderador en esta sala, pero sí participantes. Puede solicitar la moderación o esperar.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Comentario de $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Invitación</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Mensaje del usuario:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Mensaje:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Pulse en este enlace para poder participar en la conferencia:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Pulse aquí para entrar a la sala</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Si tiene problemas con el enlace, le sugerimos que copie y pegue el siguiente texto en su navegador:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>Registro $APP_NAME</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Sus datos de usuario:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Inicio:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Contraseña:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Correo:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME - Equipo</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME - Registro</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Resetear contraseña</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Pulse en el siguiente enlace para solicitar una nueva contraseña:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Pulse aquí para introducir una nueva contraseña</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Si tiene problemas con el enlace, le sugerimos que copie y pegue el siguiente texto en su navegador:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME - Nueva Contraseña</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Por favor, introduzca una fecha válida con el formato dd.mm.yyyy Ejemplo: 24.12.2008</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Por favor, introduzca una dirección de correo válida</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Por favor, introduzca un número decimal. Ejemplo: 1.00 (use punto y no la coma)</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Por favor, introduzca un número entero</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Por favor, introduzca un número de teléfono válido. Ejemplo: +593 947 225 200</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Por favor introduzca una hora válida en el formato hh:mm. Ejemplo: 12:23</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Contraseña protegida</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Contraseña</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Período de validez</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Sin límite</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Período</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Una vez</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Válido desde:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Válido hasta:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Invitación a $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>No existe una invitación disponible con este código.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Esta invitación ya fue usada y no puede volverse a utilizar.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>El código de invitación no es válido.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Contraseña:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Verificar contraseña</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Contraseña incorrecta</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Navegador</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Sincronizar audio/vídeo</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>El login es correcto, pero la sesión en la que intenta entrar no está activa o no fue guardada en el servidor. Tiene que iniciar una nueva sesión.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>El ID de la sesión no está iniciado o no tiene permisos de administración. La pasarela SOAP necesita un usuario con permisos de administración para añadir nuevos usuarios.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Esta sesión no tiene datos del usuario remoto conectado. Quizás no llamó a la pasarela SOAP antes de acceder a la aplicación o está utilizando un ID de sesión incorrecto</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>El grabador actualmente está en fase beta</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>eje-x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>eje-y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>a</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>anchura</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>altura</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Cambiar transparencia</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Abrir el navegador</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Cerrar el navegador</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Se ha perdido la conexión con el servidor. Necesita recargar la aplicación y/o comprobar su Red.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Puntero</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Sincronizando</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Sincronizando usuarios. Por favor, espere.</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Descargar como SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Descargar como PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Descargar como JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Descargar como PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Descargar como TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Recuerde:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Categoría:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetición:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>ninguno</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Localización:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Inicio</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Final</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Título:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comentario:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invitar a personas</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Diario</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Mensual</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Anual</value>
+  </string>
+  <string id="578" name="alert">
+    <value>La fecha final va después de la fecha de inicio</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Por favor, ponga un título</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Active esta opción si la escritura de su idioma va de derecha a izquierda</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Panel de control</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Ver eventos o encuentros grabados</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Videoconferencia - Reúnase con 4 ó más (hasta 16) usuarios&lt;br/&gt;todos tendrán acceso de audio y vídeo.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Auditorio - Reúnase con hasta 200 participantes&lt;br/&gt;sólo el moderador tendrá audio y/o vídeo</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Crear usuarios, salas, organizaciones&lt;br/&gt; + cambios en la configuración</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Usuarios en la sala</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Inicio</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Cargando documento. Aguarde hasta que todos los clientes estén sincronizados.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Subida completa. Convirtiendo documento...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Iniciar Subida</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Diálogo de subir e importar. Por favor, seleccione un archivo de su disco.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancelar</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Seleccionar archivo</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Conexiones</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Valor</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>ID de flujo</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Inicio</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Conectado desde</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Sala / Ámbito</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Expulsar al usuario</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Expulsar</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>¿Está seguro de querer expulsar a este cliente de la conexión?&lt;br/&gt; El cliente será expulsado de la sala, pero podrá volver a autenticarse de nuevo.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Su sesión ha sido cerrada por el administrador o el moderador.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Teléfono</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>El usuario es el moderador de esta sala</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>El usuario tiene permisos para dibujar en la pizarra</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Iniciar audio/vídeo o cambiar la configuración de dispositivos</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Permitir a este usuario dibujar en la pizarra</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Quitar permisos para dibujar en la pizarra</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Usuarios</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Archivos</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Pizarra</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Su cuenta está asignada a varias organizaciones. Seleccione aquella con la que quiera entrar en esta sesión.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Esta sala está completa. Inténtelo más tarde.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Tipo de sala</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Sala para citarse</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Hora del servidor</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Recordatorio</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Mensaje del usuario:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Mensaje:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Pulse en el enlace para participar en la (Vídeo)Conferencia:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Pulse aquí para entrar en la sala</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Si tiene problemas, copie y pegue este enlace en su navegador:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>búsqueda interna</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>Añadir externos</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>Nombre</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>Apellidos</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirmar la salida</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>¿Está seguro de que desea salir?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Acciones</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Sala de demostración</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Hora de la demostración</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Horario del encuentro</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Esta es una sala de demostración. Para desactivar este aviso, debería conseguir una sala privada para uso propio o bien configurar su propio Servidor. Será desconectado automáticamente en:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderado</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Por favor, espere hasta que el moderador entre en la sala. El moderador puede ser un profesor, el administrador o el creador de esta sala.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Aceptar</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Recibiendo el escritorio compartido</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Hay una nueva recepción de escritorio compartido del usuario:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Comenzar a compartir</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Añadir un nuevo encuentro</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Sala de encuentros</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Sala de eventos</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderación</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderar usuarios</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderar salas</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>¿Desea convertir a este usuario en moderador de esa organización?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Por favor, seleccione una organización antes de intentar incluir a un usuario en la misma.</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organización - Moderador</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>¿Realmente desea borrar a este usuario de la Organización?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Este usuario es moderador</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Este usuario no es moderador</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>¿Desea que este usuario deje de ser moderador de esta organización?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Añadir o borrar usuarios y/o salas en su organización</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>¿Realmente quiere borrar este registro?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>¿Realmente quiere borrar a este usuario de su organización? Sólo se borrará la conexión entre el usuario y su organización. En realidad, para borrar al usuario debe ingresar al Panel de administración.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>¡Vd no puede borrarse a sí mismo!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>¡Para usar este método necesita de una cuenta de administrador!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>No hay ninguna sesión asociada a este ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Esta es una cuenta de administrador o de moderador. Sólo puede editar esta cuenta utilizando el Panel de administración.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Para completar su registro, haga el favor de pulsar en el siguiente enlace. Otra opción es copiar la URL en la barra de su navegador.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Pulse para verificar su correo</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No se ha encontrado un usuario para ese algoritmo Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>¡Este usuario ya está activado!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>¡Ha activado su cuenta con éxito!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Ingrese ahora</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Su cuenta no está activada. Utilice en primer lugar el enlace que hay en correo recibido al finalizar el proceso de registro.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Se ha registrado con éxito. Le hemos enviado un correo con un código de verificación. Por favor, revise su cuenta de correo.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Quitar el rol de moderador a este usuario</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Dar permisos de moderación a este usuario</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Usuario</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Acceso a la pizarra</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderador</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderación: Por favor, seleccione cualquier usuario de la lista para darle acceso a la pizarra, moderación o vídeo.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Este usuario ya es moderador, así que automáticamente tiene permisos para dibujar.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>¡Este es Vd! No puede quitarse los permisos de moderación a sí mismo.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Permitir a este usuario publicar su audio/vídeo</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Borrar el audio/vídeo de este usuario</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Desearía ser moderador de esta sala</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Desearía utilizar la pizarra</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Desearía compartir mi audio/vídeo</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Usted es el moderador de esta sala</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Tiene permisos para dibujar en la pizarra</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Tiene permiso para compartir su audio/video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Mensaje al moderador</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>El Usuario</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>Desearía ser moderador. Use los iconos de estado próximos al usuario en la Lista de Usuarios para agregar o remover el permiso de moderación.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>desearía utilizar la pizarra. Utilice los iconos que hay junto al nombre del usuario (en la Lista de Usuarios) para agregar o quitar los permisos correspondientes.</value>
+  </string>
+  <string id="695" name="695">
+    <value>desearía compartir su audio/vídeo. Use los iconos que hay junto al nombre de usuario (en la Lista de Usuarios) para agregar o quitar los permisos para compartir audio/vídeo.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Debe esperar hasta que un moderador ingrese a la sala.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancelar</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Guardar</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Día</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Mes</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Año</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Subir archivo</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Añadir carpeta</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Actualizar</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Papelera</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>Mis archivos (Dispositivo personal)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Archivos de la sala (Dispositivo público)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Agregar archivo</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Agregar carpeta</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Borrar carpeta</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Editar nombre</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>Nueva carpeta</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>¿Está seguro de que quiere borrar este ítem?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Buscar</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Abrir documento</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Mostrar todos los archivos (Vista de árbol)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Cerrar documento</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Borrar archivo</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>No tiene permisos para escribir o dibujar en la pizarra. Debe ser moderador o, al menos, tener permisos de edición de la pizarra. Solicíteselo a un moderador.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Propiedades</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Iniciar Java</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Iniciar Flash</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>Un usuario desea compartir su escritorio. ¿Desea visualizarlo?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>Actualmente está compartiendo su escritorio. Para dejar de hacerlo, pulse en el botón Stop en el cliente utilizado.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Compartiendo sesión</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>¡Ya está compartiendo su escritorio!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Visor de escritorio</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Salir</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Compartiendo el escritorio</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Pulse Iniciar para publicar su escritorio</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Iniciar la compartición</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Pausar la compartición</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Seleccione el área de la pantalla:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Cambiar anchura</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>!Ha finalizado esta sesión!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Cambiar altura</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>Desplazamiento eje X</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Desplazamiento eje Y</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Anchura:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Altura:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>La conexión ha sido cerrada por el Servidor</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancelar</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Iniciar Java</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>Si cierra esta sesión completamente, no será posible reiniciar el visor durante esta sesión.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirmar el cierre de la sesión</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Compartir escritorio</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Grabar sesión</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-navegación</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Hum... Firefox en windows no muestra la co-navegación con claridad. Por favor, utilice otro navegador o cierre esta funcionalidad.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previo</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Siguiente</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Recargar</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Inicio</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Cargar</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Configurar en su perfil este sitio como predeterminado.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Probar configuración</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Compruebe la configuración de su micrófono y/o cámara antes de entrar en la sala. Para ello grabe durante algunos segundos y reprodúzcalo.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>No volver a mostrar este test</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancelar</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Iniciar</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>No volver a preguntar</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>Puede continuar sin hacer la comprobación si no desea publicar la imagen y/o el sonido. Los participantes sin audio o sin vídeo pueden en todo caso utilizar la pizarra, compartir su escritorio o enviar mensajes utilizando el chat.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Medidor de Nivel</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Presione Iniciar</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Iniciar Conferencia</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Iniciar Evento</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Ir a la sala</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Comprobar Config.</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Iniciar Confer.</value>
+  </string>
+  <string id="774" name="start view">
+    <value>Instrucciones Conferencia:</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Iniciar Grabación</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>No mostrar el test de grabación de audio /vídeo antes de entrar en una Conferencia</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Salas públicas</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Las salas públicas son accesibles a todos los usuarios.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Salas privadas</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Las salas privadas son accesibles sólo para los usuarios de la misma organización.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>Mis salas</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Las salas en esta sección son para uso personal. Se crean utilizando el calendario y tienen una fecha de inicio y de finalización. Sólo se muestran en esta sección durante el intervalo temporal de validez.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>Tiene que ser moderador para ejecutar esta acción.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Solicitar la moderación</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Solicitar acceso a la pizarra</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Solicitar acceso a la cámara/micrófono</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>La autenticación de esta sesión ya ha sido utilizada. No puede hacerse dos veces.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>INICIAR</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>SALIR</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>¿Desea realmente salir? Es conveniente que antes borre los documentos subidos, la pizarra o el historial del chat.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Salir de la conferencia</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Salas</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Seleccione una sala</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>Hay un evento sin guardar en el calendario. Por favor, guárdelo o bien bórrelo.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>¡Añada, al menos, a un participante!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>¿Realmente desea borrar este evento?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Aviso</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Añadir evento</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>día</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>semana</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>mes</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Descripción</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Asistentes</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, su Plataforma Web de Videoconferencia. Sólo siga las instrucciones, presione el botón para iniciar inmediatamente o vaya al Calendario para programar un Encuentro más adelante.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Progr. Encuentro</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>Para planificar una conferencia, añada un nuevo Evento en el Calendario. Para cada Evento se creará automáticamente una sala de (vídeo)conferencia. Usted y el resto de asistentes recibirán un correo con un enlace de la sala.&lt;br/&gt;&lt;br/&gt;Puede escoger entre diferentes tipos de salas con diferentes diseños y sistemas de moderación. También puede escoger entre diferentes tipos de notificación de correo que se envían en cada evento del calendario.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>¿Necesita ayuda?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restringido</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Buscar</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Añadir</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>No hay ningún usuario seleccionado. Seleccione primero un ítem de la lista y pulse en Añadir.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Añadir asistente</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Guardar</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Borrar</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Detalles del Evento</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Moderadores por defecto</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Nombre</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>Email</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Añadir nuevo moderador por defecto</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>¿Es supermoderador</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>Si la sala está moderada, quien sea ya moderador seguirá siéndolo. Si no desea que sea así, y sólo quiere que determinado usuario sea el moderador, utilice la opción de moderador por defecto.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>Un supermoderador es siempre el moderador de una sala cuando entra en ella. Además, nadie puede quitarle la marca de moderación</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Aplicar supermoderación al usuario</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Quitar supermoderación al usuario</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>Si añade una organización a la sala, sólo los usuarios de dicha organización tendrán acceso a la misma (esto sólo es válido si la marca de Pública está configurada como falsa)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderación</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitaciones</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organización</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>¿Está usted seguro?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>¿Realmente desea borrar este ítem? ¡Tiene que pulsar en el botón de guardar para almacenar los cambios!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>No hay ningún usuario seleccionado. Por favor, selecciónelo primero.</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Añadir un nuevo moderador por defecto</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>¿Desea añadir una marca de supermoderador a este usuario? Recuerde que un supermoderador no sólo es el moderador de una sala, sino que además ningún otro moderador podrá borrar la marca de moderación. Necesita guardar el objeto sala para almacenar estas configuraciones.</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>¿Desea eliminar la marca de supermoderador a este usuario? Necesita guardar el objeto sala para almacenar estas configuraciones.</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>Este usuario tiene el rol de supermoderador. No puede quitarle la marca de moderación a un supermoderador.</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>¿Realmente desea borrar este Archivo/Directorio?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>¿Borrar archivo/directorio?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Dña.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>D.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Propiedades</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Mostrar la posición del ratón a los participantes</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Compartir audio con el applet SIP</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Compartir audio con SIP y vídeo con Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Pantalla completa</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>Ver escritorio</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>El usuario</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>desea compartir su escritorio. ¿Desea visualizarlo?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Cerrar</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>La sesión ha sido cerrada por quien compartía escritorio</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pausa</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>Nueva compartición de escritorio</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimizar</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximizar</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Vídeo</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Línea temporal de grabación</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>Mis grabaciones</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Grabaciones públicas</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Nombre</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Longitud</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Fecha</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>Por</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>Descarga</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Principal - Vídeo</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Grabación</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>Puede grabar y compartir su escritorio a la vez. Para permitir que otros vean su escritorio, pulse en el botón -iniciar- de la parte superior. Para grabar la sesión, es suficiente con pulsar en iniciar grabación.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Iniciar grabación</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Parar grabación</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Descargar el archivo FLV</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Sala</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>El usuario tiene el micrófono activado</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Detener la compartición</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Permitir preguntas del usuario</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Desactive esta opción para impedir que ningún usuario le moleste en esta sala. Al hacerlo, el botón para solicitar la moderación no será visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Permisos</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Descargar como AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Sólo audio</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>Ha habido errores mientras se procesaba la grabación.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>La grabación aún no esta lista. Inténtelo de nuevo en un par de minutos.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Mensaje del grabador:</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>El applet SIP no está listo</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>Configuración de la cuenta SIP</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>Configuración SIP para cada usuario. Puede activar o desactivar SIP desde Administración &gt; Configuración (Key: enable_sip). Los datos SIP de cada usuario deberían crearse automáticamente.</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>Usuario SIP</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Contraseña SIP</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>ID Aut-SIP</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>La autenticación SIP ha fallado. Debería comprobar los datos de autenticación de su proveedor SIP y de la cuenta SIP de cada usuario. Como administrador, podrá autenticarse y comprobar la configuración. Si entra como usuario o como moderador, cualquier intento de interacción será bloqueado.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>La autenticación SIP ha fallado. Contacte con el servicio técnico.</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Autenticando en la puerta de enlace SIP...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Autenticando en la puerta de enlace SIP...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Mostrar Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Mensajes Log del proceso de postgrabación</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>Mensaje del applet SIP</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>El applet SIP no está listo. Por favor, acepte el applet y pulse OK.</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Solicitar la moderación</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Guardar cambios de la cita</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>La cita ha sido cambiada. ¿Desea guardar dichos cambios? <br/><br/>Todos los participantes implicados recibirán un correo con la fecha y hora actualizadas (dependiendo del tipo de notificación de esta cita).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>Para acceder a otras grabaciones, tiene que autenticarse en la aplicación $APP_NAME.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Seleccione el usuario para este vídeo</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Usuarios disponsibles para esta transmisión Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>Usted es moderador en esta entrevista. Puede decidir quién habla así como iniciar / parar la grabación de la sesión.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Iniciar Grabación</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Parar Grabación</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>La grabación de la entrevista está ya iniciada.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>La grabación está ya parada o bien no ha sido iniciada aún.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>¡Ya se ha iniciado la grabación de esta entrevista!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancelar</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>El post-proceso de una entrevista lleva cinco veces más tiempo que el de la propia entrevista. El progreso actual de este proceso es el siguiente:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>Tiene que introducir de nuevo su contraseña para autocrear los datos SIP</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Regenerar datos SIP</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>¡No puede mover este archivo o carpeta dentro de su propio subdirectorio!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Tamaño del dispositivo personal</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Tamaño del dispositivo público</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>Ajustes de licencia</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>Al habilitar la licencia puede obligar a los usuarios bien con una fecha de caducidad bien con un número máximo de minutos.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Comprobar licencia</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Tarifa plana</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Fecha de caducidad</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Segundos restantes</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Tiempo total</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Su licencia ha expirado. Necesita comprar más tiempo (pago por minuto) o bien pasarse a una tarifa plana.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Pulsar y comprar</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Tiempo restante de su cuenta:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>Información de la licencia del usuario</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Cerrar</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Su licencia ha expirado. Necesita comprar o un paquete de tiempo (pago-por-minutos) o una tarifa plana.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>Configuración de la licencia</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>Puede o bien comprar minutos de uso de la videoconferencia.&lt;br/&gt;&lt;br/&gt; O puede comprar una tarifa plana de 3 a 12 meses.&lt;br/&gt;&lt;br/&gt;Sólo se permite el envío de invitaciones (enlaces directos para entrar en las salas) o la creación de salas de conferencia a través del calendario a usuarios con tarifa plana.</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Comprar 60 minutos 9,99 € (16 céntimos por minuto)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Comprar 5 horas 19,99 € (6 céntimos por minuto)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Comprar 3 meses por 29,99 € (9,99 € por mes)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Comporar 6 meses por 39,99 € (6,66 € por mes)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pago-por-minuto</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Tarifa plana</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>Tiene una licencia ilimitada</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Su licencia expirará a las:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>Ha comprado Pago-por-minuto. Todavía tiene:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>¡Ampliar el crédito!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>¿Desea tener su propio servidor?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>Puede que desee tener $APP_NAME instalado en su servidor o integrado con Moodle, SugarCRM, la página web o la intranet. El precio mínimo es de 500 € por la instalación.</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>O envíenos un mensaje</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Responder a:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Mensaje:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Enviar</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Pulse aquí para conseguir información de contacto y precios</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Detalles de la tarjeta de crédito</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Nombre</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Apellidos</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Tipo de tarjeta de crédito</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>Tarjeta VISA</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Número de la tarjeta de crédito</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Fecha de caducidad</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Número de verificación de la tarjeta</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Dirección de facturación</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Dirección</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>Ciudad</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>País</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>Estado (Sólo US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>Código Postal</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Cantidad</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Enviar</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Paso 1: $APP_NAME - Forma de pago</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>Correo</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Pulse "Verificar con Paypal" para pagar.&lt;br/&gt; Paypal acepta VISA, MasterCard, Discover o American Express. &lt;br/&gt;No es obligatorio registrarse con Paypal. &lt;br/&gt;Los ciudadanos de Alemana pueden pagar también utilizando domiciliación bancaria.</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Gracias por comprar $APP_NAME. &lt;br/&gt; &lt;br/&gt; Tan pronto como tengamos confirmación del pago, su cuenta será actualizada.&lt;br/&gt; Recibirá un correo con su factura en pdf.&lt;br/&gt;Puede también comprobar los movimientos pasados y actuales en su perfil.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Si lo desea, pueda ya cerrar esta ventana en el navegador y volver a $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Enviar y Comprar</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Pulsar y Comprar</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Paso 3: Pago por $APP_NAME - Verifique la orden y pague</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Nombre</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>¡Pago recibido!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Saludos,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>Hemos recibido su pago. Su perfil de usuario se ha actualizado convenientemente. Vea adjuntada su factura. Esta (así como todas las anteriores) podrá ser descargada desde su perfil.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Gracias por utilizar $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Pago recibido de $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Estado de pagos y transferencias</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutos</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Meses</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Estado</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Factura</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>Necesita comprar una tarifa plana para poder enviar invitaciones o crear encuentros utilizando el calendario. Con el sistema pago por minutos sólo es posible acceder a $APP_NAME.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>Esta dirección de correo está siendo utilizada por otro usuario.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>Ajustes SIP</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>El número de la videoconferencia y el PIN son creados automáticamente utilizando la pasarela OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>Número SIP</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>¡Limpiar sólo los objetos de la presentación actual!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Sólo se enviará a los participantes la URL introducida en la barra de estado</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Hacer salas de equipos</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Seleccione usuarios para una nueva sala de equipo</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>Puede seleccionar usuarios aquí y crear una nueva sala de (vídeo)conferencia ("sala de equipo") para los mismos. Los usuarios seleccionados automáticamente podrán conectarse a la nueva sala o bien recibir una notificación. Los moderadores conseguirán adicionalmente una lista de las salas actuales de tal modo que puedan conectarse a cada sala si fuera necesario moderarlas.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Usuario</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Usuarios para la nueva sala de equipo:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Crear sala de equipo</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancelar</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Seleccione al menos un usuario para la sala de equipo</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Añadir un usuario al equipo</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Quitar usuarios de la sala de equipo</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>El usuario es moderador de la sala de equipo (puede gestionar salas, y los usuarios del equipo pueden soliciarte entrar)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Tipo de sala</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>Si activa "Forzar a los usuarios a conectarse a la nueva sala de equipo" todos los usuarios seleccionados serán conectados automáticamente a la última sala creada. Por otro lado, reciben una notificación con un botón que ellos cambiar a la nueva sala. Los moderadores de equipo siempre tienen libertad de elección para gestionar las salas y conectarse a la que deseen.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Gestionar Salas de Equipos</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>Puede conectarse aquí a la sala que desee de las que es moderador. Los usuarios del equipo pueden enviarle un mensaje, por ejemplo para pedirle que entre en su sala y les ayude. También puede finalizar la sala de equipo con lo que todos los usuarios serán desconectados.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Forzar al usuario a conectarse a la nueva sala de equipo</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Nombre</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Creado</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Usuarios disponibles</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Añada un usuario con el + en la izquierda o bórrelo con la x de la derecha</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Configuración de la sala</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Añadir usuarios a la sala de equipo</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Nombre de la sala de equipo</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Sala de equipo</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Cambiar a la sala</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Conectar a esta sala de equipo</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Finalizar sala y desconectar a todos los usuarios</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>Nueva sala de equipo</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>Hay una nueva sala de equipo disponible para usted.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Cambiar a la sala de equipo</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Acciones de la sala de equipo</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>Puede reabrir esta ventana a través del menú principal en la sección "Acciones"</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Enviar mensaje al moderador de la sala de equipo</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>Nueva sala de equipo</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>Hay una nueva sala de equipo disponible. Puede cambiarse a esa sala. Las salas de equipo son como "grupos de trabajo" con posibilidades adicionales para solicitar ayuda al moderador. Sus salas de equipo son también accesibles desde la sección "Mis Reuniones".</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Cambiar a la sala de equipo</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Creada por:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Nombre de la sala de equipo:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>Esta ventana permanecerá abierta aunque salga de la sala.</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Usuarios de esta sala de equipo</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Otras salas de equipo a las que podría conectarse</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Enviar un mensaje a los moderadores de esta sala. Por ejemplo, si necesita ayuda en la moderación de la sala o si tiene alguna pregunta sobre el tema.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Enviar</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Usuarios que están invitados a esta sala de equipo</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Es moderador de la sala de equipo</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>Estos son todos los usuarios a los que el moderador ha invitado a entrar a esta sala de equipo.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>No hay un moderador conectado en este momento</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Por favor, introduzca un mensaje</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Por favor, ayúdenos. Tenemos un problema en nuestra sala de equipo</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>Un usuario de una sala de equipo solicita su ayuda.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>El Equipo pide ayuda</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Mensaje:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>De:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>Actualmente no está en ninguna sala de equipo. Puede entrar aquí a todas las Salas a las que tiene acceso.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Resguarde el sistma. El backup incluye los datos generados por todos los usuarios. La configuración no se incluye, al igual que las etiquetas de idiomas, ya que esos valores se importan con el instalador de sistema. Para actualizar su sistema, exporte los valores antiguos (1), reinstale en una nueva base de datos el nuevo paquete (2) e importe la archivo de backup de nuevo (3). El Backup debiera ser importado antes de generar los datos en el nuevo sistema.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>Sistema de Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Permitir al usuario compartir Pantalla/Grabación</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Denegar al usuario compartir Pantalla/Grabación</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>El usuario es moderador, tiene todos los permisos.</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>le gustaría compartir/grabar pantalla.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>Puede compartir/grabar pantalla</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Aplicar para permitir compartir/grabar pantalla.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Permitir/Denegar permisos para compartir/grabar pantalla.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Apagar sonido</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Activar sonido</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Sala de sólo audio</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Active esta bandera y los usuarios tendrán sólo la opción de Audio (sin vídeo) en la sala. Es indicado para ahorrar ancho de banda.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Permitir control remoto (durante la compartición de pantalla)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Denegar control remoto (durante la compartición de pantalla)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Aplicar para permitir el control remoto de la pantalla</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>Tiene permisos para el control remoto de la pantalla (durante la compartición de pantalla)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>le gustaría tener control remoto de la pantalla.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>El usuario es moderador, así que tiene todos los permisos.</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Permitir/Denegar permisos en la Pantalla de Control Remoto (durante la compartición de pantalla)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) De su PC a un PC remoto: para copiar y pegar texto de su portapapeles a una pantalla remota, pulse sobre la pantalla, luego pulse el botón derecho del ratón y, en el campo de texto, seleccione "Insertar" del menú.&lt;br/&gt;&lt;br/&gt;2) Del PC remoto a su PC: para copiar texto de un PC remoto al portapapeles de su PC, seleccione el texto con el ratón en la pantalla remota, luego pulse el botón derecho del ratón sobre la pantalla remota y seleccione &lt;i&gt;Copiar texto destacado&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copie y pegue texto de su PC al PC remoto y viceversa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copie el texto destacado</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>Cómo copiar y pegar</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Calidad para compartir pantalla:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Calidad muy Alta</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>Calidad Alta</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Calidad Media</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Calidad baja</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Teclado:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>¡Cerrar conferencia!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>La conferencia ya está cerrada, será redirigido a otras ofertas interesantes</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Cerra sala</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>URL de Salida</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Configuración de finalización de sala</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>Si la sala está cerrada los usuarios serán redirigidos a la URL de salida.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Nombre</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Archivo de Configuración</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Configuración Ldap</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Nombre</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Activado</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Insertado</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Insertado por</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Actualizado</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Actualizado por</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>Los archivos de configuración están en la carpeta webapps/openmeetings/conf. Necesita subir manualmente los archivos a esta carpeta. Los cambios realizados en el archivo estarán online inmediatamente.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Nombre del archivo de configuración</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>Si activa "Añadir Dominio al nombre de usuario" el valor del campo "dominio" se añade a cada registro que el usuario introduce en la casilla de login. Esto es útil si el Login en el Ldap se almacena incluyendo el nombre de dominio. Ejemplo: supongamos que el usuario introduce "hans" y el dominio está especificado como "localhost.com". El login que se verificará contra el Ldap será: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Añadir Dominio al nombre de usuario</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Dominio</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insertar</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copiar el texto remarcado</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Texto remoto en Portapapeles</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Mostrar Portapapeles remoto</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>No mostrar nuevamente</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copie el texto aquí ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>Necesita derechos de control remoto (o moderación) para copiar y pegar texto desde o a la pantalla remota.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Editar configuración original ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>No mostrar la caja de información en el Control Remoto acerca de Copiar y Pegar</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Guardar</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Suprimir</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancelar</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invitar usuario a sala de conferencias</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Escoja sala de conferencias. El usuario invitado verá un mensaje con tu nombre y un link a la sala.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Conectado desde:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Entrar a sala tras enviar invitación</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invitar</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Mensaje</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>Me gustaría invitarle a sala de conferencia:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Mensaje de invitación</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Enviar invitación</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;no&lt;/b&gt; acepta su invitación</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Aceptar</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Denegar</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Zona Horaria</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Detalles del Evento</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Nombre</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Descripción</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Hecho por</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>Mensaje de Zona Horaria</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Chequear "Mensaje de Zona Horaria" para dar mensaje a los usuarios la próxima vez que accedan para que actualicen sus perfiles.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Por favor, chequee la zona horaria en su perfil.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>Nueva $APP_NAME conferencia:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Detalles:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Comenzar:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>Finalizar:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Conferencia $APP_NAME cambiada:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizar:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Conferencia $APP_NAME cancelada:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME Recordar conferencia:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Datos para la Comunidad</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Mostrar datos de contacto a todos</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Agregar campos de interés que usted ofrece o que está buscando para encontrar socios interesantes para una conferencia. Las comas separan los términos (por ejemplo: Servicio médico, Aseguradoras de la Salud, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>Mis ofertas</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>Mis intereses</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Nombre</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Zona Horaria</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Campos de interés</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Información de contacto</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Mostrar información de contacto solo a contactados.</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>No mostrar datos de contacto a nadie</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>Mi Perfil</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Editar configuraciones</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Buscar usuarios</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Ver tu perfil como los demás lo ven</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Editar tu configuraciones, añadir tus intereses para ser encontradas</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Buscar otros usuarios y ampliar tu red</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Buscar</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>Ofertas del usuario</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>Busca usuario</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Texto libre</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Nombre</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Zona Horaria</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Ofertas</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Búsquedas</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Resultado de búsqueda</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Acciones</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Añadir a Contactos</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Enviar mensaje</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contactos y Mensajes</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Contactos pendientes</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Aceptar</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Denegar</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hola,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>me gustaría añadirle como contacto.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Chequear sus peticiones de contacto $APP_NAME o hacer clic en los links para aceptar o denegar la petición</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>Este usuario ya se encuentra en su lista de contactos o ha recibido una invitación a su lista de contactos que aún no ha contestado.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Su lista de contactos</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Editar sus Contactos y Mensajes,&lt;br/&gt; administrar sus contactos pendientes!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>está usted confirmado como contacto!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value/>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Mostrar / Copiar log del chat</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Log del chat</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>De:</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Asunto</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Enviar</value>
+  </string>
+  <string id="1205" name="private message">
+    <value/>
+  </string>
+  <string id="1206" name="private message">
+    <value>Mensajes</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>Nuevo correo</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click para escribir nuevo mensaje a cualquiera de sus contactos</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Escribir nuevo mensaje</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>A:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Asunto:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Activar ajuste completo y la pizarra hará zoom para que todos&lt;br/&gt;documentos sean visibles en función de la resolución de los monitores de cada  participante.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Expulsar usuario</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>No puede expulsarse a sí mismo de la sala de conferencia! Si quiere salir cierre el navegador o emplee el botón Salir!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Realmente quiere desconectar este usuario de la sala de conferencia?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirme la acción ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>No puede expulsar de la sala a un Super-Moderador!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Libro sala de conferencias</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Comenzar</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>Finalizar</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Agregar una solicitud opcional para reunirse al mensaje y hacer una sala de conferencias. El evento es entonces copiado en el calendario de cada participante.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Carpeta de entrada</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Enviados</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Papelera</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>Este es usted! No puede añadirse a sí mismo como contacto.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>El usuario ya estaba denegado!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>El usuario ya estaba aprobado!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>El hash de este usuario-contacto es inválido!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>Usuario añadido a lista de contactos!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>Usuario denegado como contacto y eliminado de la lista de contactos pendiente!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>No está ese contacto!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Realmente quiere eliminar ese contacto?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirmar eliminación del contacto</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Eliminar contacto de la lista</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>Perfil de Usuario</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Mostrar perfil del usuario</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Mensajes</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Buscar</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Seleccionar todos</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>No seleccionar ninguno</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Seleccionar no leidos</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Seleccionar leidos</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Mover a carpeta ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Añadir nueva carpeta ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Borrar</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Correos borrados aún permanecen en su papelera!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Marcar no leidos</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Marcar leidos</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Responder</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Responder a todos</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Adelante</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Acciones ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Enviar mensaje privado</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nada seleccionado!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Mover a carpeta de entrada</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Borrar (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>Esta acción no puede ser deshecha!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Añadir carpeta</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Añadir carpetas y organizar sus mensajes!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Añadir carpeta</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Añadir</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Borrar carpeta</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>No puede borrar esta carpeta, aún contiene mensajes! Borre antes los mensajes o muévalos a otra carpeta.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Editar nombre</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Realmente quiere borrar esta carpeta? No se podrá recuperar.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Su petición fue enviada al usuario. El usuario recibirá una notificación para aceptar o denegar la petición. Solamente las peticiones aceptadas estarán en su lista de contactos...naturalmente!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Mensaje</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>El usuario no comparte sus datos personales de contacto.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>El usuario comparte sus datos personales solamente con sus contactos.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Dirección &amp; Teléfono</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>Su código de invitación no es válido. El código solamente es válido durante la fecha y hora especificados:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>Este evento está conectado a los calendarios de otros usuarios. Los cambios que efectúe afectarán tambien a sus calendarios. Realmente quiere cambiar el evento?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirmar cambios</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Permitir a los contactos ver mi calendario (ver solamente)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>No compartir calendario</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendario de contactos</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Sus contactos necesitan aprovarle primero para poder ver sus calendarios.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>Usted no puede almacenar o borrar eventos de otros calendarios que no sean el suyo!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Mostrar mi calendario nuevamente!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>Este evento está conectado a los calendarios de otros usuarios. Su acción borrará tambien el evento de sus calendarios. Realmente quiere borrar el evento?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirmar acción</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Entrar a sala</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Acceso a la sala de conferencias</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>Hay una sala de conferencias y evento reservado con este mensaje privado.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>Primero es necesario almacenar el evento!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>Esa sala no es accesible. El evento en el Calendario y sala relacionada, ya ha sido eliminada!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Elija su nick-nombre</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Nombre</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Apellidos</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Dirección mail</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Mínimo 4 caracteres! para ambos: Nombre y Apellidos.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Por favor, introduzca un mail válido!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login con su cuenta de Facebook</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Miembro desde</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>Ha hecho login con su cuenta de Facebook. Actualice su perfil con la cuenta de mail correcta; de otro modo no podrá recibir invitaciones ni mensajes privados de otros usuarios.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Mensaje</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>No mostrar nuevamente mensaje actualización del perfil</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>más opciones ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>Nuevo mensaje privado:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Haga click aquí para visitar su perfil y ver el mensaje completo ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Replicar</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Salas y Chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>Mis salas</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>Mi sala de conferencias (para 1-16 usuarios)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>Mi sala webinar (para 1-120 usuarios)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Propietario Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Por favor introduzca una contraseña</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>Necesita una cuenta con el Nivel de Usuario, Moderador o Admin.</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (acceso solamente via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Cargar directamente a la pizarra</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Realmente quiere suprimir esta pizarra? Esta acción no puede ser deshecha!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Cargar a la pizarra</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>No olvide comenzar la grabación! Un usuario por sala necesita comenzarla para tener después el control de la misma.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Comenzar grabación</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Flecha</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circulo</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Linea</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Cuadrado</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangulo</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Texto/Nota</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Dibujo Libre</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Seleccionar/Mover</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Dibujar Formas</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cortar/Mover</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Imprimir</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Deshacer</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Papelera</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Añadir Rejilla</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Compartir Archivo</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Seleccionar Formas</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Seleccionar Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copiar</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cortar</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Pegar</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Borrar</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Realmente quiere borrar todo el contenido de la pizarra?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Cargar directamente a la pizarra</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Asistentes</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Administrador de asistentes</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Presente</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Control Remoto</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Expulsar</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invitar Asistentes</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>Por Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>Usuario es moderador</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>Usuario ha conectado su webcam</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Desactivar llenar con formas</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activar llenar con formas</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Click a Rejilla</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Permitir grabación</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Esperando a grabación</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Ocultar la barra superior</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Reproducir video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Realmente quiere borrar el contenido de la presente exposición?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Aceptar y otorgar derechos al usuario</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Denegar</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Actividades y acciones</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Suprimir pizarra</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>Necesita la moderación o el derecho a dibujar en la pizarra para suprimir esta!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>No permitido</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>ha salido de la sala.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Iconos de Matematicas</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>Sin categoría</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Estilo</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Calidad</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Dominio</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visite</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>rojo-naranja</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>verde-mar</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>azul-industrial</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>azul-brillante</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>rojo-oro</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>gris-plata</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>usuario-definido</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>mejor</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>subir</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medio</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Silenciar micrófonos globalmente</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Volver a activar micrófonos globalmente</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Silenciar los micrófonos de los demás</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>Usted ha sido desactivado globalmente por el moderador. Usted no puede volver a activarse a sí mismo!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Silenciar micrófonos globalmente?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Realmente quiere silenciarse globalmente a sí mismo? Nadie podrá oirle!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Silenciar micrófono localmente?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Realmente quiere silenciar este micrófono? Puede silenciarlo solo en su pantalla localmente. Esto no tendrá efecto en cómo otros usuarios oyen a este usuario. Solo los moderadores pueden silenciarlo globalmente!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Silenciar micrófono globalmente?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Realmente quiere silenciar a este usuario globalmente? Ningún otro usuario podrá oirle!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Su sonido está activado. Haga click aquí y enviará un mensaje al moderador para silenciar globalmente tu micrófono (en toda la sala de conferencias)!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Su sonido está desactivado. Haga click aquí y enviará un mensaje al moderador para reactivar tu micrófono globalmente (en toda la sala de conferencias)!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>desearía que el moderador silencie mi micrófono globalmente.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>desearía que el moderador reactive mi micrófono globalmente.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>quiero que el moderador reactive su micrófono.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>quiero que el moderador silencie su micrófono.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Reactivar micrófono. Haga click aquí para silenciar su micrófono globalmente!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Silenciar micrófono. Haga click aquí para reactivar su micrófono globalmente!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>Este usuario ha sido desactivado globalmente por el moderador. Usted no puede reactivarle!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Silenciar tu micrófono globalmente</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Reactivar tu micrófono globalmente</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Silenciar micrófono</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Reactivar micrófono</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Silenciar micrófono globalmente</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Reactivar micrófono globalmente</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Solo los moderadores pueden pueden desactivar o reactivar globalmente a un usuario! Para silenciar su propio micrófono: Por favor, emplee el icono en tu ventana de video!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Nombre Encuesta</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>Usted</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Encuestas archivadas</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>activa</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Cuadro Simple</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Cuadro Gráfico</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Por favor, introduzca su dirección de correo</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>Nuevo mensaje(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Encuesta cerrada</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Realmente quiere cerrar esta encuesta? Nadie más podrá votar.</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Eliminar encuesta</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Realmente quiere eliminar esta encuesta? Los resultados tambien se eliminarán.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Lenguaje ISO Código</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Permitir/Denegar derecho para dar audio exclusivo.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Permitir a usuario dar audio exclusivo</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Denegar a usuario dar audio exclusivo</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>Quisiera obtener permiso para tener audio exclusivo.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>Quisiera que el moderador me concediera permiso para tener audio exclusivo.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Dar permiso para audio exclusivo.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Resolución de cámara</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Cambiando la resolución a efecto de ancho de banda, fotos grandes necesitan más ancho de banda!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>Usted no tiene los derechos para darse a sí mismo o a los demás audio exclusivo. Necesita solicitar los derechos al moderador o que éste le de audio exclusivo.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>Quisiera obtener los derechos para audio exclusivo</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Darme audio exclusivo a mí mismo (alternativamente hacer click en la ventana de video o pulsar F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>El micrófono está abierto!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>El micrófono esta silenciado</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Ocultar chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Ocultar actividades</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Ocultar explorador de archivos</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Ocultar menú de acciones</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Ocultar compartir pantalla</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Ocultar pizarra</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Mostrar estatus del micrófono en video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Opciones de capa</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>Nuevo Evento</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Los enlaces a la conferencia que son enviados a los participantes cuando usted guarda el evento en el calendario, están protegidos por contraseña, no la sala! Ello quiere decir que si guarda el evento múltiples veces pero con diferentes contraseñas, cada participante recibirá un nuevo enlace con una contraseña diferente. Aunque los enlaces primeros seguirán estando activos una vez se hayan enviado!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Editar detalles</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Mostrar sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Llamar</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Mostrar los eventos de contacto en el calendario</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Su inicio!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Planear sus reuniones</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Ver grabaciones y entrevistas</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Escoger y comenzar una web-conferencia</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Administrar usuarios y derechos</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Administrar conexiones y usuarios expulsados</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Administrar grupos de usuarios</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Administrar salas de conferencia</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Administrar configuraciones del sistema</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Administrar etiquetas y formularios</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Administrar configuraciones de LDAP y ADS</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Exportar/Importar Backups del Sistema</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>Usted necesita la moderación o el derecho para dibujar en la pizarra, subir, añadir, suprimir o cargar archivos y carpetas.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Editar texto</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publicar</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Comenzar Publicación</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Finalizar Publicación</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publicar App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publicar Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reducir la anchura de la Compartición de Escritorio antes de intentar moverlo a la izquierda</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reducir la altura de la Compartición de Escritorio antes de intentar moverlo abajo</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reducir la x de la Compartición de Escritorio antes de intentar hacerla más ancho</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reducir la y de la Compartición de Escritorio antes de intentar hacerla más alta</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Completar estas configuraciones stream con los datos de tu pantalla a proveedores de terceras partes como justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Por favor lance Compartición de Escritorio para que pueda ser publicada</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Es requerido permiso del Moderador para comenzar la grabaciónModerator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>Usted no tiene permiso para conceder audio exclusivo a cualquier participante. Necesita tener el papel de moderador o el derecho de audio exclusivo para hacer exclusivo y activo a algun micrófono.</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Subir nuevo archivo al explorador de archivos</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Abrir nuevo diálogo de configuraciones compartidas</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>Un moderador debe aprobarlo</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Decir al moderador que quieres compartir tu webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Reunir feedback al crear una encuesta</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Resultados de las encuestas pasadas y actual como gráfico</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote si hay una encuesta para esta sala de conferencias</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Editar configuraciones de cam y micro</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirmar y dejar la sala</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Llamada a gente externa via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Enviar un correo con un link directo a esta sala</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Cambiar sus configuraciones de la pizarra</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Máximo peso de subida</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Pedir al moderador compartir tu pizarra</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Comenzar Chat Privado</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>Todo</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>No puede comenzar un chat privado con usted mismo.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>Usted ya comenzó un chat privado con este participante.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Realmente quiere eliminar este chat privado?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servidores</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servidores participantes en grupo</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Nombre del Servidor</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Dirección del Servidor</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Detalles del Servidor</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Enviar SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publicando. Usuario:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>Para guardar hora y tráfico de internet puede emplear la linea de comandos como administrador para hacer backup/restaurar/actualizar: &lt;ol&gt; &lt;li&gt;ir al directorio de instalación en OM (por ejemplo /opt/red5)&lt;/li&gt; &lt;li&gt;detenga OM (por ejemplo ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file  ~/today_om_backup.zip (hacer backup del actual OM)&lt;/li&gt; &lt;li&gt;descargar archivo con el nuevo OM&lt;/li&gt; &lt;li&gt; (mover versión de trabajo de OM solo en el caso :))&lt;/li&gt; &lt;li&gt;extraer el OM descargado a /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' en el caso de que esté usted empleando una base de datos DB distinta a la original )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Salas comunes a todos los usuarios</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Salas comunes al grupo de usuarios actual</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Salas del usuario actual</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Crear/Modificar sala especial de cita</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>Puede insertar múltiples direcciones en el formato: nombre1 apellidos1 &lt;correo1&gt;,"nombre2 apellidos2" &lt;correo2&gt;,'nombre3 apellidos3' &lt;correo3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Ajustar volumen de flujo</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Ajustar volumen del micrófono</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Es un chat moderado</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Permitir mensajes</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Panel de chat abierto por defecto</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Panel de archivos abierto por defecto</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Último ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Cada esclavo envió un ping al master cada 3 segundos (configurable). El último ping del esclavo debe ser inferior a 1 minuto así el master emplea al esclavo. Every slave sends a ping to the master every 3 seconds (configurable).</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>Puerto HTTP</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>Usuario (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Contraseña</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Ruta Webapp</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocolo</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping funcionando</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Activo</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generar URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Testeando la Red</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto-seleccionar ventana de video en interview</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Subrayar</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Estilo de fuente</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Permitir estilos de fuentes</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Color de fuente</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Mostrar estadísticas de sesión</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Detalles de la sesión</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>Importar sistema</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Incluir archivos subidos y grabaciones en el backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Permitir transporte SIP en la sala</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Realmente quiere proveer a este usuario de audio exclusivo?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Por favor, especifique su Zona Horaria</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conferencia (1-25 usuarios)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restringida (1-150 usuarios)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 reunión con grabación)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Ya existe la configuración con esa clave, por favor especifique otra clave o edite la configuración existente</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>El contenido se está guardando, Por favor espere.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>BienVenidos</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>El Widget muestra información básica del usuario y links soportados</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>Acerca de</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Nonmbre</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Versión</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revisión</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Fecha de construcción</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Cargando ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>hoy</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Ene</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Abr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Ago</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dic</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>no envíe notificación</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>correo simple</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal correo</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Administrar configuraciones de OAuth2</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Nombre</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Permitido</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icono URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Solicitud de clave URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Solicitud simbólica de URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Solicitud de información URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>Configuración de OAuth2</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login parámetros nombre</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Correo parámetros nombre</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Nombre parámetros nombre</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Apellidos parámetros nombre</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Solicitud simbólica de atributos</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redireccionar uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>Puede introducir la dirección de correo en el formato: nombre1 apellidos1 &lt;email1&gt;  o "nombre2 apellidos2" &lt;email2&gt; o 'nombre3 apellidos3'  &lt;email3&gt; o email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notificar desconexión</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Exponer</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Su cuenta ha sido hecha. El correo de confirmación ha sido enviado. Ahora puede usted hacer login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>El final de la fecha introducida es anterior a la fecha del comienzo.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/swedish.xml b/src/main/webapp/languages/swedish.xml
new file mode 100644
index 0000000..ddae587
--- /dev/null
+++ b/src/main/webapp/languages/swedish.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Konferens</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Möte</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Auditorium</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Inställningar</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Administration</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Stopp</value>
+  </string>
+  <string id="8" name="record">
+    <value>Spela in</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Ingen fil tillgänglig</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Inspelad av lärare</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Anslutna användare:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Starta en konferens</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Mitt namn</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Videokonferens</value>
+  </string>
+  <string id="15" name="import">
+    <value>Importera Presentation</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Uppdatera lista</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Till huvudfil</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Ny omröstning</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>En ny omröstning för konferensen.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Fråga:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Typ av omröstning:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Skapa</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Info: Varje ansluten användare får ett meddelande med den nya röstningen.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Skapa en omröstning</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Ja/Nej</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Numerisk 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Röst</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Du måste vara Moderator för att skapa en omröstning</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Din röst är accepterad</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Du har redan röstat i denna omröstning.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Rösta!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Din respons:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Ja</value>
+  </string>
+  <string id="35" name="no">
+    <value>Nej</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>vill veta:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Röstningsresultat</value>
+  </string>
+  <string id="38" name="question">
+    <value>Fråga:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Resultat:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Svar:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Inga nya omröstningar har påbörjats.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Rösta!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Möte (max 4 platser)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferens (max 50 platser)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Typ</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Andra platser</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Redan valt</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Stig in</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Moderatorn har lämnat mötet.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Systeminformation</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Välj utrustning</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Välj webcam:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Välj mikrofon:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ok</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Avbryt</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Återanslut.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Ändra setup.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Kurs:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Språk:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>Ok</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Avbryt</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Rensa skrivbordet</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Vill du att skrivbordet skall rensas innan du lägger till en ny bild?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Fråga inte igen</value>
+  </string>
+  <string id="65" name="no">
+    <value>Nej</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Ändra setup</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Fråga innan skrivbordet töms?.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Användarinfo</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Rensa ritområdet</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Ångra</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Redo</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Välj ett objekt</value>
+  </string>
+  <string id="73" name="text">
+    <value>Text</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Måla</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Rita linje</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Rita understrykning</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Rektangel</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Ellips</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Pil</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>radera valt objekt</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Lägg till för moderation</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Lägg till</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Bli moderator</value>
+  </string>
+  <string id="85" name="close">
+    <value>Stäng</value>
+  </string>
+  <string id="86" name="italic">
+    <value>italic</value>
+  </string>
+  <string id="87" name="bold">
+    <value>fet</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>VÄNTAR</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>En användare väntar för att bli moderator:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Acceptera</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Neka</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Skicka fråga till följande användare</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Accepterad</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Nekad</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Ändra moderator</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Du är inte moderator i denna kurs!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Moderator:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Rummet är fullt. Försök igen senare.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Ellips</value>
+  </string>
+  <string id="101" name="close">
+    <value>Stäng</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Fel data angivet</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Användarnamnet måste innehålla minst 4 tecken</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Lösenordet måste innehålla minst 4 tecken</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Användarnamnet är redan använt</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Denna epost är redan använd</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Systemfel, kontakta systemadmin</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Login</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Användare:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Lösen:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Språk</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Login</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Registrera</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Användare:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Lösen:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Lösen igen:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Förnamn:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Efternamn:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-post:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Land:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Registrera</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Avbryt</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Registrera</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Hem</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Användare</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Grupper</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Organisationer</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Konferensrum</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Publik</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Organisation</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Stig in</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Login</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Lösenord</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Lösenord igen</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Förnamn</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Efternamn</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-post</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Födelseår</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Gata/nr</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Pnr/Stad</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Land</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adress-Info</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Användardata</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Spara</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Spara</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Användar-ID</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Login</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Förnamn</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Efternamn</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Visa nästa</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Visa föregående</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Radera innehåll</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Avbryt</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Radera</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Nytt innehåll</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Uppdatera innehåll</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Radera innehåll</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Status</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Ej tillgänglig</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Tillgänglig</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Organisation</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Kalender</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Stäng</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Organisation-ID</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Namn</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Användare</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Moderator</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Admin</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Användarnivå</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Organisation</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Namn</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Lägg till organisation</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Lägg till organisation</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Avbryt</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Lägg till</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Ta bort organisation</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Användare</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Lägg till användare</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Radera användare</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Lägg till användare</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Sök användare</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>sök</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Användare</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Organisation</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Stig in</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferensrum</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferensrum</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>Id</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Namn</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Publik</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Organisationer</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Konferensrum</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Namn</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Typ</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Publik</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Kommentar</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Spara</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Ladda</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Spara som</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Filnamn</value>
+  </string>
+  <string id="201" name="files">
+    <value>Filnamn</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Avbryt</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Spara</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Bearbetar</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Laddar</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Objekt laddade</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Synkroniserar, vänta:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Laddar bilddata</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Synkroniserar, vänta:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Rensa ritutrymmet</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Rensa ritutrymmet, all data kommer att förloras</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Fråga innan inladdning av fil</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Skicka inbjudan</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Skicka inbjudan</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Ämne</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Mottagare</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Meddelande</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Skicka</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Skicka</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Användardata</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Ditt alias i denna konferens</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Alias</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Förnamn</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Efternamn</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-post</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Språk</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Stig in</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Laddar</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Laddar data, vänta!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Fel lösenord</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>2 identiska lösenord med minst 6 tecken, tack!</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Fel e-postadress</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Du har angett en ogiltig e-postadress</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Registrering klar</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ditt konto är skapat. Du kan logga in.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Du kan inte dela din skärm just nu. Någon annan delar sin skärm.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Delning förbjuden</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Dela skärm</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Dålig bandbredd: Du kan inte synkronisera skärmen. Du kommer att tappa frames. Om denna varning visas ofta kan du be din moderator att sänka kvaliteten.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Skärm av:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Måla</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Dokument</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Chat</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Filer</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Medlemmar</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Ladda ner originaldokument</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Ladda ner PDF-dokument</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Ladda presentationen till whiteboard</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfiguration</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Dra det här objektet</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Ändra storleken på det här objektet</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>av</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>Gå till första sidan</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Gå till föregående sida</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Gå till nästa sida</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Gå till sista sidan</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Zoom --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Zoom ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Herr</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Fröken</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfiguration</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Nyckel</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfiguration</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Nyckel</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>senast uppdaterat</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>uppdaterat av</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>kommentar</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>nyckel</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>av</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Användare</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>radera användare från organisationen</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>radera</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Den här användaren är redan medlem av den här organisationen.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Nyheter</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Snabblänkar</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Gå till Konferens</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Gå till Auditorium</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Hjälp och Support</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Buggrapport</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>mera</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Projektets Webbsida (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Epostlista För Användare (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Kom Ihåg Inloggning</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Innehåll</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Min Hemsida</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Mina Schemalagda Möten</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Mina Planerade Auditorier</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Allmänna Möten</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Privata Möten</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Allmänna Auditorier</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Privata Auditorier</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Allmänt Innehåll</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Privat Innehåll</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Personligt Innehåll</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Moderering</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Anhåll om Moderering</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Omröstningar</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Välj en fil</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Inställningar</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kam. &amp; Mik. Inställn.</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Whiteboard Inställningar</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Avsluta</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Lämna Rummet</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Logga ut</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Glömt ditt lösenord?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Återställ Lösenord</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Via E-post</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Via Användarnamn</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Din E-postadress</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Ditt Användarnamn</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>OK</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Användare</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Omröstningar</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Det finns ingen Användare kopplad till detta Användarnamn</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Ett e-postmeddelande innehållande en unik länk har skickats till din epostadress, var vänlig kolla din epost. Om du fortfarande inte fått något e-postmeddelande, var vänlig ändra spaminställningarna för din e-post och skicka bekräftelsemeddelandet på nytt.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Bearbetar</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Meddelande</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Ogiltig Hash. Ingen Användare Funnen.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Återställ Ditt Lösenord</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Login</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Ändra Lösenord</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Nytt Lösenord</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Ange Lösenord på nytt</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Lösenorden du angett är inte identiska.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 eller mer tecken; versalisering inverkar!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Lösenord valt. Du kan logga in nu.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Okänt Fel. Var vänlig rapportera detta till ditt Service-Team.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Användarnamnet hittades inte.</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Ogiltigt Lösenord.</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Utloggning Lyckades.</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Registrering via gränssnittet är Inaktiverat.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Ogiltig Epostadress.</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Duplikat filnamn, var vänlig välj ett annat filnamn.</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Filnamnet är för kort.</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Kunde inte spara Adressen.</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Användare tillagd, men du måste tilldela honom en Organisation för att kunna logga in.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Nytt Record</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Inget fält med detta FältId hittades.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Ingen Etikett hittades för det Fältet.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Admin Auktorisering krävs.</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Språk-Editor</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Språk</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Etikett-ID</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Etikett-Namn</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Värde</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Fältvärden</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>EtikettNamn</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>EtikettVärde</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Etikett-ID</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Du raderade endast Etiketten, INTE Fältet! Du kan inte radera Fältet, det innehåller kanske Etiketter på andra Språk.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Ogiltig Etikett-ID. FieldLanguagesvalues_Id kan inte hittas i databasen.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Du kan inte radera det här Fältet. Du kan endast radera Etiketter, INTE Fält. För tillfället är ingen Etikett laddad, detta kan bero på att ingen Etikett är vald eller för att inga Etiketter är definierade för det här fältet och språket.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Exportera</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Du måste logga ut för att se ändringar.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Lägg till nytt språk</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Ta bort språk</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Lägg till nytt språk</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Namn</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Lägg till språk</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Säkerhetskopia</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>Gå till första</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Gå till föregående</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Gå till nästa</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>Gå till sista</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Användare talar (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>Sätt på/av ljudet</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>System</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Dina inställningar</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Hej,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Ändra din profil</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Nya meddelanden:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Ladda upp nya bilder</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Användardata - Exportera</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Alla organisationer måste finnas från tidigare!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Påbörja exporteringen</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Enligt organisation</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Påbörja exporteringen</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Användardata - Importera</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Välj users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Importera</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Exportera till XML - Dessa filer kan användas för att: - Bidra till projektet - Importera till ett annat system - Göra säkerhetskopior - Skräddarsy programmet - Lägga i language-mappen för kommande installationer</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Välj en språkfil att importera. Välj rätt språk från Comboboxen! Språkfilen kommer att importeras till detta språk oberoende av namnet på filen!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Importera - välj fil</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Spara som</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Namn:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Kommentar:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Spara</value>
+  </string>
+  <string id="395" name="record">
+    <value>Inspelningar</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Inspelningsförevisaren</value>
+  </string>
+  <string id="397" name="record">
+    <value>Inspelningar från allmänna och privata rum</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Användare:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Anslöt sig:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Användare i det här rummet:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Uppdatera</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Det här rummet är fullt. Försök igenom om någon minut.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Klicka på ett rum för att få mera detaljer</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Chatta med användarna i det här rummet:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Rum:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Användare i det här rummet:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Sedan:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Spela upp inspelning</value>
+  </string>
+  <string id="410" name="record">
+    <value>Längd:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Datum:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Inspelningsläge! Du kan inte ändra några värden, detta är en inspelad fil.</value>
+  </string>
+  <string id="413" name="record">
+    <value>Spela upp denna inspelning</value>
+  </string>
+  <string id="414" name="record">
+    <value>Spela upp / Pausa</value>
+  </string>
+  <string id="415" name="record">
+    <value>Påbörja inspelning</value>
+  </string>
+  <string id="416" name="record">
+    <value>Stoppa inspelning</value>
+  </string>
+  <string id="417" name="record">
+    <value>Inspelning:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Det är redan någon som spelar in:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Inspelning! Av användare:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Inspelningen kommer att avbryts och inte heller sparas.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Återuppta</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Stäng det här fönstret och återuppta inspelningen</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Ändra Linjefärg</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Välj Färg</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Inaktivera / Aktivera Linjefärg</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Ändra Fyllfärg</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Inaktivera / Aktivera Fyllfärg</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Ändra Linjebredd</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Stäng</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Ändra storlek på teckensnitt</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Ta bort Inspelning</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Gäst</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Av:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Namn</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Rum</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Avbryt</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Starta</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Namn</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Datum</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Radera Serverns Chatlogg</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Chat</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Skicka meddelande</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Emotikoner</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value></value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Välj Enheter</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ljud och Video</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Endast Ljud</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Endast Video</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Inget Ljud/Video (statisk bild)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Inget Ljud/Video kommer att publiceras, i stället kommer en bild från din profil att visas. Välj den här inställningen om du har dålig bandbredd.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>MÅ</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>TI</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ON</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>TO</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>FR</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>LÖ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>SÖ</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Måndag</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Tisdag</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Onsdag</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Torsdag</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Fridag</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Lördag</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Söndag</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>KV</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Kalender vecka</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Januari</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Februari</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Mars</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>April</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Maj</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Juni</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Juli</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Augusti</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>September</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Oktober</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>November</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>December</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Kalender</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Deltagare</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Visa Layout inställningar</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Bredd | Höjd</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Platshållare</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Modererings-Platshållare</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Whiteboard-Platshållare</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Aktiverad</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Bredd | Höjd</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Filer, Chat, Deltagare - Platshållare</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Aktiverad</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Bredd | Höjd</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Moderatorn har lämnat rummet. För tillfället finns det ingen presentatör. Du kan ansöka om att bli Moderator eller vänta.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Det finns ingen Moderator i det här rummet, men det finns några deltagare. Du kan ansöka om att bli Moderator eller vänta.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Feedback för $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Inbjudan</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Meddelande från Användare:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Meddelande:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Klicka på den här länken för att delta i Mötet:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Klicka här för att gå in i Rummet.</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Om du har problem med den här länken, var vänlig kopiera och klistra in det här i din webbläsare:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Registrering</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Din användardata:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Login:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Lösenord:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>Epost:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Teamet</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Registrering</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Återställ Lösenord</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Klicka på den här länken för att ange ett nytt lösenord:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Klicka här för att ange ett nytt lösenord</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Om du har problem med länken, var vänlig kopiera och klistra in detta i din webbläsare:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME lösenordsåterställning</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Var vänlig ange ett giltigt Datum, till exempel 24.12.2001 (dd.mm.åååå)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Var vänlig ange en giltig Epostadress, till exempel namn@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Var vänlig ange ett Flytande-Nummer, till exempel 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Var vänlig ange ett Nummer (Integer), till exempel 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Var vänlig ange ett Telefonnummer, till exempel +358 40 352 3250</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Var vänlig ange en tid, till exempel 12:23 (tt:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Lösenordsskyddad</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Lösenord</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Giltighetstid</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Oändlig</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Period</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Engångs</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Giltig från och med:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Giltig till:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Inbjudan till $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Ingen inbjudan tillgänglig med den här Inbjudningskoden.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Inbjudan användes redan. Den här typen av inbjudningar kan inte återanvändas.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Inbjudningskoden är inte giltig.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Lösenord:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Kontrollera Lösenord</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Ogiltigt Lösenord!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Webbläsare</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Synkronisera Ljud/Video</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Inloggningen var korrekt, men sessionen är inte längre aktiv eller lagrad på servern. Försök att logga in igen efter att du fått ett nytt SessionId.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId är inte inloggat eller har inga Admin-rättigheter. SOAP Gateway kräver en användare med admin-rättigheter för att innesluta nya användare.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Den här sessionen är inte kopplad till någon Remoteuser-Data. Antingen så kallades inte SOAP-Gateway före applikationen kördes eller så används ett felaktigt Session-ID.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Inspelaren är fortfarande i Beta-stadie!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axel</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axel</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>b</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>bredd</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>höjd</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Ändra Genomskinlighet</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Öppna bläddraren</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Stäng bläddraren</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Anslutningen till Servern är förlorad. Du måste ladda om Applikationen och/eller kolla din Nätverksanslutning.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pekare</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synkroniserar</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synkroniserar användare, var vänlig vänta</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Ladda ner som SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Ladda ner som PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Ladda ner som JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Ladda ner som PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Ladda ner som TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Påminnelse:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategori:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>ingen</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Läge:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Börjar</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Slutar</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Titel:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Kommentar:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Bjud in folk</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daglig</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Månatlig</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Årlig</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Tidpunkten för mötets slut måste vara efter dess början!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Lägg till en Titel, tack!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Aktivera det här om du skriver på ett höger till vänster-språk (inverterad ordfölj)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Se på inspelade Möten och Auditorier</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Möte - Skapa en konferens med 4 (upp till 16) Användare &lt;br&gt; alla kommer att ha tillgång till ljud + video.</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Auditorium - Skapa en konferens med upp till 200 deltagare&lt;br/&gt;Endast Moderatorn kommer att ha tillgång till ljud + video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Skapa användare, rum, organisationer&lt;br/&gt; + ändra konfigurationer</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Användare i det här Rummet nu</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Laddar Dokument. Vänligen vänta tills alla klienter är synkroniserade.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Uppladdning klar, konverterar Dokument ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Påbörja Uppladdning</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Dialog för Uppladdning och Importering. Var vänlig välj en Fil från din Hårdskiva.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Avbryt</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Välj Fil</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Anslutningar</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Värde</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Ansluten sedan</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Rum</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Sparka Användare</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Sparka Användare</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Vill du verkligen sparka den här Klienten?&lt;br/&gt; Det här avlägsnar endast Klienten från det aktuella rummet och ger honom möjlighet att återansluta sig.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Din session har stängts av en Administratör eller Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Användaren är Moderator i det här rummet</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Användaren har tillåtelse att rita på Whiteboarden</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Starta (om) Ljud/Video eller ändra Anordningens Inställningar</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Tillåt den här Användaren att rita på Whiteboarden</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Ta bort möjligheten att rita på Whiteboarden</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Användare</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Filer</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Ditt konto är tilldelat flera Organisationer. Var vänlig välj en för den här Sessionen.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Det här rummet är fullt för tillfället. Var vänlig försök på nytt senare.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Typ av rum</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Tidsbokat rum</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Servertid</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Påminnelse</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Meddelande från Användare:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Meddelande:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Klicka på den här länken för att delta i Mötet:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Klicka här för att gå in i rummet</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>Om du har problem med länken, vänligen kopiera och klistra in det här i din webbläsare:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>Sök internt</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>externa användare</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>förnamn</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>namn</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-post</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Bekräfta utloggning</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Är du säker på att du vill logga ut?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Åtgärder</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Rum</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Tid</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Mötestimer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Det här Rummet är ett Demo Rum. För att få bort den här varningen så måste du antingen skaffa ett privat mötesrum eller sätta upp en egen Server. Du kommer att loggas ut automatiskt om:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Modererat</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Var vänlig vänta tills Moderatorn har anslutigt sig till Rummet. Moderatorn kan antingen vara en Lärare, Admin eller skapare av det här Rummet.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Inkommande Skärmdelning</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>En ny Skärmdelning vill påbörjas av användaren:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Börja Dela</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Lägg Till Ett Möte</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Mötesrum</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Auditorium</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderering</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderera Användare</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderera Rum</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Vill du ändra den här Användaren till Moderator av den Organisationen?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Var vänlig välj en Organisation före du försöker lägga till en Användare till den!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organisation - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Vill du verkligen ta bort den här Användaren från Organisationen?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Den här Användaren är Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Den här Användaren är inte Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Vill du ta bort den här Användaren som Moderator för den här Organisationen?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Lägg till eller ta bort Användare eller Rum inom din Organisation</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Vill du verkligen ta bort det här?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Vill du verkligen ta bort den här Användaren från Organisationen? Du kommer endast att ta bort kopplingen mellan Användaren och Organisationen, för att ta bort själva Användaren så måste du logga in på Administrationspanelen.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Du kan inte ta bort din egen Användare!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Den här Metoden kräver ett Administrationskonto för att kunna åberopas!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Det finns ingen Session associerad med detta ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Det här är ett Administratörs- eller Moderatorkonto. Du kan endast ändra det här kontot via Administratörspanelen.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Var vänlig klicka på följande länk eller klistra in den i din webbläsares adressfält för att slutföra registreringen.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Klicka här för att verifiera din E-postadress</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Ingen Användare hittades med detta Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Den här Användaren är redan aktiverad!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Du har aktiverat ditt konto!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Logga in nu</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Ditt konto är inte aktiverat. Använd länken i det e-postmeddelande du fick när du registrerade dig.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Du har framgångsrikt registrerat dig. Vi har skickat ett e-postmeddelande till dig med din verifikationskod. Vänligen kolla din Inkorg.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Ta bort den här användaren som Moderator</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Bevilja Moderator-rättigheter till den här Användaren</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Användare</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Tillgång till Whiteboarden</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderering: Vänligen välj en Användare från Listan för att bevilja honom tillträde till Whiteboard, Moderering eller Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Den här Användaren är redan Moderator, så han har automatiskt rätt att rita.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Det här är du! Du kan inte ta bort Moderator-rättigheterna från dig själv.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Tillåt den här Användaren att Publicera Ljud/Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Ta bort Ljud/Video från den här Användaren</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Jag skulle vilja få Moderering för det här rummet</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Jag skulle vilja rita på Whiteboarden</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Jag skulle vilja dela Ljud/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Du är Moderator för det här Rummet</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Du har tillåtelse att rita på Whiteboarden</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Du har tillåtelse att publicera Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Meddelande till Moderatorn</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Användaren</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>vill ha Moderator-rättigheter. Använd Statusikonerna i Användarlistan för att dela ut och ta bort Moderator-rättigheter.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>vill rita på Whiteboarden. Använd Statusikonerna i Användarlistan för att dela ut och ta bort rättigheter att rita på Whiteboarden.</value>
+  </string>
+  <string id="695" name="695">
+    <value>vill publicera Ljud/Video. Använd Statusikonerna i Användarlistan för att dela ut och ta bort rättigheter att publicera Ljud/Video.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Du måste vänta tills en Moderator har stigit in i rummet.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Avbryt</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Spara</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Dag</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Månad</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>År</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/thai.xml b/src/main/webapp/languages/thai.xml
new file mode 100644
index 0000000..8a599d5
--- /dev/null
+++ b/src/main/webapp/languages/thai.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>การประชุมกลุ่ม</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>การประชุม</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>งานต่างๆ</value>
+  </string>
+  <string id="4" name="settings">
+    <value>การตั้งค่า</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>โปรไฟล์</value>
+  </string>
+  <string id="6" name="admin">
+    <value>การบริหารงาน</value>
+  </string>
+  <string id="7" name="stop">
+    <value>หยุด</value>
+  </string>
+  <string id="8" name="record">
+    <value>บันทึก</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>ไม่มีไฟล์</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>บันทึกโดยอาจารย์</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>ผู้ใช้ที่เชื่อมต่อ:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>เริ่มการประชุม</value>
+  </string>
+  <string id="13" name="myname">
+    <value>ชื่อของฉัน</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>การประชุมผ่านวีดีโอ</value>
+  </string>
+  <string id="15" name="import">
+    <value>อัพโหลดไฟล์</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>รีเฟรชลิสต์รายการ</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>ไปยังไฟล์หลัก</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>โพลล์ใหม่</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>โพลล์ใหม่สำหรับการประชุม</value>
+  </string>
+  <string id="20" name="question">
+    <value>คำถาม:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>ประเภทของโพลล์:</value>
+  </string>
+  <string id="22" name="create">
+    <value>จัดทำ</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>ข้อมูล: ผู้ใช้ที่เชื่อมต่ออยู่แต่ละรายได้รับข้อความพร้อมด้วยโพลล์ใหม่</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>จัดทำโพลล์</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>ใช่/ไม่</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>เลข 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>โพลล์</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>ต้องเป็นผู้ดำเนินรายการจึงจะตั้งคำถามได้</value>
+  </string>
+  <string id="30" name="vote">
+    <value>การโหวตของคุณได้รับการลงทะเบียนแล้ว</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>คุณโหวตโพลล์นี้ไปแล้ว</value>
+  </string>
+  <string id="32" name="voting">
+    <value>เชิญโหวต!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>คำตอบของคุณ:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>ใช่</value>
+  </string>
+  <string id="35" name="no">
+    <value>ไม่</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>อยากรู้:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>ผลการสำรวจโพลล์</value>
+  </string>
+  <string id="38" name="question">
+    <value>คำถาม:</value>
+  </string>
+  <string id="39" name="results">
+    <value>ผล:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>คำตอบ:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>ยังไม่มีการเริ่มการสำรวจโพลล์ใดเลย</value>
+  </string>
+  <string id="42" name="votings">
+    <value>เชิญโหวต!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>การประชุม (สูงสุด 4 ที่นั่ง)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>การประชุมกลุ่ม (สูงสุด 50 ที่นั่ง)</value>
+  </string>
+  <string id="45" name="type">
+    <value>ประเภท</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>ที่นั่งอื่นๆ</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>เลือกไปแล้ว</value>
+  </string>
+  <string id="48" name="enter">
+    <value>ป้อนข้อมูล</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>ผู้ดำเนินรายการออกจากที่ประชุมไปแล้ว</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>ข้อมูลระบบ</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>เลือกอุปกรณ์</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>เลือกเว็บแคม:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>เลือกไมโครโฟน:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>ตกลง</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>คุณต้องทำการเชื่อมต่อใหม่</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>แก้ไขการตั้งค่า</value>
+  </string>
+  <string id="58" name="course">
+    <value>หลักสูตร:</value>
+  </string>
+  <string id="59" name="language">
+    <value>ภาษา:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>ตกลง</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>ลบไวท์บอร์ด</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>คุณต้องการให้ลบไวท์บอร์ดให้ว่างก่อนที่จะเพิ่มรูปใหม่หรือไม่</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>ไม่ต้องถามอีก</value>
+  </string>
+  <string id="65" name="no">
+    <value>ไม่</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>แก้ไขการตั้งค่า</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>ขอให้ยืนยันอีกครั้งก่อนจะลบไวท์บอร์ดให้ว่าง</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>ข้อมูลผู้ใช้</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>ลบบริเวณวาดรูป</value>
+  </string>
+  <string id="70" name="undo">
+    <value>เลิกทำ</value>
+  </string>
+  <string id="71" name="redo">
+    <value>ทำซ้ำ</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>เลือกรายการ</value>
+  </string>
+  <string id="73" name="text">
+    <value>ข้อความ</value>
+  </string>
+  <string id="74" name="paint">
+    <value>ระบายสี</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>วาดเส้น</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>ขีดเส้นใต้</value>
+  </string>
+  <string id="77" name="rect">
+    <value>สี่เหลี่ยมผืนผ้า</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>วงรี</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>ลูกศร</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>ลบรายการที่เลือกไว้</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>สมัครเพื่อทำหน้าที่ดำเนินรายการ</value>
+  </string>
+  <string id="82" name="apply">
+    <value>สมัคร</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="84" name="mod">
+    <value>กลายเป็นผู้ดำเนินรายการ</value>
+  </string>
+  <string id="85" name="close">
+    <value>ปิด</value>
+  </string>
+  <string id="86" name="italic">
+    <value>ตัวเอียง</value>
+  </string>
+  <string id="87" name="bold">
+    <value>ตัวหนา</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>กำลังรอ</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>ผู้ใช้ต้องการสมัครเป็นผู้ดำเนินรายการ:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>ยอมรับ</value>
+  </string>
+  <string id="91" name="reject">
+    <value>ปฏิเสธ</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>ส่งคำขอไปยังผู้ใช้ดังต่อไปนี้</value>
+  </string>
+  <string id="94" name="accept">
+    <value>ยอมรับแล้ว</value>
+  </string>
+  <string id="95" name="reject">
+    <value>ปฏิเสธแล้ว</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>เปลี่ยนผู้ดำเนินรายการ</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>คุณไม่ได้กำลังดำเนินหลักสูตรนี้!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>ผู้ดำเนินรายการ:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>ห้องนี้เต็มแล้ว ขออภัย โปรดลองใหม่ภายหลัง</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>วงรี</value>
+  </string>
+  <string id="101" name="close">
+    <value>ปิด</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>ข้อมูลที่กรอกขัดข้อง</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>ตัวอักษร 4 ตัวขึ้นไป อักษรตัวใหญ่มีผลสำคัญ</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>รหัสผู้ใช้ต้องมีตัวอักษรอย่างน้อย 4 ตัว</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>มีผู้ใช้ชื่อนี้ไปแล้ว</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>อีเมล์นี้ลงทะเบียนไปแล้ว</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>ระบบขัดข้อง โปรดติดต่อผู้ดูแลระบบ</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>ล็อคอิน</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>ผู้ใช้:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>รหัสผ่าน:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>ภาษา</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>ลงชื่อเข้าใช้</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>ลงทะเบียน</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>ผู้ใช้:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>รหัสผ่าน:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>พิมพ์ซ้ำ:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>ชื่อ:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>นามสกุล:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>อีเมล์:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>ประเทศ:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>ลงทะเบียน</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>ไม่ได้เป็นสมาชิก?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>หน้าแรก</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>ผู้ใช้</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>กลุ่ม</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>องค์กร</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>ห้องประชุม</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>สาธารณะ</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>องค์กร</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>เข้าห้อง</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>ล็อกอิน</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>รหัสผ่าน</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>พิมพ์ซ้ำ</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>ชื่อ</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>นามสกุล</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>อีเมล์</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>วันเกิด</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>ถนน/เลขที่</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>รหัสไปรษณีย์/จังหวัด</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>ประเทศ</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>ข้อมูลที่อยู่</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>ข้อมูลผู้ใช้</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>บันทึก</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>บันทึก</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>หมายเลขประจำตัวผู้ใช้</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>ล็อคอิน</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>ชื่อ</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>นามสกุล</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>แสดงถัดไป</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>แสดงก่อนหน้านี้</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>ลบบันทึก</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>ลบ</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>บันทึกใหม่</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>รีเฟรชบันทึก</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>ลบบันทึก</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>สถานะ</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>ยกเลิกแล้ว</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>ใช้งานแล้ว</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>องค์กร</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>ปฏิทิน</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>ปิด</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>หมายเลขประจำองค์กร</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>ชื่อ</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>ผู้ใช้</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>ผู้ดำเนินรายการ</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>ผู้ดูแล</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>ระดับผู้ใช้</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>องค์กร</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>ชื่อ</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>เพิ่มองค์กร</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>เพิ่มองค์กร</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>เพิ่ม</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>ย้ายองค์กรออก</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>ผู้ใช้</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>เพิ่มผู้ใช้</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>ลบผู้ใช้</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>เพิ่มผู้ใช้</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>ค้นหาผู้ใช้</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>ค้นหา</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>ผู้ใช้</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>องค์กร</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>ป้อนข้อมูล</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>ห้องประชุมกลุ่ม</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>ห้องประชุมกลุ่ม</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>หมายเลขประจำตัว</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>ชื่อ</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>สาธารณะ</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>องค์กร</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>ห้องประชุม</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>ชื่อ</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>ประเภท</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>สาธารณะ</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>ข้อคิดเห็น</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>บันทึกและเอ็กซ์พอร์ต</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>โหลด</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>บันทึกเป็น</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>ชื่อไฟล์</value>
+  </string>
+  <string id="201" name="files">
+    <value>ชื่อไฟล์</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>ขัดข้อง</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>กำลังโหลด</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>รายการที่โหลดแล้ว</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>กำลังซิงค์โครไนซ์ลูกค้าอยู่ ลูกค้าต้องรอ:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>กำลังโหลดข้อมูลรูปภาพ</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>กำลังซิงค์โครไนซ์ลูกค้าอยู่ ลูกค้าต้องรอ:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>ลบบริเวณวาดรูป</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>ลบบริเวณวาดรูป ข้อมูลทั้งหมดบนไวท์บอร์ดจะสูญหายไป</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>ยืนยันก่อนโหลดไฟล์</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>ส่งคำเชิญ</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>ส่งคำเชิญ</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>เรื่อง</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>ผู้รับ</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>ข้อความ</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>ส่ง</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>ส่ง</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>ข้อมูลผู้ใช้</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>ชื่อเล่นของคุณในการประชุมครั้งนี้</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>ชื่อเล่น</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>ชื่อ</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>นามสกุล</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>อีเมล์</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>ภาษา</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>ป้อนข้อมูล</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>กำลังโหลด</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>กำลังดาวน์โหลดข้อมูล โปรดรอสักครู่!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>รหัสผ่านผิด</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>โปรดใส่รหัสผ่านสองครั้งให้ตรงกันโดยมีตัวอักษรอย่างน้อย 6 ตัว</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>อีเมล์ผิด</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>อีเมล์ที่คุณกรอกไม่ถูกต้อง</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>การลงทะเบียนเสร็จสมบูรณ์</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>จัดทำบัญชีของคุณเสร็จเรียบร้อยแล้ว คุณสามารถล็อคอินได้แล้ว</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>คุณไม่สามารถแชร์หน้าจอได้ในขณะนี้ มีใครบางคนแชร์หน้าจอไปแล้ว</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>ห้ามแชร์</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>แชร์หน้าจอ</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>แบนด์วิธไม่ดี: คุณไม่สามารถซิงค์โครไนซ์หน้าจอได้ เฟรมต่างๆ จะถูกทิ้งไป หากมีคำเตือนนี้ปรากฏบ่อยครั้ง ควรขอให้ผู้ดำเนินรายการลดคุณภาพหน้าจอ</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>หน้าจอของ:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>ระบายสี</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>เอกสาร</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>แชท</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>ไฟล์</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>สมาชิก</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>ดาวน์โหลดเอกสารต้นฉบับ</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>ดาวน์โหลดเอกสาร PDF</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>โหลดการนำเสนอไปยังไวท์บอร์ด</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>การปรับแต่งค่า</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>ลากรายการนี้</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>ปรับขนาดรายการนี้</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>ของ</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>ไปยังหน้าแรก</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>ไปยังหน้าก่อนนี้</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>ไปยังหน้าถัดไป</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>ไปยังหน้าสุดท้าย</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>ขยายย่อ --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>ขยายใหญ่ ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>นาย</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>นางสาว</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>การปรับแต่งค่า</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>หมายเลขประจำตัว</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>ปุ่ม</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>การปรับแต่งค่า</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>ปุ่ม</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>อัพเดทล่าสุด</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>อัพเดทโดย</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>ข้อคิดเห็น</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>ค่า</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>ของ</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>ผู้ใช้</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>ลบผู้ใช้ออกจากองค์กร</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>ลบ</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>ผู้ใช้รายนี้เป็นสมาชิกขององค์กรนี้อยู่แล้ว</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>ข่าวสาร</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>ควิกลิงค์</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>ไปยังการประชุม</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>ไปยังหอประชุม</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>ข้อมูลช่วยเหลือและสนับสนุน</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>รายงานเหตุขัดข้อง!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>เพิ่มเติม</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>เว็บไซต์ของโครงการ (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>รายชื่ออีเมล์ของผู้ใช้ (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>จำชื่อล็อคอิน</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>เนื้อหา</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>หน้าหลักของฉัน</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>การประชุมที่นัดหมายไว้ของฉัน</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>งานที่นัดหมายไว้ของฉัน</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>การประชุมสาธารณะ</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>การประชุมส่วนตัว</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>งานสาธารณะ</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>งานส่วนตัว</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>เนื้อหาสาธารณะ</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>เนื้อหาส่วนตัว</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>เนื้อหาส่วนบุคคล</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>การดำเนินรายการ</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>สมัครเพื่อทำหน้าที่ดำเนินรายการ</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>โพลล์</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>เลือกไฟล์</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>การตั้งค่า</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>การตั้งค่ากล้องและไมโครโฟน</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>การตั้งค่าไวท์บอร์ด</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>ออก</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>กลับไปยังห้อง</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>ล็อคเอ้าท์</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>ลืมรหัสผ่าน?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>ตั้งรหัสผ่านใหม่</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>โดยอีเมล์</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>โดยชื่อล็อคอิน</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>อีเมล์ของคุณ</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>ชื่อล็อคอินของคุณ</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>ส่งอีเมล์พร้อมลิงค์สำหรับตั้งรหัสผ่านใหม่</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>ไม่พบอีเมล์แอดเดรสดังกล่าว ดูให้แน่ใจว่าคุณกรอกอีเมล์แอดเดรสเดียวกับที่คุณใช้ในการจัดทำบัญชีของคุณ</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>โปรดกรอกอีเมล์หรือชื่อผู้ใช้</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>ไม่มีผู้ใช้รายใดเชื่อมต่อกับชื่อผู้ใช้รายนี้</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>ได้ส่งอีเมล์ซึ่งมีลิงค์พิเศษไปยังอีเมล์แอดเดรสของคุณแล้ว โปรดเช็คอีเมล์ด้วย หากยังคงไม่ได้รับอีเมล์ โปรดปรับการตั้งค่าอีเมล์สแปมและส่งอีเมล์ยืนยันใหม่อีกครั้ง</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>ขัดข้อง</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>ข้อความ</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>รหัสผ่านไม่ถูกต้อง ไม่พบผู้ใช้</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>ตั้งรหัสผ่านของคุณใหม่</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>ล็อคอิน</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>เปลี่ยนรหัสผ่าน</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>รหัสผ่านใหม่</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>กรอกรหัสผ่านใหม่</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>รหัสผ่านที่คุณกรอกไม่ตรงกัน</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>ตัวอักษร 4 ตัวขึ้นไป อักษรตัวใหญ่มีผลสำคัญ</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>ตั้งรหัสผ่านแล้ว คุณสามารถล็อคอินได้แล้ว</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>ตกลง</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>ขัดข้องโดยไม่ทราบสาเหตุ โปรดรายงานต่อทีมบริการของคุณ</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>ไม่พบชื่อผู้ใช้</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>รหัสผ่านไม่ถูกต้อง</value>
+  </string>
+  <string id="337" name="logout">
+    <value>ออกจากระบบเรียบร้อยแล้ว</value>
+  </string>
+  <string id="338" name="registration">
+    <value>การลงทะเบียนถูกยกเลิกแล้ว</value>
+  </string>
+  <string id="339" name="registration">
+    <value>อีเมล์ไม่ถูกต้อง</value>
+  </string>
+  <string id="340" name="registration">
+    <value>ชื่อไฟล์ซ้ำ โปรดเลือกชื่อไฟล์อื่น</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>ชื่อไฟล์สั้นเกินไป</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>บันทึกที่อยู่ไม่ได้</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>เพิ่มผู้ใช้แล้ว แต่คุณต้องมอบหมายผู้ใช้รายนี้ให้แก่องค์กรใดองค์กรหนึ่ง มิฉะนั้นเขาจะไม่สามารถลงชื่อเข้าใช้ได้</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>บันทึกใหม่</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>ไม่พบฟิลด์ที่มาพร้อมกับหมายเลขฟิลด์นี้</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>ไม่พบป้ายชื่อสำหรับฟิลด์นั้น</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>ต้องใช้การอนุญาตจากผู้ดูแล</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>โปรแกรมแก้ไขภาษา</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>ภาษา</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>หมายเลขประจำป้าย</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>ป้ายชื่อ</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>ค่า</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>ค่าฟิลด์</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>ป้ายชื่อ</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>ค่าป้าย</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>หมายเลขประจำป้าย</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>คุณลบแต่ป้ายเท่านั้น ไม่ได้ลบฟิลด์! คุณลบฟิลด์ไม่ได้ อาจเป็นเพราะว่าฟิลด์มีป้ายเป็นภาษาอื่น</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>หมายเลขประจำป้ายไม่ถูกต้อง ไม่พบหมายเลขประจำค่าภาษาของฟิลด์นั้นในฐานข้อมูล</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>คุณลบฟิลด์นี้ไม่ได้ คุณลบได้แต่เพียงป้ายเท่านั้น ลบฟิลด์ไม่ได้ ไม่มีการโหลดป้ายในขณะนี้ อาจเป็นเพราะว่าไม่ได้เลือกฟิลด์ใดเลยหรือว่าไม่มีป้ายสำหรับภาษานี้สำหรับฟิลด์ที่กำหนด</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>เอ็กซ์พอร์ต</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>คุณจะต้องออกจากระบบก่อน จึงจะเห็นการเปลี่ยนแปลง</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>เพิ่มภาษาใหม่</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>ลบภาษา</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>เพิ่มภาษาใหม่</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>ชื่อ</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>เพิ่มภาษา</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>สำรองข้อมูล</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ไปยังหน้าแรก</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>ไปยังหน้าก่อนนี้</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>ไปยังหน้าถัดไป</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>ไปยังหน้าสุดท้าย</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>ผู้ใช้พูด (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>เปิด/ปิดเสียง</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>ระบบ</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>การตั้งค่าของคุณ</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>สวัสดี</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>แก้ไขโปรไฟล์ของคุณ</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>ข้อความใหม่:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>อัพโหลดภาพใหม่ๆ</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>ข้อมูลผู้ใช้ - เอ็กซ์พอร์ต</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>ต้องมีทุกองค์กรอยู่ก่อนแล้ว</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>เริ่มเอ็กซ์พอร์ต</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>โดยองค์กร</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>เริ่มเอ็กซ์พอร์ต</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>ข้อมูลผู้ใช้ - อิมพอร์ต</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>เลือกผู้ใช้.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>อิมพอร์ต</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>เอ็กซ์พอร์ตไปยัง XML – ไฟล์เหล่านี้สามารถใช้เพื่อ – ส่งเสริมโครงการ – อิมพอร์ตไปยังระบบอื่น – สำรองข้อมูล – การปรับตามความต้องการ - ใส่ไว้ในรายชื่อภาษาสำหรับการติดตั้งครั้งต่อไป</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>เลือกไฟล์ภาษาเพื่ออิมพอร์ต เลือกภาษาที่ถูกต้องจาก Combobox! ไม่ว่าชื่อไฟล์จะเป็นอะไรก็ตาม ก็จะอิมพอร์ตเป็นภาษานี้!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>อิมพอร์ต - เลือกไฟล์</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>บันทึกเป็น</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>ชื่อ:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>ข้อคิดเห็น:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>บันทึก</value>
+  </string>
+  <string id="395" name="record">
+    <value>บันทึก</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>บันทึกผู้ชม</value>
+  </string>
+  <string id="397" name="record">
+    <value>บันทึกห้องสาธารณะและห้องส่วนตัว</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>ผู้ใช้:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>เข้าร่วม:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>ผู้ใช้ในห้องนี้:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>รีเฟรช</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>ห้องนี้เต็มแล้ว อีกสักครู่โปรดลองใหม่</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>คลิกที่ห้องเพื่อดูรายละเอียด</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>แชทกับผู้ใช้ในห้องนี้</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>ห้อง:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>ผู้ใช้ในห้องนี้:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>ตั้งแต่:</value>
+  </string>
+  <string id="409" name="record">
+    <value>เล่นบันทึก</value>
+  </string>
+  <string id="410" name="record">
+    <value>ความยาว</value>
+  </string>
+  <string id="411" name="record">
+    <value>วันที่</value>
+  </string>
+  <string id="412" name="record">
+    <value>โหมดการบันทึก! คุณไม่สามารถเปลี่ยนแปลงค่าใดๆ ได้ ไฟล์นี้ได้รับการบันทึกไว้แล้ว</value>
+  </string>
+  <string id="413" name="record">
+    <value>เล่นบันทึกนี้</value>
+  </string>
+  <string id="414" name="record">
+    <value>เล่น / หยุดชั่วคราว</value>
+  </string>
+  <string id="415" name="record">
+    <value>เริ่มการบันทึก</value>
+  </string>
+  <string id="416" name="record">
+    <value>หยุดการบันทึก</value>
+  </string>
+  <string id="417" name="record">
+    <value>Recording: / บันทึก:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>มีคนกำลังบันทึกอยู่ในขณะนี้</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>กำลังบันทึก! โดยผู้ใช้:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>การบันทึกจะถูกยกเลิกและไม่บันทึกไว้</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>เล่นต่อ</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>ปิดหน้าต่างนี้และกลับเข้าสู่การบันทึก</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>เปลี่ยนสีเส้น</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>เลือกสี</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>ยกเลิก / เริ่มใช้เส้นสี</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>เปลี่ยนสีเติม</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>ยกเลิก / เริ่มใช้สีเติม</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>เปลี่ยนความหนาของเส้น</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>ปิด</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>เปลี่ยนขนาดตัวอักษร</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>ลบการบันทึก</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>แขก</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>โดย:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>ชื่อ</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>ห้อง</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>วันที่</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>ยกเลิก</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>เริ่ม</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>ชื่อ</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>วันที่</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>ลบเซิร์ฟเวอร์-บันทึกการแชท</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>แชท</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>ส่งข้อความ</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>อีโมติคอน</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>อีโมติคอน</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>เลือกอุปกรณ์ที่ใช้เผยแพร่</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>เสียงและภาพวีดีโอ</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>เสียงเท่านั้น</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>ภาพวีดีโอเท่านั้น</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>ไม่มีเสียง/ภาพวีดีโอ (ภาพนิ่ง)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>ไม่เผยแพร่เสียง/ภาพวีดีโอจากเครื่องคอมพิวเตอร์ของคุณสู่สาธารณะ โดยที่จะแสดงภาพจากโปรโฟล์ของคุณแทน ควรเลือกการตั้งค่าเหล่านี้หากคุณมีปัญหากับแบนด์วิธหรืออินเตอร์เน็ตช้ามาก</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>จ</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>อ</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>พ</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>พฤ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>ศ</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>ส</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>อา</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>วันจันทร์</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>วันอังคาร</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>วันพุธ</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>วันพฤหัสบดี</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>วันศุกร์</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>วันเสาร์</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>วันอาทิตย์</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>สัปดาห์</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>สัปดาห์ตามปฏิทิน</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>มกราคม</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>กุมภาพันธ์</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>มีนาคม</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>เมษายน</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>พฤษภาคม</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>มิถุนายน</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>กรกฎาคม</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>สิงหาคม</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>กันยายน</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>ตุลาคม</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>พฤศจิกายน</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>ธันวาคม</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>ปฏิทิน</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>ผู้เข้าร่วม</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>แสดงการตั้งค่าโครงร่าง</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>กว้าง | สูง</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>กล่องวีดีโอ</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>กล่องการดำเนินรายการ</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>กล่องไวท์บอร์ด</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>ดำเนินการแล้ว</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>กว้าง | สูง</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>กล่องไฟล์ แชท ผู้เข้าร่วม</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>ดำเนินการแล้ว</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>กว้าง | สูง</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>ผู้ดำเนินรายการออกจากห้องไปแล้ว ไม่มีใครอยู่ในขณะนี้ คุณสามารถสมัครเพื่อทำหน้าที่ดำเนินรายการได้หรือรอ</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>ผู้ดำเนินรายการออกจากห้องไปแล้ว แต่มีผู้เข้าร่วมบางรายอยู่ คุณต้องสมัครเพื่อทำหน้าที่ดำเนินรายการหรือรอ</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>ผลตอบรับการประชุมแบบเปิด</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>การประชุมแบบเปิด – คำเชิญ</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>ข้อความจากผู้ใช้</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>ข้อความ</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>คลิกลิงค์นี้เพื่อเข้าร่วมการประชุม</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>คลิกที่นี่เพื่อเข้าห้อง</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>หากมีปัญหากับลิงค์นี้ โปรดคัดลอกลิงค์นี้แล้วนำไปวางที่เบราวเซอร์:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>ลงทะเบียนการประชุมแบบเปิด</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>ข้อมูลผู้ใช้ของคุณ:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>ชื่อล็อคอิน:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>รหัสผ่าน:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>อีเมล์:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>การประชุมแบบเปิด - ทีม</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>ลงทะเบียนการประชุมแบบเปิด</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>การประชุมแบบเปิด - ตั้งรหัสผ่านใหม่</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>คลิกลิงค์นี้เพื่อกรอกรหัสผ่านใหม่:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>คลิกที่นี่เพื่อกรอกรหัสผ่านใหม่</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>หากมีปัญหากับลิงค์นี้ โปรดคัดลอกลิงค์นี้แล้วนำไปวางที่เบราวเซอร์:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>การประชุมแบบเปิด ตั้งรหัสผ่านใหม่</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>โปรดกรอกวันที่ที่ถูกต้อง ตัวอย่างเช่น 24/12/2001 (วว/ดด/ปปปป)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>โปรดกรอกอีเมล์ที่ถูกต้อง ตัวอย่างเช่น name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>โปรดกรอกตัวเลขที่มีจุดทศนิยม เช่น 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>โปรดกรอกตัวเลข (จำนวนเต็ม) ตัวอย่างเช่น 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>โปรดกรอกหมายเลขโทรศัพท์ที่ถูกต้อง ตัวอย่างเช่น ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>โปรดกรอกเวลาที่ถูกต้อง เช่น 12.33 (ชช.นน)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>ป้องกันรหัสผ่านแล้ว</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>รหัสผ่าน</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>ระยะเวลาที่ใช้การได้</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>ไม่จำกัด</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>จำกัดระยะเวลา</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>ใช้ครั้งเดียว</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>ใช้งานได้ตั้งแต่:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>ถึง:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>คำเชิญเข้าสู่การประชุมแบบเปิด</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>ไม่มีคำเชิญสำหรับรหัสคำเชิญนี้</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>คำเชิญนี้ใช้ไปแล้ว คำเชิญประเภทนี้ไม่สามารถใช้ซ้ำได้</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>รหัสคำเชิญนี้ไม่ถูกต้อง</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>รหัสผ่าน:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>ตรวจสอบรหัสผ่าน</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>รหัสผ่านไม่ถูกต้อง!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>เสียง_ภาพวีดีโอ</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>ซิงค์โครไนซ์เสียง/ภาพวีดีโอ</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>ล็อคอินถูกต้อง แต่หมวดที่คุณล็อกอินนั้นไม่ได้ใช้งานอยู่หรือไม่ได้จัดเก็บไว้ในเซิร์ฟเวอร์ คุณจะต้องขอหมายเลขประจำหมวดใหม่และลองล็อกอินอีกครั้ง</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>ยังไม่ได้ล็อคอินหมายเลขประจำหมวดหรือไม่มีสิทธิ์ของผู้ดูแล SOAP Gateway จำเป็นต้องใช้ผู้ใช้ที่สิทธิ์ของผู้ดูแลในการฝากฝังผู้ใช้รายใหม่</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>หมวดนี้ไม่มีการเชื่อมต่อข้อมูลผู้ใช้ระยะไกล อาจเป็นเพราะว่าคุณไม่ได้เรียก SOAP-Gateway ก่อนที่จะเข้าใช้โปรแกรมหรือว่าคุณใช้หมายเลขประจำหมวดผิด</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>ตัวบันทึกในปัจจุบันอยู่ในช่วงทดลองใช้!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>แกน x</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>แกน y</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>กว้าง</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>ความกว้าง</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>สูง</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>ความสูง</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>เปลี่ยนความโปร่งแสง</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>เปิดเบราวเซอร์</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>ปิดเบราวเซอร์</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>การเชื่อมต่อกับเซิร์ฟเวอร์ขาดลง คุณจำเป็นต้องโหลดโปรแกรมใหม่หรือ/และตรวจสอบเครือข่ายของคุณ</value>
+  </string>
+  <string id="557" name="557">
+    <value>พอยเตอร์</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>กำลังซิงค์โครไนซ์</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>กำลังซิงค์โครไนซ์กับผู้ใช้ โปรดรอสักครู่</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;ดาวน์โหลดเป็น SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;ดาวน์โหลดเป็น PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;ดาวน์โหลดเป็น JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;ดาวน์โหลดเป็น PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;ดาวน์โหลดเป็น TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>เตือนความจำ:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>ประเภท:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>การทำซ้ำ:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>ไม่มี</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>สถานที่ตั้ง:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>เริ่ม</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>สิ้นสุด</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>หัวข้อ:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>ข้อคิดเห็น:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>เชิญผู้อื่น</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>รายวัน</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>รายเดือน</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>รายปี</value>
+  </string>
+  <string id="578" name="alert">
+    <value>การสิ้นสุดการนัดต้องเป็นหลังจากการเริ่มต้นการนัด!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>โปรดแทรกหัวข้อ!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>เปิดใช้งานส่วนนี้หากภาษาที่คุณใช้เป็นแบบขวาไปซ้าย (การเรียงคำกลับกัน)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>แดชบอร์ด</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>ชมการประชุมและงานอีเวนท์ที่บันทึกไว้</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>การประชุม - เปิดการประชุมตั้งแต่ผู้ใช้ 4 รายขึ้นไป (มากที่สุด 16 ราย)&lt;br/&gt;ทุกท่านสามารถเข้าใช้เสียง + ภาพวีดีโอได้</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>งานอีเวนท์ - เปิดการประชุมโดยมีผู้เข้าร่วมได้มากที่สุด 200 ราย&lt;br/&gt;ผู้ดำเนินรายการเท่านั้นที่สามารถใช้เสียง/ภาพวีดีโอได้</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>สร้างผู้ใช้ ห้อง องค์กร&lt;br/&gt; + เปลี่ยนการปรับแต่งค่า</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/timezones.xml b/src/main/webapp/languages/timezones.xml
new file mode 100644
index 0000000..76302fc
--- /dev/null
+++ b/src/main/webapp/languages/timezones.xml
@@ -0,0 +1,97 @@
+<?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.
+  
+-->
+<timezones xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="timezones.xsd">
+	<!-- 
+		This file is loaded during installation to the database table "om_timezones" of OpenMeetings. 
+		Changes at runtime to this file have no effect to OpenMeetings.
+	
+		Attributes:
+	
+		1) orderId
+		The orderId is just an indicator for the position in the drow down box inside 
+		OpenMeetings UI, there can be duplicates
+		However the order in the XML should be correct cause the Web-installer/CLI-Installer
+		will display the timezones exactly in the order of the XML.
+		
+		2) name
+		A common name in short
+		
+		3) label
+		Long name, displayed in UI
+		
+		4) iCal
+		this is the actual name, OpenMeetings will use to match again Java's timezones 
+		(http://docs.oracle.com/javase/6/docs/api/java/util/TimeZone.html)
+		
+		to get all available id that are available in your Java JRE see:
+		http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/timezone/TestGetIds.java
+		
+		For updating the JRE runtime with different tz-file, see:		
+		http://www.oracle.com/technetwork/java/javase/timezones-137583.html
+	 -->
+    <timezone orderId="0" name="Etc/GMT+13" label="Samoa" iCal="Pacific/Apia" />
+	<timezone orderId="1" name="Etc/GMT+12 (New Zealand)" label="New Zealand" iCal="Pacific/Auckland" />
+    <timezone orderId="1" name="Etc/GMT+12" label="Kiribati (Gilbert Islands), Fiji, Russia (Kamchatka Krai)" iCal="Pacific/Fiji" />
+    <timezone orderId="2" name="Etc/GMT+11" label="Vladivostok, Kamchatka, Solomon Islands, New Caledonia" iCal="Asia/Vladivostok" />
+    <timezone orderId="3" name="Etc/GMT+10 (Australia/NSW)" label="Australia (NSW,Sydney,Tasmania), Yakutsk" iCal="Australia/Sydney" />
+    <timezone orderId="3" name="Etc/GMT+10 (Australia/Queensland)" label="Russia (Zabaykalsky Krai), Papua New Guinea, Australia (Queensland)" iCal="Australia/Queensland" />
+    <timezone orderId="3" name="Etc/GMT+10" label="Lord Howe Island - Australia GMT+10:30" iCal="Australia/Lord_Howe" />
+    <timezone orderId="4" name="Etc/GMT+9 (Japan)" label="Japan/Korea Standard Time, Irkutsk, East Timor" iCal="Asia/Tokyo" />
+    <timezone orderId="4" name="Etc/GMT+9 (Australia-North)" label="Australia (Nothern Territory,Darwin) GMT+9:30" iCal="Australia/Darwin" />
+    <timezone orderId="4" name="Etc/GMT+9 (Australia-South)" label="Australia (Southern Territory,Adelaide) GMT+9:30" iCal="Australia/Adelaide" />
+    <timezone orderId="5" name="Etc/GMT+8" label="China Standard Time, Krasnoyarsk, Philippines, Singapore" iCal="Asia/Singapore" />
+    <timezone orderId="6" name="Etc/GMT+7" label="Novosibirsk, Indochina Time, Thailand, Vietnam, Jakarta" iCal="Asia/Jakarta" />
+    <timezone orderId="7" name="Etc/GMT+6" label="Yekaterinburg, Almaty, Bangladesh" iCal="Asia/Yekaterinburg" />
+    <timezone orderId="8" name="IST" label="Indian Standard Time GMT+5.30" iCal="Asia/Kolkata" />
+    <timezone orderId="9" name="Etc/GMT+5" label="Uzbekistan, Pakistan, Maldives" iCal="Asia/Karachi" />
+    <timezone orderId="10" name="Asia/Kabul" label="Kabul GMT+4.30 " iCal="Asia/Kabul" />
+    <timezone orderId="11" name="Etc/GMT+4" label="Moscow, Saint Petersburg, Georgia, Armenia, Azerbaijan, United Arab Emirates" iCal="Europe/Moscow" />
+    <timezone orderId="12" name="Asia/Tehran" label="Tehran GMT+3.30" iCal="Asia/Tehran" />
+    <timezone orderId="13" name="Etc/GMT+3" label="Kaliningrad, Minsk, Iraq, Saudi Arabia" iCal="Europe/Kaliningrad" />
+    <timezone orderId="14" name="Etc/GMT+2" label="Finland, Lithuania, Belarus, Ukraine, Romania, Bulgaria" iCal="Europe/Helsinki" />
+    <timezone orderId="14" name="Etc/GMT+2" label="Libya, Egypt, South Africa, Zimbabwe" iCal="Africa/Cairo" />
+    <timezone orderId="15" name="Etc/GMT+1" label="France, Germany, Spain, Italy" iCal="Europe/Berlin" />
+    <timezone orderId="15" name="Etc/GMT+1 (North Africa)" label="Angola, Cameroon, Nigeria, Tunisia" iCal="Africa/Tunis" />
+    <timezone orderId="16" name="Etc/GMT" label="Iceland, United Kingdom, Ireland" iCal="Europe/London" />
+    <timezone orderId="16" name="Etc/GMT (North Africa)" label="Côte d'Ivoire, Faroe Islands, Ghana, Iceland, Senegal" iCal="Africa/Dakar" />
+    <timezone orderId="17" name="Etc/GMT-1" label="Azores, Cape Verde" iCal="Atlantic/Cape_Verde" />
+    <timezone orderId="18" name="Etc/GMT-2" label="Fernando de Noronha" iCal="America/Noronha" />
+    <timezone orderId="19" name="Etc/GMT-3 (Brazil)" label="Brazil (Brasília, Rio de Janeiro, São Paulo), most of Greenland, Uruguay" iCal="America/Sao_Paulo" />
+    <timezone orderId="19" name="Etc/GMT-3" label="Argentina, Paraguay" iCal="America/Buenos_Aires" />
+    <timezone orderId="19" name="Etc/GMT-3:30" label="Canada GMT+3:30" iCal="CNT" />
+    <timezone orderId="20" name="Etc/GMT-4" label="Nova Scotia, Dominican Republic, Puerto Rico, Santiago" iCal="America/Santiago" />
+    <timezone orderId="20" name="Etc/GMT-4:30" label="Venezuela GMT+4:30" iCal="America/Caracas" />
+    <timezone orderId="21" name="Etc/GMT-5 (New York)" label="Ottawa, Toronto, Montreal, Boston, New York" iCal="America/New_York" />
+    <timezone orderId="21" name="Etc/GMT-5" label="Colombia, Cuba, Ecuador, Haiti, Jamaica, Panama, Peru" iCal="America/Jamaica" />
+    <timezone orderId="22" name="Etc/GMT-5 (Panama)" label="Panama Port-au-Prince" iCal="America/Panama" />
+    <timezone orderId="23" name="Etc/GMT-6 (Chicago)" label="Chicago, Dallas" iCal="America/Chicago" />
+    <timezone orderId="24" name="Etc/GMT-6" label="Costa Rica , El Salvador, Guatemala, Honduras" iCal="America/El_Salvador" />
+    <timezone orderId="24" name="Etc/GMT-6 (Illinois)" label="Canada (Manitoba), United States (Illinois, most of Texas)" iCal="America/Chicago" />
+    <timezone orderId="25" name="Etc/GMT-7 (Phoenix)" label="Alberta, Colorado, Phoenix" iCal="America/Phoenix" />
+    <timezone orderId="26" name="Etc/GMT-7 (Colorado)" label="Canada (Alberta), Mexico (Chihuahua), USA (Colorado)" iCal="America/Denver" />
+    <timezone orderId="26" name="Etc/GMT-7" label="Canada (northeastern British Columbia), Mexico (Sonora), USA (Arizona)" iCal="America/Phoenix" />
+    <timezone orderId="27" name="Etc/GMT-8" label="Vancouver, Portland, Las Vegas, California" iCal="America/Los_Angeles" />
+    <timezone orderId="28" name="Etc/GMT-9" label="Anchorage, Fairbanks, Juneau" iCal="America/Juneau" />
+    <timezone orderId="28" name="Etc/GMT-9 (Alaska)" label="United States (most of Alaska)" iCal="US/Alaska" />
+    <timezone orderId="29" name="Etc/GMT-10" label="Hawaii" iCal="Pacific/Honolulu" />
+    <timezone orderId="30" name="Etc/GMT-11" label="Samoa" iCal="Pacific/Apia" />    
+</timezones>
diff --git a/src/main/webapp/languages/timezones.xsd b/src/main/webapp/languages/timezones.xsd
new file mode 100644
index 0000000..d693ab3
--- /dev/null
+++ b/src/main/webapp/languages/timezones.xsd
@@ -0,0 +1,37 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="timezones">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="timezone"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="timezone">
+    <xs:complexType>
+      <xs:attribute name="iCal" use="required"/>
+      <xs:attribute name="label" use="required"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="orderId" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/languages/turkish.xml b/src/main/webapp/languages/turkish.xml
new file mode 100644
index 0000000..1c10e29
--- /dev/null
+++ b/src/main/webapp/languages/turkish.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>konferans</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>toplantı</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Etkinlikler</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Ayarlar</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Profil</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Yönetim</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Dur</value>
+  </string>
+  <string id="8" name="record">
+    <value>Kayıt</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Kullanılabilir dosya yok</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Öğretmene Göre Kayıt</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Bağlı kullanıcılar:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Bir konferans başlat</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Benim Adım</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Görüntülü Konferans</value>
+  </string>
+  <string id="15" name="import">
+    <value>Dosya Yükleme</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Listeyi Yenile</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>Ana Dosyaya</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Yeni Anket</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Konferans için yeni bir anket.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Soru:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Anket tipi:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Yarat</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Bilgi: Bağlı her kullanıcı yeni anketle ilgili bir mesaj alır.</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Bir anket yarat</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>İptal</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Evet/Hayır</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>Sayısal 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Anket</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Soru oluşturabilmek için Düzenleyici olmanız gerekmekte</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Oyunuz kaydedildi.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Bu anket için zaten oy kullanmıştınız.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Oyla !</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Sizin yanıtınız:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Evet</value>
+  </string>
+  <string id="35" name="no">
+    <value>Hayır</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Sonuçları gör:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Anket sonuçları</value>
+  </string>
+  <string id="38" name="question">
+    <value>Soru:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Sonuçlar:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Cevaplar:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>Başlamış olan anket yok.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Oyla!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Toplantı (en fazla 4 yer)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Konferans (en fazla 50 yer)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Tip</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Diğer yerler</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Halihazırda seçili</value>
+  </string>
+  <string id="48" name="enter">
+    <value>giriş</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Düzenleyici toplantıyı terk etti.</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Sistem bilgisi</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Araç seçiniz</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Web Kamerası seçiniz:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Mikrofon seçiniz:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>tamam</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>iptal</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Yeniden bağlanmanız gerekmekte.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Ayarları düzenle.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Ders:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Dil:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>tamam</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>iptal</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Tahtayı temizle</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Yeni resim eklenmeden önce tahtanın temizlenmesini istiyor musunuz?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>Tekrar sormayın</value>
+  </string>
+  <string id="65" name="no">
+    <value>no</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Ayarları düzenle</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Tahtanın temizlenmesinden önce onay başvurusu.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Kullanıcı Bilgisi</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Çizim alanını temizle</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Geri al</value>
+  </string>
+  <string id="71" name="redo">
+    <value>İleri al</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Bir Nesne Seçin</value>
+  </string>
+  <string id="73" name="text">
+    <value>Metin</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Boyama</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Çizgi çiz</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Altını çiz</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Dikdörtgen</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Elips</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Ok</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Seçili öğeyi sil</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Düzenleme için uygula</value>
+  </string>
+  <string id="82" name="apply">
+    <value>uygula</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>iptal</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Düzenleyici ol</value>
+  </string>
+  <string id="85" name="close">
+    <value>kapat</value>
+  </string>
+  <string id="86" name="italic">
+    <value>eğik</value>
+  </string>
+  <string id="87" name="bold">
+    <value>kalın</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>BEKLİYOR</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Düzenleyicilik için bir kullanıcı bekleniyor:</value>
+  </string>
+  <string id="90" name="accept">
+    <value>onay</value>
+  </string>
+  <string id="91" name="reject">
+    <value>reddet</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>iptal</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Bu kullanıcılar için istek gönder</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Onaylandı</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Reddedildi</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Düzenleyiciyi Değiştir</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Bu dersin düzenleyicisi değilsiniz!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Düzenleyici:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Bu oda dolu. Lütfen daha sonra yeniden deneyiniz.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Elips</value>
+  </string>
+  <string id="101" name="close">
+    <value>kapat</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>veri giriş hatası</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>4 ya da daha fazla karakter; büyük-küçük harfe duyarlı!</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Kullanıcı şifresi en az 4 karakter olmalıdır</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Bu kullanıcı adı alınmış</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Bu e-posta adresi zaten kayıtlı</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Sistem hatası. Lütfen sistem yöneticileri ile bağlantıya geçiniz.</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Oturum Aç</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Kullanıcı Adı:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Şifre:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Dil</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Giriş Yap</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Kayıt Ol</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Kullanıcı Adı:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Şifre:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Yeniden Yazın:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Ad:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Soyad:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-posta:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Ülke:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Kayıt</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>İptal</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Üye değil misiniz?</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>Ev</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Kullanıcılar</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Gruplar</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Kurumlar</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Toplantı-Odaları</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>herkese açık</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Kurum</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>giriş</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Oturum Aç</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Şifre</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Yeniden yaz</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Ad</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Soyad</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Posta</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Doğum günü</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Cadde/No</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>ZIP/Şehir</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Ülke</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Adres</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Kullanıcı bilgisi</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>kaydet</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Kaydet</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Kullanıcı kodu</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Oturum aç</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Ad</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Soyad</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>sonrakini göster</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>öncekini göster</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>kaydı sil</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>iptal</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>sil</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>yeni kayıt</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>kayıt yenile</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>kayıt sil</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>durum</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>devre dışı</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>etkin</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Kurumlar</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>takvim</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>kapat</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Kurum Kodu</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Ad</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Kullanıcı</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Düzenleyici</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Yönetici</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>kullanıcı seviyesi</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Kurum</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>ad</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>kurum ekle</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>kurum ekle</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>iptal</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>ekle</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>kurumu kaldır</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>kullanıcı</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>kullanıcı ekle</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>kullanıcı sil</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>kullanıcı ekle</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>kullanıcı ara</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>ara</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>kullanıcı</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Kurum</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>giriş</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Konferans Odaları</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Konferans Odaları</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>kod</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Ad</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>herkese açık</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Kurumlar</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Toplantı Odaları</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Ad</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Tip</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Herkese Açık</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Yorum</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>kaydet</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>yükle</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>farklı kaydet</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Dosya adı</value>
+  </string>
+  <string id="201" name="files">
+    <value>dosya adı</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>iptal</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>kaydet</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>hata</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>yükleniyor</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>nesneler yüklendi</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>istemciler senkronize oluyor, bekleyen istemciler:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>İmaj verisi yükleniyor</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>istemciler senkronize oluyor, bekleyen istemciler:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>çizim alanını temizle</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>çizim alanını temizle, tahtadaki tüm bilgiler silinecek</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Dosyayı yollamadan önce onaylayınız</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Davet gönder</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Davet gönder</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Konu</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Alıcı</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Mesaj</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Yolla</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>İptal</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>gönder</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Kullanıcı verisi</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Bu konferans için takma adınız</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Takma Ad</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Ad</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Soyad</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-posta</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Dil</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>giriş</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Yükleniyor</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Veri yükleniyor, lütfen bekleyin!</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Hatalı Şifre</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Lütfen en az 6 karakter içeren birbiri ile aynı iki şifre giriniz</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Hatalı E-posta</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Hatalı bir e-posta adresi girdiniz</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Kayıt Başarılı</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Hesabınız oluşturuldu, oturum açabilirsiniz.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Şu anda ekranınızı paylaşamazsınız. Başka biri hâlihazırda ekranı paylaşmış.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Paylaşıma izin yok</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Ekranı Paylaş</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Düşük Bağlantı Hızı: Ekranınız senkronize edilemiyor. Görüntüler atlanacak. Eğer bu uyarıyı almaya devam ederseniz, düzenleyiciden kaliteyi düşürmesini isteyebilirsiniz.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Ekranı:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Boyama</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Doküman</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Sohbet</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Dosyalar</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Üyeler</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Orijinal dokümanı indir</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>PDF dokümanı indir</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Sunumu tahtaya yükle</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Konfigürasyon</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Bu nesneyi bırak</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Bu nesneyi boyutlandır</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>of</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>İlk sayfaya git</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>Önceki sayfaya git</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>Sonraki sayfaya git</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>Son sayfaya git</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Uzaklaştır --</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Yakınlaştır ++</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>Sayın</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>Sayın</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Konfigürasyon</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>KOD</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Anahtar</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Konfigürasyon</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Anahtar</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>son güncelleme</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>güncellemeye göre</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>yorum</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Değer</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>of</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Kullanıcılar</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>kullanıcıyı kurumdan sil</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>sil</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Bu kullanıcı hâlihazırda bu grubun bir üyesi.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Haberler</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Hızlı Bağlantılar</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>Konferansa git</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>Oditoryuma git</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>yardım ve Destek</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Hata bildir!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>daha fazlası</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Proje Web Sitesi (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>Kullanıcı E-Posta Listesi (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Oturumu Hatırla</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>İçerik</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Ana Sayfam</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Planlanmış Toplantılarım</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Planlanmış Etkinliklerim</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Herkese Açık Toplantılar</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Özel Toplantılar</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Herkese Açık Etkinlikler</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Özel Etkinlikler</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Herkese Açık İçerik</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Özel İçerik</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Kişisel İçerik</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Düzenleme</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Düzenleyicilik için onay</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Anketler</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Bir dosya seçin</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Ayarlar</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Kamera ve Mikrofon Ayarları</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Tahta Ayarları</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Çıkış</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Odalara geri dön</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Oturumu Kapat</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Şifreyi Unut?</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Şİfreyi Sıfırla</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>E-postaya göre</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Oturuma göre</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Postanız</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Oturumunuz</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Sınıflama bağlantısı ile e-posta gönder</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>E-posta adresi bulunamadı. Kayıt esnasında kullandığınız e-posta adresini girdiğinizden emin olun.</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Lütfen bir e-posta adresi ya da bir kullanıcı adı giriniz</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Bu kullanıcı adı ile bağlanmış bir kullanıcı yok</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>Özel bir bağlantıya sahip olan bir e-posta, e-posta adresinize yollanmış durumda. Lütfen posta kutunuzu kontrol edin. Eğer e-posta mesajını alamazsanız, lütfen posta kutunuzun gereksiz posta ayarlarını kontrol edin ve/veya yeniden doğrulama mesajının gönderilmesini sağlayın.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Hata</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Mesaj</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Geçersiz Komut. Hiçbir Kullanıcı Bulunamadı.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Şifrenizi Sıfırlayın</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Oturum Aç</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>Şifre değiştir</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Yeni Şifre</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Şifrenizi yeniden girin</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Girmiş olduğunuz şifreler birbiri ile aynı değil.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>4 ya da daha fazla karakter; büyük-küçük harfe duyarlı!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Şİfre belirlendi. Şuan oturum açabilirsiniz.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>TAMAM</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Bilinmeyen Hata. Lütfen bu durumu sistem sorumlusuna rapor ediniz.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Kullanıcı adı bulunamadı</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Geçersiz Şifre</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Oturum başarıyla kapatıldı</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Geriplan kayıt işlemi devre dışı.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Geçersiz E-posta</value>
+  </string>
+  <string id="340" name="registration">
+    <value>yinelenen dosya adı, lütfen farklı bir dosya adu seçiniz</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>dosya adı çok kısa</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Adres kayıt edilemiyor</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Kullanıcı eklendi fakat kullanıcıyı bir kuruma atamanız gerekmekte, aksi halde oturum açması mümkün olamayacak.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Yeni Kayıt</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Bu alan kodu ile bir alan bulunamadı.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Bu alan için etiket bulunamadı.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Yönetici oturumu gerekmektedir</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Dil Düzenleyicisi</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Dil</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>Etiket-Kodu</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>Etiket-Adı</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Değer</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Alan değerleri</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>EtiketAdı</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>EtiketDeğeri</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>Etiket-Kodu</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Sadece etiketi sildiniz, alanı değil! Alanı silemezsiniz; diğer dillerde etiketleri bulunmakta.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Geçersiz EtiketKodu. Dil alanı değer kodu (FieldLanguagesvalues_Id) veritabanında bulunamıyor.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Bu alanı silemezsiniz. Sadece etiketleri silebilirsiniz, alanları değil. Şu anda yüklenmiş olan bir etiket yok, herhangi bir alan seçilmemiş ya da tanımlanmış bu alan için bu dilde etiket yok.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>ihraç</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Değişiklikleri görebilmeniz için oturumu kapatmanız gerekmektedir.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Yeni dil ekle</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>dil sil</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Yeni dil ekle</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Ad</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>dil ekle</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Yedekleme</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>ilke git</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>öncekine git</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>sonrakine git</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>sonuncuya git</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>kullanıcı konuşuyor (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>sesi aç/kapa</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Sistem</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Ayarlarınız</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>selam,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Profilinizi düzenleyin</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Yeni Mesaj:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Yeni resim yükle</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Kullanıcı verisi - İhraç Et</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Tüm kurumlar daha önceden oluşturulmuş olmalı!</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>ihraç (export) işlemine başla</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>Kuruma göre</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>ihraç (export) işlemine başla</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Kullanıcı verisi - Import</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>users.xml dosyasını seç</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>ithal et (import)</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>XML olarak ihraç et - Bu dosyalar şu amaçlar için kullanılabilir: - Projeye katılmak - Bilgileri başka bir sisteme aktarmak - Yedekleme - Özelleştirme - Bir sonraki yüklemede dil klasörünün içine koymak için.</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>İthal (import) etmek istediğiniz dil dosyasını seçiniz. Açılan kutudan doğru dili seçiniz! Dosyanın adı önemli değildir, bu dilin içine ithal edilecektir!</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>ithal et - dosya seç</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Farklı kaydet</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Ad:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Yorum:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>kaydet</value>
+  </string>
+  <string id="395" name="record">
+    <value>Kayıtlar</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Kayıt Görüntüleyicisi</value>
+  </string>
+  <string id="397" name="record">
+    <value>Genel (herkese açık) ve Özel Odaların kayıtları</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Kullanıcılar :</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Katılanlar:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Bu odadaki kullanıcılar:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>yenile</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Bu oda dolu. Bir kaç dakika içinde yeniden deneyiniz.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Detaylı bilgi için bir odanın üzerine tıklayınız</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Bu odanın içindeki kullanıcılar ile sohbet et:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Oda:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Bu odadaki kullanıcılar:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>den beri:</value>
+  </string>
+  <string id="409" name="record">
+    <value>kaydı oynat</value>
+  </string>
+  <string id="410" name="record">
+    <value>Uzunluk:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Tarih:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Kaydedici Kipi! Hiçbir ayarı değiştiremezsiniz, bu kaydedilmiş bir dosyadır!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Bu kaydı onat</value>
+  </string>
+  <string id="414" name="record">
+    <value>Oynat / Durdur</value>
+  </string>
+  <string id="415" name="record">
+    <value>Kaydı başlat</value>
+  </string>
+  <string id="416" name="record">
+    <value>kaydı durdur</value>
+  </string>
+  <string id="417" name="record">
+    <value>Kayıt:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>Şu an zaten biri kayıtta:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Kayıt! Kullanıcıya göre:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>iptal</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Kayıt iptal edilecek ve kaydedilmeyecek.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>devam et</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Bu pencereyi kapat ve kayda devam et</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Çizgi rengini değiştir</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Renk seç</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Çizgi rengini Devre Dışı Bırak / Etkinleştir</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>İç rengi değiştir</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>İç rengi Devre Dışı Bırak / Etkinleştir</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Çizgi genişliğini değiştir</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>kapat</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Yazı tipini değiştir</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Kaydı Sil</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Misafir</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>Göre:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Ad</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Oda</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Tarih</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>iptal</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>başlat</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Ad</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Tarih</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Sunucu sohbet kayıtlarını sil</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Sohbet</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Mesaj yolla</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Yüz İfadeleri</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>İfadeler</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Yayınlanmış Araçları Seç</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Ses ve Görüntü</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Sadece Ses</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Sadece Görüntü</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>Ses Görüntü yok (sabit resim)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Bilgisayarınız tarafından yayınlanabilecek olan ses / görüntü bulunmamaktadır, bunun yerine profilinizde yer alan resim kullnılacaktır. Bu seçeneği bant genişliğinizde bir sorun varsa ya da İnternet bağlantınız çok yavaşsa tercih ediniz.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>PZT</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>SAL</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>ÇAR</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>PER</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>CUM</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>CMT</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>PAZ</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Pazartesi</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Salı</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Çarşamba</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Perşembe</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Cuma</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Cumartesi</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Pazar</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>TH</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Takvim hafta</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Ocak</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Şubat</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Mart</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Nisan</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Mayıs</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Haziran</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Temmuz</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Ağustos</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Eylül</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Ekim</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Kasım</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Aralık</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Takvim</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Katılımcılar</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Mizanpaj Ayarlarını Göster</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Genişlik | Yükseklik</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Video-Gösterici</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Düzenleyici-Gösterici</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Tahta-Gösterici</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Etkin</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Genişlik | Yükseklik</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Dosyalar,Sohbet,Katılımcı-Gösterici</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Etkin</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Genişlik | Yükseklik</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Düzenleyici odayı terk etti. Şu anda sunum yapan kimse yok. Düzenleyicilik için başvuruda bulunabilirsiniz ya da bekleyebilirsiniz.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Odada bir Düzenleyici yok, fakat bazı katılımcılar var. Düzenleyicilik için başvuruda bulunabilirsiniz ya da bekleyebilirsiniz.</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>$APP_NAME geribildirim</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Davet</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Kullanıcıdan Mesaj:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Mesaj:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Toplantıya katılmak için linke tıklayınız:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Odaya girmek için buraya tıklayınız</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Bağlantı (link) ile ilgili probleminiz varsa, lütfen bağlantıyı kopyalayarak tarayıcınızın adres çubuğuna yapıştırınız:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME Kayıt</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Kullanıcı verileriniz:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Kullanıcı Adı:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Şifre:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-posta:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>$APP_NAME-Takımı</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Kayıt Ol</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Şifre Sıfırla</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Yeni bir şifre girmek için bağlantıya tıklayınız:</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Yeni bir şifre girmek için buraya tıklayınız</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>bu bağlantı (link) ile ilgili probleminiz varsa, lütfen bağlantıyı kopyalayarak tarayıcınızın adres çubuğuna yapıştırınız:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>$APP_NAME Şifre Sıfırla</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Lütfen geçerli bir tarih girin, örnek olarak 25.06.2005 (gg.aa.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Lütfen geçerli bir e-posta adresi girin, örnek olarak ad@posta.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Lütfen Float-Sayı giriniz, örnek olarak 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Lütfen bir tamsayı giriniz, örnek olarak 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Lütfen geçerli bir telefon numarası giriniz, örnek olarak ++90 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Lütfen geçerli bir saat bilgisi giriniz, örnek olarak 12:23 (ss:dd)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Şifre korumalı</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Şifre</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Geçerlilik periyodu</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Süresiz</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Periyot</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Bir kerelik</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Oturum başlangıcı:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Oturum sonu:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>$APP_NAME'e Davet</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Bu davet kodu için geçerli olan bir davet yok.</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Bu davet halihazırda kullanılmakta. Bu bip bir davet tekrar kullanılamaz.</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Bu davet kodu geçerli değil.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Şifre:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Şifre Kontrol</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Geçersiz Şifre!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Ses-Görüntü</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Ses/Görüntü Senkronizasyonu</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Kullanıcı adı doğru, fakat girmeye çalıştığınız oturum aktif durumda değil ya da sunucuda depolanmış. Yeni bir oturum kodu almalısınız ve yeniden oturum açmalısınız.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>Oturum kodu kayıtlı değil ya da yönetici haklarına sahip değil. SOAP Gateway yeni bir kullanıcı ekleyebilmek için yönetici haklarına sahip bir kullanıcıya ihtiyaç duyar.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>Bu oturum uzak kullanıcı veri bağlantısı içermiyor. Uygulamaya girmeden veya yanlış oturum kodu ile SOAP-Gateway araması yapamazsınız.</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>Kaydedici halen Beta versiyonunda!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-ekseni</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-ekseni</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>g</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>genişlik</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>y</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>yükseklik</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Transparanlığı değiştir</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Tarayıcı Aç</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Tarayıcı Kapat</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>Şunucuyla bağlantı kesildi. Uygulamayı yeniden yüklemeli veya Ağ Bağlantısını kontrol etmelisiniz.</value>
+  </string>
+  <string id="557" name="557">
+    <value>İmleç</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Eşitliyor…</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Kullanıcıları eşitliyor, lütfen bekleyiniz</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;SVG Olarak Yükle&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;PNG Olarak Yükle&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;JPG Olarak Yükle&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;PDF Olarak Yükle&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;TIF Olarak Yükle&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Hatırlatıcı:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Kategori:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Tekrar:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>hiçbiri</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Konum:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Baş</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>Son</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Başlık:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Yorum:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Kişi Davet Et</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Günlük</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Aylık</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yıllık</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Yetkilendirme sonu yetkilendirme başından sonradır!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Lütfen bir başlık giriniz!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Sağdan sola yazım modunu açmak için bunu aktifleştirin</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Pano</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Kayıtlı Görüşmeleri İzle</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Görüşme – 4 kişilik konferans oluştur (en fazla 16 kişi) &lt;br/&gt;herkes ses + görüntü yayın hakkına sahip</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Etkinlik – 200 katılımcılı konferans ayarla&lt;br/&gt;Sadece düzenleyici ses ve görüntü yayın hakkına sahip</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Kullanıcıları, odaları ve organizasyonları oluştur &lt;br/&gt; + yapılandırmayı değiştir</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Kullanıcılar şu anda bu odada</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Giriş</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Belge Yükleniyor. Tüm istemciler eşitleninceye kadar lütfen bekleyiniz.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Aktarım tamamlandı, belge dönüştürülüyor ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Aktarımı Başlat</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Aktarım ve Yükleme Penceresi. Lütfen Diskinizden bir Dosya seçiniz.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>İptal</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Dosya Seç</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Bağlantılar</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Değer</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Yayın_ID</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Giriş</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Bağlantı zamanı</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Oda / Kapsam</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kullanıcıyı At</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Bu istemciyi bağlantıdan çıkarmak istediğinize emin misiniz?&lt;br/&gt;Bu işlem sadece uyarı amaçlıdır ve kullanıcının odaya yeniden giriş yapmasını engellemez.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Oturumunuz Yönetici veya Düzenleyici tarafından sonlandırıldı.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Telefon</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>Kullanıcı bu Oda’nın Düzenleyicisi</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>Kullanıcı Karatahtayı düzenleme hakkına sahip</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>Ses/Görüntüyü (Yeniden) Başlat veya Aygıt Ayarlarını değiştir</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Bu kullanıcının Karatahtayı kullanmasına izin ver</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Kullanıcının Karatahtayı kullanmasını engelle</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Kullanıcılar</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Dosyalar</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Karatahta</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Sohbet</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Hesabınız pek çok Organizasyonla ilişkilendirilmiş. Bu oturum için lütfen birini seçiniz.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>Bu oda şu anda dolu; lütfen daha sonra tekrar deneyiniz.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Oda Tipi</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Randevu Odası</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Sunucu Zamanı</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Hatırlatıcı</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Kullanıcıdan Mesaj:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Mesaj:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Görüşmelere katılmak için bu bağlantıyı tıklayınız:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Odaya giriş için burayı tıklayın</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>bağlantıyı tıklamakla ilgili sorun yaşıyorsanız kopyalayıp gezgin penceresine yapıştırabilirsiniz:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>iç kullanıcılar</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>dış kullanıcılar</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>ön ad</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>ad</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-Posta</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Oturum kapatmayı onayla</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Oturumu kapatmak istediğinize emin misiniz?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Eylemler</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Odası</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Zamanı</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Görüşme İçin Kalan Zaman</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>Bu Oda bir Demo Odası’dır. Bu uyarıyı almak istemiyorsanız özel bir oda alabilir veya kendinize özel bir sunucu ayarlayabilirsiniz. Oturumunuzun otomatik kapatılma zamanı:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Dengeli</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Düzenleyici odaya girinceye kadar lütfen bekleyiniz. Düzenleyici olarak anılan kişi Düzenleyici, Yönetici veya odayı oluşturan kişi olabilir.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Tamam</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Ekran Paylaşımı Başlıyor</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>Kullanıcı Ekran Paylaşımı uygulamasını başlatıyor:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Paylaşımı Başlat</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Yeni bir Görüşme ekle</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Görüşme Odası</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Etkinlik Odası</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Düzenleme</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Kullanıcıları Düzenle</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Odaları Düzenle</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Bu kullanıcının organizasyonun Düzenleyicisi olmasını istediğinize emin misiniz?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Kullanıcıyı bir Organizasyona eklemeden önce lütfen listeden bir tane Organizasyon seçiniz!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organizasyon - Düzenleyici</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Bu kullanıcıyı Organizasyondan silmek istediğinize emin misiniz?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>Bu Kullanıcı Düzenleyici</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>Bu Kullanıcı Düzenleyici Değil</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Bu kullanıcının Organizasyonda Düzenleyici Olmamasını İstediğinize Emin Misiniz?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Kullanıcıları Organizasyona ekle veya Organizasyondan sil</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Bu kaydı silmek istediğinize emin misiniz?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Bu kullanıcıyı organizasyondan silmek istediğinize emin misiniz? Bu kullanıcıyı sadece organizasyondan silersiniz. Eğer kullanıcıyı tamamen silmek istiyorsanız Yönetici-Panelinden giriş yapmalısınız.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>Kendi kullanıcınızı silemezsiniz!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>Bu yöntem Yönetici hakları erişimini gerektirir!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>Bu ID ile ilişkilendirilmiş Oturum bulunmamaktadır.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>Bu bir Yönetici veya Düzenleyici hesabı. Bu hesabı sadece Yönetici Panelinden düzenleyebilirsiniz.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>Kaydınızı tamamlamak için lütfen bağlantıyı tıklayın ya da tarayıcı adres çubuğuna kopyalayıp oradan açın.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>E-Postanızı Onaylamak İçin Tıklayınız</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Bu Hash bilgisine uyan hiçbir kullanıcı bulunamadı.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Bu kullanıcı zaten aktif edildi!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Hesabınızı başarıyla aktifleştirdiniz!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Giriş Yap</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Hesabınız aktifleştirilmedi. Kayıt sırasında vermiş olduğunuz E-Postanıza gelen bağlantıyı tıklayarak aktivasyon işlemini tamamlayınız.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>Kaydınız başarıyla tamamlandı. Vermiş olduğunuz e-posta adresinize hesabınızı aktifleştirmek için ileti gönderdik. İletideki bağlantıyı açarak hesabınızı aktifleştirebilirsiniz.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Bu Kullanıcının Düzenleyici Yetkisini İptal Et</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Bu Kullanıcıya Düzenleyici Yetkileri Ver</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>Kullanıcı</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Karatahtaya eriş</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Düzenleyici</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Düzenleme: Lütfen kendisine Karatahtaya Erişme, Düzenleme ve Ses/Görüntü yetkisi vermek üzere bir kullanıcı seçiniz.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>Bu kullanıcı Düzenleyici haklarına sahip olduğundan çizme yetkisine zaten sahip.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>Kendi kendinizin Düzenleyici hakkını iptal edemezsiniz.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Bu kullanıcının Ses/Görüntüsünü Yayınlamasına İzin Ver</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Kullanıcının Ses/Görüntüsünü İptal Et</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>Bu odanın düzenleyicisi olmak istiyorum.</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>Tahtayı düzenleyebilmek istiyorum.</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>Ses/Görüntümü paylaşmak istiyorum.</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>Bu odanın Düzenleyicisisiniz.</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>Tahtayı düzenleme hakkına sahipsiniz.</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>Ses/Görüntünüzü paylaşma hakkına sahipsiniz.</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Düzenleyiciye Mesaj</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>Kullanıcı</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>düzenleyici olmak istiyor. Kullanıcıya bu hakkı vermek istiyorsanız durum simgelerini kullanın.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>tahtayı düzenlemek istiyor. Kullanıcıya bu hakkı vermek istiyorsanız durum simgelerini kullanın.</value>
+  </string>
+  <string id="695" name="695">
+    <value>Ses ve Görüntüsünü paylaşmak istiyor. Kullanıcıya bu hakkı vermek istiyorsanız durum simgelerini kullanın.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>Düzenleyici odaya giriş yapana kadar beklemelisiniz.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>İptal</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Kaydet</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Gün</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Ay</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Yıl</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/languages/ukrainian.xml b/src/main/webapp/languages/ukrainian.xml
new file mode 100644
index 0000000..cdda46c
--- /dev/null
+++ b/src/main/webapp/languages/ukrainian.xml
@@ -0,0 +1,4829 @@
+<?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.
+  
+
+
+###############################################
+This File is auto-generated by the LanguageEditor 
+to add new Languages or modify/customize it use the LanguageEditor 
+see http://openmeetings.apache.org/LanguageEditor.html for Details 
+###############################################-->
+<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="language.xsd">
+  <string id="1" name="conference">
+    <value>Конференція</value>
+  </string>
+  <string id="2" name="meeting">
+    <value>Зустріч</value>
+  </string>
+  <string id="3" name="classroom">
+    <value>Аудиторія</value>
+  </string>
+  <string id="4" name="settings">
+    <value>Налаштування</value>
+  </string>
+  <string id="5" name="benutzer">
+    <value>Користувач</value>
+  </string>
+  <string id="6" name="admin">
+    <value>Адміністратор</value>
+  </string>
+  <string id="7" name="stop">
+    <value>Пауза</value>
+  </string>
+  <string id="8" name="record">
+    <value>Запис</value>
+  </string>
+  <string id="9" name="nofile">
+    <value>Немає даних</value>
+  </string>
+  <string id="10" name="recordbyteacher">
+    <value>Функція запису для модераторів</value>
+  </string>
+  <string id="11" name="connectedusers">
+    <value>Пов'язаний користувач:</value>
+  </string>
+  <string id="12" name="startconf">
+    <value>Почати конференцію</value>
+  </string>
+  <string id="13" name="myname">
+    <value>Моє ім'я</value>
+  </string>
+  <string id="14" name="videoconference">
+    <value>Відеоконференція</value>
+  </string>
+  <string id="15" name="import">
+    <value>Імпорт</value>
+  </string>
+  <string id="16" name="refreshfiles">
+    <value>Оновити список</value>
+  </string>
+  <string id="17" name="tomainfile">
+    <value>На головну</value>
+  </string>
+  <string id="18" name="newpoll">
+    <value>Нове опитування</value>
+  </string>
+  <string id="19" name="newpollheader">
+    <value>Нове опитування для конференції.</value>
+  </string>
+  <string id="20" name="question">
+    <value>Запитання:</value>
+  </string>
+  <string id="21" name="polltype">
+    <value>Вид опитування:</value>
+  </string>
+  <string id="22" name="create">
+    <value>Створити</value>
+  </string>
+  <string id="23" name="infomessage">
+    <value>Інформація: кожен пов'язани користувач отримує повідомлення з новим опитуванням</value>
+  </string>
+  <string id="24" name="creatpoll">
+    <value>Створити опитування</value>
+  </string>
+  <string id="25" name="cancel">
+    <value>Відмінити</value>
+  </string>
+  <string id="26" name="yesno">
+    <value>Так/Ні</value>
+  </string>
+  <string id="27" name="numeric">
+    <value>В числовому порядку 1-10</value>
+  </string>
+  <string id="28" name="poll">
+    <value>Опитування</value>
+  </string>
+  <string id="29" name="moderation">
+    <value>Для створення опитування Ви повинні бути модератором/інструктором даної кімнати.</value>
+  </string>
+  <string id="30" name="vote">
+    <value>Ви проголосували.</value>
+  </string>
+  <string id="31" name="alreadyvoted">
+    <value>Ви вже проголосували в даному опитуванні.</value>
+  </string>
+  <string id="32" name="voting">
+    <value>Проголосувати!</value>
+  </string>
+  <string id="33" name="answer">
+    <value>Ваша відповідь:</value>
+  </string>
+  <string id="34" name="yes">
+    <value>Так</value>
+  </string>
+  <string id="35" name="no">
+    <value>Ні</value>
+  </string>
+  <string id="36" name="questionwant">
+    <value>Хочу знати:</value>
+  </string>
+  <string id="37" name="pollresults">
+    <value>Результати опитування</value>
+  </string>
+  <string id="38" name="question">
+    <value>Запитання:</value>
+  </string>
+  <string id="39" name="results">
+    <value>Відповіді:</value>
+  </string>
+  <string id="40" name="answers">
+    <value>Результати:</value>
+  </string>
+  <string id="41" name="nopoll">
+    <value>В даний момент опитування не існує.</value>
+  </string>
+  <string id="42" name="votings">
+    <value>Проголосувати!</value>
+  </string>
+  <string id="43" name="meeting">
+    <value>Зустріч (максимум 4 місця)</value>
+  </string>
+  <string id="44" name="conference">
+    <value>Конференція (максимум 50 місць)</value>
+  </string>
+  <string id="45" name="type">
+    <value>Тип</value>
+  </string>
+  <string id="46" name="remainingseats">
+    <value>Залишилось місць</value>
+  </string>
+  <string id="47" name="alreadychosen">
+    <value>Вже присвоєно</value>
+  </string>
+  <string id="48" name="enter">
+    <value>Вхід</value>
+  </string>
+  <string id="49" name="modleave">
+    <value>Модератор/інструктор цієї кімнати покинув кімнату</value>
+  </string>
+  <string id="50" name="systemmessage">
+    <value>Системне повідомлення</value>
+  </string>
+  <string id="51" name="chossedevice">
+    <value>Вибір пристрою</value>
+  </string>
+  <string id="52" name="choosecam">
+    <value>Обрати камеру:</value>
+  </string>
+  <string id="53" name="choosemic">
+    <value>Обрати мікрофон:</value>
+  </string>
+  <string id="54" name="ok">
+    <value>OK</value>
+  </string>
+  <string id="55" name="cancel2">
+    <value>Скасувати</value>
+  </string>
+  <string id="56" name="reconeectneeded">
+    <value>Ви повинні ввійти знову, щоб активізувати зміни.</value>
+  </string>
+  <string id="57" name="editsetup">
+    <value>Змінити налаштування.</value>
+  </string>
+  <string id="58" name="course">
+    <value>Курс:</value>
+  </string>
+  <string id="59" name="language">
+    <value>Мова:</value>
+  </string>
+  <string id="60" name="ok2">
+    <value>OK</value>
+  </string>
+  <string id="61" name="cancel3">
+    <value>Скасувати</value>
+  </string>
+  <string id="62" name="clearwhiteboard">
+    <value>Очистити планшет</value>
+  </string>
+  <string id="63" name="clearwhiteboardquestion">
+    <value>Очистити планшет перед додаванням нового зображення?</value>
+  </string>
+  <string id="64" name="dontaskagain">
+    <value>чистити планшет перед додаванням нового зображення</value>
+  </string>
+  <string id="65" name="no">
+    <value>ні</value>
+  </string>
+  <string id="66" name="editsetup2">
+    <value>Обробити налаштування</value>
+  </string>
+  <string id="67" name="needconfirmationwhiteboard">
+    <value>Запросити підтвердження перед очисткою планшету.</value>
+  </string>
+  <string id="68" name="userinfo">
+    <value>Наша інформація</value>
+  </string>
+  <string id="69" name="cleardrawarea">
+    <value>Очистити планшет</value>
+  </string>
+  <string id="70" name="undo">
+    <value>Відмінити</value>
+  </string>
+  <string id="71" name="redo">
+    <value>Відновлення</value>
+  </string>
+  <string id="72" name="selectobject">
+    <value>Вибрати об'єкт</value>
+  </string>
+  <string id="73" name="text">
+    <value>Текст</value>
+  </string>
+  <string id="74" name="paint">
+    <value>Малювання</value>
+  </string>
+  <string id="75" name="drawline">
+    <value>Провести лінію</value>
+  </string>
+  <string id="76" name="drawu">
+    <value>Підкреслити</value>
+  </string>
+  <string id="77" name="rect">
+    <value>Прямокутник</value>
+  </string>
+  <string id="78" name="ellipse">
+    <value>Еліпс</value>
+  </string>
+  <string id="79" name="arrow">
+    <value>Стрілка</value>
+  </string>
+  <string id="80" name="deletechosen">
+    <value>Стерти обраний елемент</value>
+  </string>
+  <string id="81" name="appliymod">
+    <value>Запит функції модератора</value>
+  </string>
+  <string id="82" name="apply">
+    <value>Запит</value>
+  </string>
+  <string id="83" name="cancel">
+    <value>Скасувати</value>
+  </string>
+  <string id="84" name="mod">
+    <value>Отримати функцію модератора</value>
+  </string>
+  <string id="85" name="close">
+    <value>Закрити</value>
+  </string>
+  <string id="86" name="italic">
+    <value>Курсив</value>
+  </string>
+  <string id="87" name="bold">
+    <value>Жирний шрифт</value>
+  </string>
+  <string id="88" name="waiting">
+    <value>Будь-ласкаа зачекайте...</value>
+  </string>
+  <string id="89" name="applyMessage">
+    <value>Користувач бажає отримати функцію модератора</value>
+  </string>
+  <string id="90" name="accept">
+    <value>Згода</value>
+  </string>
+  <string id="91" name="reject">
+    <value>Скасування</value>
+  </string>
+  <string id="92" name="cancel">
+    <value>Скасувати</value>
+  </string>
+  <string id="93" name="sendmodrequestmessage">
+    <value>Надсилання запиту наступному користувачу</value>
+  </string>
+  <string id="94" name="accept">
+    <value>Дано згоду</value>
+  </string>
+  <string id="95" name="reject">
+    <value>Скасовано</value>
+  </string>
+  <string id="96" name="changemod">
+    <value>Заміна модератора</value>
+  </string>
+  <string id="97" name="nonmoderrormessage">
+    <value>Ви не є модератором даного курсу!</value>
+  </string>
+  <string id="98" name="moderator">
+    <value>Модератор:</value>
+  </string>
+  <string id="99" name="roomfullmessage">
+    <value>Вибачте, в цій кімнаті немає місця. Будь-ласка попробуйте ще через деякий час.</value>
+  </string>
+  <string id="100" name="elllipse">
+    <value>Еліпс</value>
+  </string>
+  <string id="101" name="close">
+    <value>Закрити</value>
+  </string>
+  <string id="102" name="AuthError">
+    <value>Помилка при вводі</value>
+  </string>
+  <string id="103" name="min4username">
+    <value>Ім'я користувача повинно складатись мінімум з 4 знаків</value>
+  </string>
+  <string id="104" name="min4pass">
+    <value>Пароль повинен містити мінімум 4 знаки</value>
+  </string>
+  <string id="105" name="usernametaken">
+    <value>Це ім'я користувача вже присвоєне</value>
+  </string>
+  <string id="106" name="emailtaken">
+    <value>Введена електронна адреса вже зареєстрована</value>
+  </string>
+  <string id="107" name="emailtaken">
+    <value>Присутня помилка, просимо зв''язатись з адміністрацією</value>
+  </string>
+  <string id="108" name="Authlogin">
+    <value>Логін</value>
+  </string>
+  <string id="109" name="Authuser">
+    <value>Користувач:</value>
+  </string>
+  <string id="110" name="Authpass">
+    <value>Пароль:</value>
+  </string>
+  <string id="111" name="Authlang">
+    <value>Мова</value>
+  </string>
+  <string id="112" name="Authreg">
+    <value>Логін</value>
+  </string>
+  <string id="113" name="regformhead">
+    <value>Зареєструватись</value>
+  </string>
+  <string id="114" name="regformuser">
+    <value>Користувач:</value>
+  </string>
+  <string id="115" name="regformpass">
+    <value>Пароль:</value>
+  </string>
+  <string id="116" name="regformretype">
+    <value>Повторити:</value>
+  </string>
+  <string id="117" name="regformfirstname">
+    <value>Ім'я:</value>
+  </string>
+  <string id="118" name="regformlastname">
+    <value>Прізвище:</value>
+  </string>
+  <string id="119" name="regformmail">
+    <value>E-Mail:</value>
+  </string>
+  <string id="120" name="regformstate">
+    <value>Країна:</value>
+  </string>
+  <string id="121" name="regformbtn1">
+    <value>Зареєструватись</value>
+  </string>
+  <string id="122" name="regformbtn2">
+    <value>Скасувати</value>
+  </string>
+  <string id="123" name="Authbtn2">
+    <value>Регістр</value>
+  </string>
+  <string id="124" name="dashboard">
+    <value>На головну</value>
+  </string>
+  <string id="125" name="useradmin">
+    <value>Користувачі</value>
+  </string>
+  <string id="126" name="groupadmin">
+    <value>Групи</value>
+  </string>
+  <string id="127" name="orgadmin">
+    <value>Організації</value>
+  </string>
+  <string id="128" name="headconf">
+    <value>Кімнати для конференцій</value>
+  </string>
+  <string id="129" name="conf_pub">
+    <value>Публічно</value>
+  </string>
+  <string id="130" name="head_org">
+    <value>Організація</value>
+  </string>
+  <string id="131" name="btn_enterroom">
+    <value>Вхід</value>
+  </string>
+  <string id="132" name="useralterself_login">
+    <value>Користувач</value>
+  </string>
+  <string id="133" name="useralterself_pass">
+    <value>Пароль</value>
+  </string>
+  <string id="134" name="useralterself_passretype">
+    <value>Повторити</value>
+  </string>
+  <string id="135" name="useralterself_firstname">
+    <value>Ім'я</value>
+  </string>
+  <string id="136" name="useralterself_lastname">
+    <value>Прізвище</value>
+  </string>
+  <string id="137" name="useralterself_email">
+    <value>E-Mail</value>
+  </string>
+  <string id="138" name="useralterself_birth">
+    <value>Дата народження</value>
+  </string>
+  <string id="139" name="useralterself_streetno">
+    <value>Вулиця/№ будинка</value>
+  </string>
+  <string id="140" name="useralterself_town">
+    <value>Індекс/населений пункт</value>
+  </string>
+  <string id="141" name="useralterself_state">
+    <value>Країна</value>
+  </string>
+  <string id="142" name="useralterself_adresscomment">
+    <value>Додаткова brінформація</value>
+  </string>
+  <string id="143" name="useralterself_header">
+    <value>Дані користувача</value>
+  </string>
+  <string id="144" name="savemenubar_savelabel">
+    <value>Зберегти</value>
+  </string>
+  <string id="145" name="savemenubar_savelabel">
+    <value>Процес збереження</value>
+  </string>
+  <string id="146" name="admin_userlist_user_id">
+    <value>Ідент. № користувача</value>
+  </string>
+  <string id="147" name="admin_userlist_login">
+    <value>Логін</value>
+  </string>
+  <string id="148" name="admin_userlist_firstnam">
+    <value>Ім'я</value>
+  </string>
+  <string id="149" name="admin_userlist_lastname">
+    <value>Прізвище</value>
+  </string>
+  <string id="150" name="turnoverlist_next">
+    <value>Вперед</value>
+  </string>
+  <string id="151" name="turnoverlist_pre">
+    <value>Назад</value>
+  </string>
+  <string id="152" name="savecontent_confirm">
+    <value>Стерти запис</value>
+  </string>
+  <string id="153" name="savecontent_confirm_cancel_btn">
+    <value>Скасувати</value>
+  </string>
+  <string id="154" name="savecontent_confirm_confirm_btn">
+    <value>Стери</value>
+  </string>
+  <string id="155" name="savemenubar_addlabel">
+    <value>Створити запис</value>
+  </string>
+  <string id="156" name="savemenubar_reloadlabel">
+    <value>Оновити запис</value>
+  </string>
+  <string id="157" name="savemenubar_deletelabel">
+    <value>Стерти запис</value>
+  </string>
+  <string id="158" name="useralter_admin_status">
+    <value>Статус</value>
+  </string>
+  <string id="159" name="useralter_admin_statusItem">
+    <value>Заблоковано</value>
+  </string>
+  <string id="160" name="useralter_admin_statusItem">
+    <value>Активно</value>
+  </string>
+  <string id="161" name="useralter_admin_organisation">
+    <value>Організації</value>
+  </string>
+  <string id="162" name="calendar_iconlabel">
+    <value>Календар</value>
+  </string>
+  <string id="163" name="savewindow_btn">
+    <value>Закрити</value>
+  </string>
+  <string id="164" name="organisationtablelist_idrow">
+    <value>Ідент. № організації</value>
+  </string>
+  <string id="165" name="organisationtablelist_namerow">
+    <value>Ім'я</value>
+  </string>
+  <string id="166" name="uservalue_levelid1">
+    <value>Користувач</value>
+  </string>
+  <string id="167" name="uservalue_levelid2">
+    <value>Модератор</value>
+  </string>
+  <string id="168" name="uservalue_levelid3">
+    <value>Адміністратор</value>
+  </string>
+  <string id="169" name="uservalue_levellabel">
+    <value>Роль користувача</value>
+  </string>
+  <string id="170" name="orgvalue_header">
+    <value>Організація</value>
+  </string>
+  <string id="171" name="orgvalue_orgname">
+    <value>Ім'я</value>
+  </string>
+  <string id="172" name="orgvalue_orgname">
+    <value>Додати організацію</value>
+  </string>
+  <string id="173" name="orgvalue_orgname">
+    <value>Додати організацію</value>
+  </string>
+  <string id="174" name="orgvalue_userwin">
+    <value>Скасувати</value>
+  </string>
+  <string id="175" name="orgvalue_userwin">
+    <value>Додати</value>
+  </string>
+  <string id="176" name="orgvalue_userwin">
+    <value>Стерти організацію</value>
+  </string>
+  <string id="177" name="orgvalue_userlist">
+    <value>Користувач</value>
+  </string>
+  <string id="178" name="orgvalue_userlistadd">
+    <value>Додати користувача</value>
+  </string>
+  <string id="179" name="orgvalue_userlistdelete">
+    <value>Видалити користувача</value>
+  </string>
+  <string id="180" name="orgvalue_userwinheader">
+    <value>Додати користувача</value>
+  </string>
+  <string id="181" name="orgvalue_userwinsearchfield">
+    <value>Пошук користувача</value>
+  </string>
+  <string id="182" name="orgvalue_userwinsearchbtn">
+    <value>Шукати</value>
+  </string>
+  <string id="183" name="orgvalue_userwinsearchresult">
+    <value>Користувач</value>
+  </string>
+  <string id="184" name="loginwin_chooseorganisation">
+    <value>Організація</value>
+  </string>
+  <string id="185" name="loginwin_chooseorganisationbtn">
+    <value>Обрати</value>
+  </string>
+  <string id="186" name="navi_roomadmin">
+    <value>Кімнати для конференцій</value>
+  </string>
+  <string id="187" name="roomadmin_header">
+    <value>Кімнати для конференцій</value>
+  </string>
+  <string id="188" name="roomadmin_header">
+    <value>Ідент. №</value>
+  </string>
+  <string id="189" name="roomadmin_header">
+    <value>Ім'я</value>
+  </string>
+  <string id="190" name="roomadmin_header">
+    <value>Публічно</value>
+  </string>
+  <string id="191" name="roomadmin_header">
+    <value>Організації</value>
+  </string>
+  <string id="192" name="roomadmin_header">
+    <value>Кімнати для конференцій</value>
+  </string>
+  <string id="193" name="roomvalue_name">
+    <value>Ім'я</value>
+  </string>
+  <string id="194" name="roomvalue_type">
+    <value>Тип</value>
+  </string>
+  <string id="195" name="roomvalue_ispublic">
+    <value>Публічно</value>
+  </string>
+  <string id="196" name="roomvalue_comment">
+    <value>Коментар</value>
+  </string>
+  <string id="197" name="whiteboard_saveicon">
+    <value>Зберегти</value>
+  </string>
+  <string id="198" name="whiteboard_openicon">
+    <value>Вікдрити</value>
+  </string>
+  <string id="199" name="whiteboard_saveaswinheader">
+    <value>Зберегти як</value>
+  </string>
+  <string id="200" name="whiteboard_saveaswintext">
+    <value>Ім'я файлу</value>
+  </string>
+  <string id="201" name="files">
+    <value>Ім'я файлу</value>
+  </string>
+  <string id="202" name="whiteboard_saveaswinbtn1">
+    <value>Скасувати</value>
+  </string>
+  <string id="203" name="whiteboard_saveaswinbtn2">
+    <value>Зберегти</value>
+  </string>
+  <string id="204" name="rpcerrorwin_header">
+    <value>Помилка</value>
+  </string>
+  <string id="205" name="loadwml_header">
+    <value>Завантажити</value>
+  </string>
+  <string id="206" name="loadwml_messsload">
+    <value>Об'єкт завантажений</value>
+  </string>
+  <string id="207" name="loadwml_messsync">
+    <value>Синхронізація клієнтів. Залишилось клієнтів:</value>
+  </string>
+  <string id="208" name="loadimage_messload">
+    <value>Завантаження графічних даних</value>
+  </string>
+  <string id="209" name="loadimage_messsync">
+    <value>Синхронізація клієнтів. Залишилось клієнтів:</value>
+  </string>
+  <string id="210" name="loadwml_confirmheader">
+    <value>Очистити планшет</value>
+  </string>
+  <string id="211" name="loadwml_confirmmess">
+    <value>Очистити планшет, при цьому всі зміни будуть втрачені!</value>
+  </string>
+  <string id="212" name="loadwml_confirmmess2">
+    <value>Перед завантаженням файлу запросити підтвердження</value>
+  </string>
+  <string id="213" name="send_invitation_btn">
+    <value>Відіслати запрошення</value>
+  </string>
+  <string id="214" name="send_invitationwin_header">
+    <value>Відправити запрошення</value>
+  </string>
+  <string id="215" name="send_invitationwin_subject">
+    <value>Тема</value>
+  </string>
+  <string id="216" name="send_invitationwin_recipient">
+    <value>Адреса одержувача</value>
+  </string>
+  <string id="217" name="send_invitationwin_message">
+    <value>Повідомлення</value>
+  </string>
+  <string id="218" name="send_invitationwin_btn_confirm">
+    <value>Відправити</value>
+  </string>
+  <string id="219" name="send_invitationwin_btn_cancel">
+    <value>Скасувати</value>
+  </string>
+  <string id="220" name="send_chat_text_btn">
+    <value>Відправити</value>
+  </string>
+  <string id="221" name="invited_userwin_header">
+    <value>Данні користувача</value>
+  </string>
+  <string id="222" name="invited_userwin_subject">
+    <value>Нік для даної конфренції</value>
+  </string>
+  <string id="223" name="invited_userwin_login">
+    <value>Прізвище/псевдонім</value>
+  </string>
+  <string id="224" name="invited_userwin_firstname">
+    <value>Ім'я</value>
+  </string>
+  <string id="225" name="invited_userwin_lastname">
+    <value>Прізвище</value>
+  </string>
+  <string id="226" name="invited_userwin_mail">
+    <value>E-Mail</value>
+  </string>
+  <string id="227" name="invited_userwin_lang">
+    <value>Мова</value>
+  </string>
+  <string id="228" name="invited_userwin_enter">
+    <value>Відправити</value>
+  </string>
+  <string id="229" name="invited_userwin_enter">
+    <value>Триває завантаження...</value>
+  </string>
+  <string id="230" name="invited_userwin_enter">
+    <value>Дані завантажуються, будь-ласка зачекайте...</value>
+  </string>
+  <string id="231" name="user_registerFalsePWD">
+    <value>Невірний пароль</value>
+  </string>
+  <string id="232" name="user_registerFalsePWDHeader">
+    <value>Будь ласка введіть два ідентичні паролі, що містять мінімум 6 символи.</value>
+  </string>
+  <string id="233" name="user_registerMailError">
+    <value>Невірний e-mail</value>
+  </string>
+  <string id="234" name="user_registerMailErrorHeader">
+    <value>Ви ввели не вірний e-mail</value>
+  </string>
+  <string id="235" name="user_registerSuccess">
+    <value>Реєстрація завершена</value>
+  </string>
+  <string id="236" name="user_registerSuccessHeader">
+    <value>Ваш акаунт створено. Тепер Ви можете ввійти в систему.</value>
+  </string>
+  <string id="237" name="user_sharing_message">
+    <value>Ви не можете завантажити ваш знімок. Хтось вже зробив це.</value>
+  </string>
+  <string id="238" name="user_sharing_messageHeader">
+    <value>Завантаження заборонене</value>
+  </string>
+  <string id="239" name="user_doStartScreenViewer">
+    <value>Зробити знімок екрану</value>
+  </string>
+  <string id="240" name="screen_warnBandwidth">
+    <value>Поганий пропускний кнаал: Ви не можете синхронізувати ваш екран. Фрейми будуть втрачені. Якщо це повідомлення повториться запитайте в модератора про зменшення якості.</value>
+  </string>
+  <string id="241" name="screen_userlabel">
+    <value>Екран:</value>
+  </string>
+  <string id="242" name="whiteboard_tab_paint">
+    <value>Малюнок</value>
+  </string>
+  <string id="243" name="whiteboard_tab_document">
+    <value>Документ</value>
+  </string>
+  <string id="244" name="tabbar_chaticon">
+    <value>Чат</value>
+  </string>
+  <string id="245" name="tabbar_filesicon">
+    <value>Файли</value>
+  </string>
+  <string id="246" name="tabbar_participantsicon">
+    <value>Користувачі</value>
+  </string>
+  <string id="247" name="swfpresentation_listsaveorig">
+    <value>Завантажити оригінальні документи</value>
+  </string>
+  <string id="248" name="swfpresentation_listsavepdf">
+    <value>Завантажити pdf документ</value>
+  </string>
+  <string id="249" name="swfpresentation_listloadswf">
+    <value>Завантажити презентацію на планшет</value>
+  </string>
+  <string id="250" name="navimain_config">
+    <value>Налаштування</value>
+  </string>
+  <string id="251" name="whiteboard_boundingbox_drag">
+    <value>Потягнути цей об'єкт</value>
+  </string>
+  <string id="252" name="whiteboard_boundingbox_resize">
+    <value>Змінити розмір об'єкта</value>
+  </string>
+  <string id="253" name="whiteboard_documenttoolbar_zoom">
+    <value>%</value>
+  </string>
+  <string id="254" name="whiteboard_documenttoolbar_slide">
+    <value>з</value>
+  </string>
+  <string id="255" name="whiteboard_documenttoolbar_firstslide">
+    <value>На 1 сторінку</value>
+  </string>
+  <string id="256" name="whiteboard_documenttoolbar_preslide">
+    <value>На попередню сторінку</value>
+  </string>
+  <string id="257" name="whiteboard_documenttoolbar_nextslide">
+    <value>На наступну сторінку</value>
+  </string>
+  <string id="258" name="whiteboard_documenttoolbar_lastslide">
+    <value>На останню сторінку</value>
+  </string>
+  <string id="259" name="whiteboard_documenttoolbar_zoomminus">
+    <value>Зменшити</value>
+  </string>
+  <string id="260" name="whiteboard_documenttoolbar_zoomplus">
+    <value>Збільшити</value>
+  </string>
+  <string id="261" name="salutation_mr">
+    <value>П.</value>
+  </string>
+  <string id="262" name="salutation_miss">
+    <value>П.</value>
+  </string>
+  <string id="263" name="navimain_confadmin">
+    <value>Налаштування</value>
+  </string>
+  <string id="264" name="conftable_headerId">
+    <value>ID</value>
+  </string>
+  <string id="265" name="conftable_headerkey">
+    <value>Ключ</value>
+  </string>
+  <string id="266" name="confadminform_header">
+    <value>Налаштування</value>
+  </string>
+  <string id="267" name="confadminform_labelkey">
+    <value>Ключ</value>
+  </string>
+  <string id="268" name="confadminform_labelupdated">
+    <value>Останнє оновлення</value>
+  </string>
+  <string id="269" name="confadminform_labelupdatedby">
+    <value>Оновлення</value>
+  </string>
+  <string id="270" name="confadminform_labelcomment">
+    <value>Коментарі</value>
+  </string>
+  <string id="271" name="confadminform_labelkey">
+    <value>Ключ</value>
+  </string>
+  <string id="272" name="turnoverlist_maxresults">
+    <value>з</value>
+  </string>
+  <string id="273" name="organisation_usersheader">
+    <value>Користувачі</value>
+  </string>
+  <string id="274" name="organisation_usersicondelete">
+    <value>Стерти користувача з організації</value>
+  </string>
+  <string id="275" name="organisation_usersdeletedhead">
+    <value>Стерти</value>
+  </string>
+  <string id="276" name="organisation_usersalreadadded">
+    <value>Цей користувач є вже учасником цієї організації.</value>
+  </string>
+  <string id="277" name="dashboard_newsheader">
+    <value>Новини</value>
+  </string>
+  <string id="278" name="dashboard_quicklinksheader">
+    <value>Посиланння</value>
+  </string>
+  <string id="279" name="dashboard_quicklinkConf">
+    <value>В Конференції</value>
+  </string>
+  <string id="280" name="dashboard_quicklinkAudit">
+    <value>В Аудиторії</value>
+  </string>
+  <string id="281" name="dashboard_quicklinksupport">
+    <value>Допомога і підтримка</value>
+  </string>
+  <string id="282" name="dashboard_quickhomepageurl">
+    <value>http://openmeetings.apache.org/</value>
+  </string>
+  <string id="283" name="dashboard_quickmailinglisturl">
+    <value>http://openmeetings.apache.org/mail-lists.html</value>
+  </string>
+  <string id="284" name="dashboard_reportbugs">
+    <value>Повідомити про помилки!</value>
+  </string>
+  <string id="285" name="dashboard_rsslistitemlinktext">
+    <value>Більше</value>
+  </string>
+  <string id="286" name="dashboard_quicklinkhomepagelabel">
+    <value>Сайт проекту (http://openmeetings.apache.org)</value>
+  </string>
+  <string id="287" name="dashboard_quicklinkmailinglistlabel">
+    <value>User Mailing List (http://openmeetings.apache.org/mail-lists.html)</value>
+  </string>
+  <string id="288" name="login_rememberuser">
+    <value>Запам'ятати вхід</value>
+  </string>
+  <string id="289" name="main_navi">
+    <value>Контент</value>
+  </string>
+  <string id="290" name="subnavi">
+    <value>Моя домашня сторінка</value>
+  </string>
+  <string id="291" name="subnavi">
+    <value>Заплановані конференції</value>
+  </string>
+  <string id="292" name="subnavi">
+    <value>Заплановані події</value>
+  </string>
+  <string id="293" name="subnavi">
+    <value>Публічні конференції</value>
+  </string>
+  <string id="294" name="subnavi">
+    <value>Приватні конференції</value>
+  </string>
+  <string id="295" name="subnavi">
+    <value>Публічні події</value>
+  </string>
+  <string id="296" name="subnavi">
+    <value>Приватні події</value>
+  </string>
+  <string id="297" name="subnavi">
+    <value>Публічний контент</value>
+  </string>
+  <string id="298" name="subnavi">
+    <value>Приватний контент</value>
+  </string>
+  <string id="299" name="subnavi">
+    <value>Персональний контент</value>
+  </string>
+  <string id="300" name="subnavi">
+    <value></value>
+  </string>
+  <string id="301" name="conferencebar">
+    <value>Модерація</value>
+  </string>
+  <string id="302" name="conferencebar">
+    <value>Призначити модератором</value>
+  </string>
+  <string id="303" name="conferencebar">
+    <value>Опитування</value>
+  </string>
+  <string id="304" name="conferencebar">
+    <value>Вибрати файл</value>
+  </string>
+  <string id="305" name="conferencebar">
+    <value>Налаштування</value>
+  </string>
+  <string id="306" name="conferencebar">
+    <value>Налаштування камери і мікрофона</value>
+  </string>
+  <string id="307" name="conferencebar">
+    <value>Налаштування планшету</value>
+  </string>
+  <string id="308" name="conferencebar">
+    <value>Вихід</value>
+  </string>
+  <string id="309" name="conferencebar">
+    <value>Повернутись до кімнат</value>
+  </string>
+  <string id="310" name="conferencebar">
+    <value>Вийти</value>
+  </string>
+  <string id="311" name="loginwindow">
+    <value>Провідник</value>
+  </string>
+  <string id="312" name="loginwindow">
+    <value>Запуск провідника</value>
+  </string>
+  <string id="313" name="loginwindow">
+    <value>Відео і Аудіо</value>
+  </string>
+  <string id="314" name="loginwindow">
+    <value>Чат</value>
+  </string>
+  <string id="315" name="loginwindow">
+    <value>Планшет</value>
+  </string>
+  <string id="316" name="loginwindow">
+    <value>Модерація</value>
+  </string>
+  <string id="317" name="loginwindow">
+    <value>Файли</value>
+  </string>
+  <string id="318" name="loginwindow">
+    <value>Користувачі</value>
+  </string>
+  <string id="319" name="loginwindow">
+    <value>Опитування</value>
+  </string>
+  <string id="320" name="loginwindow">
+    <value>Користувач з даним іменем відсутній</value>
+  </string>
+  <string id="321" name="loginwindow">
+    <value>На вашу поштоу скриньку вислано лист. Будь-ласка перевірте ваш поштову скриньку.</value>
+  </string>
+  <string id="322" name="errortype">
+    <value>Помилка</value>
+  </string>
+  <string id="323" name="errortype">
+    <value>Повідомлення</value>
+  </string>
+  <string id="324" name="resetpass">
+    <value>Неправильний хеш. Користувача не знайдено.</value>
+  </string>
+  <string id="325" name="resetpass">
+    <value>Скинути Ваш пароль</value>
+  </string>
+  <string id="326" name="resetpass">
+    <value>Логін</value>
+  </string>
+  <string id="327" name="resetpass">
+    <value>змінити пароль</value>
+  </string>
+  <string id="328" name="resetpass">
+    <value>Новий пароль</value>
+  </string>
+  <string id="329" name="resetpass">
+    <value>Повторіть пароль</value>
+  </string>
+  <string id="330" name="resetpass">
+    <value>Введені паролі не ідентичні.</value>
+  </string>
+  <string id="331" name="resetpass">
+    <value>Пароль повинен містити мінімум 4 символи!</value>
+  </string>
+  <string id="332" name="resetpass">
+    <value>Пароль встановлено. Тепер ви можете ввійти.</value>
+  </string>
+  <string id="333" name="rpccallback">
+    <value>OK</value>
+  </string>
+  <string id="334" name="rpcgeneralerror">
+    <value>Невідома помилка. Будь-ласка зв'яжіться з адміністратором.</value>
+  </string>
+  <string id="335" name="loginwindow">
+    <value>Невідоме ім'я користувача</value>
+  </string>
+  <string id="336" name="loginwindow">
+    <value>Невірний пароль</value>
+  </string>
+  <string id="337" name="logout">
+    <value>Ви успішно вийшли з системи</value>
+  </string>
+  <string id="338" name="registration">
+    <value>Попередня реєстрація вимкнена.</value>
+  </string>
+  <string id="339" name="registration">
+    <value>Невірний e-mail</value>
+  </string>
+  <string id="340" name="registration">
+    <value>Однакові імена файлів, будь-ласка виберіть інше ім'я</value>
+  </string>
+  <string id="341" name="filebrowser">
+    <value>Ім'я файлу надто коротке</value>
+  </string>
+  <string id="342" name="filebrowser">
+    <value>Неможливо зберегти адресу</value>
+  </string>
+  <string id="343" name="useradmin">
+    <value>Користувач доданий, але Ви повинні додати користувача в організацію, бо інакше він не зможе ввійти в систему.</value>
+  </string>
+  <string id="344" name="adminforms">
+    <value>Новий запис</value>
+  </string>
+  <string id="345" name="languageseditor">
+    <value>Не знайдено полів з цим ID.</value>
+  </string>
+  <string id="346" name="languageseditor">
+    <value>Не знайдено міток для цього поля.</value>
+  </string>
+  <string id="347" name="errormessage">
+    <value>Потрібні права адміністратора</value>
+  </string>
+  <string id="348" name="mainnavi">
+    <value>Редактор мови</value>
+  </string>
+  <string id="349" name="languageseditor">
+    <value>Мова</value>
+  </string>
+  <string id="350" name="languageseditor">
+    <value>ID змінної</value>
+  </string>
+  <string id="351" name="languageseditor">
+    <value>ID змінної</value>
+  </string>
+  <string id="352" name="languageseditor">
+    <value>Значення</value>
+  </string>
+  <string id="353" name="languageseditor">
+    <value>Значення полів</value>
+  </string>
+  <string id="354" name="languageseditor">
+    <value>Назви міток</value>
+  </string>
+  <string id="355" name="languageseditor">
+    <value>Значення міток</value>
+  </string>
+  <string id="356" name="languageseditor">
+    <value>ID мітки</value>
+  </string>
+  <string id="357" name="languageseditor">
+    <value>Ви тільки стираєте мітку, а не поле! Ви не можете стерти поле, оскільки воно маже мітки на інших мовах.</value>
+  </string>
+  <string id="358" name="languageseditor">
+    <value>Невірний ID мітки. FieldLanguagesvalues_Id не знайдено в базі даних.</value>
+  </string>
+  <string id="359" name="languageseditor">
+    <value>Ви не можете стерти поле. Ви можете стирати лише мітки, а не поля. Немає мітки завантаженої в даний момент, або не існує мітки для даного поля.</value>
+  </string>
+  <string id="360" name="languageseditor">
+    <value>Експорт</value>
+  </string>
+  <string id="361" name="languageseditor">
+    <value>Ви повинні вийти з системи, щоб побачити внесені зміни.</value>
+  </string>
+  <string id="362" name="languageseditor">
+    <value>Додати нову мову</value>
+  </string>
+  <string id="363" name="languageseditor">
+    <value>Видалити мову</value>
+  </string>
+  <string id="364" name="languageseditor">
+    <value>Додати нову мову</value>
+  </string>
+  <string id="365" name="languageseditor">
+    <value>Ім'я</value>
+  </string>
+  <string id="366" name="languageseditor">
+    <value>Додати мову</value>
+  </string>
+  <string id="367" name="languageseditor">
+    <value>Резервні копії</value>
+  </string>
+  <string id="368" name="turnoverlist">
+    <value>На початок</value>
+  </string>
+  <string id="369" name="turnoverlist">
+    <value>Назад</value>
+  </string>
+  <string id="370" name="turnoverlist">
+    <value>Наступне</value>
+  </string>
+  <string id="371" name="turnoverlist">
+    <value>В кінець</value>
+  </string>
+  <string id="372" name="videobox">
+    <value>Розмови користувача (By clicking here you can give exclusive audio / mute the microphone of others)</value>
+  </string>
+  <string id="373" name="videobox">
+    <value>вкл/викл звук</value>
+  </string>
+  <string id="374" name="dashboard">
+    <value>Система</value>
+  </string>
+  <string id="375" name="dashboard">
+    <value>Особисті налаштування</value>
+  </string>
+  <string id="376" name="dashboard">
+    <value>Привіт,</value>
+  </string>
+  <string id="377" name="dashboard">
+    <value>Налаштувати профіль</value>
+  </string>
+  <string id="378" name="dashboard">
+    <value>Нове повідомлення:</value>
+  </string>
+  <string id="379" name="dashboard">
+    <value>Завантажити малюнок</value>
+  </string>
+  <string id="380" name="backuppanel">
+    <value>Дані користувача - Експорт</value>
+  </string>
+  <string id="381" name="backuppanel">
+    <value>Спочатку повинні бути створені усі організації</value>
+  </string>
+  <string id="382" name="backuppanel">
+    <value>Почати експорт</value>
+  </string>
+  <string id="383" name="backuppanel">
+    <value>По організаціях</value>
+  </string>
+  <string id="384" name="backuppanel">
+    <value>Почати експорт</value>
+  </string>
+  <string id="385" name="backuppanel">
+    <value>Дані користувача - імпорт</value>
+  </string>
+  <string id="386" name="backuppanel">
+    <value>Вибрати users.xml</value>
+  </string>
+  <string id="387" name="languageseditor">
+    <value>Імпорт</value>
+  </string>
+  <string id="388" name="languageseditor">
+    <value>Експортувати в XML</value>
+  </string>
+  <string id="389" name="languageseditor">
+    <value>Виберіть мовний файл для імпорту. Виберіть правильну мову зі списку! Незаважаючи, яку назву має файл, він буде імпортований в цю мову</value>
+  </string>
+  <string id="390" name="importwindow">
+    <value>Імпорт - вибрати файл</value>
+  </string>
+  <string id="391" name="recordingsavewin">
+    <value>Зберегти як</value>
+  </string>
+  <string id="392" name="recordingsavewin">
+    <value>Ім'я:</value>
+  </string>
+  <string id="393" name="recordingsavewin">
+    <value>Коментарі:</value>
+  </string>
+  <string id="394" name="recordingsavewin">
+    <value>Зберегти</value>
+  </string>
+  <string id="395" name="record">
+    <value>Записи</value>
+  </string>
+  <string id="396" name="recorder">
+    <value>Перегляд записів</value>
+  </string>
+  <string id="397" name="record">
+    <value>Записи публічних і приватних кімнат</value>
+  </string>
+  <string id="398" name="roomslist">
+    <value>Користувачі:</value>
+  </string>
+  <string id="399" name="roomslist">
+    <value>Під'єднано:</value>
+  </string>
+  <string id="400" name="roomslist">
+    <value></value>
+  </string>
+  <string id="401" name="roomslist">
+    <value>Користувачів в кімнаті:</value>
+  </string>
+  <string id="402" name="roomslist">
+    <value>Оновити</value>
+  </string>
+  <string id="403" name="roomslist">
+    <value>Ця кімната переповнена. Спробуйте ще через декілька хвилин.</value>
+  </string>
+  <string id="404" name="roomsList">
+    <value>Виберіть кімнату щоб взнати деталі</value>
+  </string>
+  <string id="405" name="roomslist">
+    <value>Чат з користувачами даної кімнати:</value>
+  </string>
+  <string id="406" name="roomslist">
+    <value>Кімната:</value>
+  </string>
+  <string id="407" name="roomslist">
+    <value>Користувачів в цій кімнаті:</value>
+  </string>
+  <string id="408" name="roomslist">
+    <value>Після:</value>
+  </string>
+  <string id="409" name="record">
+    <value>Програти запис</value>
+  </string>
+  <string id="410" name="record">
+    <value>Довжина:</value>
+  </string>
+  <string id="411" name="record">
+    <value>Дата:</value>
+  </string>
+  <string id="412" name="record">
+    <value>Режим запису! Ви не можете змінити ніяких значень, цей файл вже записаний!</value>
+  </string>
+  <string id="413" name="record">
+    <value>Програти запис</value>
+  </string>
+  <string id="414" name="record">
+    <value>Програти / Пауза</value>
+  </string>
+  <string id="415" name="record">
+    <value>Початок запису</value>
+  </string>
+  <string id="416" name="record">
+    <value>Зупинити запис</value>
+  </string>
+  <string id="417" name="record">
+    <value>Запис:</value>
+  </string>
+  <string id="418" name="record_error_msg">
+    <value>На даний момент хтось уже виконує запис:</value>
+  </string>
+  <string id="419" name="record_message">
+    <value>Запис! Користувач:</value>
+  </string>
+  <string id="420" name="record_cancel">
+    <value>Скасувати</value>
+  </string>
+  <string id="421" name="record_cancal_tooltip">
+    <value>Запису був скасований і не може бути збережений.</value>
+  </string>
+  <string id="422" name="cancel_dialog_resume">
+    <value>Продовжити</value>
+  </string>
+  <string id="423" name="cancel_dialog_resume_tooltip">
+    <value>Закрити це вікно і продовжити запис</value>
+  </string>
+  <string id="424" name="painttools_ellipse_color">
+    <value>Інший колір лінії</value>
+  </string>
+  <string id="425" name="colorpicker_head">
+    <value>Вибрати колір</value>
+  </string>
+  <string id="426" name="painttools_line_disable">
+    <value>Вкл / Викл колір лінії</value>
+  </string>
+  <string id="427" name="painttools_fill_disable">
+    <value>Змінити колір наповнення</value>
+  </string>
+  <string id="428" name="painttools_line_disable">
+    <value>Викл / Вкл колір наповнення</value>
+  </string>
+  <string id="429" name="change_width_arrow_down_slider">
+    <value>Змінити ширину лінії</value>
+  </string>
+  <string id="430" name="close_small_popups">
+    <value>Закрити</value>
+  </string>
+  <string id="431" name="paint_tool_letter">
+    <value>Змінити розмір шрифту</value>
+  </string>
+  <string id="432" name="recordingslist_delete">
+    <value>Стерти запис</value>
+  </string>
+  <string id="433" name="recordingslist_recordedByGuest">
+    <value>Гість</value>
+  </string>
+  <string id="434" name="recordingslist_recordedby">
+    <value>В:</value>
+  </string>
+  <string id="435" name="recordings_table_head_name">
+    <value>Ім'я</value>
+  </string>
+  <string id="436" name="recordings_table_head_room">
+    <value>Кімната</value>
+  </string>
+  <string id="437" name="recordings_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="438" name="record_start_cancel">
+    <value>Відміна</value>
+  </string>
+  <string id="439" name="record_start_start">
+    <value>Старт</value>
+  </string>
+  <string id="440" name="filesbrowser_table_head_name">
+    <value>Ім'я</value>
+  </string>
+  <string id="441" name="filesbrowser_table_head_date">
+    <value>Дата</value>
+  </string>
+  <string id="442" name="chat_clear_history">
+    <value>Стерти лог чату серверу</value>
+  </string>
+  <string id="443" name="chat_overall_header">
+    <value>Чат</value>
+  </string>
+  <string id="444" name="chat_send_btn">
+    <value>Відправити повідомлення</value>
+  </string>
+  <string id="445" name="chat_emot_btn">
+    <value>Емоції</value>
+  </string>
+  <string id="446" name="chat_emot_win">
+    <value>Емоції</value>
+  </string>
+  <string id="447" name="choose_video_settings">
+    <value>Виберіть публічні пристрої</value>
+  </string>
+  <string id="448" name="choose_video_settings_combo">
+    <value>Аудіо і відео</value>
+  </string>
+  <string id="449" name="choose_video_settings_combo">
+    <value>Лише аудіо</value>
+  </string>
+  <string id="450" name="choose_video_settings_combo">
+    <value>Лише відео</value>
+  </string>
+  <string id="451" name="choose_video_settings_combo">
+    <value>без Аудіо/Відео (статичні малюнки)</value>
+  </string>
+  <string id="452" name="choose_video_settings_info_text">
+    <value>Без показу Аудіо/Відео від вашого ПК. Буде доступна лиша картинка вашого профілю. Виберіть ці параметри якщо у вас поганий канал Internet.</value>
+  </string>
+  <string id="453" name="calendar_dayname_monday">
+    <value>ПН</value>
+  </string>
+  <string id="454" name="calendar_dayname_tuesday">
+    <value>ВТ</value>
+  </string>
+  <string id="455" name="calendar_dayname_wednesday">
+    <value>СР</value>
+  </string>
+  <string id="456" name="calendar_dayname_thursday">
+    <value>ЧТ</value>
+  </string>
+  <string id="457" name="calendar_dayname_friday">
+    <value>ПТ</value>
+  </string>
+  <string id="458" name="calendar_dayname_saturday">
+    <value>СБ</value>
+  </string>
+  <string id="459" name="calendar_dayname_sunday">
+    <value>НД</value>
+  </string>
+  <string id="460" name="calendar_dayname_monday">
+    <value>Понеділок</value>
+  </string>
+  <string id="461" name="calendar_dayname_TuesdayLabel">
+    <value>Вівторок</value>
+  </string>
+  <string id="462" name="calendar_dayname_WednesdayLabel">
+    <value>Середа</value>
+  </string>
+  <string id="463" name="calendar_dayname_ThursdayLabel">
+    <value>Четвер</value>
+  </string>
+  <string id="464" name="calendar_dayname_FridayLabel">
+    <value>Пятниця</value>
+  </string>
+  <string id="465" name="calendar_dayname_SaturdayLabel">
+    <value>Субота</value>
+  </string>
+  <string id="466" name="calendar_dayname_SundayLabel">
+    <value>Неділя</value>
+  </string>
+  <string id="467" name="calendar_weeknumber_header">
+    <value>КТ</value>
+  </string>
+  <string id="468" name="calendar_weeknumber_headerTooltip">
+    <value>Календарний тиждень</value>
+  </string>
+  <string id="469" name="calendar_monthnames">
+    <value>Січень</value>
+  </string>
+  <string id="470" name="calendar_monthnames">
+    <value>Лютий</value>
+  </string>
+  <string id="471" name="calendar_monthnames">
+    <value>Березень</value>
+  </string>
+  <string id="472" name="calendar_monthnames">
+    <value>Квітень</value>
+  </string>
+  <string id="473" name="calendar_monthnames">
+    <value>Травень</value>
+  </string>
+  <string id="474" name="calendar_monthnames">
+    <value>Червень</value>
+  </string>
+  <string id="475" name="calendar_monthnames">
+    <value>Липень</value>
+  </string>
+  <string id="476" name="calendar_monthnames">
+    <value>Серпень</value>
+  </string>
+  <string id="477" name="calendar_monthnames">
+    <value>Вересень</value>
+  </string>
+  <string id="478" name="calendar_monthnames">
+    <value>Жовтень</value>
+  </string>
+  <string id="479" name="calendar_monthnames">
+    <value>Листопад</value>
+  </string>
+  <string id="480" name="calendar_monthnames">
+    <value>Грудень</value>
+  </string>
+  <string id="481" name="calendarwin_header">
+    <value>Календар</value>
+  </string>
+  <string id="482" name="roomadmin_labelNumberOfParticipants">
+    <value>Учасники</value>
+  </string>
+  <string id="483" name="roomValue_advancedSettings">
+    <value>Показати налаштування показу</value>
+  </string>
+  <string id="484" name="roomAdmin_layout_videoX">
+    <value>X | Y</value>
+  </string>
+  <string id="485" name="roomAdmin_layout_videoY">
+    <value>Ширина | Висота</value>
+  </string>
+  <string id="486" name="roomAdmin_layout">
+    <value>Відео-контейнер</value>
+  </string>
+  <string id="487" name="roomAdmin_layout_mod">
+    <value>Контейнер модерації</value>
+  </string>
+  <string id="488" name="roomAdmin_layout_mod_pos">
+    <value>X</value>
+  </string>
+  <string id="489" name="roomAdmin_layout_whiteboard">
+    <value>Контейнер планшету</value>
+  </string>
+  <string id="490" name="roomAdmin_layout_whiteboard_show">
+    <value>Активізувати</value>
+  </string>
+  <string id="491" name="roomAdmin_layout_whiteboard_pos">
+    <value>X | Y</value>
+  </string>
+  <string id="492" name="roomAdmin_layout_whiteboard">
+    <value>Ширина | Висота</value>
+  </string>
+  <string id="493" name="roomAdmin_layout_files">
+    <value>Контейнер файлів,чату,учасників -</value>
+  </string>
+  <string id="494" name="roomAdmin_layout_files_show">
+    <value>Активізувати</value>
+  </string>
+  <string id="495" name="roomAdmin_layout_files_pos">
+    <value>X |Y</value>
+  </string>
+  <string id="496" name="roomAdmin_layout_files">
+    <value>Ширина | Висота</value>
+  </string>
+  <string id="497" name="moderator_gone_message">
+    <value>Модератор покинув кімнату. Ви можете стати модератором або чекати.</value>
+  </string>
+  <string id="498" name="moderator_message_event_no_mod">
+    <value>Немає модератора в даній кімнаті, але є учасники. Ви можете стати модератором або чекати</value>
+  </string>
+  <string id="499" name="feedback_template_subject">
+    <value>Зворотній зв'язок $APP_NAME</value>
+  </string>
+  <string id="500" name="invitation_template_head">
+    <value>$APP_NAME - Запрошення</value>
+  </string>
+  <string id="501" name="invitation_text_from">
+    <value>Повідомлення для користувачів:</value>
+  </string>
+  <string id="502" name="invitation_text_message">
+    <value>Повідомлення:</value>
+  </string>
+  <string id="503" name="invitation_text_click_text">
+    <value>Натисніть на цей лінк щоб взяти участь в конференції:</value>
+  </string>
+  <string id="504" name="invitation_text_click_text_link">
+    <value>Натисніть тут, щоб увійти в кімнату</value>
+  </string>
+  <string id="505" name="invitation_text_click_text_help">
+    <value>Якщо ви має проблему з даним посилання, будь-ласка скопіюйте його і вставте в свій браузер:</value>
+  </string>
+  <string id="506" name="registering_mail_text_head">
+    <value>$APP_NAME SignUp</value>
+  </string>
+  <string id="507" name="registering_mail_text_head2">
+    <value>Ваші дані користувача:</value>
+  </string>
+  <string id="508" name="registering_mail_text_username">
+    <value>Логін:</value>
+  </string>
+  <string id="509" name="registering_mail_text_pass">
+    <value>Пароль:</value>
+  </string>
+  <string id="510" name="registering_mail_text_mail">
+    <value>E-mail:</value>
+  </string>
+  <string id="511" name="registering_mail_text_bye">
+    <value>Команда $APP_NAME</value>
+  </string>
+  <string id="512" name="register_mail_subject">
+    <value>$APP_NAME Sign-Up</value>
+  </string>
+  <string id="513" name="reset_password_template_head">
+    <value>$APP_NAME - Відновити пароль</value>
+  </string>
+  <string id="514" name="reset_password_template_test_link">
+    <value>Натисніть на це посилання, щоб ввести новий пароль</value>
+  </string>
+  <string id="515" name="reset_password_template_text2_link">
+    <value>Натисніть тут, щоб вести новий пароль</value>
+  </string>
+  <string id="516" name="reset_password_template_text3_link">
+    <value>Якщо ви має проблему з даним посилання, будь-ласка скопіюйте його і вставте в свій браузер:</value>
+  </string>
+  <string id="517" name="reset_password_mail_subject">
+    <value>Відновлення пароля $APP_NAME</value>
+  </string>
+  <string id="518" name="dateRegExpError">
+    <value>Будь-ласка введіть правильну дату, наприклад 24.12.2007 (dd.mm.yyyy)</value>
+  </string>
+  <string id="519" name="emailRegExpError">
+    <value>Будь ласка введіть дійсний E-mail, наприклад name@mail.com</value>
+  </string>
+  <string id="520" name="floatRegExpError">
+    <value>Будь ласка введіть число з плаваючою крапкою, наприклад 1.00</value>
+  </string>
+  <string id="521" name="numberRegExpError">
+    <value>Будь ласка введіть число, наприклад 100</value>
+  </string>
+  <string id="522" name="phoneRegExpError">
+    <value>Будь ласка введіть дійсний номер, наприклад ++49 0123 123123</value>
+  </string>
+  <string id="523" name="timeRegExpError">
+    <value>Будь-ласка введіть час, наприклад 12:23 (hh:mm)</value>
+  </string>
+  <string id="524" name="invitation_window">
+    <value>Пароль захищений</value>
+  </string>
+  <string id="525" name="invitation_window_passwordLabel">
+    <value>Пароль</value>
+  </string>
+  <string id="526" name="invitation_window_validLabel">
+    <value>Період дійсності</value>
+  </string>
+  <string id="527" name="invitation_window_valid">
+    <value>Бескінечний</value>
+  </string>
+  <string id="528" name="invitation_window_valid">
+    <value>Період</value>
+  </string>
+  <string id="529" name="invitation_window_valid">
+    <value>Минулий</value>
+  </string>
+  <string id="530" name="invitation_window_validFromLabel">
+    <value>Дійсни з:</value>
+  </string>
+  <string id="531" name="invitation_window_validToLabel">
+    <value>Дійсний до:</value>
+  </string>
+  <string id="532" name="invitation_window_MailSubject">
+    <value>Запрошення на $APP_NAME</value>
+  </string>
+  <string id="533" name="invitation_error">
+    <value>Нема запрошення для цього коду</value>
+  </string>
+  <string id="534" name="invitation_error">
+    <value>Запрошення вже використане. Даний тип запрошення не може бути використаний багаторазово</value>
+  </string>
+  <string id="535" name="invitation_error">
+    <value>Код запрошення не дійсний.</value>
+  </string>
+  <string id="536" name="invitation_pass">
+    <value>Пароль:</value>
+  </string>
+  <string id="537" name="invitation_pass_btn">
+    <value>Перевірити пароль</value>
+  </string>
+  <string id="538" name="invitation_pass_error">
+    <value>Невірний пароль!</value>
+  </string>
+  <string id="539" name="Browser">
+    <value>Бравзер</value>
+  </string>
+  <string id="540" name="audio_video">
+    <value>Синхронізувати аудіо/відео</value>
+  </string>
+  <string id="541" name="errorCode_invalidSession">
+    <value>Вхід виконано, але Ваша сесія, яку ви пробували не активна чи збережена на сервері. Ви повинні отримати новий SessionId і повторити вхід.</value>
+  </string>
+  <string id="542" name="errorcode_setUserObject">
+    <value>SessionId не є loggedin чи не має адміністраторських прав. SOAP шлюз потребує адміністаривних прав для додання нових користувачів.</value>
+  </string>
+  <string id="543" name="errorcode_loginByRemoteUser">
+    <value>This Session has no Remoteuser-Data connected. Wether you did not call the SOAP-Gateway before accessing the Application or you are usnig a wrong Session-ID</value>
+  </string>
+  <string id="544" name="debug_message_recording">
+    <value>На даний момент функція запису є в Beta-тестуванні!</value>
+  </string>
+  <string id="545" name="propertyPanelXValue">
+    <value>x</value>
+  </string>
+  <string id="546" name="propertyPanelXValueLabel">
+    <value>x-axis</value>
+  </string>
+  <string id="547" name="propertyPanelYValue">
+    <value>y</value>
+  </string>
+  <string id="548" name="propertyPanelYValueLabel">
+    <value>y-axis</value>
+  </string>
+  <string id="549" name="propertyPanelWidthValue">
+    <value>w</value>
+  </string>
+  <string id="550" name="propertyPanelWidthValueLabel">
+    <value>width</value>
+  </string>
+  <string id="551" name="propertyPanelHeightValue">
+    <value>h</value>
+  </string>
+  <string id="552" name="propertyPanelHeightValueLabel">
+    <value>height</value>
+  </string>
+  <string id="553" name="propertyOpacitySlider">
+    <value>Change Transparency</value>
+  </string>
+  <string id="554" name="browserOpen">
+    <value>Browser Open</value>
+  </string>
+  <string id="555" name="browserClose">
+    <value>Browser Close</value>
+  </string>
+  <string id="556" name="connectionLostMessage">
+    <value>The Connection to the Server is lost. You need to reload the Application or/and check your Network.</value>
+  </string>
+  <string id="557" name="557">
+    <value>Pointer</value>
+  </string>
+  <string id="558" name="sync message header">
+    <value>Synchronizing</value>
+  </string>
+  <string id="559" name="Synchronizing message">
+    <value>Synchronizing Users, please wait</value>
+  </string>
+  <string id="560" name="exportToSVG">
+    <value>&lt;u&gt;Download as SVG&lt;/u&gt;</value>
+  </string>
+  <string id="561" name="exportToImage">
+    <value>&lt;u&gt;Download as PNG&lt;/u&gt;</value>
+  </string>
+  <string id="562" name="exportToImage">
+    <value>&lt;u&gt;Download as JPG&lt;/u&gt;</value>
+  </string>
+  <string id="563" name="exportToImage">
+    <value>&lt;u&gt;Download as PDF&lt;/u&gt;</value>
+  </string>
+  <string id="564" name="exportToImage">
+    <value>&lt;u&gt;Download as TIF&lt;/u&gt;</value>
+  </string>
+  <string id="565" name="calendarLabel">
+    <value>Reminder:</value>
+  </string>
+  <string id="566" name="calendarLabel">
+    <value>Category:</value>
+  </string>
+  <string id="567" name="calendarLabel">
+    <value>Repetition:</value>
+  </string>
+  <string id="568" name="calendarLabel">
+    <value>none</value>
+  </string>
+  <string id="569" name="calendarLabel">
+    <value>Location:</value>
+  </string>
+  <string id="570" name="calendarLabel">
+    <value>Start</value>
+  </string>
+  <string id="571" name="calendarLabel">
+    <value>End</value>
+  </string>
+  <string id="572" name="calendarLabel">
+    <value>Title:</value>
+  </string>
+  <string id="573" name="calendarLabel">
+    <value>Comment:</value>
+  </string>
+  <string id="574" name="calendarLabel">
+    <value>Invite People</value>
+  </string>
+  <string id="575" name="calendarLabel">
+    <value>Daily</value>
+  </string>
+  <string id="576" name="calendarLabel">
+    <value>Monthly</value>
+  </string>
+  <string id="577" name="calendarLabel">
+    <value>Yearly</value>
+  </string>
+  <string id="578" name="alert">
+    <value>Appointment-end is after of appointment-start!</value>
+  </string>
+  <string id="579" name="alert">
+    <value>Please insert a title!</value>
+  </string>
+  <string id="580" name="580">
+    <value>RTL</value>
+  </string>
+  <string id="581" name="581">
+    <value>Activate this if you write in a right to left language (inverse word order)</value>
+  </string>
+  <string id="582" name="tooltip main-menu">
+    <value>Dashboard</value>
+  </string>
+  <string id="583" name="tooltip main-menu">
+    <value>Watch recorded Meetings or Events</value>
+  </string>
+  <string id="584" name="tooltip main-menu">
+    <value>Meeting - Make a conference with 4 (up to 16) Users&lt;br/&gt;everybody will have audio + video access</value>
+  </string>
+  <string id="585" name="tooltip main-menu">
+    <value>Event - Make a conference with up to 200 participents&lt;br/&gt;Only the Moderator will have audio/video</value>
+  </string>
+  <string id="586" name="tooltip main-menu">
+    <value>Create users, rooms, organizations&lt;br/&gt; + change configuration</value>
+  </string>
+  <string id="587" name="room Administration roomclients list">
+    <value>Users in this Room now</value>
+  </string>
+  <string id="588" name="room Administration roomclients list">
+    <value>ID</value>
+  </string>
+  <string id="589" name="room Administration roomclients list">
+    <value>Login</value>
+  </string>
+  <string id="590" name="room Administration roomclients list">
+    <value>D</value>
+  </string>
+  <string id="591" name="swf sync message">
+    <value>Loading Document. Please wait untill all Client have been synchronized.</value>
+  </string>
+  <string id="592" name="upload dialog">
+    <value>Upload complete, converting Document ...</value>
+  </string>
+  <string id="593" name="upload dialog">
+    <value>Start Upload</value>
+  </string>
+  <string id="594" name="upload dialog">
+    <value>Upload and Import Dialog. Please select a File from your Disk.</value>
+  </string>
+  <string id="595" name="upload Dialog">
+    <value>Cancel</value>
+  </string>
+  <string id="596" name="upload Dialog">
+    <value>Select File</value>
+  </string>
+  <string id="597" name="administration navigation">
+    <value>Connections</value>
+  </string>
+  <string id="598" name="confadmin value list">
+    <value>Value</value>
+  </string>
+  <string id="599" name="connection administration panel">
+    <value>Streamid</value>
+  </string>
+  <string id="600" name="connection administration panel">
+    <value>Login</value>
+  </string>
+  <string id="601" name="connection administration panel">
+    <value>Connected since</value>
+  </string>
+  <string id="602" name="connection administration panel">
+    <value>Room / Scope</value>
+  </string>
+  <string id="603" name="connection administration panel">
+    <value>Kick User</value>
+  </string>
+  <string id="604" name="kick user confirmation dialog">
+    <value>Kick User</value>
+  </string>
+  <string id="605" name="kick user confirmation dialog">
+    <value>Do you really want to kick this Client from the Connection?&lt;br/&gt; This does only remove the Client from the current Room.The Client could re-login again.</value>
+  </string>
+  <string id="606" name="kick user message dialog">
+    <value>Your session has been closed by an Administrator or Moderator.</value>
+  </string>
+  <string id="607" name="useralterself_phone">
+    <value>Phone</value>
+  </string>
+  <string id="608" name="participents panel">
+    <value>User is the Moderator of this Room</value>
+  </string>
+  <string id="609" name="participents panel">
+    <value>User is allowed to draw on the Whiteboard</value>
+  </string>
+  <string id="610" name="participents panel">
+    <value>(Re) Start Audio/Video or change Device Settings</value>
+  </string>
+  <string id="611" name="participents panel">
+    <value>Allow this User to draw on the Whiteboard</value>
+  </string>
+  <string id="612" name="participents panel">
+    <value>Remove ability to draw on whiteboard</value>
+  </string>
+  <string id="613" name="conferencePanels">
+    <value>Users</value>
+  </string>
+  <string id="614" name="conferencePanels">
+    <value>Files</value>
+  </string>
+  <string id="615" name="conferencePanels">
+    <value>Whiteboard</value>
+  </string>
+  <string id="616" name="conferencePanels">
+    <value>Chat</value>
+  </string>
+  <string id="617" name="organization choose info">
+    <value>Your account is assigned to multiple Organizations. Please choose one for this Session.</value>
+  </string>
+  <string id="618" name="error message room full">
+    <value>This room is full at the moment. Please try again later.</value>
+  </string>
+  <string id="619" name="roomtypes">
+    <value>Room Type</value>
+  </string>
+  <string id="620" name="appointed_room">
+    <value>Appointment Room</value>
+  </string>
+  <string id="621" name="servertime">
+    <value>Server Time</value>
+  </string>
+  <string id="622" name="inv_reminder_template_head">
+    <value>$APP_NAME - Reminder</value>
+  </string>
+  <string id="623" name="inv_reminder_text_from">
+    <value>Message from User:</value>
+  </string>
+  <string id="624" name="inv_reminder_text_message">
+    <value>Message:</value>
+  </string>
+  <string id="625" name="inv_reminder_text_click_text">
+    <value>Click this link to participate in the Meetings:</value>
+  </string>
+  <string id="626" name="inv_reminder_text_click_text_link">
+    <value>Click here to enter room</value>
+  </string>
+  <string id="627" name="inv_reminder_text_click_text_help">
+    <value>if you have problems with the link, please copy and paste this to your browser:</value>
+  </string>
+  <string id="628" name="btn_search_intern">
+    <value>search intern</value>
+  </string>
+  <string id="629" name="btn_search_extern">
+    <value>extern users</value>
+  </string>
+  <string id="630" name="lbl_prename">
+    <value>pre name</value>
+  </string>
+  <string id="631" name="lbl_name">
+    <value>name</value>
+  </string>
+  <string id="632" name="lbl_email">
+    <value>E-mail</value>
+  </string>
+  <string id="633" name="logoutConfirm_title">
+    <value>Confirm logout</value>
+  </string>
+  <string id="634" name="logoutConfirm_sure_to_logout_question">
+    <value>Are you sure you want to logout now?</value>
+  </string>
+  <string id="635" name="main menu">
+    <value>Actions</value>
+  </string>
+  <string id="636" name="room admin">
+    <value>Demo Room</value>
+  </string>
+  <string id="637" name="room admin">
+    <value>Demo Time</value>
+  </string>
+  <string id="638" name="meeting Timer">
+    <value>Meeting Timer</value>
+  </string>
+  <string id="639" name="meeting Timer">
+    <value>This Room is a Demo Room. To disable this warning you either should get a private meeting room for your personal usage or set up an own Server. You will be automatically logged off in:</value>
+  </string>
+  <string id="640" name="meeting room administration">
+    <value>Moderated</value>
+  </string>
+  <string id="641" name="moderated room waiting message">
+    <value>Please wait untill the Moderator has entered the Room. The Moderator can be either a Teacher, Admin or the creator of this Room.</value>
+  </string>
+  <string id="642" name="error popup">
+    <value>Ok</value>
+  </string>
+  <string id="643" name="window screensharing">
+    <value>Incoming Screen Sharing</value>
+  </string>
+  <string id="644" name="window screen sharing">
+    <value>There is a new Screen Sharing incoming from the User:</value>
+  </string>
+  <string id="645" name="window screen sharing">
+    <value>Start Sharing</value>
+  </string>
+  <string id="646" name="calendar">
+    <value>Add new Meeting</value>
+  </string>
+  <string id="647" name="calendar">
+    <value>Meeting Room</value>
+  </string>
+  <string id="648" name="calendar">
+    <value>Event Room</value>
+  </string>
+  <string id="649" name="main menu moderation">
+    <value>Moderation</value>
+  </string>
+  <string id="650" name="menu moderation">
+    <value>Moderate Users</value>
+  </string>
+  <string id="651" name="menu moderation">
+    <value>Moderate Rooms</value>
+  </string>
+  <string id="652" name="moderator org">
+    <value>M</value>
+  </string>
+  <string id="653" name="confirm moderation">
+    <value>Do you want to change this User to become a Moderator of that Organization?</value>
+  </string>
+  <string id="654" name="error message">
+    <value>Please choose an Organization before you try to add a User to it!</value>
+  </string>
+  <string id="655" name="choose user window">
+    <value>Organization - Moderator</value>
+  </string>
+  <string id="656" name="moderator org users">
+    <value>Do you really want to delete this User from the Organization?</value>
+  </string>
+  <string id="657" name="org moderation">
+    <value>This User is Moderator</value>
+  </string>
+  <string id="658" name="org moderation">
+    <value>This User is No-Moderator</value>
+  </string>
+  <string id="659" name="error message moderation">
+    <value>Do you want this User to be not a Moderator of this Organization?</value>
+  </string>
+  <string id="660" name="moderation">
+    <value>Add or delete Users or Rooms within your Organization</value>
+  </string>
+  <string id="661" name="delete confirm question">
+    <value>Do you really want to delete this record?</value>
+  </string>
+  <string id="662" name="delete confirm question user moderation">
+    <value>Do you really want to delete this user from your organization? You will only delete the connection between the user and your organization, to really delete the user itself you have to login into the Administration-Panel.</value>
+  </string>
+  <string id="663" name="error message self deleting">
+    <value>You cannot delete your own User!</value>
+  </string>
+  <string id="664" name="error message auth">
+    <value>This Method needs a Adminstration Account to be invoked!</value>
+  </string>
+  <string id="665" name="error message SOAP">
+    <value>There was no Session associated with this ID.</value>
+  </string>
+  <string id="666" name="error message moderation">
+    <value>This is an Administrator or Moderator account. You can only edit this account through the Administration Panel.</value>
+  </string>
+  <string id="667" name="email verification">
+    <value>To complete your registration please click on the following link. Or copy the URL to your browser bar.</value>
+  </string>
+  <string id="668" name="email verification">
+    <value>Click to verify your E-Mail</value>
+  </string>
+  <string id="669" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>No user was found for this Hash.</value>
+  </string>
+  <string id="670" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>This user is already activated!</value>
+  </string>
+  <string id="671" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>You did successfully activate your account!</value>
+  </string>
+  <string id="672" name="errorMessage_UserActivationServlet [ActivateUser]">
+    <value>Login Now</value>
+  </string>
+  <string id="673" name="loginErrorMessage = user was not activated">
+    <value>Your account is not activated. First use the link in the Email you've received during registration.</value>
+  </string>
+  <string id="674" name="register verification message">
+    <value>You successfully signed up. We've send an EMail with a verification Code to your Mail. Please check your Inbox.</value>
+  </string>
+  <string id="675" name="participants panel">
+    <value>Remove Moderation Role from this User</value>
+  </string>
+  <string id="676" name="participants panel">
+    <value>Grant Moderation Rights to this User</value>
+  </string>
+  <string id="677" name="event user list">
+    <value>User</value>
+  </string>
+  <string id="678" name="event user list">
+    <value>Access to whiteboard</value>
+  </string>
+  <string id="679" name="event user list">
+    <value>Moderator</value>
+  </string>
+  <string id="680" name="event user list">
+    <value>Moderation: Please choose any User on the List to grant him access to the Whiteboard, Moderation or Video.</value>
+  </string>
+  <string id="681" name="event user list">
+    <value>This User is already Moderator, so he has automatically the right to draw.</value>
+  </string>
+  <string id="682" name="event user list error">
+    <value>This is you! You cannot remove the Moderation rights from yourself.</value>
+  </string>
+  <string id="683" name="event user list">
+    <value>Allow this User to Publish his Audio / Video</value>
+  </string>
+  <string id="684" name="event user list">
+    <value>Remove Audio/Video of this User</value>
+  </string>
+  <string id="685" name="event user list">
+    <value>I would like to get the moderation of this room</value>
+  </string>
+  <string id="686" name="event user list">
+    <value>I would like to draw on whiteboard</value>
+  </string>
+  <string id="687" name="event user list">
+    <value>I would like to share my Audio/Video</value>
+  </string>
+  <string id="688" name="event user list">
+    <value>You are moderator of this room</value>
+  </string>
+  <string id="689" name="event user list">
+    <value>You are allowed to draw on whiteboard</value>
+  </string>
+  <string id="690" name="event user list">
+    <value>You are allowed to share your Audio/Video</value>
+  </string>
+  <string id="691" name="errortype">
+    <value>Message to Moderator</value>
+  </string>
+  <string id="692" name="apply for mod message">
+    <value>The User</value>
+  </string>
+  <string id="693" name="apply for mod message">
+    <value>would like to get the Moderation. Use the status Icons next to the user in the List of Users to add or remove the Moderation.</value>
+  </string>
+  <string id="694" name="apply for whiteboard">
+    <value>would like to draw on whiteboard. Use the status Icons next to the user in the List of Users to add or remove the right to draw anything on the whiteboard.</value>
+  </string>
+  <string id="695" name="695">
+    <value>would like to share his Audio/Video. Use the status Icons next to the user in the List of Users to add or remove the right to share Audio/Video for any User.</value>
+  </string>
+  <string id="696" name="moderation message">
+    <value>You have to wait untill a Moderator enters the room.</value>
+  </string>
+  <string id="697" name="calendar button">
+    <value>Cancel</value>
+  </string>
+  <string id="698" name="calendar button">
+    <value>Save</value>
+  </string>
+  <string id="699" name="calendar component">
+    <value>Day</value>
+  </string>
+  <string id="700" name="calendar component">
+    <value>Month</value>
+  </string>
+  <string id="701" name="calendar component">
+    <value>Year</value>
+  </string>
+  <string id="702" name="file explorer">
+    <value>Upload File</value>
+  </string>
+  <string id="703" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="704" name="file explorer">
+    <value>Refresh</value>
+  </string>
+  <string id="705" name="file explorer">
+    <value>Trash (Drag and Drop item here)</value>
+  </string>
+  <string id="706" name="file explorer">
+    <value>My Files (Home Drive)</value>
+  </string>
+  <string id="707" name="file explorer">
+    <value>Room Files (Public Drive)</value>
+  </string>
+  <string id="708" name="file explorer">
+    <value>Add File</value>
+  </string>
+  <string id="709" name="file explorer">
+    <value>Add Folder</value>
+  </string>
+  <string id="710" name="file explorer">
+    <value>Delete Folder</value>
+  </string>
+  <string id="711" name="file explorer">
+    <value>Edit Name</value>
+  </string>
+  <string id="712" name="file explorer">
+    <value>New Folder</value>
+  </string>
+  <string id="713" name="file explorer">
+    <value>Are you sure you want to delete this Item?</value>
+  </string>
+  <string id="714" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="715" name="user admin">
+    <value>Search</value>
+  </string>
+  <string id="716" name="file explorer">
+    <value>Open Document</value>
+  </string>
+  <string id="717" name="file explorer">
+    <value>Show all Files (Tree View)</value>
+  </string>
+  <string id="718" name="file explorer">
+    <value>Close Document</value>
+  </string>
+  <string id="719" name="file explorer">
+    <value>Delete File</value>
+  </string>
+  <string id="720" name="file explorer">
+    <value>You are not allowed to draw anything on the Whiteboard. You have to become Moderator or at least get the Right to edit Whiteboard. You may ask a Moderator to give you that right.</value>
+  </string>
+  <string id="721" name="property panel">
+    <value>Document Properties</value>
+  </string>
+  <string id="722" name="sharing session">
+    <value>Start Client (external)</value>
+  </string>
+  <string id="723" name="sharing session">
+    <value>Start Client (HTTP)</value>
+  </string>
+  <string id="724" name="sharing session">
+    <value>A user want to share his screen. Do you want to see it?</value>
+  </string>
+  <string id="725" name="sharing session">
+    <value>You are currently sharing your Desktop. For stopping the Sharing Session please hit the Stop button in the Sharing Client.</value>
+  </string>
+  <string id="726" name="sharing session">
+    <value>Sharing Session</value>
+  </string>
+  <string id="727" name="sharing session">
+    <value>You are already sharing your desktop!</value>
+  </string>
+  <string id="728" name="sharing client">
+    <value>Desktop Viewer</value>
+  </string>
+  <string id="729" name="sharing client">
+    <value>Exit</value>
+  </string>
+  <string id="730" name="sharing client">
+    <value>Desktop Sharer</value>
+  </string>
+  <string id="731" name="sharing client">
+    <value>Click Start to publish your screen</value>
+  </string>
+  <string id="732" name="sharing client">
+    <value>Start Sharing</value>
+  </string>
+  <string id="733" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="734" name="sharing client">
+    <value>Select your screen area:</value>
+  </string>
+  <string id="735" name="sharing client">
+    <value>Change width</value>
+  </string>
+  <string id="736" name="sharing client">
+    <value>The Sharer has finished this session!</value>
+  </string>
+  <string id="737" name="sharing client">
+    <value>Change height</value>
+  </string>
+  <string id="738" name="sharing client">
+    <value>X-Offset</value>
+  </string>
+  <string id="739" name="sharing client">
+    <value>Y-Offset</value>
+  </string>
+  <string id="740" name="sharing client">
+    <value>Width:</value>
+  </string>
+  <string id="741" name="sharing client">
+    <value>Height:</value>
+  </string>
+  <string id="742" name="sharing client">
+    <value>Connection was closed by Server</value>
+  </string>
+  <string id="743" name="sharing viewer">
+    <value>Cancel</value>
+  </string>
+  <string id="744" name="sharing viewer">
+    <value>Start External</value>
+  </string>
+  <string id="745" name="sharing viewer">
+    <value>If you close this session completely you are not able to restart the viewer for this session.</value>
+  </string>
+  <string id="746" name="sharing viewer">
+    <value>Confirm Closing Viewer Session</value>
+  </string>
+  <string id="747" name="sharing viewer">
+    <value>Share Screen</value>
+  </string>
+  <string id="748" name="sharing viewer">
+    <value>Record Session</value>
+  </string>
+  <string id="749" name="co-browser">
+    <value>Co-Browsing</value>
+  </string>
+  <string id="750" name="co-browser">
+    <value>Ooops, ... Firefox on Windows does not show clear Co-Browsing. Please use another Browser for using the Co-Browsing feature.</value>
+  </string>
+  <string id="751" name="co-browser">
+    <value>Previous</value>
+  </string>
+  <string id="752" name="co-browser">
+    <value>Next</value>
+  </string>
+  <string id="753" name="co-browser">
+    <value>Reload</value>
+  </string>
+  <string id="754" name="co-browser">
+    <value>Home</value>
+  </string>
+  <string id="755" name="co-browser">
+    <value>Load</value>
+  </string>
+  <string id="756" name="co-browser">
+    <value>Add this website as Default website to your Profile.</value>
+  </string>
+  <string id="757" name="test setup">
+    <value>Test Setup</value>
+  </string>
+  <string id="758" name="test setup">
+    <value>Check you Microphone and Camera setup before you enter a room by recording some seconds. You can then replay your recording to check your voice and picture.</value>
+  </string>
+  <string id="759" name="test setup">
+    <value>Don't show this test anymore</value>
+  </string>
+  <string id="760" name="test setup">
+    <value>Cancel</value>
+  </string>
+  <string id="761" name="test setup">
+    <value>Start Conference</value>
+  </string>
+  <string id="762" name="edit video settings">
+    <value>Do not ask again</value>
+  </string>
+  <string id="763" name="test setup">
+    <value>REC</value>
+  </string>
+  <string id="764" name="test setup">
+    <value>PLAY</value>
+  </string>
+  <string id="765" name="test setup">
+    <value>You may proceed without testing if you do not plan to publish your voice or picture. Participants without Audio or Video can still use the Whiteboard, share their Desktop or write Chat messages.</value>
+  </string>
+  <string id="766" name="test setup">
+    <value>STOP</value>
+  </string>
+  <string id="767" name="test setup">
+    <value>Level-Meter</value>
+  </string>
+  <string id="768" name="start view">
+    <value>Press Start</value>
+  </string>
+  <string id="769" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="770" name="start view">
+    <value>Start Event</value>
+  </string>
+  <string id="771" name="start view">
+    <value>Choose Room</value>
+  </string>
+  <string id="772" name="start view">
+    <value>Check Setup</value>
+  </string>
+  <string id="773" name="start view">
+    <value>Start Conference</value>
+  </string>
+  <string id="774" name="start view">
+    <value>How to conference</value>
+  </string>
+  <string id="775" name="test setup">
+    <value>Start Recording</value>
+  </string>
+  <string id="776" name="test setup">
+    <value>Do not show Audio / Video Test (Recording) before entering a Conference</value>
+  </string>
+  <string id="777" name="overview room">
+    <value>Public Rooms</value>
+  </string>
+  <string id="778" name="overview room">
+    <value>Public Rooms are accessible for all Users.</value>
+  </string>
+  <string id="779" name="overview room">
+    <value>Private Rooms</value>
+  </string>
+  <string id="780" name="Private Rooms">
+    <value>Private Rooms are only accessible for users of the same organization.</value>
+  </string>
+  <string id="781" name="overview room">
+    <value>My Rooms</value>
+  </string>
+  <string id="782" name="overview room">
+    <value>Rooms in this section are created for personal usage. There are some standard rooms plus the ones that are created through the calendar and have a start and an end date. The rooms created via the calendar are only listed in this section as long as they are valid.</value>
+  </string>
+  <string id="783" name="restricted room">
+    <value>You have to be moderator to do this.</value>
+  </string>
+  <string id="784" name="menu option">
+    <value>Apply for moderation</value>
+  </string>
+  <string id="785" name="menu option">
+    <value>Apply for whiteboard access</value>
+  </string>
+  <string id="786" name="menu option">
+    <value>Apply for camera/microphone access</value>
+  </string>
+  <string id="787" name="error message soap secure login">
+    <value>This Session Hash was already used. You cannot use it twice.</value>
+  </string>
+  <string id="788" name="dashboard button">
+    <value>START</value>
+  </string>
+  <string id="789" name="exit conference">
+    <value>EXIT</value>
+  </string>
+  <string id="790" name="conference view">
+    <value>Do you really want to exit? You might should clear uploaded documents, whiteboard and the chat history.</value>
+  </string>
+  <string id="791" name="conference view">
+    <value>Exit conference</value>
+  </string>
+  <string id="792" name="main menu">
+    <value>Rooms</value>
+  </string>
+  <string id="793" name="main menu">
+    <value>Choose a room for a meeting</value>
+  </string>
+  <string id="794" name="calendar">
+    <value>There is an unsaved Event in the Calendar. Please either save it or remove it.</value>
+  </string>
+  <string id="795" name="calendar">
+    <value>Please add at least one attendee for your meeting!</value>
+  </string>
+  <string id="796" name="calendar">
+    <value>Do you really want to delete this Event?</value>
+  </string>
+  <string id="797" name="calendar">
+    <value>Warning</value>
+  </string>
+  <string id="798" name="calendar">
+    <value>Add Event</value>
+  </string>
+  <string id="799" name="calendar">
+    <value>Day</value>
+  </string>
+  <string id="800" name="calendar">
+    <value>Week</value>
+  </string>
+  <string id="801" name="calendar">
+    <value>Month</value>
+  </string>
+  <string id="802" name="calendar">
+    <value>Description</value>
+  </string>
+  <string id="803" name="calendar">
+    <value>Attendees</value>
+  </string>
+  <string id="804" name="dashboard">
+    <value>$APP_NAME, your Web Conferencing Platform. Either follow the Instructions, press the start button to start to conference immediatelly or you goto the Calendar and set up a Conference for the future.</value>
+  </string>
+  <string id="805" name="dashboard">
+    <value>Plan a Meeting</value>
+  </string>
+  <string id="806" name="lzcalendar">
+    <value>To set up a conference you can add a new Event in the Calendar.</value>
+  </string>
+  <string id="807" name="lzcalendar">
+    <value>Need help?</value>
+  </string>
+  <string id="808" name="lzcalendar">
+    <value>Restricted</value>
+  </string>
+  <string id="809" name="lzcalender">
+    <value>Search</value>
+  </string>
+  <string id="810" name="lzcalender">
+    <value>Add</value>
+  </string>
+  <string id="811" name="lzcalendar">
+    <value>There is no User selected. Please select an item from the list first and then hit add.</value>
+  </string>
+  <string id="812" name="lzcalendar">
+    <value>Add Attendee</value>
+  </string>
+  <string id="813" name="lzcalendar">
+    <value>Save</value>
+  </string>
+  <string id="814" name="lzcalendar">
+    <value>Delete</value>
+  </string>
+  <string id="815" name="lzcalendar">
+    <value>Event Details</value>
+  </string>
+  <string id="816" name="room admin">
+    <value>Default Moderators</value>
+  </string>
+  <string id="817" name="room admin">
+    <value>Super</value>
+  </string>
+  <string id="818" name="room admin">
+    <value>ID</value>
+  </string>
+  <string id="819" name="room admin">
+    <value>Name</value>
+  </string>
+  <string id="820" name="room admin">
+    <value>E-Mail</value>
+  </string>
+  <string id="821" name="room admin">
+    <value>Add new default Moderator</value>
+  </string>
+  <string id="822" name="room admin">
+    <value>Is Super Moderator</value>
+  </string>
+  <string id="823" name="room admin">
+    <value>If the Room is moderated, User with Level Moderator or Administrator are automatically Moderator if they enter the Room. If you don't want to specify that and only want a certain User to become Moderator use the Default Moderator option.</value>
+  </string>
+  <string id="824" name="room admin">
+    <value>A Super Moderator is always a Moderator when he enters a Room, and nobody can remove the Moderation Flag from him</value>
+  </string>
+  <string id="825" name="room admin">
+    <value>Apply Super-Moderation to User</value>
+  </string>
+  <string id="826" name="room admin">
+    <value>Remove Super Moderation from User</value>
+  </string>
+  <string id="827" name="room admin">
+    <value>D</value>
+  </string>
+  <string id="828" name="room admin">
+    <value>If you add an Organization to the room only users of that Organization have access to it (This is only valid if the isPublic flag is set to false!)</value>
+  </string>
+  <string id="829" name="room admin">
+    <value>Moderation</value>
+  </string>
+  <string id="830" name="room admin">
+    <value>Limitations</value>
+  </string>
+  <string id="831" name="room admin">
+    <value>Organization</value>
+  </string>
+  <string id="832" name="confirm action">
+    <value>Are you sure?</value>
+  </string>
+  <string id="833" name="confirm delete">
+    <value>Do you really want to delete this Item? You have to press the save button to store the changes!</value>
+  </string>
+  <string id="834" name="user choose error">
+    <value>There is no User selected. Please select first before you add it!</value>
+  </string>
+  <string id="835" name="room admin">
+    <value>Add new Default Moderator</value>
+  </string>
+  <string id="836" name="room admin">
+    <value>Do you want to add the Super Moderation Flag for this User? A Super Moderator is not only Moderator of a Room, but also no other Moderator can remove the Moderation Flag for this User. You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="837" name="room admin">
+    <value>Do you want to remove the Super Moderation Flag for this User? You need to save the Room Object to save these settings!</value>
+  </string>
+  <string id="838" name="super moderator">
+    <value>This User is a Super-Moderator. You cannot remove the Moderation flag from a Super-Moderator!</value>
+  </string>
+  <string id="839" name="confirm delete">
+    <value>Do you really want to delete this File/Folder?</value>
+  </string>
+  <string id="840" name="confirm delete">
+    <value>Delete File/Folder?</value>
+  </string>
+  <string id="841" name="salutation">
+    <value>Mrs.</value>
+  </string>
+  <string id="842" name="salutation">
+    <value>Dr.</value>
+  </string>
+  <string id="843" name="property panel whiteboard">
+    <value>Properties</value>
+  </string>
+  <string id="844" name="screen sharer">
+    <value>Show mouse position to viewers</value>
+  </string>
+  <string id="845" name="publish option">
+    <value>Share Audio with SIP Applet</value>
+  </string>
+  <string id="846" name="publish option">
+    <value>Share Audio with SIP and Video with Flash</value>
+  </string>
+  <string id="847" name="document panel">
+    <value>Full-Fit</value>
+  </string>
+  <string id="848" name="screen share">
+    <value>View Screen</value>
+  </string>
+  <string id="849" name="screen share">
+    <value>The user</value>
+  </string>
+  <string id="850" name="screen share">
+    <value>wants to share its screen. Do you want to see it?</value>
+  </string>
+  <string id="851" name="screen share">
+    <value>Close</value>
+  </string>
+  <string id="852" name="screen sharer">
+    <value>Zoom</value>
+  </string>
+  <string id="853" name="screen sharer">
+    <value>The Session was closed by the sharing User!</value>
+  </string>
+  <string id="854" name="screen sharer">
+    <value>Pause</value>
+  </string>
+  <string id="855" name="screen sharer">
+    <value>New Screen Sharing</value>
+  </string>
+  <string id="856" name="presenter mini icon">
+    <value>Minimize</value>
+  </string>
+  <string id="857" name="presenter mini icon">
+    <value>Maximize</value>
+  </string>
+  <string id="858" name="flvrecording">
+    <value>Video</value>
+  </string>
+  <string id="859" name="flvrecording">
+    <value>Recording Timeline</value>
+  </string>
+  <string id="860" name="flvrecording">
+    <value>My Recordings</value>
+  </string>
+  <string id="861" name="flvrecording">
+    <value>Public Recordings</value>
+  </string>
+  <string id="862" name="flvrecording">
+    <value>Info</value>
+  </string>
+  <string id="863" name="flvrecording">
+    <value>Name</value>
+  </string>
+  <string id="864" name="flvrecording">
+    <value>Length</value>
+  </string>
+  <string id="865" name="flvrecording">
+    <value>Date</value>
+  </string>
+  <string id="866" name="flvrecording">
+    <value>By</value>
+  </string>
+  <string id="867" name="flvrecording">
+    <value>PLAY</value>
+  </string>
+  <string id="868" name="flvrecording">
+    <value>Main - Video</value>
+  </string>
+  <string id="869" name="screen share">
+    <value>Recording</value>
+  </string>
+  <string id="870" name="screen share">
+    <value>You may record and share your screen at the same time. To enable others to see your screen just hit the start button on the top. To only record the Session it is sufficient to click start recording.</value>
+  </string>
+  <string id="871" name="screen share">
+    <value>Start Recording</value>
+  </string>
+  <string id="872" name="screen share">
+    <value>Stop Recording</value>
+  </string>
+  <string id="873" name="flvrecording">
+    <value>Download the FLV-File</value>
+  </string>
+  <string id="874" name="flvrecording">
+    <value>Room</value>
+  </string>
+  <string id="875" name="flvrecording">
+    <value>Play</value>
+  </string>
+  <string id="876" name="flvrecording">
+    <value>Stop</value>
+  </string>
+  <string id="877" name="flvrecording">
+    <value>User has microphone on</value>
+  </string>
+  <string id="878" name="sharing client">
+    <value>Stop Sharing</value>
+  </string>
+  <string id="879" name="room config">
+    <value>Allow User Questions</value>
+  </string>
+  <string id="880" name="room config">
+    <value>Turn this off to prevent that any user is disturbing you in this room. Effect is that the Button to ask for Moderation ("I have a question") is not visible.</value>
+  </string>
+  <string id="881" name="room config">
+    <value>Rights</value>
+  </string>
+  <string id="882" name="flvrecording">
+    <value>Download as AVI</value>
+  </string>
+  <string id="883" name="flvrecording">
+    <value>FLV</value>
+  </string>
+  <string id="884" name="flvrecording">
+    <value>AVI</value>
+  </string>
+  <string id="885" name="flvrecording">
+    <value>Raw Screenvideo</value>
+  </string>
+  <string id="886" name="flvrecording">
+    <value>Audio only</value>
+  </string>
+  <string id="887" name="flvrecording">
+    <value>The have been errors while processing the Recording.</value>
+  </string>
+  <string id="888" name="flvrecording">
+    <value>The Recording is not yet ready for watching. Please retry in a couple of minutes again.</value>
+  </string>
+  <string id="889" name="flvrecording">
+    <value>Log:</value>
+  </string>
+  <string id="890" name="flvrecording">
+    <value>Recorder Message</value>
+  </string>
+  <string id="891" name="flvrecording">
+    <value>Ok</value>
+  </string>
+  <string id="892" name="sip applet">
+    <value>SIP Applet is not Ready</value>
+  </string>
+  <string id="893" name="user administration">
+    <value>SIP-Account Settings</value>
+  </string>
+  <string id="894" name="user administration">
+    <value>SIP settings for each user. You can turn on or off SIP via the Administration &gt; Configuration (Key: enable_sip). The SIP data for each user should be created automatically. You can re-create the data by checking "Re-generate SIP Data"</value>
+  </string>
+  <string id="895" name="user administration">
+    <value>SIP-User</value>
+  </string>
+  <string id="896" name="user administration">
+    <value>Sip-Pass</value>
+  </string>
+  <string id="897" name="user administration">
+    <value>Sip-Auth-Id</value>
+  </string>
+  <string id="898" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. You should check the authentification data of your SIP-Provider and the SIP-Account Data for each User. As Administrator you are still able to login and check the Configuration. As User or Moderator you will be blocked from any interaction.</value>
+  </string>
+  <string id="899" name="sip status message">
+    <value>The Login to the SIP Gateway has failed. Contact your Service Team!</value>
+  </string>
+  <string id="900" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="901" name="sip status message">
+    <value>Logging in to SIP-Gateway ...</value>
+  </string>
+  <string id="902" name="flvrecording">
+    <value>Show Log</value>
+  </string>
+  <string id="903" name="flvrecording">
+    <value>Log messages from post recorder process</value>
+  </string>
+  <string id="904" name="sip login">
+    <value>SIP-Applet Message</value>
+  </string>
+  <string id="905" name="sip login">
+    <value>The SIP-Applet is not ready. Accept the Applet please and click ok!</value>
+  </string>
+  <string id="906" name="moderator pop up">
+    <value>Get Moderation</value>
+  </string>
+  <string id="907" name="lzcalendar">
+    <value>Save Appointment Changes</value>
+  </string>
+  <string id="908" name="lzcalendar">
+    <value>The appointement has been changed. Do you want to save those changes? &lt;br/&gt;&lt;br/&gt;All attendees of the appointment will receive a EMail with the updated date and time (depending on the notification type of this appointment).</value>
+  </string>
+  <string id="909" name="flv recorder error message">
+    <value>To access other recordings you have to login the $APP_NAME Application.</value>
+  </string>
+  <string id="910" name="interview video pod">
+    <value>Choose the User for this Video</value>
+  </string>
+  <string id="911" name="interview video choose user">
+    <value>Available Users for this Pod</value>
+  </string>
+  <string id="912" name="interview info">
+    <value>You are a Moderator in this Interview. You can decide who is speaking in this interview and you can start / stop the recording of the Session.</value>
+  </string>
+  <string id="913" name="interview button recording">
+    <value>Start Recording</value>
+  </string>
+  <string id="914" name="interview button recording">
+    <value>Stop Recording</value>
+  </string>
+  <string id="915" name="interview error message">
+    <value>The recording of the Interview is already started.</value>
+  </string>
+  <string id="916" name="interview error message">
+    <value>The recording is already stopped or not been started yet.</value>
+  </string>
+  <string id="917" name="interview recording message">
+    <value>The recording for this interview is already started!</value>
+  </string>
+  <string id="918" name="interview error message">
+    <value>Cancel</value>
+  </string>
+  <string id="919" name="interview error message">
+    <value>The post-processing of an interview takes 5 minutes per 1 minute interview. The current progress of the interview post-processing transcoding is:</value>
+  </string>
+  <string id="920" name="sip creation">
+    <value>You have to enter your password again to auto create the SIP Data</value>
+  </string>
+  <string id="921" name="sip creation">
+    <value>Re-generate SIP Data</value>
+  </string>
+  <string id="922" name="fileexplorer">
+    <value>You cannot move this file or folder into its own sub folder!</value>
+  </string>
+  <string id="923" name="file explorer ">
+    <value>Home drive size</value>
+  </string>
+  <string id="924" name="file explorer">
+    <value>Public drive size</value>
+  </string>
+  <string id="925" name="user-admin">
+    <value>License Settings</value>
+  </string>
+  <string id="926" name="user-admin">
+    <value>You can either bind the user to a expire Date or to a maximum number of minutes when you enable licensing.</value>
+  </string>
+  <string id="927" name="user-admin">
+    <value>Check license</value>
+  </string>
+  <string id="928" name="user-admin">
+    <value>Flatrate</value>
+  </string>
+  <string id="929" name="user-admin">
+    <value>Expire date</value>
+  </string>
+  <string id="930" name="user-admin">
+    <value>Seconds left</value>
+  </string>
+  <string id="931" name="user-admin">
+    <value>Total time</value>
+  </string>
+  <string id="932" name="user-license">
+    <value>Your License has expired. You need to buy new minutes (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="933" name="user-license">
+    <value>Click and buy</value>
+  </string>
+  <string id="934" name="user-license">
+    <value>Time Left on your account:</value>
+  </string>
+  <string id="935" name="user-license">
+    <value>User License Info</value>
+  </string>
+  <string id="936" name="user-license">
+    <value>Info</value>
+  </string>
+  <string id="937" name="user-license">
+    <value>Close</value>
+  </string>
+  <string id="938" name="license-info">
+    <value>Your license has expired. You need either to buy a minute package (Pay-per-minute) or a volume flatrate.</value>
+  </string>
+  <string id="939" name="user-license">
+    <value>License settings</value>
+  </string>
+  <string id="940" name="user-license">
+    <value>You can either buy minutes to make Web-Conferencing (Pay-per-minute).&lt;br/&gt;&lt;br/&gt; Or you buy a volume flatrate about 3-12 months.&lt;br/&gt;&lt;br/&gt;Sending invitations (direct links into Conference Rooms) or creating conference Rooms via the Calendar with external Users is only allowed with a volume flatrate!</value>
+  </string>
+  <string id="941" name="user-license">
+    <value>Buy 60 Minutes 9,99 EURO (16 Cent per Minute)</value>
+  </string>
+  <string id="942" name="user-license">
+    <value>Buy 5 hours 19,99 EURO (6 Cent per minute)</value>
+  </string>
+  <string id="943" name="user-license">
+    <value>Buy 3 month for 29,99 EURO (9,99 Euro per Month)</value>
+  </string>
+  <string id="944" name="user-license">
+    <value>Buy 6 month for 39,99 EURO (6,66 Euro per month)</value>
+  </string>
+  <string id="945" name="user-license">
+    <value>Pay-per-minute</value>
+  </string>
+  <string id="946" name="user-license">
+    <value>Volume flatrate</value>
+  </string>
+  <string id="947" name="user-license">
+    <value>You have unlimited License</value>
+  </string>
+  <string id="948" name="user-license">
+    <value>Your license will expire at:</value>
+  </string>
+  <string id="949" name="user-license">
+    <value>You bought Pay-per-minute. You still have:</value>
+  </string>
+  <string id="950" name="user-license">
+    <value>Buy new credit!</value>
+  </string>
+  <string id="951" name="user-license">
+    <value>Want your own Server?</value>
+  </string>
+  <string id="952" name="user-license">
+    <value>You would like to have $APP_NAME installed on your Server or integrated into your Moodle, SugarCRM, Website or Intranet? Prizings start at 500 Euro per Installation!</value>
+  </string>
+  <string id="953" name="user-license">
+    <value>Or send us a message</value>
+  </string>
+  <string id="954" name="user-license">
+    <value>Answer to:</value>
+  </string>
+  <string id="955" name="user-license">
+    <value>Message:</value>
+  </string>
+  <string id="956" name="user-license">
+    <value>Send</value>
+  </string>
+  <string id="957" name="user-license">
+    <value>Click here to get contact Info and Prizings</value>
+  </string>
+  <string id="958" name="payment-form">
+    <value>Credit Card Details</value>
+  </string>
+  <string id="959" name="payment-form">
+    <value>Firstname</value>
+  </string>
+  <string id="960" name="payment-form">
+    <value>Lastname</value>
+  </string>
+  <string id="961" name="payment-form">
+    <value>Credit Card Type</value>
+  </string>
+  <string id="962" name="payment-form">
+    <value>VISA Card</value>
+  </string>
+  <string id="963" name="payment-form">
+    <value>MasterCard</value>
+  </string>
+  <string id="964" name="payment-form">
+    <value>Discover</value>
+  </string>
+  <string id="965" name="payment-form">
+    <value>American Express</value>
+  </string>
+  <string id="966" name="payment-form">
+    <value>Credit Card Number</value>
+  </string>
+  <string id="967" name="payment-form">
+    <value>Expiration Date</value>
+  </string>
+  <string id="968" name="payment-form">
+    <value>Card Verification Number</value>
+  </string>
+  <string id="969" name="payment-form">
+    <value>Billing Address</value>
+  </string>
+  <string id="970" name="payment-form">
+    <value>Address</value>
+  </string>
+  <string id="971" name="payment-form">
+    <value></value>
+  </string>
+  <string id="972" name="payment-form">
+    <value>City</value>
+  </string>
+  <string id="973" name="payment-form">
+    <value>Country</value>
+  </string>
+  <string id="974" name="payment-form">
+    <value>State (Only US)</value>
+  </string>
+  <string id="975" name="payment-form">
+    <value>ZIP</value>
+  </string>
+  <string id="976" name="payment-form">
+    <value>Amount</value>
+  </string>
+  <string id="977" name="payment-form">
+    <value>Submit</value>
+  </string>
+  <string id="978" name="payment-form">
+    <value>Step 1: $APP_NAME - Payment Form</value>
+  </string>
+  <string id="979" name="payment-form">
+    <value>EMail</value>
+  </string>
+  <string id="980" name="payment-form">
+    <value>Click "Check out with Paypal" to pay.&lt;br/&gt; Paypal accepts VISA, MasterCard, Discover or American Express. &lt;br/&gt;It does not require to sign up with Paypal. &lt;br/&gt;Citizens from Germany can also pay with direct debit (Per Lastschrift-Einzug).</value>
+  </string>
+  <string id="981" name="payment-form">
+    <value>Thank you for buying $APP_NAME. &lt;br/&gt; &lt;br/&gt; As soon as we received the payment your account will be updated.&lt;br/&gt; You will receive an EMail with your invoice as PDF.&lt;br/&gt;You can also check current and past transactions in your profile settings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can close this browser window/tab now and return to $APP_NAME.</value>
+  </string>
+  <string id="982" name="payment-form">
+    <value>Submit and Buy!</value>
+  </string>
+  <string id="983" name="payment-from">
+    <value>Click and Buy!</value>
+  </string>
+  <string id="984" name="payment-from">
+    <value>Step 3: $APP_NAME Payment - Check order and buy!</value>
+  </string>
+  <string id="985" name="payment-from">
+    <value>Name</value>
+  </string>
+  <string id="986" name="payment-mail">
+    <value>Payment received!</value>
+  </string>
+  <string id="987" name="payment-mail">
+    <value>Hi,</value>
+  </string>
+  <string id="988" name="payment-mail">
+    <value>We have received your payment. Your user profile is updated now. See attached your Invoice. The Invoice and all past Invoice can also be downloaded in your user profile.</value>
+  </string>
+  <string id="989" name="payment-mail">
+    <value>Thank you for using $APP_NAME!</value>
+  </string>
+  <string id="990" name="payment-mail">
+    <value>Payment Received $APP_NAME -</value>
+  </string>
+  <string id="991" name="user-settings">
+    <value>Payment and Transaction Status</value>
+  </string>
+  <string id="992" name="user-settings">
+    <value>Transcation Hash</value>
+  </string>
+  <string id="993" name="user-settings">
+    <value>Minutes</value>
+  </string>
+  <string id="994" name="user-settings">
+    <value>Months</value>
+  </string>
+  <string id="995" name="user-settings">
+    <value>EUR</value>
+  </string>
+  <string id="996" name="user-settings">
+    <value>Status</value>
+  </string>
+  <string id="997" name="user-settings">
+    <value>Invoice</value>
+  </string>
+  <string id="998" name="user-settings">
+    <value></value>
+  </string>
+  <string id="999" name="error-license-flat">
+    <value>You need to buy a volume flatrate to be able to send invitations or create meetings via the calendar. With Pay-per-minute it is only possible for you to access $APP_NAME. You cannot allow 3th Parties to access a Meeting.</value>
+  </string>
+  <string id="1000" name="error user">
+    <value>This Email is already used by another User.</value>
+  </string>
+  <string id="1001" name="room-admin">
+    <value>SIP-Settings</value>
+  </string>
+  <string id="1002" name="room-admin">
+    <value>The Conference Number and PIN is automatically created via the OpenXG RPC-Gateway</value>
+  </string>
+  <string id="1003" name="room-admin">
+    <value>SIP Number</value>
+  </string>
+  <string id="1004" name="room-admin">
+    <value>PIN</value>
+  </string>
+  <string id="1005" name="whiteboard">
+    <value>Clear objects on current slide only!</value>
+  </string>
+  <string id="1006" name="co-browser">
+    <value>Only the URL entered in the Status bar is send to participants!</value>
+  </string>
+  <string id="1007" name="team-split">
+    <value>Make Team-Rooms [Breakout session]</value>
+  </string>
+  <string id="1008" name="team-split">
+    <value>Choose users for a new Team-Room!</value>
+  </string>
+  <string id="1009" name="team-split">
+    <value>You can choose users here and create a new Conference Room ("Team Room") for them. The chosen users will automatically switch to the new Team-Room or get a notification. Team-Room Moderators will get additionally a list of current rooms so that they can switch to each room if there are is need for a Moderator.</value>
+  </string>
+  <string id="1010" name="team-split">
+    <value>Username</value>
+  </string>
+  <string id="1011" name="team-split">
+    <value>Login</value>
+  </string>
+  <string id="1012" name="team-split">
+    <value></value>
+  </string>
+  <string id="1013" name="team-split">
+    <value>Users for the new Team-Room:</value>
+  </string>
+  <string id="1014" name="team-split">
+    <value>Create Team-Room</value>
+  </string>
+  <string id="1015" name="team-split">
+    <value>Cancel</value>
+  </string>
+  <string id="1016" name="team-split">
+    <value>Choose at least one user for the Team-Room!</value>
+  </string>
+  <string id="1017" name="team-split">
+    <value>Add user to team</value>
+  </string>
+  <string id="1018" name="team-split">
+    <value>Remove user from Team-Room</value>
+  </string>
+  <string id="1019" name="team-split">
+    <value>User is Team-Room Moderator (He is able to manage Team-Rooms and users of the Team-Room can ask him to come inside)</value>
+  </string>
+  <string id="1020" name="team-split">
+    <value>Roomtype</value>
+  </string>
+  <string id="1021" name="team-split">
+    <value>If you check "Force user to switch to new Team-Room" all chosen users will automatically switch to the newly created Team-Room. Otherwise they get a notification with a button that they &lt;i&gt;can&lt;/i&gt; switch to the new room. Team-Moderators always have the free choice to manage the Team-Rooms and switch between them.</value>
+  </string>
+  <string id="1022" name="team-split">
+    <value>Manage Team-Rooms</value>
+  </string>
+  <string id="1023" name="team-split">
+    <value>You can switch here between all Team-Rooms that you are assigned as Team-Room Moderator. Users inside the Team-Room can send you a message, for example to ask you to come to their room and help them. You can also terminate the Team-Room and all Users will be logged out.</value>
+  </string>
+  <string id="1024" name="team-split">
+    <value>Force user to switch to new Team-Room</value>
+  </string>
+  <string id="1025" name="team-split">
+    <value>Name</value>
+  </string>
+  <string id="1026" name="team-split">
+    <value>Created</value>
+  </string>
+  <string id="1027" name="team-split">
+    <value></value>
+  </string>
+  <string id="1028" name="team-split">
+    <value></value>
+  </string>
+  <string id="1029" name="team-split">
+    <value>Users available</value>
+  </string>
+  <string id="1030" name="team-split">
+    <value>Add a user with the plus from the left or remove it with the cross from the right!</value>
+  </string>
+  <string id="1031" name="team-split">
+    <value>1) Team-Room settings</value>
+  </string>
+  <string id="1032" name="team-split">
+    <value>2) Add users to the Team-Room</value>
+  </string>
+  <string id="1033" name="team-split">
+    <value>Team-Room Name</value>
+  </string>
+  <string id="1034" name="team-split">
+    <value>Team-Room</value>
+  </string>
+  <string id="1035" name="team-split">
+    <value>Change to the Room</value>
+  </string>
+  <string id="1036" name="team-split">
+    <value>Switch to this Team-Room</value>
+  </string>
+  <string id="1037" name="team-split">
+    <value>Terminate Team-Room and logout all Users</value>
+  </string>
+  <string id="1038" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1039" name="team-split">
+    <value>There is a new Team-Room available for you.</value>
+  </string>
+  <string id="1040" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1041" name="team-split">
+    <value>Team-Room Actions</value>
+  </string>
+  <string id="1042" name="team-split">
+    <value>You can re-open this window via the main menu in the "Actions" section!</value>
+  </string>
+  <string id="1043" name="team-split">
+    <value>Send message to Team-Room Moderator</value>
+  </string>
+  <string id="1044" name="team-split">
+    <value>New Team-Room</value>
+  </string>
+  <string id="1045" name="team-split">
+    <value>There is a new Team-Room available. You can switch to that Room. Team-Rooms are like "Workgroups" with additionally possibilities to ask the Team-Room Moderator for help. Your Team-Rooms are also available in the "My Meetings" section.</value>
+  </string>
+  <string id="1046" name="team-split">
+    <value>Switch to Team-Room</value>
+  </string>
+  <string id="1047" name="team-split">
+    <value>Created by:</value>
+  </string>
+  <string id="1048" name="team-split">
+    <value>Team-Room name:</value>
+  </string>
+  <string id="1049" name="team-split">
+    <value>This Window will stay open even if you leave the room!</value>
+  </string>
+  <string id="1050" name="team-split">
+    <value>Users for this Team-Room</value>
+  </string>
+  <string id="1051" name="team-split">
+    <value>3) Other Team-Rooms that you could switch to</value>
+  </string>
+  <string id="1052" name="team-split">
+    <value>Send a message to the Team-Room Moderators. For example if you need help in Moderating the Room or if you have a question about the topic.</value>
+  </string>
+  <string id="1053" name="team-split">
+    <value>Send</value>
+  </string>
+  <string id="1054" name="team-split">
+    <value>2) Users that are invited to this Team-Room</value>
+  </string>
+  <string id="1055" name="team-split">
+    <value>Is Team-Room Moderator</value>
+  </string>
+  <string id="1056" name="team-split">
+    <value>These are all users that the moderator has invited to this Team-Room.</value>
+  </string>
+  <string id="1057" name="team-split">
+    <value>There is no Team-Moderator logged in at the moment!</value>
+  </string>
+  <string id="1058" name="team-split">
+    <value>Please enter a message</value>
+  </string>
+  <string id="1059" name="team-split">
+    <value>Please help us, we have a problem in our Team-Room!</value>
+  </string>
+  <string id="1060" name="team-split">
+    <value>A user from a Team-Room requests your help.</value>
+  </string>
+  <string id="1061" name="team-split">
+    <value>Team-Room request for help</value>
+  </string>
+  <string id="1062" name="team-split">
+    <value>Message:</value>
+  </string>
+  <string id="1063" name="team-split">
+    <value>From:</value>
+  </string>
+  <string id="1064" name="team-split">
+    <value>You are currently not in any Team-Room. But you can switch here to all Team-Rooms that you have access to.</value>
+  </string>
+  <string id="1065" name="backupContent">
+    <value>Backup the System. The Backup includes all User generated data. The configuration is not included as well as the language labels. Because those values are imported with the System Installer. To update your System, export your old system (1) re-install into a new database the new package (2) and import the Backup file again (3). The Backup should be imported before generating data in the newly installed system.</value>
+  </string>
+  <string id="1066" name="backupContent">
+    <value>System Backup</value>
+  </string>
+  <string id="1067" name="user-list">
+    <value>Allow user to share Screen/Record</value>
+  </string>
+  <string id="1068" name="user-list">
+    <value>Deny user to share Screen/Record</value>
+  </string>
+  <string id="1069" name="user-list">
+    <value>User is Moderator, he can do anything!</value>
+  </string>
+  <string id="1070" name="apply for screen/recording">
+    <value>would like to share/record screen.</value>
+  </string>
+  <string id="1071" name="moderation mini icons">
+    <value>You are allowed to share/record screen</value>
+  </string>
+  <string id="1072" name="moderation mini icons">
+    <value>Apply for right to share/record screen.</value>
+  </string>
+  <string id="1073" name="moderation mini icons conference">
+    <value>Allow/Deny right to share/record screen.</value>
+  </string>
+  <string id="1074" name="sound icon">
+    <value>Turn sound off</value>
+  </string>
+  <string id="1075" name="sound icon">
+    <value>Turn sound on</value>
+  </string>
+  <string id="1076" name="room administration">
+    <value>Audio only room</value>
+  </string>
+  <string id="1077" name="room administration">
+    <value>Turn this Flag on and the users will have only the Audio-Option and no Video in a conference room. This can by good to save bandwidth.</value>
+  </string>
+  <string id="1078" name="user list">
+    <value>Allow Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1079" name="user list">
+    <value>Deny Remote Control (During Screen Sharing)</value>
+  </string>
+  <string id="1080" name="user list">
+    <value>Apply for right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1081" name="user list">
+    <value>You are allowed to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1082" name="apply for remote control">
+    <value>would like to remote control screen.</value>
+  </string>
+  <string id="1083" name="user list">
+    <value>User is Moderator, he can do anything! [Remote Desktop Control]</value>
+  </string>
+  <string id="1084" name="user list">
+    <value>Allow/Deny right to Remote Control Screen (During Screen Sharing)</value>
+  </string>
+  <string id="1085" name="right click screen share">
+    <value>1) Your PC to remote PC: To copy and paste text from your clipboard into the remote controlled screen, click on the screen, then right click in the text field and choose "Insert" from the context (right click) menu.&lt;br/&gt;&lt;br/&gt;2) From remote PC to your PC: To copy text from the remote PC to your PC's clipboard, highlight the text with the mouse on the remote screen, then right-click on the remote screen and choose &lt;i&gt;Copy highlighted text&lt;/i&gt;</value>
+  </string>
+  <string id="1086" name="right click screen share">
+    <value>Copy and Paste text from your PC to remote PC and vice-versa.</value>
+  </string>
+  <string id="1087" name="right click screen share">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1088" name="right click screen share">
+    <value>How to copy n paste</value>
+  </string>
+  <string id="1089" name="screen-sharer-quality">
+    <value>Quality of the ScreenShare:</value>
+  </string>
+  <string id="1090" name="screen-sharer-quality">
+    <value>Very high Quality</value>
+  </string>
+  <string id="1091" name="screen-sharer-quality">
+    <value>High Quality</value>
+  </string>
+  <string id="1092" name="screen-sharer-quality">
+    <value>Medium Quality</value>
+  </string>
+  <string id="1093" name="screen-sharer-quality">
+    <value>Low Quality</value>
+  </string>
+  <string id="1094" name="keyboard-input">
+    <value>en_US</value>
+  </string>
+  <string id="1095" name="keyboard-input">
+    <value>de_DE</value>
+  </string>
+  <string id="1096" name="keyboard-input">
+    <value>Keyboard:</value>
+  </string>
+  <string id="1097" name="keyboard-input">
+    <value>Close Webinar!</value>
+  </string>
+  <string id="1098" name="keyboard-input">
+    <value>The Webinar is already closed, you will be redirected to some interesting offerings in</value>
+  </string>
+  <string id="1099" name="room config">
+    <value>Close Room</value>
+  </string>
+  <string id="1100" name="room config">
+    <value>Exit URL</value>
+  </string>
+  <string id="1101" name="room config">
+    <value>Room termination settings</value>
+  </string>
+  <string id="1102" name="room config">
+    <value>If the room is closed users will be redirected to the exit URL.</value>
+  </string>
+  <string id="1103" name="ldap config">
+    <value>Ldap</value>
+  </string>
+  <string id="1104" name="ldap config">
+    <value>ID</value>
+  </string>
+  <string id="1105" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1106" name="ldap config">
+    <value>Config File</value>
+  </string>
+  <string id="1107" name="ldap config">
+    <value>Ldap Config</value>
+  </string>
+  <string id="1108" name="ldap config">
+    <value>Name</value>
+  </string>
+  <string id="1109" name="ldap config">
+    <value>Enabled</value>
+  </string>
+  <string id="1110" name="ldap config">
+    <value>Inserted</value>
+  </string>
+  <string id="1111" name="ldap config">
+    <value>Inserted by</value>
+  </string>
+  <string id="1112" name="ldap config">
+    <value>Updated</value>
+  </string>
+  <string id="1113" name="ldap config">
+    <value>Updated by</value>
+  </string>
+  <string id="1114" name="ldap config">
+    <value>The config files are in the folder webapps/openmeetings/conf. You need to manually upload the files to this folder. Changes to the config file are immediately online.</value>
+  </string>
+  <string id="1115" name="ldap config">
+    <value>Config file name</value>
+  </string>
+  <string id="1116" name="ldap config">
+    <value>If you enable "Add Domain to username" the value of the field "domain" is added to each login that the user enters in the login box. This is useful if the Login in the Ldap is stored including the domain name. Example: User enters "hans" domain is specified as "localhost.com", login that is verified against Ldap is: hans@localhost.com</value>
+  </string>
+  <string id="1117" name="ldap config">
+    <value>Add Domain to username</value>
+  </string>
+  <string id="1118" name="ldap config">
+    <value>Domain</value>
+  </string>
+  <string id="1119" name="remote control">
+    <value>Insert</value>
+  </string>
+  <string id="1120" name="remote control">
+    <value>Copy highlighted text</value>
+  </string>
+  <string id="1121" name="remote control">
+    <value>Remote Clipboard Text</value>
+  </string>
+  <string id="1122" name="remote control">
+    <value>Show remote Clipboard</value>
+  </string>
+  <string id="1123" name="right click screen share">
+    <value>Do not show again</value>
+  </string>
+  <string id="1124" name="right click screen share">
+    <value>Copy text here ...</value>
+  </string>
+  <string id="1125" name="right click screen share">
+    <value>You need the right to remote control (or the moderation) to copy and paste text to or from the remote screen.</value>
+  </string>
+  <string id="1126" name="right click screen share">
+    <value>Edit default settings ...</value>
+  </string>
+  <string id="1127" name="right click screen share">
+    <value>Do not show info box in Remote Control about Copy and Paste</value>
+  </string>
+  <string id="1128" name="calendar">
+    <value>Save</value>
+  </string>
+  <string id="1129" name="calendar">
+    <value>Remove</value>
+  </string>
+  <string id="1130" name="calendar">
+    <value>Cancel</value>
+  </string>
+  <string id="1131" name="chat invite user">
+    <value>Invite user to conference room</value>
+  </string>
+  <string id="1132" name="chat invite user">
+    <value>Choose a conference room. The invited user will get a message with your name and a link to the room.</value>
+  </string>
+  <string id="1133" name="chat user">
+    <value>Connected since:</value>
+  </string>
+  <string id="1134" name="chat invite user">
+    <value>Enter room after sending invitation</value>
+  </string>
+  <string id="1135" name="chat invite user">
+    <value>Invite</value>
+  </string>
+  <string id="1136" name="chat invite user">
+    <value>Message</value>
+  </string>
+  <string id="1137" name="chat invite user">
+    <value>would like to invite you to the conference room:</value>
+  </string>
+  <string id="1138" name="chat invite user">
+    <value>Invite message</value>
+  </string>
+  <string id="1139" name="chat invite user">
+    <value>Send Invitation</value>
+  </string>
+  <string id="1140" name="chat invite user">
+    <value>did &lt;b&gt;not&lt;/b&gt; accept your invitation!</value>
+  </string>
+  <string id="1141" name="chat invite user">
+    <value>Accept</value>
+  </string>
+  <string id="1142" name="chat invite user">
+    <value>Deny</value>
+  </string>
+  <string id="1143" name="user profile">
+    <value>Timezone</value>
+  </string>
+  <string id="1144" name="appointment notification">
+    <value>Event Details</value>
+  </string>
+  <string id="1145" name="appointment notification">
+    <value>Name</value>
+  </string>
+  <string id="1146" name="appointment notification">
+    <value>Description</value>
+  </string>
+  <string id="1147" name="appointment notification">
+    <value>Created by</value>
+  </string>
+  <string id="1148" name="user administration">
+    <value>TimeZone Message</value>
+  </string>
+  <string id="1149" name="user administration">
+    <value>Check "TimeZone Message" to give users a message next time they login to update their profile.</value>
+  </string>
+  <string id="1150" name="time zone update message">
+    <value>Please check the time zone in your user profile.</value>
+  </string>
+  <string id="1151" name="calendar invitation message">
+    <value>New $APP_NAME conference:</value>
+  </string>
+  <string id="1152" name="calendar invitation message">
+    <value>Details:</value>
+  </string>
+  <string id="1153" name="calendar invitation message">
+    <value>Start:</value>
+  </string>
+  <string id="1154" name="calendar invitation message">
+    <value>End:</value>
+  </string>
+  <string id="1155" name="calendar invitation message">
+    <value>Changed $APP_NAME conference:</value>
+  </string>
+  <string id="1156" name="calendar invitation message">
+    <value>Organizer:</value>
+  </string>
+  <string id="1157" name="calendar invitation message">
+    <value>Canceled $APP_NAME conference:</value>
+  </string>
+  <string id="1158" name="calendar invitation message">
+    <value>$APP_NAME conference Reminder:</value>
+  </string>
+  <string id="1159" name="user settings">
+    <value>Community settings</value>
+  </string>
+  <string id="1160" name="user settings">
+    <value>Show contact data to everybody</value>
+  </string>
+  <string id="1161" name="user settings">
+    <value>Add fields of interest that you offer or that you are searching to find interesting partners for a conference. Comma separate the terms (for example: Medical Service, Health assurance, ...)</value>
+  </string>
+  <string id="1162" name="user settings">
+    <value>My offerings</value>
+  </string>
+  <string id="1163" name="user settings">
+    <value>My interests</value>
+  </string>
+  <string id="1164" name="user settings">
+    <value>Name</value>
+  </string>
+  <string id="1165" name="user settings">
+    <value>Timezone</value>
+  </string>
+  <string id="1166" name="user settings">
+    <value>Fields of interest</value>
+  </string>
+  <string id="1167" name="user settings">
+    <value>Contact information</value>
+  </string>
+  <string id="1168" name="user settings">
+    <value>Show contact data to contacts only</value>
+  </string>
+  <string id="1169" name="user settings">
+    <value>Show contact data to nobody</value>
+  </string>
+  <string id="1170" name="user settings">
+    <value>My Profile</value>
+  </string>
+  <string id="1171" name="user settings">
+    <value>Edit settings</value>
+  </string>
+  <string id="1172" name="user settings">
+    <value>Search users</value>
+  </string>
+  <string id="1173" name="user settings">
+    <value>Watch your profile like other see you</value>
+  </string>
+  <string id="1174" name="user settings">
+    <value>Edit your settings, add your interests to be found</value>
+  </string>
+  <string id="1175" name="user settings">
+    <value>Search for other users and extend your network</value>
+  </string>
+  <string id="1176" name="user search">
+    <value>Search</value>
+  </string>
+  <string id="1177" name="user search">
+    <value>User offers</value>
+  </string>
+  <string id="1178" name="user search">
+    <value>User looks for</value>
+  </string>
+  <string id="1179" name="user search">
+    <value>Freetext</value>
+  </string>
+  <string id="1180" name="user search">
+    <value>Name</value>
+  </string>
+  <string id="1181" name="user search">
+    <value>Timezone</value>
+  </string>
+  <string id="1182" name="user search">
+    <value>Offers</value>
+  </string>
+  <string id="1183" name="user search">
+    <value>Searchs</value>
+  </string>
+  <string id="1184" name="user search">
+    <value>Searchresult</value>
+  </string>
+  <string id="1185" name="user search">
+    <value>Actions</value>
+  </string>
+  <string id="1186" name="user search">
+    <value>Add to contacts</value>
+  </string>
+  <string id="1187" name="user search">
+    <value>Send message</value>
+  </string>
+  <string id="1188" name="user search">
+    <value>Contacts and Messages</value>
+  </string>
+  <string id="1189" name="user search">
+    <value>Pending contacts</value>
+  </string>
+  <string id="1190" name="user contacts">
+    <value>Accept</value>
+  </string>
+  <string id="1191" name="user contacts">
+    <value>Deny</value>
+  </string>
+  <string id="1192" name="user contact request">
+    <value>Hi,</value>
+  </string>
+  <string id="1193" name="user contact request">
+    <value>would like to add you as contact.</value>
+  </string>
+  <string id="1194" name="user contact request">
+    <value>Check your contact requests in $APP_NAME or click on those links to accept or deny the request</value>
+  </string>
+  <string id="1195" name="add user contact">
+    <value>This user is already in your contact list or has received an invitation to your contact list that is not answered yet.</value>
+  </string>
+  <string id="1196" name="user contact mail">
+    <value>Your contact list</value>
+  </string>
+  <string id="1197" name="user contacts">
+    <value>Edit your contact and messages,&lt;br/&gt; manage your pending contacts!</value>
+  </string>
+  <string id="1198" name="user contacts">
+    <value>confirmed you as contact!</value>
+  </string>
+  <string id="1199" name="chat info message">
+    <value></value>
+  </string>
+  <string id="1200" name="chat log icon">
+    <value>Show / Copy chat log</value>
+  </string>
+  <string id="1201" name="chat log window">
+    <value>Chat Log</value>
+  </string>
+  <string id="1202" name="private message">
+    <value>From</value>
+  </string>
+  <string id="1203" name="private message">
+    <value>Subject</value>
+  </string>
+  <string id="1204" name="private message">
+    <value>Send</value>
+  </string>
+  <string id="1205" name="private message">
+    <value></value>
+  </string>
+  <string id="1206" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1207" name="private message">
+    <value>New Mail</value>
+  </string>
+  <string id="1208" name="private message">
+    <value>Click to write a new message to any of your contacts</value>
+  </string>
+  <string id="1209" name="private message">
+    <value>Write new message</value>
+  </string>
+  <string id="1210" name="private message">
+    <value>To:</value>
+  </string>
+  <string id="1211" name="private message">
+    <value>Subject:</value>
+  </string>
+  <string id="1212" name="whiteboard full-fit">
+    <value>Enable full fit and the whiteboard will zoom the whole whiteboard so that all&lt;br/&gt;documents are visible according to each participants screen resolution.</value>
+  </string>
+  <string id="1213" name="user-list">
+    <value>Kick user</value>
+  </string>
+  <string id="1214" name="user-list">
+    <value>You cannot kick yourself out of the conference room! If you want to leave it close the browser or use the exit button!</value>
+  </string>
+  <string id="1215" name="kick-user">
+    <value>Do you really want to disconnect this user from this conference room?</value>
+  </string>
+  <string id="1216" name="kick-user">
+    <value>Confirm action ...</value>
+  </string>
+  <string id="1217" name="kick-user">
+    <value>You cannot kick a Super-Moderator out of a room!</value>
+  </string>
+  <string id="1218" name="private message">
+    <value>Book conference room</value>
+  </string>
+  <string id="1219" name="private message">
+    <value>Start</value>
+  </string>
+  <string id="1220" name="private message">
+    <value>End</value>
+  </string>
+  <string id="1221" name="private message">
+    <value>Add an optional request for meeting to the message and create a conference room. The Event is then copied in the calendar of every participant.</value>
+  </string>
+  <string id="1222" name="private message">
+    <value>Inbox</value>
+  </string>
+  <string id="1223" name="private message">
+    <value>Sent</value>
+  </string>
+  <string id="1224" name="private message">
+    <value>Trash</value>
+  </string>
+  <string id="1225" name="private message">
+    <value>This is you! You cannot add yourself as your own contact.</value>
+  </string>
+  <string id="1226" name="user contacts">
+    <value>The user is already denied!</value>
+  </string>
+  <string id="1227" name="user contacts">
+    <value>The user is already approved!</value>
+  </string>
+  <string id="1228" name="user contacts">
+    <value>This user contact hash is invalid!</value>
+  </string>
+  <string id="1229" name="user contacts">
+    <value>User added to contact list!</value>
+  </string>
+  <string id="1230" name="user contacts">
+    <value>User denied as contact and removed from pending contact list!</value>
+  </string>
+  <string id="1231" name="user contacts">
+    <value>There is no such contact!</value>
+  </string>
+  <string id="1232" name="user contacts">
+    <value>Would you really like to remove that contact?</value>
+  </string>
+  <string id="1233" name="user contacts">
+    <value>Confirm contact removal</value>
+  </string>
+  <string id="1234" name="user contacts">
+    <value>Delete contact from list</value>
+  </string>
+  <string id="1235" name="user profile">
+    <value>User Profile</value>
+  </string>
+  <string id="1236" name="user profile">
+    <value>Show user profile</value>
+  </string>
+  <string id="1237" name="private message">
+    <value>Messages</value>
+  </string>
+  <string id="1238" name="private message">
+    <value>Search</value>
+  </string>
+  <string id="1239" name="private message">
+    <value>Select all</value>
+  </string>
+  <string id="1240" name="private message">
+    <value>Select none</value>
+  </string>
+  <string id="1241" name="private message">
+    <value>Select unread</value>
+  </string>
+  <string id="1242" name="private message">
+    <value>Select read</value>
+  </string>
+  <string id="1243" name="private message">
+    <value>Move to folder ...</value>
+  </string>
+  <string id="1244" name="private message">
+    <value>Add new folder ...</value>
+  </string>
+  <string id="1245" name="private message">
+    <value>Delete</value>
+  </string>
+  <string id="1246" name="private message">
+    <value>Deleted mails are still in your trash folder!</value>
+  </string>
+  <string id="1247" name="private message">
+    <value>Mark unread</value>
+  </string>
+  <string id="1248" name="private message">
+    <value>Mark read</value>
+  </string>
+  <string id="1249" name="private message">
+    <value>Answer</value>
+  </string>
+  <string id="1250" name="private message">
+    <value>Answer everybody</value>
+  </string>
+  <string id="1251" name="private message">
+    <value>Forward</value>
+  </string>
+  <string id="1252" name="private message">
+    <value>Actions ...</value>
+  </string>
+  <string id="1253" name="user contacts">
+    <value>Send private message</value>
+  </string>
+  <string id="1254" name="private message">
+    <value>Nothing selected!</value>
+  </string>
+  <string id="1255" name="private message">
+    <value>Move to Inbox</value>
+  </string>
+  <string id="1256" name="private message">
+    <value>Delete (final)</value>
+  </string>
+  <string id="1257" name="private message">
+    <value>This action cannot be undone!</value>
+  </string>
+  <string id="1258" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1259" name="private message">
+    <value>Add folders and organize your messages!</value>
+  </string>
+  <string id="1260" name="private message">
+    <value>Add folder</value>
+  </string>
+  <string id="1261" name="private message">
+    <value>Add</value>
+  </string>
+  <string id="1262" name="private message folder">
+    <value>Delete folder</value>
+  </string>
+  <string id="1263" name="private message folder">
+    <value>You cannot delete this folder, there are still messages inside! Delete first the messages or move them to another folder.</value>
+  </string>
+  <string id="1264" name="private message folder">
+    <value>Edit name</value>
+  </string>
+  <string id="1265" name="private message folder">
+    <value>Do you really want to delete this folder? There is no way to undo that.</value>
+  </string>
+  <string id="1266" name="user contacts">
+    <value>Your request was send to the user. The user will receive a notification to accept or deny your request. Only accepted requests are in your contact list of course!</value>
+  </string>
+  <string id="1267" name="user contacts">
+    <value>Message</value>
+  </string>
+  <string id="1268" name="user view profile">
+    <value>The user does not share his personal contact data.</value>
+  </string>
+  <string id="1269" name="user view profile">
+    <value>The user does share his personal contact data only to contacts.</value>
+  </string>
+  <string id="1270" name="user view profile">
+    <value>Address &amp; Phone</value>
+  </string>
+  <string id="1271" name="error code">
+    <value>You invitation code is no valid, the code is only valid during this specific date and time:</value>
+  </string>
+  <string id="1272" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your change will also update their calendar. Would you really like to update the event?</value>
+  </string>
+  <string id="1273" name="user calendar">
+    <value>Confirm update</value>
+  </string>
+  <string id="1274" name="user contacts">
+    <value>Allow contact to see my calendar (view only)</value>
+  </string>
+  <string id="1275" name="user contacts">
+    <value>Do not share calendar</value>
+  </string>
+  <string id="1276" name="user contacts">
+    <value>Calendar of contacts</value>
+  </string>
+  <string id="1277" name="user contacts">
+    <value>Your contacts need to approve you first to be able to see their calendar.</value>
+  </string>
+  <string id="1278" name="user contacts">
+    <value>You cannot store or delete events from other calendars then your own!</value>
+  </string>
+  <string id="1279" name="user contacts">
+    <value>Show my own calendar again!</value>
+  </string>
+  <string id="1280" name="user calendar">
+    <value>This event is connected to several calendars of other users. Your action will also delete the event from their calendar. Would you really like to delete the event?</value>
+  </string>
+  <string id="1281" name="user calendar">
+    <value>Confirm action</value>
+  </string>
+  <string id="1282" name="user calendar">
+    <value>Enter room</value>
+  </string>
+  <string id="1283" name="user calendar">
+    <value>Access the conference room</value>
+  </string>
+  <string id="1284" name="private message">
+    <value>There is a conference room and event booked with this private message.</value>
+  </string>
+  <string id="1285" name="user calendar">
+    <value>You need to store the event first!</value>
+  </string>
+  <string id="1286" name="access rooms error">
+    <value>There is no such room available. The event in the calendar and connected room is already deleted!</value>
+  </string>
+  <string id="1287" name="nick name">
+    <value>Choose your nickname</value>
+  </string>
+  <string id="1288" name="nick name">
+    <value>Firstname</value>
+  </string>
+  <string id="1289" name="nick name">
+    <value>Lastname</value>
+  </string>
+  <string id="1290" name="nick name">
+    <value>Email</value>
+  </string>
+  <string id="1291" name="nick name">
+    <value>Ok</value>
+  </string>
+  <string id="1292" name="nick name">
+    <value>Minimum length 4 chars! For both, firstname and lastname.</value>
+  </string>
+  <string id="1293" name="nick name">
+    <value>Please enter a valid email!</value>
+  </string>
+  <string id="1294" name="auth from">
+    <value>Facebook</value>
+  </string>
+  <string id="1295" name="auth form">
+    <value>Login with your Facebook account</value>
+  </string>
+  <string id="1296" name="view profile">
+    <value>Member since</value>
+  </string>
+  <string id="1297" name="direct login message">
+    <value>You've logged with your Facebook account. You should update your profile with the correct email. Otherwise you will not receive invitations and private messages from other users.</value>
+  </string>
+  <string id="1298" name="direct login message header">
+    <value>Message</value>
+  </string>
+  <string id="1299" name="direct login message checkbox control">
+    <value>Do not show update profile message again</value>
+  </string>
+  <string id="1300" name="profile settings button">
+    <value>more display options ...</value>
+  </string>
+  <string id="1301" name="private message">
+    <value>New private message:</value>
+  </string>
+  <string id="1302" name="private message">
+    <value>Click here to visit your profile to see the full message ...</value>
+  </string>
+  <string id="1303" name="private message">
+    <value>Reply</value>
+  </string>
+  <string id="1304" name="dashboard">
+    <value>Rooms and chats</value>
+  </string>
+  <string id="1305" name="dashboard">
+    <value>My rooms</value>
+  </string>
+  <string id="1306" name="my rooms">
+    <value>My conference room (for 1-16 users)</value>
+  </string>
+  <string id="1307" name="my rooms">
+    <value>My webinar room (for 1-120 users)</value>
+  </string>
+  <string id="1308" name="room administration">
+    <value>Owner Id</value>
+  </string>
+  <string id="1309" name="login error">
+    <value>Please enter a password</value>
+  </string>
+  <string id="1310" name="login error">
+    <value>You need an account with User-Level User, Moderator or Admin</value>
+  </string>
+  <string id="1311" name="user administration">
+    <value>Web-Service (only access via SOAP)</value>
+  </string>
+  <string id="1312" name="upload file explorer">
+    <value>Do directly load to whiteboard</value>
+  </string>
+  <string id="1313" name="whiteboard close confirmation">
+    <value>Do you really want to remove this whiteboard? This action cannot be undone!</value>
+  </string>
+  <string id="1314" name="whiteboard load WML">
+    <value>Load to whiteboard</value>
+  </string>
+  <string id="1315" name="recording flag">
+    <value>Do not forget start recording! One user per room always needs to start it to have the recording afterwards.</value>
+  </string>
+  <string id="1316" name="recording flag">
+    <value>Start Recording</value>
+  </string>
+  <string id="1317" name="shape">
+    <value>Arrow</value>
+  </string>
+  <string id="1318" name="shape">
+    <value>Circle</value>
+  </string>
+  <string id="1319" name="shape">
+    <value>Line</value>
+  </string>
+  <string id="1320" name="shape">
+    <value>Square</value>
+  </string>
+  <string id="1321" name="shape">
+    <value>Triangle</value>
+  </string>
+  <string id="1322" name="icon">
+    <value>Text/Note</value>
+  </string>
+  <string id="1323" name="icon">
+    <value>Cliparts</value>
+  </string>
+  <string id="1324" name="icon">
+    <value>Draw Free</value>
+  </string>
+  <string id="1325" name="icon">
+    <value>Select/Move</value>
+  </string>
+  <string id="1326" name="icon">
+    <value>Draw Shape</value>
+  </string>
+  <string id="1327" name="icon">
+    <value>Cut/Move</value>
+  </string>
+  <string id="1328" name="icon">
+    <value>Zoom In/Out</value>
+  </string>
+  <string id="1329" name="icon">
+    <value>Print</value>
+  </string>
+  <string id="1330" name="icon">
+    <value>Undo</value>
+  </string>
+  <string id="1331" name="icon">
+    <value>Trash</value>
+  </string>
+  <string id="1332" name="icon">
+    <value>Add Grid</value>
+  </string>
+  <string id="1333" name="icon">
+    <value>Share File</value>
+  </string>
+  <string id="1334" name="icon submenu">
+    <value>Select Shape</value>
+  </string>
+  <string id="1335" name="icon submenu">
+    <value>Select Clipart</value>
+  </string>
+  <string id="1336" name="submenu">
+    <value>Copy</value>
+  </string>
+  <string id="1337" name="submenu">
+    <value>Cut</value>
+  </string>
+  <string id="1338" name="submenu">
+    <value>Paste</value>
+  </string>
+  <string id="1339" name="submenu">
+    <value>Delete</value>
+  </string>
+  <string id="1340" name="submenu">
+    <value>Do you really want to delete the complete content on the whiteboard?</value>
+  </string>
+  <string id="1341" name="submenu">
+    <value>Load directly to whiteboard</value>
+  </string>
+  <string id="1342" name="attendees">
+    <value>Attendees</value>
+  </string>
+  <string id="1343" name="atendee manager">
+    <value>Attendee Manager</value>
+  </string>
+  <string id="1344" name="atendee manager">
+    <value>Present</value>
+  </string>
+  <string id="1345" name="atendee manager">
+    <value>Remote Controll</value>
+  </string>
+  <string id="1346" name="atendee manager">
+    <value>Eject</value>
+  </string>
+  <string id="1347" name="chat">
+    <value>Chat</value>
+  </string>
+  <string id="1348" name="invite attendee">
+    <value>Invite Attendees</value>
+  </string>
+  <string id="1349" name="invite attendee">
+    <value>By Email</value>
+  </string>
+  <string id="1350" name="invite attendee">
+    <value>User is moderator</value>
+  </string>
+  <string id="1351" name="invite attendee">
+    <value>User has webcam switched on</value>
+  </string>
+  <string id="1352" name="fill_option">
+    <value>Deactivate shape fill</value>
+  </string>
+  <string id="1353" name="fill_option">
+    <value>Activate shape fill</value>
+  </string>
+  <string id="1354" name="icon">
+    <value>Snap to Grid</value>
+  </string>
+  <string id="1355" name="allow_recording">
+    <value>Allow recording</value>
+  </string>
+  <string id="1356" name="wait_for_recording">
+    <value>Wait for recording</value>
+  </string>
+  <string id="1357" name="hide_top_bar">
+    <value>Hide topbar</value>
+  </string>
+  <string id="1358" name="fileExplorer">
+    <value>Play video</value>
+  </string>
+  <string id="1359" name="submenu">
+    <value>Do you really want to delete the content on the current slide?</value>
+  </string>
+  <string id="1360" name="activity_window">
+    <value>Accept and grant user right</value>
+  </string>
+  <string id="1361" name="activity_window">
+    <value>Deny</value>
+  </string>
+  <string id="1362" name="activity_window">
+    <value>I</value>
+  </string>
+  <string id="1363" name="activity_window">
+    <value>Activities and actions</value>
+  </string>
+  <string id="1364" name="whiteboard">
+    <value>Remove whiteboard</value>
+  </string>
+  <string id="1365" name="whiteboard">
+    <value>You need the moderation or the right to draw on the whiteboard to remove whiteboards!</value>
+  </string>
+  <string id="1366" name="whiteboard">
+    <value>Not allowed</value>
+  </string>
+  <string id="1367" name="user_left_act_msg">
+    <value>has left the room.</value>
+  </string>
+  <string id="1368" name="clipart icons">
+    <value>Math icons</value>
+  </string>
+  <string id="1369" name="clipart icons">
+    <value>No category</value>
+  </string>
+  <string id="1370" name="login_screen">
+    <value>Color-Style</value>
+  </string>
+  <string id="1371" name="login_screen">
+    <value>Quality</value>
+  </string>
+  <string id="1372" name="login_screen">
+    <value>Domain</value>
+  </string>
+  <string id="1373" name="login_screen">
+    <value>visit</value>
+  </string>
+  <string id="1374" name="login_screen">
+    <value>redorange</value>
+  </string>
+  <string id="1375" name="login_screen">
+    <value>mediumseagreen</value>
+  </string>
+  <string id="1376" name="login_screen">
+    <value>steelblue</value>
+  </string>
+  <string id="1377" name="login_screen">
+    <value>lightsteelblue</value>
+  </string>
+  <string id="1378" name="login_screen">
+    <value>goldenred</value>
+  </string>
+  <string id="1379" name="login_screen">
+    <value>silvergray</value>
+  </string>
+  <string id="1380" name="login_screen">
+    <value>userdefined</value>
+  </string>
+  <string id="1381" name="login_screen">
+    <value>best</value>
+  </string>
+  <string id="1382" name="login_screen">
+    <value>upload</value>
+  </string>
+  <string id="1383" name="login_screen">
+    <value>medium</value>
+  </string>
+  <string id="1384" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1385" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1386" name="give exclusive audio">
+    <value>Mute microphone of others</value>
+  </string>
+  <string id="1387" name="mute self message">
+    <value>You are globally muted by the moderator. You cannot unmute yourself!</value>
+  </string>
+  <string id="1388" name="mute self confirm message title">
+    <value>Mute microphone globally?</value>
+  </string>
+  <string id="1389" name="mute self confirm message message">
+    <value>Do you really want to mute yourself globally? No other user will hear you anymore!</value>
+  </string>
+  <string id="1390" name="mute others confirm message title">
+    <value>Mute microphone locally?</value>
+  </string>
+  <string id="1391" name="mute others confirm message">
+    <value>Do you really want to mute this microphone? You can only mute it locally on your screen. It has no effect to how other users hear this user. Only moderators can turn it off globally!</value>
+  </string>
+  <string id="1392" name="mute others confirm message title">
+    <value>Mute microphone off globally?</value>
+  </string>
+  <string id="1393" name="mute others moderator message">
+    <value>Do you really want to mute this user globally? No other user will hear him anymore!</value>
+  </string>
+  <string id="1394" name="mute status icons">
+    <value>Your sound is on. Click here to send moderator message to mute your microphone globally (in the complete conference room) off!</value>
+  </string>
+  <string id="1395" name="mute status icons">
+    <value>Your sound is off. Click here to send moderator message to unmute your microphone globally (in the complete conference room) on!</value>
+  </string>
+  <string id="1396" name="mute apply self on message">
+    <value>would like that the moderator mutes my microphone globally.</value>
+  </string>
+  <string id="1397" name="mute apply self off message">
+    <value>would like that the moderator unmutes my microphone globally.</value>
+  </string>
+  <string id="1398" name="mute apply of message">
+    <value>want that the moderator unmutes his/her microphone.</value>
+  </string>
+  <string id="1399" name="mute apply of message">
+    <value>want that the moderator mutes his/her microphone.</value>
+  </string>
+  <string id="1400" name="mute status icons">
+    <value>Unmute microphone. Click here to mute his/her microphone globally!</value>
+  </string>
+  <string id="1401" name="mute status icons">
+    <value>Mute microphone. Click here to unmute his/her microphone globally!</value>
+  </string>
+  <string id="1402" name="mute self message">
+    <value>This user is globally muted by the moderator. You cannot unmute him!</value>
+  </string>
+  <string id="1403" name="mute micro">
+    <value>Mute your microphone globally</value>
+  </string>
+  <string id="1404" name="unmute micro">
+    <value>Unmute your microphone globally</value>
+  </string>
+  <string id="1405" name="mute micro">
+    <value>Mute microphone</value>
+  </string>
+  <string id="1406" name="unmute micro">
+    <value>Unmute microphone</value>
+  </string>
+  <string id="1407" name="mute micro">
+    <value>Mute microphone globally</value>
+  </string>
+  <string id="1408" name="unmute micro">
+    <value>Unmute microphone globally</value>
+  </string>
+  <string id="1409" name="mute moderator message">
+    <value>Only moderators can mute or unmute an user globally! To mute your own microphone: Please use the microphone icon in your video pod!</value>
+  </string>
+  <string id="1410" name="poll_name">
+    <value>Poll Name</value>
+  </string>
+  <string id="1411" name="poll_name">
+    <value>You</value>
+  </string>
+  <string id="1412" name="archived_polls">
+    <value>Archieved Polls</value>
+  </string>
+  <string id="1413" name="active_poll">
+    <value>active</value>
+  </string>
+  <string id="1414" name="chart_simple">
+    <value>Simple Chart</value>
+  </string>
+  <string id="1415" name="chart_pie">
+    <value>Pie Chart</value>
+  </string>
+  <string id="1416" name="sign_up_validation">
+    <value>Please enter email</value>
+  </string>
+  <string id="1417" name="chat_notification">
+    <value>New message(s)</value>
+  </string>
+  <string id="1418" name="poll_close">
+    <value>Close Poll</value>
+  </string>
+  <string id="1419" name="poll_close_confirm">
+    <value>Are you sure you want to close this Poll? No one will be able to vote</value>
+  </string>
+  <string id="1420" name="poll_delete">
+    <value>Delete Poll</value>
+  </string>
+  <string id="1421" name="poll_delete_confirm">
+    <value>Are you sure you want to delete this Poll? The results will be deleted as well.</value>
+  </string>
+  <string id="1422" name="language_code">
+    <value>Language ISO Code</value>
+  </string>
+  <string id="1423" name="exclusive_audio_permission">
+    <value>Allow/Deny right to give exclusive audio.</value>
+  </string>
+  <string id="1424" name="allow_exclusive_audio_permission">
+    <value>Allow user to give exclusive audio</value>
+  </string>
+  <string id="1425" name="deny_exclusive_audio_permission">
+    <value>Deny user to give exclusive audio</value>
+  </string>
+  <string id="1426" name="excl_audio apply self on message">
+    <value>would like to get a permission for exclusive audio.</value>
+  </string>
+  <string id="1427" name="excl_audio apply of message">
+    <value>want that the moderator gives me a permission for exclusive audio.</value>
+  </string>
+  <string id="1428" name="excl_audio status icons">
+    <value>Give a permission for exclusive audio.</value>
+  </string>
+  <string id="1429" name="cam_resolution">
+    <value>Cam resolution</value>
+  </string>
+  <string id="1430" name="cam_resolution_info">
+    <value>Changing the resolution affects bandwidth, bigger picture needs more bandwith!</value>
+  </string>
+  <string id="1431" name="exclusive_audio_error">
+    <value>You don't have the right to give yourself or others exclusive audio. You need to apply for the right from the moderator or ask the moderator to give you exclusive audio.</value>
+  </string>
+  <string id="1432" name="exclusive_audio_ask">
+    <value>I would like to get the right for exclusive audio</value>
+  </string>
+  <string id="1433" name="exclusive_audio_action">
+    <value>Give exclusive audio to me (alternatively click on your video pod or press F12)</value>
+  </string>
+  <string id="1434" name="micro is on">
+    <value>Microphone is on!</value>
+  </string>
+  <string id="1435" name="micro is off">
+    <value>Microphone is muted</value>
+  </string>
+  <string id="1436" name="hide_chat">
+    <value>Hide chat</value>
+  </string>
+  <string id="1437" name="hide_activities_and_actions">
+    <value>Hide activities</value>
+  </string>
+  <string id="1438" name="hide_files_explorer">
+    <value>Hide files explorer</value>
+  </string>
+  <string id="1439" name="hide_actions_menu">
+    <value>Hide actions menu</value>
+  </string>
+  <string id="1440" name="hide_screen_sharing">
+    <value>Hide screen sharing</value>
+  </string>
+  <string id="1441" name="hide_whiteboard">
+    <value>Hide whiteboard</value>
+  </string>
+  <string id="1442" name="show microphone status">
+    <value>Show micro status in video</value>
+  </string>
+  <string id="1443" name="layout_options">
+    <value>Layout options</value>
+  </string>
+  <string id="1444" name="calendar new button">
+    <value>New Event</value>
+  </string>
+  <string id="1445" name="calendar password info text">
+    <value>Password protected are the links to the conference that are send to the participents when you save the calendar event, not the room! That means if you save the event multiple times but with different passwords every participent receives a new link that has a different password. But old links still work once send!</value>
+  </string>
+  <string id="1446" name="calendar edit button">
+    <value>Edit details</value>
+  </string>
+  <string id="1447" name="sip show dialer">
+    <value>Show sip dialer</value>
+  </string>
+  <string id="1448" name="sip call">
+    <value>Call</value>
+  </string>
+  <string id="1449" name="calendar contact list">
+    <value>Show calendar events of contact</value>
+  </string>
+  <string id="1450" name="tooltip menu">
+    <value>Your home!</value>
+  </string>
+  <string id="1451" name="tooltip menu">
+    <value>Plan your meetings</value>
+  </string>
+  <string id="1452" name="tooltip menu">
+    <value>Watch recording and interviews</value>
+  </string>
+  <string id="1453" name="tooltip menu">
+    <value>Choose and start a web-conference</value>
+  </string>
+  <string id="1454" name="tooltip menu">
+    <value>Manage users and rights</value>
+  </string>
+  <string id="1455" name="tooltip menu">
+    <value>Manage connections and kick users</value>
+  </string>
+  <string id="1456" name="tooltip menu">
+    <value>Manage usergroups</value>
+  </string>
+  <string id="1457" name="tooltip menu">
+    <value>Manage conference rooms</value>
+  </string>
+  <string id="1458" name="tooltip menu">
+    <value>Manage system settings</value>
+  </string>
+  <string id="1459" name="tooltip menu">
+    <value>Manage labels and wording</value>
+  </string>
+  <string id="1460" name="tooltip menu">
+    <value>Manage LDAP and ADS configurations</value>
+  </string>
+  <string id="1461" name="tooltip menu">
+    <value>Export/Import System Backups</value>
+  </string>
+  <string id="1462" name="file explorer">
+    <value>You need moderation or the right to draw on whiteboard to upload, add, delete or load files and folders.</value>
+  </string>
+  <string id="1463" name="whiteboard">
+    <value>Edit text</value>
+  </string>
+  <string id="1464" name="salutation">
+    <value>Prof</value>
+  </string>
+  <string id="1465" name="sharing client">
+    <value>Publish</value>
+  </string>
+  <string id="1466" name="sharing client">
+    <value>Start Publish</value>
+  </string>
+  <string id="1467" name="sharing client">
+    <value>Stop Publish</value>
+  </string>
+  <string id="1468" name="sharing client">
+    <value>Host</value>
+  </string>
+  <string id="1469" name="sharing client">
+    <value>Publish App</value>
+  </string>
+  <string id="1470" name="sharing client">
+    <value>Publish Id</value>
+  </string>
+  <string id="1471" name="sharing client">
+    <value>Reduce the width of the SharingScreen before you try to move it left</value>
+  </string>
+  <string id="1472" name="sharing client">
+    <value>Reduce the height of the SharingScreen before you try to move it bottom</value>
+  </string>
+  <string id="1473" name="sharing client">
+    <value>Reduce the x of the SharingScreen before you try to make it wider</value>
+  </string>
+  <string id="1474" name="sharing client">
+    <value>Reduce the y of the SharingScreen before you try to make it higher</value>
+  </string>
+  <string id="1475" name="sharing client">
+    <value>Fill these settings stream your screen data to 3th party providers like justin.tv</value>
+  </string>
+  <string id="1476" name="sharing client">
+    <value>Please start Screen sharing to be able to publish it</value>
+  </string>
+  <string id="1477" name="sharing client">
+    <value>Moderator permission required to start recording</value>
+  </string>
+  <string id="1478" name="no right for exclusive audio">
+    <value>You don't have permission to apply exclusive audio to any participant. You need moderation role or the right for exclusive audio to make any microphone exclusive turned on..</value>
+  </string>
+  <string id="1479" name="conference menu">
+    <value>Upload new file to file explorer</value>
+  </string>
+  <string id="1480" name="conference menu">
+    <value>Open new dialog with sharing settings</value>
+  </string>
+  <string id="1481" name="conference menu">
+    <value>An existing moderator must approve it</value>
+  </string>
+  <string id="1482" name="conference menu">
+    <value>Ask moderator to share your webcam/micro</value>
+  </string>
+  <string id="1483" name="conference menu">
+    <value>Gather feedback by creating a poll</value>
+  </string>
+  <string id="1484" name="conference menu">
+    <value>Past and current poll results as charts</value>
+  </string>
+  <string id="1485" name="conference menu">
+    <value>Vote if there is a poll for this conference room</value>
+  </string>
+  <string id="1486" name="conference menu">
+    <value>Edit cam and mic settings</value>
+  </string>
+  <string id="1487" name="conference menu">
+    <value>Confirm and leave the room</value>
+  </string>
+  <string id="1488" name="conference menu">
+    <value>Call external people via VoIP/SIP</value>
+  </string>
+  <string id="1489" name="conference menu">
+    <value>Send an email with a direct link to this room</value>
+  </string>
+  <string id="1490" name="conference menu">
+    <value>Change your whiteboard settings</value>
+  </string>
+  <string id="1491" name="backup admin">
+    <value>Max upload size</value>
+  </string>
+  <string id="1492" name="conference menu">
+    <value>Ask moderator to share your whiteboard</value>
+  </string>
+  <string id="1493" name="private chat">
+    <value>Start Private Chat</value>
+  </string>
+  <string id="1494" name="all_private_chat">
+    <value>All</value>
+  </string>
+  <string id="1495" name="private chat">
+    <value>You cannot start a private chat with yourself.</value>
+  </string>
+  <string id="1496" name="private chat">
+    <value>You've already started a private chat with this participant.</value>
+  </string>
+  <string id="1497" name="private chat">
+    <value>Do you really want to delete this private chat?</value>
+  </string>
+  <string id="1498" name="Servers">
+    <value>Servers</value>
+  </string>
+  <string id="1499" name="Servers">
+    <value>Servers participating in cluster</value>
+  </string>
+  <string id="1500" name="Server name">
+    <value>Server Name</value>
+  </string>
+  <string id="1501" name="Server Address">
+    <value>Server Address</value>
+  </string>
+  <string id="1502" name="Server details">
+    <value>Server details</value>
+  </string>
+  <string id="1503" name="Send SMS">
+    <value>Send SMS</value>
+  </string>
+  <string id="1504" name="publishing_message">
+    <value>Publishing. User:</value>
+  </string>
+  <string id="1505" name="cmd_line_admin">
+    <value>To save time and internet traffic you can use command line admin to backup/restore/upgrade: &lt;ol&gt; &lt;li&gt;go to OM install dir (for ex. /opt/red5)&lt;/li&gt; &lt;li&gt;stop OM (for ex. ./red5-shutdown.sh)&lt;/li&gt; &lt;li&gt;./admin.sh -b -file ~/today_om_backup.zip (create backup of current OM)&lt;/li&gt; &lt;li&gt;download archive with new OM&lt;/li&gt; &lt;li&gt;mv /opt/red5 /opt.red5.bak (move working version of OM just in case :))&lt;/li&gt; &lt;li&gt;extract downloaded OM to the /opt/red5&lt;/li&gt; &lt;li&gt;./admin.sh -i -file ~/today_om_backup.zip (or './admin.sh -i -file ~/today_om_backup.zip --db-type mysql --db-user om_user --db-pass om_user_pass' in case of you are using non-default DB )&lt;/li&gt; &lt;li&gt;start OM&lt;/li&gt; &lt;/ol&gt;</value>
+  </string>
+  <string id="1506" name="public_room_tooltip">
+    <value>Rooms common to all user</value>
+  </string>
+  <string id="1507" name="private_room_tooltip">
+    <value>Rooms common to the current user group</value>
+  </string>
+  <string id="1508" name="my_room_tooltip">
+    <value>Rooms of the current user</value>
+  </string>
+  <string id="1509" name="create_new_room">
+    <value>Create/Modify appointment special room</value>
+  </string>
+  <string id="1510" name="multiple_addresses">
+    <value>You can enter multiple addresses in the format: firstname1 lastname1 &lt;email1&gt;,"firstname2 lastname2" &lt;email2&gt;,'firstname3 lastname3' &lt;email3&gt;, ...</value>
+  </string>
+  <string id="1511" name="stream_volume">
+    <value>Adjust stream volume</value>
+  </string>
+  <string id="1512" name="microphone_volume">
+    <value>Adjust microphone volume</value>
+  </string>
+  <string id="1513" name="chat_moderated">
+    <value>Is chat moderated</value>
+  </string>
+  <string id="1514" name="chat_moderated">
+    <value>Allow message</value>
+  </string>
+  <string id="1515" name="chat_opened">
+    <value>Chat panel opened by default</value>
+  </string>
+  <string id="1516" name="files_opened">
+    <value>Files panel opened by default</value>
+  </string>
+  <string id="1517" name="server admin section lastping">
+    <value>Last ping</value>
+  </string>
+  <string id="1518" name="server admin section lastping info">
+    <value>Every slave sends a ping to the master every 3 seconds (configurable). Slave lastPing must be smaller then 1 minute so that the master uses the slave.</value>
+  </string>
+  <string id="1519" name="server admin port">
+    <value>HTTP Port</value>
+  </string>
+  <string id="1520" name="server admin user">
+    <value>User (SOAP-Access)</value>
+  </string>
+  <string id="1521" name="server admin password">
+    <value>Password</value>
+  </string>
+  <string id="1522" name="server admin webapp path">
+    <value>Webapp path</value>
+  </string>
+  <string id="1523" name="server admin protocol">
+    <value>Protocol</value>
+  </string>
+  <string id="1524" name="server admin ping running">
+    <value>Ping running</value>
+  </string>
+  <string id="1525" name="server admin active">
+    <value>Active</value>
+  </string>
+  <string id="1526" name="generate_hash">
+    <value>Generate URL</value>
+  </string>
+  <string id="1527" name="network testing link">
+    <value>Network testing</value>
+  </string>
+  <string id="1528" name="room_options">
+    <value>Auto select interview video pod</value>
+  </string>
+  <string id="1529" name="font_underline">
+    <value>Underline</value>
+  </string>
+  <string id="1530" name="font_style">
+    <value>Font style</value>
+  </string>
+  <string id="1531" name="allow_font_styles">
+    <value>Allow font styles</value>
+  </string>
+  <string id="1532" name="font_color">
+    <value>Font color</value>
+  </string>
+  <string id="1533" name="hyperlink">
+    <value>Hyperlink</value>
+  </string>
+  <string id="1534" name="connection admin">
+    <value>Show session statistics</value>
+  </string>
+  <string id="1535" name="connection admin">
+    <value>Session details</value>
+  </string>
+  <string id="1536" name="system_import">
+    <value>System import</value>
+  </string>
+  <string id="1537" name="include_into_backup">
+    <value>Include uploaded files and recordings in backup</value>
+  </string>
+  <string id="1538" name="room_admin_sip">
+    <value>Enable SIP transport in the room</value>
+  </string>
+  <string id="1539" name="exclusive_audio_confirm">
+    <value>Do you really want to provide this user an exclusive audio?</value>
+  </string>
+  <string id="1540" name="no_timezone">
+    <value>Please specify your timezone</value>
+  </string>
+  <string id="1541" name="conference_room_type">
+    <value>conference (1-25 users)</value>
+  </string>
+  <string id="1542" name="conference_room_type">
+    <value>restricted (1-150 users)</value>
+  </string>
+  <string id="1543" name="conference_room_type">
+    <value>interview (1:1 meeting with recording)</value>
+  </string>
+  <string id="1544" name="duplicate_key_error">
+    <value>Configuration with given key already exists, please specify another key or edit existent configuration</value>
+  </string>
+  <string id="1545" name="content_is_saving">
+    <value>Content is Saving, Please wait.</value>
+  </string>
+  <string id="1546" name="widget_welcome">
+    <value>Welcome</value>
+  </string>
+  <string id="1547" name="widget_welcome_desc">
+    <value>Widget displaying basic user info and support links</value>
+  </string>
+  <string id="1548" name="widgets_tab">
+    <value>Widgets</value>
+  </string>
+  <string id="1549" name="about_title">
+    <value>About</value>
+  </string>
+  <string id="1550" name="about_name">
+    <value>Name</value>
+  </string>
+  <string id="1551" name="about_version">
+    <value>Version</value>
+  </string>
+  <string id="1552" name="about_revision">
+    <value>Revision</value>
+  </string>
+  <string id="1553" name="about_build_date">
+    <value>Build date</value>
+  </string>
+  <string id="1554" name="about_build_date">
+    <value>Loading ...</value>
+  </string>
+  <string id="1555" name="calendar_today">
+    <value>today</value>
+  </string>
+  <string id="1556" name="calendar_shortmonthnames">
+    <value>Jan</value>
+  </string>
+  <string id="1557" name="calendar_shortmonthnames">
+    <value>Feb</value>
+  </string>
+  <string id="1558" name="calendar_shortmonthnames">
+    <value>Mar</value>
+  </string>
+  <string id="1559" name="calendar_shortmonthnames">
+    <value>Apr</value>
+  </string>
+  <string id="1560" name="calendar_shortmonthnames">
+    <value>May</value>
+  </string>
+  <string id="1561" name="calendar_shortmonthnames">
+    <value>Jun</value>
+  </string>
+  <string id="1562" name="calendar_shortmonthnames">
+    <value>Jul</value>
+  </string>
+  <string id="1563" name="calendar_shortmonthnames">
+    <value>Aug</value>
+  </string>
+  <string id="1564" name="calendar_shortmonthnames">
+    <value>Sep</value>
+  </string>
+  <string id="1565" name="calendar_shortmonthnames">
+    <value>Oct</value>
+  </string>
+  <string id="1566" name="calendar_shortmonthnames">
+    <value>Nov</value>
+  </string>
+  <string id="1567" name="calendar_shortmonthnames">
+    <value>Dec</value>
+  </string>
+  <string id="1568" name="remindertype_no_email">
+    <value>do not send notification</value>
+  </string>
+  <string id="1569" name="remindertype_simple_email">
+    <value>simple email</value>
+  </string>
+  <string id="1570" name="remindertype_iCal_email">
+    <value>iCal email</value>
+  </string>
+  <string id="1571" name="oauth2">
+    <value>OAuth2</value>
+  </string>
+  <string id="1572" name="oauth2">
+    <value>Manage OAuth2 configurations</value>
+  </string>
+  <string id="1573" name="oauth2">
+    <value>Name</value>
+  </string>
+  <string id="1574" name="oauth2">
+    <value>Enabled</value>
+  </string>
+  <string id="1575" name="oauth2">
+    <value>Icon URL</value>
+  </string>
+  <string id="1576" name="oauth2">
+    <value>client_id</value>
+  </string>
+  <string id="1577" name="oauth2">
+    <value>client_secret</value>
+  </string>
+  <string id="1578" name="oauth2">
+    <value>Request key URL</value>
+  </string>
+  <string id="1579" name="oauth2">
+    <value>Request token URL</value>
+  </string>
+  <string id="1580" name="oauth2">
+    <value>Request info URL</value>
+  </string>
+  <string id="1581" name="oauth2">
+    <value>OAuth2 config</value>
+  </string>
+  <string id="1582" name="oauth2">
+    <value>Login param name</value>
+  </string>
+  <string id="1583" name="oauth2">
+    <value>Email param name</value>
+  </string>
+  <string id="1584" name="oauth2">
+    <value>Firstname param name</value>
+  </string>
+  <string id="1585" name="oauth2">
+    <value>Lastname param name</value>
+  </string>
+  <string id="1586" name="oauth2">
+    <value>Request token attributes</value>
+  </string>
+  <string id="1587" name="oauth2">
+    <value>Redirect uri</value>
+  </string>
+  <string id="1588" name="multiple_addresses">
+    <value>You can enter email address in the format: firstname1 lastname1 &lt;email1&gt; or "firstname2 lastname2" &lt;email2&gt; or 'firstname3 lastname3' &lt;email3&gt; or email</value>
+  </string>
+  <string id="1589" name="notify_on_disconnect">
+    <value>Notify on disconnect</value>
+  </string>
+  <string id="1590" name="dashboard.display">
+    <value>Display</value>
+  </string>
+  <string id="1591" name="register.confirmation.sent">
+    <value>Your account has been created. Confirmation email has been sent. You can now login.</value>
+  </string>
+  <string id="1592" name="end.date.is.earlier.than.start">
+    <value>End date entered is earlier than start date.</value>
+  </string>
+  <string id="1593" name="recording.errors.exit.val">
+    <value>Exit value</value>
+  </string>
+  <string id="1594" name="recording.errors.conversion.messages">
+    <value>Conversion messages</value>
+  </string>
+  <string id="1595" name="recording.errors.file.not.found">
+    <value>Recording file is not found</value>
+  </string>
+  <string id="1596" name="whiteboard.add_whiteboard">
+    <value>Add Whiteboard</value>
+  </string>
+  <string id="1597" name="multiple_addresses">
+    <value>You can enter address in the format: firstname1 lastname1 &lt;email1&gt; OR "firstname2 lastname2" &lt;email2&gt; OR 'firstname3 lastname3' &lt;email3&gt;</value>
+  </string>
+  <string id="1598" name="security">
+    <value>Security</value>
+  </string>
+  <string id="1599" name="security">
+    <value>Access denied. You have no rights to enter this room.</value>
+  </string>
+  <string id="1600" name="record-re-start">
+    <value>Re-convert</value>
+  </string>
+</language>
diff --git a/src/main/webapp/public/cliparts/ambulance.png b/src/main/webapp/public/cliparts/ambulance.png
new file mode 100644
index 0000000..c61cc33
--- /dev/null
+++ b/src/main/webapp/public/cliparts/ambulance.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/bow.png b/src/main/webapp/public/cliparts/bow.png
new file mode 100644
index 0000000..43cc3f5
--- /dev/null
+++ b/src/main/webapp/public/cliparts/bow.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/community.png b/src/main/webapp/public/cliparts/community.png
new file mode 100644
index 0000000..d56e169
--- /dev/null
+++ b/src/main/webapp/public/cliparts/community.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/help.png b/src/main/webapp/public/cliparts/help.png
new file mode 100644
index 0000000..6b7db6a
--- /dev/null
+++ b/src/main/webapp/public/cliparts/help.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/home.png b/src/main/webapp/public/cliparts/home.png
new file mode 100644
index 0000000..149583c
--- /dev/null
+++ b/src/main/webapp/public/cliparts/home.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/idea.png b/src/main/webapp/public/cliparts/idea.png
new file mode 100644
index 0000000..cc2a3c7
--- /dev/null
+++ b/src/main/webapp/public/cliparts/idea.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/swim.png b/src/main/webapp/public/cliparts/swim.png
new file mode 100644
index 0000000..fbb6f25
--- /dev/null
+++ b/src/main/webapp/public/cliparts/swim.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/ambulance.png b/src/main/webapp/public/cliparts/thumb/ambulance.png
new file mode 100644
index 0000000..c61cc33
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/ambulance.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/bow.png b/src/main/webapp/public/cliparts/thumb/bow.png
new file mode 100644
index 0000000..43cc3f5
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/bow.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/community.png b/src/main/webapp/public/cliparts/thumb/community.png
new file mode 100644
index 0000000..d56e169
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/community.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/help.png b/src/main/webapp/public/cliparts/thumb/help.png
new file mode 100644
index 0000000..6b7db6a
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/help.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/home.png b/src/main/webapp/public/cliparts/thumb/home.png
new file mode 100644
index 0000000..149583c
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/home.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/idea.png b/src/main/webapp/public/cliparts/thumb/idea.png
new file mode 100644
index 0000000..cc2a3c7
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/idea.png
Binary files differ
diff --git a/src/main/webapp/public/cliparts/thumb/swim.png b/src/main/webapp/public/cliparts/thumb/swim.png
new file mode 100644
index 0000000..fbb6f25
--- /dev/null
+++ b/src/main/webapp/public/cliparts/thumb/swim.png
Binary files differ
diff --git a/src/main/webapp/public/config.xml b/src/main/webapp/public/config.xml
new file mode 100644
index 0000000..8fcae54
--- /dev/null
+++ b/src/main/webapp/public/config.xml
@@ -0,0 +1,308 @@
+<?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.
+  
+-->
+<config 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="config.xsd">
+
+<!-- URL/IP to use for the Server for RTMP and RTMPT traffic.
+    If this value is empty it will try to connect to the 
+    domain-name the OpenMeetings-Client has been loading from
+    
+    Can be either and IP or a domain name. 
+    For example: 
+    <rtmphostlocal>192.168.254.182</rtmphostlocal>
+    or
+    <rtmphostlocal>mysubdomain.streaming.to</rtmphostlocal>
+    -->
+<rtmphostlocal></rtmphostlocal>
+
+<!-- URL/IP to use for the Server for HTTP and HTTPS traffic.
+    If this value is empty it will use the rtmphostlocal 
+    variable (and in that way try to connect to the 
+    domain-name the OpenMeetings-Client has been loading from)
+    -->
+<httphostlocal></httphostlocal>
+
+<!--  
+Port to use for the Server
+To this port the default server lookup is done
+
+You can find all this configuration in your red5-Config in: $RED5_HOME/conf/red5.properties
+ -->
+<rtmpport>1935</rtmpport>
+
+<rtmpsslport>8443</rtmpsslport>
+<!--
+Wether it should try to connect to rtmps first or not
+Valid values: yes / no
+
+NOTE: The OSx and Linux Flash Player are NOT able to connect via rtmps
+The support for Windows is experimental
+ -->
+<useSSL>no</useSSL>
+
+<!-- 
+Port to use for the Server
+This port is used to connect to the http-servlet
+of the red5-servlet
+ -->
+<red5httpport>5080</red5httpport>
+
+<!--
+    The protocol to use for the http connections
+    for example upload/download of files 
+ -->
+<protocol>http</protocol>
+
+<!--
+    The setting for the NetConnection
+    default settings is "none"
+    set to value "best" if you are trying to use rtmp over native SSL
+    see: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetConnection.html#proxyType
+ -->
+<proxyType>none</proxyType>
+	
+<!--
+    Name of the Application
+    this is the Top-Icon Name of the Application
+ -->    
+<currentappname>Apache OpenMeetings</currentappname>    
+    
+<!-- 
+    URL to the Home of the Application
+    this is the URL which is used if you click on the Top-icon
+-->    
+<currentappnameurl>http://openmeetings.apache.org</currentappnameurl>        
+
+<!--
+    URL to Bugs/Support
+    this is the URL which is used if you click on *report a bug*
+ -->
+<currentappnamebugurl>https://issues.apache.org/jira/browse/OPENMEETINGS</currentappnamebugurl>   
+        
+<!--
+    Video-Settings
+    
+    Number that specifies the amount of sound required to activate the microphone 
+	Acceptable values from 0 to 100.	
+    this value is used in Audio_Streaming, at which the *activity-meter* will
+    send a notification for all connected hosts of a conference
+    the result of this notification is that you see the green-light highlighted if
+    a remote user is speaking
+ -->
+<loudnessAcitviation>0</loudnessAcitviation>  
+    
+<!--
+    OpenMeetings-Webapp Name
+    This is the name of the WebApp the Client will try to connect
+    in former versions (till 0.5 Beta7) the name was xmlcrm
+    the same param kann be find in the webapp in the Red5-Webapp
+    red5-web.properties
+    web.xml
+ -->
+<webAppRootKey>openmeetings</webAppRootKey>  
+
+<!--
+    We need this additional ROOT-Key as we have to deploy the application 
+    as Global Contex Root. 
+    
+    If the rtmpt issues is solved sothat several Webapps can use different RTMPT connection
+    we might change this value again to its origin / webapp-context
+
+ -->
+<httpRootKey>/openmeetings/</httpRootKey>  
+    
+<!--
+    Window-Effect Settings
+    showWindowEffect-values:
+    y = yes
+    n = no
+    showWindowEffectOpacity-values
+    between 0 and 1
+ -->
+<showWindowEffect>n</showWindowEffect> 
+
+<!--
+    Show the recorder buttons in the Conference Rooms
+    visible = yes
+    hidden = no
+ -->	
+<showRecording>hidden</showRecording>
+
+<!--
+    
+	To enable the modern whiteboard Panel you need to switch this to y
+    old menu bar is not active any more
+    
+<showmodernWhiteBoard>y</showmodernWhiteBoard>    
+ -->    
+	
+<!--
+	First day in the Week used by the Calendar
+	0 means Sunday
+	1 means Monday
+	this is the way how the calendar UI shows a week
+-->
+<firstdayinweek>0</firstdayinweek>	
+    
+    
+<!--
+    #############################################################################
+    Audio and Video Settings
+    Before you change settings here,
+    you should first Play and learn how the Settings work in the Documentation:
+    http://code.google.com/p/openmeetings/wiki/AudioVideoTestingApplication
+    #############################################################################
+ -->
+ 
+<!-- Camera Settings for codecType
+
+    codecType possible values:
+    h263
+    h264
+    If you want to use red5sip, set value to "h264"
+ -->
+<codecType>h263</codecType>
+ 
+<!-- Camera Settings for the FramesPerSecond
+    
+    fps:Number [optional] - The requested rate at which the camera should capture 
+    data, in frames per second. The default value is 15.
+ -->    
+<framesPerSecond>30</framesPerSecond>
+    
+    
+<!-- Camera Settings for the Bandwidth:
+    
+    bandwidth:Number [optional] - An integer that specifies the maximum amount 
+    of bandwidth that the current outgoing video feed can use, in bytes per second. 
+    To specify that Flash video can use as much bandwidth as needed to maintain 
+    the value of frameQuality, pass 0 for bandwidth. The default value is 16384.
+ -->
+<!-- These are the settings for the Quality-Modus *normal*
+    The Quality-Modus can be chosen in the Login-Box --> 
+<bandwidthNeededNormal>16384</bandwidthNeededNormal>    
+<!-- These are the settings for the Quality-Modus *best* -->    
+<bandwidthNeededBest>0</bandwidthNeededBest>
+    
+    
+<!-- Camera Settings for the Quality
+    
+    quality:Number [optional] - An integer that specifies the required level of 
+    picture quality, as determined by the amount of compression being applied to 
+    each video frame. Acceptable values range from 1 (lowest quality, maximum 
+    compression) to 100 (highest quality, no compression). To specify that picture 
+    quality can vary as needed to avoid exceeding bandwidth, pass 0 for quality. 
+    The default value is 0.
+ --> 
+<!-- These are the settings for the Quality-Modus *normal* -->  
+<camQualityNormal>85</camQualityNormal>     
+<!-- These are the settings for the Quality-Modus *best* -->       
+<camQualityBest>90</camQualityBest> 
+    
+    
+<!-- Microphone Settings for the Rate:
+    
+    rate:Number - 
+    The rate at which the microphone should capture sound, in kHz. 
+    Acceptable values are 5, 8, 11, 22, and 44. 
+    The default value is 8 kHz if your sound capture 
+    device supports this value. Otherwise, the default value 
+    is the next available capture level above 8 kHz that your sound 
+    capture device supports, usually 11 kHz.
+ -->
+<!-- Microphone Settings Quality-Modus -->
+<microphoneRateBest>22</microphoneRateBest>
+
+<!-- AEC configuration value
+Specifies the echo path length (in milliseconds). A longer echo path means better 
+echo cancellation but also introduces longer delays and requires more processing power. 
+The default value is 128; the only other possible value is 256.
+To disable AEC please specify 0.
+ -->
+<echoPath>128</echoPath>
+
+<!--
+    Set "true" or "false" to enable/disable microphone echo suppression
+ -->
+<echoSuppression>true</echoSuppression>
+
+<!--
+    The Size of the Whiteboard
+    The Whiteboard has scrollbars so you may increase the size without problems
+ -->
+<defaultWhiteboardWidth>2400</defaultWhiteboardWidth>  
+<defaultWhiteboardHeight>1200</defaultWhiteboardHeight>  
+
+<!-- Available Configurations -->
+
+<availableCameraResolutions>
+    <resolution type="4:3 (~6 KByte/sec)" width="40" height="30" isDefault="false" />
+    <resolution type="4:3 (~12 KByte/sec)" width="80" height="60" isDefault="false" />
+    <resolution type="4:3 (~20 KByte/sec)" width="120" height="90" isDefault="true" />
+    <resolution type="QQVGA 4:3 (~36 KByte/sec)" width="160" height="120" isDefault="false" />
+    <resolution type="4:3 (~40 KByte/sec)" width="240" height="180" isDefault="false" />
+    <resolution type="HVGA 4:3 (~56 KByte/sec)" width="320" height="240" isDefault="false" />
+    <resolution type="4:3  (~60 KByte/sec)" width="480" height="360" isDefault="false" />
+    <resolution type="4:3 (~68 KByte/sec)" width="640" height="480" isDefault="false" />
+    <resolution type="XGA 4:3" width="1024" height="768" isDefault="false" />
+    <resolution type="16:9" width="256" height="150" isDefault="false" />
+    <resolution type="WQVGA 9:5" width="432" height="240" isDefault="false" />
+    <resolution type="pseudo 16:9" width="480" height="234" isDefault="false" />
+    <resolution type="16:9" width="512" height="300" isDefault="false" />
+    <resolution type="nHD 16:9" width="640" height="360" isDefault="false" />
+    <resolution type="16:9" width="1024" height="600" isDefault="false" />
+</availableCameraResolutions>
+    
+ 
+<!-- Module Configuration -->
+<!-- #############################################
+    Moderator Modules
+ -->
+
+<moderatorModuleUser>userModerate</moderatorModuleUser>
+
+<moderatorModuleRoom>roomModerate</moderatorModuleRoom>
+
+
+<!-- #############################################
+    Conference Room
+    
+    Room Layout's: flexibleConferenceRoom,conferenceView
+ -->
+
+<conferenceRoomModule>flexibleConferenceRoom</conferenceRoomModule>
+
+<!-- #############################################
+    Event Room
+    
+    Room Layouts: flexibleRestrictedConferenceRoom,restrictedConferenceRoom
+ -->
+<restrictedRoomModule>restrictedConferenceRoom</restrictedRoomModule>
+
+<!-- #############################################
+    Interview Room
+    
+    Room Layouts: interviewConferenceRoom
+ -->
+<interviewRoomModule>interviewConferenceRoom</interviewRoomModule>
+        
+</config>
diff --git a/src/main/webapp/public/config.xsd b/src/main/webapp/public/config.xsd
new file mode 100644
index 0000000..777d7f5
--- /dev/null
+++ b/src/main/webapp/public/config.xsd
@@ -0,0 +1,151 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="config">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="rtmphostlocal"/>
+        <xs:element ref="httphostlocal"/>
+        <xs:element ref="rtmpport"/>
+        <xs:element ref="rtmpsslport"/>
+        <xs:element ref="useSSL"/>
+        <xs:element ref="red5httpport"/>
+        <xs:element ref="protocol"/>
+        <xs:element ref="proxyType"/>
+        <xs:element ref="currentappname"/>
+        <xs:element ref="currentappnameurl"/>
+        <xs:element ref="currentappnamebugurl"/>
+        <xs:element ref="loudnessAcitviation"/>
+        <xs:element ref="webAppRootKey"/>
+        <xs:element ref="httpRootKey"/>
+        <xs:element ref="showWindowEffect"/>
+        <xs:element ref="showRecording"/>
+        <xs:element ref="firstdayinweek"/>
+	<xs:element ref="codecType"/>
+        <xs:element ref="framesPerSecond"/>
+        <xs:element ref="bandwidthNeededNormal"/>
+        <xs:element ref="bandwidthNeededBest"/>
+        <xs:element ref="camQualityNormal"/>
+        <xs:element ref="camQualityBest"/>
+        <xs:element ref="microphoneRateBest"/>
+        <xs:element ref="echoPath" />
+	<xs:element ref="echoSuppression" />
+        <xs:element ref="defaultWhiteboardWidth"/>
+        <xs:element ref="defaultWhiteboardHeight"/>
+        <xs:element ref="availableCameraResolutions"/>
+        <xs:element ref="moderatorModuleUser"/>
+        <xs:element ref="moderatorModuleRoom"/>
+        <xs:element ref="conferenceRoomModule"/>
+        <xs:element ref="restrictedRoomModule"/>
+        <xs:element ref="interviewRoomModule"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="rtmphostlocal">
+  	<xs:annotation>
+    	<xs:documentation>
+    		URL/IP to use for the Server for RTMP and RTMPT traffic.
+		    If this value is empty it will try to connect to the 
+		    domain-name the OpenMeetings-Client has been loading from
+		    
+		    Can be either and IP or a domain name. 
+		    For example: 
+		    192.168.254.182
+		    or
+		    mysubdomain.streaming.to
+    	</xs:documentation>
+    </xs:annotation>
+    <xs:complexType/>
+  </xs:element>
+  <xs:element name="httphostlocal">
+    <xs:annotation>
+    	<xs:documentation>
+    		URL/IP to use for the Server for HTTP and HTTPS traffic.
+		    If this value is empty it will use the rtmphostlocal 
+		    variable (and in that way try to connect to the 
+		    domain-name the OpenMeetings-Client has been loading from)
+    	</xs:documentation>
+    </xs:annotation>
+    <xs:complexType/>
+  </xs:element>
+  <xs:element name="rtmpport" type="xs:integer"/>
+  <xs:element name="rtmpTunnelport" type="xs:integer"/>
+  <xs:element name="rtmpsslport" type="xs:integer"/>
+  <xs:element name="useSSL" type="xs:NCName"/>
+  <xs:element name="red5httpport" type="xs:integer"/>
+  <xs:element name="protocol" type="xs:NCName"/>
+  <xs:element name="proxyType" type="xs:NCName"/>
+  <xs:element name="currentappname" type="xs:string"/>
+  <xs:element name="currentappnameurl" type="xs:anyURI"/>
+  <xs:element name="currentappnamebugurl" type="xs:anyURI"/>
+  <xs:element name="loudnessAcitviation" type="xs:integer"/>
+  <xs:element name="webAppRootKey" type="xs:NCName"/>
+  <xs:element name="httpRootKey" type="xs:string"/>
+  <xs:element name="showWindowEffect" type="xs:NCName"/>
+  <xs:element name="showRecording" type="xs:NCName"/>
+  <xs:element name="firstdayinweek" type="xs:integer"/>
+  <xs:element name="codecType" type="xs:string"/>
+  <xs:element name="framesPerSecond" type="xs:integer"/>
+  <xs:element name="bandwidthNeededNormal" type="xs:integer"/>
+  <xs:element name="bandwidthNeededBest" type="xs:integer"/>
+  <xs:element name="camQualityNormal" type="xs:integer"/>
+  <xs:element name="camQualityBest" type="xs:integer"/>
+  <xs:element name="microphoneRateBest" type="xs:integer"/>
+  <xs:element name="echoSuppression" type="xs:string"/>
+  <xs:element name="echoPath">
+    <xs:annotation>
+        <xs:documentation>
+            AEC configuration value - 
+			Specifies the echo path length (in milliseconds). A longer echo path means better 
+			echo cancellation but also introduces longer delays and requires more processing power. 
+			The default value is 128; the only other possible value is 256.
+        </xs:documentation>
+    </xs:annotation>
+    <xs:simpleType>
+        <xs:restriction base="xs:int">
+            <xs:enumeration value="128" />
+            <xs:enumeration value="256" />
+        </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+  <xs:element name="defaultWhiteboardWidth" type="xs:integer"/>
+  <xs:element name="defaultWhiteboardHeight" type="xs:integer"/>
+  <xs:element name="availableCameraResolutions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="resolution"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="resolution">
+    <xs:complexType>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="isDefault" use="required" type="xs:boolean"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="moderatorModuleUser" type="xs:NCName"/>
+  <xs:element name="moderatorModuleRoom" type="xs:NCName"/>
+  <xs:element name="conferenceRoomModule" type="xs:NCName"/>
+  <xs:element name="restrictedRoomModule" type="xs:NCName"/>
+  <xs:element name="interviewRoomModule" type="xs:NCName"/>
+</xs:schema>
diff --git a/src/main/webapp/public/emoticons/emotes.xml b/src/main/webapp/public/emoticons/emotes.xml
new file mode 100644
index 0000000..5d12618
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emotes.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<linked-list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="emotes.xsd">
+  <linked-list>
+    <string>emoticon_evilgrin.png</string>
+    <string>&gt;:(</string>
+    <string>(\_/)</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_grin.png</string>
+    <string>:D</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_happy.png</string>
+    <string>8D</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_smile.png</string>
+    <string>:)</string>
+    <string>(^_^)</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_surprised.png</string>
+    <string>o_O</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_tongue.png</string>
+    <string>:P</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_unhappy.png</string>
+    <string>:(</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+  <linked-list>
+    <string>emoticon_wink.png</string>
+    <string>;)</string>
+	<string>    </string>
+	<string>y</string>
+  </linked-list>
+</linked-list>
diff --git a/src/main/webapp/public/emoticons/emotes.xsd b/src/main/webapp/public/emoticons/emotes.xsd
new file mode 100644
index 0000000..fe10285
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emotes.xsd
@@ -0,0 +1,31 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="linked-list">
+    <xs:complexType>
+      <xs:sequence minOccurs="0">
+        <xs:element ref="linked-list" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element maxOccurs="unbounded" ref="string" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="string" type="xs:string"/>
+</xs:schema>
diff --git a/src/main/webapp/public/emoticons/emoticon_evilgrin.png b/src/main/webapp/public/emoticons/emoticon_evilgrin.png
new file mode 100644
index 0000000..817bd50
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_evilgrin.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_grin.png b/src/main/webapp/public/emoticons/emoticon_grin.png
new file mode 100644
index 0000000..fc60c5e
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_grin.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_happy.png b/src/main/webapp/public/emoticons/emoticon_happy.png
new file mode 100644
index 0000000..6b7336e
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_happy.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_smile.png b/src/main/webapp/public/emoticons/emoticon_smile.png
new file mode 100644
index 0000000..ade4318
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_smile.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_surprised.png b/src/main/webapp/public/emoticons/emoticon_surprised.png
new file mode 100644
index 0000000..4520cfc
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_surprised.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_tongue.png b/src/main/webapp/public/emoticons/emoticon_tongue.png
new file mode 100644
index 0000000..ecafd2f
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_tongue.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_unhappy.png b/src/main/webapp/public/emoticons/emoticon_unhappy.png
new file mode 100644
index 0000000..fd5d030
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_unhappy.png
Binary files differ
diff --git a/src/main/webapp/public/emoticons/emoticon_wink.png b/src/main/webapp/public/emoticons/emoticon_wink.png
new file mode 100644
index 0000000..a631949
--- /dev/null
+++ b/src/main/webapp/public/emoticons/emoticon_wink.png
Binary files differ
diff --git a/src/main/webapp/public/favicon.ico b/src/main/webapp/public/favicon.ico
new file mode 100644
index 0000000..f0c22ad
--- /dev/null
+++ b/src/main/webapp/public/favicon.ico
Binary files differ
diff --git a/src/main/webapp/public/theme.xml b/src/main/webapp/public/theme.xml
new file mode 100644
index 0000000..6a983a4
--- /dev/null
+++ b/src/main/webapp/public/theme.xml
@@ -0,0 +1,358 @@
+<?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.
+  
+-->
+<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="theme.xsd">
+
+	<!-- Colors -->
+
+	<color name="mainBackgroundColor" value="0xEEF0EB" 
+				description="main background color" />
+
+	<color name="basebgcolorizer" value="0xBDC0DB" 
+				description="Color for background" />
+				
+	<color name="baseMousecolorizer" value="0xBDC0DB" 
+				description="Color Mouseover color for list items" />
+	
+	<color name="baseMouseOvercolorizer" value="0xBDC0DB" 
+				description="Color Mouseover color for list items" />	
+	
+	<color name="styleMenuBarBaseColor" value="0x000088" 
+				description="menu bar background color" />				
+	
+	<color name="mainBorderColor" value="0xCCCCCC" 
+				description="main border color" />
+				
+	<color name="secondBorderColor" value="0xE0E0E0" 
+				description="main border color" />	
+		
+	<color name="menuBackgroundColor" value="0xEFEFEF" 
+				description="main border color" />
+				
+	<color name="menuTextColor" value="0x666666" 
+				description="color of text for menus" />
+	
+	<color name="menuTextDisabledColor" value="0xBBBBBB" 
+				description="color of text for menus" />		
+	
+	<!-- Icons -->
+	<resource name="logo_image" 
+				description="Logo to display on Main BG Navi" 
+				license="APL"
+				src="themes/basic-theme/general/logo.png" />
+	
+	<resource name="icon_facebook_rsc_png" 
+				description="Icon for facebook button in login" 
+				license="Unkown"
+				src="themes/basic-theme/auth/icon_facebook.png" />
+				
+	<resource name="warning_popup_icon_rsc" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/error.png" />	
+				
+	<resource name="info_text_icon_rsc" 
+				description="Info Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/information.png" />
+	
+	<!-- Save Toolbar (for example Admin section) -->
+	
+	<resource name="filesave_rsc" 
+				description="Save Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/disk.png" />
+
+	<resource name="edit_add_rsc" 
+				description="Save Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/general/plus_icon.png" />
+
+	<resource name="reload_rsc" 
+				description="Save Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/arrow_refresh_small.png" />
+	
+	<resource name="button_cancel_rsc" 
+				description="Save Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/general/cancel_icon.png" />
+
+	<resource name="add_rsc" 
+				description="Edit Add Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/general/add.png" />
+				
+	<resource name="date_icon_rsc" 
+				description="Edit Add Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/calendar_view_week.png" />
+				
+	<!-- Sorted list -->
+	
+	<resource name="step_back_two_arrow" 
+				description="Step to first" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_first.png" />
+				
+	<resource name="step_fwd_two_arrow" 
+				description="Step to last" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_last.png" />
+						
+    <resource name="step_back_arrow" 
+    			description="Step one back" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_previous.png" />
+    
+    <resource name="step_fwd_arrow" 
+    			description="Step one next" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_next.png" />
+				
+    <resource name="sort_up_rsc" 
+    			description="Sort up" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_up.png" />
+    
+    <resource name="sort_down_rsc" 
+    			description="Sort down" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/resultset_down.png" />
+    
+    <!-- Chat toolbar -->
+    
+    <resource name="font_style" 
+    			description="Change font style button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/style.png" />
+    
+    <resource name="font_bold" 
+    			description="Bold font style button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/text_bold.png" />
+    
+    <resource name="font_italic" 
+    			description="Italic font style button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/text_italic.png" />
+    
+    <resource name="font_underline" 
+    			description="Underline font style button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/text_underline.png" />
+    
+    <resource name="font_color" 
+    			description="Change font color button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/color_swatch.png" />
+    
+    <resource name="hyperlink" 
+    			description="Insert hyperlink button" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/world_link.png" />
+				
+	<!-- Whiteboard Toolbar -->
+	
+	<resource name="plain" 
+				description="Toolbar Icon" 
+				license="APL author sebawagner"
+				src="themes/basic-theme/whiteboard/delete_all.png" />
+	
+	<resource name="plainSlides" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/page_delete.png" />
+	
+	<resource name="arrow_draw_panel_tool_cursor" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/arrow_cursor_tool.png" />
+
+	<resource name="saveobj" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/general/disk.png" />
+
+	<resource name="revert" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png" />
+
+	<resource name="next" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/arrow_rotate_clockwise.png" />
+
+	<resource name="menupointer_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/menupointer.png" />
+				
+	<resource name="pointer_whiteboard_menu_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png" />
+				
+	<resource name="letter" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/letter.png" />
+
+	<resource name="paint" 
+				description="Toolbar Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/pencil.png" />
+	
+	<resource name="line_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/line.png" />	
+	
+	<resource name="uline_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/uline.png" />	
+		
+	<resource name="rectangle" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/rectangle.png" />	
+
+	<resource name="ellipse" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/ellipse.png" />	
+				
+	<resource name="drawarrowicon_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/drawarrowicon.png" />			
+		
+	<!-- whiteboard general -->		
+				
+	<resource name="bounding_box_delete_item_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/general/cancel_icon_small.png" />	
+	
+	<resource name="bounding_box_textedit_item_rsc" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/text_signature.png" />				
+					
+	<!-- document Tools -->	
+	
+	<resource name="doc_next" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/doc_next.png" />		
+				
+	<resource name="doc_pre" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/doc_pre.png" />		
+				
+	<resource name="doc_first" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/doc_first.png" />		
+				
+	<resource name="doc_last" 
+				description="Toolbar Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/whiteboard/doc_last.png" />		
+				
+	<!-- property panel -->	
+	<resource name="colorlinechoose_rsc" 
+				description="Property bar icon line color" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/pencil.png" />
+	
+	<resource name="colorfillchoose_rsc" 
+				description="Property bar icon fill color" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/paintcan.png" />
+	
+	<resource name="color_lock_rsc" 
+				description="Property bar icon color lock" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/lock.png" />
+	
+	<resource name="color_lock_open_rsc" 
+				description="Property bar icon color lock open" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/whiteboard/lock_open.png" />	
+				
+	<!-- Dashboard -->
+	
+	<resource name="icon_btn_dashboard_1" 
+				description="Info Guide Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/dashboard/wizzard_button_1.png" />
+				
+    <resource name="icon_btn_dashboard_2" 
+    			description="Info Guide Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/dashboard/wizzard_button_2.png" />
+				
+    <resource name="icon_btn_dashboard_3" 
+    			description="Info Guide Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/dashboard/wizzard_button_3.png" />
+				
+    <resource name="icon_btn_dashboard_4" 
+    			description="Info Guide Icon" 
+				license="APL Author sebawagner"
+				src="themes/basic-theme/dashboard/wizzard_button_4.png" />
+	
+	<resource name="icon_btn_rss_conference" 
+    			description="RSS Tab Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/dashboard/feed.png" />
+	
+	<resource name="icon_btn_chat_dashboard" 
+				description="Chat Tab Icon" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/dashboard/comments.png" />
+	
+    <resource name="icon_btn_rooms_conference" 
+				description="Conference Room Tab Icon" 
+				license="APL author sebawagner"
+				src="themes/basic-theme/dashboard/conference_icon_normal.png" />	
+				
+	<!-- Conference room -->	
+	<resource name="users_tab_btn" 
+				description="Conference Room Tab User" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/conference/group.png" />
+		
+	<resource name="files_tab_btn" 
+				description="Conference Room Tab Files" 
+				license="FamFam Icon Set"
+				src="themes/basic-theme/conference/folder_explore.png" />
+	
+	<resource name="exit_btn_rsc" 
+				description="Conference Room Tab Icon" 
+				license="APL author sebawagner"
+				src="themes/basic-theme/conference/exit_button.png" />			
+	
+</theme>
\ No newline at end of file
diff --git a/src/main/webapp/public/theme.xsd b/src/main/webapp/public/theme.xsd
new file mode 100644
index 0000000..c7a1885
--- /dev/null
+++ b/src/main/webapp/public/theme.xsd
@@ -0,0 +1,45 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="theme">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="color"/>
+        <xs:element maxOccurs="unbounded" ref="resource"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="color">
+    <xs:complexType>
+      <xs:attribute name="description" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="resource">
+    <xs:complexType>
+      <xs:attribute name="description" use="required"/>
+      <xs:attribute name="license" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="src" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/main/webapp/public/themes/basic-theme/auth/icon_facebook.png b/src/main/webapp/public/themes/basic-theme/auth/icon_facebook.png
new file mode 100644
index 0000000..a0f667c
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/auth/icon_facebook.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/conference/exit_button.fla b/src/main/webapp/public/themes/basic-theme/conference/exit_button.fla
new file mode 100644
index 0000000..808954f
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/conference/exit_button.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/conference/exit_button.png b/src/main/webapp/public/themes/basic-theme/conference/exit_button.png
new file mode 100644
index 0000000..7234c99
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/conference/exit_button.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/conference/folder_explore.png b/src/main/webapp/public/themes/basic-theme/conference/folder_explore.png
new file mode 100644
index 0000000..0ba9391
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/conference/folder_explore.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/conference/group.png b/src/main/webapp/public/themes/basic-theme/conference/group.png
new file mode 100644
index 0000000..7fb4e1f
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/conference/group.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/comments.png b/src/main/webapp/public/themes/basic-theme/dashboard/comments.png
new file mode 100644
index 0000000..39433cf
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/comments.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.fla b/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.fla
new file mode 100644
index 0000000..1f013f2
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.png b/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.png
new file mode 100644
index 0000000..44d450d
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/conference_icon_normal.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/feed.png b/src/main/webapp/public/themes/basic-theme/dashboard/feed.png
new file mode 100644
index 0000000..315c4f4
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/feed.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.fla b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.fla
new file mode 100644
index 0000000..a97ff6b
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.png b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.png
new file mode 100644
index 0000000..fa3a7e2
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_1.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.fla b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.fla
new file mode 100644
index 0000000..9aa80f1
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.png b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.png
new file mode 100644
index 0000000..75eb60e
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_2.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.fla b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.fla
new file mode 100644
index 0000000..e005420
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.png b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.png
new file mode 100644
index 0000000..cc68320
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_3.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.fla b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.fla
new file mode 100644
index 0000000..8088a64
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.png b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.png
new file mode 100644
index 0000000..228b85c
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/dashboard/wizzard_button_4.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/add.png b/src/main/webapp/public/themes/basic-theme/general/add.png
new file mode 100644
index 0000000..6332fef
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/add.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/arrow_refresh_small.png b/src/main/webapp/public/themes/basic-theme/general/arrow_refresh_small.png
new file mode 100644
index 0000000..d3087df
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/arrow_refresh_small.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/calendar_view_week.png b/src/main/webapp/public/themes/basic-theme/general/calendar_view_week.png
new file mode 100644
index 0000000..8fe695f
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/calendar_view_week.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/cancel_icon.fla b/src/main/webapp/public/themes/basic-theme/general/cancel_icon.fla
new file mode 100644
index 0000000..ecc498d
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/cancel_icon.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/cancel_icon.png b/src/main/webapp/public/themes/basic-theme/general/cancel_icon.png
new file mode 100644
index 0000000..2d26062
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/cancel_icon.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.fla b/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.fla
new file mode 100644
index 0000000..0bd3258
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.png b/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.png
new file mode 100644
index 0000000..267e6c2
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/cancel_icon_small.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/color_swatch.png b/src/main/webapp/public/themes/basic-theme/general/color_swatch.png
new file mode 100644
index 0000000..6e6e852
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/color_swatch.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/disk.png b/src/main/webapp/public/themes/basic-theme/general/disk.png
new file mode 100644
index 0000000..99d532e
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/disk.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/error.png b/src/main/webapp/public/themes/basic-theme/general/error.png
new file mode 100644
index 0000000..628cf2d
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/error.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/information.png b/src/main/webapp/public/themes/basic-theme/general/information.png
new file mode 100644
index 0000000..12cd1ae
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/information.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/logo.png b/src/main/webapp/public/themes/basic-theme/general/logo.png
new file mode 100644
index 0000000..1d7a3bc
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/logo.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/plus_icon.fla b/src/main/webapp/public/themes/basic-theme/general/plus_icon.fla
new file mode 100644
index 0000000..9ac11ed
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/plus_icon.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/plus_icon.png b/src/main/webapp/public/themes/basic-theme/general/plus_icon.png
new file mode 100644
index 0000000..acec291
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/plus_icon.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_down.png b/src/main/webapp/public/themes/basic-theme/general/resultset_down.png
new file mode 100644
index 0000000..0469642
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_down.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_first.png b/src/main/webapp/public/themes/basic-theme/general/resultset_first.png
new file mode 100644
index 0000000..b03eaf8
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_first.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_last.png b/src/main/webapp/public/themes/basic-theme/general/resultset_last.png
new file mode 100644
index 0000000..8ec8947
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_last.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_next.png b/src/main/webapp/public/themes/basic-theme/general/resultset_next.png
new file mode 100644
index 0000000..e252606
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_next.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_previous.png b/src/main/webapp/public/themes/basic-theme/general/resultset_previous.png
new file mode 100644
index 0000000..18f9cc1
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_previous.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/resultset_up.png b/src/main/webapp/public/themes/basic-theme/general/resultset_up.png
new file mode 100644
index 0000000..f121481
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/resultset_up.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/style.png b/src/main/webapp/public/themes/basic-theme/general/style.png
new file mode 100644
index 0000000..81e41de
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/style.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/text_bold.png b/src/main/webapp/public/themes/basic-theme/general/text_bold.png
new file mode 100644
index 0000000..889ae80
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/text_bold.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/text_italic.png b/src/main/webapp/public/themes/basic-theme/general/text_italic.png
new file mode 100644
index 0000000..8482ac8
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/text_italic.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/text_underline.png b/src/main/webapp/public/themes/basic-theme/general/text_underline.png
new file mode 100644
index 0000000..90d0df2
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/text_underline.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/general/world_link.png b/src/main/webapp/public/themes/basic-theme/general/world_link.png
new file mode 100644
index 0000000..b8edc12
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/general/world_link.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_cursor_tool.png b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_cursor_tool.png
new file mode 100644
index 0000000..a9f3169
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_cursor_tool.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png
new file mode 100644
index 0000000..46c75aa
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_anticlockwise.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_clockwise.png b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_clockwise.png
new file mode 100644
index 0000000..aa65210
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/arrow_rotate_clockwise.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/cancel.png b/src/main/webapp/public/themes/basic-theme/whiteboard/cancel.png
new file mode 100644
index 0000000..c149c2b
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/cancel.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.fla
new file mode 100644
index 0000000..bafe7e3
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.png b/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.png
new file mode 100644
index 0000000..3e42c07
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/delete_all.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.fla
new file mode 100644
index 0000000..80b49ec
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.png b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.png
new file mode 100644
index 0000000..c1e5ac9
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_first.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.fla
new file mode 100644
index 0000000..e44d536
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.png b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.png
new file mode 100644
index 0000000..1ef3056
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_last.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.fla
new file mode 100644
index 0000000..f9ea5cb
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.png b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.png
new file mode 100644
index 0000000..6cede29
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_next.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.fla
new file mode 100644
index 0000000..7050168
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.png b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.png
new file mode 100644
index 0000000..f974ec6
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/doc_pre.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/drawarrowicon.png b/src/main/webapp/public/themes/basic-theme/whiteboard/drawarrowicon.png
new file mode 100644
index 0000000..0e73cb5
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/drawarrowicon.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.fla
new file mode 100644
index 0000000..e437461
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.png b/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.png
new file mode 100644
index 0000000..9cc51f3
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/ellipse.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/letter.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/letter.fla
new file mode 100644
index 0000000..f1aba8e
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/letter.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/letter.png b/src/main/webapp/public/themes/basic-theme/whiteboard/letter.png
new file mode 100644
index 0000000..eb036ef
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/letter.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/line.png b/src/main/webapp/public/themes/basic-theme/whiteboard/line.png
new file mode 100644
index 0000000..10b420a
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/line.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/lock.png b/src/main/webapp/public/themes/basic-theme/whiteboard/lock.png
new file mode 100644
index 0000000..2ebc4f6
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/lock.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/lock_open.png b/src/main/webapp/public/themes/basic-theme/whiteboard/lock_open.png
new file mode 100644
index 0000000..a471765
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/lock_open.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/menupointer.png b/src/main/webapp/public/themes/basic-theme/whiteboard/menupointer.png
new file mode 100644
index 0000000..98031f6
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/menupointer.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/page_delete.png b/src/main/webapp/public/themes/basic-theme/whiteboard/page_delete.png
new file mode 100644
index 0000000..3141467
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/page_delete.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/paintcan.png b/src/main/webapp/public/themes/basic-theme/whiteboard/paintcan.png
new file mode 100644
index 0000000..f82a886
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/paintcan.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/pencil.png b/src/main/webapp/public/themes/basic-theme/whiteboard/pencil.png
new file mode 100644
index 0000000..0bfecd5
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/pencil.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.fla
new file mode 100644
index 0000000..ecd9bfc
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png b/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png
new file mode 100644
index 0000000..3a3ee30
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/pointerWhiteBoard_menu_rsc.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.fla b/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.fla
new file mode 100644
index 0000000..f9038d1
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.fla
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.png b/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.png
new file mode 100644
index 0000000..db799f4
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/rectangle.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/text_signature.png b/src/main/webapp/public/themes/basic-theme/whiteboard/text_signature.png
new file mode 100644
index 0000000..c72fd80
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/text_signature.png
Binary files differ
diff --git a/src/main/webapp/public/themes/basic-theme/whiteboard/uline.png b/src/main/webapp/public/themes/basic-theme/whiteboard/uline.png
new file mode 100644
index 0000000..32914f0
--- /dev/null
+++ b/src/main/webapp/public/themes/basic-theme/whiteboard/uline.png
Binary files differ
diff --git a/src/main/webapp/screensharing/icon.jpg b/src/main/webapp/screensharing/icon.jpg
new file mode 100644
index 0000000..a9f29e4
--- /dev/null
+++ b/src/main/webapp/screensharing/icon.jpg
Binary files differ
diff --git a/src/main/webapp/screensharing/splashicon.jpg b/src/main/webapp/screensharing/splashicon.jpg
new file mode 100644
index 0000000..a9f29e4
--- /dev/null
+++ b/src/main/webapp/screensharing/splashicon.jpg
Binary files differ
diff --git a/src/main/webapp/streams/hibernate/default_interview_image.fla b/src/main/webapp/streams/hibernate/default_interview_image.fla
new file mode 100644
index 0000000..31398dc
--- /dev/null
+++ b/src/main/webapp/streams/hibernate/default_interview_image.fla
Binary files differ
diff --git a/src/main/webapp/streams/hibernate/default_interview_image.jpg b/src/main/webapp/streams/hibernate/default_interview_image.jpg
new file mode 100644
index 0000000..4b0f26b
--- /dev/null
+++ b/src/main/webapp/streams/hibernate/default_interview_image.jpg
Binary files differ
diff --git a/src/main/webapp/streams/hibernate/default_interview_image.png b/src/main/webapp/streams/hibernate/default_interview_image.png
new file mode 100644
index 0000000..e87d640
--- /dev/null
+++ b/src/main/webapp/streams/hibernate/default_interview_image.png
Binary files differ
diff --git a/src/main/webapp/streams/hibernate/one_second.wav b/src/main/webapp/streams/hibernate/one_second.wav
new file mode 100644
index 0000000..24d262a
--- /dev/null
+++ b/src/main/webapp/streams/hibernate/one_second.wav
Binary files differ
diff --git a/src/main/webapp/upload/library.xml b/src/main/webapp/upload/library.xml
new file mode 100644
index 0000000..794be23
--- /dev/null
+++ b/src/main/webapp/upload/library.xml
@@ -0,0 +1,22 @@
+<?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.
+  
+-->
+<presentation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="library.xsd"><originalDocument lastmod="1185461814000" size="240233">Tutorat.pdf</originalDocument><swfDocument lastmod="1185461814000" size="240233">Tutorat.swf</swfDocument><thumbs><thumb lastmod="1185461813000" size="3998">_thumb_pages-000.jpg</thumb><thumb lastmod="1185461813000" size="3855">_thumb_pages-001.jpg</thumb><thumb lastmod="1185461813000" size="4306">_thumb_pages-002.jpg</thumb><thumb lastmod="1185461813000" size="3747">_thumb_pages-003.jpg</thumb><thumb lastmod="1185461813000" size="3162">_thumb_pages-004.jpg</thumb><thumb lastmod="1185461813000" size="3232">_thumb_pages-005.jpg</thumb><thumb lastmod="1185461813000" size="2981">_thumb_pages-006.jpg</thumb><thumb lastmod="1185461813000" size="3126">_thumb_pages-007.jpg</thumb><thumb lastmod="1185461813000" size="4457">_thumb_pages-008.jpg</thumb><thumb lastmod="1185461813000" size="4264">_thumb_pages-009.jpg</thumb><thumb lastmod="1185461813000" size="4263">_thumb_pages-010.jpg</thumb><thumb lastmod="1185461813000" size="3770">_thumb_pages-011.jpg</thumb><thumb lastmod="1185461813000" size="3354">_thumb_pages-012.jpg</thumb><thumb lastmod="1185461813000" size="3006">_thumb_pages-013.jpg</thumb><thumb lastmod="1185461813000" size="3972">_thumb_pages-014.jpg</thumb><thumb lastmod="1185461813000" size="4353">_thumb_pages-015.jpg</thumb><thumb lastmod="1185461813000" size="4184">_thumb_pages-016.jpg</thumb><thumb lastmod="1185461813000" size="4021">_thumb_pages-017.jpg</thumb><thumb lastmod="1185461813000" size="3225">_thumb_pages-018.jpg</thumb><thumb lastmod="1185461813000" size="3847">_thumb_pages-019.jpg</thumb><thumb lastmod="1185461813000" size="3046">_thumb_pages-020.jpg</thumb><thumb lastmod="1185461813000" size="2633">_thumb_pages-021.jpg</thumb><thumb lastmod="1185461813000" size="4001">_thumb_pages-022.jpg</thumb><thumb lastmod="1185461813000" size="4243">_thumb_pages-023.jpg</thumb></thumbs></presentation>
diff --git a/src/main/webapp/upload/library.xsd b/src/main/webapp/upload/library.xsd
new file mode 100644
index 0000000..71f2b7d
--- /dev/null
+++ b/src/main/webapp/upload/library.xsd
@@ -0,0 +1,68 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="presentation">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="originalDocument"/>
+        <xs:element ref="swfDocument"/>
+        <xs:element ref="thumbs"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="originalDocument">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:NCName">
+          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+          <xs:attribute name="size" use="required" type="xs:integer"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="swfDocument">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:NCName">
+          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+          <xs:attribute name="size" use="required" type="xs:integer"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="thumbs">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="thumb"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="thumb">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:NCName">
+          <xs:attribute name="lastmod" use="required" type="xs:integer"/>
+          <xs:attribute name="size" use="required" type="xs:integer"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/src/screenshare.vm b/src/screenshare.vm
new file mode 100644
index 0000000..470daa8
--- /dev/null
+++ b/src/screenshare.vm
@@ -0,0 +1,55 @@
+<?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.
+-->
+<jnlp spec='1.0+' codebase='$codebase'>
+	<information> 
+		<title>Screen Sharing Application</title>
+		<vendor>$APP_NAME</vendor> 
+		<homepage>http://openmeetings.apache.org/</homepage>
+		<icon href="icon.jpg" />
+		<icon kind="splash" href="splashicon.jpg" />
+		<description>ScreenViewer Client Application</description>
+		<description kind="short">A File to grab a screen and send it to a Server</description>
+		<offline-allowed/>
+	</information>
+	<security>
+		<all-permissions/>
+	</security>
+	<resources>
+		<j2se version='1.7+'/>
+		$dependencies
+	</resources>
+	<application-desc main-class='org.apache.openmeetings.screen.webstart.CoreScreenShare'>
+		<argument>$protocol</argument>
+		<argument>$host</argument>
+		<argument>$port</argument>
+		<argument>$app</argument>
+		<argument>$userId</argument>
+		<argument>$publicSid</argument>
+		<argument>$labels</argument>
+		<argument>$defaultQuality</argument>
+		<argument>$defaultFps</argument>
+		<argument>$showFps</argument>
+		<argument>$allowRemote</argument>
+		<argument>$allowRecording</argument>
+		<argument>$allowPublishing</argument>
+		<argument>$keystore</argument>
+		<argument>$password</argument>
+	</application-desc>
+</jnlp>
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/down.png b/src/screenshare/java/org/apache/openmeetings/screen/down.png
new file mode 100644
index 0000000..d10b8c6
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/down.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/next.png b/src/screenshare/java/org/apache/openmeetings/screen/next.png
new file mode 100644
index 0000000..e252606
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/next.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/play.png b/src/screenshare/java/org/apache/openmeetings/screen/play.png
new file mode 100644
index 0000000..6d13683
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/play.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/previous.png b/src/screenshare/java/org/apache/openmeetings/screen/previous.png
new file mode 100644
index 0000000..18f9cc1
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/previous.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/stop.png b/src/screenshare/java/org/apache/openmeetings/screen/stop.png
new file mode 100644
index 0000000..8389bf3
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/stop.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/up.png b/src/screenshare/java/org/apache/openmeetings/screen/up.png
new file mode 100644
index 0000000..c03ab0a
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/up.png
Binary files differ
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
new file mode 100644
index 0000000..0953b66
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.SourceDataLine;
+
+public class AudioTone {
+	public static final float SAMPLE_RATE = 44100F;
+
+	public static void play() {
+		byte[] buf = new byte[1];
+		
+		SourceDataLine sdl = null;
+		try {
+		AudioFormat af = new AudioFormat(SAMPLE_RATE, 8, 1, true, false);
+		sdl = AudioSystem.getSourceDataLine(af);
+		sdl = AudioSystem.getSourceDataLine(af);
+		sdl.open(af);
+		sdl.start();
+		for (int i = 0; i < (int)SAMPLE_RATE; ++i) {
+			double angle = i / (SAMPLE_RATE / 440) * 2.0 * Math.PI;
+			buf[0] = (byte) (Math.sin(angle) * 128);
+			sdl.write(buf, 0, 1);
+		}
+		} catch (LineUnavailableException e) {
+			//no-op
+		} finally {
+			if (sdl != null) {
+				sdl.drain();
+				sdl.stop();
+				sdl.close();
+			}
+		}
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/BaseScreenEncoder.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/BaseScreenEncoder.java
new file mode 100644
index 0000000..2b9495b
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/BaseScreenEncoder.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+
+public abstract class BaseScreenEncoder implements IScreenEncoder {
+
+	public static BufferedImage resize(BufferedImage _img, Rectangle size) {
+		BufferedImage img = _img;
+		if (img.getWidth() != size.width || img.getHeight() != size.height) {
+			img = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
+			
+			Graphics2D graphics2D = img.createGraphics();
+			graphics2D.setRenderingHint(
+				RenderingHints.KEY_INTERPOLATION,
+				RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+			graphics2D.drawImage(_img, 0, 0, size.width, size.height, null);
+			graphics2D.dispose();
+		}
+		return img;
+	}
+	
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
new file mode 100644
index 0000000..435204b
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/CaptureScreen.java
@@ -0,0 +1,287 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.FPS;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerHeight;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerWidth;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerX;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerY;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.awt.AWTException;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.io.IOException;
+import java.util.concurrent.ArrayBlockingQueue;
+
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.Job;
+import org.quartz.JobBuilder;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.SimpleScheduleBuilder;
+import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
+import org.quartz.impl.StdSchedulerFactory;
+import org.red5.server.api.Red5;
+import org.red5.server.net.rtmp.event.VideoData;
+import org.red5.server.stream.message.RTMPMessage;
+import org.slf4j.Logger;
+
+class CaptureScreen extends Thread {
+	private static final Logger log = getLogger(CaptureScreen.class);
+	private final static String QUARTZ_GROUP_NAME = "ScreenShare";
+	private final static String QUARTZ_CURSOR_TRIGGER_NAME = "CursorTrigger";
+	private final static String QUARTZ_CURSOR_JOB_NAME = "CursorJob";
+	private CoreScreenShare core;
+	private int timeBetweenFrames;
+	private volatile int timestamp = 0;
+	private long timeCaptureStarted = 0;
+	private volatile boolean active = true;
+	private IScreenEncoder se;
+	private IScreenShare client;
+	private ArrayBlockingQueue<VideoData> frames = new ArrayBlockingQueue<VideoData>(2);
+	private String host = null;
+	private String app = null;
+	private int port = -1;
+	private int streamId;
+	private boolean startPublish = false;
+	private Scheduler scheduler;
+
+	public CaptureScreen(CoreScreenShare coreScreenShare, IScreenShare client, String host, String app, int port) {
+		core = coreScreenShare;
+		this.client = client;
+		this.host = host;
+		this.app = app;
+		this.port = port;
+		SchedulerFactory sf = new StdSchedulerFactory();
+		try {
+			scheduler = sf.getScheduler();
+		} catch (SchedulerException e) {
+			log.error("Unexpected error while creating scheduler", e);
+		}
+	}
+
+	public void release() {
+		try {
+			if (scheduler != null) {
+				scheduler.shutdown(true);
+				scheduler = null;
+			}
+		} catch (Exception e) {
+			log.error("Unexpected error while shutting down scheduler", e);
+		}
+		active = false;
+		timestamp = 0;
+		timeCaptureStarted = 0;
+	}
+
+	public void run() {
+		try {
+			while (active && !core.isReadyToRecord()) {
+				Thread.sleep(60);
+			}
+
+			timeBetweenFrames = 1000 / FPS;
+			se = new ScreenV1Encoder(3 * FPS); //send keyframe every 3 seconds
+			timeCaptureStarted = System.currentTimeMillis();
+
+			JobDetail encodeJob = JobBuilder.newJob(EncodeJob.class).withIdentity("EncodeJob", QUARTZ_GROUP_NAME).build();
+			encodeJob.getJobDataMap().put(EncodeJob.CAPTURE_KEY, this);
+			Trigger encodeTrigger = TriggerBuilder.newTrigger()
+					.withIdentity("EncodeTrigger", QUARTZ_GROUP_NAME)
+					.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(timeBetweenFrames).repeatForever())
+					.build();
+			JobDetail sendJob = JobBuilder.newJob(SendJob.class).withIdentity("SendJob", QUARTZ_GROUP_NAME).build();
+			Trigger sendTrigger = TriggerBuilder.newTrigger()
+					.withIdentity("SendTrigger", QUARTZ_GROUP_NAME)
+					.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(timeBetweenFrames).repeatForever())
+					.build();
+			sendJob.getJobDataMap().put(SendJob.CAPTURE_KEY, this);
+
+			scheduler.scheduleJob(encodeJob, encodeTrigger);
+			scheduler.scheduleJob(sendJob, sendTrigger);
+			scheduler.start();
+		} catch (Exception e) {
+			log.error("Error while running: ", e);
+		}
+	}
+	
+	/*
+	private void pushAudio(byte[] audio, long ts) {
+		if (startPublish) {
+			buffer.put((byte) 6);
+			buffer.put(audio);
+			buffer.flip();
+	
+			// I can stream audio
+			//packets successfully using linear PCM at 11025Hz. For those packets I
+			//push one byte (0x06) which specifies the format of audio data in a
+			//ByteBuffer, and then real audio data:
+			RTMPMessage rtmpMsg = RTMPMessage.build(new AudioData(buffer), (int) ts);
+			client.publishStreamData(streamId, rtmpMsg);
+		}
+	}
+	*/
+	
+	@DisallowConcurrentExecution
+	public static class EncodeJob implements Job {
+		private static final String CAPTURE_KEY = "capture";
+		Robot robot;
+		Rectangle screen = new Rectangle(spinnerX, spinnerY, spinnerWidth, spinnerHeight);
+		int[][] image = null;
+		
+		public EncodeJob() {
+			try {
+				robot = new Robot();
+			} catch (AWTException e) {
+				log.error("Unexpected Error while creating robot", e);
+			}
+		}
+		
+		@Override
+		public void execute(JobExecutionContext context) throws JobExecutionException {
+			JobDataMap data = context.getJobDetail().getJobDataMap();
+			CaptureScreen capture = (CaptureScreen)data.get(CAPTURE_KEY);
+			
+			long start = System.currentTimeMillis();
+			image = ScreenV1Encoder.getImage(screen, robot);
+			if (log.isTraceEnabled()) {
+				log.trace(String.format("Image was captured in %s ms", System.currentTimeMillis() - start));
+			}
+			start = System.currentTimeMillis();
+			try {
+				VideoData vData = capture.se.encode(image);
+				if (log.isTraceEnabled()) {
+					long now = System.currentTimeMillis();
+					log.trace(String.format("Image was encoded in %s ms, timestamp is %s", now - start, now - capture.timeCaptureStarted));
+				}
+				capture.frames.offer(vData);
+				capture.se.createUnalteredFrame();
+			} catch (Exception e) {
+				log.error("Error while encoding: ", e);
+			}
+		}
+	}
+	
+	public static class SendJob implements Job {
+		private static final String CAPTURE_KEY = "capture";
+		public SendJob() {}
+		
+		@Override
+		public void execute(JobExecutionContext context) throws JobExecutionException {
+			JobDataMap data = context.getJobDetail().getJobDataMap();
+			CaptureScreen capture = (CaptureScreen)data.get(CAPTURE_KEY);
+			if (log.isTraceEnabled()) {
+				long real = System.currentTimeMillis() - capture.timeCaptureStarted;
+				log.trace(String.format("Enter method, timestamp: %s, real: %s, diff: %s", capture.timestamp, real, real - capture.timestamp));
+			}
+			VideoData f = capture.frames.poll();
+			if (log.isTraceEnabled()) {
+				log.trace(String.format("Getting %s image", f == null ? "DUMMY" : "CAPTURED"));
+			}
+			f = f == null ? capture.se.getUnalteredFrame() : f;
+			if (f != null) {
+				try {
+					capture.pushVideo(f, capture.timestamp);
+					if (log.isTraceEnabled()) {
+						long real = System.currentTimeMillis() - capture.timeCaptureStarted;
+						log.trace(String.format("Sending video, timestamp: %s, real: %s, diff: %s", capture.timestamp, real, real - capture.timestamp));
+					}
+					capture.timestamp += capture.timeBetweenFrames;
+				} catch (IOException e) {
+					log.error("Error while sending: ", e);
+				}
+			}
+		}
+	}
+	
+	@DisallowConcurrentExecution
+	public static class CursorJob implements Job {
+		private static final String CAPTURE_KEY = "capture";
+		
+		public CursorJob() {}
+		
+		@Override
+		public void execute(JobExecutionContext context) throws JobExecutionException {
+			JobDataMap data = context.getJobDetail().getJobDataMap();
+			CaptureScreen capture = (CaptureScreen)data.get(CAPTURE_KEY);
+			capture.core.sendCursorStatus();
+		}
+	}
+	
+	private void pushVideo(VideoData data, int ts) throws IOException {
+		if (startPublish) {
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(client.getConnection());
+			}
+			RTMPMessage rtmpMsg = RTMPMessage.build(data, ts);
+			client.publishStreamData(streamId, rtmpMsg);
+		}
+	}
+
+	public String getHost() {
+		return host;
+	}
+
+	public String getApp() {
+		return app;
+	}
+
+	public int getPort() {
+		return port;
+	}
+
+	public int getStreamId() {
+		return streamId;
+	}
+
+	public void setStreamId(int streamId) {
+		this.streamId = streamId;
+	}
+
+	public void setStartPublish(boolean startPublish) {
+		this.startPublish = startPublish;
+	}
+
+	public void setSendCursor(boolean sendCursor) {
+		try {
+			if (sendCursor) {
+				JobDetail cursorJob = JobBuilder.newJob(CursorJob.class).withIdentity(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME).build();
+				Trigger cursorTrigger = TriggerBuilder.newTrigger()
+						.withIdentity(QUARTZ_CURSOR_TRIGGER_NAME, QUARTZ_GROUP_NAME)
+						.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(1000 / Math.min(2, FPS)).repeatForever())
+						.build();
+				cursorJob.getJobDataMap().put(CursorJob.CAPTURE_KEY, this);
+				scheduler.scheduleJob(cursorJob, cursorTrigger);
+			} else {
+				scheduler.deleteJob(JobKey.jobKey(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME));
+			}
+		} catch (SchedulerException e) {
+			log.error("Unexpected Error schedule/unschedule cursor job", e);
+		}
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
new file mode 100644
index 0000000..9cad0e6
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
@@ -0,0 +1,768 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import static java.awt.Toolkit.getDefaultToolkit;
+import static java.awt.datatransfer.DataFlavor.stringFlavor;
+import static java.lang.Boolean.TRUE;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeX;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeY;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerHeight;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerWidth;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerX;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.spinnerY;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.awt.MouseInfo;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.codec.binary.Hex;
+import org.apache.openmeetings.screen.webstart.gui.ScreenSharerFrame;
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.io.utils.ObjectMap;
+import org.red5.server.api.Red5;
+import org.red5.server.api.event.IEvent;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.event.Notify;
+import org.red5.server.net.rtmp.message.Header;
+import org.red5.server.net.rtmp.status.StatusCodes;
+import org.slf4j.Logger;
+
+public class CoreScreenShare implements IPendingServiceCallback, INetStreamEventHandler {
+	private static final Logger log = getLogger(CoreScreenShare.class);
+
+	enum Protocol {
+		rtmp, rtmpt, rtmpe, rtmps
+	}
+	private IScreenShare instance = null;
+	private IScreenShare controlInstance = null;
+	private Protocol protocol;
+	private String host;
+	private String app;
+	private int port;
+	
+	public String publishName;
+	private CaptureScreen capture = null;
+	private RTMPClientPublish publishClient = null;
+
+	private ScreenSharerFrame frame;
+
+	public int defaultQuality = 1;
+	public int defaultFPS = 10;
+	public boolean showFPS = true;
+	public boolean allowRemote = true;
+
+	public Long userId = null;
+	private boolean allowRecording = true;
+	private boolean allowPublishing = true;
+
+	private boolean startStreaming = false;
+	private boolean startRecording = false;
+	private boolean startPublishing = false;
+	public float Ampl_factor = 1f;
+	public boolean isConnected = false;
+	private boolean readyToRecord = false;
+	private boolean audioNotify = false;
+	private boolean remoteEnabled = true;
+
+	public Map<Integer, Boolean> currentPressedKeys = new HashMap<Integer, Boolean>();
+
+	private CaptureScreen getCapture() {
+		if (capture == null) {
+			capture = new CaptureScreen(this, instance, host, app, port);
+		}
+		return capture;
+	}
+	// ------------------------------------------------------------------------
+	//
+	// Main
+	//
+	// ------------------------------------------------------------------------
+
+	public CoreScreenShare(String[] args) {
+		try {
+			System.setProperty("org.terracotta.quartz.skipUpdateCheck", "true");
+			for (String arg : args) {
+				log.debug("arg: " + arg);
+			}
+			String[] textArray = null;
+			if (args.length > 12) {
+				protocol = Protocol.valueOf(args[0]);
+				host = args[1];
+				port = Integer.parseInt(args[2]);
+				app = args[3];
+				userId = Long.parseLong(args[4]);
+				publishName = args[5];
+				String labelTexts = args[6];
+				defaultQuality = Integer.parseInt(args[7]);
+				defaultFPS = Integer.parseInt(args[8]);
+				showFPS = bool(args[9]);
+				allowRemote = bool(args[10]);
+				remoteEnabled = allowRemote;
+				allowRecording = bool(args[11]);
+				allowPublishing = bool(args[12]);
+
+				if (labelTexts.length() > 0) {
+					textArray = labelTexts.split(";");
+
+					log.debug("labelTexts :: " + labelTexts);
+
+					log.debug("textArray Length " + textArray.length);
+
+					for (int i = 0; i < textArray.length; i++) {
+						log.debug(i + " :: " + textArray[i]);
+					}
+				}
+				switch (protocol) {
+					case rtmp:
+						instance = new RTMPScreenShare(this);
+						controlInstance = new RTMPScreenShare(this);
+						break;
+					case rtmpt:
+						instance = new RTMPTScreenShare(this);
+						controlInstance = new RTMPTScreenShare(this);
+						break;
+					case rtmps:
+						RTMPSScreenShare client = new RTMPSScreenShare(this);
+						client.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
+						client.setKeyStorePassword(args[14]);
+						instance = client;
+						RTMPSScreenShare controlClient = new RTMPSScreenShare(this);
+						controlClient.setKeystoreBytes(Hex.decodeHex(args[13].toCharArray()));
+						controlClient.setKeyStorePassword(args[14]);
+						controlInstance = controlClient;
+						break;
+					case rtmpe:
+					default:
+						throw new Exception("Unsupported protocol");
+				}
+				instance.setServiceProvider(this);
+				controlInstance.setServiceProvider(this);
+				log.debug(String.format("host: %s, app: %s, port: %s, publish: %s", host, port, app, publishName));
+			} else {
+				System.exit(0);
+			}
+
+			createWindow(textArray);
+		} catch (Exception err) {
+			log.error("", err);
+		}
+	}
+
+	public static void main(String[] args) {
+		new CoreScreenShare(args);
+	}
+	
+	// ------------------------------------------------------------------------
+	//
+	// GUI
+	//
+	// ------------------------------------------------------------------------
+	public void createWindow(String[] textArray) {
+		try {
+			frame = new ScreenSharerFrame(this, textArray);
+			frame.setVisible(true);
+			frame.setRecordingTabEnabled(allowRecording);
+			frame.setPublishingTabEnabled(allowPublishing);
+			log.debug("initialized");
+		} catch (Exception err) {
+			log.error("createWindow Exception: ", err);
+		}
+	}
+
+	public void sendCursorStatus() {
+		try {
+			Point mouseP = MouseInfo.getPointerInfo().getLocation();
+
+			float scaleFactor = (1.0f * resizeX) / spinnerWidth;
+
+			// Real size: Real mouse position = Resize : X
+			int x = (int)(Ampl_factor * (mouseP.getX() - spinnerX) * scaleFactor);
+			int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY) * scaleFactor);
+
+			Map<String, Object> cursorPosition = new HashMap<String, Object>();
+			cursorPosition.put("publicSID", publishName);
+			cursorPosition.put("cursor_x", x);
+			cursorPosition.put("cursor_y", y);
+
+			if (controlInstance.getConnection() != null) {
+				if (Red5.getConnectionLocal() == null) {
+					Red5.setConnectionLocal(controlInstance.getConnection());
+				}
+				controlInstance.invoke("setNewCursorPosition", new Object[] { cursorPosition }, this);
+			}
+		} catch (NullPointerException npe) {
+			//noop
+		} catch (Exception err) {
+			frame.setStatus("Exception: " + err);
+			log.error("[sendCursorStatus]", err);
+		}
+	}
+
+	public void setConnectionAsSharingClient() {
+		log.debug("########## setConnectionAsSharingClient");
+		try {
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(controlInstance.getConnection());
+			}
+			Map<String, Object> map = new HashMap<String, Object>();
+			map.put("screenX", spinnerX);
+			map.put("screenY", spinnerY);
+
+			int scaledWidth = (int)(Ampl_factor * resizeX);
+			int scaledHeight = (int)(Ampl_factor * resizeY);
+
+			map.put("screenWidth", scaledWidth);
+			map.put("screenHeight", scaledHeight);
+
+			map.put("startRecording", startRecording);
+			map.put("startStreaming", startStreaming);
+			map.put("startPublishing", startPublishing);
+			map.put("publishingHost", frame.getPublishHost());
+			map.put("publishingApp", frame.getPublishApp());
+			map.put("publishingId", frame.getPublishId());
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(controlInstance.getConnection());
+			}
+			controlInstance.invoke("setConnectionAsSharingClient", new Object[] { map }, this);
+		} catch (Exception err) {
+			frame.setStatus("Error: " + err.getLocalizedMessage());
+			log.error("[setConnectionAsSharingClient]", err);
+		}
+	}
+
+	public void streamingStart() {
+		startStreaming = true;
+		captureScreenStart();
+	}
+	
+	public void recordingStart() {
+		startRecording= true;
+		captureScreenStart();
+	}
+	
+	public void publishingStart() {
+		startPublishing = true;
+		captureScreenStart();
+	}
+	
+	private void connect(String parentSid, boolean control) {
+		Map<String, Object> map = instance.makeDefaultConnectionParams(host, port, app);
+		map.put("screenClient", true);
+		map.put("userId", userId);
+		map.put("parentSid", parentSid);
+		(control ? controlInstance : instance).connect(host, port, map, this);
+	}
+	
+	private void captureScreenStart() {
+		try {
+			log.debug("captureScreenStart");
+			
+			if (!isConnected) {
+				connect(publishName, false);
+			} else {
+				setConnectionAsSharingClient();
+			}
+		} catch (Exception err) {
+			log.error("captureScreenStart Exception: ", err);
+			frame.setStatus("Exception: " + err);
+		}
+	}
+
+	public void streamingStop() {
+		startStreaming = false;
+		captureScreenStop("stopStreaming");
+	}
+	
+	public void recordingStop() {
+		startRecording = false;
+		captureScreenStop("stopRecording");
+	}
+	
+	public void publishingStop() {
+		startPublishing = false;
+		captureScreenStop("stopPublishing");
+	}
+	
+	private void captureScreenStop(String action) {
+		try {
+			log.debug("INVOKE screenSharerAction" );
+
+			Map<String, Object> map = new HashMap<String, Object>();
+			map.put(action, true);
+
+			if (Red5.getConnectionLocal() == null) {
+				Red5.setConnectionLocal(controlInstance.getConnection());
+			}
+			controlInstance.invoke("screenSharerAction", new Object[] { map }, this);
+		} catch (Exception err) {
+			log.error("captureScreenStop Exception: ", err);
+			frame.setStatus("Exception: " + err);
+		}
+	}
+
+	public void stopStreaming() {
+		frame.setSharingStatus(false, !startPublishing && !startRecording && !startStreaming);
+		startStreaming = false;
+	}
+	
+	public void stopRecording() {
+		frame.setRecordingStatus(false, !startPublishing && !startRecording && !startStreaming);
+		startRecording = false;
+	}
+	
+	public void stopPublishing() {
+		frame.setPublishingStatus(false, !startPublishing && !startRecording && !startStreaming);
+		startPublishing = false;
+		if (publishClient != null) {
+			publishClient.disconnect();
+			publishClient = null;
+		}
+	}
+	
+	synchronized public boolean isReadyToRecord() {
+		return readyToRecord;
+	}
+	
+	synchronized private void setReadyToRecord(boolean readyToRecord) {
+		this.readyToRecord = readyToRecord;
+	}
+	
+	protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+		if (!(command instanceof Notify)) {
+			return;
+		}
+		Notify invoke = (Notify)command;
+		if (invoke.getType() == IEvent.Type.STREAM_DATA) {
+			return;
+		}
+		
+		String method = invoke.getCall().getServiceMethodName();
+		if ("stopStream".equals(method)) {
+			stopStream();
+		} else if ("sendRemoteCursorEvent".equals(method)) {
+			sendRemoteCursorEvent(invoke.getCall().getArguments()[0]);
+		} else if ("screenSharerAction".equals(method)) {
+			Object[] args = invoke.getCall().getArguments();
+			if (args != null && args.length > 0) {
+				@SuppressWarnings("unchecked")
+				Map<String, Object> params = (Map<String, Object>)args[0];
+				if (bool(params.get("stopPublishing"))) {
+					stopPublishing();
+				}
+				if (params.containsKey("error")) {
+					frame.setStatus("" + params.get("error"));
+				}
+			}
+		}
+	}
+
+	public void stopStream() {
+		try {
+			log.debug("ScreenShare stopStream");
+
+			stopStreaming();
+			stopRecording();
+			stopPublishing();
+			isConnected = false;
+
+			instance.disconnect();
+			controlInstance.disconnect();
+			setReadyToRecord(false);
+			getCapture().setStartPublish(false);
+			getCapture().release();
+			capture = null;
+		} catch (Exception e) {
+			log.error("ScreenShare stopStream exception " + e);
+		}
+
+	}
+
+	public void onStreamEvent(Notify notify) {
+		log.debug( "onStreamEvent " + notify );
+
+		@SuppressWarnings("rawtypes")
+		ObjectMap map = (ObjectMap) notify.getCall().getArguments()[0];
+		String code = (String) map.get("code");
+
+		if (StatusCodes.NS_PUBLISH_START.equals(code)) {
+			log.debug( "onStreamEvent Publish start" );
+			getCapture().setStartPublish(true);
+			setReadyToRecord(true);
+		}
+	}
+
+	private boolean bool(Object b) {
+		return TRUE.equals(Boolean.valueOf("" + b));
+	}
+	
+	private int getInt(Map<String, Object> returnMap, String key) {
+		return Integer.valueOf(returnMap.get(key).toString()).intValue();
+	}
+	
+	private float getFloat(Map<String, Object> returnMap, String key) {
+		return Float.valueOf(returnMap.get(key).toString()).floatValue();
+	}
+	
+	private Point getCoordinates(Map<String, Object> returnMap) {
+		float scaleFactorX = spinnerWidth / (Ampl_factor * resizeX);
+		float scaleFactorY = spinnerHeight / (Ampl_factor * resizeY);
+
+		int x = Math.round(scaleFactorX * getFloat(returnMap, "x") + spinnerX);
+		int y = Math.round(scaleFactorY * getFloat(returnMap, "y") + spinnerY);
+		return new Point(x, y);
+	}
+	
+	public void sendRemoteCursorEvent(Object obj) {
+		try {
+			if (!remoteEnabled) {
+				return;
+			}
+			log.trace("#### sendRemoteCursorEvent ");
+			log.trace("Result Map Type "+obj.getClass().getName());
+
+			@SuppressWarnings("unchecked")
+			Map<String, Object> returnMap = (Map<String, Object>)obj;
+
+			String action = "" + returnMap.get("action");
+
+			if (action.equals("onmouseup")) {
+				Robot robot = new Robot();
+				
+				Point p = getCoordinates(returnMap);
+				robot.mouseMove(p.x, p.y);
+				robot.mouseRelease(InputEvent.BUTTON1_MASK);
+			} else if (action.equals("onmousedown")) {
+				Robot robot = new Robot();
+
+				Point p = getCoordinates(returnMap);
+				robot.mouseMove(p.x, p.y);
+				robot.mousePress(InputEvent.BUTTON1_MASK);
+			} else if (action.equals("mousePos")) {
+				Robot robot = new Robot();
+
+				Point p = getCoordinates(returnMap);
+				robot.mouseMove(p.x, p.y);
+			} else if (action.equals("onkeydown")) {
+				Robot robot = new Robot();
+
+				int key = getInt(returnMap, "k");
+
+				// logger.debug("key onkeydown -1 "+key);
+				boolean doAction = true;
+
+				if (key == 221) {
+					key = 61;
+				} else if (key == -1) {
+					String charValue = returnMap.get("c").toString();
+
+					// key = KeyEvent.VK_ADD;
+					doAction = false;
+
+					for (Integer storedKey : currentPressedKeys.keySet()) {
+						robot.keyRelease(storedKey);
+					}
+
+					currentPressedKeys = new HashMap<Integer, Boolean>();
+
+					pressSpecialSign(charValue, robot);
+				} else if (key == 188) {
+					key = 44;
+				} else if (key == 189) {
+					key = 109;
+				} else if (key == 190) {
+					key = 46;
+				} else if (key == 191) {
+					key = 47;
+				} else if (key == 13) {
+					key = KeyEvent.VK_ENTER;
+				}
+
+				if (doAction) {
+					currentPressedKeys.put(key, true);
+
+					robot.keyPress(key);
+				}
+			} else if (action.equals("onkeyup")) {
+				Robot robot = new Robot();
+
+				int key = getInt(returnMap, "k");
+
+				boolean doAction = true;
+
+				if (key == 221) {
+					key = 61;
+				} else if (key == -1) {
+					doAction = false;
+				} else if (key == 188) {
+					key = 44;
+				} else if (key == 189) {
+					key = 109;
+				} else if (key == 190) {
+					key = 46;
+				} else if (key == 191) {
+					key = 47;
+				} else if (key == 13) {
+					key = KeyEvent.VK_ENTER;
+				}
+
+				// logger.debug("key onkeyup 2- "+key);
+
+				if (doAction) {
+					if (currentPressedKeys.containsKey(key)) {
+						currentPressedKeys.remove(key);
+
+						robot.keyRelease(key);
+					}
+				}
+			} else if (action.equals("paste")) {
+				Robot robot = new Robot();
+
+				String paste = returnMap.get("paste").toString();
+
+				pressSpecialSign(paste, robot);
+			} else if (action.equals("copy")) {
+				Robot robot = new Robot();
+
+				String paste = this.getHighlightedText(robot);
+
+				Map<Integer, String> map = new HashMap<Integer, String>();
+				map.put(0, "copiedText");
+				map.put(1, paste);
+
+				String clientId = returnMap.get("clientId").toString();
+
+				controlInstance.invoke("sendMessageWithClientById", new Object[]{map, clientId}, this);
+			} else if (action.equals("show")) {
+				String paste = getClipboardText();
+
+				Map<Integer, String> map = new HashMap<Integer, String>();
+				map.put(0, "copiedText");
+				map.put(1, paste);
+
+				String clientId = returnMap.get("clientId").toString();
+
+				controlInstance.invoke("sendMessageWithClientById", new Object[]{map, clientId}, this);
+			}
+		} catch (Exception err) {
+			log.error("[sendRemoteCursorEvent]", err);
+		}
+	}
+
+	public String getClipboardText() {
+		try {
+			// get the system clipboard
+			Clipboard systemClipboard = getDefaultToolkit().getSystemClipboard();
+
+			// get the contents on the clipboard in a
+			// transferable object
+			Transferable clipboardContents = systemClipboard.getContents(null);
+
+			// check if clipboard is empty
+			if (clipboardContents == null) {
+				// Clipboard is empty!!!
+				return ("");
+
+				// see if DataFlavor of
+				// DataFlavor.stringFlavor is supported
+			} else if (clipboardContents.isDataFlavorSupported(stringFlavor)) {
+				// return text content
+				String returnText = (String) clipboardContents.getTransferData(stringFlavor);
+
+				return returnText;
+			}
+
+			return "";
+		} catch (Exception e) {
+			log.error("Unexpected exception while getting clipboard text", e);
+		}
+		return "";
+	}
+
+	private void pressSequence(Robot robot, long delay, int... codes) throws InterruptedException {
+		for (int code : codes) {
+			robot.keyPress(code);
+			Thread.sleep(delay);
+		}
+	}
+	
+	private String getHighlightedText(Robot robot) {
+		try {
+			if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+				// pressing STRG+C == copy
+				pressSequence(robot, 200, KeyEvent.VK_CONTROL, KeyEvent.VK_C, KeyEvent.VK_C, KeyEvent.VK_CONTROL);
+			} else {
+				// Macintosh simulate Copy
+				pressSequence(robot, 200, 157, 67, 67, 157);
+			}
+			return getClipboardText();
+		} catch (Exception e) {
+			log.error("Unexpected exception while getting highlighted text", e);
+		}
+		return "";
+	}
+
+	private void pressSpecialSign(String charValue, Robot robot) {
+		Clipboard clippy = getDefaultToolkit().getSystemClipboard();
+		try {
+			Transferable transferableText = new StringSelection(charValue);
+			clippy.setContents(transferableText, null);
+
+			if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") >= 0) {
+				// pressing STRG+V == insert-mode
+				pressSequence(robot, 100, KeyEvent.VK_CONTROL, KeyEvent.VK_V, KeyEvent.VK_V, KeyEvent.VK_CONTROL);
+			} else {
+				// Macintosh simulate Insert
+				pressSequence(robot, 100, 157, 86, 86, 157);
+			}
+		} catch (Exception e) {
+			log.error("Unexpected exception while pressSpecialSign", e);
+		}
+	}
+
+	public void resultReceived(IPendingServiceCall call) {
+		try {
+
+			log.trace("service call result: " + call);
+
+			String method = call == null ? null : call.getServiceMethodName();
+			Object o = call == null ? null : call.getResult();
+			log.trace("call ### get Method Name " + method);
+			if ("connect".equals(method)) {
+				if (o instanceof Map) {
+					@SuppressWarnings("unchecked")
+					Map<String, Object> map = (Map<String, Object>) o;
+					Object code = map.get("code");
+					if ("NetConnection.Connect.Rejected".equals(code) || "NetConnection.Connect.Failed".equals(code)) {
+						frame.setStatus(String.format("Error: %s %s", code, map.get("description")));
+						return;
+					}
+				}
+				if (!isConnected) {
+					instance.invoke("getPublicSID", null, this);
+				} else {
+					setConnectionAsSharingClient();
+				}
+				isConnected = true;
+			} else if ("getPublicSID".equals(method)) {
+				connect((String)o, true);
+			} else if ("setConnectionAsSharingClient".equals(method)) {
+				@SuppressWarnings("unchecked")
+				Map<String, Object> returnMap = (Map<String, Object>) o;
+
+				if (o == null || !bool(returnMap.get("alreadyPublished"))) {
+					log.trace("Stream not yet started - do it ");
+
+					instance.createStream(this);
+				} else {
+					log.trace("The Stream was already started ");
+				}
+				if (returnMap != null) {
+					Object modus = returnMap.get("modus");
+					if ("startStreaming".equals(modus)) {
+						frame.setSharingStatus(true, false);
+					}
+					if ("startRecording".equals(modus)) {
+						frame.setRecordingStatus(true, false);
+					}
+					if ("startPublishing".equals(modus)) {
+						frame.setPublishingStatus(true, false);
+						publishClient = new RTMPClientPublish(
+							this
+							, frame.getPublishHost()
+							, frame.getPublishApp()
+							, frame.getPublishId());
+						publishClient.connect();
+					}
+				} else {
+					throw new Exception("Could not aquire modus for event setConnectionAsSharingClient");
+				}
+
+			} else if ("createStream".equals(method)) {
+				if (startRecording || startStreaming) {
+					if (call.getResult() != null) {
+						getCapture().setStreamId((Integer)call.getResult());
+					}
+					log.debug("createPublishStream result stream id: {}; name: {}", getCapture().getStreamId(), publishName);
+					instance.publish(getCapture().getStreamId(), publishName, "live", this);
+	
+					log.debug("setup capture thread spinnerWidth = {}; spinnerHeight = {};", spinnerWidth, spinnerHeight);
+	
+					if (!getCapture().isAlive()) {
+						getCapture().setSendCursor(startStreaming);
+						getCapture().start();
+					}
+				}
+			} else if ("screenSharerAction".equals(method)) {
+				if (log.isTraceEnabled()) {
+					log.trace("Result Map Type " + (o == null ? null : o.getClass().getName()));
+				}
+
+				@SuppressWarnings("unchecked")
+				Map<String, Object> returnMap = (Map<String, Object>)o;
+				Object result = returnMap.get("result");
+				if ("stopAll".equals(result)) {
+					log.trace("Stopping to stream, there is neither a Desktop Sharing nor Recording anymore");
+					stopStream();
+				} else if ("stopSharingOnly".equals(result)) {
+					stopStreaming();
+				} else if ("stopRecordingOnly".equals(result)) {
+					stopRecording();
+				} else if ("stopPublishingOnly".equals(result)) {
+					stopPublishing();
+				}
+			} else if ("setNewCursorPosition".equals(method)) {
+				// Do not do anything
+			} else {
+				log.debug("Unknown method " + method);
+			}
+
+		} catch (Exception err) {
+			log.error("[resultReceived]", err);
+		}
+	}
+
+	public boolean isAudioNotify() {
+		return audioNotify;
+	}
+
+	public void setAudioNotify(boolean audioNotify) {
+		this.audioNotify = audioNotify;
+	}
+
+	public boolean isRemoteEnabled() {
+		return remoteEnabled;
+	}
+
+	public void setRemoteEnabled(boolean remoteEnabled) {
+		this.remoteEnabled = remoteEnabled;
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenEncoder.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenEncoder.java
new file mode 100644
index 0000000..69acef3
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenEncoder.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import java.io.IOException;
+
+import org.red5.server.net.rtmp.event.VideoData;
+
+public interface IScreenEncoder {
+	void createUnalteredFrame() throws IOException;
+	
+	VideoData getUnalteredFrame();
+
+	VideoData encode(int[][] img) throws IOException;
+	
+	void reset();
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenShare.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenShare.java
new file mode 100644
index 0000000..8242a8a
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/IScreenShare.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import java.util.Map;
+
+import org.red5.client.net.rtmp.ClientExceptionHandler;
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.messaging.IMessage;
+import org.red5.server.net.rtmp.RTMPConnection;
+
+public interface IScreenShare extends ClientExceptionHandler {
+	RTMPConnection getConnection();
+	void invoke(String method, Object[] params, IPendingServiceCallback callback);
+	Map<String, Object> makeDefaultConnectionParams(String server, int port, String application);
+	void connect(String server, int port, Map<String, Object> connectionParams, IPendingServiceCallback connectCallback);
+	void setServiceProvider(Object serviceProvider);
+	void disconnect();
+	void createStream(IPendingServiceCallback callback);
+	void publish(int streamId, String name, String mode, INetStreamEventHandler handler);
+	void publishStreamData(int streamId, IMessage message);
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPClientPublish.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPClientPublish.java
new file mode 100644
index 0000000..987f22a
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPClientPublish.java
@@ -0,0 +1,100 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.client.net.rtmp.RTMPClient;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.event.Notify;
+import org.red5.server.net.rtmp.message.Header;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class RTMPClientPublish extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, IScreenShare {
+	private static final Logger logger = LoggerFactory.getLogger(RTMPClientPublish.class);
+	private final CaptureScreen publishScreen;
+	private String id;
+	private CoreScreenShare core;
+	
+	public void setCore(CoreScreenShare core) {
+		this.core = core;
+	}
+	
+	RTMPClientPublish(CoreScreenShare core, String host, String app, String id) {
+		this.id = id;
+		this.core = core;
+		publishScreen = new CaptureScreen(core, this, host, app, 1935);
+	}
+
+	public void connect() {
+		super.connect(publishScreen.getHost(), 1935, publishScreen.getApp(), this);
+	}
+	
+	@Override
+	public void handleException(Throwable throwable) {
+		logger.error("ERROR", throwable);
+	}
+
+	@Override
+	public void connectionOpened(RTMPConnection conn) {
+		super.connectionOpened(conn);
+		createStream(this);
+	}
+	
+	@Override
+	public void connectionClosed(RTMPConnection conn) {
+		super.connectionClosed(conn);
+		connectionClosed();
+	}
+	
+	private void connectionClosed() {
+		publishScreen.setStartPublish(false);
+		publishScreen.release();
+		core.publishingStop();
+	}
+	
+	@Override
+	protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+		super.onCommand(conn, channel, source, command);
+	}
+	
+	public void resultReceived(IPendingServiceCall call) {
+		String method = call == null ? null : call.getServiceMethodName();
+		logger.trace("call ### get Method Name " + method);
+		if ("connect".equals(method)) {
+			//setConnectionAsSharingClient(); //FIXME
+		} else if ("createStream".equals(method)) {
+			if (call.getResult() != null) {
+				publishScreen.setStreamId((Integer)call.getResult());
+				publish(publishScreen.getStreamId(), id, "live", this);
+				publishScreen.setStartPublish(true);
+				publishScreen.start();
+			} else {
+				connectionClosed();
+			}
+		}
+	}
+
+	public void onStreamEvent(Notify notify) {
+	}
+}
\ No newline at end of file
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
new file mode 100644
index 0000000..1197611
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import org.red5.client.net.rtmps.RTMPSClient;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.message.Header;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RTMPSScreenShare extends RTMPSClient implements IScreenShare {
+	private static final Logger logger = LoggerFactory.getLogger(RTMPSScreenShare.class);
+
+	private CoreScreenShare core = null;
+
+	public RTMPSScreenShare(CoreScreenShare core) {
+		this.core = core;
+	};
+
+	@Override
+	public void connect(String server, int port, String application,
+			IPendingServiceCallback connectCallback) {
+		try { //FIXME need to be removed
+			super.connect(server, port, application, connectCallback);
+		} catch (NullPointerException npe) {
+			//no op, since RTMPSClient throws NPE
+		}
+	}
+	
+	// ------------------------------------------------------------------------
+	//
+	// Override
+	//
+	// ------------------------------------------------------------------------
+	@Override
+	public void connectionOpened(RTMPConnection conn) {
+		logger.debug("connection opened");
+		super.connectionOpened(conn);
+		this.conn = conn;
+	}
+
+	@Override
+	public void connectionClosed(RTMPConnection conn) {
+		logger.debug("connection closed");
+		super.connectionClosed(conn);
+		if (core.isAudioNotify()) {
+			AudioTone.play();
+		}
+		core.stopStream();
+	}
+
+	@Override
+	protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+		super.onCommand(conn, channel, source, command);
+		core.onCommand(conn, channel, source, command);
+	}
+
+	@Override
+	public void handleException(Throwable throwable) {
+		logger.error("{}", new Object[] { throwable.getCause() });
+		System.out.println(throwable.getCause());
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
new file mode 100644
index 0000000..101b6c6
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import org.red5.client.net.rtmp.RTMPClient;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.message.Header;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RTMPScreenShare extends RTMPClient implements IScreenShare {
+	private static final Logger logger = LoggerFactory.getLogger(RTMPScreenShare.class);
+
+	private CoreScreenShare core = null;
+
+	public RTMPScreenShare(CoreScreenShare core) {
+		this.core = core;
+	}
+
+	// ------------------------------------------------------------------------
+	//
+	// Override
+	//
+	// ------------------------------------------------------------------------
+	@Override
+	public void connectionOpened(RTMPConnection conn) {
+		logger.debug("connection opened");
+		super.connectionOpened(conn);
+		this.conn = conn;
+	}
+
+	@Override
+	public void connectionClosed(RTMPConnection conn) {
+		logger.debug("connection closed");
+		super.connectionClosed(conn);
+		if (core.isAudioNotify()) {
+			AudioTone.play();
+		}
+		core.stopStream();
+	}
+
+	@Override
+	protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+		super.onCommand(conn, channel, source, command);
+		core.onCommand(conn, channel, source, command);
+	}
+
+	@Override
+	public void handleException(Throwable throwable) {
+		logger.error("{}", new Object[] { throwable.getCause() });
+		System.out.println(throwable.getCause());
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
new file mode 100644
index 0000000..c83d506
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import org.red5.client.net.rtmpt.RTMPTClient;
+import org.red5.server.net.ICommand;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.message.Header;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RTMPTScreenShare extends RTMPTClient implements IScreenShare {
+	private static final Logger logger = LoggerFactory.getLogger(RTMPTScreenShare.class);
+
+	private CoreScreenShare core = null;
+
+	public RTMPTScreenShare(CoreScreenShare core) {
+		this.core = core;
+	};
+
+	// ------------------------------------------------------------------------
+	//
+	// Override
+	//
+	// ------------------------------------------------------------------------
+	@Override
+	public void connectionOpened(RTMPConnection conn) {
+		logger.debug("connection opened");
+		super.connectionOpened(conn);
+		this.conn = conn;
+	}
+
+	@Override
+	public void connectionClosed(RTMPConnection conn) {
+		logger.debug("connection closed");
+		super.connectionClosed(conn);
+		if (core.isAudioNotify()) {
+			AudioTone.play();
+		}
+		core.stopStream();
+	}
+
+	@Override
+	protected void onCommand(RTMPConnection conn, Channel channel, Header source, ICommand command) {
+		super.onCommand(conn, channel, source, command);
+		core.onCommand(conn, channel, source, command);
+	}
+
+	@Override
+	public void handleException(Throwable throwable) {
+		logger.error("{}", new Object[] { throwable.getCause() });
+		System.out.println(throwable.getCause());
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/ScreenV1Encoder.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/ScreenV1Encoder.java
new file mode 100644
index 0000000..e55eee7
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/ScreenV1Encoder.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeX;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeY;
+import static org.red5.io.IoConstants.FLAG_CODEC_SCREEN;
+import static org.red5.io.IoConstants.FLAG_FRAMETYPE_INTERFRAME;
+import static org.red5.io.IoConstants.FLAG_FRAMETYPE_KEYFRAME;
+
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.Deflater;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.red5.server.net.rtmp.event.VideoData;
+
+public class ScreenV1Encoder extends BaseScreenEncoder {
+	private int[][] last = null;
+	private static int KEY_FRAME_INDEX = 25;
+	private static int DEFAULT_BLOCK_SIZE = 32;
+	private static int DEFAULT_SCREEN_WIDTH = 1920;
+	private static int DEFAULT_SCREEN_HEIGHT = 1080;
+	private int keyFrameIndex;
+	private int frameCount = 0;
+	private int blockSize;
+	private ByteArrayOutputStream ba = new ByteArrayOutputStream(50 + 3 * DEFAULT_SCREEN_WIDTH * DEFAULT_SCREEN_HEIGHT);
+	private byte[] areaBuf = null;
+	private Deflater d = new Deflater(Deflater.DEFAULT_COMPRESSION);
+	private byte[] zipBuf = null;
+	private VideoData unalteredFrame = null;
+	
+	public ScreenV1Encoder() {
+		this(KEY_FRAME_INDEX, DEFAULT_BLOCK_SIZE);
+	}
+	
+	public ScreenV1Encoder(int keyFrameIndex) {
+		this(keyFrameIndex, DEFAULT_BLOCK_SIZE);
+	}
+	
+	//will create square blocks
+	public ScreenV1Encoder(int keyFrameIndex, int blockSize) {
+		this.keyFrameIndex = keyFrameIndex;
+		if (blockSize < 16 || blockSize > 256 || blockSize % 16 != 0) {
+			throw new RuntimeException("Invalid block size passed: " + blockSize + " should be: 'from 16 to 256 in multiples of 16'");
+		}
+		this.blockSize = blockSize;
+
+		areaBuf = new byte[3 * blockSize * blockSize];
+		zipBuf = new byte[3 * blockSize * blockSize];
+	}
+
+	private VideoData getData(byte[] data) {
+		IoBuffer buf = IoBuffer.allocate(data.length);
+		buf.clear();
+		buf.put(data);
+		buf.flip();
+		return new VideoData(buf);
+	}
+	
+	public void createUnalteredFrame() throws IOException {
+		if (last == null) {
+			return;
+		}
+		if (unalteredFrame == null) {
+			ByteArrayOutputStream ba = new ByteArrayOutputStream(200);
+			
+			Rectangle _area = new Rectangle(resizeX, resizeY);
+			//header
+			ba.write(getTag(FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
+			writeShort(ba, _area.width + ((blockSize / 16 - 1) << 12));
+			writeShort(ba, _area.height + ((blockSize / 16 - 1) << 12));
+			Rectangle area = getNextBlock(_area, null);
+			while (area.width > 0 && area.height > 0) {
+				writeShort(ba, 0);
+				area = getNextBlock(_area, area);
+			}
+			unalteredFrame = getData(ba.toByteArray());
+		}
+	}
+	
+	public VideoData getUnalteredFrame() {
+		if (unalteredFrame != null && (frameCount % keyFrameIndex) != 0) {
+			frameCount++;
+		}
+		return unalteredFrame;
+	}
+	
+	public synchronized VideoData encode(int[][] img) throws IOException {
+		ba.reset();
+		Rectangle imgArea = new Rectangle(img.length, img[0].length);
+		Rectangle area = getNextBlock(imgArea, null);
+		boolean isKeyFrame = (frameCount++ % keyFrameIndex) == 0 || last == null;
+		
+		//header
+		ba.write(getTag(isKeyFrame ? FLAG_FRAMETYPE_KEYFRAME : FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN));
+		writeShort(ba, imgArea.width + ((blockSize / 16 - 1) << 12));
+		writeShort(ba, imgArea.height + ((blockSize / 16 - 1) << 12));
+		
+		while (area.width > 0 && area.height > 0) {
+			writeBytesIfChanged(ba, isKeyFrame, img, area);
+			area = getNextBlock(imgArea, area);
+		}
+		last = img;
+		return getData(ba.toByteArray());
+	}
+	
+	public void reset() {
+		last = null;
+		unalteredFrame = null;
+	}
+	
+	private Rectangle getNextBlock(Rectangle img, Rectangle _prev) {
+		Rectangle prev;
+		if (_prev == null) {
+			prev = new Rectangle(0, Math.max(0, img.height - blockSize), blockSize, blockSize);
+		} else {
+			prev = new Rectangle(_prev);
+			if (prev.x + prev.width == img.getWidth()) {
+				if (prev.y == 0) return new Rectangle(); //the end of the image
+				//next row
+				prev.x = 0; //reset position
+				prev.width = blockSize; //reset width
+				prev.height = (prev.y > blockSize ? blockSize : prev.y);
+				prev.y -= prev.height;
+			} else {
+				prev.x += blockSize;
+			}
+		}
+		return img.intersection(prev); 
+	}
+
+	private void writeBytesIfChanged(ByteArrayOutputStream ba, boolean isKeyFrame, int[][] img, Rectangle area) throws IOException {
+		boolean changed = isKeyFrame;
+		int count = 0;
+		for (int y = area.y + area.height - 1; y >= area.y; --y) {
+			for (int x = area.x; x < area.x + area.width; ++x) {
+				int pixel = img[x][y];
+				if (!changed && (last == null || pixel != last[x][y])) {
+					changed = true;
+				}
+				areaBuf[count++] = (byte)(pixel & 0xFF);			// Blue component
+				areaBuf[count++] = (byte)((pixel >> 8) & 0xFF);		// Green component
+				areaBuf[count++] = (byte)((pixel >> 16) & 0xFF);	// Red component
+			}
+		}
+		if (changed) {
+			d.reset();
+			d.setInput(areaBuf, 0, count);
+			d.finish();
+			int written = d.deflate(zipBuf);
+			writeShort(ba, written);
+			ba.write(zipBuf, 0, written);
+		} else {
+			writeShort(ba, 0);
+		}
+	}
+
+	public int getTag(final int frame, final int codec) {
+		return ((frame & 0x0F) << 4) + ((codec & 0x0F) << 0);
+	}
+	
+	private void writeShort(OutputStream os, final int n) throws IOException {
+		os.write((n >> 8) & 0xFF);
+		os.write((n >> 0) & 0xFF);
+	}
+	
+	public static int[][] getImage(Rectangle screen, Robot robot) {
+		int[][] buffer = new int[resizeX][resizeY];
+		BufferedImage image = resize(robot.createScreenCapture(screen), new Rectangle(resizeX, resizeY));
+		for (int x = 0; x < image.getWidth(); ++x) {
+			for (int y = 0; y < image.getHeight(); ++y) {
+				buffer[x][y] = image.getRGB(x, y);
+			}
+		}
+		return buffer;
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/BlankArea.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/BlankArea.java
new file mode 100644
index 0000000..c8f85e0
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/BlankArea.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import javax.swing.*;
+import java.awt.Dimension;
+import java.awt.Color;
+
+public class BlankArea extends MouseListenerable {
+	private static final long serialVersionUID = 1L;
+	private Dimension minSize = new Dimension(100, 50);
+
+    public BlankArea(Color color) {
+        setBackground(color);
+        setOpaque(false);
+		setHorizontalAlignment(SwingConstants.LEFT);
+		setVerticalAlignment(SwingConstants.TOP);
+		setHorizontalTextPosition(0);
+		setVerticalTextPosition(0);
+        setBorder(BorderFactory.createLineBorder(Color.black));
+        setMinimumSize(minSize);
+        setPreferredSize(minSize);
+    }
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/MouseListenerable.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/MouseListenerable.java
new file mode 100644
index 0000000..5e30200
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/MouseListenerable.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.event.MouseAdapter;
+
+import javax.swing.JLabel;
+
+public class MouseListenerable extends JLabel {
+	private static final long serialVersionUID = 1L;
+
+	public void addListener(MouseAdapter listner) {
+		addMouseListener(listner);
+		addMouseMotionListener(listner);
+	}
+}
\ No newline at end of file
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/NumberSpinner.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/NumberSpinner.java
new file mode 100644
index 0000000..7b682f4
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/NumberSpinner.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+
+public class NumberSpinner extends JSpinner {
+	private static final long serialVersionUID = 1L;
+
+	public NumberSpinner(int value, int min, int max, int step) {
+		super(new SpinnerNumberModel(value, min, max, step));
+	}
+	
+	public Integer getValue() {
+		return (Integer)super.getValue();
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenDimensions.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenDimensions.java
new file mode 100644
index 0000000..e35173f
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenDimensions.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+
+public class ScreenDimensions {
+	public static final int ROUND_VALUE = 16;
+	/**
+	 * image recalcing value's from the virtual Screen drawer
+	 */
+	public static int width = 200;
+	public static int height = 0;
+
+	/**
+	 * Values calced by the original Screen
+	 */
+
+	public static double ratio = 0;
+
+	public static int widthMax = 0;
+	public static int heightMax = 0;
+
+	/**
+	 * Values set by the virtualScreen
+	 */
+	public static int spinnerWidth = 0;
+	public static int spinnerHeight = 0;
+	public static int spinnerX = 0;
+	public static int spinnerY = 0;
+	
+	public static ScreenQuality quality = ScreenQuality.Medium;
+	public static int FPS = 10;
+	
+	public static int resizeX = 640;
+	public static int resizeY = 480;
+	
+	static {
+		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+		ratio = screenSize.getHeight() / screenSize.getWidth();
+		widthMax = (int)screenSize.getWidth();
+		heightMax = (int)screenSize.getHeight();
+		height = (int)(width * ratio);
+		spinnerX = 0;
+		spinnerY = 0;
+		spinnerWidth = widthMax;
+		spinnerHeight = heightMax;
+		resizeX = 640;
+		resizeY = 400;
+	}
+	
+	public enum ScreenQuality {
+		VeryHigh
+		, High
+		, Medium
+		, Low
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenHeightMouseListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenHeightMouseListener.java
new file mode 100644
index 0000000..1426b2c
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenHeightMouseListener.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.event.MouseInputAdapter;
+
+public class ScreenHeightMouseListener extends MouseInputAdapter  {
+	private ScreenSharerFrame frame;
+	private double y = 0;
+
+	public ScreenHeightMouseListener(ScreenSharerFrame frame) {
+		this.frame = frame;
+	}
+	
+	public void mouseEntered(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
+	}
+
+	public void mouseExited(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+	}
+
+	public void mousePressed(MouseEvent e) {
+		frame.setShowWarning(false);
+		y = e.getY();
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		frame.setShowWarning(true);
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!((Component)e.getSource()).isEnabled()) {
+			return;
+		}
+		double newY = e.getY();
+
+		int newHeight = ScreenDimensions.spinnerHeight - (int)(y - newY);
+		int newSpinnerY = ScreenDimensions.spinnerY + newHeight;
+
+		if (newSpinnerY >= 0 && newSpinnerY <= ScreenDimensions.heightMax) {
+			frame.setDoUpdateBounds(false);
+			frame.setSpinnerHeight(newHeight);
+			frame.setDoUpdateBounds(true);
+			frame.updateVScreenBounds();
+			frame.calcRescaleFactors();
+		}
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenKeyListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenKeyListener.java
new file mode 100644
index 0000000..603162a
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenKeyListener.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ScreenKeyListener implements KeyListener {
+	private static final Logger logger = LoggerFactory.getLogger(ScreenKeyListener.class);
+
+	public void keyPressed(KeyEvent kEvent) {
+		logger.debug("keyPressed :Code: " + kEvent.getKeyCode());
+	}
+
+	public void keyReleased(KeyEvent kEvent) {
+		logger.debug("keyReleased :Code: " + kEvent.getKeyCode());
+	}
+
+	public void keyTyped(KeyEvent arg0) {
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenMouseListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenMouseListener.java
new file mode 100644
index 0000000..791abe7
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenMouseListener.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.event.MouseInputAdapter;
+
+public class ScreenMouseListener extends MouseInputAdapter {
+	private ScreenSharerFrame frame;
+	private int x = 0;
+	private int y = 0;
+
+	public ScreenMouseListener(ScreenSharerFrame frame) {
+		this.frame = frame;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+	}
+
+	public void mouseExited(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+	}
+
+	public void mousePressed(MouseEvent e) {
+		frame.setShowWarning(false);
+		this.x = e.getX();
+		this.y = e.getY();
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		frame.setShowWarning(true);
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!((Component)e.getSource()).isEnabled()) {
+			return;
+		}
+		int newX = e.getX();
+		int newY = e.getY();
+
+		int newXPosition = ScreenDimensions.spinnerX - (this.x - newX);
+		int newYPosition = ScreenDimensions.spinnerY - (this.y - newY);
+		if (newXPosition >= 0) {
+			frame.setSpinnerX(newXPosition);
+		}
+		if (newYPosition >= 0) {
+			frame.setSpinnerY(newYPosition);
+		}
+
+		frame.calcRescaleFactors();
+	}
+
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
new file mode 100644
index 0000000..8c5a1e4
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
@@ -0,0 +1,855 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.ROUND_VALUE;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeX;
+import static org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.resizeY;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.awt.AWTException;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.SystemColor;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+
+import javax.swing.BorderFactory;
+import javax.swing.GroupLayout;
+import javax.swing.GroupLayout.Alignment;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextField;
+import javax.swing.SwingConstants;
+import javax.swing.border.EmptyBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+
+import org.apache.openmeetings.screen.webstart.CoreScreenShare;
+import org.apache.openmeetings.screen.webstart.gui.ScreenDimensions.ScreenQuality;
+import org.slf4j.Logger;
+
+public class ScreenSharerFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+	private static final Logger logger = getLogger(ScreenSharerFrame.class);
+	
+	private JPanel contentPane;
+	private JPanel panelScreen = new DisabledPanel();
+	private JPanel panelRecording = new DisabledPanel();
+	private JPanel panelPublish = new DisabledPanel();
+	private JLabel lblStatus = new JLabel();
+	private int vScreenX = 20;
+	private int vScreenY = 20;
+	private VerticalSlider upSlider = new VerticalSlider();
+	private VerticalSlider downSlider = new VerticalSlider();
+	private HorizontalSlider leftSlider = new HorizontalSlider();
+	private HorizontalSlider rightSlider = new HorizontalSlider();
+	private BlankArea virtualScreen = new BlankArea(new Color(255, 255, 255, 100));
+	private JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
+	private boolean doUpdateBounds = true;
+	private boolean showWarning = true;
+	private JButton btnStartStopSharing;
+	private JButton btnStartStopRecording;
+	private JButton btnStartStopPublish;
+	private NumberSpinner spinnerX;
+	private NumberSpinner spinnerY;
+	private NumberSpinner spinnerWidth;
+	private NumberSpinner spinnerHeight;
+	private JComboBox<KeyValue<ScreenQuality>> comboQuality;
+	private JComboBox<KeyValue<Integer>> comboFPS;
+	private JTextField textPublishHost;
+	private JTextField textPublishApp;
+	private JTextField textPublishId;
+	private JLabel lblPublishURL;
+	private boolean sharingStarted = false;
+	private boolean recordingStarted = false;
+	private boolean publishStarted = false;
+	private boolean recordingActionRequested = false;
+	private boolean publishingActionRequested = false;
+	private boolean sharingActionRequested = false;
+	private ImageIcon startIcon;
+	private ImageIcon stopIcon;
+	private String startSharingLabel;
+	private String stopSharingLabel;
+	private String startRecordingLabel;
+	private String stopRecordingLabel;
+	private String startPublishLabel;
+	private String stopPublishLabel;
+	private String reduceWidthLabel;
+	private String reduceHeightLabel;
+	private String reduceXLabel;
+	private String reduceYLabel;
+	private String recordingTipLabel;
+	private String publishingTipLabel;
+	private JCheckBox audioNotify;
+	
+	private class PublishTextField extends JTextField {
+		private static final long serialVersionUID = 1L;
+
+		PublishTextField() {
+			getDocument().addDocumentListener(
+				new DocumentListener() {
+					public void changedUpdate(DocumentEvent e) {
+						updatePublishURL();
+					}
+
+					public void removeUpdate(DocumentEvent e) {
+						updatePublishURL();
+					}
+
+					public void insertUpdate(DocumentEvent e) {
+						updatePublishURL();
+					}
+				});
+
+			setColumns(10);
+		}
+	}
+	
+	private static class KeyValue<T> {
+		private String key;
+		private T value;
+		
+		public KeyValue(String key, T value) {
+			this.key = key;
+			this.value = value;
+		}
+	 
+		@SuppressWarnings("unused")
+		public String getKey() { return key; }
+		public T getValue() { return value; }
+	 
+		@Override
+		public String toString() { return key; }
+	 
+		@Override
+		public boolean equals(Object obj) {
+			if (obj instanceof KeyValue) {
+				@SuppressWarnings("unchecked")
+				KeyValue<T> kv = (KeyValue<T>) obj;
+				return (kv.value.equals(this.value));
+			}
+			return false;
+		}
+	 
+		@Override
+		public int hashCode() {
+			int hash = 7;
+			hash = 97 * hash + (this.value != null ? this.value.hashCode() : 0);
+			return hash;
+		}
+	}
+	
+	//this implementation will not allow to Enable Panel in runtime
+	private static class DisabledPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		public void setEnabled(boolean enabled) {
+			for (Component c : getComponents()) {
+				c.setEnabled(enabled);
+			}
+			super.setEnabled(enabled);
+		}
+	}
+	
+	private static class VerticalSlider extends MouseListenerable {
+		private static final long serialVersionUID = 1L;
+
+		public VerticalSlider() {
+			ImageIcon iUp = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/up.png"));
+			ImageIcon iDown = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/down.png"));
+			setSize(16, 32);
+			JLabel jUp = new JLabel(iUp);
+			jUp.setBounds(0, 0, 16, 16);
+			add(jUp);
+			JLabel jDown = new JLabel(iDown);
+			jDown.setBounds(0, 16, 16, 16);
+			add(jDown);
+		}
+	}
+	
+	private static class HorizontalSlider extends MouseListenerable {
+		private static final long serialVersionUID = 1L;
+
+		public HorizontalSlider() {
+			ImageIcon iLeft = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/previous.png"));
+			ImageIcon iRight = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/next.png"));
+			setSize(32, 16);
+			JLabel jLeft = new JLabel(iLeft);
+			jLeft.setBounds(0, 0, 16, 16);
+			add(jLeft);
+			JLabel jRight = new JLabel(iRight);
+			jRight.setBounds(16, 0, 16, 16);
+			add(jRight);
+		}
+	}
+	
+	private String getTextLabel(String[] textLabels, int idx) {
+		return textLabels != null && idx < textLabels.length ? textLabels[idx] : "#STAB#";
+	}
+	
+	/**
+	 * Create the frame.
+	 * @throws AWTException 
+	 * @throws IOException 
+	 */
+	public ScreenSharerFrame(final CoreScreenShare core, String[] textLabels) throws AWTException {
+		setTitle(getTextLabel(textLabels, 0)); //#id 730
+		setBackground(Color.WHITE);
+		setResizable(false);
+		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+		addWindowListener(new WindowAdapter() {
+			@Override
+			public void windowClosing(WindowEvent e) {
+				core.stopStream();
+				ScreenSharerFrame.this.setVisible(false);
+				System.exit(0);
+			}
+		});
+		setBounds(30, 30, 500, 505);
+		contentPane = new JPanel();
+		contentPane.setBackground(Color.WHITE);
+		contentPane.setBorder(new EmptyBorder(5, 0, 5, 5));
+		setContentPane(contentPane);
+		
+		JLabel lblStartSharing = new JLabel(getTextLabel(textLabels, 1)); //#id 731
+		
+		startSharingLabel = getTextLabel(textLabels, 2); //#id 732
+		stopSharingLabel = getTextLabel(textLabels, 3); //#id 733
+		startRecordingLabel = getTextLabel(textLabels, 15); //#id 871
+		stopRecordingLabel = getTextLabel(textLabels, 16); //#id 872
+		startPublishLabel = getTextLabel(textLabels, 24); //#id 1466
+		stopPublishLabel = getTextLabel(textLabels, 25); //#id 1467
+		reduceWidthLabel = getTextLabel(textLabels, 29); //#id 1471
+		reduceHeightLabel = getTextLabel(textLabels, 30); //#id 1472
+		reduceXLabel = getTextLabel(textLabels, 31); //#id 1473
+		reduceYLabel = getTextLabel(textLabels, 32); //#id 1474
+		recordingTipLabel = getTextLabel(textLabels, 35); //#id 1477
+		publishingTipLabel = getTextLabel(textLabels, 34); //#id 1476
+		startIcon = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/play.png"));
+		stopIcon = new ImageIcon(ScreenSharerFrame.class.getResource("/org/apache/openmeetings/screen/stop.png"));
+		btnStartStopSharing = new JButton(startSharingLabel);
+		btnStartStopSharing.setToolTipText(startSharingLabel);
+		btnStartStopSharing.setIcon(startIcon);
+		btnStartStopSharing.setSize(200, 32);
+		btnStartStopSharing.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				if (sharingStarted) {
+					if (!sharingActionRequested) {
+						sharingActionRequested = true;
+						core.streamingStop();
+					} else {
+						logger.warn("Sharing action is already requested");
+					}
+				} else {
+					if (!sharingActionRequested) {
+						sharingActionRequested = true;
+						core.streamingStart();
+					} else {
+						logger.warn("Sharing action is already requested");
+					}
+				}
+			}
+		});
+		
+		JLabel lblSelectArea = new JLabel(getTextLabel(textLabels, 4)); //#id 734
+		JPanel panelStatus = new JPanel();
+		audioNotify = new JCheckBox(getTextLabel(textLabels, 36)); //#id 1589
+		audioNotify.setBackground(Color.WHITE);
+		audioNotify.setSelected(core.isAudioNotify());
+		audioNotify.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				core.setAudioNotify(audioNotify.isSelected());
+			}
+		});
+		
+		GroupLayout gl_contentPane = new GroupLayout(contentPane);
+		gl_contentPane.setHorizontalGroup(
+			gl_contentPane.createParallelGroup(Alignment.LEADING)
+				.addGroup(gl_contentPane.createSequentialGroup()
+					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addGap(7)
+							.addComponent(lblStartSharing)
+							.addGap(15)
+							.addComponent(audioNotify))
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addGap(21)
+							.addComponent(btnStartStopSharing, 200, 200, 200)
+							.addGap(52)
+							)
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addGap(7)
+							.addComponent(lblSelectArea, GroupLayout.PREFERRED_SIZE, 470, GroupLayout.PREFERRED_SIZE))
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addContainerGap()
+							.addComponent(panelScreen, GroupLayout.PREFERRED_SIZE, 472, GroupLayout.PREFERRED_SIZE))
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addContainerGap()
+							.addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, 472, GroupLayout.PREFERRED_SIZE))
+						.addGroup(gl_contentPane.createSequentialGroup()
+							.addComponent(panelStatus, 494, 494, 494)))
+					.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+		);
+		gl_contentPane.setVerticalGroup(
+			gl_contentPane.createParallelGroup(Alignment.LEADING)
+				.addGroup(gl_contentPane.createSequentialGroup()
+					.addGap(7)
+					.addComponent(lblStartSharing)
+					.addGap(4)
+					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
+						.addComponent(btnStartStopSharing, 32, 32, 32).addComponent(audioNotify, 32, 32, 32)
+						)
+					.addGap(4)
+					.addComponent(lblSelectArea)
+					.addGap(4)
+					.addComponent(panelScreen, 210, 210, 210)
+					.addGap(4)
+					.addComponent(tabbedPane, 150, 150, 150)
+					.addGap(5)
+					.addComponent(panelStatus, 20, 20, 20)
+					)
+		);
+		panelScreen.setLayout(null);
+		panelScreen.setBackground(Color.WHITE);
+		
+		int width = ScreenDimensions.width;
+		int height = ScreenDimensions.height;
+		
+		//Sliders
+		upSlider.addListener(new ScreenYMouseListener(this));
+		upSlider.setToolTipText(getTextLabel(textLabels, 6)); //#id 737
+		panelScreen.add(upSlider);
+		downSlider.addListener(new ScreenHeightMouseListener(this));
+		downSlider.setToolTipText(getTextLabel(textLabels, 6)); //#id 737
+		panelScreen.add(downSlider);
+		
+		leftSlider.addListener(new ScreenXMouseListener(this));
+		leftSlider.setToolTipText(getTextLabel(textLabels, 5)); //#id 735
+		panelScreen.add(leftSlider);
+		rightSlider.addListener(new ScreenWidthMouseListener(this));
+		rightSlider.setToolTipText(getTextLabel(textLabels, 5)); //#id 735
+		panelScreen.add(rightSlider);
+		
+		//Virtual Screen
+		virtualScreen.addListener(new ScreenMouseListener(this));
+		virtualScreen.setBounds(vScreenX, vScreenY, width, height);
+		panelScreen.add(virtualScreen);
+
+		ImageIcon imgBgScreen = new ImageIcon(
+			new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()))
+				.getScaledInstance(width, height, Image.SCALE_SMOOTH));
+		JLabel bgScreen = new JLabel(imgBgScreen);
+		bgScreen.setBounds(vScreenX, vScreenY, width, height);
+		panelScreen.add(bgScreen);
+		
+		//Spinner Width
+		JLabel vscreenWidthLabel = new JLabel();
+		vscreenWidthLabel.setText(getTextLabel(textLabels, 9)); //#id 740
+		vscreenWidthLabel.setBounds(250, 20, 150, 24);
+		panelScreen.add(vscreenWidthLabel);
+
+		spinnerWidth = new NumberSpinner(ScreenDimensions.spinnerWidth, 0, ScreenDimensions.widthMax, 1);
+		spinnerWidth.setBounds(400, 20, 60, 24);
+		spinnerWidth.addChangeListener( new ChangeListener(){
+			public void stateChanged(ChangeEvent arg0) {
+				calcNewValueWidthSpin();
+			}
+		});
+		panelScreen.add(spinnerWidth);
+
+		//Spinner Height
+		JLabel labelHeight = new JLabel();
+		labelHeight.setText(getTextLabel(textLabels, 10)); //#id 741
+		labelHeight.setBounds(250, 50, 150, 24);
+		panelScreen.add(labelHeight);
+
+		spinnerHeight = new NumberSpinner(ScreenDimensions.spinnerHeight, 0, ScreenDimensions.heightMax, 1);
+		spinnerHeight.setBounds(400, 50, 60, 24);
+		spinnerHeight.addChangeListener( new ChangeListener(){
+			public void stateChanged(ChangeEvent arg0) {
+				calcNewValueHeightSpin();
+			}
+		});
+		panelScreen.add(spinnerHeight);
+
+		//Spinner X
+		JLabel labelX = new JLabel();
+		labelX.setText(getTextLabel(textLabels, 7)); //#id 738
+		labelX.setBounds(250, 80, 150, 24);
+		panelScreen.add(labelX);
+
+		spinnerX = new NumberSpinner(ScreenDimensions.spinnerX, 0, ScreenDimensions.widthMax, 1);
+		spinnerX.setBounds(400, 80, 60, 24);
+		spinnerX.addChangeListener( new ChangeListener(){
+			public void stateChanged(ChangeEvent arg0) {
+				calcNewValueXSpin();
+			}
+		});
+		panelScreen.add(spinnerX);
+
+		//Spinner Y
+		JLabel labelY = new JLabel();
+		labelY.setText(getTextLabel(textLabels, 8)); //#id 739
+		labelY.setBounds(250, 110, 150, 24);
+		panelScreen.add(labelY);
+
+		spinnerY = new NumberSpinner(ScreenDimensions.spinnerY, 0, ScreenDimensions.heightMax, 1);
+		spinnerY.setBounds(400, 110, 60, 24);
+		spinnerY.addChangeListener( new ChangeListener(){
+			public void stateChanged(ChangeEvent arg0) {
+				calcNewValueYSpin();
+			}
+		});
+		panelScreen.add(spinnerY);
+		
+		//Quality
+		JLabel labelQuality = new JLabel();
+		labelQuality.setText(getTextLabel(textLabels, 18)); //#id 1089
+		labelQuality.setBounds(250, 140, 200, 24);
+		panelScreen.add(labelQuality);
+		
+		comboQuality = new JComboBox<KeyValue<ScreenQuality>>();
+		comboQuality.addItem(new KeyValue<ScreenQuality>(getTextLabel(textLabels, 19), ScreenQuality.VeryHigh)); //#id 1090
+		comboQuality.addItem(new KeyValue<ScreenQuality>(getTextLabel(textLabels, 20), ScreenQuality.High)); //#id 1091
+		comboQuality.addItem(new KeyValue<ScreenQuality>(getTextLabel(textLabels, 21), ScreenQuality.Medium)); //#id 1092
+		comboQuality.addItem(new KeyValue<ScreenQuality>(getTextLabel(textLabels, 22), ScreenQuality.Low)); //#id 1093
+		comboQuality.setBounds(250, 170, 130, 24);
+		comboQuality.addActionListener(new ActionListener() {
+			@SuppressWarnings("unchecked")
+			public void actionPerformed(ActionEvent e) {
+		        ScreenDimensions.quality = ((KeyValue<ScreenQuality>)comboQuality.getSelectedItem()).getValue();
+		        calcRescaleFactors();
+			}
+		}); 
+		comboQuality.setSelectedIndex(core.defaultQuality);
+		panelScreen.add(comboQuality);
+		comboFPS = new JComboBox<KeyValue<Integer>>();
+		comboFPS.addItem(new KeyValue<Integer>("2 FPS", 2));
+		comboFPS.addItem(new KeyValue<Integer>("5 FPS", 5));
+		comboFPS.addItem(new KeyValue<Integer>("10 FPS", 10));
+		comboFPS.addItem(new KeyValue<Integer>("15 FPS", 15));
+		comboFPS.addItem(new KeyValue<Integer>("20 FPS", 20));
+		comboFPS.addItem(new KeyValue<Integer>("25 FPS", 25));
+		comboFPS.addItem(new KeyValue<Integer>("30 FPS", 30));
+		comboFPS.addActionListener(new ActionListener() {
+			@SuppressWarnings("unchecked")
+			public void actionPerformed(ActionEvent e) {
+		        ScreenDimensions.FPS = ((KeyValue<Integer>)comboFPS.getSelectedItem()).getValue();
+		        calcRescaleFactors();
+			}
+		});
+		boolean fpsSelected = false;
+		for (int i = 0; i < comboFPS.getItemCount(); ++i) {
+			KeyValue<Integer> v = comboFPS.getItemAt(i);
+			if (core.defaultFPS == v.value) {
+				comboFPS.setSelectedIndex(i);
+				fpsSelected = true;
+				break;
+			}
+		}
+		if (!fpsSelected) {
+			comboFPS.addItem(new KeyValue<Integer>(core.defaultFPS + " FPS", core.defaultFPS));
+			comboFPS.setSelectedIndex(comboFPS.getItemCount() - 1);
+		}
+		comboFPS.setBounds(390, 170, 70, 24);
+		comboFPS.setVisible(core.showFPS);
+		panelScreen.add(comboFPS);
+		
+		panelRecording.setBackground(Color.WHITE);
+		tabbedPane.addTab(getTextLabel(textLabels, 13), null, panelRecording, null); //#id 869
+		tabbedPane.setEnabledAt(0, true);
+		panelRecording.setLayout(null);
+		panelRecording.setEnabled(false);
+		
+		JLabel lblRecordingDesc = new JLabel("<html>" + getTextLabel(textLabels, 14) + "</html>"); //#id 870
+		lblRecordingDesc.setVerticalAlignment(SwingConstants.TOP);
+		lblRecordingDesc.setBounds(10, 10, 447, 60);
+		panelRecording.add(lblRecordingDesc);
+		
+		btnStartStopRecording = new JButton(getTextLabel(textLabels, 15)); //#id 871
+		btnStartStopRecording.setToolTipText(getTextLabel(textLabels, 15)); //#id 871
+		btnStartStopRecording.setIcon(startIcon);
+		btnStartStopRecording.setBounds(10, 82, 200, 32);
+		btnStartStopRecording.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				if (recordingStarted) {
+					if (!recordingActionRequested) {
+						recordingActionRequested = true;
+						core.recordingStop();
+					} else {
+						logger.warn("Recording action is already requested");
+					}
+				} else {
+					if (!recordingActionRequested) {
+						recordingActionRequested = true;
+						core.recordingStart();
+					} else {
+						logger.warn("Recording action is already requested");
+					}
+				}
+			}
+		});
+		panelRecording.add(btnStartStopRecording);
+		
+		panelPublish.setBackground(Color.WHITE);
+		tabbedPane.addTab(getTextLabel(textLabels, 23), null, panelPublish, null); //#id 1465
+		tabbedPane.setEnabledAt(1, true);
+		panelPublish.setEnabled(false);
+		panelPublish.setLayout(null);
+		
+		JLabel lblPublishDesc = new JLabel(getTextLabel(textLabels, 33)); //#id 1475
+		lblPublishDesc.setVerticalAlignment(SwingConstants.TOP);
+		lblPublishDesc.setBounds(10, 5, 450, 20);
+		panelPublish.add(lblPublishDesc);
+		
+		JLabel lblPublishHost = new JLabel(getTextLabel(textLabels, 26)); //#id 1468
+		lblPublishHost.setVerticalAlignment(SwingConstants.TOP);
+		lblPublishHost.setBounds(10, 27, 140, 20);
+		panelPublish.add(lblPublishHost);
+		
+		JLabel lblPublishApp = new JLabel(getTextLabel(textLabels, 27)); //#id 1469
+		lblPublishApp.setVerticalAlignment(SwingConstants.TOP);
+		lblPublishApp.setBounds(160, 27, 140, 20);
+		panelPublish.add(lblPublishApp);
+		
+		JLabel lblPublishId = new JLabel(getTextLabel(textLabels, 28)); //#id 1470
+		lblPublishId.setVerticalAlignment(SwingConstants.TOP);
+		lblPublishId.setBounds(310, 27, 140, 20);
+		panelPublish.add(lblPublishId);
+		
+		textPublishHost = new PublishTextField();
+		textPublishHost.setBounds(10, 45, 140, 20);
+		panelPublish.add(textPublishHost);
+		
+		textPublishApp = new PublishTextField();
+		textPublishApp.setBounds(160, 45, 140, 20);
+		panelPublish.add(textPublishApp);
+		
+		textPublishId = new PublishTextField();
+		textPublishId.setBounds(310, 45, 140, 20);
+		panelPublish.add(textPublishId);
+		
+		lblPublishURL = new JLabel("");
+		lblPublishURL.setBounds(10, 69, 447, 14);
+		panelPublish.add(lblPublishURL);
+		
+		btnStartStopPublish = new JButton(getTextLabel(textLabels, 24)); //#id 1466
+		btnStartStopPublish.setToolTipText(getTextLabel(textLabels, 24)); //#id 1466
+		btnStartStopPublish.setIcon(startIcon);
+		btnStartStopPublish.setBounds(10, 86, 200, 32);
+		btnStartStopPublish.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				if (publishStarted) {
+					if (!publishingActionRequested) {
+						publishingActionRequested = true;
+						core.publishingStop();
+					} else {
+						logger.warn("Publishing action is already requested");
+					}
+				} else {
+					if (!publishingActionRequested) {
+						publishingActionRequested = true;
+						core.publishingStart();
+					} else {
+						logger.warn("Publishing action is already requested");
+					}
+				}
+			}
+		});
+		panelPublish.add(btnStartStopPublish);
+		
+		JPanel panelSecurity = new JPanel();
+		panelSecurity.setLayout(null);
+		panelSecurity.setBackground(Color.WHITE);
+		tabbedPane.addTab(getTextLabel(textLabels, 37), null, panelSecurity, null); //#id 1598
+		
+		final JCheckBox remoteEnabled = new JCheckBox(getTextLabel(textLabels, 38)); //#id 1078
+		remoteEnabled.setBackground(Color.WHITE);
+		remoteEnabled.setSelected(core.isRemoteEnabled());
+		remoteEnabled.setBounds(10, 10, 450, 24);
+		remoteEnabled.setEnabled(core.allowRemote);
+		remoteEnabled.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				core.setRemoteEnabled(remoteEnabled.isSelected());
+			}
+		});
+		panelSecurity.add(remoteEnabled);
+		
+		panelStatus.setBackground(SystemColor.control);
+		panelStatus.setLayout(null);
+		lblStatus.setHorizontalAlignment(SwingConstants.LEFT);
+		lblStatus.setBounds(0, 0, 494, 20);
+		lblStatus.setBorder(BorderFactory.createCompoundBorder(
+				BorderFactory.createLineBorder(Color.LIGHT_GRAY),
+				BorderFactory.createEmptyBorder(0, 5, 0, 0)));
+		panelStatus.add(lblStatus);
+		
+		contentPane.setLayout(gl_contentPane);
+		
+		// Background Image
+		//We have no logo, that is why we need no background, sebawagner 29.04.2012
+	}
+
+	public void setSharingStatus(boolean status, boolean unlockScreen) {
+		panelScreen.setEnabled(unlockScreen);
+		if (status != sharingStarted) {
+			sharingActionRequested = false;
+		}
+		logger.debug("sharingActionRequested=" + sharingActionRequested);
+		sharingStarted = status;
+		btnStartStopSharing.setIcon(status ? stopIcon : startIcon);
+		btnStartStopSharing.setText(status ? stopSharingLabel : startSharingLabel);
+		btnStartStopSharing.setToolTipText(status ? stopSharingLabel : startSharingLabel);
+	}
+	
+	public void setRecordingStatus(boolean status, boolean unlockScreen) {
+		panelScreen.setEnabled(unlockScreen);
+		if (status != recordingStarted) {
+			recordingActionRequested = false;
+		}
+		logger.debug("recordingActionRequested=" + recordingActionRequested);
+		recordingStarted = status;
+		btnStartStopRecording.setIcon(status ? stopIcon : startIcon);
+		btnStartStopRecording.setText(status ? stopRecordingLabel : startRecordingLabel);
+		btnStartStopRecording.setToolTipText(status ? stopRecordingLabel : startRecordingLabel);
+	}
+	
+	public void setPublishingStatus(boolean status, boolean unlockScreen) {
+		panelScreen.setEnabled(unlockScreen);
+		if (status != publishStarted) {
+			publishingActionRequested = false;
+		}
+		publishStarted = status;
+		btnStartStopPublish.setIcon(status ? stopIcon : startIcon);
+		btnStartStopPublish.setText(status ? stopPublishLabel : startPublishLabel);
+		btnStartStopPublish.setToolTipText(status ? stopPublishLabel : startPublishLabel);
+	}
+	
+	public void setRecordingTabEnabled(boolean enabled) {
+		panelRecording.setEnabled(enabled);
+		tabbedPane.setEnabledAt(0, enabled);
+		tabbedPane.setToolTipTextAt(0, enabled ? null : recordingTipLabel);
+	}
+	
+	public void setPublishingTabEnabled(boolean enabled) {
+		panelPublish.setEnabled(enabled);
+		tabbedPane.setEnabledAt(1, enabled);
+		tabbedPane.setToolTipTextAt(1, enabled ? null : publishingTipLabel);
+	}
+	
+	public String getPublishHost() {
+		return textPublishHost.getText();
+	}
+	
+	public String getPublishApp() {
+		return textPublishApp.getText();
+	}
+	
+	public String getPublishId() {
+		return textPublishId.getText();
+	}
+	
+	private void updatePublishURL() {
+		lblPublishURL.setText("rtmp://" + textPublishHost.getText() + ":1935/"
+				+ textPublishApp.getText() + "/" + textPublishId.getText());
+	}
+	
+	public void setShowWarning(boolean showWarning) {
+		this.showWarning = showWarning;
+	}
+	
+	public void setDoUpdateBounds(boolean doUpdateBounds) {
+		this.doUpdateBounds = doUpdateBounds;
+	}
+	
+	public void setStatus(String status) {
+		lblStatus.setText(status);
+	}
+
+	public void setSpinnerX(int val) {
+		spinnerX.setValue(val);
+	}
+
+	public void setSpinnerY(int val) {
+		spinnerY.setValue(val);
+	}
+
+	public void setSpinnerWidth(int val) {
+		spinnerWidth.setValue(val);
+	}
+
+	public void setSpinnerHeight(int val) {
+		spinnerHeight.setValue(val);
+	}
+
+	void calcNewValueXSpin() {
+		if (doUpdateBounds) {
+			int newX = spinnerX.getValue();
+			if (ScreenDimensions.spinnerWidth + newX > ScreenDimensions.widthMax) {
+				newX = ScreenDimensions.widthMax - ScreenDimensions.spinnerWidth;
+				spinnerX.setValue(newX);
+				if (showWarning) {
+					setStatus(reduceWidthLabel);
+				}
+			} else {
+				ScreenDimensions.spinnerX = newX;
+				updateVScreenBounds();
+			}
+		} else {
+			ScreenDimensions.spinnerX = spinnerX.getValue();
+		}
+
+		calcRescaleFactors();
+	}
+
+	void calcNewValueYSpin() {
+		if (doUpdateBounds) {
+			int newY = spinnerY.getValue();
+			if (ScreenDimensions.spinnerHeight + newY > ScreenDimensions.heightMax) {
+				newY = ScreenDimensions.heightMax - ScreenDimensions.spinnerHeight;
+				spinnerY.setValue(newY);
+				if (showWarning) {
+					setStatus(reduceHeightLabel);
+				}
+			} else {
+				ScreenDimensions.spinnerY = newY;
+				updateVScreenBounds();
+			}
+		} else {
+			ScreenDimensions.spinnerY = spinnerY.getValue();
+		}
+
+		calcRescaleFactors();
+	}
+
+	void calcNewValueWidthSpin() {
+		if (doUpdateBounds) {
+			int newWidth = spinnerWidth.getValue();
+			if (ScreenDimensions.spinnerX + newWidth > ScreenDimensions.widthMax) {
+				newWidth = ScreenDimensions.widthMax - ScreenDimensions.spinnerX;
+				spinnerWidth.setValue(newWidth);
+				if (showWarning) {
+					setStatus(reduceXLabel);
+				}
+			} else {
+				ScreenDimensions.spinnerWidth = newWidth;
+				updateVScreenBounds();
+			}
+		} else {
+			ScreenDimensions.spinnerWidth = spinnerWidth.getValue();
+		}
+
+		calcRescaleFactors();
+	}
+
+	void calcNewValueHeightSpin() {
+		if (doUpdateBounds) {
+			int newHeight = spinnerHeight.getValue();
+			if (ScreenDimensions.spinnerY + newHeight > ScreenDimensions.heightMax) {
+				newHeight = ScreenDimensions.heightMax - ScreenDimensions.spinnerY;
+				spinnerHeight.setValue(newHeight);
+				if (showWarning) {
+					setStatus(reduceYLabel);
+				}
+			} else {
+				ScreenDimensions.spinnerHeight = newHeight;
+				updateVScreenBounds();
+			}
+		} else {
+			ScreenDimensions.spinnerHeight = spinnerHeight.getValue();
+		}
+
+		calcRescaleFactors();
+	}
+
+	/**
+	 * Needs to be always invoked after every re-scaling
+	 */
+	void calcRescaleFactors() {
+		logger.trace("calcRescaleFactors -- ");
+		resizeX = spinnerWidth.getValue();
+		resizeY = spinnerHeight.getValue();
+		switch (ScreenDimensions.quality) {
+			case Low:
+				resizeX = (int)(2.0 * ScreenDimensions.resizeX / 8);
+				resizeY = (int)(2.0 * ScreenDimensions.resizeY / 8);
+				break;
+			case Medium:
+				resizeX = (int)(4.0 * ScreenDimensions.resizeX / 8);
+				resizeY = (int)(4.0 * ScreenDimensions.resizeY / 8);
+				break;
+			case High:
+				resizeX = (int)(6.0 * ScreenDimensions.resizeX / 8);
+				resizeY = (int)(6.0 * ScreenDimensions.resizeY / 8);
+				break;
+			case VeryHigh:
+			default:
+				break;
+		}
+		int dX = resizeX % ROUND_VALUE;
+		int dY = resizeY % ROUND_VALUE;
+		resizeX += dX == 0 ? 0 : ROUND_VALUE - dX;
+		resizeY += dY == 0 ? 0 : ROUND_VALUE - dY;
+		logger.trace("resize: X:" + resizeX + " Y: " + resizeY);
+		updateVScreenBounds();
+	}
+
+	private void setVScreenBounds(int x, int y, int width, int height) {
+		leftSlider.setBounds(x + vScreenX - 16, y + vScreenY - 8 + (height / 2), 32, 16);
+		rightSlider.setBounds(x + vScreenX + width - 16, y + vScreenY - 8 + (height / 2), 32, 16);
+		upSlider.setBounds(x + vScreenX + (width / 2) - 8, y + vScreenY - 16, 16, 32);
+		downSlider.setBounds(x + vScreenX + (width / 2) - 8, y + vScreenY - 16 + height, 16, 32);
+		
+		virtualScreen.setText(ScreenDimensions.spinnerWidth + ":" + ScreenDimensions.spinnerHeight);
+		virtualScreen.setBounds(x + vScreenX, y + vScreenY, width, height);
+	}
+	
+	/**
+	 * update the bounds of the vScreen
+	 * by using the vars from the Spinners
+	 *
+	 */
+	void updateVScreenBounds() {
+		double ratio = ((double)ScreenDimensions.width) / ScreenDimensions.widthMax;
+		int newWidth = (int)(ScreenDimensions.spinnerWidth * ratio);
+		int newX = (int)(ScreenDimensions.spinnerX * ratio);
+
+		int newHeight = (int)(ScreenDimensions.spinnerHeight * ratio);
+		int newY = (int)(ScreenDimensions.spinnerY * ratio);
+
+		setVScreenBounds(newX, newY, newWidth, newHeight);
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenWidthMouseListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenWidthMouseListener.java
new file mode 100644
index 0000000..c893b31
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenWidthMouseListener.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.event.MouseInputAdapter;
+
+public class ScreenWidthMouseListener extends MouseInputAdapter {
+	private ScreenSharerFrame frame;
+	private double x = 0;
+
+	public ScreenWidthMouseListener(ScreenSharerFrame frame) {
+		this.frame = frame;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
+	}
+
+	public void mouseExited(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+	}
+
+	public void mousePressed(MouseEvent e) {
+		frame.setShowWarning(false);
+		this.x = e.getX();
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		frame.setShowWarning(true);
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!((Component)e.getSource()).isEnabled()) {
+			return;
+		}
+		double newX = e.getX();
+
+		int newWidth = ScreenDimensions.spinnerWidth - (int)(x - newX);
+		int newSpinnerX = ScreenDimensions.spinnerX + newWidth;
+
+		if (0 <= newSpinnerX && newSpinnerX <= ScreenDimensions.widthMax) {
+			frame.setDoUpdateBounds(false);
+			frame.setSpinnerWidth(newWidth);
+			frame.setDoUpdateBounds(true);
+			frame.updateVScreenBounds();
+			frame.calcRescaleFactors();
+		}
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenXMouseListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenXMouseListener.java
new file mode 100644
index 0000000..dc41e96
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenXMouseListener.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.event.MouseInputAdapter;
+
+public class ScreenXMouseListener extends MouseInputAdapter {
+	private ScreenSharerFrame frame;
+	private double x = 0;
+
+	public ScreenXMouseListener(ScreenSharerFrame frame) {
+		this.frame = frame;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
+	}
+
+	public void mouseExited(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+	}
+
+	public void mousePressed(MouseEvent e) {
+		frame.setShowWarning(false);
+		this.x = e.getX();
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		frame.setShowWarning(true);
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!((Component)e.getSource()).isEnabled()) {
+			return;
+		}
+		double newX = e.getX();
+		int delta = (int) (x - newX);
+		int newXPosition = ScreenDimensions.spinnerX - delta;
+		int newWidth = ScreenDimensions.spinnerWidth + delta;
+
+		if (newXPosition >= 0 && newWidth >= 0) {
+			frame.setDoUpdateBounds(false);
+			frame.setSpinnerX(newXPosition);
+			frame.setSpinnerWidth(newWidth);
+			frame.setDoUpdateBounds(true);
+			frame.updateVScreenBounds();
+			frame.calcRescaleFactors();
+		}
+	}
+}
diff --git a/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenYMouseListener.java b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenYMouseListener.java
new file mode 100644
index 0000000..69de62e
--- /dev/null
+++ b/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenYMouseListener.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.screen.webstart.gui;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+
+import javax.swing.event.MouseInputAdapter;
+
+public class ScreenYMouseListener extends MouseInputAdapter {
+	private ScreenSharerFrame frame;
+	private double y = 0;
+
+	public ScreenYMouseListener(ScreenSharerFrame frame) {
+		this.frame = frame;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
+	}
+
+	public void mouseExited(MouseEvent e) {
+		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+	}
+
+	public void mousePressed(MouseEvent e) {
+		frame.setShowWarning(false);
+		this.y = e.getY();
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		frame.setShowWarning(true);
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!((Component)e.getSource()).isEnabled()) {
+			return;
+		}
+		double newY = e.getY();
+
+		int delta = (int) (y - newY);
+		int newYPosition = ScreenDimensions.spinnerY - delta;
+		int newHeight = ScreenDimensions.spinnerHeight + delta;
+
+		if (newYPosition >= 0 && newHeight >= 0) {
+			frame.setDoUpdateBounds(false);
+			frame.setSpinnerY(newYPosition);
+			frame.setSpinnerHeight(newHeight);
+			frame.setDoUpdateBounds(true);
+			frame.updateVScreenBounds();
+			frame.calcRescaleFactors();
+		}
+	}
+}
diff --git a/src/screenshare/resources/logback.xml b/src/screenshare/resources/logback.xml
new file mode 100644
index 0000000..44bfdf4
--- /dev/null
+++ b/src/screenshare/resources/logback.xml
@@ -0,0 +1,49 @@
+<?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.
+  
+-->
+
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:noNamespaceSchemaLocation="logback.xsd">
+	<contextName>${current_openmeetings_context_name}</contextName>
+
+	<jmxConfigurator contextName="${current_openmeetings_context_name}" />
+
+	<appender name="FLOG2" class="ch.qos.logback.core.FileAppender">
+		<File>screensharing.log</File>
+		<Append>false</Append>
+		<Encoding>UTF-8</Encoding>
+		<BufferedIO>false</BufferedIO>
+		<ImmediateFlush>true</ImmediateFlush>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %L %c{10} [%t] - %m%n</pattern>
+		</layout>
+	</appender>
+	<appender name="CONSOLE2" class="ch.qos.logback.core.ConsoleAppender">
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<pattern>%5p %d{MM-dd HH:mm:ss.SSS } %L %c{10} [%t] - %m%n</pattern>
+		</layout>
+	</appender>
+	<logger name="org.apache.openmeetings" level="DEBUG"/>
+	<logger name="org.red5.server.net.rtmp.codec.RTMPProtocolDecoder" level="OFF"/>
+	<root level="INFO">
+		<appender-ref ref="FLOG2" />
+		<appender-ref ref="CONSOLE2" />
+	</root>
+</configuration>
diff --git a/src/screenshare/resources/logback.xsd b/src/screenshare/resources/logback.xsd
new file mode 100644
index 0000000..7e75655
--- /dev/null
+++ b/src/screenshare/resources/logback.xsd
@@ -0,0 +1,109 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="configuration">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="contextName"/>
+        <xs:element ref="jmxConfigurator"/>
+        <xs:element maxOccurs="unbounded" ref="appender"/>
+        <xs:element maxOccurs="unbounded" ref="logger"/>
+        <xs:element ref="root"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="contextName" type="xs:string"/>
+  <xs:element name="jmxConfigurator">
+    <xs:complexType>
+      <xs:attribute name="contextName" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="appender">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:sequence minOccurs="0">
+          <xs:element ref="File"/>
+          <xs:element ref="Append"/>
+          <xs:element ref="Encoding"/>
+          <xs:element ref="BufferedIO"/>
+          <xs:element ref="ImmediateFlush"/>
+        </xs:sequence>
+        <xs:element ref="layout"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="File" type="xs:string"/>
+  <xs:element name="Append" type="xs:boolean"/>
+  <xs:element name="Encoding" type="xs:NCName"/>
+  <xs:element name="BufferedIO" type="xs:boolean"/>
+  <xs:element name="ImmediateFlush" type="xs:boolean"/>
+  <xs:element name="layout">
+    <xs:complexType>
+      <xs:choice>
+        <xs:element ref="Pattern"/>
+        <xs:element ref="pattern"/>
+      </xs:choice>
+      <xs:attribute name="class" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Pattern" type="xs:string"/>
+  <xs:element name="pattern" type="xs:string"/>
+  <xs:element name="logger">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" minOccurs="0" ref="appender-ref"/>
+        <xs:element maxOccurs="1" minOccurs="0" ref="level"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="level" type="LoggerLevels" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="root">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="appender-ref"/>
+      </xs:sequence>
+      <xs:attribute name="level" type="LoggerLevels" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="appender-ref">
+    <xs:complexType>
+      <xs:attribute name="ref" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="level">
+    <xs:sequence>
+      <xs:element ref="level"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="level">
+    <xs:complexType>
+      <xs:attribute name="value" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:simpleType name="LoggerLevels">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="off|OFF|all|ALL|inherited|INHERITED|null|NULL|error|ERROR|warn|WARN|info|INFO|debug|DEBUG|trace|TRACE"/>
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>
diff --git a/src/screenshare/resources/quartz.properties b/src/screenshare/resources/quartz.properties
new file mode 100644
index 0000000..6762b90
--- /dev/null
+++ b/src/screenshare/resources/quartz.properties
@@ -0,0 +1,13 @@
+#   Licensed 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.
+org.quartz.scheduler.instanceName=ScreenSharingScheduler
+org.quartz.threadPool.threadCount=30
\ No newline at end of file
diff --git a/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java b/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
new file mode 100644
index 0000000..38c32b3
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.installation.ImportInitvalues;
+import org.apache.openmeetings.installation.InstallationConfig;
+import org.junit.Before;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class AbstractJUnitDefaults extends AbstractSpringTest {
+	private static final Logger log = Red5LoggerFactory.getLogger(AbstractJUnitDefaults.class);
+	
+	protected static final String username = "swagner";
+	protected static final String userpass = "qweqwe";
+	private static final String orgname = "smoketest";
+	private static final String timeZone = "Europe/Berlin";
+	private static final String useremail = "junit@openmeetings.apache.org";
+	
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private AppointmentReminderTypDao reminderTypeDao;
+	@Autowired
+	private RoomTypeDao roomTypeDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private ImportInitvalues importInitvalues;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	
+	private List<AppointmentReminderTyps> remindTypes;
+	private List<RoomType> roomTypes;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		configurationDao.getCryptKey();
+        if (userDao.count() < 1) {
+            makeDefaultScheme();
+            log.info("Default scheme created successfully");
+        } else {
+            log.info("Default scheme already created");
+        }
+        remindTypes = reminderTypeDao.getAppointmentReminderTypList(1L);
+        roomTypes = roomTypeDao.getAll(1L);
+    }
+
+	public Appointment createAppointment() {
+		Date appointmentstart = new Date();
+		Date appointmentend = new Date();
+		appointmentend.setTime(appointmentstart.getTime() + 3600);
+		return createAppointment(appointmentstart, appointmentend);
+	}
+	
+	public Appointment getAppointment(Date start, Date end) {
+		assertNotNull("Can't access to appointment dao implimentation", appointmentDao);
+
+		// add new appointment
+		Appointment ap = new Appointment();
+
+		ap.setTitle("appointmentName");
+		ap.setLocation("appointmentLocation");
+
+		ap.setStart(start);
+		ap.setEnd(end);
+		ap.setDescription("appointmentDescription");
+		ap.setInserted(new Date());
+		ap.setDeleted(false);
+		ap.setIsDaily(false);
+		ap.setIsWeekly(false);
+		ap.setIsMonthly(false);
+		ap.setIsYearly(false);
+		ap.setPasswordProtected(false);
+
+		ap.setOwner(userDao.get(1L));
+		ap.setConnectedEvent(false);
+
+		if (ap.getRemind() == null && !remindTypes.isEmpty()) {
+			ap.setRemind(remindTypes.get(0));
+		}
+		
+		Room r = new Room();
+		if (!roomTypes.isEmpty()) {
+			r.setRoomtype(roomTypes.get(0));
+		}
+		r.setAppointment(true);
+		ap.setRoom(r);
+		return ap;
+	}
+
+	public Appointment createAppointment(Date start, Date end) {
+		assertNotNull("Can't access to appointment dao implimentation", appointmentDao);
+
+		// add new appointment
+		Appointment ap = new Appointment();
+
+		ap.setTitle("appointmentName");
+		ap.setLocation("appointmentLocation");
+
+		ap.setStart(start);
+		ap.setEnd(end);
+		ap.setDescription("appointmentDescription");
+		ap.setInserted(new Date());
+		ap.setDeleted(false);
+		ap.setIsDaily(false);
+		ap.setIsWeekly(false);
+		ap.setIsMonthly(false);
+		ap.setIsYearly(false);
+		ap.setPasswordProtected(false);
+
+		ap.setOwner(userDao.get(1L));
+		ap.setConnectedEvent(false);
+		Long id = appointmentDao.addAppointmentObj(ap);
+		assertNotNull("Cann't add appointment", id);
+		return ap;
+	}
+
+	public User getUser(int rnd) throws Exception {
+		User u = new User();
+		// add user
+		u.setFirstname("firstname" + rnd);
+		u.setLastname("lastname" + rnd);
+		u.setLogin("login" + rnd);
+		u.updatePassword(configurationDao, "pass" + rnd);
+		u.setLanguage_id(1L);
+		return u;
+	}
+
+	public User createUser(int rnd) throws Exception {
+		User u = getUser(rnd);
+		u = userDao.update(u, null);
+		assertNotNull("Can't add user", u);
+		return u;
+	}
+
+	private void makeDefaultScheme() throws Exception {
+		InstallationConfig cfg = new InstallationConfig();
+		cfg.username = username;
+		cfg.password = userpass;
+		cfg.email = useremail;
+		cfg.group = orgname;
+		cfg.ical_timeZone = timeZone;
+		importInitvalues.loadAll(cfg, false);
+	}
+
+	public User createUserContact(int rnd, Long ownerId) {
+		User user = userDao.getContact("email" + rnd, "firstname" + rnd, "lastname" + rnd, ownerId);
+		user = userDao.update(user, ownerId);
+		assertNotNull("Can't add user contact", user);
+		return user;
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java b/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
new file mode 100644
index 0000000..46e6c53
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/AbstractSpringTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test;
+
+import static org.junit.Assert.fail;
+
+import org.apache.openmeetings.util.OmFileHelper;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@TestExecutionListeners({})
+@ContextConfiguration(locations={"classpath:openmeetings-applicationContext.xml"}, inheritLocations = true)
+public abstract class AbstractSpringTest extends AbstractJUnit4SpringContextTests {
+
+	@Before
+	public void setUp() throws Exception {
+		setOmHome();
+	}
+	
+	protected void setOmHome() {
+		String webappsDir = System.getProperty("om.home", ".");
+		OmFileHelper.setOmHome(webappsDir);
+		if (!OmFileHelper.getOmHome().exists() || !OmFileHelper.getOmHome().isDirectory()) {
+			fail("Invalid directory is specified as OM HOME: " + webappsDir);
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java b/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
new file mode 100644
index 0000000..913007a
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test;
+
+import static org.apache.openmeetings.web.app.Application.getWicketTester;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
+
+public class AbstractWicketTester extends AbstractJUnitDefaults {
+
+	protected WicketTester tester;
+	 	
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+        tester = getWicketTester();
+        assertNotNull("Web session should not be null", WebSession.get());
+	}
+
+	public void login(String login, String password) {
+		if (login != null && password != null) {
+			WebSession.get().signIn(login, password, Type.user, null);
+		} else {
+			WebSession.get().signIn(username, userpass, Type.user, null);
+		}
+		assertTrue("Web session is not signed in for user: " + (login != null ? login : username), WebSession.get().isSignedIn());
+	}
+	
+	@After
+	public void tearDown() {
+		tester.destroy();
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/EditorPaneLinkDetector.java b/src/test/java/org/apache/openmeetings/test/EditorPaneLinkDetector.java
new file mode 100644
index 0000000..b0f6dc8
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/EditorPaneLinkDetector.java
@@ -0,0 +1,310 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test;
+
+/**
+ * David Bismut, david.bismut@gmail.com
+ * Intern, SETLabs, Infosys Technologies Ltd. May 2004 - Jul 2004
+ * Ecole des Mines de Nantes, France
+ */
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseMotionAdapter;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.accessibility.AccessibleHypertext;
+import javax.swing.JEditorPane;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.StyleSheet;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * A "HTML" JEditorPane embedded with a special HTMLDocument that detects urls
+ * and displays them as hyperlinks. When CTRL is pressed, the urls are
+ * clickable.
+ * 
+ * @author David Bismut
+ *  
+ */
+public class EditorPaneLinkDetector extends JEditorPane {
+	private static final long serialVersionUID = 2811878994346374017L;
+
+	/**
+	 * Creates a <code>EditorPaneLinkDetector</code>.
+	 */
+	public EditorPaneLinkDetector() {
+
+		HTMLEditorKit htmlkit = new HTMLEditorKit();
+
+		StyleSheet styles = htmlkit.getStyleSheet();
+		StyleSheet ss = new StyleSheet();
+
+		ss.addStyleSheet(styles);
+
+		ss.addRule("body {font-family:arial;font-size:12pt}");
+		ss.addRule("p {font-family:arial;margin:2}");
+
+		HTMLDocument doc = new HTMLDocLinkDetector(ss);
+
+		setEditorKit(htmlkit);
+
+		setDocument(doc);
+
+		addMouseMotionListener(new MouseMotionAdapter() {
+			public void mouseMoved(MouseEvent e) {
+
+				AccessibleJTextComponent context = (AccessibleJTextComponent) getAccessibleContext()
+						.getAccessibleEditableText();
+
+				AccessibleHypertext accText = (AccessibleHypertext) context
+						.getAccessibleText();
+
+				int index = accText.getIndexAtPoint(e.getPoint());
+
+				int linkIndex = accText.getLinkIndex(index);
+				if (linkIndex == -1) {
+					setToolTipText(null);
+					return;
+				}
+
+				String linkDesc = accText.getLink(linkIndex)
+						.getAccessibleActionDescription(0);
+
+				String toolTipText = "<html><body style='margin: 3'>"
+						+ linkDesc
+						+ "<br><b>CTRL + click to follow link</b></body></html>";
+				setToolTipText(toolTipText);
+			}
+		});
+
+		addKeyListener(new KeyAdapter() {
+			public void keyPressed(KeyEvent e) {
+				
+				if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
+					if (isEditable())
+						setEditable(false);
+				} else {
+					if (!isEditable())
+						setEditable(true);
+				}
+
+			}
+
+			public void keyReleased(KeyEvent e) {
+				
+				if (e.getKeyCode() == KeyEvent.VK_CONTROL) {
+					setEditable(true);
+				}
+
+			}
+		});
+	}
+
+	protected class HTMLDocLinkDetector extends HTMLDocument {
+
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1226244167782160437L;
+
+		public HTMLDocLinkDetector(StyleSheet ss) {
+			super(ss);
+			
+			setAsynchronousLoadPriority(4);
+			setTokenThreshold(100);
+			setParser(new ParserDelegator());
+		}
+
+		/**
+		 * Returns true if the Element contains a HTML.Tag.A attribute, false
+		 * otherwise.
+		 * 
+		 * @param e
+		 *            the Element to be checkd
+		 * @return
+		 */
+		protected boolean isLink(Element e) {
+			
+			return (e.getAttributes().getAttribute(HTML.Tag.A) != null);
+
+		}
+
+		/**
+		 * This method corrects or creates a url contained in an Element as an
+		 * hyperlink.
+		 * 
+		 * @param e
+		 *            the Element to be computed
+		 * @throws BadLocationException
+		 */
+		protected void computeLinks(Element e) throws BadLocationException {
+			
+			int caretPos = getCaretPosition();
+			try {
+				if (isLink(e))
+					correctLink(e);
+				else
+					createLink(e);
+			} catch (IOException ex) {
+				ex.printStackTrace();
+			}
+			setCaretPosition(Math.min(caretPos, getLength()));
+		}
+
+		/**
+		 * The method corrects the url inside an Element, that is supposed to be
+		 * an element containing a link only. This function is typically called
+		 * when the url is beeing edited. What the function does is to remove
+		 * the html tags, so the url is actually edited in plain text and not as
+		 * an hyperlink.
+		 * 
+		 * @param e
+		 *            the Element that contains the url
+		 * @throws BadLocationException
+		 * @throws IOException
+		 */
+		protected void correctLink(Element e) throws BadLocationException,
+				IOException {
+			
+			int length = e.getEndOffset() - e.getStartOffset();
+
+			boolean endOfDoc = e.getEndOffset() == getLength() + 1;
+
+			// to avoid catching the final '\n' of the document.
+			if (endOfDoc)
+				length--;
+
+			String text = getText(e.getStartOffset(), length);
+
+			setOuterHTML(e, text);
+
+			// insert final spaces ignored by the html
+			Matcher spaceMatcher = Pattern.compile("(\\s+)$").matcher(text);
+
+			if (spaceMatcher.find()) {
+				String endingSpaces = spaceMatcher.group(1);
+				insertString(Math.min(getLength(), e.getEndOffset()),
+						endingSpaces, null);
+			}
+		}
+
+		/**
+		 * The method check if the element contains a url in plain text, and if
+		 * so, it creates the html tag HTML.Tag.A to have the url displayed as
+		 * an hyperlink.
+		 * 
+		 * @param e
+		 *            element that contains the url
+		 * @throws BadLocationException
+		 * @throws IOException
+		 */
+		protected void createLink(Element e) throws BadLocationException,
+				IOException {
+			
+			int caretPos = getCaretPosition();
+
+			int startOffset = e.getStartOffset();
+			int length = e.getEndOffset() - e.getStartOffset();
+
+			boolean endOfDoc = e.getEndOffset() == getLength() + 1;
+			// to avoid catching the final '\n' of the document.
+			if (endOfDoc)
+				length--;
+
+			String text = getText(startOffset, length);
+
+			Matcher matcher = Pattern.compile(
+					"(?i)(\\b(http://|https://|www.|ftp://|file:/|mailto:)\\S+)(\\s+)")
+					.matcher(text);
+
+			if (matcher.find()) {
+				String url = matcher.group(1);
+				//String prefix = matcher.group(2);
+				String endingSpaces = matcher.group(3);
+
+				// to ignore characters after the caret
+				int validPos = startOffset + matcher.start(3) + 1;
+				if (validPos > caretPos)
+					return;
+
+				Matcher dotEndMatcher = Pattern.compile("([\\W&&[^/]]+)$")
+						.matcher(url);
+
+				//Ending non alpha characters like [.,?%] shouldn't be included
+				// in the url.
+				String endingDots = "";
+				if (dotEndMatcher.find()) {
+					endingDots = dotEndMatcher.group(1);
+					url = dotEndMatcher.replaceFirst("");
+				}
+
+				text = matcher.replaceFirst("<a href='" + url + "'>" + url
+						+ "</a>" + endingDots + endingSpaces);
+
+				setOuterHTML(e, text);
+
+				// insert initial spaces ignored by the html
+				Matcher spaceMatcher = Pattern.compile("^(\\s+)").matcher(text);
+
+				if (spaceMatcher.find()) {
+					String initialSpaces = spaceMatcher.group(1);
+					insertString(startOffset, initialSpaces, null);
+				}
+
+				// insert final spaces ignored by the html
+				spaceMatcher = Pattern.compile("(\\s+)$").matcher(text);
+
+				if (spaceMatcher.find()) {
+					String extraSpaces = spaceMatcher.group(1);
+					int endoffset = e.getEndOffset();
+					if (extraSpaces.charAt(extraSpaces.length() - 1) == '\n') {
+						extraSpaces = extraSpaces.substring(0, extraSpaces
+								.length() - 1);
+						endoffset--;
+					}
+					insertString(Math.min(getLength(), endoffset), extraSpaces,
+							null);
+				}
+			}
+		}
+
+		public void remove(int offs, int len) throws BadLocationException {
+
+			super.remove(offs, len);
+			Element e = getCharacterElement(offs - len);
+			computeLinks(e);
+		}
+
+		public void insertString(int offs, String str, AttributeSet a)
+				throws BadLocationException {
+
+			super.insertString(offs, str, a);
+			Element e = getCharacterElement(offs);
+			computeLinks(e);
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/TestConnection.java b/src/test/java/org/apache/openmeetings/test/TestConnection.java
new file mode 100644
index 0000000..4bf09be
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/TestConnection.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test;
+
+import org.junit.Test;
+
+public class TestConnection {
+
+	@Test
+	public void testNoop() {
+		
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java b/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
new file mode 100644
index 0000000..1a78150
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
@@ -0,0 +1,210 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.asf;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+
+public class AsfCopyRightReplace {
+
+	String asf_copyright = "/*\n"
+			+ " * Licensed to the Apache Software Foundation (ASF) under one\n"
+			+ " * or more contributor license agreements.  See the NOTICE file\n"
+			+ " * distributed with this work for additional information\n"
+			+ " * regarding copyright ownership.  The ASF licenses this file\n"
+			+ " * to you under the Apache License, Version 2.0 (the\n"
+			+ " * \"License\") +  you may not use this file except in compliance\n"
+			+ " * with the License.  You may obtain a copy of the License at\n"
+			+ " *\n"
+			+ " *   http://www.apache.org/licenses/LICENSE-2.0\n"
+			+ " *\n"
+			+ " * Unless required by applicable law or agreed to in writing,\n"
+			+ " * software distributed under the License is distributed on an\n"
+			+ " * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
+			+ " * KIND, either express or implied.  See the License for the\n"
+			+ " * specific language governing permissions and limitations\n"
+			+ " * under the License.\n" + " */\n";
+
+	String asf_xml_copyright = "<!--\n"
+			+ "  Licensed to the Apache Software Foundation (ASF) under one\n"
+			+ "  or more contributor license agreements.  See the NOTICE file\n"
+			+ "  distributed with this work for additional information\n"
+			+ "  regarding copyright ownership.  The ASF licenses this file\n"
+			+ "  to you under the Apache License, Version 2.0 (the\n"
+			+ "  \"License\"); you may not use this file except in compliance\n"
+			+ "  with the License.  You may obtain a copy of the License at\n"
+			+ "  \n" + "      http://www.apache.org/licenses/LICENSE-2.0\n"
+			+ "    	  \n"
+			+ "  Unless required by applicable law or agreed to in writing,\n"
+			+ "  software distributed under the License is distributed on an\n"
+			+ "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
+			+ "  KIND, either express or implied.  See the License for the\n"
+			+ "  specific language governing permissions and limitations\n"
+			+ "  under the License.\n" + "  \n" + "-->\n";
+	
+	String asf_vm_copyright = "#\n"
+			+ "# Licensed to the Apache Software Foundation (ASF) under one\n"
+			+ "# or more contributor license agreements.  See the NOTICE file\n"
+			+ "# distributed with this work for additional information\n"
+			+ "# regarding copyright ownership.  The ASF licenses this file\n"
+			+ "# to you under the Apache License, Version 2.0 (the\n"
+			+ "# \"License\") +  you may not use this file except in compliance\n"
+			+ "# with the License.  You may obtain a copy of the License at\n"
+			+ "#\n"
+			+ "#   http://www.apache.org/licenses/LICENSE-2.0\n"
+			+ "#\n"
+			+ "# Unless required by applicable law or agreed to in writing,\n"
+			+ "# software distributed under the License is distributed on an\n"
+			+ "# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
+			+ "# KIND, either express or implied.  See the License for the\n"
+			+ "# specific language governing permissions and limitations\n"
+			+ "# under the License.\n" + "#/\n";
+
+	public static void main(String... args) {
+		new AsfCopyRightReplace();
+	}
+
+	public AsfCopyRightReplace() {
+		scanFolder(new File("./src/main"));
+	}
+
+	private void scanFolder(File folder) {
+
+		for (File javaFile : folder.listFiles(new FilenameFilter() {
+			public boolean accept(File b, String name) {
+				return name.endsWith(".java") || name.endsWith(".vm");
+			}
+		})) {
+			scanAndWriteJavaFile(javaFile);
+		}
+
+		for (File javaFile : folder.listFiles(new FilenameFilter() {
+			public boolean accept(File b, String name) {
+				return name.endsWith(".xml") || name.endsWith(".lzx");
+			}
+		})) {
+			scanAndWriteXMLFile(javaFile);
+		}
+
+		for (File folderFile : folder.listFiles(new FilenameFilter() {
+			public boolean accept(File b, String name) {
+				File f = new File(b, name);
+				return f.isDirectory();
+			}
+		})) {
+			scanFolder(folderFile);
+		}
+	}
+
+	private void scanAndWriteXMLFile(File javaFile) {
+		try {
+			System.out.println("Processing " + javaFile.getCanonicalPath());
+
+			BufferedReader is = new BufferedReader(new InputStreamReader(
+					new FileInputStream(javaFile), "UTF-8"));
+
+			String line;
+			String firstline = "";
+			StringWriter strWriter = new StringWriter();
+			int i = 0;
+
+			while ((line = is.readLine()) != null) {
+				if (i == 0) {
+					firstline = line;
+					
+					if (firstline.startsWith("<canvas")) {
+						strWriter.append(asf_xml_copyright);
+					} else if (firstline.startsWith("<library")) {
+						strWriter.append(asf_xml_copyright);
+					}
+							
+					
+				} else if (i == 1) {
+					if (firstline.startsWith("<?xml ")
+							&& !line.startsWith("<!--")) {
+						strWriter.append(asf_xml_copyright);
+					} else if (firstline.startsWith("<?xml ")
+							&& !line.startsWith("<library")) {
+						strWriter.append(asf_xml_copyright);
+					} else if (firstline.startsWith("<?xml ")
+							&& !line.startsWith("<canvas")) {
+						strWriter.append(asf_xml_copyright);
+					}
+				}
+				strWriter.append(line + "\n");
+				i++;
+			}
+			is.close();
+
+			OutputStreamWriter out = new OutputStreamWriter(
+					new FileOutputStream(javaFile.getCanonicalPath()), "UTF-8");
+
+			out.write(strWriter.toString());
+			out.flush();
+			out.close();
+
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+
+	private void scanAndWriteJavaFile(File javaFile) {
+		try {
+			System.out.println("Processing " + javaFile.getCanonicalPath());
+
+			BufferedReader is = new BufferedReader(new InputStreamReader(
+					new FileInputStream(javaFile), "UTF-8"));
+
+			String line;
+			StringWriter strWriter = new StringWriter();
+			int i = 0;
+
+			while ((line = is.readLine()) != null) {
+				if (i == 0) {
+					if (line.startsWith("package ")) {
+						strWriter.append(asf_copyright);
+					} else if (line.startsWith("## OpenMeetings") 
+							&& javaFile.getName().endsWith(".vm")) {
+						strWriter.append(asf_vm_copyright);
+					}
+				}
+				strWriter.append(line + "\n");
+				i++;
+			}
+			is.close();
+			
+			OutputStreamWriter out = new OutputStreamWriter(
+					new FileOutputStream(javaFile.getCanonicalPath()), "UTF-8");
+
+			out.write(strWriter.toString());
+			out.flush();
+			out.close();
+
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java b/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
new file mode 100644
index 0000000..9486462
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/backup/TestOldBackups.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.backup;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.data.conference.RoomManager;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomOrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestOldBackups extends AbstractJUnitDefaults {
+	private static final Logger log = Red5LoggerFactory.getLogger(TestOldBackups.class, webAppRootKey);
+	
+	@Autowired
+	private BackupImport backupController;
+	@Autowired
+	private OrganisationDao organisationDao;
+	@Autowired
+	private UserDao usersDao;
+	@Autowired
+	private RoomDao roomDao;
+	@Autowired
+	private RoomManager roomManager;
+	@Autowired
+	private AppointmentDao appointmentDao;
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+	@Autowired
+	private RoomOrganisationDao roomOrganisationDao;
+
+	@Test
+	public void importOldVersions() {
+		String backupsDir = System.getProperty("backups.dir", ".");
+		File backupsHome = new File(backupsDir);
+		
+		if (!backupsHome.exists() || !backupsHome.isDirectory()) {
+			fail("Invalid directory is specified for backup files: " + backupsDir);
+		}
+		long orgCount = 0;
+		long userCount = 0;
+		long roomCount = 0;
+		long roomOrgCount = 0;
+		long apptCount = 0;
+		long meetingMembersCount = 0;
+		for (File backup : backupsHome.listFiles()) {
+			String name = backup.getName();
+			log.debug("Import of backup file : '" + name + "' is started ...");
+			InputStream is = null;
+			try {
+				is = new FileInputStream(backup);
+				backupController.performImport(is);
+				long newOrgCount = organisationDao.count();
+				long newUserCount = usersDao.count();
+				long newRoomCount = roomDao.count();
+				long newRoomOrgCount = roomOrganisationDao.get().size();
+				long newApptCount = appointmentDao.getAppointments().size();
+				long newMeetingMembersCount = meetingMemberDao.getMeetingMembers().size();
+				assertTrue("Zero organizations were imported from " + name, newOrgCount > orgCount);
+				assertTrue("Zero users were imported from " + name, newUserCount > userCount);
+				assertTrue("Zero rooms were imported from " + name, newRoomCount > roomCount);
+				assertTrue("Zero room organizations were imported from " + name, newRoomOrgCount > roomOrgCount);
+				assertTrue("Zero appointments were imported from " + name, newApptCount > apptCount);
+				assertTrue("Zero meeting members were imported from " + name, newMeetingMembersCount > meetingMembersCount);
+				
+				orgCount = newOrgCount;
+				userCount = newUserCount;
+				roomCount = newRoomCount;
+				roomOrgCount = newRoomOrgCount;
+				apptCount = newApptCount;
+				meetingMembersCount = newMeetingMembersCount;
+			} catch (Exception e) {
+				throw new RuntimeException("Unexpected exception while importing backup: " + name, e);
+			} finally {
+				if (is != null) {
+					try {
+						is.close();
+					} catch (IOException e) {
+						throw new RuntimeException("Error while closing ldap config file", e);
+					}
+				}
+			}
+			log.debug("... Done.");
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java b/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
new file mode 100644
index 0000000..615b784
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentAddAppointment.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Calendar;
+
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+public class TestAppointmentAddAppointment extends AbstractWicketTester {
+	private static final Logger log = Red5LoggerFactory.getLogger(TestAppointmentAddAppointment.class, webAppRootKey);
+
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	@Autowired
+	private AppointmentDao appointmentDao;
+
+	@Test
+	public void saveAppointment() throws Exception {
+		log.debug("- 1 MeetingReminderJob.execute");
+		log.warn("- 2 MeetingReminderJob.execute");
+
+		Calendar start = Calendar.getInstance();
+		start.setTimeInMillis(start.getTimeInMillis() + 600000);
+
+		Calendar end = Calendar.getInstance();
+		end.setTimeInMillis(start.getTimeInMillis() + 600000);
+
+		String appointmentName = "Test 01";
+		String appointmentDescription = "Descr";
+		Long users_id = 1L;
+		String appointmentLocation = "office";
+		Boolean isMonthly = false;
+		Boolean isDaily = false;
+		Long categoryId = 1L;
+		Boolean isWeekly = false;
+		Long remind = 3L;
+		Boolean isYearly = false;
+		String[] mmClient = new String[1];
+		for (int i = 0; i < 1; i++) {
+			mmClient[0] = createClientObj("firstname" + i, "lastname" + i,
+					"first" + i + ".last" + i + "@webbase-design.de", "Etc/GMT+1");
+		}
+		Long language_id = 1L;
+		Long roomType = 1L;
+
+		Appointment a = appointmentLogic.getAppointment(appointmentName,
+				appointmentLocation, appointmentDescription,
+				start, end, isDaily, isWeekly,
+				isMonthly, isYearly, categoryId, remind, mmClient,
+				roomType, language_id, false, "", -1, users_id);
+		a = appointmentDao.update(a, users_id);
+		
+		Thread.sleep(3000);
+		
+		appointmentLogic.doScheduledMeetingReminder();
+		
+		Thread.sleep(3000);
+		
+		assertTrue("Saved appointment should have valid id: " + a.getId(), a.getId() != null && a.getId() > 0);
+	}
+
+	private String createClientObj(String firstname, String lastname, String email, String jNameTimeZone) {
+		StringBuilder sb = new StringBuilder();
+		sb.append(",") //memberId
+			.append(firstname).append(",")
+			.append(lastname).append(",")
+			.append(email).append(",")
+			.append(",") //userId
+			.append(jNameTimeZone);
+		return sb.toString();
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentSchedulerTask.java b/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentSchedulerTask.java
new file mode 100644
index 0000000..226cb5d
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestAppointmentSchedulerTask.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.openmeetings.data.calendar.management.AppointmentLogic;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestAppointmentSchedulerTask extends AbstractJUnitDefaults {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(TestAppointmentSchedulerTask.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private AppointmentLogic appointmentLogic;
+	
+	@Test
+	public void doIt() {
+		log.debug("- 1 MeetingReminderJob.execute");
+		log.warn("- 2 MeetingReminderJob.execute");
+		try {
+			appointmentLogic.doScheduledMeetingReminder();
+			
+			assertTrue(true);
+		} catch (Exception err){
+			log.error("execute",err);
+		}
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
new file mode 100644
index 0000000..ea529fa
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+
+public class TestDatabaseStructureAppointment extends AbstractJUnitDefaults {
+
+	private static final Logger log = Logger.getLogger(TestDatabaseStructureAppointment.class);
+	@Autowired
+	private AppointmentDao appointmentDao;
+
+	@Test
+	public void testAddingGroup(){
+
+		try {
+			
+				Calendar cal = Calendar.getInstance();
+				cal.set(2008, 9, 2);
+				cal.get(Calendar.DAY_OF_MONTH);
+				cal.getTime();
+				
+				SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" );
+				Date date = format.parse( "2008-17-08" );
+				Date date2 = format.parse( "2008-18-08" );
+		
+				List<Appointment> listAppoints =	appointmentDao.getAppointmentsByRange(1L, date, date2);
+			//List<Appointment> listAppoints = AppointmentDaoImpl.getInstance().searchAppointmentsByName("%");
+			//AppointmentDaoImpl.getInstance().getNextAppointmentById(1L);
+			//AppointmentDaoImpl.getInstance().addAppointment("mezo",1L, "Pforzheim", "zweiter", Calendar.getInstance().getTime() , 
+				//date, null, true, null, null, 1L,1L);
+			//AppointmentDaoImpl.getInstance().addAppointment("testap", "erster Test",Calendar.getInstance().getTime() , 
+					///Calendar.getInstance().getTime(), true, false, false, false, new Long(1), 1L);
+			log.debug("Anzahl: "+listAppoints.size());
+			
+			
+			for (Appointment appoints : listAppoints) {
+				log.debug("Termin: "+appoints.getTitle()+" startDate: "+appoints.getStart()+ " endDate: "+appoints.getEnd());
+				log.debug("MeetingMembers: "+appoints.getMeetingMembers().size());
+			}
+			
+			for (Iterator<Appointment> iter = listAppoints.iterator();iter.hasNext();) {
+				log.debug(""+iter.next());
+			}
+			
+			//AppointmentDaoImpl.getInstance().updateAppointment(1L,"neu", "erster Test",Calendar.getInstance().getTime() , 
+					//Calendar.getInstance().getTime(), true, false, false, false, new Long(1));
+			//log.debug("AppointmentReminderTypDaoImpl: "+appointmentReminderTypDaoImpl.getAppointmentReminderTypById(1L));
+		} catch (Exception err) {
+
+			log.error("[testAddingGroup]",err);
+
+		}
+
+		
+
+		
+
+	}
+
+
+
+}
+
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java
new file mode 100644
index 0000000..95a5a0f
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointmentReminderTyp.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+//import groovy.sql.Sql;
+
+import java.util.Calendar;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDatabaseStructureAppointmentReminderTyp extends AbstractJUnitDefaults {
+
+	private static final Logger log = Logger
+			.getLogger(TestDatabaseStructureAppointmentReminderTyp.class);
+
+	@Autowired
+	private AppointmentReminderTypDao appointmentReminderTypDaoImpl;
+
+	@Test
+	public void testAddingGroup() {
+
+		try {
+
+			Calendar cal = Calendar.getInstance();
+			cal.set(2008, 9, 2);
+			cal.get(Calendar.DAY_OF_MONTH);
+			cal.getTime();
+
+			appointmentReminderTypDaoImpl.addAppointmentReminderTyps(1L,
+					"test 5 min", -1);
+			List<AppointmentReminderTyps> listAppoints = appointmentReminderTypDaoImpl
+					.getAppointmentReminderTypList(1);
+
+			log.debug("Anzahl: " + listAppoints.size());
+
+			for (AppointmentReminderTyps appoints : listAppoints) {
+				// log.debug("Termin: "+appoints.getAppointmentName()+" startDate: "+appoints.getAppointmentStarttime()+
+				// " endDate: "+appoints.getAppointmentEndtime());
+				log.debug("AppointmentReminderTyps: " + appoints.getName());
+			}
+
+			// for (Iterator<Appointment> iter =
+			// listAppoints.iterator();iter.hasNext();) {
+			// log.debug(iter.next());
+			// }
+
+		} catch (Exception err) {
+
+			log.error("[testAddingGroup]", err);
+
+		}
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureCategory.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureCategory.java
new file mode 100644
index 0000000..40ec53e
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureCategory.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.calendar.AppointmentCategoryDao;
+import org.apache.openmeetings.db.entity.calendar.AppointmentCategory;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDatabaseStructureCategory extends AbstractJUnitDefaults {
+
+	@Autowired
+	private AppointmentCategoryDao appointmentCategoryDaoImpl;
+
+	private static final Logger log = Logger
+			.getLogger(TestDatabaseStructureCategory.class);
+
+	@Test
+	public void testAddingGroup() {
+
+		try {
+
+			// appointmentCategoryDaoImpl.addAppointmentCategory(2L, "neu2",
+			// "test");
+			// appointmentCategoryDaoImpl.addAppointmentCategory("dritte");
+			// appointmentCategoryDaoImpl.updateAppointmentCategory(2L, "alt");
+
+			List<AppointmentCategory> appointmentCategory = appointmentCategoryDaoImpl
+					.getAppointmentCategoryList();
+			log.debug("Anzahl: " + appointmentCategory.size());
+
+			for (int x = 0; x < appointmentCategory.size(); x++) {
+				log.debug("id: " + appointmentCategory.get(x).getCategoryId());
+
+			}
+
+		} catch (Exception err) {
+
+			log.error("[testAddingGroup]", err);
+
+		}
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
new file mode 100644
index 0000000..63a0128
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Random;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDatabaseStructureGetAppointmentByRange extends AbstractJUnitDefaults {
+	private static final Logger log = Logger.getLogger(TestDatabaseStructureGetAppointmentByRange.class);
+	@Autowired
+	private AppointmentDao appointmentDao;
+
+	@Test
+	public void test() {
+		log.debug("Test started");
+		Long userId = 1L;
+		
+		Random rnd = new Random();
+		Calendar now = Calendar.getInstance();
+		Calendar rangeStart = Calendar.getInstance();
+		rangeStart.setTime(now.getTime());
+		rangeStart.add(Calendar.DATE, -1);
+		Calendar rangeEnd = Calendar.getInstance();
+		rangeEnd.add(Calendar.DATE, 1);
+		rangeEnd.setTime(now.getTime());
+		
+		Calendar a1End = Calendar.getInstance();
+		a1End.setTime(now.getTime());
+		a1End.add(Calendar.HOUR_OF_DAY, 1);
+		Appointment a1 = getAppointment(now.getTime(), a1End.getTime());
+		a1.setTitle("AppointmentByRange_a1");
+
+		Appointment a2 = getAppointment(now.getTime(), a1End.getTime());
+		a2.setTitle("AppointmentByRange_a2");
+		a2.setMeetingMembers(new ArrayList<MeetingMember>());
+		MeetingMember mm1 = new MeetingMember();
+		mm1.setUser(createUserContact(rnd.nextInt(), userId));
+		mm1.setAppointment(a2);
+		a2.getMeetingMembers().add(mm1);
+		
+		Appointment a3 = getAppointment(now.getTime(), a1End.getTime());
+		a3.setTitle("AppointmentByRange_a3");
+		a3.setMeetingMembers(new ArrayList<MeetingMember>());
+		MeetingMember mm2 = new MeetingMember();
+		mm2.setUser(createUserContact(rnd.nextInt(), userId));
+		mm2.setAppointment(a3);
+		a3.getMeetingMembers().add(mm2);
+		MeetingMember mm3 = new MeetingMember();
+		mm3.setUser(createUserContact(rnd.nextInt(), userId));
+		mm3.setAppointment(a3);
+		a3.getMeetingMembers().add(mm3);
+		
+		a1 = appointmentDao.update(a1, userId);
+		a2 = appointmentDao.update(a2, userId);
+		a3 = appointmentDao.update(a3, userId);
+		
+		int a1found = 0, a2found = 0, a3found = 0;
+		for (Appointment a : appointmentDao.getAppointmentsByRange(userId, rangeStart.getTime(), rangeEnd.getTime())) {
+			int mmCount = a.getMeetingMembers() == null ? 0 : a.getMeetingMembers().size();
+			if (a.getId().equals(a1.getId())) {
+				assertEquals("Inapropriate MeetingMembers count", 0, mmCount);
+				a1found++;
+			}
+			if (a.getId().equals(a2.getId())) {
+				assertEquals("Inapropriate MeetingMembers count", 1, mmCount);
+				a2found++;
+			}
+			if (a.getId().equals(a3.getId())) {
+				assertEquals("Inapropriate MeetingMembers count", 2, mmCount);
+				a3found++;
+			}
+		}
+		assertEquals("Inappropriate count of appointments without members found", 1, a1found);
+		assertEquals("Inappropriate count of appointments with 1 member found", 1, a2found);
+		assertEquals("Inappropriate count of appointments with 2 members found", 1, a3found);
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetUserStart.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetUserStart.java
new file mode 100644
index 0000000..764d597
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetUserStart.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDatabaseStructureGetUserStart extends AbstractJUnitDefaults {
+	private static final Logger log = Logger.getLogger(TestDatabaseStructureGetUserStart.class);
+	@Autowired
+	private UserDao usersDao;
+	
+	@Test
+	public void testAddingGroup() {
+		try {
+			usersDao.get(new Long(1));
+		} catch (Exception err) {
+			log.error("[testAddingGroup]", err);
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureMeetingMember.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureMeetingMember.java
new file mode 100644
index 0000000..6f6f73f
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureMeetingMember.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+
+import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class TestDatabaseStructureMeetingMember extends AbstractJUnitDefaults {
+	@Autowired
+	private MeetingMemberDao meetingMemberDao;
+
+	@Test
+	public void testUpdateMeetingMember(){
+		//FIXME need to be refactored !!!!
+		
+		//MeetingMemberDaoImpl.getInstance().addMeetingMember("Adddd", "dir", "1", "2", 1L, 1L, "test");	
+		//MeetingMemberDaoImpl.getInstance().addMeetingMember(firstname, lastname, memberStatus, appointmentStatus, appointmentId, userid, email)
+		
+		
+		//MeetingMemberDaoImpl.getInstance().getMeetingMemberById(1L);
+		//MeetingMemberDaoImpl.getInstance().deleteMeetingMember(2L);
+		
+		//meetingMemberDao.updateMeetingMember(1l,"bbbbbb", "dir", "1", "2", 1L, 1L, "test", ""); 
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureUsersSearch.java b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureUsersSearch.java
new file mode 100644
index 0000000..fc9c285
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureUsersSearch.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class TestDatabaseStructureUsersSearch extends AbstractJUnitDefaults {
+    @Autowired
+    private UserManager userManager;
+
+	private static final Logger log = Logger.getLogger(TestDatabaseStructureUsersSearch.class);
+
+	@Test
+	public void testAddingGroup(){
+
+		try {
+			
+			 SearchResult<User> users = userManager.getAllUserByRange("first", 0, 10, "orderby", true);
+			 log.debug("[result]" + users.getResult().size());
+			 log.debug("[records]"+ users.getRecords());
+			 
+			 //GroupMemberDaoImpl.getInstance().addGroupMember("Ad", "dir", Calendar.getInstance().getTime(), "1", "2", "interpol155", 1L, 1L);	
+			//GroupMemberDaoImpl.getInstance().addGroupMember(firstname, lastname, age, memberStatus, appointmentStatus, password, adresses_id, appointmentId);
+			
+			//GroupMemberDaoImpl.getInstance().getGroupMemberById(1L);
+			//GroupMemberDaoImpl.getInstance().deleteGroupMember(2L);
+			//GroupMemberDaoImpl.getInstance().updateGroupMember(1L, "Eugen", "Schwert", Calendar.getInstance().getTime(), "1", "2", "interpol155", 1L, 1L);
+		} catch (Exception err) {
+
+			log.error("[testAddingGroup]",err);
+
+		}
+
+		
+
+		
+
+	}
+
+
+
+}
+
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestGetAppointment.java b/src/test/java/org/apache/openmeetings/test/calendar/TestGetAppointment.java
new file mode 100644
index 0000000..263adfe
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestGetAppointment.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Calendar;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestGetAppointment extends AbstractJUnitDefaults {
+	private static final Logger log = Logger.getLogger(TestGetAppointment.class);
+
+	@Autowired
+	private AppointmentDao appointmentDao;
+	
+	@Test
+	public void getAppoinment() {
+		log.debug("getAppoinment enter");
+		Long userId = 1L;
+		
+		Calendar now = Calendar.getInstance();
+		Calendar a1End = Calendar.getInstance();
+		a1End.setTime(now.getTime());
+		a1End.add(Calendar.HOUR_OF_DAY, 1);
+		Appointment a1 = getAppointment(now.getTime(), a1End.getTime());
+		a1.setTitle("GetAppointment");
+		
+		a1 = appointmentDao.update(a1, userId);
+		
+		Appointment a = appointmentDao.get(a1.getId());
+		assertNotNull("Failed to get Appointment By id", a);
+		assertEquals("Inapropriate MeetingMembers count", 0, a.getMeetingMembers() == null ? 0 : a.getMeetingMembers().size());
+	}
+	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java b/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
new file mode 100644
index 0000000..6042df7
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
@@ -0,0 +1,306 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.calendar;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.SocketException;
+import java.net.URI;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.Vector;
+
+import javax.activation.DataHandler;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import net.fortuna.ical4j.data.CalendarOutputter;
+import net.fortuna.ical4j.model.DateTime;
+import net.fortuna.ical4j.model.TimeZone;
+import net.fortuna.ical4j.model.TimeZoneRegistry;
+import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
+import net.fortuna.ical4j.model.ValidationException;
+import net.fortuna.ical4j.model.component.VEvent;
+import net.fortuna.ical4j.model.component.VTimeZone;
+import net.fortuna.ical4j.model.parameter.Cn;
+import net.fortuna.ical4j.model.parameter.Role;
+import net.fortuna.ical4j.model.property.Attendee;
+import net.fortuna.ical4j.model.property.CalScale;
+import net.fortuna.ical4j.model.property.Method;
+import net.fortuna.ical4j.model.property.Organizer;
+import net.fortuna.ical4j.model.property.ProdId;
+import net.fortuna.ical4j.model.property.Uid;
+import net.fortuna.ical4j.model.property.Version;
+import net.fortuna.ical4j.util.UidGenerator;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.mail.ByteArrayDataSource;
+import org.apache.openmeetings.util.mail.IcalHandler;
+import org.apache.openmeetings.util.mail.SmtpAuthenticator;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestSendIcalMessage extends AbstractJUnitDefaults {
+
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			TestAppointmentSchedulerTask.class,
+			OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	private byte[] iCalMimeBody;
+
+	String subject = "test iCal";
+	String recipients = "seba.wagner@gmail.com";
+	String htmlBody = "test";
+
+	
+	public void simpleInvitionIcalLink() {
+		// Create a TimeZone
+		TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance()
+				.createRegistry();
+		TimeZone timezone = registry.getTimeZone("America/Mexico_City");
+		VTimeZone tz = timezone.getVTimeZone();
+
+		// Start Date is on: April 1, 2008, 9:00 am
+		java.util.Calendar startDate = new GregorianCalendar();
+		startDate.setTimeZone(timezone);
+		startDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
+		startDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
+		startDate.set(java.util.Calendar.YEAR, 2008);
+		startDate.set(java.util.Calendar.HOUR_OF_DAY, 9);
+		startDate.set(java.util.Calendar.MINUTE, 0);
+		startDate.set(java.util.Calendar.SECOND, 0);
+
+		// End Date is on: April 1, 2008, 13:00
+		java.util.Calendar endDate = new GregorianCalendar();
+		endDate.setTimeZone(timezone);
+		endDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
+		endDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
+		endDate.set(java.util.Calendar.YEAR, 2008);
+		endDate.set(java.util.Calendar.HOUR_OF_DAY, 13);
+		endDate.set(java.util.Calendar.MINUTE, 0);
+		endDate.set(java.util.Calendar.SECOND, 0);
+
+		// Create the event
+		String eventName = "Progress Meeting";
+		DateTime start = new DateTime(startDate.getTime());
+		DateTime end = new DateTime(endDate.getTime());
+		VEvent meeting = new VEvent(start, end, eventName);
+
+		// add timezone info..
+		meeting.getProperties().add(tz.getTimeZoneId());
+
+		// generate unique identifier..
+		UidGenerator ug;
+		try {
+			ug = new UidGenerator("uidGen");
+
+			Uid uid = ug.generateUid();
+			meeting.getProperties().add(uid);
+		} catch (SocketException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		// add attendees..
+		Attendee dev1 = new Attendee(URI.create("mailto:dev1@mycompany.com"));
+		dev1.getParameters().add(Role.REQ_PARTICIPANT);
+		dev1.getParameters().add(new Cn("Developer 1"));
+		meeting.getProperties().add(dev1);
+
+		Attendee dev2 = new Attendee(URI.create("mailto:dev2@mycompany.com"));
+		dev2.getParameters().add(Role.OPT_PARTICIPANT);
+		dev2.getParameters().add(new Cn("Developer 2"));
+		meeting.getProperties().add(dev2);
+
+		// Create a calendar
+		net.fortuna.ical4j.model.Calendar icsCalendar = new net.fortuna.ical4j.model.Calendar();
+		icsCalendar.getProperties().add(
+				new ProdId("-//Events Calendar//iCal4j 1.0//EN"));
+		icsCalendar.getProperties().add(CalScale.GREGORIAN);
+		icsCalendar.getProperties().add(Version.VERSION_2_0);
+
+		// Add the event and print
+		icsCalendar.getComponents().add(meeting);
+		
+		Organizer orger = new Organizer(URI.create("seba.wagner@gmail.com"));
+		orger.getParameters().add(new Cn("Sebastian Wagner"));
+		meeting.getProperties().add(orger);
+		
+		icsCalendar.getProperties().add(Method.REQUEST);
+		
+		System.out.println(icsCalendar);
+		
+		
+		
+
+		ByteArrayOutputStream bout = new ByteArrayOutputStream();
+		CalendarOutputter outputter = new CalendarOutputter();
+		try {
+			outputter.output(icsCalendar, bout);
+			iCalMimeBody = bout.toByteArray();
+			
+			sendIcalMessage();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (ValidationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+		
+
+	}
+
+	
+	@Test
+	public void sendInvitionIcalLink() {
+		try {
+
+			String email = "hans@webbase-design.de";
+			String username = "shans";
+			boolean invitor = false;
+
+			Calendar start = Calendar.getInstance();
+
+			Calendar end = Calendar.getInstance();
+
+			IcalHandler handler = new IcalHandler(
+					IcalHandler.ICAL_METHOD_REQUEST);
+
+			// Transforming Meeting Members
+
+			HashMap<String, String> attendeeList = handler.getAttendeeData(
+					email, username, invitor);
+
+			HashMap<String, String> organizerAttendee = handler
+					.getAttendeeData(recipients, "seba-test", true);
+
+			Vector<HashMap<String, String>> atts = new Vector<HashMap<String, String>>();
+			atts.add(attendeeList);
+
+			// Create ICal Message
+			String meetingId = handler.addNewMeeting(start.getTime(), end.getTime(), "test event",
+					atts, "localhost:5080/link_openmeetings",
+					organizerAttendee, "", TimeZone.getDefault());
+
+			log.debug("meetingId " + meetingId);
+
+			iCalMimeBody = handler.getIcalAsByteArray();
+
+			sendIcalMessage();
+
+			// return MailHandler.sendMail(email, subject, template);
+
+		} catch (Exception err) {
+			log.error("sendInvitionIcalLink", err);
+		}
+	}
+
+	private void sendIcalMessage() throws Exception {
+
+		log.debug("sendIcalMessage");
+
+		// Evaluating Configuration Data
+		String smtpServer = configurationDao.getConfValue("smtp_server", String.class, "");
+		String smtpPort = configurationDao.getConfValue("smtp_port", String.class, "");
+		String from = configurationDao.getConfValue("system_email_addr", String.class, "");
+		String emailUsername = configurationDao.getConfValue("email_username", String.class, "");
+		String emailUserpass = configurationDao.getConfValue("email_userpass", String.class, "");
+
+		Properties props = System.getProperties();
+
+		props.put("mail.smtp.host", smtpServer);
+		props.put("mail.smtp.port", smtpPort);
+
+		boolean isTls = (1 == configurationDao.getConfValue("mail.smtp.starttls.enable", Integer.class, "0"));
+		if (isTls) {
+			props.put("mail.smtp.starttls.enable", "true");
+		}
+
+		// Check for Authentification
+		Session session = null;
+		if (emailUsername != null && emailUsername.length() > 0
+				&& emailUserpass != null && emailUserpass.length() > 0) {
+			// use SMTP Authentication
+			props.put("mail.smtp.auth", "true");
+			session = Session.getDefaultInstance(props, new SmtpAuthenticator(
+					emailUsername, emailUserpass));
+		} else {
+			// not use SMTP Authentication
+			session = Session.getDefaultInstance(props, null);
+		}
+
+		// Building MimeMessage
+		MimeMessage mimeMessage = new MimeMessage(session);
+		mimeMessage.setSubject(subject);
+		mimeMessage.setFrom(new InternetAddress(from));
+		mimeMessage.addRecipients(Message.RecipientType.TO,
+				InternetAddress.parse(recipients, false));
+
+		// -- Create a new message --
+		BodyPart msg = new MimeBodyPart();
+		msg.setDataHandler(new DataHandler(new ByteArrayDataSource(htmlBody,
+				"text/html; charset=\"utf-8\"")));
+
+		Multipart multipart = new MimeMultipart();
+
+		BodyPart iCalAttachment = new MimeBodyPart();
+		iCalAttachment.setDataHandler(new DataHandler(
+				new javax.mail.util.ByteArrayDataSource(
+						new ByteArrayInputStream(iCalMimeBody),
+						"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
+		iCalAttachment.setFileName("invite.ics");
+
+		multipart.addBodyPart(iCalAttachment);
+		multipart.addBodyPart(msg);
+
+		mimeMessage.setSentDate(new Date());
+		mimeMessage.setContent(multipart);
+
+		// -- Set some other header information --
+		// mimeMessage.setHeader("X-Mailer", "XML-Mail");
+		// mimeMessage.setSentDate(new Date());
+
+		// Transport trans = session.getTransport("smtp");
+		Transport.send(mimeMessage);
+
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java b/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java
new file mode 100644
index 0000000..3ff1c4c
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.chat;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import junit.framework.TestCase;
+
+import org.junit.Test;
+
+public class TestChatLinking extends TestCase {
+	
+	@Test
+	public void testChatParser(){
+		try {
+			
+			String text = "hasn http://www.google.de peter hasn http://www.google.de ";
+			
+			System.out.println(link(text));
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+	
+	
+	private String link(String input) {
+		try {
+			
+			String tReturn = "";
+			
+			String parts[] = input.split(" ");
+			
+			for (int t=0;t<parts.length;t++) {
+				
+				String text = parts[t];
+	
+				//System.out.println("Part 1 "+text);
+				
+				Matcher matcher = Pattern.compile("(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))").matcher(text);
+
+				if (matcher.find()) {
+					text = matcher.replaceFirst("<u><FONT color=\"#0000CC\"><a href='" + text + "'>" + text
+							+ "</a></FONT></u>");
+
+				}
+				
+				//System.out.println("Part 2 "+text);
+				
+				if (t != 0) {
+					tReturn += " ";
+				}
+				
+				tReturn += text;
+			
+			}
+			
+			return tReturn;
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return "";
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/config/TestConfig.java b/src/test/java/org/apache/openmeetings/test/config/TestConfig.java
new file mode 100644
index 0000000..26187e5
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/config/TestConfig.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.test.calendar.TestAppointmentAddAppointment;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestConfig extends AbstractJUnitDefaults {
+
+	private static final Logger log = LoggerFactory.getLogger(TestAppointmentAddAppointment.class);
+
+	@Autowired
+	private ConfigurationDao configurationDao;
+
+	@Test
+	public void getConfigKey() {
+		System.err.println("THIS");
+
+		Configuration smtp_server = configurationDao.get("smtp_server").get(0);
+
+		System.err.println("smtp_server " + smtp_server.getUser());
+
+		assertNull(smtp_server.getUser());
+	}
+
+	@Test
+	public void getConfigs() {
+
+		try {
+			List<Configuration> list = configurationDao.get(4, 6);
+
+			for (Configuration conf : list) {
+				System.err.println("conf.getConf_key() " + conf.getConf_key());
+				System.err.println("conf.getUser() " + conf.getUser());
+				if (conf.getUser() != null) {
+					System.err.println("conf.getUsers() " + conf.getUser().getLogin());
+				}
+			}
+
+			assertEquals(list.size(), 6);
+
+		} catch (Exception err) {
+			log.error("[startConversion]", err);
+		}
+
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/derby/PrepareSystemFiles.java b/src/test/java/org/apache/openmeetings/test/derby/PrepareSystemFiles.java
new file mode 100644
index 0000000..dba693f
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/derby/PrepareSystemFiles.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.derby;
+
+import java.io.File;
+
+import org.apache.openmeetings.cli.ConnectionProperties;
+import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
+import org.apache.openmeetings.util.OmFileHelper;
+
+/**
+ * This file is called from command line to patch the derby configuration 
+ * during the automated run of Selenium
+ * 
+ * @author swagner
+ *
+ */
+public class PrepareSystemFiles {
+	
+	public static void main(String... args) {
+		try {
+			OmFileHelper.setOmHome(args[0]);
+			
+			String databaseHomeDirectory = args[1];
+			
+			String persistanceFileToPatch = args[2];
+			
+			ConnectionProperties connectionProperties = new ConnectionProperties();
+			
+			File conf = new File(persistanceFileToPatch);
+			
+			if (conf.exists()) {
+				conf.delete();
+			}
+			
+			String dbType = "derby";
+			File srcConf = new File(OmFileHelper.getWebinfDir(), "classes/META-INF/" + dbType + "_persistence.xml");
+			ConnectionPropertiesPatcher.getPatcher(dbType, connectionProperties).patch(
+					srcConf
+					, conf
+					, "localhost"
+					, "1527"
+					, databaseHomeDirectory + "openmeetings"
+					, "user"
+					, "secret"
+					);
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/derby/StartDerbyNetworkService.java b/src/test/java/org/apache/openmeetings/test/derby/StartDerbyNetworkService.java
new file mode 100644
index 0000000..5bd4030
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/derby/StartDerbyNetworkService.java
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.derby;
+
+import org.apache.derby.drda.NetworkServerControl;
+
+public class StartDerbyNetworkService {
+
+	protected NetworkServerControl server;
+}
diff --git a/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java b/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java
new file mode 100644
index 0000000..41bcce5
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/domain/TestAddGroup.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.domain;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestAddGroup extends AbstractJUnitDefaults {
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private UserDao usersDao;
+
+	private static final Logger log = Logger.getLogger(TestAddGroup.class);
+
+	@Test
+	public void testAddingGroup() {
+		Organisation o = new Organisation();
+		o.setName("default");
+		o = orgDao.update(o, null);
+		assertNotNull("Id of organisation created should not be null", o.getOrganisation_id());
+
+		User us = usersDao.get(1L);
+		assertNotNull("User should exist", us);
+		
+		assertNotNull("Organisation User list should exist", us.getOrganisation_users());
+		us.getOrganisation_users().add(new Organisation_Users(o));
+		us = usersDao.update(us, null);
+
+		log.error(us.getLastname());
+		log.error(us.getAdresses().getTown());
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java b/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java
new file mode 100644
index 0000000..bbe5528
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/domain/TestUserGroupAggregation.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.domain;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserGroupAggregation extends AbstractJUnitDefaults {
+	private static final Logger log = Logger.getLogger(TestUserGroupAggregation.class);
+
+	@Autowired
+	private UserDao userDao;
+
+	@Test
+	public void testitNow() {
+		User u = userDao.get(1L);
+
+		assertNotNull("Organisation list for default user must not be null", u.getOrganisation_users());
+		assertTrue("Default user must belong to at least one organisation", u.getOrganisation_users().size() > 0);
+
+		for (Organisation_Users orgUserObj : u.getOrganisation_users()) {
+			log.error("testitNow: organisation Id: '" + orgUserObj.getOrganisation().getOrganisation_id() + "'; name: '" + orgUserObj.getOrganisation().getName() + "'");
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java b/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java
new file mode 100644
index 0000000..0d5ad9e
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.emotes;
+
+import java.util.LinkedList;
+
+import junit.framework.TestCase;
+
+import org.junit.Test;
+
+public class TestChatParsing extends TestCase {
+	
+	public static LinkedList<LinkedList<String>> emotfilesList = new LinkedList<LinkedList<String>>();
+	
+	@Test
+	public void testChatParser(){
+		try {
+			//FIXME
+			String filePath = "/Users/sebastianwagner/Documents/workspace/xmlcrm/webapp/xmlcrm/public/";
+			
+			this.loadEmot(filePath);
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+	
+	public void loadEmot(String filePath){
+		try {
+//			String fileName = filePath + File.separatorChar + "emoticons" + File.separatorChar + "emotes.xml";
+//			XStream xStream = new XStream(new XppDriver());
+//			xStream.setMode(XStream.NO_REFERENCES);
+//			BufferedReader reader = new BufferedReader(new FileReader(fileName));
+//		    String xmlString = "";
+//		    while (reader.ready()) {
+//		    	xmlString += reader.readLine();
+//		    }
+//		    Application.setEmotfilesList((LinkedList<LinkedList<String>>) xStream.fromXML(xmlString));
+//		    ChatString.getInstance().replaceAllRegExp();
+//		    String messageText = "Hi :) how are you? whats going on B) today (T_T) ? with you ?";
+//		    //messageText = ":) Hi :) how :( are :) you :( today >:O going on? :)";
+//		    //messageText = "Hi :) how :( are :) you :( today :) ";
+//		    //messageText = "Hi :) how";
+//		    ChatString.getInstance().parseChatString(messageText);
+		    
+		    System.out.println("loadEmot completed");
+		} catch (Exception err) {
+			System.out.println("[loadEmot]"+err);
+			err.printStackTrace();
+		}
+	}	
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java b/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java
new file mode 100644
index 0000000..d9221e2
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java
@@ -0,0 +1,123 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.emotes;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.LinkedList;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
+
+public class TestConvertGifs extends TestCase {
+	
+	private static final Logger log = Logger.getLogger(TestConvertGifs.class);
+
+	@Test
+	public void testConvertDir(){
+		try {
+			//FIXME
+			String basePath = "/Users/sebastianwagner/Documents/workspace/xmlcrm/webapp/xmlcrm/public/emoticons/";
+			
+			System.out.println("basePath "+basePath);
+			File baseDir = new File(basePath);
+			
+			System.out.println("basePath "+baseDir.exists());
+			
+			String batfilePath = "mybat.bat";
+			String batString = "";
+			
+			String[] allfiles = baseDir.list();			
+			if(allfiles!=null){
+				for(int i=0; i<allfiles.length; i++){
+					File file = new File(basePath+File.separatorChar+allfiles[i]);
+					String fileName = file.getName();
+					System.out.println("file "+file.getName());
+					String fileNamePure = fileName.substring(0, fileName.length()-4);
+					
+					batString += "gif2swf -r 30 -o "+fileNamePure+".swf "+fileName+" \r\n";
+				}
+			}
+			
+			PrintWriter pw = new PrintWriter(new FileWriter(basePath+batfilePath));
+		    pw.println(batString);
+		    pw.flush();
+		    pw.close();
+		    
+			System.out.println("batString "+batString);
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+	
+	@Test
+	public void testXMLDir(){
+		try {
+			//FIXME
+			String basePath = "/Users/sebastianwagner/Documents/workspace/xmlcrm/webapp/xmlcrm/upload/emoticons/";
+			
+			System.out.println("basePath "+basePath);
+			File baseDir = new File(basePath);
+			
+			System.out.println("basePath "+baseDir.exists());
+			
+			String batfilePath = "emotes.xml";
+			String batString = "";
+			
+			String[] allfiles = baseDir.list();	
+			LinkedList<LinkedList<String>> filesList = new LinkedList<LinkedList<String>>();
+			if(allfiles!=null){
+				for(int i=0; i<allfiles.length; i++){
+					File file = new File(basePath+File.separatorChar+allfiles[i]);
+					LinkedList<String> singleFile = new LinkedList<String>();
+					String fileName = file.getName();
+					System.out.println("file "+file.getName());
+					String fileNamePure = fileName.substring(0, fileName.length()-4);
+					singleFile.add(fileNamePure+".swf");
+					singleFile.add(":)");
+					singleFile.add("(^_^)");
+					filesList.add(singleFile);
+				}
+			}
+			
+			XStream xStream = new XStream(new XppDriver());
+			xStream.setMode(XStream.NO_REFERENCES);
+			String xmlString = xStream.toXML(filesList);
+
+			log.error(xmlString);
+			
+			PrintWriter pw = new PrintWriter(new FileWriter(basePath+batfilePath));
+		    pw.println(xmlString);
+		    pw.flush();
+		    pw.close();
+		    
+			System.out.println("batString "+batString);
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/gui/TestGui.java b/src/test/java/org/apache/openmeetings/test/gui/TestGui.java
new file mode 100644
index 0000000..f6b64bf
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/gui/TestGui.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.gui;
+
+import org.junit.Test;
+
+import junit.framework.TestCase;
+
+
+public class TestGui  extends TestCase {
+
+	@Test
+	public void testNoop() {
+		
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java b/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
new file mode 100644
index 0000000..cfb7967
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/invitiation/TestInvitation.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.invitiation;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.axis2.AxisFault;
+import org.apache.openmeetings.axis.services.UserWebService;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.remote.InvitationService;
+import org.apache.openmeetings.remote.MainService;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestInvitation extends AbstractJUnitDefaults {
+	@Autowired
+	private InvitationService invitationService;
+	@Autowired
+	private MainService mService;
+	@Autowired
+	private UserWebService userWebService;
+	@Autowired
+	private UserDao userDao;
+	
+	@Test
+	public void testSendInvitationLink() throws AxisFault {
+		Sessiondata sessionData = mService.getsessiondata();
+		
+		Long uid = userWebService.loginUser(sessionData.getSession_id(), username, userpass);
+		User us = userDao.get(uid);
+		
+		String date = new SimpleDateFormat("dd.MM.yyyy").format(new Date());
+		invitationService.sendInvitationHash(sessionData.getSession_id(), "Testname", "Testlastname", "message", "sebawagner@apache.org", 
+				"subject", 1L, "", false, "", 1, date, "12:00", date, "14:00", 1L, us.getTimeZoneId(), true);
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java b/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java
new file mode 100644
index 0000000..925b4a4
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.jai;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+public class TestInterpolation extends TestCase {
+	
+	private static final Logger log = Logger.getLogger(TestInterpolation.class);
+	
+	@Test
+	public void testInterpolate() {
+		try {
+			
+//			GeomPoint p1 = new Point(-60,-100);
+//			GeomPoint p2 = new Point(20, 50);
+//
+//			//double[] samples = {-100,-50};
+//			
+//			GeomPoint gPoint = GeomPoint.interpolate(p1, p2, new Float(0.5));
+//			
+//			log.debug("Interpolated: "+gPoint);
+//			
+//			
+//			GeomPoint p3 = new GeomPoint();
+//			p3.setLocation(-2,4);
+//			//p3.setLocation(3,4);
+//			p3.normalize(10);
+//			//GeomPoint
+//			
+//			
+//			p3.setLocation(2,-4);
+//			//p3.setLocation(3,4);
+//			p3.normalize(10);
+//			
+		} catch (Exception er) {
+			log.error("ERROR ", er);
+			System.out.println("Error exporting: " + er);
+			er.printStackTrace();
+		}
+	}
+
+	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java b/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java
new file mode 100644
index 0000000..e91ee7b
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.jai;
+
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import junit.framework.TestCase;
+
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.dom.svg.SVGDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class TestSVGTextExporterArrow extends TestCase {
+	
+	private static final Logger log = Logger.getLogger(TestSVGTextExporterArrow.class);
+	
+	@Test
+	public void testGetDiagramList() {
+		try {
+			
+			
+	        // Get a DOMImplementation.
+	        DOMImplementation domImpl =
+	            GenericDOMImplementation.getDOMImplementation();
+
+	        // Create an instance of org.w3c.dom.Document.
+	        //String svgNS = "http://www.w3.org/2000/svg";
+	        String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
+
+	        Document document = domImpl.createDocument(svgNS, "svg", null);
+	        
+	        // Get the root element (the 'svg' element).
+	        Element svgRoot = document.getDocumentElement();
+
+	        
+	        // Set the width and height attributes on the root 'svg' element.
+	        svgRoot.setAttributeNS(null, "width", "2400");
+	        svgRoot.setAttributeNS(null, "height", "1600");
+	        
+
+	        // Create an instance of the SVG Generator.
+	        SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+
+//	        SVGGraphics2D svgGenerator8 = new SVGGraphics2D(svgGenerator);
+//	        //SVGGraphics2D svgGenerator2 = new SVGGraphics2D(document);
+//	        
+//	        //NOTE: Font.ITALIC+Font.BOLD = Font AND Bold !
+//	        exportToImageTest.paintTextByWidthHeight(svgGenerator8, 500, 300, 100, 200, "Process", Font.BOLD+Font.ITALIC, 28,
+//	        		new Color(255,0,0));
+//	        
+//	        SVGGraphics2D svgGenerator11 = new SVGGraphics2D(svgGenerator);
+//	        
+//	        exportToImageTest.paintTextByWidthHeight(svgGenerator11, 100, 300, 100, 200, "Process", Font.BOLD+Font.ITALIC, 111,
+//	        		new Color(255,0,0));
+//	        
+//	        SVGGraphics2D svgGenerator9 = new SVGGraphics2D(svgGenerator);
+	      //NOTE: Font.ITALIC+Font.BOLD = Font AND Bold !
+//	        exportToImageTest._paintTextByWidthHeight(svgGenerator9, 500, 300, 100, 200, "Hans", Font.BOLD, 28,
+//	        		new Color(255,0,0));
+	    
+	    
+	        // Finally, stream out SVG to the standard output using
+	        // UTF-8 encoding.
+	        boolean useCSS = true; // we want to use CSS style attributes
+	        //Writer out = new OutputStreamWriter(System.out, "UTF-8");
+	        
+	        //OutputStream out = httpServletResponse.getOutputStream();
+			//httpServletResponse.setContentType("APPLICATION/OCTET-STREAM");
+			//httpServletResponse.setHeader("Content-Disposition","attachment; filename=\"" + requestedFile + "\"");
+	        Writer out = new OutputStreamWriter(System.out, "UTF-8");
+
+	        //StringWriter out = new StringWriter();
+	        
+	        svgGenerator.stream(out, useCSS);
+		} catch (Exception er) {
+			log.error("ERROR ", er);
+			System.out.println("Error exporting: " + er);
+			er.printStackTrace();
+		}
+	}
+	
+	
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/labels/FillLabels.java b/src/test/java/org/apache/openmeetings/test/labels/FillLabels.java
new file mode 100644
index 0000000..fea5614
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/labels/FillLabels.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.labels;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.LangExport;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Syncs all labels from a given master language file to all language files You
+ * can also specify some labels that are overwritten from the master file to all
+ * other files.<br/>
+ * <br/>
+ * It will read first the {@link #masterLangFile} and then all other XML files and fill
+ * it. Practically I have put "english.xml" in the {@link #masterLangFile}, so you can
+ * add new labels to the english.xml, run the test, refresh Eclipse and all
+ * other lang files should have the new label(s) too.<br/>
+ * <br/>
+ * It is also possible to replace existing other labels, just see the array
+ * variable: {@link #replaceIds}. All Ids, in that array will be synced from the
+ * {@link #masterLangFile} to all other languages.<br/>
+ * <br/>
+ * The Junit test also does some tests, for example it fails if it detects
+ * duplicate labelid's.<br/>
+ * 
+ * @author sebawagner
+ * 
+ */
+public class FillLabels extends AbstractJUnitDefaults {
+	private final String basePath = "languages/";
+	private final String masterLangFile = "english.xml";
+	private final String[] excludeFiles = { "errorvalues.xml",
+			"countries.xml", "timezones.xml", "languages.xml" };
+	@Autowired
+	private FieldLanguageDao fieldLanguageDao;
+	@Autowired
+	private FieldValueDao fieldValueDao;
+	
+	/**
+	 * those labels will be overwritten from the master to all language files,
+	 * other label-id's will be only filled up if missing at the end of the
+	 * language file
+	 */
+	private final long[] replaceIds = {  }; // 1518L
+
+	private Map<Long, Fieldlanguagesvalues> masterLabels;
+
+	@Test
+	public void testCount() throws Exception {
+		FieldLanguage prevLanguage = null;
+		long prevCount = -1;
+		for (FieldLanguage l : fieldLanguageDao.getLanguages()) {
+			long count = fieldValueDao.count(l.getLanguage_id(), null);
+			if (prevLanguage != null) {
+				assertEquals(String.format("Language: %s contains %d labels while %s contains %d labels"
+						, prevLanguage.getCode(), prevCount, l.getCode(), count), prevCount, count);
+			}
+			prevLanguage = l;
+			prevCount = count;
+		}
+	}
+	
+	@Test
+	public void test() throws Exception {
+		String languagesFolder = System.getProperty("languages.home", null);
+		OmFileHelper.setOmHome(System.getProperty("om.home", "."));
+		// Read master file
+		File base = null == languagesFolder ? new File(OmFileHelper.getOmHome(), basePath) : new File(languagesFolder);
+		masterLabels = parseToLabelsArray(new File(base, masterLangFile));
+
+		File langFolder = new File(OmFileHelper.getOmHome(), basePath);
+
+		for (File file : langFolder.listFiles(new FilenameFilter() {
+					public boolean accept(File file, String string1) {
+						if (!string1.endsWith("xml")) {
+							return false;
+						}
+						for (String excludeFileName : excludeFiles) {
+							if (string1.equals(excludeFileName)) {
+								return false;
+							}
+						}
+						return true;
+					}
+				})) {
+
+			Map<Long, Fieldlanguagesvalues> labelsArray = parseToLabelsArray(file);
+
+			for (Entry<Long, Fieldlanguagesvalues> entryMaster : masterLabels.entrySet()) {
+				for (long replaceId : replaceIds) {
+					if (replaceId == entryMaster.getKey()) {
+						labelsArray.put(entryMaster.getKey(), entryMaster.getValue());
+					}
+				}
+				if (!labelsArray.containsKey(entryMaster.getKey())) {
+					labelsArray.put(entryMaster.getKey(), entryMaster.getValue());
+				}
+			}
+			LangExport.serializetoXML(new FileOutputStream(file), "UTF-8", createDocument(labelsArray));
+		}
+	}
+
+	/**
+	 * parses a given language file to an array of Labels
+	 * 
+	 * @return
+	 * @throws FileNotFoundException
+	 * @throws DocumentException
+	 */
+	private Map<Long, Fieldlanguagesvalues> parseToLabelsArray(File file)
+			throws FileNotFoundException, DocumentException {
+
+		Map<Long, Fieldlanguagesvalues> labelsArray = new LinkedHashMap<Long, Fieldlanguagesvalues>();
+		SAXReader reader = new SAXReader();
+		Document document = reader.read(file);
+
+		Element root = document.getRootElement();
+
+		for (@SuppressWarnings("unchecked")
+		Iterator<Element> i = root.elementIterator(); i.hasNext();) {
+			Element itemObject = i.next();
+			Long fieldvalues_id = Long.valueOf(
+					itemObject.attribute("id").getText()).longValue();
+			String fieldName = itemObject.attribute("name").getText();
+			String value = itemObject.element("value").getText();
+			Fieldlanguagesvalues fValue = new Fieldlanguagesvalues();
+			fValue.setValue(value);
+			Fieldvalues fLabel = new Fieldvalues();
+			fLabel.setName(fieldName);
+			fValue.setFieldvalues(fLabel);
+			
+			labelsArray.put(fieldvalues_id, fValue);
+		}
+
+		return labelsArray;
+	}
+
+	/**
+	 * Create the document
+	 * 
+	 * @param flvList
+	 * @return
+	 * @throws Exception
+	 */
+	private Document createDocument(Map<Long, Fieldlanguagesvalues> labelsArray)
+			throws Exception {
+		Document document = LangExport.createDocument();
+		Element root = LangExport.createRoot(document);
+
+		for (Entry<Long, Fieldlanguagesvalues> entryLabel : labelsArray.entrySet()) {
+			Element eTemp = root.addElement("string")
+					.addAttribute("id", entryLabel.getValue().getFieldvalues().getFieldvalues_id().toString())
+					.addAttribute("name", entryLabel.getValue().getFieldvalues().getName());
+			Element value = eTemp.addElement("value");
+			value.addText(entryLabel.getValue().getValue());
+		}
+
+		return document;
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/labels/TestGetFieldValues.java b/src/test/java/org/apache/openmeetings/test/labels/TestGetFieldValues.java
new file mode 100644
index 0000000..153f447
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/labels/TestGetFieldValues.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.labels;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * @author sebawagner
+ * 
+ */
+public class TestGetFieldValues extends AbstractJUnitDefaults {
+	
+	@Autowired
+	private FieldValueDao fieldValueDao;
+
+	@Test
+	public void testCount() throws Exception {
+		Fieldvalues fv = fieldValueDao.get(1L);
+		
+		assertTrue("Fieldvalues should not be null", (fv != null));
+	}
+	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java b/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
new file mode 100644
index 0000000..1b5a976
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.library;
+
+import org.apache.log4j.Logger;
+import org.apache.openmeetings.documents.LibraryWmlLoader;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+public class TestFileParser extends AbstractJUnitDefaults {
+	
+	private static final Logger log = Logger.getLogger(TestFileParser.class);
+	@Autowired
+	private LibraryWmlLoader libraryWmlLoader;
+	
+	@Test
+	public void testLoadWmlFile(){
+		
+		try {
+			
+			libraryWmlLoader.loadWmlFile("filename1");
+			
+		} catch (Exception err) {
+			
+			log.error("TestLoadWmlFile",err);
+			
+		}
+		
+	}
+	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java b/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
new file mode 100644
index 0000000..0b279d5
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.navi;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.entity.basic.Naviglobal;
+import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestNavi extends AbstractJUnitDefaults {
+	
+	@Autowired
+	private NavigationDao navimanagement;
+	
+	@Test
+	public void testGetNavi(){
+		
+        List<Naviglobal> ll = navimanagement.getMainMenu(true, 1L, 1L);
+
+        assertTrue("GlobalNavi size should be greater than zero: " + ll.size(), ll.size() > 0);
+        System.out.println("NaviGlobal size: " + ll.size());
+
+        for (Naviglobal navigl : ll) {
+        	assertNotNull("Naviglobal retrieved should not be null", navigl);
+            System.out.println("Naviglobal label: " + navigl.getLabel().getValue());
+
+        	assertNotNull("Naviglobal retrieved should have Navimain entries", navigl.getMainnavi());
+            for (Navimain navim : navigl.getMainnavi()) {
+            	assertNotNull("Navimain retrieved should not be null", navim);
+                System.out.println("-->" + navim.getLabel().getValue());
+            }
+        }
+		
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/poll/TestClientListManager.java b/src/test/java/org/apache/openmeetings/test/poll/TestClientListManager.java
new file mode 100644
index 0000000..fbc6653
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/poll/TestClientListManager.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.poll;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Random;
+
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestClientListManager extends AbstractJUnitDefaults {
+	@Autowired
+	private ISessionManager sessionManager;
+	
+	@Test
+	public void addClientListItem() {
+		Random rnd = new Random();
+		assertNotNull("RoomClientId created is null",
+				sessionManager.addClientListItem(rnd.nextLong() + "ABCDE"
+						+ rnd.nextLong(), "scopeName", 66666, "remoteAddress",
+						"swfUrl", false, null));
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java b/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java
new file mode 100644
index 0000000..88a8e21
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.poll;
+
+import org.apache.openmeetings.db.dao.room.PollDao;
+import org.apache.openmeetings.db.entity.room.PollType;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import static org.junit.Assert.*;
+
+public class TestPollManagement extends AbstractJUnitDefaults {
+	@Autowired
+	private PollDao pollManager;
+	
+	@Test
+	public void addPollType() {
+		long maxId = 1;
+		for (PollType pt : pollManager.getPollTypes()) {
+			maxId = Math.max(maxId, pt.getPollTypesId());
+		}
+		assertNotNull("Poll created is null", pollManager.addPollType(26L, false));
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java b/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
new file mode 100644
index 0000000..a84cbee
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rdc;
+
+import java.awt.*;
+import java.awt.event.*;
+
+class WindowClosingAdapter extends WindowAdapter {
+	public void windowClosing(WindowEvent event) {
+		event.getWindow().setVisible(false);
+		event.getWindow().dispose();
+		System.exit(0);
+	}
+}
+
+public class KeyCodesTest extends Frame implements KeyListener {
+	private static final long serialVersionUID = -1706968644784929402L;
+	String msg1 = "";
+	String msg2 = "";
+
+	public static void main(String[] args) {
+		new KeyCodesTest();
+	}
+
+	public KeyCodesTest() {
+		super("TestKeyCodes");
+		addKeyListener(this);
+		addWindowListener(new WindowClosingAdapter());
+		setBackground(Color.lightGray);
+		setSize(300, 200);
+		setLocation(200, 100);
+		setVisible(true);
+	}
+
+	public void paint(Graphics g) {
+		if (msg1.length() > 0) {
+			draw3DRect(g, 20, 50, 250, 30);
+			g.setColor(Color.black);
+			g.drawString(msg1, 30, 70);
+		}
+		if (msg2.length() > 0) {
+			draw3DRect(g, 20, 100, 250, 30);
+			g.setColor(Color.black);
+			g.drawString(msg2, 30, 120);
+		}
+	}
+
+	void draw3DRect(Graphics g, int x, int y, int width, int height) {
+		g.setColor(Color.darkGray);
+		g.drawLine(x, y, x, y + height);
+		g.drawLine(x, y, x + width, y);
+		g.setColor(Color.white);
+		g.drawLine(x + width, y + height, x, y + height);
+		g.drawLine(x + width, y + height, x + width, y);
+	}
+
+	public void keyPressed(KeyEvent event) {
+		msg1 = "";
+		System.out.println("keyPressed CODE1 "+event.getKeyCode());
+		
+		Integer myCode = event.getKeyCode();
+		
+		System.out.println("keyPressed CODE2 "+myCode);
+		
+		System.out.println("keyPressed CHAR3 "+event.getKeyChar());
+		
+		System.out.println("keyPressed CHAR4 "+KeyEvent.getKeyText(event.getKeyCode()));
+		
+		System.out.println("keyPressed CHAR5 "+KeyEvent.getKeyText(myCode));
+		
+		System.out.println("keyPressed isActionKey "+event.isActionKey());
+		System.out.println("keyPressed isAltDown "+event.isAltDown());
+		System.out.println("keyPressed isAltGraphDown "+event.isAltGraphDown());
+		System.out.println("keyPressed isConsumed "+event.isConsumed());
+		System.out.println("keyPressed isControlDown "+event.isControlDown());
+		System.out.println("keyPressed isMetaDown "+event.isMetaDown());
+		System.out.println("keyPressed isShiftDown "+event.isShiftDown());
+
+		System.out.println("keyPressed paramString "+event.paramString());
+		
+		if (event.getKeyChar() == KeyEvent.CHAR_UNDEFINED) {
+			int key = event.getKeyCode();
+			// Funktionstaste abfragen
+			if (key == KeyEvent.VK_F1) {
+				msg1 = "F1";
+			} else if (key == KeyEvent.VK_F2) {
+				msg1 = "F2";
+			} else if (key == KeyEvent.VK_F3) {
+				msg1 = "F3";
+			}
+			// Modifier abfragen
+			if (msg1.length() > 0) {
+				if (event.isAltDown()) {
+					msg1 = "ALT + " + msg1;
+				}
+				if (event.isControlDown()) {
+					msg1 = "STRG + " + msg1;
+				}
+				if (event.isShiftDown()) {
+					msg1 = "UMSCHALT + " + msg1;
+				}
+			}
+		}
+		repaint();
+	}
+
+	public void keyReleased(KeyEvent event) {
+		msg1 = "";
+		repaint();
+	}
+
+	public void keyTyped(KeyEvent event) {
+		char key = event.getKeyChar();
+		
+//		System.out.println("keyTyped CODE1 "+event.getKeyCode());
+//		
+//		Integer myCode = event.getKeyCode();
+//		
+//		System.out.println("keyTyped CODE2 "+myCode);
+//		
+//		System.out.println("keyTyped CHAR3 "+event.getKeyChar());
+//		
+//		System.out.println("keyTyped CHAR4 "+event.getKeyText(event.getKeyCode()));
+//		
+//		System.out.println("keyTyped CHAR5 "+event.getKeyText(myCode));
+		
+		if (key == KeyEvent.VK_BACK_SPACE) {
+			if (msg2.length() > 0) {
+				msg2 = msg2.substring(0, msg2.length() - 1);
+			}
+		} else if (key >= KeyEvent.VK_SPACE) {
+			if (msg2.length() < 40) {
+				msg2 += event.getKeyChar();
+			}
+		}
+		repaint();
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java b/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
new file mode 100644
index 0000000..97c2573
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rdc;
+
+import java.awt.*;
+import java.awt.event.*;
+
+public class ReadKeyCodesTest extends Frame implements KeyListener {
+	private static final long serialVersionUID = -1722917067803656922L;
+	String msg1 = "";
+	String msg2 = "";
+
+	public static void main(String[] args) {
+		new ReadKeyCodesTest();
+	}
+
+	public ReadKeyCodesTest() {
+		super("TestKeyCodes");
+		addKeyListener(this);
+		addWindowListener(new WindowClosingAdapter());
+		setBackground(Color.lightGray);
+		setSize(300, 200);
+		setLocation(200, 100);
+		setVisible(true);
+	}
+
+	public void paint(Graphics g) {
+		if (msg1.length() > 0) {
+			draw3DRect(g, 20, 50, 250, 30);
+			g.setColor(Color.black);
+			g.drawString(msg1, 30, 70);
+		}
+		if (msg2.length() > 0) {
+			draw3DRect(g, 20, 100, 250, 30);
+			g.setColor(Color.black);
+			g.drawString(msg2, 30, 120);
+		}
+	}
+
+	void draw3DRect(Graphics g, int x, int y, int width, int height) {
+		g.setColor(Color.darkGray);
+		g.drawLine(x, y, x, y + height);
+		g.drawLine(x, y, x + width, y);
+		g.setColor(Color.white);
+		g.drawLine(x + width, y + height, x, y + height);
+		g.drawLine(x + width, y + height, x + width, y);
+	}
+
+	public void keyPressed(KeyEvent event) {
+		msg1 = "";
+		System.out.println("keyPressed "+event.getKeyCode());
+		if (event.getKeyChar() == KeyEvent.CHAR_UNDEFINED) {
+			int key = event.getKeyCode();
+			// Funktionstaste abfragen
+			if (key == KeyEvent.VK_F1) {
+				msg1 = "F1";
+			} else if (key == KeyEvent.VK_F2) {
+				msg1 = "F2";
+			} else if (key == KeyEvent.VK_F3) {
+				msg1 = "F3";
+			}
+			// Modifier abfragen
+			if (msg1.length() > 0) {
+				if (event.isAltDown()) {
+					msg1 = "ALT + " + msg1;
+				}
+				if (event.isControlDown()) {
+					msg1 = "STRG + " + msg1;
+				}
+				if (event.isShiftDown()) {
+					msg1 = "UMSCHALT + " + msg1;
+				}
+			}
+		}
+		repaint();
+	}
+
+	public void keyReleased(KeyEvent event) {
+		msg1 = "";
+		repaint();
+	}
+
+	public void keyTyped(KeyEvent event) {
+		char key = event.getKeyChar();
+		
+		System.out.println("keyTyped "+event.getKeyCode());
+		
+		if (key == KeyEvent.VK_BACK_SPACE) {
+			if (msg2.length() > 0) {
+				msg2 = msg2.substring(0, msg2.length() - 1);
+			}
+		} else if (key >= KeyEvent.VK_SPACE) {
+			if (msg2.length() < 40) {
+				msg2 += event.getKeyChar();
+			}
+		}
+		repaint();
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java b/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java
new file mode 100644
index 0000000..f1d6559
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rdc;
+
+import java.awt.event.KeyEvent;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+public class TestKeyCodesNumber extends TestCase {
+
+	private static final Logger log = Logger.getLogger(TestKeyCodesNumber.class);
+
+	@Test
+	public void testKeyCodes() {
+		try {
+
+			for (int i = 1; i < 600; i++) {
+
+				String charText = KeyEvent.getKeyText(i);
+
+				log.debug("ERROR " + i + " " + charText);
+
+			}
+
+		} catch (Exception err) {
+			log.error("[testKeyCodes]", err);
+		}
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java b/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java
new file mode 100644
index 0000000..5a9fc17
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rdc;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+public class TestReadKeyCodesNumber extends TestCase {
+
+	private static final Logger log = Logger
+			.getLogger(TestReadKeyCodesNumber.class);
+
+	@Test
+	public void testTestKeyCodesNumber() {
+		try {
+
+			this.testKeyCodes();
+
+		} catch (Exception er) {
+			log.debug("ERROR ", er);
+		}
+	}
+
+	@Test
+	public void testKeyCodes() {
+		try {
+
+		} catch (Exception err) {
+			log.error("[testKeyCodes]", err);
+		}
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java b/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
new file mode 100644
index 0000000..394bd59
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rtmp;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.red5.client.net.rtmp.ClientExceptionHandler;
+import org.red5.client.net.rtmp.INetStreamEventHandler;
+import org.red5.client.net.rtmp.RTMPClient;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.red5.server.net.rtmp.event.Notify;
+
+public class LoadTestRtmpClient extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, ClientExceptionHandler {
+
+	private class CallObject {
+		Date started;
+		Date ended;
+
+		public CallObject(Date started) {
+			super();
+			this.started = started;
+		}
+
+		public Date getStarted() {
+			return started;
+		}
+
+		public Date getEnded() {
+			return ended;
+		}
+
+		public void setEnded(Date ended) {
+			this.ended = ended;
+		}
+	}
+	
+	private int counterCalls = 0; // a call is always 2 steps
+	private Map<Integer, CallObject> calls = new HashMap<Integer, CallObject>();
+	private boolean isConnected = false;
+	private final int instanceId;
+
+	public LoadTestRtmpClient(int instanceId) {
+		this.instanceId = instanceId;
+	}
+	
+	public boolean performCall() {
+
+		// System.err.println("performCall " + isConnected);
+
+		if (!isConnected) {
+			return false;
+		}
+		
+		if (counterCalls % 2 == 0) {
+
+			if (counterCalls > 10) {
+
+				return true;
+
+			}
+
+			System.err.println("Rest o do new call " + counterCalls);
+			counterCalls++;
+
+			Map<String, Integer> map = new HashMap<String, Integer>();
+			map.put("instanceId", instanceId);
+			map.put("count", counterCalls);
+			calls.put(counterCalls, new CallObject(new Date()));
+			invoke("loadTestSyncMessage", new Object[] {"syncMessageToCurrentScopeResult", map, true }, this);
+
+		} else {
+			System.err.println("Call running " + counterCalls);
+		}
+		
+		
+		
+		return false;
+	}
+	
+	public double getAverageTime() {
+		long overallTime = 0L;
+
+		for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
+
+			long deltaTime = tCallObjectEntry.getValue().getEnded().getTime()
+					- tCallObjectEntry.getValue().getStarted().getTime();
+
+			// System.err.println("Key " + tCallObjectEntry.getKey()
+			// + "deltaTime " + deltaTime);
+
+			overallTime += deltaTime;
+
+		}
+
+		double averageTime = Long.valueOf(overallTime).doubleValue()
+				/ Integer.valueOf(calls.size()).doubleValue();
+
+		return averageTime;
+	}
+	
+	public void resultReceived(IPendingServiceCall call) {
+		String method = call == null ? null : call.getServiceMethodName();
+		System.err.println("method "+method);
+		if (method == null) {
+			return;
+		}
+		if ("connect".equals(method)) {
+			isConnected = true;
+		}
+
+		if ("loadTestSyncMessage".equals(method)) {
+
+			CallObject tCallObject = calls.get(counterCalls);
+			if (tCallObject == null) {
+
+				for (Entry<Integer, CallObject> tCallObjectEntry : calls.entrySet()) {
+
+					System.err.println("Key " + tCallObjectEntry.getKey()
+							+ "tCallObjectEntry "
+							+ tCallObjectEntry.getValue().getStarted());
+
+				}
+
+				throw new RuntimeException(
+						"tCallObject is null currentCountReturn "
+								+ counterCalls + " list size "
+								+ calls.size());
+			}
+			tCallObject.setEnded(new Date());
+			calls.put(counterCalls, tCallObject);
+
+			System.err.println("Call received " + counterCalls
+					+ " instanceId: " + instanceId);
+
+			counterCalls++;
+		}
+
+	}
+
+
+	public void onStreamEvent(Notify notify) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public int getNumberOfCalls() {
+		return calls.size();
+	}
+	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java b/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
new file mode 100644
index 0000000..392f76c
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rtmp;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SimulateLoad extends Thread {
+
+	private static final Logger log = LoggerFactory
+			.getLogger(SimulateLoad.class);
+
+	private LoadTestRtmpClient loadTestRtmpClient;
+	private boolean testRunning = true;
+
+	public double getAverageTime() {
+		return loadTestRtmpClient.getAverageTime();
+	}
+
+	public boolean isTestRunning() {
+		return testRunning;
+	}
+
+	public static void main(String... args) {
+		try {
+			if (args.length != 4) {
+				new RuntimeException(
+						"4 args needed, host, port, context, instanceId");
+			}
+			for (String arg : args) {
+				System.err.println("arg: " + arg);
+			}
+			SimulateLoad simulateLoad = new SimulateLoad(args[0], Integer
+					.valueOf(args[1]).intValue(), args[2], Integer.valueOf(
+					args[3]).intValue());
+			simulateLoad.start();
+			System.err.println("started ");
+
+		} catch (Exception er) {
+			er.printStackTrace();
+			log.error("Error", er);
+		}
+	}
+
+	public SimulateLoad(String host, int port, String applicationContext,
+			int instanceId) {
+		super();
+
+		loadTestRtmpClient = new LoadTestRtmpClient(instanceId);
+		loadTestRtmpClient.connect(host, port, applicationContext,
+				loadTestRtmpClient);
+	}
+
+	public void run() {
+		try {
+
+			System.err.println("######### start client");
+
+			while (testRunning) {
+				testRunning = !loadTestRtmpClient.performCall();
+				try {
+					Thread.sleep(200);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public int getNumberOfCalls() {
+		return loadTestRtmpClient.getNumberOfCalls();
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoadTest.java b/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoadTest.java
new file mode 100644
index 0000000..54b1e9d
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoadTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.rtmp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+public class SimulateLoadTest {
+
+	private int numberOfClients = 25;
+	private List<SimulateLoad> simulateLoadList = new ArrayList<SimulateLoad>();
+
+	private String host = "192.168.1.7";
+	private final int port = 1935;
+	private final String applicationContext = "openmeetings/1";
+
+	public SimulateLoadTest(String host, int numberOfClients) {
+		this.host = host;
+		this.numberOfClients = numberOfClients;
+	}
+
+	public static void main(String... args) {
+		if (args.length != 2) {
+			return;
+		}
+		SimulateLoadTest simulateLoadTest = new SimulateLoadTest(args[0],
+				Integer.valueOf(args[1]).intValue());
+		simulateLoadTest.test();
+	}
+
+
+	@Test
+	public void test() {
+		try {
+			for (int i = 0; i < numberOfClients; i++) {
+				SimulateLoad simulateLoad = new SimulateLoad(host, port,
+						applicationContext, i);
+				simulateLoadList.add(simulateLoad);
+				Thread.sleep(100);
+			}
+
+			System.err.println("Clients initialized");
+
+			for (SimulateLoad simulateLoad : simulateLoadList) {
+				simulateLoad.start();
+				Thread.sleep(50);
+			}
+
+			System.err.println("Clients started");
+
+			boolean running = true;
+			while (running) {
+				boolean doRunStill = false;
+				for (SimulateLoad simulateLoad : simulateLoadList) {
+					if (simulateLoad.isTestRunning()) {
+						doRunStill = true;
+						break;
+					}
+				}
+				running = doRunStill;
+				try {
+					Thread.sleep(200);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+
+			double overallTime = 0;
+
+			for (SimulateLoad simulateLoad : simulateLoadList) {
+				overallTime += simulateLoad.getAverageTime();
+				System.err.println("Number of calls: "
+						+ simulateLoad.getNumberOfCalls() + "overallTime: "
+						+ overallTime + " averageTime"
+						+ simulateLoad.getAverageTime());
+			}
+
+			double deltaAllClients = overallTime
+					/ Integer.valueOf(simulateLoadList.size()).doubleValue();
+
+			System.err.println("Average time per call: " + deltaAllClients);
+
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java b/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
new file mode 100644
index 0000000..459e42b
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
@@ -0,0 +1,232 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.selenium;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.test.AbstractSpringTest;
+import org.junit.After;
+import org.junit.Before;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.firefox.FirefoxProfile;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class AbstractTestDefaults extends AbstractSpringTest {
+	
+	@Autowired
+	private FieldLanguagesValuesDao fieldLanguagesValuesDao;
+
+	public WebDriver driver = null;
+	
+	private String BASE_URL = "http://localhost:5080/openmeetings";
+	private String username = "swagner";
+	private String userpass = "qweqwe";
+	private String orgname = "seleniumtest";
+	private String email = "selenium@openmeetings.apache.org";
+	private String locale = "en-us";
+
+
+	public String getBASE_URL() {
+		return BASE_URL;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public String getUserpass() {
+		return userpass;
+	}
+
+	public String getOrgname() {
+		return orgname;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+	
+	public Long getLanguageId() {
+		return 1L;
+	}
+	
+	public String getLocale() {
+		return locale;
+	}
+
+	// setting this to false can be handy if you run the test from inside
+	// Eclipse, the browser will not shut down after the test so you can start
+	// to diagnose the test issue
+	public boolean doTearDownAfterTest = false;
+	
+	public String getString(long id) {
+		return fieldLanguagesValuesDao.getString(id, getLanguageId());
+	}
+
+	/**
+	 * Make method overwrite possible to have custom behavior in tests
+	 * 
+	 * @return
+	 */
+	public boolean getDoTearDownAfterTest() {
+		return doTearDownAfterTest;
+	}
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		FirefoxProfile profile = new FirefoxProfile();
+		profile.setPreference("intl.accept_languages", getLocale());
+		driver = new FirefoxDriver(profile);
+	}
+
+	/**
+	 * This test is a basic test to verify the default loader mechanism works
+	 * it is not intend to be a part of any sub test
+	 * 
+	 * @throws Exception
+	 */
+	//@Test
+	public void smokeTest() throws Exception {
+		try {
+			driver.get(getBASE_URL());
+
+			testIsInstalledAndDoInstallation();
+
+			SeleniumUtils.inputText(driver, "login", getUsername());
+			SeleniumUtils.inputText(driver, "pass", getUserpass());
+
+			WebElement signInButton = SeleniumUtils.findElement(driver,
+					"//button[span[contains(text(), 'Sign in')]]", true, true);
+			signInButton.click();
+
+			SeleniumUtils.elementExists(driver,
+					"//h3[contains(text(), 'Help and support')]", true);
+		} catch (Exception e) {
+			SeleniumUtils.makeScreenShot(this.getClass().getSimpleName(), e,
+					driver);
+			throw e;
+		}
+	}
+
+	/**
+	 * Throws exception in case that test fails, so it is important to not catch 
+	 * that exception but really let the test fail!
+	 * 
+	 * @throws Exception
+	 */
+	protected void testIsInstalledAndDoInstallation() throws Exception {
+
+		WebElement wicketExtensionsWizardHeaderTitle = SeleniumUtils
+				.findElement(driver, "wicketExtensionsWizardHeaderTitle", false, true);
+		if (wicketExtensionsWizardHeaderTitle == null) {
+			return;
+		}
+		if (wicketExtensionsWizardHeaderTitle.getText()
+				.contains("Installation")) {
+			System.out.println("Do Installation");
+			doInstallation();
+		}
+
+	}
+
+	private void doInstallation() throws Exception {
+		Thread.sleep(3000L);
+
+		List<WebElement> buttons_next = SeleniumUtils.findElements(driver,
+				"buttons:next", true);
+
+		buttons_next.get(1).sendKeys(Keys.RETURN);
+
+		Thread.sleep(1000L);
+
+		SeleniumUtils.inputText(driver, "view:cfg.username", getUsername());
+		SeleniumUtils.inputText(driver, "view:cfg.password", getUserpass());
+		SeleniumUtils.inputText(driver, "view:cfg.email", getEmail());
+		SeleniumUtils.inputText(driver, "view:cfg.group", getOrgname());
+
+		buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
+
+		buttons_next.get(1).sendKeys(Keys.RETURN);
+
+		Thread.sleep(1000L);
+
+		buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
+
+		buttons_next.get(1).sendKeys(Keys.RETURN);
+
+		Thread.sleep(1000L);
+
+		buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
+
+		buttons_next.get(1).sendKeys(Keys.RETURN);
+
+		Thread.sleep(1000L);
+
+		buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
+
+		buttons_next.get(1).sendKeys(Keys.RETURN);
+
+		Thread.sleep(2000L);
+
+		List<WebElement> elements = SeleniumUtils.findElements(driver,
+				"buttons:finish", true);
+
+		elements.get(1).sendKeys(Keys.RETURN);
+
+		long maxMilliSecondsWait = 120000;
+
+		while (maxMilliSecondsWait > 0) {
+
+			// check if installation is complete by searching for the link on
+			// the success page
+			WebElement enterApplicationLink = SeleniumUtils.findElement(driver,
+					"//a[contains(@href,'install')]", false, true);
+
+			if (enterApplicationLink == null) {
+				System.out
+						.println("Installation running - wait 3 more seconds and check again");
+
+				Thread.sleep(3000L);
+				maxMilliSecondsWait -= 3000;
+			} else {
+				maxMilliSecondsWait = 0;
+
+				enterApplicationLink.click();
+
+				return;
+			}
+		}
+
+		throw new Exception("Timeout during installation");
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		if (getDoTearDownAfterTest()) {
+			driver.close();
+			driver.quit();
+		}
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/selenium/SeleniumUtils.java b/src/test/java/org/apache/openmeetings/test/selenium/SeleniumUtils.java
new file mode 100644
index 0000000..b525125
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/selenium/SeleniumUtils.java
@@ -0,0 +1,224 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.selenium;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.openqa.selenium.By;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+
+public class SeleniumUtils {
+	// we need to retry some actions because our web site is dynamic
+	static int numberOfRetries = 10;
+
+	// we need to sleep to make sure Ajax could complete whatever it does
+	static long defaultSleepInterval = 1000;
+
+	public static void inputText(WebDriver driver, String search,
+			String inputText) throws Exception {
+		WebElement element = SeleniumUtils.findElement(driver, search, true, true);
+
+		//clear text before adding input
+		element.clear();
+		
+		// Would make send to check if this element is really an input text
+		element.sendKeys(inputText);
+	}
+
+	public static void click(WebDriver driver, String search) throws Exception {
+		WebElement element = SeleniumUtils.findElement(driver, search, true, true);
+		element.click();
+	}
+	
+	/**
+	 * 
+	 * @param driver
+	 * @param search
+	 * @param throwException
+	 *            under some circumstance you do't want to exit the test here
+	 * @return
+	 * @throws Exception
+	 */
+	public static List<WebElement> findElements(WebDriver driver, String search,
+			boolean throwException) throws Exception {
+		for (int i = 0; i < numberOfRetries; i++) {
+			List<WebElement> elements = _findElement(driver, search);
+			if (elements != null) {
+				return elements;
+			}
+
+			Thread.sleep(defaultSleepInterval);
+		}
+
+		if (throwException) {
+			throw new Exception("Could not find element with specified path "
+					+ search);
+		}
+
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param driver
+	 * @param search
+	 * @param throwException
+	 *            under some circumstance you do't want to exit the test here
+	 * @param onlyReturnVisisbleElement TODO
+	 * @return
+	 * @throws Exception
+	 */
+	public static WebElement findElement(WebDriver driver, String search,
+			boolean throwException, boolean onlyReturnVisisbleElement) throws Exception {
+		for (int i = 0; i < numberOfRetries; i++) {
+			List<WebElement> elements = _findElement(driver, search);
+			if (elements != null) {
+				
+				if (!onlyReturnVisisbleElement) {
+					return elements.get(0);
+				}
+				
+				for (WebElement element : elements) {
+					if (element.isDisplayed()) {
+						return element;
+					}
+				}
+				
+			}
+
+			Thread.sleep(defaultSleepInterval);
+		}
+
+		if (throwException) {
+			throw new Exception("Could not find element with specified path "
+					+ search);
+		}
+
+		return null;
+	}
+
+	private static By[] _getSearchArray(String search) {
+		//If xpath we have to use it, if xpath is used with By.className(...) there will be an exception
+		if (search.startsWith("//")) {
+			return new By[] { By.xpath(search) };
+		} else {
+			return new By[] { By.id(search), By.name(search), By.className(search),
+					By.tagName(search), By.xpath(search) };
+		}
+	}
+
+	private static List<WebElement> _findElement(WebDriver driver, String search) {
+		for (By by : _getSearchArray(search)) {
+			try {
+				List<WebElement> elements = driver.findElements(by);
+				if (elements != null && elements.size() > 0) {
+					return elements;
+				}
+			} catch (Exception e) {
+				// Do not show any warnings
+			}
+		}
+		return null;
+	}
+
+	public static void elementExists(WebDriver driver, String search,
+			boolean shouldExist) throws Exception {
+		Thread.sleep(defaultSleepInterval);
+
+		boolean doesExist = !shouldExist;
+
+		for (int i = 0; i < numberOfRetries; i++) {
+			doesExist = checkExists(driver, search);
+			if (doesExist == shouldExist) {
+				break;
+			}
+
+			Thread.sleep(defaultSleepInterval);
+		}
+
+		if (doesExist != shouldExist) {
+			if (shouldExist) {
+				throw new Exception("Element could not be found: " + search);
+			} else {
+				throw new Exception("Unexpected Element was found: " + search);
+			}
+		}
+	}
+
+	private static boolean checkExists(WebDriver driver, String search) {
+		for (By by : _getSearchArray(search)) {
+			try {
+				List<WebElement> element = driver.findElements(by);
+				if (element.size() > 0) {
+					return true;
+				}
+			} catch (Exception e) {
+				// Do not show any warnings
+			}
+		}
+		return false;
+	}
+
+	public static void makeScreenShot(String testName, Exception e,
+			WebDriver driver) {
+		try {
+			DateFormat df = new SimpleDateFormat("MM-dd-yyyy_HH-mm-ss");
+			String fileName = e.getMessage().replace(" ", "_");
+			fileName = fileName.replaceAll("(\r\n|\n)", "");
+			fileName = fileName.replaceAll("/", "");
+
+			if (fileName.length() > 100) {
+				fileName = fileName.substring(0, 100);
+			}
+
+			fileName = fileName + "_" + df.format(new Date()) + ".png";
+			File screenShotFile = ((TakesScreenshot) driver)
+					.getScreenshotAs(OutputType.FILE);
+
+			String path = "." + File.separatorChar + "build"
+					+ File.separatorChar + "screenshots" + File.separatorChar
+					+ testName;
+
+			File screenshotFolder = new File(path);
+			if (!screenshotFolder.exists()) {
+				screenshotFolder.mkdirs();
+			}
+
+			System.out.println("screenshot copy from: "
+					+ screenShotFile.getAbsolutePath());
+			System.out.println("Length Filename: " + fileName.length()
+					+ " - Writing screenshot to: " + path + File.separatorChar
+					+ fileName);
+
+			FileUtils.moveFile(screenShotFile, new File(path
+					+ File.separatorChar + fileName));
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java b/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
new file mode 100644
index 0000000..0a0a5d5
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/selenium/TestSignUp.java
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.selenium;
+
+import java.util.Date;
+
+import org.junit.Test;
+import org.openqa.selenium.Alert;
+import org.openqa.selenium.WebElement;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+
+public class TestSignUp extends AbstractTestDefaults {
+	
+	String pass = "pass";
+	
+	@Override
+	public boolean getDoTearDownAfterTest() {
+		return false;
+	}
+
+	@Test
+	public void testSignUp() throws Exception {
+		
+		try {
+			driver.get(getBASE_URL());
+			
+			String currentRandomCounter = "" + ((new Date().getTime())/1000);
+			String userName = "seba" + currentRandomCounter;
+			String email = "hans." + currentRandomCounter + "@openmeetings.apache.org";
+			
+			super.testIsInstalledAndDoInstallation();
+			
+			WebElement signUpButton = SeleniumUtils.findElement(driver,
+					"//button[span[contains(text(), '" + getString(123) + "')]]", true, true);
+			signUpButton.click();
+			
+			// ##################################
+			// Test validation message for passwords to be identical
+			// ##################################
+			doSignUp("Hans","Muster", userName, "pw", "pw2", email);
+			
+			//Find Error label-id 232 "Please enter two identical passwords"
+			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(232) + "')]", true, true);
+			
+			
+			// ##################################
+			// Sign up with user and sign in
+			// ##################################
+			doSignUp("Hans","Muster", userName, pass, pass, email);
+			
+			
+			//Check for popup with success message and email to check
+			//Labelid 674
+			SeleniumUtils.findElement(driver, "//span[contains(text(), '" + getString(674) + "')]", true, true);
+			
+			//click button to close popup
+			WebElement signUpSucessPopUpOkButton = SeleniumUtils.findElement(driver,
+					"//button[span[contains(text(), '" + DialogButtons.OK.toString() + "')]]", true, true);
+			signUpSucessPopUpOkButton.click();
+			
+			//Login with user
+			SeleniumUtils.inputText(driver, "login", userName);
+			SeleniumUtils.inputText(driver, "pass", pass);
+	
+			//click labelid 112 "Sign In"
+			WebElement signInButton = SeleniumUtils.findElement(driver,
+					"//button[span[contains(text(), '" + getString(112) + "')]]", true, true);
+			signInButton.click();
+	
+			// check for some text in dashbaord, labelid 281, "Help and support"
+			SeleniumUtils.elementExists(driver,
+					"//h3[contains(text(), '" + getString(281) + "')]", true);
+			
+			//sign out
+			WebElement signOutLink = SeleniumUtils.findElement(driver,
+					"//a[contains(text(), '" + getString(310) + "')]", true, true);
+			signOutLink.click();
+			
+			Alert alert = driver.switchTo().alert();
+			alert.accept();
+			
+			// ##################################
+			// Sign up with same user and email and check duplicate messages
+			// ##################################
+			
+			signUpButton = SeleniumUtils.findElement(driver,
+					"//button[span[contains(text(), '" + getString(123) + "')]]", true, true);
+			signUpButton.click();
+			
+			doSignUp("Hans","Muster", userName, pass, pass, email);
+			
+			//Find Error label-id 105, The username is already used
+			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(105) + "')]", true, true);
+			
+			//Find Error label-id 1000, This email is already used by another user.
+			SeleniumUtils.findElement(driver, "//span[@class='feedbackPanelERROR'][contains(text(), '" + getString(1000) + "')]", true, true);
+		} catch (Exception e) {
+			SeleniumUtils.makeScreenShot(this.getClass().getSimpleName(), e,
+					driver);
+			throw e;
+		}	
+	}
+	
+	private void doSignUp(String firstName, String lastName, String login, String password,
+					String confirmPassword, String email) throws Exception {
+		
+		SeleniumUtils.inputText(driver, "firstName", firstName);
+		SeleniumUtils.inputText(driver, "lastName", lastName);
+		SeleniumUtils.inputText(driver, "//input[@name='login']", login);
+		SeleniumUtils.inputText(driver, "password", password);
+		SeleniumUtils.inputText(driver, "confirmPassword", confirmPassword);
+		SeleniumUtils.inputText(driver, "email", email);
+		
+		WebElement submitButton = SeleniumUtils.findElement(driver,
+				"//button[span[contains(text(), 'Register')]]", true, true);
+		submitButton.click();
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/session/TestDbSession.java b/src/test/java/org/apache/openmeetings/test/session/TestDbSession.java
new file mode 100644
index 0000000..7045307
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/session/TestDbSession.java
@@ -0,0 +1,198 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.session;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.ClientDao;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDbSession extends AbstractJUnitDefaults {
+
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			TestDbSession.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ServerDao serverDao;
+
+	@Autowired
+	private ClientDao clientDao;
+
+	@Test
+	public void testDbSessionFunctions() {
+
+		clientDao.cleanAllClients();
+		
+		List<Server> serverList = serverDao.getActiveServers();
+
+		Server server = null;
+		if (serverList.size() > 0) {
+			server = serverList.get(0);
+		} else {
+			server = new Server();
+			server.setName("Test Server");
+			server.setActive(true);
+			serverDao.update(server, null);
+		}
+
+		Client cl1 = new Client();
+		cl1.setStreamid("1");
+		cl1.setServer(null);
+		cl1.setUser_id(1L);
+		cl1.setRoom_id(1L);
+		cl1.setPublicSID("public1");
+		clientDao.add(cl1);
+
+		Client cl2 = new Client();
+		cl2.setStreamid("2");
+		cl2.setServer(null);
+		cl2.setRoom_id(1L);
+		cl2.setUser_id(2L);
+		cl2.setPublicSID("public2");
+		clientDao.add(cl2);
+
+		Client cl3 = new Client();
+		cl3.setStreamid("3");
+		cl3.setServer(server);
+		cl3.setRoom_id(3L);
+		cl3.setUser_id(3L);
+		cl3.setPublicSID("public3");
+		clientDao.add(cl3);
+		
+		Client clTest = clientDao.getClientByServerAndStreamId(null, "1");
+
+		log.debug("cl1 " + cl1);
+		log.debug("clTest " + clTest);
+
+		assertEquals(clTest.getId(), cl1.getId());
+
+		Client clTest3 = clientDao.getClientByServerAndStreamId(server, "3");
+
+		log.debug("cl3 " + cl3);
+		log.debug("clTest3 " + clTest3);
+
+		assertEquals(clTest3.getId(), cl3.getId());
+
+		Client clTest_NOT_3 = clientDao.getClientByServerAndStreamId(null, "3");
+
+		log.debug("clTest_NOT_3 " + clTest_NOT_3);
+		assertEquals(null, clTest_NOT_3);
+		
+		long numberOfClients1 = clientDao.countClientsByServerAndStreamId(null, "1");
+		assertEquals(1, numberOfClients1);
+		
+		long numberOfClients3 = clientDao.countClientsByServerAndStreamId(server, "3");
+		assertEquals(1, numberOfClients3);
+		
+		long numberOfClients4 = clientDao.countClientsByServerAndStreamId(null, "3");
+		assertEquals(0, numberOfClients4);
+		
+		List<Client> clTest_Pub_1_list = clientDao.getClientsByPublicSIDAndServer(null, "public1");
+		assertEquals(cl1.getId(), clTest_Pub_1_list.get(0).getId());
+		
+		List<Client> clTest_Pub_3_list = clientDao.getClientsByPublicSIDAndServer(server, "public3");
+		assertEquals(cl3.getId(), clTest_Pub_3_list.get(0).getId());
+		
+		List<Client> clTest_Fail_list = clientDao.getClientsByPublicSIDAndServer(null, "public3");
+		assertEquals(0, clTest_Fail_list.size());
+		
+		List<Client> clTest_PubAll_1_list = clientDao.getClientsByPublicSID("public1");
+		assertEquals(cl1.getId(), clTest_PubAll_1_list.get(0).getId());
+		
+		List<Client> clTest_PubAll_3_list = clientDao.getClientsByPublicSID("public3");
+		assertEquals(cl3.getId(), clTest_PubAll_3_list.get(0).getId());
+		
+		List<Client> clTest_FailAll_list = clientDao.getClientsByPublicSID("public4");
+		assertEquals(0, clTest_FailAll_list.size());
+		
+		List<Client> clientsByServerNull = clientDao.getClientsByServer(null);
+		assertEquals(2, clientsByServerNull.size());
+		
+		List<Client> clientsByServer = clientDao.getClientsByServer(server);
+		assertEquals(1, clientsByServer.size());
+		
+		List<Client> clientsAll = clientDao.getClients();
+		assertEquals(3, clientsAll.size());
+		
+		//by userid
+		List<Client> clTest_User_1_list = clientDao.getClientsByUserId(null, 1L);
+		assertEquals(cl1.getId(), clTest_User_1_list.get(0).getId());
+		
+		List<Client> clTest_User_3_list = clientDao.getClientsByUserId(server, 3L);
+		assertEquals(cl3.getId(), clTest_User_3_list.get(0).getId());
+		
+		List<Client> clTest_UserFail_list = clientDao.getClientsByUserId(null, 3L);
+		assertEquals(0, clTest_UserFail_list.size());
+		
+		//by roomid
+		List<Client> clTest_Room_1_list = clientDao.getClientsByRoomId(1L);
+		assertEquals(2, clTest_Room_1_list.size());
+		
+		List<Client> clTest_Room_3_list = clientDao.getClientsByRoomId(3L);
+		assertEquals(cl3.getId(), clTest_Room_3_list.get(0).getId());
+		
+		List<Client> clTest_RoomFail_list = clientDao.getClientsByRoomId(2L);
+		assertEquals(0, clTest_RoomFail_list.size());
+		
+		//count all
+		int countAll = clientDao.countClients();
+		assertEquals(3, countAll);
+		
+		//count by server
+		int clTest_Count_1_list = clientDao.countClientsByServer(null);
+		assertEquals(2, clTest_Count_1_list);
+		
+		int clTest_Count_3_list = clientDao.countClientsByServer(server);
+		assertEquals(1, clTest_Count_3_list);
+		
+		//remove by id
+		clientDao.delete(cl1);
+		
+		int clTest_Count_Delete_list = clientDao.countClientsByServer(null);
+		assertEquals(1, clTest_Count_Delete_list);
+		
+		//remove by server and streamid
+		clientDao.removeClientByServerAndStreamId(null, "2");
+		
+		clTest_Count_Delete_list = clientDao.countClientsByServer(null);
+		assertEquals(0, clTest_Count_Delete_list);
+		
+		clientDao.removeClientByServerAndStreamId(server, "3");
+		
+		clTest_Count_Delete_list = clientDao.countClientsByServer(server);
+		assertEquals(0, clTest_Count_Delete_list);
+		
+		//delete all
+		clientDao.cleanAllClients();
+
+		countAll = clientDao.countClients();
+		assertEquals(0, countAll);
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/session/TestDbSessionGetRoomIds.java b/src/test/java/org/apache/openmeetings/test/session/TestDbSessionGetRoomIds.java
new file mode 100644
index 0000000..0d92e73
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/session/TestDbSessionGetRoomIds.java
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.session;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.ClientDao;
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestDbSessionGetRoomIds extends AbstractJUnitDefaults {
+
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			TestDbSessionGetRoomIds.class, OpenmeetingsVariables.webAppRootKey);
+
+	@Autowired
+	private ServerDao serverDao;
+
+	@Autowired
+	private ClientDao clientDao;
+
+	@Test
+	public void testDbSessionFunctions() {
+
+		clientDao.cleanAllClients();
+		
+		List<Server> serverList = serverDao.getActiveServers();
+
+		Server server = null;
+		if (serverList.size() > 0) {
+			server = serverList.get(0);
+		} else {
+			server = new Server();
+			server.setName("Test Server");
+			server.setActive(true);
+			serverDao.update(server, null);
+		}
+
+		Client cl1 = new Client();
+		cl1.setStreamid("1");
+		cl1.setServer(server);
+		cl1.setUser_id(1L);
+		cl1.setRoom_id(1L);
+		cl1.setPublicSID("public1");
+		clientDao.add(cl1);
+
+		Client cl2 = new Client();
+		cl2.setStreamid("2");
+		cl2.setServer(server);
+		cl2.setRoom_id(1L);
+		cl2.setUser_id(2L);
+		cl2.setPublicSID("public2");
+		clientDao.add(cl2);
+
+		Client cl3 = new Client();
+		cl3.setStreamid("3");
+		cl3.setServer(server);
+		cl3.setRoom_id(3L);
+		cl3.setUser_id(3L);
+		cl3.setPublicSID("public3");
+		clientDao.add(cl3);
+		
+		List<Long> roomids = clientDao.getRoomsIdsByServer(server);
+
+		assertEquals(2, roomids.size());
+		
+		//delete all
+		clientDao.cleanAllClients();
+
+		int countAll = clientDao.countClients();
+		assertEquals(0, countAll);
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java b/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
new file mode 100644
index 0000000..45e17ef
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/session/TestHashMapSession.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.session;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Random;
+
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.session.store.HashMapStore;
+import org.apache.openmeetings.session.store.IClientPersistenceStore;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestHashMapSession extends AbstractJUnitDefaults {
+	
+	protected static final Logger log = Red5LoggerFactory.getLogger(
+			TestHashMapSession.class, OpenmeetingsVariables.webAppRootKey);
+	
+	@Autowired
+	private HashMapStore cache;
+	
+	@Test
+	public void testHashMapSession() {
+		
+		//make sure the cache is empty before starting the test
+		cache.clearCache();
+		
+		for (int i=0;i<20;i++) {
+			
+			String streamId = ""+i;
+			
+			Client rcm = new Client();
+			rcm.setConnectedSince(new Date());
+			rcm.setStreamid(streamId);
+			rcm.setScope("scopeName");
+			long random = System.currentTimeMillis() + new BigInteger(256, new Random()).longValue();
+			
+			rcm.setPublicSID(ManageCryptStyle.getInstanceOfCrypt()
+					.createPassPhrase(String.valueOf(random).toString()));
+
+			rcm.setUserport(0);
+			rcm.setUserip("remoteAddress");
+			rcm.setSwfurl("swfUrl");
+			rcm.setIsMod(new Boolean(false));
+			rcm.setCanDraw(new Boolean(false));
+			rcm.setIsAVClient(false);
+
+			if (cache.containsKey(null, streamId)) {
+				log.error("Tried to add an existing Client " + streamId);
+				break;
+			}
+
+			cache.put(rcm.getStreamid(), rcm);
+			
+			cache.remove(null, streamId);
+		
+		}
+		
+		String logString = cache.getDebugInformation(Arrays.asList(IClientPersistenceStore.DEBUG_DETAILS.SIZE));
+		
+		
+		log.debug("######## \n\r "+ logString + " \n\r ########");
+		
+		assertEquals(0, cache.size());
+		
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java b/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java
new file mode 100644
index 0000000..6a70378
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/smoke/TestSmokeBasic.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.smoke;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestSmokeBasic extends AbstractJUnitDefaults {
+	@Autowired
+	private UserDao userDao;
+	
+	@Test
+	public void createErrorValueAndTest() {
+        assertNotNull(userDao.get(1L));
+	}	
+}
diff --git a/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java b/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java
new file mode 100644
index 0000000..ef1a003
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java
@@ -0,0 +1,129 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.Properties;
+
+import javax.activation.DataHandler;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.mail.util.ByteArrayDataSource;
+
+import org.apache.openmeetings.util.mail.SmtpAuthenticator;
+import org.junit.Test;
+
+import com.sun.mail.util.MailSSLSocketFactory;
+
+/**
+ * 
+ * @author swagner
+ *
+ */
+public class TestMailSending {
+	
+	//Example GMail email server data
+	private String smtpServer = "smtp.gmail.com";
+	private String smtpPort = "25";
+	private String from = "test@apache.org";
+	private String mailAuthUser = "test@gmail.com";
+	private String mailAuthPass = "*******";
+	private boolean mailTls = true;
+
+	/**
+	 * @Test
+	 * 
+	 * It does not make a lot of send to test this in every test suite, it is more for manual testing.
+	 * Handy to check your server and the JavaMail setting properties
+	 * 
+	 */
+	@Test
+	public void doTestSendEmail() {
+		try{
+			
+			Transport.send(getMimeMessage());
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+		assertTrue(true);
+	}
+	
+	private MimeMessage getMimeMessage() throws Exception {
+		// Building MimeMessage
+		MimeMessage msg = getBasicMimeMessage();
+		msg.setSubject("getSubject()");
+		msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse("seba.wagner@gmail.com", false));
+		
+		return appendBody(msg);
+	}
+	
+	private MimeMessage appendBody(MimeMessage msg) throws MessagingException, IOException {
+		// -- Set the subject and body text --
+		msg.setDataHandler(new DataHandler(new ByteArrayDataSource("getBody", "text/html; charset=\"utf-8\"")));
+
+		// -- Set some other header information --
+		msg.setHeader("X-Mailer", "XML-Mail");
+		msg.setSentDate(new Date());
+		
+		return msg;
+	}
+	
+	private MimeMessage getBasicMimeMessage() throws Exception {
+		System.out.println("getBasicMimeMessage");
+		Properties props = new Properties(System.getProperties());
+
+		props.put("mail.smtp.connectiontimeout", 30000); //default timeout is 30 seconds, javaMail default is "infinite"
+		props.put("mail.smtp.timeout", 30000); //default timeout is 30 seconds, javaMail default is "infinite"
+		
+		props.put("mail.smtp.host", smtpServer);
+		props.put("mail.smtp.port", smtpPort);
+		
+		if (mailTls) {
+			props.put("mail.smtp.starttls.enable", "true");
+			MailSSLSocketFactory sf = new MailSSLSocketFactory();
+		    sf.setTrustAllHosts(true);
+		    props.put("mail.smtp.ssl.socketFactory", sf);
+		}
+
+		// Check for Authentication
+		Session session = null;
+		if (mailAuthUser != null && mailAuthUser.length() > 0
+				&& mailAuthPass != null && mailAuthPass.length() > 0) {
+			// use SMTP Authentication
+			props.put("mail.smtp.auth", "true");
+			session = Session.getInstance(props, new SmtpAuthenticator(mailAuthUser, mailAuthPass));
+		} else {
+			// not use SMTP Authentication
+			session = Session.getInstance(props, null);
+		}
+
+		// Building MimeMessage
+		MimeMessage msg = new MimeMessage(session);
+		msg.setFrom(new InternetAddress(from));
+		return msg;
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/user/TestStateToLower.java b/src/test/java/org/apache/openmeetings/test/user/TestStateToLower.java
new file mode 100644
index 0000000..290387f
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/user/TestStateToLower.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestStateToLower extends AbstractJUnitDefaults {
+	
+	@Autowired
+	private StateDao stateDao;
+	
+	@Test
+	public void doTestQuery() {
+		
+		State state_alabania = stateDao.getStateByName("Albania");
+		
+		State state_alabania_lower = stateDao.getStateByName("albaNia");
+		
+		assertTrue(state_alabania != null);
+		assertTrue(state_alabania_lower != null);
+		assertTrue(state_alabania.getState_id().equals(3L));
+		assertTrue(state_alabania_lower.getState_id().equals(3L));
+		assertTrue(state_alabania.getState_id().equals(state_alabania_lower.getState_id()));
+		
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java b/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
new file mode 100644
index 0000000..06a6675
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/user/TestUserContact.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Random;
+
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserContact extends AbstractWicketTester {
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private OrganisationDao orgDao;
+	Random random = new Random();
+	
+	@Test
+	public void testGetUser() throws Exception {
+		assertNull("Null should be returned in case User does not exist", userDao.get(Long.MAX_VALUE));
+	}
+	
+	@Test
+	public void createUserWithOrganisation() throws Exception {
+		int rnd = random.nextInt();
+		User u = getUser(rnd);
+		u.getOrganisation_users().add(new Organisation_Users(orgDao.get(1L)));
+		u = userDao.update(u, null);
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getUser_id(), "pass" + rnd));
+		
+		User u1 = userDao.get(u.getUser_id());
+		assertNotNull("Just created user should not be null", u1);
+		assertNotNull("Just created user should have non null org-users", u1.getOrganisation_users());
+		assertFalse("Just created user should have not empty org-users", u1.getOrganisation_users().isEmpty());
+	}
+	
+	@Test
+	public void createUser() throws Exception {
+		int rnd = random.nextInt();
+		User u = createUser(rnd);
+		assertTrue("Password should be set as expected", userDao.verifyPassword(u.getUser_id(), "pass" + rnd));
+	}
+	
+	@Test
+	public void addContactByOwner() throws Exception {
+		login(null, null);
+		
+		List<User> users = userDao.getAllUsers();
+		assertNotNull("User list should not be null ", users);
+		assertFalse("User list should not be empty ", users.isEmpty());
+		
+		User contact = createUserContact(random.nextInt(), getUserId());
+		String email = contact.getAdresses().getEmail();
+		List<User> l = userDao.get(email, false, 0, 9999);
+		// check that contact is visible for admin
+		assertNotNull("Contact list should not be null for admin ", l);
+		assertFalse("Contact list should not be empty for admin ", l.isEmpty());
+		
+		// check that contact is visible for owner
+		l = userDao.get(email, 0, 9999, null, true, getUserId());
+		assertTrue("Contact list should not be empty for owner ", !l.isEmpty());		
+		//delete contact
+		userDao.delete(contact, getUserId());
+		l = userDao.get(email, false, 0, 9999);
+		assertTrue("Contact list should be empty after deletion", l.isEmpty());
+
+		User u = createUser(random.nextInt());
+		User u1 = createUser(random.nextInt());
+		contact = createUserContact(random.nextInt(), u.getUser_id());
+		email = contact.getAdresses().getEmail();
+		// check that contact is not visible for user that is not owner of this contact
+		l = userDao.get(email, 0, 9999, null, true, u1.getUser_id());
+		assertTrue("Contact list should be empty for another user", l.isEmpty());
+		//delete contact
+		userDao.delete(contact, u.getUser_id());
+		l = userDao.get(email, false, 0, 9999);
+		assertTrue("Contact list should be empty after deletion", l.isEmpty());
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java b/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
new file mode 100644
index 0000000..396356d
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/user/TestUserCount.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Random;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserCount extends AbstractWicketTester {
+	@Autowired
+	private UserDao userDao;
+	Random random = new Random();
+
+	@Test
+	public void testCountSearchUsres() throws Exception {
+		User u = createUser(random.nextInt());
+		assertTrue("Account of search users should be one", userDao.count(u.getFirstname()) == 1);
+	}
+
+	@Test
+	public void testCountFilteredUsres() throws Exception {
+		User u = createUser(random.nextInt());
+		User contact = createUserContact(random.nextInt(), u.getUser_id());
+		assertTrue("Account of filtered user should be one", userDao.count(contact.getFirstname(), true, u.getUser_id()) == 1);
+	}
+
+	@Test
+	public void testCountUnfilteredUsres() throws Exception {
+		User u = createUser(random.nextInt());
+		createUserContact(random.nextInt(), u.getUser_id());
+		assertTrue("Account of unfiltered should be more then one", userDao.count("firstname", false, getUserId()) > 1);
+	}
+		
+	@Test
+	public void testCountAllUsres() throws Exception {
+		assertTrue("Account of users should be positive", userDao.count() > 0);
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java b/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java
new file mode 100644
index 0000000..3aa13d8
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/user/TestUserOrganisation.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.user;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestUserOrganisation extends AbstractJUnitDefaults {
+	@Autowired
+	private OrganisationUserDao orgUserDao;
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private UserDao usersDao;
+	public static final String ORG_NAME = "Test Org";
+	
+	private User getValidUser() {
+		for (User u : usersDao.getAllBackupUsers()) {
+			if (!u.getDeleted() && u.getOrganisation_users().size() > 0) {
+				return u;
+			}
+		}
+		fail("Unable to find valid user");
+		return null;  //unreachable
+	}
+	
+	@Test
+	public void getUsersByOrganisationId() {
+		User u = getValidUser();
+		Long orgId = u.getOrganisation_users().get(0).getOrganisation().getOrganisation_id();
+		List<Organisation_Users> ul = orgUserDao.get(orgId, 0, 9999);
+		assertTrue("Default Organisation should contain at least 1 user: " + ul.size(), ul.size() > 0);
+		
+		Organisation_Users ou = orgUserDao.getByOrganizationAndUser(orgId, u.getUser_id());
+		assertNotNull("Unable to found [organisation, user] pair - [" + orgId + "," + u.getUser_id() + "]", ou);
+	}
+	
+	@Test
+	public void addOrganisation() {
+		Organisation o = new Organisation();
+		o.setName(ORG_NAME);
+		Long orgId = orgDao.update(o, null).getOrganisation_id(); //inserted by not checked
+		assertNotNull("New Organisation have valid id", orgId);
+		
+		List<Organisation_Users> ul = orgUserDao.get(orgId, 0, 9999);
+		assertTrue("New Organisation should contain NO users: " + ul.size(), ul.size() == 0);
+	}
+}
diff --git a/src/test/java/org/apache/openmeetings/test/userdata/TestAuth.java b/src/test/java/org/apache/openmeetings/test/userdata/TestAuth.java
new file mode 100644
index 0000000..3ffc241
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/userdata/TestAuth.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.userdata;
+
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.remote.MainService;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestAuth extends AbstractJUnitDefaults {
+	@Autowired
+	private MainService mService;
+
+	@Test
+	public void testTestAuth() {
+		Sessiondata sessionData = mService.getsessiondata();
+
+		System.out.println("sessionData: " + sessionData.getSession_id());
+
+		String tTemp = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase("test");
+
+		System.out.println("tTemp: " + tTemp);
+
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java b/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java
new file mode 100644
index 0000000..3087c29
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/userdata/TestLogin.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.userdata;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.test.AbstractJUnitDefaults;
+import org.apache.openmeetings.util.OmException;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestLogin extends AbstractJUnitDefaults {
+	
+	@Autowired
+	private UserDao userDao;
+
+	@Test
+	public void testTestLogin() throws OmException {
+		User us = userDao.login(username, userpass);
+		
+		assertNotNull("User is unable to login", us);
+		
+		//mService.getLanguageById(1);
+		
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java b/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java
new file mode 100644
index 0000000..141ee3f
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.userdata;
+
+import junit.framework.TestCase;
+
+import org.junit.Test;
+
+public class TestMD5 extends TestCase {
+	
+	@Test
+	public void testTestMD5(){
+		
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/web/LoginUI.java b/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
new file mode 100644
index 0000000..51324cf
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/web/LoginUI.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.web;
+
+import org.apache.openmeetings.test.AbstractWicketTester;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.pages.auth.SignInPage;
+import org.apache.wicket.util.tester.FormTester;
+
+public class LoginUI extends AbstractWicketTester {
+
+        //@Test Needs to much memory to start this test, and there is nothing useful here inside other then some basic
+        //proof of concept (basically the concept failed)
+	public void testLoginUi() {
+		
+		tester.startPage(MainPage.class);
+		
+		tester.assertRenderedPage(SignInPage.class);
+		
+		FormTester formTester = tester.newFormTester("signin:signin");
+		formTester.setValue("login", username);
+		formTester.setValue("pass", userpass);
+		
+		//How to reference specific buttons in Wicket jQuery UI ?!
+		
+		formTester.submit();
+		
+		System.err.println("getLastRenderedPage: "+ tester.getLastRenderedPage().getMarkup().toString());
+		
+		//will fail
+		//tester.assertComponent("dashboard", DashboardPanel.class);
+		
+	}
+	
+}
+
diff --git a/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java b/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java
new file mode 100644
index 0000000..253b155
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/xsd/GenerateConfigXsd.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.xsd;
+
+import java.io.File;
+
+import com.thaiopensource.relaxng.translate.Driver;
+
+public class GenerateConfigXsd {
+	
+	public static void main(String... args) {
+		new GenerateConfigXsd();
+	}
+	
+	public GenerateConfigXsd() {
+		try {
+			
+			String[] args = { 
+				"src/main/webapp"+File.separatorChar+"openmeetings"+File.separatorChar+"public"+File.separatorChar+"config.xml",
+				"src/main/webapp"+File.separatorChar+"openmeetings"+File.separatorChar+"public"+File.separatorChar+"config.xsd"
+			};
+			
+			Driver.main(args);
+			
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+
+}
diff --git a/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java b/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java
new file mode 100644
index 0000000..e73d6b6
--- /dev/null
+++ b/src/test/java/org/apache/openmeetings/test/xsd/GenerateWebsiteXsd.java
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.test.xsd;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.thaiopensource.relaxng.translate.Driver;
+
+public class GenerateWebsiteXsd {
+
+	private static String WEBSITE_ROOT_DIR = "xdocs";
+
+	public static void main(String... args) {
+		new GenerateWebsiteXsd();
+	}
+
+	public GenerateWebsiteXsd() {
+		try {
+
+			File curentDir = new File(WEBSITE_ROOT_DIR);
+
+			System.err.println(curentDir.getAbsolutePath());
+
+			// Get all XML Files of this Folder
+			FilenameFilter ff = new FilenameFilter() {
+				public boolean accept(File b, String name) {
+					File f = new File(b, name);
+					return f.getName().contains(".xml");
+				}
+			};
+
+			String[] allfiles = curentDir.list(ff);
+
+			System.err.println("allfiles LENGTH " + allfiles.length);
+
+			List<String> allfilesPlusXSD = new ArrayList<String>();
+
+			for (String fileName : allfiles) {
+				allfilesPlusXSD.add(WEBSITE_ROOT_DIR + File.separatorChar
+						+ fileName);
+			}
+
+			allfilesPlusXSD.add(WEBSITE_ROOT_DIR + File.separatorChar
+					+ "website.xsd");
+
+			for (String fileName : allfilesPlusXSD) {
+				System.err.println(fileName);
+			}
+
+			Driver.main(allfilesPlusXSD.toArray(new String[0]));
+
+		} catch (Exception err) {
+			err.printStackTrace();
+		}
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java b/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java
new file mode 100644
index 0000000..1601290
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/AuthLevelUtil.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Set;
+
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class AuthLevelUtil {
+	private static final Logger log = Red5LoggerFactory.getLogger(AuthLevelUtil.class, webAppRootKey);
+	
+	private static boolean check(Set<Right> rights, Right level) {
+		boolean result = rights.contains(level);
+		log.debug(String.format("Level %s :: %s", level, result ? "[GRANTED]" : "[DENIED]"));
+		return result;
+	}
+	
+	public static boolean hasUserLevel(Set<Right> rights) {
+		return check(rights, Right.Room);
+	}
+
+	public static boolean hasModLevel(User u, Long orgId) {
+		boolean result = hasAdminLevel(u.getRights());
+		if (!result && orgId != null) {
+			for (Organisation_Users ou : u.getOrganisation_users()) {
+				if (orgId.equals(ou.getOrganisation().getOrganisation_id())) {
+					if (Boolean.TRUE.equals(ou.getIsModerator())) {
+						result = true;
+					}
+					break;
+				}
+			}
+		}
+		return result;
+	}
+
+	public static boolean hasAdminLevel(Set<Right> rights) {
+		return check(rights, Right.Admin);
+	}
+
+	public static boolean hasWebServiceLevel(Set<Right> rights) {
+		return check(rights, Right.Soap);
+	}
+
+	public static boolean hasLoginLevel(Set<Right> rights) {
+		return check(rights, Right.Login);
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/CalendarPatterns.java b/src/util/java/org/apache/openmeetings/util/CalendarPatterns.java
new file mode 100644
index 0000000..4986c3a
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/CalendarPatterns.java
@@ -0,0 +1,213 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * @author Sebastian Wagner 27.08.2005 - 19:24:25
+ *
+ */
+public class CalendarPatterns {
+	private static final Logger log = Red5LoggerFactory.getLogger(CalendarPatterns.class, webAppRootKey);
+
+	public static ThreadLocal<SimpleDateFormat> dateFormat__ddMMyyyyHHmmss = new ThreadLocal<SimpleDateFormat>() {
+		protected SimpleDateFormat initialValue() {
+			return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
+		};
+	};
+	public static ThreadLocal<SimpleDateFormat> dateFormat__ddMMyyyy = new ThreadLocal<SimpleDateFormat>() {
+		protected SimpleDateFormat initialValue() {
+			return new SimpleDateFormat("dd.MM.yyyy");
+		};
+	};
+	public static ThreadLocal<SimpleDateFormat> dateFormat__ddMMyyyyBySeparator = new ThreadLocal<SimpleDateFormat>() {
+		protected SimpleDateFormat initialValue() {
+			return new SimpleDateFormat("dd-MM-yyyy");
+		};
+	};
+	public static ThreadLocal<SimpleDateFormat> dateFormat__yyyyMMddHHmmss = new ThreadLocal<SimpleDateFormat>() {
+		protected SimpleDateFormat initialValue() {
+			return new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
+		};
+	};
+
+	public static String getDateByMiliSeconds(Date t) {
+		return dateFormat__yyyyMMddHHmmss.get().format(t);
+	}
+
+	public static String getDateWithTimeByMiliSeconds(Date t) {
+		return t == null ? null : dateFormat__yyyyMMddHHmmss.get().format(t);
+	}
+
+	public static String getDateWithTimeByMiliSecondsWithZone(Date t) {
+		if (t == null) {
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z (Z)");
+		Date dateOld = new Date();
+		long timeAdv = t.getTime();
+		dateOld.setTime(timeAdv);
+		String result = sdf.format(dateOld);
+		return result;
+	}
+
+	public static String getExportDate(Date t) {
+		if (t == null) {
+			return "";
+		}
+		return "" + t.getTime();
+	}
+
+	public static Date parseImportDate(String dateString) {
+		try {
+
+			Date resultDate = null;
+
+			resultDate = validDate(dateFormat__ddMMyyyyHHmmss.get(), dateString);
+
+			if (resultDate != null) {
+				return resultDate;
+			}
+
+			resultDate = validDate(dateFormat__ddMMyyyy.get(), dateString);
+
+			if (resultDate != null) {
+				return resultDate;
+			}
+
+			resultDate = validDate(dateString);
+
+			if (dateString != null) {
+				return resultDate;
+			}
+
+			throw new Exception("Could not parse date string " + dateString);
+		} catch (Exception e) {
+			log.error("parseDate", e);
+		}
+		return null;
+	}
+
+	private static Date validDate(String testdate) {
+		try {
+
+			Long t = Long.valueOf(testdate);
+
+			if (t != null) {
+				return new Date(t);
+			}
+
+		} catch (Exception err) {
+		}
+		return null;
+	}
+
+	private static Date validDate(SimpleDateFormat sdf, String testdate) {
+		Date resultDate = null;
+		try {
+			resultDate = sdf.parse(testdate);
+		}
+
+		// if the format of the string provided doesn't match the format we
+		// declared in SimpleDateFormat() we will get an exception
+
+		catch (java.text.ParseException e) {
+			return null;
+		}
+
+		if (!sdf.format(resultDate).equals(testdate)) {
+			return null;
+		}
+
+		return resultDate;
+
+	}
+
+	public static String getDateWithTimeByMiliSecondsAndTimeZone(Date t,
+			TimeZone timezone) {
+		if (t == null) {
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z (Z)");
+		sdf.setTimeZone(timezone);
+		Date dateOld = new Date();
+		long timeAdv = t.getTime();
+		dateOld.setTime(timeAdv);
+		String result = sdf.format(dateOld);
+		return result;
+	}
+
+	public static String getTimeForStreamId(Date t) {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
+		Date dateOld = new Date();
+		long timeAdv = t.getTime();
+		dateOld.setTime(timeAdv);
+		String result = sdf.format(dateOld);
+		return result;
+	}
+
+	public static Date parseDate(String dateString) {
+		try {
+			return dateFormat__ddMMyyyy.get().parse(dateString);
+		} catch (Exception e) {
+			log.error("parseDate", e);
+		}
+		return null;
+	}
+
+	public static Date parseDateBySeparator(String dateString) {
+		try {
+			return dateFormat__ddMMyyyyBySeparator.get().parse(dateString);
+		} catch (Exception e) {
+			log.error("parseDate", e);
+		}
+		return null;
+	}
+
+	public static Date parseDateWithHour(String dateString) {
+		try {
+			if (dateString == null || dateString.length() == 0
+					|| dateString.equals("null")) {
+				return null;
+			}
+			return dateFormat__ddMMyyyyHHmmss.get().parse(dateString);
+		} catch (Exception e) {
+			log.error("parseDate", e);
+		}
+		return null;
+	}
+
+	public static String getYear(Date t) {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+		Date dateOld = new Date();
+		long timeAdv = t.getTime();
+		dateOld.setTime(timeAdv);
+		String result = sdf.format(dateOld);
+		return result;
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/DaoHelper.java b/src/util/java/org/apache/openmeetings/util/DaoHelper.java
new file mode 100644
index 0000000..14e2f33
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/DaoHelper.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.wicket.util.string.Strings;
+
+public class DaoHelper {
+
+	public static String getSearchQuery(String table, String alias, String search, boolean filterDeleted, boolean count, String sort, String... fields) {
+		return getSearchQuery(table, alias, search, false, filterDeleted, count, sort, fields);
+	}
+	public static String getSearchQuery(String table, String alias, String search, boolean distinct, boolean filterDeleted, boolean count, String sort, String... fields) {
+		return getSearchQuery(table, alias, null, search, distinct, filterDeleted, count, null, sort, fields);
+	}
+	
+	public static String getSearchQuery(String table, String alias, String join, String search, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+		return getSearchQuery(table, alias, join, search, false, filterDeleted, count, additionalWhere, sort, fields);
+	}
+	
+	public static String getSearchQuery(String table, String alias, String join, String search, boolean distinct, boolean filterDeleted, boolean count, String additionalWhere, String sort, String... fields) {
+		StringBuilder sb = new StringBuilder("SELECT ");
+		if (count) {
+			sb.append("COUNT(");
+		}
+		if (distinct) {
+			sb.append("DISTINCT ");
+		}
+		sb.append(alias);
+		if (count) {
+			sb.append(")");
+		}
+		sb.append(" FROM ").append(table).append(" ").append(alias);
+		if (!Strings.isEmpty(join)) {
+			sb.append(" ").append(join);
+		}
+		sb.append(" WHERE 1 = 1 ");
+		if (filterDeleted) {
+			sb.append("AND ").append(alias).append(".deleted = false ");
+		}
+		StringBuilder where = getWhereClause(search, alias, fields);
+		if (!Strings.isEmpty(where)) {
+			sb.append("AND ").append(where);
+		}
+		if (!Strings.isEmpty(additionalWhere)) {
+			sb.append("AND ").append(additionalWhere);
+		}
+		if (!Strings.isEmpty(sort)) {
+			sb.append(" ORDER BY ").append(alias).append(".").append(sort);
+		}
+		return sb.toString();
+	}
+	
+	public static StringBuilder getWhereClause(String search, String alias, String... fields) {
+		StringBuilder sb = new StringBuilder();
+		getWhereClause(sb, search, alias, fields);
+		return sb;
+	}
+	
+	public static void getWhereClause(StringBuilder sb, String search, String alias, String... fields) {
+		if (search != null) {
+			boolean notEmpty = false;
+			String[] searchItems = search.replace("\'", "").replace("\"", "").split(" ");
+			for (int i = 0; i < searchItems.length; ++i) {
+				if (searchItems[i].isEmpty()) {
+					continue;
+				}
+				if (i == 0) {
+					notEmpty = true;
+					sb.append(" (");
+				} else {
+					sb.append(" OR ");
+				}
+				StringBuilder placeholder = new StringBuilder();
+				placeholder.append("%").append(StringUtils.lowerCase(searchItems[i])).append("%");
+	
+				sb.append("(");
+				for (int j = 0; j < fields.length; ++j) {
+					if (j != 0) {
+						sb.append(" OR ");
+					}
+					sb.append("lower(").append(alias).append(".").append(fields[j]).append(") LIKE '").append(placeholder).append("' ");
+				}
+				sb.append(")");
+			}
+			if (notEmpty) {
+				sb.append(") ");
+			}
+		}
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/ImportHelper.java b/src/util/java/org/apache/openmeetings/util/ImportHelper.java
new file mode 100644
index 0000000..53a33e7
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/ImportHelper.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 
+ * Get some of the default values for the upload
+ * 
+ * @author solomax, swagner
+ * 
+ */
+public class ImportHelper {
+	/**
+	 * returns a list of all timezones as a {@link Map}
+	 * 
+	 * @param tzList
+	 * @return
+	 */
+	public static Map<String, String> getAllTimeZones(String ... tzList) {
+		Map<String, String> result = new LinkedHashMap<String, String>();
+
+		for (String omTimeZone : tzList) {
+			result.put(omTimeZone, omTimeZone);
+		}
+
+		return result;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/InitializationContainer.java b/src/util/java/org/apache/openmeetings/util/InitializationContainer.java
new file mode 100644
index 0000000..e47b53f
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/InitializationContainer.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+public class InitializationContainer {
+	public static boolean initComplete = false;
+}
diff --git a/src/util/java/org/apache/openmeetings/util/LangExport.java b/src/util/java/org/apache/openmeetings/util/LangExport.java
new file mode 100644
index 0000000..1d8ea69
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/LangExport.java
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.OutputStream;
+import java.io.Writer;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.Namespace;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+import org.dom4j.tree.FlyweightAttribute;
+
+/**
+ * 
+ * @author sebastianwagner
+ * 
+ */
+public class LangExport {
+	public static final String FILE_COMMENT = ""
+			+ "\n"
+			+ "  Licensed to the Apache Software Foundation (ASF) under one\n"
+			+ "  or more contributor license agreements.  See the NOTICE file\n"
+			+ "  distributed with this work for additional information\n"
+			+ "  regarding copyright ownership.  The ASF licenses this file\n"
+			+ "  to you under the Apache License, Version 2.0 (the\n"
+			+ "  \"License\"); you may not use this file except in compliance\n"
+			+ "  with the License.  You may obtain a copy of the License at\n"
+			+ "  \n"
+			+ "      http://www.apache.org/licenses/LICENSE-2.0\n"
+			+ "    	  \n"
+			+ "  Unless required by applicable law or agreed to in writing,\n"
+			+ "  software distributed under the License is distributed on an\n"
+			+ "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
+			+ "  KIND, either express or implied.  See the License for the\n"
+			+ "  specific language governing permissions and limitations\n"
+			+ "  under the License.\n"
+			+ "  \n"
+			+ "\n"
+			+ "\n"
+			+ "###############################################\n"
+			+ "This File is auto-generated by the LanguageEditor \n"
+			+ "to add new Languages or modify/customize it use the LanguageEditor \n"
+			+ "see http://openmeetings.apache.org/LanguageEditor.html for Details \n"
+			+ "###############################################";
+
+	public static Document createDocument() {
+		Document document = DocumentHelper.createDocument();
+		document.setXMLEncoding("UTF-8");
+		document.addComment(LangExport.FILE_COMMENT);
+		return document;
+	}
+	
+	public static Element createRoot(Document document) {
+		Element root = document.addElement("language");
+		Namespace xsi = new Namespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+		root.add(xsi);
+		root.add(new FlyweightAttribute("noNamespaceSchemaLocation", "language.xsd", xsi));
+		return root;
+	}
+	
+	public static void serializetoXML(Writer out, String aEncodingScheme, Document doc) throws Exception {
+		OutputFormat outformat = OutputFormat.createPrettyPrint();
+		outformat.setEncoding(aEncodingScheme);
+		XMLWriter writer = new XMLWriter(out, outformat);
+		writer.write(doc);
+		writer.flush();
+	}
+	
+	public static void serializetoXML(OutputStream out, String aEncodingScheme, Document doc) throws Exception {
+		OutputFormat outformat = OutputFormat.createPrettyPrint();
+		outformat.setEncoding(aEncodingScheme);
+		XMLWriter writer = new XMLWriter(out, outformat);
+		writer.write(doc);
+		writer.flush();
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/Logger.java b/src/util/java/org/apache/openmeetings/util/Logger.java
new file mode 100644
index 0000000..76a8d32
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/Logger.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import org.red5.logging.Red5LoggerFactory;
+
+public class Logger {
+    private org.slf4j.Logger log;
+
+    public Logger() {
+        StackTraceElement ste = Thread.currentThread().getStackTrace()[1];
+        log = Red5LoggerFactory.getLogger(ste.getClass(),
+        		OpenmeetingsVariables.webAppRootKey);
+    }
+    
+    private String getMethodMessage() {
+        StackTraceElement ste = Thread.currentThread().getStackTrace()[2];
+        return "In the method " + ste.getMethodName();
+    }
+
+    public void debug(String s, Object o) {
+        log.debug(s, o);
+    }
+
+    public void debug(Object o) {
+        log.debug(getMethodMessage(), o);
+    }
+
+    public void error(Object o) {
+        log.error(getMethodMessage(), o);
+    }
+}
diff --git a/src/util/java/org/apache/openmeetings/util/OMContextListener.java b/src/util/java/org/apache/openmeetings/util/OMContextListener.java
new file mode 100644
index 0000000..72c03df
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/OMContextListener.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import javax.servlet.ServletContextEvent;
+
+import org.red5.logging.ContextLoggingListener;
+
+public class OMContextListener extends ContextLoggingListener {
+	
+	public void contextDestroyed(ServletContextEvent event) {
+		super.contextDestroyed(event);
+	}
+
+	public void contextInitialized(ServletContextEvent event) {
+		OpenmeetingsVariables.webAppRootKey = pathToName(event);
+		OpenmeetingsVariables.webAppRootPath = "/" + OpenmeetingsVariables.webAppRootKey;
+		System.setProperty("current_openmeetings_context_name", OpenmeetingsVariables.webAppRootKey);
+		System.setProperty("webapp.contextPath", OpenmeetingsVariables.webAppRootPath);
+		System.setProperty("logback.configurationFile", "logback-config.xml");
+		super.contextInitialized(event);
+	}
+
+	private String pathToName(ServletContextEvent event) {
+		String contextName = event.getServletContext().getContextPath().replaceAll("/", "");
+		if ("".equals(contextName)) {
+			contextName = "root";
+		}
+		return contextName;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/OmException.java b/src/util/java/org/apache/openmeetings/util/OmException.java
new file mode 100644
index 0000000..6e12d09
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/OmException.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+public class OmException extends Exception {
+	private static final long serialVersionUID = 1L;
+	private Long code;
+	
+	public OmException(String msg) {
+		super(msg);
+	}
+	
+	public OmException(Long code) {
+		this.code = code;
+	}
+
+	public OmException(Throwable cause) {
+		super(cause);
+	}
+
+	public Long getCode() {
+		return code;
+	}
+
+	public void setCode(Long code) {
+		this.code = code;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/OmFileHelper.java b/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
new file mode 100644
index 0000000..ee91c17
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -0,0 +1,335 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.text.DecimalFormat;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class OmFileHelper {
+	private static final Logger log = Red5LoggerFactory.getLogger(OmFileHelper.class, OpenmeetingsVariables.webAppRootKey);
+
+	/**
+	 * This variable needs to point to the openmeetings webapp directory
+	 */
+	private static File OM_HOME = null;
+	private static final String UPLOAD_DIR = "upload";
+	private static final String UPLOAD_TEMP_DIR = "uploadtemp";
+	private static final String FILES_DIR = "files";
+	private static final String PUBLIC_DIR = "public";
+	private static final String CLIPARTS_DIR = "cliparts";
+	private static final String WEB_INF_DIR = "WEB-INF";
+	private static final String PROFILES_DIR = "profiles";
+	private static final String STREAMS_DIR = "streams";
+	private static final String EMOTIONS_DIR = "emoticons";
+	private static final String LANGUAGES_DIR = "languages";
+	private static final String IMPORT_DIR = "import";
+	private static final String HIBERNATE_DIR = "hibernate";
+	private static final String CONF_DIR = "conf";
+	private static final String BACKUP_DIR = "backup";
+	private static final String DEFAULT_DIR = "default";
+	private static final String WML_DIR = "stored";
+	
+	private static final String INSTALL_FILE = "install.xml";
+	
+	public static final String SCREENSHARING_DIR = "screensharing";
+	
+	public static final String profilesPrefix = "profile_";
+	public static final String nameOfLanguageFile = "languages.xml";
+	public static final String nameOfCountriesFile = "countries.xml";
+	public static final String nameOfTimeZoneFile = "timezones.xml";
+	public static final String nameOfErrorFile = "errorvalues.xml";
+	public static final String libraryFileName = "library.xml";
+	public static final String defaultProfileImageName = "profile_pic.jpg";
+	public static final String profileFileName = "profile";
+	public static final String profileImagePrefix = "_profile_";
+	public static final String chatImagePrefix = "_chat_";
+	public static final String bigImagePrefix = "_big_";
+	public static final String thumbImagePrefix = "_thumb_";
+	public static final String dashboardFile = "dashboard.xml";
+	public static final String MP4_EXTENSION = ".mp4";
+	public static final String OGG_EXTENSION = ".ogg";
+	public static final String JPG_EXTENTION = ".jpg";
+
+	public static void setOmHome(File omHome) {
+		OmFileHelper.OM_HOME = omHome;
+	}
+	
+	public static void setOmHome(String omHome) {
+		OmFileHelper.OM_HOME = new File(omHome);
+	}
+	
+	public static File getRootDir() {
+		//FIXME hack !!!!
+		return getOmHome().getParentFile().getParentFile();
+	}
+	
+	public static File getOmHome() {
+		return OmFileHelper.OM_HOME;
+	}
+	
+	private static File getDir(File parent, String name) {
+		File f = new File(parent, name);
+		if (!f.exists()) {
+			f.mkdir();
+		}
+		return f;
+	}
+	
+	public static File getUploadDir() {
+		return new File(OmFileHelper.OM_HOME, UPLOAD_DIR);
+	}
+	
+	public static File getUploadFilesDir() {
+		return getDir(getUploadDir(), FILES_DIR);
+	}
+	
+	public static File getUploadProfilesDir() {
+		return getDir(getUploadDir(), PROFILES_DIR);
+	}
+	
+	public static File getUploadProfilesUserDir(Long userId) {
+		return getDir(getUploadProfilesDir(), profilesPrefix + userId);
+	}
+	
+	public static File getUploadProfilesUserDir(String users_id) {
+		return getDir(getUploadProfilesDir(), profilesPrefix + users_id);
+	}
+	
+	public static File getDefaultProfilePicture() {
+		return new File(getDefaultDir(), profileImagePrefix + defaultProfileImageName);
+	}
+	
+	public static File getUserProfilePicture(Long userId, String uri) {
+		File img = new File(getUploadProfilesUserDir(userId), profileImagePrefix + uri);
+		if (!img.exists()) {
+			img = getDefaultProfilePicture();
+		}
+		return img;
+	}
+	
+	public static File getUserDashboard(Long userId) {
+		return new File(getUploadProfilesUserDir(userId), dashboardFile);
+	}
+	
+	public static File getUploadImportDir() {
+		return getDir(getUploadDir(), IMPORT_DIR);
+	}
+	
+	public static File getUploadBackupDir() {
+		return getDir(getUploadDir(), BACKUP_DIR);
+	}
+	
+	public static File getUploadRoomDir(String roomName) {
+		return getDir(getUploadDir(), roomName);
+	}
+	
+	public static File getUploadWmlDir() {
+		return getDir(getUploadDir(), WML_DIR);
+	}
+	
+	public static File getUploadTempDir() {
+		return new File(OmFileHelper.OM_HOME, UPLOAD_TEMP_DIR);
+	}
+	
+	public static File getUploadTempFilesDir() {
+		return getDir(getUploadTempDir(), FILES_DIR);
+	}
+	
+	public static File getUploadTempProfilesDir() {
+		return getDir(getUploadTempDir(), PROFILES_DIR);
+	}
+	
+	public static File getUploadTempProfilesUserDir(Long users_id) {
+		return getDir(getUploadTempProfilesDir(), OmFileHelper.profilesPrefix + users_id);
+	}
+	
+	public static File getUploadTempRoomDir(String roomName) {
+		return getDir(getUploadTempDir(), roomName);
+	}
+	
+	public static File getStreamsDir() {
+		return new File(OmFileHelper.OM_HOME, STREAMS_DIR);
+	}
+	
+	public static File getStreamsHibernateDir() {
+		return getDir(getStreamsDir(), HIBERNATE_DIR);
+	}
+	
+	public static File getRecording(String name) {
+		return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name);
+	}
+	
+	public static boolean isRecordingExists(String name) {
+		try {
+			File f = new File(getDir(getStreamsDir(), HIBERNATE_DIR), name);
+			return f.exists() && f.isFile();
+		} catch (Exception e) {
+			//no-op
+		}
+		return false;
+	}
+	
+	public static File getMp4Recording(String name) {
+		return getRecording(name + MP4_EXTENSION);
+	}
+	
+	public static File getOggRecording(String name) {
+		return getRecording(name + OGG_EXTENSION);
+	}
+	
+	public static File getStreamsSubDir(Long id) {
+		return getDir(getStreamsDir(), id.toString());
+	}
+	
+	public static File getStreamsSubDir(String name) {
+		return getDir(getStreamsDir(), name);
+	}
+	
+	public static File getRecordingMetaData(Long roomId, String name) {
+		return new File(getStreamsSubDir(roomId), name + ".flv");
+	}
+	
+	public static File getLanguagesDir() {
+		return new File(OmFileHelper.OM_HOME, LANGUAGES_DIR);
+	}
+	
+	public static File getPublicDir() {
+		return new File(OmFileHelper.OM_HOME, PUBLIC_DIR);
+	}
+	
+	public static File getPublicClipartsDir() {
+		return new File(getPublicDir(), CLIPARTS_DIR);
+	}
+	
+	public static File getPublicEmotionsDir() {
+		return new File(getPublicDir(), EMOTIONS_DIR);
+	}
+	
+	public static File getWebinfDir() {
+		return new File(OmFileHelper.OM_HOME, WEB_INF_DIR);
+	}
+	
+	public static File getConfDir() {
+		return new File(OmFileHelper.OM_HOME, CONF_DIR);
+	}
+	
+	public static File getInstallFile() {
+		return new File(getConfDir(), INSTALL_FILE);
+	}
+	
+	public static File getScreenSharingDir() {
+		return new File(OmFileHelper.OM_HOME, SCREENSHARING_DIR);
+	}
+
+	public static File getDefaultDir() {
+		return new File(OmFileHelper.OM_HOME, DEFAULT_DIR);
+	}
+	
+	public static File appendSuffix(File original, String suffix) {
+		File parent = original.getParentFile();
+		String name = original.getName();
+		String ext = "";
+		int idx = name.lastIndexOf('.');
+		if (idx > -1) {
+			name = name.substring(0, idx);
+			ext = name.substring(idx);
+		}
+		return new File(parent, name + suffix + ext);
+	}
+	
+	//FIXME need to be generalized
+	public static File getNewFile(File dir, String name, String ext) throws IOException {
+		File f = new File(dir, name + ext);
+		int recursiveNumber = 0;
+		while (f.exists()) {
+			f = new File(dir, name + "_" + (recursiveNumber++) + ext);
+		}
+		f.createNewFile();
+		return f;
+	}
+	
+	public static File getNewDir(File dir, String name) throws IOException {
+		File f = new File(dir, name);
+		String baseName = f.getCanonicalPath();
+
+		int recursiveNumber = 0;
+		while (f.exists()) {
+			f = new File(baseName + "_" + (recursiveNumber++));
+		}
+		f.mkdir();
+		return f;
+	}
+	
+	public static String getHumanSize(File dir) {
+		return getHumanSize(getSize(dir));
+	}
+	
+	public static String getHumanSize(long size) {
+		if(size <= 0) return "0";
+		final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" };
+		int digitGroups = (int) (Math.log10(size)/Math.log10(1024));
+		return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) + " " + units[digitGroups];
+	}
+
+	public static long getSize(File dir) {
+		long size = 0;
+		if (dir.isFile()) {
+			size = dir.length();
+		} else {
+			File[] subFiles = dir.listFiles();
+	
+			for (File file : subFiles) {
+				if (file.isFile()) {
+					size += file.length();
+				} else {
+					size += getSize(file);
+				}
+	
+			}
+		}
+		return size;
+	}
+
+	public static void copyFile(String sourceFile, String targetFile) throws IOException {
+		FileHelper.copy(new File(sourceFile), new File(targetFile));
+	}
+	
+	public static void copyFile(File f1, OutputStream out) throws IOException {
+		InputStream in = null;
+		try {
+			in = new FileInputStream(f1);
+			FileHelper.copy(in, out);
+			log.debug("File copied.");
+		} catch (Exception e) {
+			log.error("[copyfile(File, File)]", e);
+		} finally {
+			if (in != null) {
+				in.close();
+			}
+		}
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/src/util/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
new file mode 100644
index 0000000..192a99f
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+public class OpenmeetingsVariables {
+	public static final String CONFIG_CRYPT_KEY = "crypt_ClassName";
+	public static final String CONFIG_DASHBOARD_SHOW_MYROOMS_KEY = "dashboard.show.myrooms";
+	public static final String CONFIG_DASHBOARD_SHOW_RSS_KEY = "dashboard.show.rssfeed";
+	public static final String CONFIG_DEFAUT_LANG_KEY = "default_lang_id";
+	public static final String CONFIG_FRONTEND_REGISTER_KEY = "allow_frontend_register";
+	public static final String CONFIG_SOAP_REGISTER_KEY = "allow.soap.register";
+	public static final String CONFIG_LOGIN_MIN_LENGTH_KEY = "user.login.minimum.length";
+	public static final String CONFIG_MAX_UPLOAD_SIZE_KEY = "max_upload_size";
+	public static final String CONFIG_PASS_MIN_LENGTH_KEY = "user.pass.minimum.length";
+	public static final String CONFIG_RSS_FEED1_KEY = "rss_feed1";
+	public static final String CONFIG_RSS_FEED2_KEY = "rss_feed2";
+	public static final String CONFIG_IGNORE_BAD_SSL = "oauth2.ignore_bad_ssl";
+	public static final String CONFIG_DEFAULT_LANDING_ZONE = "default.landing.zone";
+	public static final String CONFIG_DEFAULT_LDAP_ID = "ldap_default_id";
+	public static final String CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY = "redirect.url.for.external.users";
+	public static final String CONFIG_APPOINTMENT_REMINDER_MINUTES = "number.minutes.reminder.send";
+	public static final String CONFIG_APPLICATION_BASE_URL = "application.base.url";
+	public static final String CONFIG_SCREENSHARING_QUALITY = "default.quality.screensharing";
+	public static final String CONFIG_SCREENSHARING_FPS = "default.fps.screensharing";
+	public static final String CONFIG_SCREENSHARING_FPS_SHOW = "screensharing.fps.show";
+	public static final String CONFIG_SCREENSHARING_ALLOW_REMOTE = "screensharing.allow.remote";
+	public static final String CONFIG_CALENDAR_FIRST_DAY = "calendar.firstday";
+
+	public static int DEFAULT_MINUTES_REMINDER_SEND = 15;
+	public static String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/";
+	
+	public static final String WEB_DATE_PATTERN = "dd.MM.yyyy HH:mm:ss"; //FIXME need to be made locale based
+	public static String webAppRootKey = null;
+	public static String webAppRootPath = null;
+	public static String configKeyCryptClassName = null;
+	public static final int USER_LOGIN_MINIMUM_LENGTH = 4;
+	public static final int USER_PASSWORD_MINIMUM_LENGTH = 4;
+	public static Boolean whiteboardDrawStatus = null;
+}
diff --git a/src/util/java/org/apache/openmeetings/util/StoredFile.java b/src/util/java/org/apache/openmeetings/util/StoredFile.java
new file mode 100644
index 0000000..a945283
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/StoredFile.java
@@ -0,0 +1,124 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+public class StoredFile {
+    private static final Set<String> convertExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "ppt", "odp", "odt", "sxw", "wpd",
+                    "doc", "rtf", "txt", "ods", "sxc", "xls", "sxi", "pptx",
+                    "docx", "xlsx" }));
+
+    private static final Set<String> pdfExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "pdf", "ps" }));
+
+    private static final Set<String> imageExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "png", "gif", "svg", "dpx", "exr",
+                    "pcd", // PhotoCD
+                    "pcds", // PhotoCD
+                    "psd", // Adobe Photoshop
+                    "tiff", // Tagged Image File Format
+                    "ttf", // TrueType font
+                    "xcf", // GIMP image
+                    "wpg", // Word Perfect Graphics
+                    "bmp", "ico", // Microsoft Icon
+                    "tga", // Truevision Targa
+                    "jpg", "jpeg" }));
+
+    private static final Set<String> chartExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "xchart" }));
+
+    private static final Set<String> videoExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "avi", "mov", "flv", "mp4" }));
+
+    private static final Set<String> asIsExtensions = new HashSet<String>(
+            Arrays.asList(new String[] { "jpg", "xchart" }));
+
+    private final String name;
+	private final String ext;
+
+    public StoredFile(String fullname) {
+    	int idx = fullname.lastIndexOf('.');
+    	name = idx < 0 ? fullname : fullname.substring(0, idx);
+    	ext = idx < 0 ? "" : fullname.substring(idx + 1).toLowerCase();
+    }
+    
+    public StoredFile(String name, String ext) {
+        this.name = name;
+        this.ext = ext != null ? ext.toLowerCase() : "";
+    }
+    
+    public static String[] getExtensions(){
+    	
+    	Set<String> extensions = new HashSet<String>();
+    	extensions.addAll(convertExtensions);
+    	extensions.addAll(pdfExtensions);
+    	extensions.addAll(imageExtensions);
+    	extensions.addAll(chartExtensions);
+    	extensions.addAll(videoExtensions);
+    	extensions.addAll(asIsExtensions);
+    	
+    	Object[] returnObj = extensions.toArray();
+    	
+    	String[] returnStr = new String[returnObj.length];
+    	
+    	int i=0;
+    	for (Object obj : returnObj) {
+    		returnStr[i] = obj.toString();
+    		i++;
+    	}
+    	
+    	return returnStr;
+    }
+
+    public boolean isConvertable() {
+        return convertExtensions.contains(ext);
+    }
+
+    public boolean isPresentation() {
+        return isConvertable() || isPdf();
+    }
+
+    public boolean isPdf() {
+        return pdfExtensions.contains(ext);
+    }
+
+    public boolean isImage() {
+        return imageExtensions.contains(ext);
+    }
+
+    public boolean isVideo() {
+        return videoExtensions.contains(ext);
+    }
+
+    public boolean isChart() {
+        return chartExtensions.contains(ext);
+    }
+
+    public boolean isAsIs() {
+        return asIsExtensions.contains(ext);
+    }
+
+    public String getName() {
+		return name;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/Version.java b/src/util/java/org/apache/openmeetings/util/Version.java
new file mode 100644
index 0000000..f568020
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/Version.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class Version {
+	private static final Logger log = Red5LoggerFactory.getLogger(Version.class, OpenmeetingsVariables.webAppRootKey);
+	private static final int startedStringLength = 48;
+	private static String version = null;
+	private static String revision = null;
+	private static String buildDate = null;
+	
+	private static Attributes getAttributes() throws MalformedURLException, IOException {
+		String jarUrl = Version.class.getResource(Version.class.getSimpleName() + ".class").toString();
+		return new Manifest(new URL(jarUrl.substring(0, jarUrl.indexOf('!')) + "!/META-INF/MANIFEST.MF").openStream()).getMainAttributes();
+	}
+	
+	public static String getVersion() {
+		if (version == null) {
+			try {
+				version = getAttributes().getValue("Product-Version");
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return version;
+	}
+	
+	public static String getRevision() {
+		if (revision == null) {
+			try {
+				revision = getAttributes().getValue("Svn-Revision");
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return revision;
+	}
+	
+	public static String getBuildDate() {
+		if (buildDate == null) {
+			try {
+				buildDate = getAttributes().getValue("Built-On");
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return buildDate;
+	}
+
+	private static void getLine(StringBuilder sb, String text, char fill) {
+		sb.append("\t#");
+		int l = text.length();
+		int headLength = (startedStringLength - l) / 2;
+		for (int i = 0; i < headLength; ++i) {
+			sb.append(fill);
+		}
+		sb.append(text);
+		for (int i = 0; i < (startedStringLength - l - headLength); ++i) {
+			sb.append(fill);
+		}
+		sb.append("#\n");
+	}
+	
+	public static void logOMStarted() {
+		StringBuilder sb = new StringBuilder("\n");
+		getLine(sb, "", '#');
+		getLine(sb, "Openmeetings is up", ' ');
+		getLine(sb, getVersion() + " " + getRevision() + " " + getBuildDate(), ' ');
+		getLine(sb, "and ready to use", ' ');
+		getLine(sb, "", '#');
+		log.debug(sb.toString());
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/ICryptString.java b/src/util/java/org/apache/openmeetings/util/crypt/ICryptString.java
new file mode 100644
index 0000000..8ca8799
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/ICryptString.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+/**
+ * interface for Encryption-Class
+ * see: http://openmeetings.apache.org/CustomCryptMechanism.html
+ * 
+ * @author sebastianwagner
+ *
+ */
+
+public interface ICryptString {
+	
+	/**
+	 * create a pass phrase
+	 * 
+	 * @param userGivenPass
+	 * @return
+	 */
+	public String createPassPhrase(String userGivenPass);
+	
+	/**
+	 * verify a password
+	 * 
+	 * @param passGiven
+	 * @param passwdFromDb
+	 * @return
+	 */
+	public Boolean verifyPassword(String passGiven, String passwdFromDb);
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/MD5.java b/src/util/java/org/apache/openmeetings/util/crypt/MD5.java
new file mode 100644
index 0000000..cac6c64
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/MD5.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import org.apache.commons.codec.binary.Hex;
+
+public class MD5 {
+	public static String do_checksum(String data) throws NoSuchAlgorithmException {
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+
+		md5.update(data.getBytes(), 0, data.length());
+
+		return Hex.encodeHexString(md5.digest());
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/MD5Crypt.java b/src/util/java/org/apache/openmeetings/util/crypt/MD5Crypt.java
new file mode 100644
index 0000000..354a8a2
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/MD5Crypt.java
@@ -0,0 +1,380 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/*
+
+ Based on the work of Jonathan Abbey
+ Adopted for Director by Thomas Aeby, 2004
+
+ MD5Crypt.java
+
+ Created: 3 November 1999
+ Release: $Name:  $
+ Version: $Revision: 1.1 $
+ Last Mod Date: $Date: 2004/02/04 08:10:35 $
+ Java Code By: Jonathan Abbey, jonabbey@arlut.utexas.edu
+ Original C Version:
+ ----------------------------------------------------------------------------
+ "THE BEER-WARE LICENSE" (Revision 42):
+ <phk@login.dknet.dk> wrote this file.  As long as you retain this notice you
+ can do whatever you want with this stuff. If we meet some day, and you think
+ this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
+ ----------------------------------------------------------------------------
+
+ -----------------------------------------------------------------------
+
+ Ganymede Directory Management System
+
+ Copyright (C) 1996, 1997, 1998, 1999  The University of Texas at Austin.
+
+ Contact information
+
+ Author Email: ganymede_author@arlut.utexas.edu
+ Email mailing list: ganymede@arlut.utexas.edu
+
+ US Mail:
+
+ Computer Science Division
+ Applied Research Laboratories
+ The University of Texas at Austin
+ PO Box 8029, Austin TX 78713-8029
+
+ Telephone: (512) 835-3200
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ */
+
+/*------------------------------------------------------------------------------
+ class
+ MD5Crypt
+
+ ------------------------------------------------------------------------------*/
+
+/**
+ * <p>
+ * This class defines a method,
+ * {@link MD5Crypt#crypt(java.lang.String, java.lang.String) crypt()}, which
+ * takes a password and a salt string and generates an
+ * OpenBSD/FreeBSD/Linux-compatible md5-encoded password entry.
+ * </p>
+ * 
+ * <p>
+ * Created: 3 November 1999
+ * </p>
+ * <p>
+ * Release: $Name: $
+ * </p>
+ * <p>
+ * Version: $Revision: 1.1 $
+ * </p>
+ * <p>
+ * Last Mod Date: $Date: 2004/02/04 08:10:35 $
+ * </p>
+ * <p>
+ * Java Code By: Jonathan Abbey, jonabbey@arlut.utexas.edu
+ * </p>
+ * <p>
+ * Original C Version:
+ * 
+ * <pre>
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <phk@login.dknet.dk> wrote this file.  As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ * </pre>
+ * 
+ * </p>
+ */
+
+public final class MD5Crypt {
+
+	/**
+	 * 
+	 * Command line test rig.
+	 * 
+	 * @throws NoSuchAlgorithmException
+	 * 
+	 */
+
+	static public void main(String argv[]) throws NoSuchAlgorithmException {
+		if ((argv.length < 1) || (argv.length > 2)) {
+			System.err.println("Usage: MD5Crypt password salt");
+			System.exit(1);
+		}
+
+		if (argv.length == 2) {
+			System.err.println(MD5Crypt.crypt(argv[0], argv[1]));
+		} else {
+			System.err.println(MD5Crypt.crypt(argv[0]));
+		}
+
+		System.exit(0);
+	}
+
+	static private final String SALTCHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
+
+	static private final String itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+	static private final String to64(long v, int size) {
+		StringBuffer result = new StringBuffer();
+
+		while (--size >= 0) {
+			result.append(itoa64.charAt((int) (v & 0x3f)));
+			v >>>= 6;
+		}
+
+		return result.toString();
+	}
+
+	static private final void clearbits(byte bits[]) {
+		for (int i = 0; i < bits.length; i++) {
+			bits[i] = 0;
+		}
+	}
+
+	/**
+	 * convert an encoded unsigned byte value into a int with the unsigned
+	 * value.
+	 */
+
+	@SuppressWarnings("cast")
+	static private final int bytes2u(byte inp) {
+		return ((int) inp) & 0xff;
+	}
+
+	/**
+	 * <p>
+	 * This method actually generates a OpenBSD/FreeBSD/Linux PAM compatible
+	 * md5-encoded password hash from a plaintext password and a salt.
+	 * </p>
+	 * 
+	 * <p>
+	 * The resulting string will be in the form '$1$&lt;salt&gt;$&lt;hashed
+	 * mess&gt;
+	 * </p>
+	 * 
+	 * @param password
+	 *            Plaintext password
+	 * 
+	 * @return An OpenBSD/FreeBSD/Linux-compatible md5-hashed password field.
+	 * @throws NoSuchAlgorithmException
+	 */
+
+	static public final String crypt(String password)
+			throws NoSuchAlgorithmException {
+		StringBuffer salt = new StringBuffer();
+		java.util.Random randgen = new java.util.Random();
+
+		/* -- */
+
+		while (salt.length() < 8) {
+			int index = (int) (randgen.nextFloat() * SALTCHARS.length());
+			salt.append(SALTCHARS.substring(index, index + 1));
+		}
+
+		return MD5Crypt.crypt(password, salt.toString());
+	}
+
+	/**
+	 * <p>
+	 * This method actually generates a OpenBSD/FreeBSD/Linux PAM compatible
+	 * md5-encoded password hash from a plaintext password and a salt.
+	 * </p>
+	 * 
+	 * <p>
+	 * The resulting string will be in the form '$1$&lt;salt&gt;$&lt;hashed
+	 * mess&gt;
+	 * </p>
+	 * 
+	 * @param password
+	 *            Plaintext password
+	 * @param salt
+	 *            A short string to use to randomize md5. May start with $1$,
+	 *            which will be ignored. It is explicitly permitted to pass a
+	 *            pre-existing MD5Crypt'ed password entry as the salt. crypt()
+	 *            will strip the salt chars out properly.
+	 * 
+	 * @return An OpenBSD/FreeBSD/Linux-compatible md5-hashed password field.
+	 * @throws NoSuchAlgorithmException
+	 */
+
+	static public final String crypt(String password, String salt)
+			throws NoSuchAlgorithmException {
+		/*
+		 * This string is magic for this algorithm. Having it this way, we can
+		 * get get better later on
+		 */
+
+		String magic = "$1$";
+		byte finalState[];
+		MessageDigest ctx, ctx1;
+		long l;
+
+		/* -- */
+
+		/* Refine the Salt first */
+
+		/* If it starts with the magic string, then skip that */
+
+		if (salt.startsWith(magic)) {
+			salt = salt.substring(magic.length());
+		}
+
+		/* It stops at the first '$', max 8 chars */
+
+		if (salt.indexOf('$') != -1) {
+			salt = salt.substring(0, salt.indexOf('$'));
+		}
+
+		if (salt.length() > 8) {
+			salt = salt.substring(0, 8);
+		}
+
+		ctx = MessageDigest.getInstance("MD5");
+
+		ctx.update(password.getBytes()); // The password first, since that is
+											// what is most unknown
+		ctx.update(magic.getBytes()); // Then our magic string
+		ctx.update(salt.getBytes()); // Then the raw salt
+
+		/* Then just as many characters of the MD5(pw,salt,pw) */
+
+		ctx1 = MessageDigest.getInstance("MD5");
+		ctx1.update(password.getBytes());
+		ctx1.update(salt.getBytes());
+		ctx1.update(password.getBytes());
+		finalState = ctx1.digest();
+
+		for (int pl = password.length(); pl > 0; pl -= 16) {
+			for (int i = 0; i < (pl > 16 ? 16 : pl); i++)
+				ctx.update(finalState[i]);
+		}
+
+		/*
+		 * the original code claimed that finalState was being cleared to keep
+		 * dangerous bits out of memory, but doing this is also required in
+		 * order to get the right output.
+		 */
+
+		clearbits(finalState);
+
+		/* Then something really weird... */
+
+		for (int i = password.length(); i != 0; i >>>= 1) {
+			if ((i & 1) != 0) {
+				ctx.update(finalState[0]);
+			} else {
+				ctx.update(password.getBytes()[0]);
+			}
+		}
+
+		finalState = ctx.digest();
+
+		/*
+		 * and now, just to make sure things don't run too fast On a 60 Mhz
+		 * Pentium this takes 34 msec, so you would need 30 seconds to build a
+		 * 1000 entry dictionary...
+		 * 
+		 * (The above timings from the C version)
+		 */
+
+		for (int i = 0; i < 1000; i++) {
+			ctx1 = MessageDigest.getInstance("MD5");
+
+			if ((i & 1) != 0) {
+				ctx1.update(password.getBytes());
+			} else {
+				for (int c = 0; c < 16; c++)
+					ctx1.update(finalState[c]);
+			}
+
+			if ((i % 3) != 0) {
+				ctx1.update(salt.getBytes());
+			}
+
+			if ((i % 7) != 0) {
+				ctx1.update(password.getBytes());
+			}
+
+			if ((i & 1) != 0) {
+				for (int c = 0; c < 16; c++)
+					ctx1.update(finalState[c]);
+			} else {
+				ctx1.update(password.getBytes());
+			}
+
+			finalState = ctx1.digest();
+		}
+
+		/* Now make the output string */
+
+		StringBuffer result = new StringBuffer();
+
+		result.append(magic);
+		result.append(salt);
+		result.append("$");
+
+		l = (bytes2u(finalState[0]) << 16) | (bytes2u(finalState[6]) << 8)
+				| bytes2u(finalState[12]);
+		result.append(to64(l, 4));
+
+		l = (bytes2u(finalState[1]) << 16) | (bytes2u(finalState[7]) << 8)
+				| bytes2u(finalState[13]);
+		result.append(to64(l, 4));
+
+		l = (bytes2u(finalState[2]) << 16) | (bytes2u(finalState[8]) << 8)
+				| bytes2u(finalState[14]);
+		result.append(to64(l, 4));
+
+		l = (bytes2u(finalState[3]) << 16) | (bytes2u(finalState[9]) << 8)
+				| bytes2u(finalState[15]);
+		result.append(to64(l, 4));
+
+		l = (bytes2u(finalState[4]) << 16) | (bytes2u(finalState[10]) << 8)
+				| bytes2u(finalState[5]);
+		result.append(to64(l, 4));
+
+		l = bytes2u(finalState[11]);
+		result.append(to64(l, 2));
+
+		/* Don't leave anything around in vm they could use. */
+		clearbits(finalState);
+
+		return result.toString();
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/MD5CryptImplementation.java b/src/util/java/org/apache/openmeetings/util/crypt/MD5CryptImplementation.java
new file mode 100644
index 0000000..9c861ec
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/MD5CryptImplementation.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+import java.security.NoSuchAlgorithmException;
+
+public class MD5CryptImplementation implements ICryptString {
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.openmeetings.utils.crypt.ICryptString#createPassPhrase(java.lang.String)
+	 */
+	public String createPassPhrase(String userGivenPass) {
+		String passPhrase = null;
+		try {
+			passPhrase = MD5Crypt.crypt(userGivenPass);
+		} catch (NoSuchAlgorithmException e) {
+			e.printStackTrace();
+		} 
+		return passPhrase;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.openmeetings.utils.crypt.ICryptString#verifyPassword(java.lang.String, java.lang.String)
+	 */
+	public Boolean verifyPassword(String passGiven, String passwdFromDb) {
+		boolean validPassword = false;
+		String salt = passwdFromDb.split("\\$")[2];
+	
+		try {
+			validPassword = passwdFromDb.equals(MD5Crypt.crypt(passGiven, salt));
+		} catch (NoSuchAlgorithmException e) {
+			e.printStackTrace();
+		}
+		return validPassword;
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/MD5Implementation.java b/src/util/java/org/apache/openmeetings/util/crypt/MD5Implementation.java
new file mode 100644
index 0000000..e0d4b4b
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/MD5Implementation.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+import java.security.NoSuchAlgorithmException;
+
+public class MD5Implementation implements ICryptString {
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.openmeetings.utils.crypt.ICryptString#createPassPhrase(java.lang.String)
+	 */
+	public String createPassPhrase(String userGivenPass) {
+		String passPhrase = null;
+		try {
+			passPhrase = MD5.do_checksum(userGivenPass);
+		} catch (NoSuchAlgorithmException e) {
+			e.printStackTrace();
+		}
+		return passPhrase;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.openmeetings.utils.crypt.ICryptString#verifyPassword(java.lang.String, java.lang.String)
+	 */
+	public Boolean verifyPassword(String passGiven, String passwdFromDb) {
+		return (passwdFromDb.equals(createPassPhrase(passGiven)));
+	}
+	
+}
diff --git a/src/util/java/org/apache/openmeetings/util/crypt/ManageCryptStyle.java b/src/util/java/org/apache/openmeetings/util/crypt/ManageCryptStyle.java
new file mode 100644
index 0000000..a03b623
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/crypt/ManageCryptStyle.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.crypt;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.configKeyCryptClassName;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ManageCryptStyle {
+	private static final Logger log = Red5LoggerFactory.getLogger(ManageCryptStyle.class, webAppRootKey);
+
+	public static ICryptString getInstanceOfCrypt() {
+		try {
+			log.debug("getInstanceOfCrypt:: configKeyCryptClassName: " + configKeyCryptClassName);
+
+			return configKeyCryptClassName == null ? null : (ICryptString) Class.forName(configKeyCryptClassName).newInstance();
+		} catch (Exception err) {
+			log.error("[getInstanceOfCrypt]", err);
+		}
+		return null;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/geom/ArrowStyle.java b/src/util/java/org/apache/openmeetings/util/geom/ArrowStyle.java
new file mode 100644
index 0000000..5fa3164
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/geom/ArrowStyle.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.geom;
+
+public class ArrowStyle {
+
+	public double headWidth=-1; //Relative width of arrow head
+
+	/**
+	 * 
+	 * Not used in drawArrowHead because the length is 
+	 * determined by the points passed in
+	 * 
+	 */
+	public double headLength=10; //Pixel Length of arrow head
+			
+	
+	public double shaftThickness=2;
+	public float shaftPosition=0;
+	
+	/**
+	 *  Not used in drawArrow, only drawArrowHead
+	 * 	This let's you curve the line at the base of the arrow
+	 */
+	public double shaftControlPosition=.5;
+	/**
+	 * Not used in drawArrow, only drawArrowHead
+	 * This let's you curve the line at the base of the arrow
+	 */
+	public double shaftControlSize=.5;
+	
+	
+	public double edgeControlPosition=.5;
+	public double edgeControlSize=.5;
+	
+	
+	public ArrowStyle(double edgeControlPosition, double edgeControlSize,
+			double headLength, double headWidth, double shaftControlPosition,
+			double shaftControlSize, float shaftPosition, double shaftThickness) {
+		super();
+		this.edgeControlPosition = edgeControlPosition;
+		this.edgeControlSize = edgeControlSize;
+		this.headLength = headLength;
+		this.headWidth = headWidth;
+		this.shaftControlPosition = shaftControlPosition;
+		this.shaftControlSize = shaftControlSize;
+		this.shaftPosition = shaftPosition;
+		this.shaftThickness = shaftThickness;
+	}
+	
+	
+}
diff --git a/src/util/java/org/apache/openmeetings/util/geom/GeomPoint.java b/src/util/java/org/apache/openmeetings/util/geom/GeomPoint.java
new file mode 100644
index 0000000..e666ab2
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/geom/GeomPoint.java
@@ -0,0 +1,211 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.geom;
+
+import java.awt.Point;
+
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * 
+ * Java Implementation of the Actionscript Class flash.geom.Point
+ * 
+ * @author swagner
+ *
+ */
+
+public class GeomPoint extends Point {
+	private static final long serialVersionUID = 5729830653403076829L;
+	@SuppressWarnings("unused")
+	private static final Logger log = Red5LoggerFactory.getLogger(GeomPoint.class, OpenmeetingsVariables.webAppRootKey);
+
+	public GeomPoint add(GeomPoint p) {
+		GeomPoint gPoint = new GeomPoint();
+		gPoint.setLocation(this.getX() + p.getX(),this.getY() + p.getY());
+		return gPoint;
+	}
+	
+	public GeomPoint subtract(GeomPoint p) {
+		GeomPoint gPoint = new GeomPoint();
+		gPoint.setLocation(this.getX() - p.getX(),this.getY() - p.getY());
+		return gPoint;
+	}
+	
+	public GeomPoint clone() {
+		GeomPoint p = new GeomPoint();
+		p.setLocation(this.getX(), this.getY());
+		return p;
+	}
+	
+	public static GeomPoint interpolate(GeomPoint p1, GeomPoint p2, float f) {
+		
+		if (f == 0) {
+			GeomPoint p = new GeomPoint();
+			p.setLocation(p2.getX(), p2.getY());
+			return p;
+		} else if (f == 1) {
+			GeomPoint p = new GeomPoint();
+			p.setLocation(p1.getX(), p1.getY());
+			return p;
+		}
+		
+		double returnValueP1 = linearInterpolation(p1.getX(),p2.getX(),f);
+		double returnValueP2 = linearInterpolation(p1.getY(),p2.getY(),f);
+		
+		GeomPoint p = new GeomPoint();
+		p.setLocation(returnValueP1, returnValueP2);
+		return p;
+	}
+	
+	public double length() {
+		return Math.sqrt( this.getX()*this.getX() + this.getY()*this.getY() );
+	}
+	
+	public String toString() {
+		return getClass().getName() + "[x=" + this.getX() + ",y=" + this.getY() + "]";
+    }
+	
+	public void normalize(double newLength) {
+		
+		//Function for Line y = mx + 0 
+		//given points 0,0 and this.getX(),this.getY();
+		//		0 = m*0 + c
+		//		m = -c;
+		//		
+		//		this.getY() = m*this.getX();
+
+		double m;
+		if (this.getX() == 0) {
+			//log.debug("Case 1");
+			if (this.getY() < 0) {
+				this.setLocation(0, newLength * -1);
+			} else {
+				this.setLocation(0, newLength);
+			}
+			return;
+			//m = this.getY();
+		} else {
+			m = this.getY() / this.getX();
+			//log.debug("Case 2");
+		}
+		
+		//log.debug("m :"+m +" newLength "+newLength);
+		
+		//Circle (x-x0)^2 + (y-y0)^2 = r^2
+		//		anyY = m * anyX;
+		//		newLength * newLength = anyY * anyY + anyX * anyX;
+		//		
+		//		newLength * newLength = (m * anyX) * (m * anyX) + anyX * anyX;
+		//		
+		//		newLength * newLength = m * m * anyX * anyX + anyX * anyX;
+		//		newLength * newLength = ( m*m + 1 ) * anyX * anyX;
+		//		
+		//		newLength * newLength / ( m*m + 1 ) = anyX * anyX;
+		
+		double anyX = Math.sqrt( ( newLength * newLength ) / ( m*m + 1 ) );
+		double anyY = m * anyX;
+		
+		//log.debug("anyX :"+anyX + " anyY: " + anyY);
+		
+		//translate to Flash point of origin
+		if (this.getX() < 0) {
+			anyX *= -1;
+			anyY *= -1;
+		}
+		
+		//log.debug("anyX :"+anyX + " anyY: " + anyY);
+		this.setLocation(anyX, anyY);
+		
+	}
+	
+	/**
+	 * Interpolate one number
+	 * @param a
+	 * @param b
+	 * @param t
+	 * @return
+	 */
+	public static double linearInterpolation(double a, double b, float t) {
+		return a + t * (b - a);
+	}
+	
+
+	public static GeomPoint getLineIntersection ( GeomPoint a1,GeomPoint a2,
+			GeomPoint b1,GeomPoint b2) {
+		
+		//log.debug("b1: "+b1);
+		//log.debug("b2: "+b2);
+		
+		double x,y,m1,m2;
+	
+		if ((a2.getX()-a1.getX()) == 0) {
+			
+			//log.debug("k1 ^ 0");
+			
+			double k2 = (b2.getY()-b1.getY()) / (b2.getX()-b1.getX());
+			//log.debug("k2: "+k2);
+			//log.debug("b1.getY(): "+b1.getY());
+			//log.debug("b2.getY(): "+b2.getY());
+			// an infinite directional constant means the line is vertical
+			// so the intersection must be at the x coordinate of the line
+			x = a1.getX();
+            m2 = b1.getY() - k2 * b1.getX();
+            //log.debug("m2: "+m2);
+            y = k2 * x + m2;
+            //log.debug("y: "+y);
+			
+		} else if((b2.getX()-b1.getX()) == 0) {
+			
+			//log.debug("k2 ^^ 0");
+			
+			double k1 = (a2.getY()-a1.getY()) / (a2.getX()-a1.getX());
+			// same as above for line 2
+			m1 = a1.getY() - k1 * a1.getX();
+			x = b1.getX();
+			y = k1 * x + m1;
+			
+		} else {
+		
+			//calculate directional constants
+			double k1 = (a2.getY()-a1.getY()) / (a2.getX()-a1.getX());
+			double k2 = (b2.getY()-b1.getY()) / (b2.getX()-b1.getX());
+			
+			// if the directional constants are equal, the lines are parallel,
+			// meaning there is no intersection point.
+			if( k1 == k2 ) return null;
+		
+			//log.debug("neither");
+//			log.debug("k1: "+k1);
+//			log.debug("k2: "+k2);
+			
+			m1 = a1.getY() - k1 * a1.getX();
+			m2 = b1.getY() - k2 * b1.getX();				
+			x = (m1-m2) / (k2-k1);
+			y = k1 * x + m1;
+		}
+		
+		
+		GeomPoint gPoint = new GeomPoint();
+		gPoint.setLocation(x, y);
+		
+		return gPoint;
+	}	
+}
diff --git a/src/util/java/org/apache/openmeetings/util/mail/ByteArrayDataSource.java b/src/util/java/org/apache/openmeetings/util/mail/ByteArrayDataSource.java
new file mode 100644
index 0000000..ed5b55a
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/mail/ByteArrayDataSource.java
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.mail;
+
+import java.io.*;
+import javax.activation.*;
+
+public class ByteArrayDataSource implements DataSource {
+	private byte[] data; // data
+
+	private String type; // content-type
+
+	/* Create a DataSource from an input stream */
+	public ByteArrayDataSource(InputStream is, String type) {
+		this.type = type;
+		try {
+			ByteArrayOutputStream os = new ByteArrayOutputStream();
+			int ch;
+
+			while ((ch = is.read()) != -1)
+				os.write(ch);
+			data = os.toByteArray();
+			os.close();
+		} catch (IOException ioex) {
+		}
+	}
+
+	/* Create a DataSource from a byte array */
+	public ByteArrayDataSource(byte[] data, String type) {
+		this.data = data;
+		this.type = type;
+	}
+
+	/* Create a DataSource from a String */
+	public ByteArrayDataSource(String data, String type) {
+		try {
+			// Assumption that the string contains only ASCII
+			// characters! Otherwise just pass a charset into this
+			// constructor and use it in getBytes()
+			this.data = data.getBytes("utf-8");
+		} catch (UnsupportedEncodingException uex) {
+		}
+		this.type = type;
+	}
+
+	public InputStream getInputStream() throws IOException {
+		if (data == null)
+			throw new IOException("no data");
+		return new ByteArrayInputStream(data);
+	}
+
+	public OutputStream getOutputStream() throws IOException {
+		throw new IOException("cannot do this");
+	}
+
+	public String getContentType() {
+		return type;
+	}
+
+	public String getName() {
+		return "dummy";
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/mail/IcalHandler.java b/src/util/java/org/apache/openmeetings/util/mail/IcalHandler.java
new file mode 100644
index 0000000..71eada2
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -0,0 +1,239 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.mail;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
+import java.net.URI;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Vector;
+
+import net.fortuna.ical4j.data.CalendarOutputter;
+import net.fortuna.ical4j.model.DateTime;
+import net.fortuna.ical4j.model.TimeZone;
+import net.fortuna.ical4j.model.TimeZoneRegistry;
+import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
+import net.fortuna.ical4j.model.component.VEvent;
+import net.fortuna.ical4j.model.parameter.Cn;
+import net.fortuna.ical4j.model.parameter.Role;
+import net.fortuna.ical4j.model.property.Attendee;
+import net.fortuna.ical4j.model.property.CalScale;
+import net.fortuna.ical4j.model.property.Description;
+import net.fortuna.ical4j.model.property.Location;
+import net.fortuna.ical4j.model.property.Method;
+import net.fortuna.ical4j.model.property.Organizer;
+import net.fortuna.ical4j.model.property.ProdId;
+import net.fortuna.ical4j.model.property.Sequence;
+import net.fortuna.ical4j.model.property.Transp;
+import net.fortuna.ical4j.model.property.Uid;
+import net.fortuna.ical4j.model.property.Version;
+import net.fortuna.ical4j.util.UidGenerator;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * 
+ * @author o.becherer, seba.wagner
+ * 
+ */
+public class IcalHandler {
+	private static final Logger log = Red5LoggerFactory.getLogger(IcalHandler.class, webAppRootKey);
+
+	/** ICal instance */
+	private final net.fortuna.ical4j.model.Calendar icsCalendar;
+
+	/** TimeZone */
+	// private TimeZone timeZone;
+	// private TimeZoneRegistry timeRegistry;
+
+	/** Creation of a new Event */
+	public final static Method ICAL_METHOD_REQUEST = Method.REQUEST;
+	public final static Method ICAL_METHOD_CANCEL = Method.CANCEL;
+	public final static Method ICAL_METHOD_REFRESH = Method.REFRESH;
+
+	/**
+	 * Constructor with DefaultTimeZone
+	 * 
+	 * @param method
+	 *            (@see IcalHandler Constants)
+	 * @throws Exception
+	 */
+	public IcalHandler(Method method) {
+		log.debug("Icalhandler method type : " + method);
+		
+		System.setProperty("net.fortuna.ical4j.timezone.update.enabled", "false");
+		
+		icsCalendar = new net.fortuna.ical4j.model.Calendar();
+
+		icsCalendar.getProperties().add(new ProdId("-//Events Calendar//iCal4j 1.0//EN"));
+		icsCalendar.getProperties().add(Version.VERSION_2_0);
+		icsCalendar.getProperties().add(CalScale.GREGORIAN);
+		
+		icsCalendar.getProperties().add(method);
+	}
+
+	/**
+	 * 
+	 * @param startDate
+	 *            use standard TimeZone!!
+	 * @param endDate
+	 *            use standard time zone!!
+	 * @param name
+	 *            meeting name
+	 * @param attendees
+	 *            List of attendees (use getAttendeeData to retrieve valid
+	 *            records)
+	 * @param description
+	 *            containing the meeting description
+	 * @param uid
+	 *            (maybe null)
+	 * @return UID of Meeting
+	 */
+	// ---------------------------------------------------------------------------------------
+	public String addNewMeeting(Date startDate,
+			Date endDate, String name,
+			Vector<HashMap<String, String>> attendees, String description,
+			HashMap<String, String> organizer, String uid, java.util.TimeZone normalTimeZone)
+			throws Exception {
+
+		TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
+		
+		TimeZone timeZone = registry.getTimeZone(normalTimeZone.getID());
+
+		DateTime start = new DateTime(startDate);
+		start.setTimeZone(timeZone);
+		DateTime end = new DateTime(endDate);
+		end.setTimeZone(timeZone);
+		
+		VEvent meeting = new VEvent(start, end, name);
+
+		meeting.getProperties().add(new Description(description));
+		meeting.getProperties().add(new Sequence(0));
+		meeting.getProperties().add(new Location(""));
+		meeting.getProperties().add(Transp.OPAQUE);
+
+		// generate unique identifier (if not submitted)
+		Uid ui = null;
+		if (uid == null || uid.length() < 1) {
+			ui = new UidGenerator("uidGen").generateUid();
+			log.debug("Generating Meeting UID : " + ui.getValue());
+		} else {
+			ui = new Uid(uid);
+			log.debug("Using Meeting UID : " + ui.getValue());
+		}
+
+		meeting.getProperties().add(ui);
+
+		for (int i = 0; i < attendees.size(); i++) {
+			HashMap<String, String> oneAtt = attendees.get(i);
+
+			Attendee uno = new Attendee(URI.create(oneAtt.get("uri")));
+
+			String chair = oneAtt.get("chair");
+
+			if (chair.equals("0"))
+				uno.getParameters().add(Role.REQ_PARTICIPANT);
+			else
+				uno.getParameters().add(Role.CHAIR);
+
+			uno.getParameters().add(new Cn(oneAtt.get("cn")));
+			meeting.getProperties().add(uno);
+		}
+
+		Organizer orger = new Organizer(URI.create(organizer.get("uri")));
+		orger.getParameters().add(new Cn(organizer.get("cn")));
+
+		meeting.getProperties().add(orger);
+
+		icsCalendar.getComponents().add(timeZone.getVTimeZone());
+		icsCalendar.getComponents().add(meeting);
+
+		return ui.getValue();
+
+	}
+
+	// ---------------------------------------------------------------------------------------
+
+	/**
+	 * Use this function to build a valid record for the AttendeeList for
+	 * addMeetings Generate a Attendee
+	 */
+	// ------------------------------------------------------------------------------------------
+	public HashMap<String, String> getAttendeeData(String emailAdress,
+			String displayName, Boolean chair) {
+
+		HashMap<String, String> oneRecord = new HashMap<String, String>();
+		oneRecord.put("uri", "mailto:" + emailAdress);
+		oneRecord.put("cn", displayName);
+		oneRecord.put("chair", chair ? "1" : "0");
+
+		return oneRecord;
+
+	}
+
+	// ------------------------------------------------------------------------------------------
+
+	/**
+	 * Write iCal to File
+	 */
+	// ------------------------------------------------------------------------------------------
+	public void writeDataToFile(String filerPath) throws Exception {
+
+		if (!filerPath.endsWith(".ics")) {
+			filerPath = filerPath + ".ics";
+		}
+
+		FileOutputStream fout = new FileOutputStream(filerPath);
+
+		CalendarOutputter outputter = new CalendarOutputter();
+		outputter.output(icsCalendar, fout);
+		fout.close();
+	}
+
+	// ------------------------------------------------------------------------------------------
+
+	/**
+	 * Get IcalBody as ByteArray
+	 */
+	// ------------------------------------------------------------------------------------------
+	public byte[] getIcalAsByteArray() throws Exception {
+
+		ByteArrayOutputStream bout = new ByteArrayOutputStream();
+		CalendarOutputter outputter = new CalendarOutputter();
+		outputter.output(icsCalendar, bout);
+		return bout.toByteArray();
+
+	}
+
+	// ------------------------------------------------------------------------------------------
+
+	/**
+	 * Retrieving Data as String
+	 */
+	// ------------------------------------------------------------------------------------------
+	public String getICalDataAsString() {
+		return icsCalendar.toString();
+	}
+	// ------------------------------------------------------------------------------------------
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/mail/MailUtil.java b/src/util/java/org/apache/openmeetings/util/mail/MailUtil.java
new file mode 100644
index 0000000..f54fe9d
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/mail/MailUtil.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.mail;
+
+import java.util.regex.Pattern;
+
+public class MailUtil {
+	
+	private static final Pattern rfc2822 = Pattern.compile(
+	        "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
+	);
+	
+	public static boolean matches(String email) {
+		return rfc2822.matcher(email).matches();
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java b/src/util/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java
new file mode 100644
index 0000000..7047f74
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.mail;
+
+import javax.mail.Authenticator;
+import javax.mail.PasswordAuthentication;
+
+/**
+ * 
+ * @author swagner
+ * 
+ */
+public class SmtpAuthenticator extends Authenticator {
+
+	private final String username;
+	private final String password;
+
+	public SmtpAuthenticator(String emailUsername, String emailUserpass) {
+		this.username = emailUsername;
+		this.password = emailUserpass;
+	}
+
+	@Override
+	public PasswordAuthentication getPasswordAuthentication() {
+
+		return new PasswordAuthentication(username, password);
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java b/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
new file mode 100644
index 0000000..80efe4c
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResult.java
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.process;
+
+/**
+ * Object created by each conversion step, each conversion step that invokes and
+ * external tool like ImageMagick is one single ConverterProcessMessage
+ * 
+ * if exitValue equals "-1" then there was an issue.
+ * 
+ * @author sebawagner
+ *
+ */
+public class ConverterProcessResult {
+	private String process;
+	private String command;
+	private String exception;
+	private String error;
+	private String exitValue;
+	private String out;
+
+	public ConverterProcessResult() {
+		this(null, null, null);
+	}
+
+	public ConverterProcessResult(String error) {
+		this(null, error, null);
+	}
+
+	public ConverterProcessResult(String process, String error, Exception ex) {
+		setProcess(process);
+		setException(ex == null ? null : ex.toString());
+		setError(error);
+		setExitValue("-1");
+	}
+
+	public String getOut() {
+		return out;
+	}
+
+	public void setOut(String out) {
+		this.out = out;
+	}
+
+	public String getCommand() {
+		return command;
+	}
+
+	public void setCommand(String command) {
+		this.command = command;
+	}
+
+	public String getProcess() {
+		return process;
+	}
+
+	public void setProcess(String process) {
+		this.process = process;
+	}
+
+	public String getException() {
+		return exception;
+	}
+
+	public void setException(String exception) {
+		this.exception = exception;
+	}
+
+	public String getError() {
+		return error;
+	}
+
+	public void setError(String error) {
+		this.error = error;
+	}
+
+	public String getExitValue() {
+		return exitValue;
+	}
+
+	public void setExitValue(String exitValue) {
+		this.exitValue = exitValue;
+	}
+
+	public String buildLogMessage() {
+		return new StringBuilder()
+			.append("process: ").append(process).append("\r\n")
+			.append("command: ").append(command).append("\r\n")
+			.append("exception: ").append(exception).append("\r\n")
+			.append("error: ").append(error).append("\r\n")
+			.append("exitValue: ").append(exitValue).append("\r\n")
+			.append("out: ").append(out).append("\r\n").toString();
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java b/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
new file mode 100644
index 0000000..d943d5b
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
@@ -0,0 +1,143 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.process;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.slf4j.Logger;
+
+/**
+ * 
+ * Collects all results of conversion jobs
+ * 
+ * @author sebawagner
+ * 
+ */
+public class ConverterProcessResultList {
+	private static final Logger log = getLogger(ConverterProcessResultList.class, webAppRootKey);
+
+	private Map<String, ConverterProcessResult> jobslist = new HashMap<String, ConverterProcessResult>();
+
+	private Long fileExplorerItemId;
+	private String completeName;
+
+	public Long getFileExplorerItemId() {
+		return fileExplorerItemId;
+	}
+
+	public void setFileExplorerItemId(Long fileExplorerItemId) {
+		this.fileExplorerItemId = fileExplorerItemId;
+	}
+
+	public String getCompleteName() {
+		return completeName;
+	}
+
+	public void setCompleteName(String completeName) {
+		this.completeName = completeName;
+	}
+
+	public ConverterProcessResult addItem(String name,
+			ConverterProcessResult processResult) {
+		if (jobslist.containsKey(name)) {
+			log.error("Duplicate key in jobslist");
+			return null;
+		}
+		return jobslist.put(name, processResult);
+	}
+
+	/**
+	 * returns true if there was an job with exitValue "-1"
+	 * 
+	 * @return
+	 */
+	public boolean hasError() {
+		for (Entry<String, ConverterProcessResult> entry : jobslist.entrySet()) {
+			if (entry.getValue().getExitValue().equals("-1")) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * converts all job results into a human readable format
+	 * 
+	 * @return
+	 */
+	public String getLogMessage() {
+		StringBuilder logMessage = new StringBuilder();
+		for (Entry<String, ConverterProcessResult> entry : jobslist.entrySet()) {
+			logMessage.append("key: ");
+			logMessage.append(entry.getKey());
+			logMessage.append("\r\n");
+			logMessage.append(entry.getValue().buildLogMessage());
+		}
+		return logMessage.toString();
+	}
+
+	/**
+	 * Axis need Objects or array of objects, Map won't work
+	 * 
+	 * @return
+	 */
+	public FileImportError[] convertToFileImportErrors() {
+		FileImportError[] fileImportErrors = new FileImportError[jobslist
+				.size()];
+
+		int i = 0;
+		// Axis need Objects or array of objects, Map won't work
+		for (Iterator<String> iter = jobslist.keySet().iterator(); iter
+				.hasNext();) {
+
+			ConverterProcessResult returnAttribute = jobslist.get(iter
+					.next());
+
+			fileImportErrors[i] = new FileImportError();
+			fileImportErrors[i]
+					.setCommand((returnAttribute.getCommand() != null) ? returnAttribute
+							.getCommand().toString() : "");
+			fileImportErrors[i]
+					.setError((returnAttribute.getError() != null) ? returnAttribute
+							.getError().toString() : "");
+			fileImportErrors[i]
+					.setExitValue((returnAttribute.getExitValue() != null) ? Integer
+							.valueOf(returnAttribute.getExitValue().toString())
+							.intValue() : 0);
+			fileImportErrors[i]
+					.setProcess((returnAttribute.getProcess() != null) ? returnAttribute
+							.getProcess().toString() : "");
+
+			i++;
+		}
+		
+		return fileImportErrors;
+	}
+
+	public int size() {
+		return jobslist.size();
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/process/FileImportError.java b/src/util/java/org/apache/openmeetings/util/process/FileImportError.java
new file mode 100644
index 0000000..116bdc8
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/process/FileImportError.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.process;
+
+public class FileImportError {
+	
+	private int exitValue = 0;
+	private String error = "";
+	private String process = "";
+	private String command = "";
+	
+	public int getExitValue() {
+		return exitValue;
+	}
+	public void setExitValue(int exitValue) {
+		this.exitValue = exitValue;
+	}
+	public String getError() {
+		return error;
+	}
+	public void setError(String error) {
+		this.error = error;
+	}
+	public String getProcess() {
+		return process;
+	}
+	public void setProcess(String process) {
+		this.process = process;
+	}
+	public String getCommand() {
+		return command;
+	}
+	public void setCommand(String command) {
+		this.command = command;
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/process/ProcessHelper.java b/src/util/java/org/apache/openmeetings/util/process/ProcessHelper.java
new file mode 100644
index 0000000..3f39d72
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -0,0 +1,194 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.process;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ProcessHelper {
+	public static final Logger log = Red5LoggerFactory.getLogger(ProcessHelper.class, OpenmeetingsVariables.webAppRootKey);
+
+	private static class Worker extends Thread {
+		private final Process process;
+		private Integer exitCode;
+	
+		private Worker(Process process) {
+			this.process = process;
+		}
+	
+		@Override
+		public void run() {
+			try {
+				exitCode = process.waitFor();
+			} catch (InterruptedException ignore) {
+				return;
+			}
+		}
+	}
+
+	private static class StreamWatcher extends Thread {
+		public StringBuilder output;
+		private final InputStream is;
+		private final BufferedReader br;
+	
+		private StreamWatcher(Process process, boolean isError) throws UnsupportedEncodingException {
+			output = new StringBuilder();
+			is = isError ? process.getErrorStream() : process.getInputStream();
+			br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+		}
+	
+		@Override
+		public void run() {
+			try {
+				String line = br.readLine();
+				while (line != null) {
+					output.append(line).append('\n');
+					line = br.readLine();
+				}
+			} catch (IOException ioexception) {
+				return;
+			}
+		}
+	}
+
+	public static ConverterProcessResult executeScriptWindows(String process, String[] argv) {
+		try {
+			String[] cmd = new String[argv.length + 2];
+			cmd[0] = "cmd.exe";
+			cmd[1] = "/C";
+			System.arraycopy(argv, 0, cmd, 2, argv.length);
+			Map<String, String> env = new HashMap<String, String>();
+			return executeScript(process, cmd, env);
+		} catch (Exception t) {
+			log.error("executeScriptWindows", t);
+			return new ConverterProcessResult(process, t.getMessage(), t);
+		}
+	}
+	
+	private static String getCommand(String[] argv) {
+		StringBuffer tString = new StringBuffer();
+		for (int i = 0; i < argv.length; i++) {
+			tString.append(argv[i]).append(" ");
+		}
+		return tString.toString();
+	}
+	
+	private static void debugCommandStart(String desc, String[] argv) {
+		if (log.isDebugEnabled()) {
+			log.debug("START " + desc + " ################# ");
+			log.debug(getCommand(argv));
+		}
+	}
+	
+	private static void debugCommandEnd(String desc) {
+		if (log.isDebugEnabled()) {
+			log.debug("END " + desc + " ################# ");
+		}
+	}
+	
+	public static ConverterProcessResult executeScript(String process, String[] argv) {
+		Map<String, String> env = new HashMap<String, String>();
+		return executeScript(process, argv, env);
+	}
+	
+	public static ConverterProcessResult executeScript(String process, String[] argv, Map<? extends String, ? extends String> env) {
+		ConverterProcessResult returnMap = new ConverterProcessResult();
+		returnMap.setProcess(process);
+		debugCommandStart(process, argv);
+	
+		try {
+			returnMap.setCommand(getCommand(argv));
+			returnMap.setOut("");
+	
+			// By using the process Builder we have access to modify the
+			// environment variables
+			// that is handy to set variables to run it inside eclipse
+			ProcessBuilder pb = new ProcessBuilder(argv);
+			pb.environment().putAll(env);
+	
+			Process proc = pb.start();
+	
+			// 20-minute timeout for command execution
+			// FFMPEG conversion of Recordings may take a real long time until
+			// its finished
+			long timeout = 60000 * 20;
+	
+			StreamWatcher errorWatcher = new StreamWatcher(proc, true);
+			Worker worker = new Worker(proc);
+			StreamWatcher inputWatcher = new StreamWatcher(proc, false);
+			errorWatcher.start();
+			inputWatcher.start();
+			worker.start();
+			
+			try {
+				worker.join(timeout);
+				if (worker.exitCode != null) {
+					returnMap.setExitValue("" + worker.exitCode);
+					log.debug("exitVal: " + worker.exitCode);
+					returnMap.setError(errorWatcher.output.toString());
+				} else {
+					returnMap.setException("timeOut");
+					returnMap.setError(errorWatcher.output.toString());
+					returnMap.setExitValue("-1");
+	
+					throw new TimeoutException();
+				}
+			} catch (InterruptedException ex) {
+				worker.interrupt();
+				errorWatcher.interrupt();
+				inputWatcher.interrupt();
+				Thread.currentThread().interrupt();
+	
+				returnMap.setError(ex.getMessage());
+				returnMap.setExitValue("-1");
+	
+				throw ex;
+			} finally {
+				proc.destroy();
+			}
+			
+		} catch (TimeoutException e) {
+			// Timeout exception is processed above
+			log.error("executeScript",e);
+			returnMap.setError(e.getMessage());
+			returnMap.setException(e.toString());
+			returnMap.setExitValue("-1");
+		} catch (Throwable t) {
+			// Any other exception is shown in debug window
+			log.error("executeScript",t);
+			returnMap.setError(t.getMessage());
+			returnMap.setException(t.toString());
+			returnMap.setExitValue("-1");
+		}
+		
+		debugCommandEnd(process);
+		return returnMap;
+	}
+
+}
diff --git a/src/util/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java b/src/util/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
new file mode 100644
index 0000000..4eed547
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/process/UploadCompleteMessage.java
@@ -0,0 +1,161 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.process;
+
+/**
+ * Helper bean that is send to client(s) once the servlet has completed the
+ * upload
+ * 
+ * @author sebawagner
+ * 
+ */
+public class UploadCompleteMessage {
+	private Long userId;
+	private String message;
+	private String action;
+	private String error;
+	private boolean hasError = false;
+	private String fileName;
+
+	// Properties from the file explorerItem
+	private String fileSystemName;
+	private Boolean isPresentation = false;
+	private Boolean isImage = false;
+	private Boolean isVideo = false;
+	private String fileHash;
+
+	public UploadCompleteMessage() {
+	}
+
+	public UploadCompleteMessage(Long userId, String message, String action,
+			String error, String fileName) {
+		super();
+		this.userId = userId;
+		this.message = message;
+		this.action = action;
+		this.error = error;
+		this.fileName = fileName;
+	}
+
+	public UploadCompleteMessage(Long userId, String message, String action,
+			String error, boolean hasError, String fileName,
+			String fileSystemName, boolean isPresentation, boolean isImage,
+			boolean isVideo, String fileHash) {
+		super();
+		this.userId = userId;
+		this.message = message;
+		this.action = action;
+		this.error = error;
+		this.hasError = hasError;
+		this.fileName = fileName;
+		this.fileSystemName = fileSystemName;
+		this.isPresentation = isPresentation;
+		this.isImage = isImage;
+		this.isVideo = isVideo;
+		this.fileHash = fileHash;
+	}
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public String getAction() {
+		return action;
+	}
+
+	public void setAction(String action) {
+		this.action = action;
+	}
+
+	public String getError() {
+		return error;
+	}
+
+	public void setError(String error) {
+		this.error = error;
+	}
+
+	public String getFileName() {
+		return fileName;
+	}
+
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+
+	public boolean isHasError() {
+		return hasError;
+	}
+
+	public void setHasError(boolean hasError) {
+		this.hasError = hasError;
+	}
+
+	public String getFileSystemName() {
+		return fileSystemName;
+	}
+
+	public void setFileSystemName(String fileSystemName) {
+		this.fileSystemName = fileSystemName;
+	}
+
+	public Boolean getIsPresentation() {
+		return isPresentation;
+	}
+
+	public void setIsPresentation(Boolean isPresentation) {
+		this.isPresentation = isPresentation;
+	}
+
+	public Boolean getIsImage() {
+		return isImage;
+	}
+
+	public void setIsImage(Boolean isImage) {
+		this.isImage = isImage;
+	}
+
+	public Boolean getIsVideo() {
+		return isVideo;
+	}
+
+	public void setIsVideo(Boolean isVideo) {
+		this.isVideo = isVideo;
+	}
+
+	public String getFileHash() {
+		return fileHash;
+	}
+
+	public void setFileHash(String fileHash) {
+		this.fileHash = fileHash;
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/stringhandlers/ChatString.java b/src/util/java/org/apache/openmeetings/util/stringhandlers/ChatString.java
new file mode 100644
index 0000000..13a4be0
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/stringhandlers/ChatString.java
@@ -0,0 +1,238 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.stringhandlers;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ChatString {
+	private static final Logger log = Red5LoggerFactory.getLogger(
+			ChatString.class, OpenmeetingsVariables.webAppRootKey);
+
+	private static String htmlToText(String source) {
+		String result = source;
+		result = Strings.replaceAll(result, "<", "&lt;").toString();
+		result = Strings.replaceAll(result, ">", "&gt;").toString();
+		return result;
+	}
+	
+	public static LinkedList<String[]> parseChatString(String message, LinkedList<LinkedList<String>> emotFiles, boolean allowHTML) {
+		try {
+			LinkedList<String[]> list = new LinkedList<String[]>();
+
+			// log.debug("this.link(message) "+this.link(message));
+
+			if (!allowHTML)
+				message = htmlToText(message);
+			
+			String[] messageStr = { "text", message };
+			list.add(messageStr);
+
+			for (LinkedList<String> emot : emotFiles) {
+				// log.error("CHECK EMOT: "+ emot.get(0) + emot.get(1) +
+				// emot.size());
+				list = splitStr(list, emot.get(0), emot.get(1),
+						emot.get(emot.size() - 2));
+
+				if (emot.size() > 4) {
+					// log.error("CHECK EMOT ASIAN: "+ emot.get(0) + emot.get(2)
+					// + emot.size());
+					list = splitStr(list, emot.get(0), emot.get(2),
+							emot.get(emot.size() - 2));
+				}
+			}
+
+			// log.debug("#########  ");
+			// for (Iterator<String[]> iter = list.iterator();iter.hasNext();){
+			// String[] stringArray = iter.next();
+			// //stringArray[1] = this.link(stringArray[1]);
+			// log.debug(stringArray[0]+"||"+stringArray[1]);
+			// }
+
+			return list;
+
+		} catch (Exception err) {
+			log.error("[parseChatString]", err);
+		}
+		return null;
+	}
+
+	private static LinkedList<String[]> splitStr(LinkedList<String[]> list,
+			String image, String regexp, String spaces) {
+
+		LinkedList<String[]> newList = new LinkedList<String[]>();
+
+		for (Iterator<String[]> iter = list.iterator(); iter.hasNext();) {
+
+			String[] messageObj = iter.next();
+			String messageTye = messageObj[0];
+
+			if (messageTye.equals("text")) {
+				String messageStr = messageObj[1];
+
+				String[] newStr = messageStr.split(regexp);
+
+				for (int k = 0; k < newStr.length; k++) {
+					String[] textA = { "text", newStr[k] };
+					newList.add(textA);
+					if (k + 1 != newStr.length) {
+						String[] imageA = { "image", image, spaces,
+								regexp.replace("\\", "") };
+						newList.add(imageA);
+					}
+				}
+			} else {
+
+				newList.add(messageObj);
+			}
+
+		}
+
+		return newList;
+	}
+
+	public static LinkedList<LinkedList<String>> replaceAllRegExp(LinkedList<LinkedList<String>> emotFiles) {
+		LinkedList<LinkedList<String>> emotfilesListNew = new LinkedList<LinkedList<String>>();
+		try {
+			for (LinkedList<String> emot : emotFiles) {
+				// log.error("FILE: "+emot.get(0));
+				String westernMeaning = checkforRegex(emot.get(1));
+				emot.set(1, westernMeaning);
+				// log.error("westernMeaning "+westernMeaning);
+				if (emot.size() > 2) {
+					String asianMeaning = checkforRegex(emot.get(2));
+					emot.set(2, asianMeaning);
+					// log.error("westernMeaning "+asianMeaning);
+				}
+				emotfilesListNew.add(emot);
+			}
+		} catch (Exception err) {
+			log.error("[replaceAllRegExp]", err);
+		}
+		return emotfilesListNew;
+	}
+
+	/**
+	 * Replace characters having special meaning in regular expressions
+	 * 
+	 */
+	private static String checkforRegex(String aRegexFragment) {
+		final StringBuilder result = new StringBuilder();
+
+		final StringCharacterIterator iterator = new StringCharacterIterator(
+				aRegexFragment);
+		char character = iterator.current();
+		while (character != CharacterIterator.DONE) {
+			/*
+			 * All literals need to have backslashes doubled.
+			 */
+			if (character == '.') {
+				result.append("\\.");
+			} else if (character == '\\') {
+				result.append("\\\\");
+			} else if (character == '?') {
+				result.append("\\?");
+			} else if (character == '*') {
+				result.append("\\*");
+			} else if (character == '+') {
+				result.append("\\+");
+			} else if (character == '&') {
+				result.append("\\&");
+			} else if (character == ':') {
+				result.append("\\:");
+			} else if (character == '{') {
+				result.append("\\{");
+			} else if (character == '}') {
+				result.append("\\}");
+			} else if (character == '[') {
+				result.append("\\[");
+			} else if (character == ']') {
+				result.append("\\]");
+			} else if (character == '(') {
+				result.append("\\(");
+			} else if (character == ')') {
+				result.append("\\)");
+			} else if (character == '^') {
+				result.append("\\^");
+			} else if (character == '$') {
+				result.append("\\$");
+			} else if (character == '|') {
+				result.append("\\|");
+			} else {
+				// the char is not a special one
+				// add it to the result as is
+				result.append(character);
+			}
+			character = iterator.next();
+		}
+		return result.toString();
+	}
+
+	public static String link(String input) {
+		try {
+
+			String tReturn = "";
+
+			String parts[] = input.split(" ");
+
+			for (int t = 0; t < parts.length; t++) {
+
+				String text = parts[t];
+
+				// System.out.println("Part 1 "+text);
+
+				Matcher matcher = Pattern
+						.compile(
+								"(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))")
+						.matcher(text);
+
+				if (matcher.find()) {
+					text = matcher
+							.replaceFirst("<u><FONT color=\"#0000CC\"><a href='"
+									+ text + "'>" + text + "</a></FONT></u>");
+
+				}
+
+				// System.out.println("Part 2 "+text);
+
+				if (t != 0) {
+					tReturn += " ";
+				}
+
+				tReturn += text;
+
+			}
+
+			return tReturn;
+
+		} catch (Exception e) {
+			log.error("[link]", e);
+		}
+		return "";
+	}
+}
diff --git a/src/util/java/org/apache/openmeetings/util/stringhandlers/StringComparer.java b/src/util/java/org/apache/openmeetings/util/stringhandlers/StringComparer.java
new file mode 100644
index 0000000..8d8817f
--- /dev/null
+++ b/src/util/java/org/apache/openmeetings/util/stringhandlers/StringComparer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.util.stringhandlers;
+
+public class StringComparer {
+	
+	private static StringComparer instance = null;
+	
+	private StringComparer() {}
+	
+	public static synchronized StringComparer getInstance(){
+		if (instance == null){
+			instance = new StringComparer();
+		}
+		return instance;
+	}
+	
+	public String compareForRealPaths(String inputString) throws Exception{
+
+		String t = "";
+		for (int i=0;i<inputString.length();i++){
+			char c = inputString.charAt(i);
+			if (compareChars(c)) {
+				t += c;
+			} else {
+				t += "_";
+			}
+			
+		}		
+		return t;
+	}
+	
+	private boolean compareChars(char inputChar){		
+		return Character.isLetterOrDigit(inputChar);
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/AdminBaseForm.java b/src/web/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
new file mode 100644
index 0000000..25837fe
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
@@ -0,0 +1,167 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.IModel;
+
+/**
+ * provides basic functionality to insert, update, remove, refresh record in
+ * admin section
+ * 
+ * @author swagner
+ * 
+ * @param <T>
+ */
+public abstract class AdminBaseForm<T> extends Form<T> {
+	private static final long serialVersionUID = 1L;
+	private AdminSavePanel<T> savePanel;
+
+	public AdminBaseForm(String id, IModel<T> object) {
+		super(id, object);
+		
+		savePanel = new AdminSavePanel<T>("buttons", this) {
+			private static final long serialVersionUID = -5833647470067891270L;
+
+			@Override
+			protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onSaveSubmit(target, form);
+			}
+
+			@Override
+			protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onSaveError(target, form);
+			}
+
+			@Override
+			protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onNewSubmit(target, form);
+			}
+
+			@Override
+			protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onNewError(target, form);
+			}
+
+			@Override
+			protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onRefreshSubmit(target, form);
+			}
+
+			@Override
+			protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onRefreshError(target, form);
+			}
+
+			@Override
+			protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onDeleteSubmit(target, form);
+			}
+
+			@Override
+			protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+				AdminBaseForm.this.onDeleteError(target, form);
+			}
+			
+		};
+		add(savePanel);
+
+
+	}
+
+	/**
+	 * @see AdminBaseForm#hideNewRecord()
+	 */
+	public void hideNewRecord() {
+		savePanel.hideNewRecord();
+	}
+	
+	/**
+	 * @see AdminBaseForm#showNewRecord()
+	 */
+	public void showNewRecord() {
+		savePanel.showNewRecord();
+	}
+
+	/**
+	 * invoked when user press save button
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when save has error
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onSaveError(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when new button is pressed
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked if new has error
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when refresh button is pressed
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when refresh has error
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onRefreshError(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when delete button is pressed
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
+	
+	/**
+	 * invoked when delete has error
+	 * 
+	 * @param target
+	 * @param form
+	 */
+	protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
+	
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java b/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java
new file mode 100644
index 0000000..4583787
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/AdminPanel.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+
+@AuthorizeInstantiation("Admin")
+public abstract class AdminPanel extends BasePanel {
+	private static final long serialVersionUID = 6811243474361803279L;
+
+	public AdminPanel(String id) {
+		super(id);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.html b/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.html
new file mode 100644
index 0000000..1514f22
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.html
@@ -0,0 +1,31 @@
+<?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:extend>
+		<div class="formNewButton">
+			<input type="submit" value="" wicket:id="ajax-new-button" wicket:ommessage="title:155" />
+		</div>
+		<div class="formCancelButton">
+			<input type="submit" value="" wicket:id="ajax-cancel-button" wicket:ommessage="title:157" />
+		</div>
+		<span wicket:id="newRecord"></span>
+	</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.java b/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.java
new file mode 100644
index 0000000..8533034
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/AdminSavePanel.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ConfirmCallListener;
+import org.apache.openmeetings.web.common.FormSaveRefreshPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+
+public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
+	private static final long serialVersionUID = -8916631148087019924L;
+	private Label newRecord;
+	
+	public AdminSavePanel(String id, final Form<T> form) {
+		super(id, form);
+		
+		newRecord = new Label("newRecord", Model.of(WebSession.getString(344L)));
+		add(newRecord.setVisible(false).setOutputMarkupId(true));
+		
+		// add a new button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-new-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				newRecord.setVisible(true);
+				target.add(newRecord);
+				onNewSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				onNewError(target, form);
+			}
+		});
+
+		// add a cancel button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-cancel-button", form) {
+			private static final long serialVersionUID = 839803820502260006L;
+
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+			}
+			
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				hideNewRecord();
+				onDeleteSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				hideNewRecord();
+				onDeleteError(target, form);
+			}
+		});
+	}
+	
+	/**
+	 * Hide the new record text
+	 */
+	public void hideNewRecord() {
+		newRecord.setVisible(false);
+	}
+	
+	/**
+	 * Hide the new record text
+	 */
+	public void showNewRecord() {
+		newRecord.setVisible(true);
+	}
+
+	protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onNewError(AjaxRequestTarget target, Form<?> form);
+
+	protected abstract void onDeleteSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> form);
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java b/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
new file mode 100644
index 0000000..01c695a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.TextChoiceProvider;
+
+public abstract class AdminUserChoiceProvider extends TextChoiceProvider<User> {
+	private static final long serialVersionUID = 1L;
+	protected static int PAGE_SIZE = 20;
+
+	@Override
+	protected Object getId(User choice) {
+		return choice.getUser_id();
+	}
+
+	@Override
+	public void query(String term, int page, Response<User> response) {
+		response.addAll(getBean(UserDao.class).get(term, true, page * PAGE_SIZE, PAGE_SIZE));
+		response.setHasMore(PAGE_SIZE == response.getResults().size());
+	}
+
+	@Override
+	public Collection<User> toChoices(Collection<String> _ids) {
+		List<Long> ids = new ArrayList<Long>();
+		for (String id : _ids) {
+			ids.add(Long.valueOf(id));
+		}
+		return new ArrayList<User>(getBean(UserDao.class).get(ids));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/SearchableDataView.java b/src/web/java/org/apache/openmeetings/web/admin/SearchableDataView.java
new file mode 100644
index 0000000..63a77c2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/SearchableDataView.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.markup.repeater.data.DataView;
+
+/**
+ * Provides {@link SearchableDataProvider}
+ * 
+ * @author swagner
+ * 
+ * @param <T>
+ */
+public abstract class SearchableDataView<T extends IDataProviderEntity> extends DataView<T> {
+	private static final long serialVersionUID = -6251644410385789409L;
+	private SearchableDataProvider<T> dp;
+	
+	public SearchableDataView(String id, SearchableDataProvider<T> dp) {
+		super(id, dp);
+		this.dp = dp;
+	}
+	
+	@Override
+	public SearchableDataProvider<T> getDataProvider() {
+		return dp;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html b/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
new file mode 100644
index 0000000..464ccaa
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
@@ -0,0 +1,61 @@
+<?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>
+	        <span wicket:id="feedback"/>
+	     </div>
+		<!-- wicket:id="form"  -->
+		<form wicket:id="backupUpload" class="adminForm adminBackupForm">
+			<fieldset class="ui-widget-content">
+				<legend class="ui-widget-header"><wicket:ommessage key="1066" /></legend>
+				<div class="formelement">
+				    <div class="info-text"><wicket:ommessage key="1065" /></div>
+	            </div>
+	            <div class="formelement">
+                   <label><wicket:ommessage key="1537" /></label> <input type="checkbox" wicket:id="includeFilesInBackup" />
+	            </div>
+	            <div class="formelement">
+	               <span wicket:id="progress"></span>
+	               <div wicket:id="dprogress"></div>
+	            </div>
+	            <div class="formelement">
+		            <!-- Perform Download -->
+					<div wicket:id="download" class="ui-button ui-widget ui-state-default ui-corner-all">
+						<span class="btn btn-file"><wicket:ommessage key="1066"/></span>
+					</div>
+					<!-- Perform Upload -->
+					<div class="ui-button ui-widget ui-state-default ui-corner-all fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
+						<span class="btn btn-file"><wicket:ommessage key="1536"/><input class="uploadFileField" wicket:id="fileInput" type="file"/></span>
+					</div>
+	            </div>
+	            <div class="formelement">
+		            <!-- Max upload size -->
+		            <wicket:ommessage key="1491" /> <span wicket:id="MaxUploadSize" /><span>MB</span>
+	            </div>
+	            <div class="formelement">
+		            <!-- Backup CLI import information -->
+	               <div class="info-text" wicket:id="cmdLineDesc"></div>
+	            </div>
+	        </fieldset>
+		</form>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java b/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
new file mode 100644
index 0000000..cde4e93
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -0,0 +1,248 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.backup;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.File;
+import java.text.DecimalFormat;
+import java.util.Date;
+
+import org.apache.openmeetings.backup.BackupExport;
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.backup.ProgressHolder;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.resource.FileResourceStream;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
+
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+/**
+ * Panel component to manage Backup Import/Export
+ * 
+ * @author swagner
+ * 
+ */
+public class BackupPanel extends AdminPanel {
+	private static final Logger log = Red5LoggerFactory.getLogger(BackupPanel.class, webAppRootKey);
+
+	private static final long serialVersionUID = -1L;
+
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+
+	/**
+	 * Form to handle upload files
+	 * 
+	 * @author swagner
+	 * 
+	 */
+	private class BackupForm extends Form<Void> {
+		private static final long serialVersionUID = 1L;
+		private final FileUploadField fileUploadField;
+		private final Model<Boolean> includeFilesInBackup = Model.of(true);
+		private final AbstractAjaxTimerBehavior timer;
+		private final ProgressBar progressBar;
+		private File backupFile;
+		private Throwable th = null;
+		private boolean started = false;
+		private ProgressHolder progressHolder;
+
+		public BackupForm(String id) {
+			super(id);
+
+			// set this form to multipart mode (allways needed for uploads!)
+			setMultiPart(true);
+
+			// set max upload size in form as info text
+			Long maxBytes = getBean(ConfigurationDao.class).getMaxUploadSize();
+			double megaBytes = maxBytes.doubleValue() / 1024 / 1024;
+			DecimalFormat formatter = new DecimalFormat("#,###.00");
+			add(new Label("MaxUploadSize", formatter.format(megaBytes)));
+
+			// Add one file input field
+			fileUploadField = new FileUploadField("fileInput");
+
+			add(new CheckBox("includeFilesInBackup", includeFilesInBackup));
+
+			// Set maximum size controlled by configuration
+			setMaxSize(Bytes.bytes(maxBytes));
+
+			// Add a component to download a file without page refresh
+			final AjaxDownload download = new AjaxDownload();
+			add(download);
+			// add an download button
+			add(new AjaxButton("download", this) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+					File workingDir = OmFileHelper.getUploadBackupDir();
+					String dateString = "backup_" + CalendarPatterns.getTimeForStreamId(new Date());
+					File backupDir = new File(workingDir, dateString);
+					backupFile = new File(backupDir, dateString + ".zip");
+					th = null;
+					started = true;
+					progressHolder = new ProgressHolder();
+
+					timer.restart(target);
+					new Thread(new BackupProcess(getBean(BackupExport.class), backupDir, includeFilesInBackup.getObject(), progressHolder)
+						, "Openmeetings - " + dateString).start();
+
+					// repaint the feedback panel so that it is hidden
+					target.add(feedback, progressBar.setVisible(true));
+				}
+
+				@Override
+				protected void onError(AjaxRequestTarget target, Form<?> form) {
+					// repaint the feedback panel so errors are shown
+					target.add(feedback);
+				}
+			});
+			add(timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onTimer(AjaxRequestTarget target) {
+					if (!started) {
+						timer.stop(target);
+						return;
+					}
+					if (th != null) {
+						timer.stop(target);
+						//TODO change text, localize
+						progressBar.setVisible(false);
+						feedback.error(th);
+						target.add(feedback);
+					} else {
+						progressBar.setModelObject(progressHolder.getProgress());
+						progressBar.refresh(target);
+						//TODO add current step result as info
+					}
+				}
+			});
+			add((progressBar = new ProgressBar("dprogress", new Model<Integer>(0)) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onComplete(AjaxRequestTarget target) {
+					timer.stop(target);
+					target.add(progressBar.setVisible(false));
+					
+					download.setFileName(backupFile.getName());
+					download.setResourceStream(new FileResourceStream(backupFile));
+					download.initiate(target);
+				}
+			}).setVisible(false).setOutputMarkupPlaceholderTag(true));
+			add(fileUploadField.add(new AjaxFormSubmitBehavior(this, "onchange") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onSubmit(AjaxRequestTarget target) {
+					FileUpload upload = fileUploadField.getFileUpload();
+					try {
+						if (upload == null || upload.getInputStream() == null) {
+							feedback.error("File is empty");
+							target.add(feedback);
+							return;
+						}
+						getBean(BackupImport.class).performImport(upload.getInputStream());
+					} catch (Exception e) {
+						log.error("Exception on panel backup upload ", e);
+						feedback.error(e);
+					}
+					// repaint the feedback panel so that it is hidden
+					target.add(feedback);
+				}
+
+				@Override
+				protected void onError(AjaxRequestTarget target) {
+					// repaint the feedback panel so errors are shown
+					target.add(feedback);
+				}
+			}));
+			add(new Label("cmdLineDesc", WebSession.getString(1505)).setEscapeModelStrings(false));
+		}
+
+		@Override
+		protected void onDetach() {
+			includeFilesInBackup.detach();
+			super.onDetach();
+		}
+		
+		private class BackupProcess implements Runnable {
+			private BackupExport backup;
+			private File backupDir;
+			private boolean includeFiles;
+			private ProgressHolder progressHolder;
+			
+			public BackupProcess(BackupExport backup, File backupDir, boolean includeFiles, ProgressHolder progressHolder) {
+				this.backup = backup;
+				this.backupDir = backupDir;
+				this.includeFiles = includeFiles;
+				this.progressHolder = progressHolder;
+				th = null;
+			}
+			
+			public void run() {
+				try {
+					backup.performExport(backupFile, backupDir, includeFiles, progressHolder);
+				} catch (Exception e) {
+					log.error("Exception on panel backup download ", e);
+					th = e;
+				}
+			}
+		}
+	}
+
+	public BackupPanel(String id) {
+		super(id);
+
+		add(feedback);
+
+		BackupForm backupForm = new BackupForm("backupUpload");
+
+		backupForm.add(new UploadProgressBar("progress", backupForm, backupForm.fileUploadField));
+
+		add(backupForm);
+		add(BootstrapFileUploadBehavior.INSTANCE);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
new file mode 100644
index 0000000..5810c57
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.configurations;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+
+/**
+ * Handle {@link Configuration} items as list and form
+ * 
+ * @author swagner
+ * 
+ */
+public class ConfigForm extends AdminBaseForm<Configuration> {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer listContainer;
+
+	private void refresh(AjaxRequestTarget target) {
+		target.add(this);
+		target.appendJavaScript("omConfigPanelInit();");
+	}
+	
+	public ConfigForm(String id, WebMarkupContainer listContainer, Configuration configuration) {
+		super(id, new CompoundPropertyModel<Configuration>(configuration));
+		setOutputMarkupId(true);
+		this.listContainer = listContainer;
+		add(new RequiredTextField<String>("conf_key").setLabel(Model.of(WebSession.getString(267))).add(new IValidator<String>(){
+			private static final long serialVersionUID = -3371792361118941958L;
+
+			public void validate(IValidatable<String> validatable) {
+				Configuration c = getBean(ConfigurationDao.class).forceGet(validatable.getValue());
+				if (c != null && !c.isDeleted() && !c.getConfiguration_id().equals(ConfigForm.this.getModelObject().getConfiguration_id())) {
+					error(WebSession.getString(1544L));
+				}
+			}
+		}));
+		add(new TextField<String>("conf_value").setLabel(Model.of(WebSession.getString(271))));
+		add(forDatePattern("updatetime", WEB_DATE_PATTERN));
+		add(new Label("user.login"));
+		add(new TextArea<String>("comment"));
+		
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+	
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		Configuration c = cfgDao.forceGet(getModelObject().getConf_key());
+		if (c != null && c.isDeleted() && !c.getConfiguration_id().equals(getModelObject().getConfiguration_id())) {
+			getModelObject().setConfiguration_id(c.getConfiguration_id());
+		}
+		setModelObject(getBean(ConfigurationDao.class).update(getModelObject(), WebSession.getUserId()));
+		hideNewRecord();
+		target.add(listContainer);
+		refresh(target);
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		this.setModelObject(new Configuration());
+		refresh(target);
+	}
+	
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		Configuration conf = getModelObject();
+		if (conf.getConfiguration_id() != null) {
+			conf = getBean(ConfigurationDao.class).get(conf.getConfiguration_id());
+		} else {
+			conf = new Configuration();
+		}
+		setModelObject(conf);
+		refresh(target);
+	}
+	
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		getBean(ConfigurationDao.class).delete(getModelObject(), WebSession.getUserId());
+		setModelObject(new Configuration());
+		target.add(listContainer);
+		refresh(target);
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
new file mode 100644
index 0000000..f6b7f92
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
@@ -0,0 +1,83 @@
+<?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>
+       <script type="text/javascript">
+           function omConfigPanelInit() {
+               var documentHeight = $(document).height();
+               $('#adminForm').height(documentHeight-114);
+               $('#adminTable').height(documentHeight-144);
+           }
+       </script>
+    </wicket:head>
+	<wicket:panel>	
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="264" /></th>
+							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByKey"></span><wicket:ommessage key="265" /></th>
+							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByValue"></span><wicket:ommessage key="598" /></th>
+						</tr>	
+					</thead>
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer" >	
+				    		<tr wicket:id="configList">
+								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="configuration_id"></span></div></td>
+								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="conf_key"></span></div></td>
+								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="conf_value"></span></div></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="266" /></legend>
+							<div class="formelement">
+							    <label><wicket:ommessage key="267" /></label><input type="text" wicket:id="conf_key"/>
+				            </div>
+				            <div class="formelement">
+                                   <label><wicket:ommessage key="271" /></label><input type="text" wicket:id="conf_value"/>
+				            </div>
+                               <div class="formelement">
+                                   <label><wicket:ommessage key="268" /></label><span wicket:id="updatetime"/>
+				            </div>
+                               <div class="formelement">
+                                   <label><wicket:ommessage key="269" /></label><span wicket:id="user.login"/>
+				            </div>
+                               <div class="formelement">
+                                   <label><wicket:ommessage key="270" /></label><textarea wicket:id="comment"/>
+				            </div>
+						</fieldset>
+					</div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
new file mode 100644
index 0000000..bf99be4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.configurations;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * add/update/delete {@link Configuration}
+ * 
+ * @author swagner
+ * 
+ */
+public class ConfigsPanel extends AdminPanel {
+	private static final long serialVersionUID = -1L;
+	private ConfigForm form;
+	private final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("omConfigPanelInit();");
+	}
+
+	public ConfigsPanel(String id) {
+		super(id);
+		
+		SearchableDataView<Configuration> dataView = new SearchableDataView<Configuration>("configList"
+			, new SearchableDataProvider<Configuration>(ConfigurationDao.class)) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(final Item<Configuration> item) {
+				final Configuration c = item.getModelObject();
+				item.add(new Label("configuration_id", c.getConfiguration_id()));
+				item.add(new Label("conf_key", c.getConf_key()));
+				item.add(new Label("conf_value", c.getConf_value()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.hideNewRecord();
+						form.setModelObject(c);
+						target.add(form, listContainer);
+						target.appendJavaScript("omConfigPanelInit();");
+					}
+				});
+				item.add(AttributeModifier.replace("class", "clickable ui-widget-content"
+						+ (c.getConfiguration_id().equals(form.getModelObject().getConfiguration_id()) ? " ui-state-default" : "")));
+			}
+		};
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<Configuration> container = new DataViewContainer<Configuration>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<Configuration>("orderById", "configuration_id", container))
+			.addLink(new OmOrderByBorder<Configuration>("orderByKey", "conf_key", container))
+			.addLink(new OmOrderByBorder<Configuration>("orderByValue", "conf_value", container));
+		add(container.getLinks());
+		add(navigator);
+		
+		form = new ConfigForm("form", listContainer, new Configuration());
+		form.showNewRecord();
+        add(form);
+		
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html b/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
new file mode 100644
index 0000000..045f649
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
@@ -0,0 +1,56 @@
+<?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="adminPanel">
+		<div class="adminPanelColumnTable">
+			<span wicket:id="navigator">[dataview navigator]</span>
+			<table class="adminListTable">
+				<thead>
+					<tr>
+						<th class="ui-widget-header"><wicket:ommessage key="599" /></th>
+						<th class="ui-widget-header"><wicket:ommessage key="600" /></th>
+						<th class="ui-widget-header"><wicket:ommessage key="601" /></th>
+						<th class="ui-widget-header"><wicket:ommessage key="602" /></th>
+						<th class="ui-widget-header"><wicket:ommessage key="603" /></th>
+						<th class="ui-widget-header"><wicket:ommessage key="1501" /></th>
+					</tr>
+				</thead>
+				<tbody wicket:id="container" >
+					<tr wicket:id="clientList">
+						<td wicket:id="id"></td>
+						<td wicket:id="login"></td>
+						<td wicket:id="since"></td>
+						<td wicket:id="scope"></td>
+						<td><a wicket:id="kick"><wicket:ommessage key="603" /></a></td>
+						<td wicket:id="server"></td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="adminPanelColumnForm">
+			<table wicket:id="details" style="width: 450px;">
+				<tr wicket:id="line"><td wicket:id="name"></td><td wicket:id="value"></td></tr>
+			</table>
+		</div>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java b/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
new file mode 100644
index 0000000..2444e46
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -0,0 +1,142 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.connection;
+
+import static java.lang.Boolean.TRUE;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.IUserService;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.RepeatingView;
+
+public class ConnectionsPanel extends AdminPanel {
+	private static final long serialVersionUID = -5074847509312630580L;
+
+	public ConnectionsPanel(String id) {
+		super(id);
+	
+		SearchableDataProvider<Client> sdp = new SearchableDataProvider<Client>(null) {
+			private static final long serialVersionUID = 1L;
+
+			//FIXME add search
+			
+			@Override
+			public Iterator<? extends Client> iterator(long first, long count) {
+				//FIXME add grouping by public SID
+				List<Client> l = new ArrayList<Client>(getBean(ISessionManager.class).getClients());
+				return l.subList((int)Math.max(0, first), (int)Math.min(first + count, l.size())).iterator();
+			}
+			
+			@Override
+			public long size() {
+				return getBean(ISessionManager.class).getClients().size();
+			}
+		};
+		final WebMarkupContainer container = new WebMarkupContainer("container");
+		final WebMarkupContainer details = new WebMarkupContainer("details");
+		SearchableDataView<Client> dataView = new SearchableDataView<Client>("clientList", sdp) {
+			private static final long serialVersionUID = 2863400959190625386L;
+
+			@Override
+			protected void populateItem(final Item<Client> item) {
+				Client c = item.getModelObject();
+				item.add(new Label("id", c.getStreamid()));
+				item.add(new Label("login", c.getUsername()));
+				item.add(new Label("since", c.getConnectedSince()));
+				item.add(new Label("scope", c.getScope()));
+				item.add(new Label("server", c.getServer() == null ? "no cluster" : c.getServer().getAddress())); //FIXME localization
+				item.add(new ConfirmableAjaxLink("kick", 605) {
+					private static final long serialVersionUID = 1860369399943234763L;
+
+					@Override
+					public void onClick(AjaxRequestTarget target) {
+						Client c = item.getModelObject();
+						getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
+								, c.getServer() == null ? 0 : c.getServer().getId());
+						target.add(container, details.setVisible(false));
+					}
+				}.setEnabled(!TRUE.equals(c.getIsScreenClient()) && !TRUE.equals(c.getIsAVClient())));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 9180559138402389613L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						Field[] ff = Client.class.getDeclaredFields();
+						RepeatingView lines = new RepeatingView("line");
+						Client c = item.getModelObject();
+						for (Field f : ff) {
+							int mod = f.getModifiers();
+							if (Modifier.isStatic(mod) || Modifier.isTransient(mod)) {
+								continue;
+							}
+							WebMarkupContainer line = new WebMarkupContainer(lines.newChildId());
+							line.add(new Label("name", f.getName()));
+							String val = "";
+							try {
+								f.setAccessible(true);
+								val = "" + f.get(c);
+							} catch (Exception e) {
+								//noop
+							}
+							line.add(new Label("value", val));
+							lines.add(line);
+						}
+						details.addOrReplace(lines);
+						target.add(details.setVisible(true));
+					}
+				});
+				item.add(AttributeModifier.append("class", "clickable ui-widget-content"));
+			}
+		};
+		add(container.add(dataView).setOutputMarkupId(true), details.setVisible(false).setOutputMarkupPlaceholderTag(true));
+		
+		add(new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(container);
+			}
+		});
+	}
+
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
new file mode 100644
index 0000000..3a5b666
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -0,0 +1,169 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.Select2Choice;
+
+public class GroupForm extends AdminBaseForm<Organisation> {
+	private static final long serialVersionUID = -1720731686053912700L;
+	private GroupUsersPanel usersPanel;
+	private WebMarkupContainer groupList;
+	private Select2Choice<User> userToadd = null;
+	
+	static String formatUser(User choice) {
+		return String.format("%s [%s %s]", choice.getLogin(), choice.getFirstname(), choice.getLastname());
+	}
+	
+	public GroupForm(String id, WebMarkupContainer groupList, Organisation organisation) {
+		super(id, new CompoundPropertyModel<Organisation>(organisation));
+		this.groupList = groupList;
+		setOutputMarkupId(true);
+		
+		add(new RequiredTextField<String>("name").setLabel(Model.of(WebSession.getString(165))));
+		usersPanel = new GroupUsersPanel("users", getOrgId());
+		add(usersPanel);
+
+		add(userToadd = new Select2Choice<User>("user2add", Model.of((User)null), new AdminUserChoiceProvider() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(User choice) {
+				return formatUser(choice);
+			}
+		}));
+		userToadd.add(new AjaxFormComponentUpdatingBehavior("change") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				Organisation o = GroupForm.this.getModelObject();
+				User u = userToadd.getModelObject();
+				boolean found = false;
+				if (o.getOrganisation_id() != null) {
+					found = null != getBean(OrganisationUserDao.class).getByOrganizationAndUser(o.getOrganisation_id(), u.getUser_id());
+				}
+				if (!found && u != null) {
+					for (Organisation_Users ou : usersPanel.getUsers2add()) {
+						if (ou.getUser().getUser_id().equals(u.getUser_id())) {
+							found = true;
+							break;
+						}
+					}
+					if (!found) {
+						Organisation_Users ou = new Organisation_Users(o);
+						ou.setUser(u);
+						usersPanel.getUsers2add().add(ou);
+
+						userToadd.setModelObject(null);
+						target.add(usersPanel, userToadd);
+					}
+				}
+			}
+		});
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+	
+	public void updateView(AjaxRequestTarget target) {
+		userToadd.setModelObject(null);
+		usersPanel.update(getOrgId());
+		target.add(this, groupList);
+		target.appendJavaScript("groupsInit();");
+	}
+
+	private long getOrgId() {
+		return getModelObject().getOrganisation_id() != null ? getModelObject().getOrganisation_id() : 0;
+	}
+	
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
+		setModelObject(new Organisation());
+		updateView(target);
+	}
+	
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		Organisation org = getModelObject();
+		if (org.getOrganisation_id() != null) {
+			org = getBean(OrganisationDao.class).get(org.getOrganisation_id());
+		} else {
+			org = new Organisation();
+		}
+		setModelObject(org);
+		updateView(target);
+	}
+	
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		getBean(OrganisationDao.class).delete(getModelObject(), getUserId());
+		setModelObject(new Organisation());
+		updateView(target);
+	}
+	
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		Organisation o = getModelObject();
+		o = getBean(OrganisationDao.class).update(o, getUserId());
+		setModelObject(o);
+		getBean(OrganisationUserDao.class).update(usersPanel.getUsers2add(), getUserId());
+		hideNewRecord();
+		updateView(target);
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
new file mode 100644
index 0000000..47ceb7d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
@@ -0,0 +1,45 @@
+<?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="usergroupspanel">
+			<span wicket:id="navigator">[dataview navigator]</span>
+			<table class="adminListTable" style="min-width: 440px; max-width: 440px" >
+                <tr>
+                    <th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:ommessage="title:98"><wicket:ommessage key="98" /></th>
+                    <th class="ui-widget-header" style="width: 360px"><wicket:ommessage key="177" /></th>
+                    <th class="ui-widget-header" style="width: 34px"><wicket:ommessage key="275" /></th>
+                </tr>   
+            </table>
+            <div class="tableWrapper" style="width: 460px; height: 460px;">
+                <table class="adminListTable" style="min-width: 440px; max-width: 440px">  
+                    <tbody>   
+                        <tr wicket:id="userList" class="ui-widget-content">
+                            <td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
+                            <td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
+                            <td style="width: 34px"><div style="width: 34px"><div class="formCancelButton" wicket:id="deleteUserBtn" wicket:ommessage="title:274"><input/></div></div></td>
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
new file mode 100644
index 0000000..f148111
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ConfirmCallListener;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+
+public class GroupUsersPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+	private long organisationId;
+	private List<Organisation_Users> users2add = new ArrayList<Organisation_Users>();
+	
+	public GroupUsersPanel(String id, long orgId) {
+		super(id);
+		this.organisationId = orgId;
+		setOutputMarkupId(true);
+		
+		SearchableDataView<Organisation_Users> dataView = new SearchableDataView<Organisation_Users>("userList", new OrgUserDataProvider()) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(Item<Organisation_Users> item) {
+				final Organisation_Users orgUser = item.getModelObject();
+				User u = orgUser.getUser();
+				item.add(new CheckBox("isModerator").add(new OnChangeAjaxBehavior() {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onUpdate(AjaxRequestTarget target) {
+						if (orgUser.getOrganisation_users_id() != null) {
+							getBean(OrganisationUserDao.class).update(orgUser, WebSession.getUserId());
+						}
+					}
+				}));
+				Label label = new Label("label", u == null ? "" : GroupForm.formatUser(u));
+				if (orgUser.getOrganisation_users_id() == null) {
+					label.add(AttributeAppender.append("class", "newItem"));
+				}
+				item.add(label);
+				item.add(new WebMarkupContainer("deleteUserBtn").add(new AjaxEventBehavior("onclick"){
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+						super.updateAjaxAttributes(attributes);
+						attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+					}
+					
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						if (orgUser.getOrganisation_users_id() == null) {
+							for (int i = 0; i < users2add.size(); ++i) {
+								//FIXME ineffective
+								if (users2add.get(i).getUser().getUser_id().equals(orgUser.getUser().getUser_id())) {
+									users2add.remove(i);
+									break;
+								}
+							}
+						} else {
+							getBean(OrganisationUserDao.class).delete(orgUser, WebSession.getUserId());
+						}
+						target.add(GroupUsersPanel.this);
+					}
+				}));
+			}
+		};
+		add(dataView).setOutputMarkupId(true);
+		add(new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(GroupUsersPanel.this);
+			}
+		});
+	}
+	
+	void update(long orgId) {
+		organisationId = orgId;
+		users2add.clear();
+	}
+	
+	List<Organisation_Users> getUsers2add() {
+		return users2add;
+	}
+	
+	private class OrgUserDataProvider extends SearchableDataProvider<Organisation_Users> {
+		private static final long serialVersionUID = 1L;
+
+		OrgUserDataProvider() {
+			super(OrganisationUserDao.class);
+		}
+		
+		protected OrganisationUserDao getDao() {
+			return (OrganisationUserDao)super.getDao();
+		}
+		
+		public long size() {
+			return users2add.size() + (search == null ? getDao().count(organisationId) : getDao().count(organisationId, search));
+		}
+		
+		public java.util.Iterator<? extends Organisation_Users> iterator(long first, long count) {
+			List<Organisation_Users> list = new ArrayList<Organisation_Users>();
+			list.addAll(users2add);
+			list.addAll(search == null && getSort() == null
+					? getDao().get(organisationId, (int)first, (int)count)
+					: getDao().get(organisationId, search, (int)first, (int)count, getSortStr()));
+			
+			return list.iterator();
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
new file mode 100644
index 0000000..49b7323
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
@@ -0,0 +1,73 @@
+<?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>
+		<script type="text/javascript">
+			function groupsInit() {
+				var documentHeight = $(document).height();
+                $('#adminForm').height(documentHeight-114);
+                $('#adminTable').height(documentHeight-144);
+			};
+		</script>
+	</wicket:head>
+	<wicket:panel>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<tr>
+						<th class="two_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="164" /></th>
+						<th class="two_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="165" /></th>
+					</tr>	
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">	
+						<tbody wicket:id="listContainer">	
+				    		<tr wicket:id="groupList">
+								<td class="two_column_layout_column1"><div class="two_column_layout_divcolumn1"><span wicket:id="organisation_id"></span></div></td>
+								<td class="two_column_layout_column2"><div class="two_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="170" /></legend>
+							<div class="formelement">
+								<label><wicket:ommessage key="171" /></label><input type="text" wicket:id="name" />
+							</div>
+							<div class="formelement">
+								<label style="font-weight: bold;"><wicket:ommessage key="178" /></label><input type="hidden" wicket:id="user2add" class="input"/>
+							</div>
+							<div class="formelement">
+								<div wicket:id="users"></div>
+							</div>
+						</fieldset>
+					</div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
new file mode 100644
index 0000000..c5e7ed3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -0,0 +1,103 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.groups;
+
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * Modify/ CRUD operations for {@link Organisation} and
+ * {@link Organisation_Users}
+ * 
+ * @author swagner
+ * 
+ */
+public class GroupsPanel extends AdminPanel {
+	private static final long serialVersionUID = 1L;
+	private GroupForm form;
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("groupsInit();");
+	}
+
+	public GroupsPanel(String id) {
+		super(id);
+		final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+        
+		//Adding the Group Form
+		form = new GroupForm("form", listContainer, new Organisation());
+        add(form);
+
+        //List view
+        SearchableDataView<Organisation> dataView = new SearchableDataView<Organisation>("groupList", new SearchableDataProvider<Organisation>(OrganisationDao.class)) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(Item<Organisation> item) {
+				final Organisation o = item.getModelObject();
+				item.add(new Label("organisation_id", "" + o.getOrganisation_id()));
+				item.add(new Label("name", "" + o.getName()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.hideNewRecord();
+						form.setModelObject(o);
+						form.updateView(target);
+						target.add(listContainer);
+						target.appendJavaScript("groupsInit();");
+					}
+				});
+				item.add(AttributeModifier.append("class", "clickable ui-widget-content"
+						+ (o.getOrganisation_id().equals(form.getModelObject().getOrganisation_id()) ? " ui-state-active" : "")));
+			}
+		};
+
+		//Paging
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<Organisation> container = new DataViewContainer<Organisation>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<Organisation>("orderById", "organisation_id", container))
+			.addLink(new OmOrderByBorder<Organisation>("orderByName", "name", container));
+		add(container.getLinks());
+		add(navigator);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java b/src/web/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
new file mode 100644
index 0000000..0140d91
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/labels/AddLanguageForm.java
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * 
+ * @author solomax, swagner
+ * 
+ */
+public class AddLanguageForm extends Form<Void> {
+	private static final long serialVersionUID = 8743289610974962636L;
+	private String newLanguageName;
+	private String newLanguageISO;
+	
+	public AddLanguageForm(String id, final LangPanel langPanel) {
+		super(id);
+		
+		add(new RequiredTextField<String>("name", new PropertyModel<String>(this, "newLanguageName")));
+		add(new RequiredTextField<String>("iso", new PropertyModel<String>(this, "newLanguageISO")));
+		
+		add(new AjaxButton("add", Model.of(WebSession.getString(366L)), this) {
+			private static final long serialVersionUID = -552597041751688740L;
+
+			@Override
+			public void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				FieldLanguageDao langDao = Application.getBean(FieldLanguageDao.class);
+				
+				FieldLanguage fl = new FieldLanguage();
+				fl.setLanguage_id(langDao.getNextAvailableId());
+				fl.setStarttime(new Date());
+				fl.setDeleted(false);
+				fl.setName(newLanguageName);
+				fl.setRtl(false); //FIXME
+				fl.setCode(newLanguageISO);
+				
+				try {
+					langDao.updateLanguage(fl);
+				} catch (Exception e) {
+					// TODO add feedback message
+					e.printStackTrace();
+				}
+
+				langPanel.getLangForm().updateLanguages(target);
+				/* FIXME
+				languages.setChoices(langDao.getLanguages());
+				target.add(languages);
+				*/
+				target.appendJavaScript("$('#addLanguage').dialog('close');");
+			}
+		});
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java b/src/web/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
new file mode 100644
index 0000000..0eec5f6
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+
+/**
+ * Add/edit/delete {@link Fieldlanguagesvalues}
+ * 
+ * @author swagner
+ * 
+ */
+public class LabelsForm extends AdminBaseForm<Fieldlanguagesvalues> {
+	private static final long serialVersionUID = -1309878909524329047L;
+	private LangPanel panel;
+	
+	public LabelsForm(String id, LangPanel panel, Fieldlanguagesvalues fieldlanguagesvalues) {
+		super(id, new CompoundPropertyModel<Fieldlanguagesvalues>(fieldlanguagesvalues));
+		this.panel = panel;
+		
+		add(new Label("fieldvalues.fieldvalues_id"));
+		add(new TextField<String>("fieldvalues.name"));
+		add(new TextArea<String>("value"));
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> f) {
+		Fieldlanguagesvalues flv = new Fieldlanguagesvalues();
+		flv.setLanguage_id(panel.language.getLanguage_id());
+		this.setModelObject(flv);
+		target.add(this);
+		target.appendJavaScript("labelsInit();");
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		Fieldlanguagesvalues flv = getModelObject();
+		if (flv.getFieldlanguagesvalues_id() != null) {
+			flv = Application.getBean(FieldLanguagesValuesDao.class)
+					.get(getModelObject().getFieldlanguagesvalues_id());
+		} else {
+			flv = new Fieldlanguagesvalues();
+		}
+		this.setModelObject(flv);
+		target.add(this);
+		target.appendJavaScript("labelsInit();");
+	}
+
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		Fieldlanguagesvalues flv = getModelObject();
+		Fieldvalues fv = flv.getFieldvalues();
+		Application.getBean(FieldValueDao.class).update(fv, WebSession.getUserId());
+		
+		flv.setFieldvalues(fv);
+		Application.getBean(FieldLanguagesValuesDao.class)
+			.update(flv, WebSession.getUserId());
+		hideNewRecord();
+		target.add(panel.listContainer);
+		target.appendJavaScript("labelsInit();");
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(FieldLanguagesValuesDao.class)
+			.delete(getModelObject(), WebSession.getUserId());
+		target.add(panel.listContainer);
+		target.appendJavaScript("labelsInit();");
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/labels/LangForm.java b/src/web/java/org/apache/openmeetings/web/admin/labels/LangForm.java
new file mode 100644
index 0000000..1c94ee1
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/labels/LangForm.java
@@ -0,0 +1,114 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.web.common.ConfirmCallListener;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Modify the language selection, add/delete {@link FieldLanguage}
+ * 
+ * @author swagner
+ * 
+ */
+public class LangForm extends Form<Void> {
+	private static final long serialVersionUID = 2837702941211636609L;
+	private DropDownChoice<FieldLanguage> languages;
+
+	public void updateLanguages(AjaxRequestTarget target) {
+		FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
+		languages.setChoices(langDao.getLanguages());
+		// add(languages);
+		target.add(languages);
+	}
+
+	/**
+	 * Render Main
+	 * 
+	 * @param id
+	 * @param listContainer
+	 * @param language
+	 * @param langPanel
+	 */
+	public LangForm(String id, final WebMarkupContainer listContainer, final LangPanel langPanel) {
+		super(id);
+		setOutputMarkupId(true);
+
+		FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
+		
+		languages = new DropDownChoice<FieldLanguage>("language"
+				, new PropertyModel<FieldLanguage>(langPanel, "language")
+				, langDao.getLanguages()
+				, new ChoiceRenderer<FieldLanguage>("name", "language_id"));
+				
+		languages.add(new AjaxFormComponentUpdatingBehavior("onchange") {
+			private static final long serialVersionUID = -2055912815073387536L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		});
+		add(languages);
+
+		add(new WebMarkupContainer("deleteLangBtn").add(new AjaxEventBehavior("onclick"){
+			private static final long serialVersionUID = -1650946343073068686L;
+
+			@Override
+			protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+				super.updateAjaxAttributes(attributes);
+				attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+			}
+			
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				langPanel.language.setDeleted(true);
+				FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
+				try {
+					langDao.updateLanguage(langPanel.language);
+				} catch (Exception e) {
+					// TODO add feedback message
+					e.printStackTrace();
+				}
+				languages.setChoices(langDao.getLanguages());
+				target.add(languages);
+				// FIXME need to force update list container
+				target.add(listContainer);
+			}
+		})); 
+
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.html b/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
new file mode 100644
index 0000000..1d64b25
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -0,0 +1,125 @@
+<?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>
+			<span wicket:id="importFeedback"/>
+		</div>
+		<script type="text/javascript">
+			function labelsInit() {
+				$('#addLanguage').dialog({
+					closeOnEscape: true
+					, autoOpen: false
+					, resizable: false
+				});
+				var documentHeight = $(document).height();
+                $('#adminForm').height(documentHeight-114);
+                $('#adminTable').height(documentHeight-164);
+			};
+		</script>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<form wicket:id="langForm" class="addLanguagePanel">
+					<table>
+						<tr>
+							<td>
+								<div class="formNewButton" wicket:ommessage="title:362" 
+									onclick="$('#addLanguage :text').val(''); $('#addLanguage').dialog('open');"><input type="button" title=""/></div>
+							</td>
+							<td>
+								<div wicket:id="deleteLangBtn" class="formCancelButton" wicket:ommessage="title:363"><input type="button" title=""/></div>
+							</td>
+							<td>
+								<select wicket:id="language"></select>
+							</td>
+							<td>
+								<span wicket:id="export" class="btn"><wicket:ommessage key="360"/></span>
+							</td>
+							<td class="profile">
+								<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
+									<span class="btn btn-file"><wicket:ommessage key="387"/><input type="file" accept="text/xml" wicket:id="fileInput"/></span>
+								</div>
+								<span wicket:id="progress">[progressbar]</span>
+							</td>
+						</tr>
+					</table>
+				</form>
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="350" /></th>
+							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="351" /></th>
+							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByValue"></span><wicket:ommessage key="352" /></th>
+						</tr>
+					</thead>	
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer" >
+				    		<tr wicket:id="langList">
+								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="lblId"></span></div></td>
+								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="value"></span></div></td>
+							</tr>
+						</tbody>	
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="353" /></legend>
+							<div class="formelement">
+	                             <label><wicket:ommessage key="356" /></label><span wicket:id="fieldvalues.fieldvalues_id"></span>
+							</div>
+	                         <div class="formelement">
+	                             <label><wicket:ommessage key="354" /></label><input type="text" wicket:id="fieldvalues.name"/>
+							</div>
+	                        <div class="formelement">
+	                             <label><wicket:ommessage key="355" /></label><textarea wicket:id="value"></textarea>
+	                        </div> 
+						</fieldset>
+					</div>
+				</form>
+			</div>
+		</div>
+		<div id="addLanguage" wicket:ommessage="title:364" style="display: none;">
+			<form wicket:id="addLangForm">
+				<table>
+					<tr>
+						<td><wicket:ommessage key="365" /></td>
+						<td><input type="text" wicket:id="name"/></td>
+					</tr>
+					<tr>
+						<td><wicket:ommessage key="1422" /></td>
+						<td><input type="text" wicket:id="iso"/></td>
+					</tr>
+					<tr>
+						<td align="right" colspan="2"><input type="submit" wicket:id="add"/></td>
+					</tr>
+				</table>
+			</form>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.java b/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
new file mode 100644
index 0000000..50872b2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
@@ -0,0 +1,284 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.labels;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.backup.LanguageImport;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.label.FieldValueDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues;
+import org.apache.openmeetings.db.entity.label.Fieldvalues;
+import org.apache.openmeetings.util.LangExport;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Language Editor, add/insert/update {@link Fieldlanguagesvalues} and
+ * add/delete {@link FieldLanguage} contains several Forms and one list
+ * 
+ * @author solomax, swagner
+ * 
+ */
+public class LangPanel extends AdminPanel {
+	private static final Logger log = Red5LoggerFactory.getLogger(LangPanel.class, webAppRootKey);
+	
+	private static final long serialVersionUID = 5904180813198016592L;
+
+	FieldLanguage language;
+	final WebMarkupContainer listContainer;
+	private LangForm langForm;
+	private FileUploadField fileUploadField;
+	// Create feedback panels
+	private final FeedbackPanel importFeedback = new FeedbackPanel("importFeedback");
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("labelsInit();");
+	}
+
+	public LangPanel(String id) {
+		super(id);
+		// Create feedback panels
+		add(importFeedback.setOutputMarkupId(true));
+		FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
+		language = langDao.getFieldLanguageById(1L);
+
+		Fieldlanguagesvalues flv = new Fieldlanguagesvalues();
+		flv.setLanguage_id(language.getLanguage_id());
+		final LabelsForm form = new LabelsForm("form", this, flv);
+		form.showNewRecord();
+		add(form);
+
+		final SearchableDataView<Fieldvalues> dataView = new SearchableDataView<Fieldvalues>(
+				"langList"
+				, new SearchableDataProvider<Fieldvalues>(FieldValueDao.class) {
+					private static final long serialVersionUID = -6822789354860988626L;
+
+					@Override
+					protected FieldValueDao getDao() {
+						return (FieldValueDao)super.getDao();
+					}
+					
+					@Override
+					public long size() {
+						return search == null ? getDao().count() : getDao().count(language.getLanguage_id(), search);
+					}
+					
+					public Iterator<? extends Fieldvalues> iterator(long first, long count) {
+						return (search == null && getSort() == null
+								? getDao().get(language.getLanguage_id(), (int)first, (int)count)
+								: getDao().get(language.getLanguage_id(), search, (int)first, (int)count, getSortStr())).iterator();
+					}
+				}) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(final Item<Fieldvalues> item) {
+				final Fieldvalues fv = item.getModelObject();
+				item.add(new Label("lblId", "" + fv.getFieldvalues_id()));
+				item.add(new Label("name", fv.getName()));
+				item.add(new Label("value", fv.getFieldlanguagesvalue() != null ? fv.getFieldlanguagesvalue().getValue() : null));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(fv.getFieldlanguagesvalue());
+						form.hideNewRecord();
+						target.add(form, listContainer);
+						target.appendJavaScript("labelsInit();");
+					}
+				});
+				Long formFvId = form.getModelObject().getFieldvalues() == null ? null : form.getModelObject().getFieldvalues().getFieldvalues_id();
+				item.add(AttributeModifier.append("class", "clickable ui-widget-content" + (fv.getFieldvalues_id().equals(formFvId) ? " ui-state-active" : "")));
+			}
+		};
+
+		listContainer = new WebMarkupContainer("listContainer");
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				dataView.modelChanging();
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<Fieldvalues> container = new DataViewContainer<Fieldvalues>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<Fieldvalues>("orderById", "fieldvalues.fieldvalues_id", container))
+			.addLink(new OmOrderByBorder<Fieldvalues>("orderByName", "fieldvalues.name", container))
+			.addLink(new OmOrderByBorder<Fieldvalues>("orderByValue", "value", container));
+		add(container.getLinks());
+		add(navigator);
+		langForm = new LangForm("langForm", listContainer, this);
+		fileUploadField = new FileUploadField("fileInput");
+		langForm.add(fileUploadField);
+		langForm.add(new UploadProgressBar("progress", langForm, fileUploadField));
+		fileUploadField.add(new AjaxFormSubmitBehavior(langForm, "onchange") {
+			private static final long serialVersionUID = 2160216679027859231L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				FileUpload download = fileUploadField.getFileUpload();
+				try {
+					if (download == null || download.getInputStream() == null) {
+						importFeedback.error("File is empty");
+						return;
+					}
+					getBean(LanguageImport.class)
+						.addLanguageByDocument(language.getLanguage_id(), download.getInputStream(), getUserId());
+				} catch (Exception e) {
+					log.error("Exception on panel language editor import ", e);
+					importFeedback.error(e);
+				}
+
+				// repaint the feedback panel so that it is hidden
+				target.add(importFeedback);
+			}
+		});
+
+		// Add a component to download a file without page refresh
+		final AjaxDownload download = new AjaxDownload();
+		langForm.add(download);
+
+		langForm.add(new AjaxButton("export"){
+			private static final long serialVersionUID = 1L;
+
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+
+				final List<Fieldlanguagesvalues> flvList = getBean(FieldLanguagesValuesDao.class).getMixedFieldValuesList(language.getLanguage_id());
+
+				FieldLanguage fl = getBean(FieldLanguageDao.class).getFieldLanguageById(language.getLanguage_id());
+				if (fl != null && flvList != null) {
+					download.setFileName(fl.getName() + ".xml");
+					download.setResourceStream(new AbstractResourceStream() {
+						private static final long serialVersionUID = 1L;
+						private transient StringWriter sw;
+						private transient InputStream is;
+						
+						public InputStream getInputStream() throws ResourceStreamNotFoundException {
+							try {
+								Document doc = createDocument(flvList, getBean(FieldLanguagesValuesDao.class).getUntranslatedFieldValuesList(language.getLanguage_id()));
+								sw = new StringWriter();
+								LangExport.serializetoXML(sw, "UTF-8", doc);
+								is = new ByteArrayInputStream(sw.toString().getBytes());
+								return is;
+							} catch (Exception e) {
+								throw new ResourceStreamNotFoundException(e);
+							}
+						}
+						
+						public void close() throws IOException {
+							if (is != null) {
+								is.close();
+								is = null;
+							}
+							sw = null;
+						}
+					});//new FileResourceStream(new File(requestedFile)));
+					download.initiate(target);
+				}
+				
+				// repaint the feedback panel so that it is hidden
+				target.add(importFeedback);
+			}
+			
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(importFeedback);
+			}
+			
+		});
+		
+		add(langForm);
+		add(new AddLanguageForm("addLangForm", this));
+		add(BootstrapFileUploadBehavior.INSTANCE);
+	}
+
+	public LangForm getLangForm() {
+		return langForm;
+	}
+
+	public static Document createDocument(List<Fieldlanguagesvalues> flvList, List<Fieldlanguagesvalues> untranslatedList) throws Exception {
+		Document document = LangExport.createDocument();
+		Element root = LangExport.createRoot(document);
+
+		for (Fieldlanguagesvalues flv : flvList) {
+			Element eTemp = root.addElement("string")
+					.addAttribute("id", flv.getFieldvalues().getFieldvalues_id().toString())
+					.addAttribute("name", flv.getFieldvalues().getName());
+			Element value = eTemp.addElement("value");
+			value.addText(flv.getValue());
+		}
+
+		//untranslated
+		if (untranslatedList.size() > 0) {
+			root.addComment("Untranslated strings");
+			for (Fieldlanguagesvalues flv : untranslatedList) {
+				Element eTemp = root.addElement("string")
+						.addAttribute("id", flv.getFieldvalues().getFieldvalues_id().toString())
+						.addAttribute("name", flv.getFieldvalues().getName());
+				Element value = eTemp.addElement("value");
+				value.addText(flv.getValue());
+			}
+		}
+
+		return document;
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
new file mode 100644
index 0000000..e80fa50
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.ldaps;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Form components to insert/update/delete {@link LdapConfig}
+ * 
+ * @author swagner
+ * 
+ */
+public class LdapForm extends AdminBaseForm<LdapConfig> {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer listContainer;
+
+	public LdapForm(String id, WebMarkupContainer listContainer,
+			final LdapConfig ldapConfig) {
+		super(id, new CompoundPropertyModel<LdapConfig>(ldapConfig));
+		setOutputMarkupId(true);
+		this.listContainer = listContainer;
+		
+		add(new RequiredTextField<String>("name").setLabel(Model.of(WebSession.getString(1108))));
+		add(new CheckBox("isActive"));
+		add(forDatePattern("inserted", WEB_DATE_PATTERN));
+		add(new Label("insertedby.login"));
+		add(forDatePattern("updated", WEB_DATE_PATTERN));
+		add(new Label("updatedby.login"));
+		add(new RequiredTextField<String>("configFileName").setLabel(Model.of(WebSession.getString(1115))));
+		add(new CheckBox("addDomainToUserName"));
+		add(new TextField<String>("domain"));
+		add(new TextArea<String>("comment"));
+
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(LdapConfigDao.class).update(getModelObject(),
+				WebSession.getUserId());
+		LdapConfig ldapConfig = Application.getBean(LdapConfigDao.class)
+				.get(getModelObject().getLdapConfigId());
+		this.setModelObject(ldapConfig);
+		hideNewRecord();
+		target.add(this);
+		target.add(listContainer);
+		target.appendJavaScript("omLdapPanelInit();");
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		this.setModelObject(new LdapConfig());
+		target.add(this);
+		target.appendJavaScript("omLdapPanelInit();");
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		LdapConfig ldapConfig = this.getModelObject();
+		if (ldapConfig.getLdapConfigId() <= 0) {
+			ldapConfig = Application.getBean(LdapConfigDao.class).get(
+					ldapConfig.getLdapConfigId());
+		} else {
+			ldapConfig = new LdapConfig();
+		}
+		this.setModelObject(ldapConfig);
+		target.add(this);
+		target.appendJavaScript("omLdapPanelInit();");
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(LdapConfigDao.class).delete(
+				this.getModelObject(), WebSession.getUserId());
+		this.setModelObject(new LdapConfig());
+		target.add(listContainer);
+		target.add(this);
+		target.appendJavaScript("omLdapPanelInit();");
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
new file mode 100644
index 0000000..bc5f041
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
@@ -0,0 +1,102 @@
+<?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>
+       <script type="text/javascript">
+           function omLdapPanelInit() {
+               var documentHeight = $(document).height();
+               $('#adminForm').height(documentHeight-114);
+               $('#adminTable').height(documentHeight-144);
+           }
+       </script>
+    </wicket:head>
+	<wicket:panel>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="1104" /></th>
+							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="1105" /></th>
+							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByFile"></span><wicket:ommessage key="1106" /></th>
+						</tr>
+					</thead>
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer">
+				    		<tr wicket:id="ldapList">
+								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="ldapConfigId"></span></div></td>
+								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="configFileName"></span></div></td>
+							</tr>
+						</tbody>			
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="1107" /></legend>
+							<div class="formelement">
+	                            <label><wicket:ommessage key="1108" /></label><input type="text" wicket:id="name"/>
+				            </div>
+				            <div class="formelement">
+	                            <label><wicket:ommessage key="1109" /></label><input type="checkbox" class="formcheckbox" wicket:id="isActive"/>
+				            </div>
+				            <div class="formelement">
+	                            <label><wicket:ommessage key="1110" /></label><span wicket:id="inserted"/>
+	                        </div>
+				            <div class="formelement">
+	                            <label><wicket:ommessage key="1111" /></label><span wicket:id="insertedby.login"/>
+				            </div>
+				            <div class="formelement">
+	                            <label><wicket:ommessage key="1112" /></label><span wicket:id="updated"/>
+				            </div>
+				            <div class="formelement">
+	                            <label><wicket:ommessage key="1113" /></label><span wicket:id="updatedby.login"/>
+				            </div>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="1114" /></div>
+	                            <br/>
+				                <label><wicket:ommessage key="1115" /></label><input type="text" wicket:id="configFileName"/>
+				            </div>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="1116" /></div>
+	                            <br/>
+				                <label><wicket:ommessage key="1117" /></label><input type="checkbox" class="formcheckbox" wicket:id="addDomainToUserName"/>
+				            </div>
+	                        <div class="formelement">
+	                            <label><wicket:ommessage key="1118" /></label><input type="text" wicket:id="domain"/>
+				            </div>
+	                        <div class="formelement">
+	                            <label><wicket:ommessage key="270" /></label><textarea wicket:id="comment"/>
+				            </div>
+				        </fieldset>
+				    </div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
new file mode 100644
index 0000000..82fda7c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -0,0 +1,100 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.ldaps;
+
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * {@link AdminPanel} to list and modify {@link LdapConfig}
+ * 
+ * @author swagner
+ * 
+ */
+public class LdapsPanel extends AdminPanel {
+	private static final long serialVersionUID = -1L;
+	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	private LdapForm form;
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("omLdapPanelInit();");
+	}
+
+	public LdapsPanel(String id) {
+		super(id);
+		SearchableDataView<LdapConfig> dataView = new SearchableDataView<LdapConfig>("ldapList"
+			, new SearchableDataProvider<LdapConfig>(LdapConfigDao.class)) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(final Item<LdapConfig> item) {
+				final LdapConfig lc = item.getModelObject();
+				item.add(new Label("ldapConfigId", "" + lc.getLdapConfigId()));
+				item.add(new Label("name", "" + lc.getName()));
+				item.add(new Label("configFileName", "" + lc.getConfigFileName()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(lc);
+						form.hideNewRecord();
+						target.add(form, listContainer);
+						target.appendJavaScript("omLdapPanelInit();");
+					}
+				});
+				item.add(AttributeModifier.replace("class", "clickable ui-widget-content"
+						+ (lc.getLdapConfigId() == form.getModelObject().getLdapConfigId() ? " ui-state-active" : "")));
+			}
+		};
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = -1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<LdapConfig> container = new DataViewContainer<LdapConfig>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<LdapConfig>("orderById", "ldapConfigId", container))
+			.addLink(new OmOrderByBorder<LdapConfig>("orderByName", "name", container))
+			.addLink(new OmOrderByBorder<LdapConfig>("orderByFile", "configFileName", container));
+		add(container.getLinks());
+		add(navigator);
+		
+		form = new LdapForm("form", listContainer, new LdapConfig());
+		form.showNewRecord();
+        add(form);
+		
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
new file mode 100644
index 0000000..c330c29
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
@@ -0,0 +1,138 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.oauth;
+
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.auth.SignInPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+public class OAuthForm extends AdminBaseForm<OAuthServer> {
+	private static final long serialVersionUID = 1L;
+	private WebMarkupContainer listContainer;
+	private TextField<String> redirectUriText;
+
+	public OAuthForm(String id, WebMarkupContainer listContainer, OAuthServer server) {
+		super(id, new CompoundPropertyModel<OAuthServer>(server));
+		this.listContainer = listContainer;
+		setOutputMarkupId(true);
+		
+		add(new CheckBox("isEnabled"));
+		add(new RequiredTextField<String>("name").setLabel(Model.of(WebSession.getString(1573))));
+		add(new TextField<String>("iconUrl").setLabel(Model.of(WebSession.getString(1575))));
+		add(new RequiredTextField<String>("clientId").setLabel(Model.of(WebSession.getString(1576))));
+		add(new RequiredTextField<String>("clientSecret").setLabel(Model.of(WebSession.getString(1577))));
+		add(redirectUriText = (TextField<String>) new TextField<String>("redirectUri", Model.of("")).setLabel(Model.of(WebSession.getString(1587))));
+		add(new RequiredTextField<String>("requestKeyUrl").setLabel(Model.of(WebSession.getString(1578))));
+		add(new RequiredTextField<String>("requestTokenUrl").setLabel(Model.of(WebSession.getString(1579))));
+		add(new RequiredTextField<String>("requestTokenAttributes").setLabel(Model.of(WebSession.getString(1586))));
+		add(new RequiredTextField<String>("requestInfoUrl").setLabel(Model.of(WebSession.getString(1580))));
+		add(new RequiredTextField<String>("loginParamName").setLabel(Model.of(WebSession.getString(1582))));
+		add(new RequiredTextField<String>("emailParamName").setLabel(Model.of(WebSession.getString(1583))));
+		add(new TextField<String>("firstnameParamName").setLabel(Model.of(WebSession.getString(1584))));
+		add(new TextField<String>("lastnameParamName").setLabel(Model.of(WebSession.getString(1585))));
+		
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+	
+	@Override
+	protected void onModelChanged() {
+		super.onModelChanged();
+		redirectUriText.setModelObject(SignInPage.getRedirectUri(getModelObject(), this));
+	}
+
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		OAuth2Dao oAuth2Dao = Application.getBean(OAuth2Dao.class);
+		oAuth2Dao.update(getModelObject(), WebSession.getUserId());
+		OAuthServer oauthServer = oAuth2Dao.get(getModelObject().getId());
+		this.setModelObject(oauthServer);
+		hideNewRecord();
+		target.add(this);
+		target.add(listContainer);
+		target.appendJavaScript("oauthPanelInit();");
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		this.setModelObject(new OAuthServer());
+		target.add(this);
+		target.appendJavaScript("oauthPanelInit();");
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		OAuthServer server = this.getModelObject();
+		if (server.getId() <= 0) {
+			server = Application.getBean(OAuth2Dao.class).get(getModelObject().getId());
+		} else {
+			server = new OAuthServer();
+		}
+		this.setModelObject(server);
+		target.add(this);
+		target.appendJavaScript("oauthPanelInit();");
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(OAuth2Dao.class).delete(getModelObject(), WebSession.getUserId());
+		this.setModelObject(new OAuthServer());
+		target.add(listContainer);
+		target.add(this);
+		target.appendJavaScript("oauthPanelInit();");
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+		
+	}
+	
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+		
+	}	
+	
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+		
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
new file mode 100644
index 0000000..53693cc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
@@ -0,0 +1,108 @@
+<?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>
+       <script type="text/javascript">
+           function oauthPanelInit() {
+               var documentHeight = $(document).height();
+               $('#adminForm').height(documentHeight-114);
+               $('#adminTable').height(documentHeight-144);
+           }
+       </script>
+    </wicket:head>
+	<wicket:panel>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="two_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="1104" /></th>
+							<th class="two_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="1105" /></th>
+						</tr>
+					</thead>
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer">
+				    		<tr wicket:id="oauthServersList">
+								<td class="two_column_layout_column1"><div class="two_column_layout_divcolumn1"><span wicket:id="oauthServerId"></span></div></td>
+								<td class="two_column_layout_column2"><div class="two_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+							</tr>
+						</tbody>			
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="1581" /></legend>
+							<div class="formelement">
+								<label><wicket:ommessage key="1574" /></label><input type="checkbox" class="formcheckbox" wicket:id="isEnabled"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1573" /></label><input type="text" wicket:id="name"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1575" /></label><input type="text" wicket:id="iconUrl"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1576" /></label><input type="text" wicket:id="clientId"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1577" /></label><input type="text" wicket:id="clientSecret"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1587" /></label><input type="text" readonly="readonly" wicket:id="redirectUri"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1578" /></label><input type="text" wicket:id="requestKeyUrl"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1579" /></label><input type="text" wicket:id="requestTokenUrl"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1586" /></label><input type="text" wicket:id="requestTokenAttributes"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1580" /></label><input type="text" wicket:id="requestInfoUrl"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1582" /></label><input type="text" wicket:id="loginParamName"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1583" /></label><input type="text" wicket:id="emailParamName"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1584" /></label><input type="text" wicket:id="firstnameParamName"/>
+							</div>
+							<div class="formelement">
+								<label><wicket:ommessage key="1585" /></label><input type="text" wicket:id="lastnameParamName"/>
+							</div>
+						</fieldset>
+					</div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
new file mode 100644
index 0000000..305920c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.oauth;
+
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+public class OAuthPanel extends AdminPanel {
+	private static final long serialVersionUID = -1L;
+	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	private OAuthForm form;
+
+	public OAuthPanel(String id) {
+		super(id);
+		SearchableDataView<OAuthServer> dataView = new SearchableDataView<OAuthServer>("oauthServersList",
+				new SearchableDataProvider<OAuthServer>(OAuth2Dao.class)) {
+
+			private static final long serialVersionUID = -7701640237947383416L;
+
+			@Override
+			protected void populateItem(Item<OAuthServer> item) {
+				final OAuthServer server = item.getModelObject();
+				item.add(new Label("oauthServerId", String.valueOf(server.getId())));
+				item.add(new Label("name", server.getName()));
+				item.add(new AjaxEventBehavior("onclick") {
+
+					private static final long serialVersionUID = 7380727643346943181L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(server);
+						form.hideNewRecord();
+						target.add(form, listContainer);
+						target.appendJavaScript("oauthPanelInit();");
+					}
+				});
+				item.add(AttributeModifier.replace("class", "clickable ui-widget-content"
+						+ (server.getId().equals(form.getModelObject().getId()) ? " ui-state-active" : "")));
+			}
+			
+		};
+		
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = -1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<OAuthServer> container = new DataViewContainer<OAuthServer>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<OAuthServer>("orderById", "oauthServerId", container))
+			.addLink(new OmOrderByBorder<OAuthServer>("orderByName", "name", container));
+		add(container.getLinks());
+		add(navigator);
+		
+		form = new OAuthForm("form", listContainer, new OAuthServer());
+		form.showNewRecord();
+        add(form);
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
new file mode 100644
index 0000000..9387494
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -0,0 +1,395 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.IUserService;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.room.RoomOrganisation;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ConfirmCallListener;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Select2MultiChoice;
+import org.wicketstuff.select2.TextChoiceProvider;
+
+public class RoomForm extends AdminBaseForm<Room> {
+	private static final long serialVersionUID = 1L;
+	private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
+			100L, 150L, 200L, 500L, 1000L);
+	private final WebMarkupContainer roomList;
+	private final TextField<String> pin;
+	private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
+	private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
+	private final ListView<Client> clients;
+	private List<Client> clientsInRoom = null;
+	private IModel<User> moderator2add = Model.of((User)null);
+	
+	public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
+		super(id, new CompoundPropertyModel<Room>(room));
+		this.roomList = roomList;
+		setOutputMarkupId(true);
+		RequiredTextField<String> name = new RequiredTextField<String>("name");
+		name.setLabel(new Model<String>(WebSession.getString(193)));
+		add(name);
+
+		add(new DropDownChoice<Long>("numberOfPartizipants", //
+				DROPDOWN_NUMBER_OF_PARTICIPANTS, //
+				new IChoiceRenderer<Long>() {
+					private static final long serialVersionUID = 1L;
+					public Object getDisplayValue(Long id) {
+						return id;
+					}
+					public String getIdValue(Long id, int index) {
+						return "" + id;
+					}
+				}));
+
+		add(new DropDownChoice<RoomType>("roomtype", Application.getBean(RoomTypeDao.class).getAll(WebSession.getLanguage()),
+				new ChoiceRenderer<RoomType>("label.value", "roomtypes_id")).setRequired(true).setLabel(Model.of(WebSession.getString(194))));
+
+		add(new TextArea<String>("comment"));
+
+		add(new CheckBox("appointment"));
+		add(new CheckBox("ispublic"));
+
+		List<Organisation> orgList = Application.getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
+		final List<RoomOrganisation> orgRooms = new ArrayList<RoomOrganisation>(orgList.size());
+		for (Organisation org : orgList) {
+			orgRooms.add(new RoomOrganisation(org, getModelObject()));
+		}
+		add(new Select2MultiChoice<RoomOrganisation>("roomOrganisations", null, new TextChoiceProvider<RoomOrganisation>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(RoomOrganisation choice) {
+				return choice.getOrganisation().getName();
+			}
+
+			@Override
+			protected Object getId(RoomOrganisation choice) {
+				return choice.getOrganisation().getOrganisation_id();
+			}
+
+			@Override
+			public void query(String term, int page, Response<RoomOrganisation> response) {
+				for (RoomOrganisation or : orgRooms) {
+					if (Strings.isEmpty(term) || (!Strings.isEmpty(term) && or.getOrganisation().getName().contains(term))) {
+						response.add(or);
+					}
+				}
+			}
+
+			@Override
+			public Collection<RoomOrganisation> toChoices(Collection<String> _ids) {
+				List<Long> ids = new ArrayList<Long>();
+				for (String id : _ids) {
+					ids.add(Long.parseLong(id));
+				}
+				List<RoomOrganisation> list = new ArrayList<RoomOrganisation>();
+				for (Organisation o : getBean(OrganisationDao.class).get(ids)) {
+					list.add(new RoomOrganisation(o, RoomForm.this.getModelObject()));
+				}
+				return list;
+			}
+		}));
+
+		add(new CheckBox("isDemoRoom"));
+		TextField<Integer> demoTime = new TextField<Integer>("demoTime");
+		demoTime.setLabel(new Model<String>(WebSession.getString(637)));
+		add(demoTime);
+		add(new CheckBox("allowUserQuestions"));
+		add(new CheckBox("isAudioOnly"));
+		add(new CheckBox("allowFontStyles"));
+		add(new CheckBox("isClosed"));
+		add(new TextField<String>("redirectURL"));
+		add(new CheckBox("waitForRecording"));
+		add(new CheckBox("allowRecording"));
+
+		add(new CheckBox("hideTopBar"));
+		add(new CheckBox("hideChat"));
+		add(new CheckBox("hideActivitiesAndActions"));
+		add(new CheckBox("hideFilesExplorer"));
+		add(new CheckBox("hideActionsMenu"));
+		add(new CheckBox("hideScreenSharing"));
+		add(new CheckBox("hideWhiteboard"));
+		add(new CheckBox("showMicrophoneStatus"));
+		add(new CheckBox("chatModerated"));
+		add(new CheckBox("chatOpened"));
+		add(new CheckBox("filesOpened"));
+		add(new CheckBox("autoVideoSelect"));	
+		
+		// Users in this Room 
+		clients = new ListView<Client>("clients", clientsInRoom) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(final ListItem<Client> item) {
+				Client client = item.getModelObject();
+				item.add(new Label("clientId", "" + client.getId()))
+					.add(new Label("clientLogin", "" + client.getUsername()))
+					.add(new WebMarkupContainer("clientDelete").add(new AjaxEventBehavior("onclick"){
+						private static final long serialVersionUID = 1L;
+	
+						@Override
+						protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+							super.updateAjaxAttributes(attributes);
+							attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+						}
+						
+						@Override
+						protected void onEvent(AjaxRequestTarget target) {
+							Client c = item.getModelObject();
+							getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
+									, c.getServer() == null ? 0 : c.getServer().getId());
+							
+							updateClients(target);
+						}
+					}));
+			}
+		};
+		add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
+		
+		// Moderators
+		final Select2Choice<User> moderatorChoice = new Select2Choice<User>("moderator2add", moderator2add, new AdminUserChoiceProvider() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void query(String term, int page, Response<User> response) {
+				response.addAll(getBean(UserDao.class).get(term, false, page * PAGE_SIZE, PAGE_SIZE));
+				response.setHasMore(PAGE_SIZE == response.getResults().size());
+			}
+
+			@Override
+			protected String getDisplayText(User choice) {
+				Address a = choice.getAdresses();
+				return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
+			}
+		});
+		add(moderatorChoice.add(new AjaxFormComponentUpdatingBehavior("change") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				Room r = RoomForm.this.getModelObject();
+				User u = moderator2add.getObject();
+				boolean found = false;
+				if (u != null) {
+					if (r.getModerators() == null) {
+						r.setModerators(new ArrayList<RoomModerator>());
+					}
+					for (RoomModerator rm : r.getModerators()) {
+						if (rm.getUser().getUser_id().equals(u.getUser_id())) {
+							found = true;
+							break;
+						}
+					}
+					if (!found) {
+						RoomModerator rm = new RoomModerator();
+						rm.setRoomId(r.getRooms_id());
+						rm.setUser(u);
+						r.getModerators().add(0, rm);
+						moderator2add.setObject(null);
+						target.add(moderatorContainer, moderatorChoice);
+					}
+				}
+			}
+		}).setOutputMarkupId(true));
+		add(moderatorContainer.add(new ListView<RoomModerator>("moderators") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(final ListItem<RoomModerator> item) {
+				RoomModerator moderator = item.getModelObject();
+				Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
+				if (moderator.getRoomModeratorsId() == 0) {
+					name.add(AttributeAppender.append("class", "newItem"));
+				}
+				item.add(new CheckBox("isSuperModerator", new PropertyModel<Boolean>(moderator, "isSuperModerator")))
+					.add(new Label("userId", "" + moderator.getUser().getUser_id()))
+					.add(name)
+					.add(new Label("email", moderator.getUser().getAdresses().getEmail()))
+					.add(new WebMarkupContainer("delete").add(new AjaxEventBehavior("onclick"){
+						private static final long serialVersionUID = 1L;
+	
+						@Override
+						protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+							super.updateAjaxAttributes(attributes);
+							attributes.getAjaxCallListeners().add(new ConfirmCallListener(833L));
+						}
+						
+						@Override
+						protected void onEvent(AjaxRequestTarget target) {
+							RoomForm.this.getModelObject().getModerators().remove(item.getIndex());
+							target.add(moderatorContainer);
+						}
+					}));
+			}
+		}).setOutputMarkupId(true));
+
+        add(new CheckBox("isModeratedRoom"));
+
+		add(new TextField<String>("confno").setEnabled(false));
+		add(pin = new TextField<String>("pin"));
+		pin.setEnabled(room.isSipEnabled());
+		add(new TextField<String>("ownerId").setEnabled(false));
+		add(new AjaxCheckBox("sipEnabled") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				updateView(target);
+			}
+		}.setOutputMarkupId(true));
+		
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+
+	void updateClients(AjaxRequestTarget target) {
+		long roomId = (getModelObject().getRooms_id() != null ? getModelObject().getRooms_id() : 0);  
+		final List<Client> clientsInRoom = Application.getBean(ISessionManager.class).getClientListByRoom(roomId);
+		clients.setDefaultModelObject(clientsInRoom);
+		target.add(clientsContainer);
+	}
+	
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		Room r = getModelObject();
+		boolean newRoom = r.getRooms_id() == null;
+		r = getBean(RoomDao.class).update(r, getUserId());
+		if (newRoom) {
+			for (RoomModerator rm : r.getModerators()) {
+				rm.setRoomId(r.getRooms_id());
+			}
+			// FIXME double update
+			getBean(RoomDao.class).update(getModelObject(), getUserId());
+		}
+		hideNewRecord();
+		updateView(target);
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		setModelObject(new Room());
+		updateView(target);
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		Room r = getModelObject();
+		if (r.getRooms_id() != null) {
+			r = getBean(RoomDao.class).get(r.getRooms_id());
+		} else {
+			r = new Room();
+		}
+		setModelObject(r);
+		updateView(target);
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		getBean(RoomDao.class).delete(getModelObject(), getUserId());
+		target.add(roomList);
+		setModelObject(new Room());
+		updateView(target);
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	public void updateView(AjaxRequestTarget target) {
+		target.add(this);
+		target.add(roomList);
+		target.add(pin.setEnabled(getModelObject().isSipEnabled()));
+		updateClients(target);
+		target.appendJavaScript("omRoomPanelInit();");
+	}
+	
+	@Override
+	protected void onDetach() {
+		moderator2add.detach();
+		super.onDetach();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
new file mode 100644
index 0000000..8e75891
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -0,0 +1,263 @@
+<?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>
+	   <script type="text/javascript">
+           function omRoomPanelInit() {
+               var documentHeight = $(document).height();
+               $('#adminForm').height(documentHeight-114);
+               $('#adminTable').height(documentHeight-144);
+           }
+       </script>
+    </wicket:head>
+	<wicket:panel>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable rooms">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="188" /></th>
+							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="189" /></th>
+							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByPublic"></span><wicket:ommessage key="190" /></th>
+						</tr>	
+					</thead>
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer">		
+				    		<tr wicket:id="roomList">
+								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="rooms_id"></span></div></td>
+								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="ispublic"></span></div></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						
+						<!-- General -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="187" /></legend>
+							<div class="formelement">
+                                <label><wicket:ommessage key="193" /></label><input type="text" wicket:id="name" />
+							</div>
+							<div class="formelement">
+                                <label><wicket:ommessage key="482" /></label><select wicket:id="numberOfPartizipants"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="194" /></label><select wicket:id="roomtype"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="196" /></label><textarea style="width: 200px; height: 100px;" wicket:id="comment"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="620" /></label><input type="checkbox" class="formcheckbox" wicket:id="appointment" />
+                            </div>
+				        </fieldset>
+				        
+				        <!-- Organisations -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="191" /></legend>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="195" /></label><input type="checkbox" class="formcheckbox" wicket:id="ispublic" />
+				            </div>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="828" /></div>
+				                <label><wicket:ommessage key="191" /></label><input type="hidden" class="input" wicket:id="roomOrganisations" style="max-height: 80px"/>
+				            </div>
+				        </fieldset>
+				        
+				        <!-- Limitations -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="830" /></legend>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="636" /></label><input type="checkbox" class="formcheckbox" wicket:id="isDemoRoom" />
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="637" /></label><input type="text" wicket:id="demoTime" />
+                            </div>
+						</fieldset>
+						
+						<!-- Rights -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="881" /></legend>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="879" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowUserQuestions" />
+				            </div>
+				            <div class="formelement">
+                                <wicket:ommessage key="880" />
+				                <br/>
+				                <label><wicket:ommessage key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="isAudioOnly" />
+				            </div>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="1077" /></div>
+				                <label><wicket:ommessage key="1531" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowFontStyles" />
+				            </div>
+				            <div class="formelement">
+					            <div class="info-text"><wicket:ommessage key="1101" /></div>
+				                <label><wicket:ommessage key="1099" /></label><input type="checkbox" class="formcheckbox" wicket:id="isClosed" />
+				            </div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1100" /></label><input type="text" wicket:id="redirectURL" />
+							</div>
+							<div class="formelement">
+							    <div class="info-text"><wicket:ommessage key="1102" /></div>
+                                <br/>
+				                <label><wicket:ommessage key="1356" /></label><input type="checkbox" class="formcheckbox" wicket:id="waitForRecording" />
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1355" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowRecording" />
+				            </div>
+						</fieldset>
+						
+						<!-- Room Layout options -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="1443" /></legend>
+							<div class="formelement">
+                                <label><wicket:ommessage key="1357" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideTopBar" />
+				            </div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1436" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideChat" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1437" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideActivitiesAndActions" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1438" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideFilesExplorer" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1439" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideActionsMenu" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1440" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideScreenSharing" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1441" /></label><input type="checkbox" class="formcheckbox" wicket:id="hideWhiteboard" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1442" /></label><input type="checkbox" class="formcheckbox" wicket:id="showMicrophoneStatus" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1513" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatModerated" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1515" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatOpened" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1516" /></label><input type="checkbox" class="formcheckbox" wicket:id="filesOpened" />
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1526" /></label><input type="checkbox" class="formcheckbox" wicket:id="autoVideoSelect" />
+				            </div>
+						</fieldset>
+						
+						<!-- Users in this Room -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="587" /></legend>
+							<table class="adminListTable">
+								<thead>
+									<tr>
+										<th class="three_column_layout_column1 ui-widget-header"><wicket:ommessage key="588" /></th>
+										<th class="three_column_layout_column2 ui-widget-header"><wicket:ommessage key="589" /></th>
+										<th class="three_column_layout_column3 ui-widget-header"><wicket:ommessage key="590" /></th>
+									</tr>	
+								</thead>
+							</table>
+							<div class="tableWrapperSmall" id="adminTableSmall">
+								<table class="adminListTable">
+									<tbody wicket:id="clientsContainer">		
+							    		<tr wicket:id="clients">
+											<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="clientId"></span></div></td>
+											<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="clientLogin"></span></div></td>
+											<td class="three_column_layout_column3"><div class="formCancelButton" wicket:id="clientDelete" wicket:ommessage="title:604"><input/></div></td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</fieldset>
+						
+						<!-- Default moderators -->
+						<fieldset class="ui-widget-content">
+                            <div class="formelement">
+				            	<div class="info-text"><wicket:ommessage key="823" /></div>
+				                <label><wicket:ommessage key="640" /></label><input type="checkbox" class="formcheckbox" wicket:id="isModeratedRoom" />
+				            </div>
+	                        <div class="formelement">
+					            <label><wicket:ommessage key="816" /></label><input type="hidden" wicket:id="moderator2add" class="input"/>
+				            </div>
+				            <div wicket:id="moderatorContainer">
+								<table class="adminListTableSmall">
+									<thead>
+										<tr>
+											<th class="three_column_layout_column1 ui-widget-header" style="overflow: hidden;" wicket:ommessage="title:817"><wicket:ommessage key="817" /></th>
+											<th class="three_column_layout_column2 ui-widget-header"><wicket:ommessage key="818" /></th>
+											<th class="three_column_layout_column3 ui-widget-header"><wicket:ommessage key="819" /></th>
+											<th class="three_column_layout_column4 ui-widget-header"><wicket:ommessage key="820" /></th>
+											<th class="three_column_layout_column5 ui-widget-header"><wicket:ommessage key="827" /></th>
+										</tr>	
+									</thead>
+								</table>
+								<div class="tableWrapperSmall" id="adminTableSmall">
+									<table class="adminListTableSmall">
+										<tbody>		
+								    		<tr wicket:id="moderators">
+												<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><input type="checkbox" wicket:id="isSuperModerator"/></div></td>
+												<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="userId"></span></div></td>
+												<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="uName"></span></div></td>
+												<td class="three_column_layout_column4"><div class="three_column_layout_divcolumn4" style="overflow: hidden;"><span wicket:id="email"></span></div></td>
+						                        <td style="width: 50px"><div style="width: 50px"><div class="formCancelButton" wicket:id="delete" wicket:ommessage="title:274"><input/></div></div></td>
+											</tr>
+										</tbody>
+									</table>
+								</div>
+							</div>
+						</fieldset>
+					    <!--SIP Settings -->
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="1001" /></legend>
+				            <div class="formelement">
+				                <div class="info-text"><wicket:ommessage key="1002" /></div>
+                                <br/>
+                            </div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1003" /></label><input type="text" wicket:id="confno" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1004" /></label><input type="text" wicket:id="pin" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1308" /></label><input type="text" wicket:id="ownerId" />
+							</div>
+				            <div class="formelement">
+				                <label><wicket:ommessage key="1538" /></label><input type="checkbox" class="formcheckbox" wicket:id="sipEnabled" />
+				            </div>
+						</fieldset>
+					</div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
new file mode 100644
index 0000000..471695c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+public class RoomsPanel extends AdminPanel {
+	private static final long serialVersionUID = -1L;
+	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	private RoomForm form;
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("omRoomPanelInit();");
+	}
+
+	public RoomsPanel(String id) {
+		super(id);
+		SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableDataProvider<Room>(RoomDao.class)) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(final Item<Room> item) {
+				Room room = item.getModelObject();
+				final long roomId = room.getRooms_id();
+				item.add(new Label("rooms_id", "" + room.getRooms_id()));
+				item.add(new Label("name", "" + room.getName()));
+				item.add(new Label("ispublic", "" + room.getIspublic()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.hideNewRecord();
+						form.setModelObject(getBean(RoomDao.class).get(roomId));
+						form.updateView(target);
+						target.add(form, listContainer);
+						target.appendJavaScript("omRoomPanelInit();");
+					}
+				});
+				item.add(AttributeModifier.replace("class", "clickable ui-widget-content"
+						+ (room.getRooms_id().equals(form.getModelObject().getRooms_id()) ? " ui-state-active" : "")));
+			}
+		};
+		
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = -1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<Room> container = new DataViewContainer<Room>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<Room>("orderById", "rooms_id", container))
+			.addLink(new OmOrderByBorder<Room>("orderByName", "name", container))
+			.addLink(new OmOrderByBorder<Room>("orderByPublic", "ispublic", container));
+		add(container.getLinks());
+		add(navigator);
+
+        add(form = new RoomForm("form", listContainer, new Room()));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java b/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
new file mode 100644
index 0000000..a292dec
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.servers;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Form component to insert/update/delete {@link Server}
+ * 
+ * @author swagner
+ * 
+ */
+public class ServerForm extends AdminBaseForm<Server> {
+	private final WebMarkupContainer listContainer;
+	private static final long serialVersionUID = 1L;
+
+	public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
+		super(id, new CompoundPropertyModel<Server>(server));
+		setOutputMarkupId(true);
+		this.listContainer = listContainer;
+
+		add(new RequiredTextField<String>("name").setLabel(Model.of(WebSession.getString(1500))));
+		add(new CheckBox("active"));
+		add(new RequiredTextField<String>("address").setLabel(Model.of(WebSession.getString(1501))));
+		add(new TextField<Integer>("port"));
+		add(new TextField<String>("user"));
+		add(new TextField<String>("pass"));
+		add(new TextField<String>("webapp"));
+		add(new TextField<String>("protocol"));
+		add(forDatePattern("lastPing", WEB_DATE_PATTERN));
+		//add(new Label("pingRunning"));
+		add(forDatePattern("inserted", WEB_DATE_PATTERN));
+		add(new Label("insertedby.login"));
+		add(forDatePattern("updated", WEB_DATE_PATTERN));
+		add(new Label("updatedby.login"));
+		add(new TextArea<String>("comment"));
+
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
+		Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
+		setModelObject(server);
+		hideNewRecord();
+		target.add(this);
+		target.add(listContainer);
+		target.appendJavaScript("omServerPanelInit();");
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		Server s = new Server();
+		s.setWebapp("openmeetings");
+		s.setProtocol("http");
+		setModelObject(s);
+		target.add(this);
+		target.appendJavaScript("omServerPanelInit();");
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		Server server = getModelObject();
+		if (server.getId() > 0) {
+			server = Application.getBean(ServerDao.class).get(server.getId());
+		} else {
+			server = new Server();
+		}
+		setModelObject(server);
+		target.add(this);
+		target.appendJavaScript("omServerPanelInit();");
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
+		this.setModelObject(new Server());
+		target.add(listContainer);
+		target.add(this);
+		target.appendJavaScript("omServerPanelInit();");
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.html b/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.html
new file mode 100644
index 0000000..6b89bee
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.html
@@ -0,0 +1,114 @@
+<?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>
+       <script type="text/javascript">
+           function omServerPanelInit() {
+               var documentHeight = $(document).height();
+               $('#adminForm').height(documentHeight-114);
+               $('#adminTable').height(documentHeight-144);
+           }
+       </script>
+    </wicket:head>
+	<wicket:panel>
+		<div class="adminPanel">
+			<div class="adminPanelColumnTable">
+				<span wicket:id="navigator">[dataview navigator]</span>
+				<table class="adminListTable">
+					<thead>
+						<tr>
+							<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:ommessage key="188" /></th>
+							<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:ommessage key="1500" /></th>
+							<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByAddress"></span><wicket:ommessage key="1501" /></th>
+						</tr>	
+					</thead>
+				</table>
+				<div class="tableWrapper" id="adminTable">
+					<table class="adminListTable">
+						<tbody wicket:id="listContainer">	
+				    		<tr wicket:id="serverList">
+								<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
+								<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
+								<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="address"></span></div></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+			<div class="adminPanelColumnForm">
+				<form wicket:id="form" class="adminForm">
+					<div wicket:id="buttons"></div>
+					<div class="scrollcontent" id="adminForm">
+						<fieldset class="ui-widget-content">
+							<legend class="ui-widget-header"><wicket:ommessage key="1502" /></legend>
+							<div class="formelement">
+                                <label><wicket:ommessage key="1500" /></label><input type="text" wicket:id="name"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1525" /></label><input type="checkbox" class="formcheckbox" wicket:id="active" />
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1501" /></label><input type="text" wicket:id="address"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1519" /></label><input type="text" wicket:id="port"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1520" /></label><input type="text" wicket:id="user"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1521" /></label><input type="text" wicket:id="pass"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1522" /></label><input type="text" wicket:id="webapp"/>
+				            </div>
+				            <div class="formelement">
+                                <label><wicket:ommessage key="1523" /></label><input type="text" wicket:id="protocol"/>
+				            </div>
+				            <div class="formelement">
+					            <div class="info-text"><wicket:ommessage key="1518" /></div>
+	                                <br/>
+                                <label><wicket:ommessage key="1517" /></label><span wicket:id="lastPing"/>
+                                <!-- br/>
+                                <label><wicket:ommessage key="1524" /></label><span wicket:id="pingRunning"/-->
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1110" /></label><span wicket:id="inserted"/>
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1111" /></label><span wicket:id="insertedby.login"/>
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1112" /></label><span wicket:id="updated"/>
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="1113" /></label><span wicket:id="updatedby.login"/>
+				            </div>
+                            <div class="formelement">
+                                <label><wicket:ommessage key="270" /></label><textarea wicket:id="comment"/>
+				            </div>
+				        </fieldset>
+				    </div>
+				</form>
+			</div>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java b/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
new file mode 100644
index 0000000..b85e641
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.servers;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * Form component with list and form to manipulate {@link Server}
+ * 
+ * @author swagner
+ * 
+ */
+public class ServersPanel extends AdminPanel {
+	private static final long serialVersionUID = -2197334608577346569L;
+	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	private ServerForm form;
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("omServerPanelInit();");
+	}
+
+	public ServersPanel(String id) {
+		super(id);
+		SearchableDataView<Server> dataView = new SearchableDataView<Server>("serverList",
+				new SearchableDataProvider<Server>(ServerDao.class)) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(final Item<Server> item) {
+				final Server server = item.getModelObject();
+				item.add(new Label("id", "" + server.getId()));
+				item.add(new Label("name", "" + server.getName()));
+				item.add(new Label("address", "" + server.getAddress()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(server);
+						form.hideNewRecord();
+						target.add(form, listContainer);
+						target.appendJavaScript("omServerPanelInit();");
+					}
+				});
+				item.add(AttributeModifier.replace("class", "clickable ui-widget-content"
+						+ (server.getId().equals(form.getModelObject().getId()) ? " ui-state-active" : "")));
+			}
+		};
+		
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<Server> container = new DataViewContainer<Server>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<Server>("orderById", "id", container))
+			.addLink(new OmOrderByBorder<Server>("orderByName", "name", container))
+			.addLink(new OmOrderByBorder<Server>("orderByAddress", "address", container));
+		add(container.getLinks());
+		add(navigator);
+		
+		form = new ServerForm("form", listContainer, new Server());
+		form.showNewRecord();
+        add(form);
+		
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html b/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html
new file mode 100644
index 0000000..97e41a3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.html
@@ -0,0 +1,67 @@
+<?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 wicket:id="buttons"></div>
+	<div class="scrollcontent" id="adminForm">
+		<fieldset class="ui-widget-content">
+			<legend class="ui-widget-header">
+				<wicket:ommessage key="143" />
+			</legend>
+			<div class="formelement">
+				<label><wicket:ommessage key="132" /></label><input type="text" wicket:id="login" />
+			</div>
+			<form wicket:id="general"></form>
+			<div class="formelement">
+				<label><wicket:ommessage key="45" /></label><select wicket:id="type"></select>
+			</div>
+			<div class="formelement" wicket:id="domain">
+				<label><wicket:ommessage key="1118" /></label><select wicket:id="domainId"></select>
+			</div>
+			<div class="formelement">
+				<label><wicket:ommessage key="1308" /></label><span wicket:id="ownerId"></span>
+			</div>
+			<div class="formelement">
+				<label><wicket:ommessage key="1110" /></label><span wicket:id="starttime" />
+			</div>
+			<div class="formelement">
+				<label><wicket:ommessage key="1112" /></label><span wicket:id="updatetime" />
+			</div>
+			<div class="formelement">
+				<div class="info-text">
+					<wicket:ommessage key="1149" />
+				</div>
+				<br /> <label><wicket:ommessage key="1148" /></label><input class="formcheckbox" type="checkbox"
+					wicket:id="forceTimeZoneCheck" />
+			</div>
+			<div class="formelement">
+				<label><wicket:ommessage key="881" /></label><input type="hidden" class="input" wicket:id="rights" />
+			</div>
+		</fieldset>
+		<fieldset class="ui-widget-content">
+			<legend class="ui-widget-header">
+				<wicket:ommessage key="1159" />
+			</legend>
+			<form wicket:id="comunity"></form>
+		</fieldset>
+	</div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java b/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java
new file mode 100644
index 0000000..bc7f58c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -0,0 +1,283 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.users;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ComunityUserForm;
+import org.apache.openmeetings.web.common.GeneralUserForm;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2MultiChoice;
+import org.wicketstuff.select2.TextChoiceProvider;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+/**
+ * CRUD operations in form for {@link User}
+ * 
+ * @author swagner
+ * 
+ */
+public class UserForm extends AdminBaseForm<User> {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer listContainer;
+	private final WebMarkupContainer domain = new WebMarkupContainer("domain");
+	private GeneralUserForm generalForm;
+	private final RequiredTextField<String> login = new RequiredTextField<String>("login");
+	private final MessageDialog warning;
+	private final DropDownChoice<Long> domainId = new DropDownChoice<Long>("domainId");
+
+	public UserForm(String id, WebMarkupContainer listContainer, final User user, MessageDialog warning) {
+		super(id, new CompoundPropertyModel<User>(user));
+		setOutputMarkupId(true);
+		this.listContainer = listContainer;
+		this.warning = warning;
+		// Add form fields
+		addFormFields();
+
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+
+	@Override
+	protected void onModelChanged() {
+		super.onModelChanged();
+		generalForm.updateModelObject(getModelObject());
+	}
+	
+	@Override
+	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+		User u = getModelObject();
+		try {
+			u = getBean(UserDao.class).update(u, generalForm.getPasswordField().getConvertedInput(), getUserId());
+		} catch (Exception e) {
+			// FIXME update feedback with the error details
+		}
+		setModelObject(u);
+		hideNewRecord();
+		target.add(this);
+		target.add(listContainer);
+		target.appendJavaScript("omUserPanelInit();");
+		if (u.getOrganisation_users().isEmpty()) {
+			warning.open(target);
+		}
+	}
+
+	@Override
+	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+		UserDao usersDaoImpl = getBean(UserDao.class);
+		setModelObject(usersDaoImpl.getNewUserInstance(usersDaoImpl.get(getUserId())));
+		update(target);
+	}
+
+	@Override
+	protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+		User user = getModelObject();
+		if (user.getUser_id() != null) {
+			user = getBean(UserDao.class).get(user.getUser_id());
+		} else {
+			user = new User();
+		}
+		setModelObject(user);
+		update(target);
+	}
+
+	@Override
+	protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+		UserDao usersDaoImpl = getBean(UserDao.class);
+		usersDaoImpl.delete(getModelObject(), getUserId());
+		setModelObject(usersDaoImpl.getNewUserInstance(usersDaoImpl.get(getUserId())));
+		update(target);
+	}
+
+	/**
+	 * Add the fields to the form
+	 */
+	private void addFormFields() {
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		login.setLabel(Model.of(WebSession.getString(132)));
+		add(login.add(minimumLength(getMinLoginLength(cfgDao))));
+
+		add(generalForm = new GeneralUserForm("general", getModel(), true));
+
+		add(new DropDownChoice<Type>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				updateDomain(target);
+			}
+		}));
+		update(null);
+		add(domain.add(domainId).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
+		add(new Label("ownerId"));
+		add(forDatePattern("starttime", WEB_DATE_PATTERN));
+		add(forDatePattern("updatetime", WEB_DATE_PATTERN));
+
+		add(new CheckBox("forceTimeZoneCheck"));
+
+		add(new Select2MultiChoice<Right>("rights", null, new TextChoiceProvider<Right>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(Right choice) {
+				return choice.name();
+			}
+
+			@Override
+			protected Object getId(Right choice) {
+				return choice.name();
+			}
+
+			@Override
+			public void query(String term, int page, Response<Right> response) {
+				for (Right r : Right.values()) {
+					if (r.name().contains(term)) {
+						response.add(r);
+					}
+				}
+			}
+
+			@Override
+			public Collection<Right> toChoices(Collection<String> ids) {
+				Collection<Right> rights = new ArrayList<User.Right>(ids.size());
+				for (String id : ids) {
+					rights.add(Right.valueOf(id));
+				}
+				return rights;
+			}
+		}));
+		add(new ComunityUserForm("comunity", getModel()));
+	}
+
+	public void updateDomain(AjaxRequestTarget target) {
+		User u = getModelObject();
+		final Map<Long, String> values = new Hashtable<Long, String>();
+		List<Long> ids = new ArrayList<Long>();
+		if (u.getType() == Type.ldap) {
+			for (LdapConfig c : getBean(LdapConfigDao.class).getActive()) {
+				ids.add(c.getLdapConfigId());
+				values.put(c.getLdapConfigId(), c.getName());
+			}
+		}
+		if (u.getType() == Type.oauth) {
+			for (OAuthServer s : getBean(OAuth2Dao.class).getActive()) {
+				ids.add(s.getId());
+				values.put(s.getId(), s.getName());
+			}
+		}
+		domainId.setChoices(ids);
+		domainId.setChoiceRenderer(new IChoiceRenderer<Long>() {
+			private static final long serialVersionUID = 1L;
+
+			public Object getDisplayValue(Long object) {
+				return values.get(object);
+			}
+
+			public String getIdValue(Long object, int index) {
+				return "" + object;
+			}
+		});
+		domain.setVisible(u.getType() == Type.ldap || u.getType() == Type.oauth);
+		if (target != null) {
+			target.add(domain);
+		}
+	}
+	
+	public void update(AjaxRequestTarget target) {
+		updateDomain(target);
+		if (target != null) {
+			target.add(this, listContainer);
+			target.appendJavaScript("omUserPanelInit();");
+		}
+	}
+	
+	@Override
+	protected void onValidate() {
+		if(!getBean(UserDao.class).checkUserLogin(login.getConvertedInput(), getModelObject().getUser_id())) {
+			error(WebSession.getString(105));
+		}
+	}
+
+	@Override
+	protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+		//ignore validation errors
+		onNewSubmit(target, form);
+	}
+
+	@Override
+	protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+		//ignore validation errors
+		onDeleteSubmit(target, form);
+	}
+
+	@Override
+	protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+		return new PanelMarkupSourcingStrategy(false);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.html b/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
new file mode 100644
index 0000000..f40c43f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
@@ -0,0 +1,76 @@
+<?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>
+	<script type="text/javascript">
+		function omUserPanelInit() {
+			var documentHeight = $(document).height();
+			$('#adminForm').height(documentHeight - 114);
+			$('#adminTable').height(documentHeight - 144);
+		}
+	</script>
+</wicket:head>
+<wicket:panel>
+	<div class="adminPanel">
+		<div class="adminPanelColumnTable">
+			<span wicket:id="navigator">[dataview navigator]</span>
+			<table class="adminListTable">
+				<thead>
+					<tr>
+						<th class="four_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span> <wicket:ommessage key="146" /></th>
+						<th class="four_column_layout_column2 ui-widget-header"><span wicket:id="orderByLogin"></span> <wicket:ommessage key="147" /></th>
+						<th class="four_column_layout_column3 ui-widget-header"><span wicket:id="orderByFirstName"></span> <wicket:ommessage key="148" /></th>
+						<th class="four_column_layout_column4 ui-widget-header"><span wicket:id="orderByLastName"></span> <wicket:ommessage key="149" /></th>
+					</tr>
+				</thead>
+			</table>
+			<div class="tableWrapper" id="adminTable">
+				<table class="adminListTable">
+					<tbody wicket:id="listContainer">
+						<tr wicket:id="userList">
+							<td class="four_column_layout_column1"><div
+									class="four_column_layout_divcolumn1">
+									<span wicket:id="userId"></span>
+								</div></td>
+							<td class="four_column_layout_column2"><div
+									class="four_column_layout_divcolumn2">
+									<span wicket:id="login"></span>
+								</div></td>
+							<td class="four_column_layout_column3"><div
+									class="four_column_layout_divcolumn3">
+									<span wicket:id="firstName"></span>
+								</div></td>
+							<td class="four_column_layout_column4"><div
+									class="four_column_layout_divcolumn4">
+									<span wicket:id="lastName"></span>
+								</div></td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<div class="adminPanelColumnForm">
+			<form wicket:id="form" class="adminForm"/>
+		</div>
+	</div>
+	<div wicket:id="warning"></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.java b/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
new file mode 100644
index 0000000..d51f627
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.admin.users;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+public class UsersPanel extends AdminPanel {
+	private static final long serialVersionUID = -4463107742579790120L;
+	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	private final MessageDialog warning = new MessageDialog("warning", WebSession.getString(797), WebSession.getString(343), DialogButtons.OK, DialogIcon.WARN) {
+		private static final long serialVersionUID = 1L;
+
+		public void onClose(AjaxRequestTarget target, DialogButton button) {
+		}
+	};
+
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+		super.onMenuPanelLoad(target);
+		target.appendJavaScript("omUserPanelInit();");
+	}
+
+	private UserForm form;
+
+	public UsersPanel(String id) {
+		super(id);
+
+		final SearchableDataView<User> dataView = new SearchableDataView<User>("userList", new SearchableDataProvider<User>(UserDao.class)) {
+			private static final long serialVersionUID = 8715559628755439596L;
+
+			@Override
+			protected void populateItem(Item<User> item) {
+				User u = item.getModelObject();
+				final long userId = u.getUser_id();
+				item.add(new Label("userId", "" + u.getUser_id()));
+				item.add(new Label("login", u.getLogin()));
+				item.add(new Label("firstName", u.getFirstname()));
+				item.add(new Label("lastName", u.getLastname()));
+				item.add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = -8069413566800571061L;
+
+					protected void onEvent(AjaxRequestTarget target) {
+						form.setModelObject(getBean(UserDao.class).get(userId));
+						form.hideNewRecord();
+						form.update(target);
+					}
+				});
+				item.add(AttributeModifier.append("class", "clickable ui-widget-content"
+						+ (u.getUser_id().equals(form.getModelObject().getUser_id()) ? " ui-state-active" : "")));
+			}
+		};
+		add(listContainer.add(dataView).setOutputMarkupId(true));
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+			private static final long serialVersionUID = 5097048616003411362L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(listContainer);
+			}
+		};
+		DataViewContainer<User> container = new DataViewContainer<User>(listContainer, dataView, navigator);
+		container.addLink(new OmOrderByBorder<User>("orderById", "user_id", container))
+			.addLink(new OmOrderByBorder<User>("orderByLogin", "login", container))
+			.addLink(new OmOrderByBorder<User>("orderByFirstName", "firstname", container))
+			.addLink(new OmOrderByBorder<User>("orderByLastName", "lastname", container));
+		add(container.getLinks());
+		add(navigator);
+
+		UserDao usersDaoImpl = getBean(UserDao.class);
+		form = new UserForm("form", listContainer, usersDaoImpl.getNewUserInstance(usersDaoImpl.get(getUserId())), warning);
+		form.showNewRecord();
+		add(form, warning);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application.java b/src/web/java/org/apache/openmeetings/web/app/Application.java
new file mode 100644
index 0000000..2cb2804
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application.java
@@ -0,0 +1,281 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+import static org.springframework.web.context.WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
+import static org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.servlet.ServletContext;
+
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.util.InitializationContainer;
+import org.apache.openmeetings.web.pages.ActivatePage;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.pages.NotInitedPage;
+import org.apache.openmeetings.web.pages.RecordingPage;
+import org.apache.openmeetings.web.pages.ResetPage;
+import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.openmeetings.web.pages.auth.SignInPage;
+import org.apache.openmeetings.web.pages.install.InstallWizardPage;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
+import org.apache.openmeetings.web.util.AviRecordingResourceReference;
+import org.apache.openmeetings.web.util.FlvRecordingResourceReference;
+import org.apache.openmeetings.web.util.JpgRecordingResourceReference;
+import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
+import org.apache.openmeetings.web.util.OggRecordingResourceReference;
+import org.apache.openmeetings.web.util.UserDashboardPersister;
+import org.apache.wicket.Page;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
+import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
+import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.mapper.MountedMapper;
+import org.apache.wicket.markup.MarkupFactory;
+import org.apache.wicket.markup.MarkupParser;
+import org.apache.wicket.markup.MarkupResourceStream;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.mapper.info.PageComponentInfo;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
+import org.apache.wicket.util.collections.ConcurrentHashSet;
+import org.apache.wicket.util.tester.WicketTester;
+import org.slf4j.Logger;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+import ro.fortsoft.wicket.dashboard.WidgetRegistry;
+import ro.fortsoft.wicket.dashboard.web.DashboardContext;
+import ro.fortsoft.wicket.dashboard.web.DashboardContextInjector;
+import ro.fortsoft.wicket.dashboard.web.DashboardSettings;
+
+public class Application extends AuthenticatedWebApplication {
+	private static final Logger log = getLogger(Application.class, webAppRootKey);
+	private static boolean isInstalled;
+	private static Map<Long, Set<String>> ONLINE_USERS = new ConcurrentHashMap<Long, Set<String>>();
+	private DashboardContext dashboardContext;
+	private static String appName;
+	
+	@Override
+	protected void init() {
+		appName = super.getName();
+		getSecuritySettings().setAuthenticationStrategy(new OmAuthenticationStrategy());
+		IPageSettings pageSettings = getPageSettings();
+		pageSettings.addComponentResolver(new MessageResolver());
+		pageSettings.addComponentResolver(new MessageTagHandler());
+		getMarkupSettings().setMarkupFactory(new MarkupFactory(){
+			@Override
+			public MarkupParser newMarkupParser(MarkupResourceStream resource) {
+				MarkupParser mp = super.newMarkupParser(resource);
+				mp.add(new MessageTagHandler());
+				return mp;
+			}
+		});
+		
+		//Add custom resource loader at the beginning, so it will be checked first in the 
+		//chain of Resource Loaders, if not found it will search in Wicket's internal 
+		//Resource Loader for a the property key
+		getResourceSettings().getStringResourceLoaders().add(0, new LabelResourceLoader());
+		
+		super.init();
+		
+		// register some widgets
+		dashboardContext = new DashboardContext();
+		dashboardContext.setDashboardPersister(new UserDashboardPersister());
+		WidgetRegistry widgetRegistry = dashboardContext.getWidgetRegistry();
+		widgetRegistry.registerWidget(new MyRoomsWidgetDescriptor());
+		widgetRegistry.registerWidget(new WelcomeWidgetDescriptor());
+		widgetRegistry.registerWidget(new StartWidgetDescriptor());
+		widgetRegistry.registerWidget(new RssWidgetDescriptor());
+		// add dashboard context injector
+		getComponentInstantiationListeners().add(new DashboardContextInjector(dashboardContext));
+		DashboardSettings dashboardSettings = DashboardSettings.get();
+		dashboardSettings.setIncludeJQuery(false);
+		dashboardSettings.setIncludeJQueryUI(false);
+		
+		getRootRequestMapperAsCompound().add(new NoVersionMapper(getHomePage()));
+		getRootRequestMapperAsCompound().add(new NoVersionMapper("notinited", NotInitedPage.class));
+		mountPage("swf", SwfPage.class);
+		mountPage("install", InstallWizardPage.class);
+		mountPage("signin", getSignInPageClass());
+		mountPage("activate", ActivatePage.class);
+		mountPage("reset", ResetPage.class);
+		mountPage("/recording/${hash}", RecordingPage.class);
+		mountResource("/recordings/avi/${id}", new AviRecordingResourceReference());
+		mountResource("/recordings/flv/${id}", new FlvRecordingResourceReference());
+		mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
+		mountResource("/recordings/ogg/${id}", new OggRecordingResourceReference());
+		mountResource("/recordings/jpg/${id}", new JpgRecordingResourceReference()); //should be in sync with VideoPlayer
+	}
+
+	private static class NoVersionMapper extends MountedMapper {
+		public NoVersionMapper(final Class<? extends IRequestablePage> pageClass) {
+			this("/", pageClass);
+		}
+		
+		public NoVersionMapper(String mountPath, final Class<? extends IRequestablePage> pageClass) {
+			super(mountPath, pageClass, new PageParametersEncoder());
+		}
+
+		@Override
+		protected void encodePageComponentInfo(Url url, PageComponentInfo info) {
+			//Does nothing
+		}
+		
+		@Override
+		public Url mapHandler(IRequestHandler requestHandler) {
+			if (requestHandler instanceof ListenerInterfaceRequestHandler || requestHandler instanceof BookmarkableListenerInterfaceRequestHandler) {
+				return null;
+			} else {
+				return super.mapHandler(requestHandler);
+			}
+		}
+	}
+
+	public static OmAuthenticationStrategy getAuthenticationStrategy() {
+		return (OmAuthenticationStrategy)get().getSecuritySettings().getAuthenticationStrategy();
+	}
+	
+	@Override
+	public Class<? extends Page> getHomePage() {
+		return MainPage.class;
+	}
+
+	@Override
+	protected Class<? extends AbstractAuthenticatedWebSession> getWebSessionClass() {
+		return WebSession.class;
+	}
+
+	@Override
+	public Class<? extends WebPage> getSignInPageClass() {
+		return SignInPage.class;
+	}
+	
+	public static Application get() {
+		return (Application) WebApplication.get();
+	}
+	
+	public static DashboardContext getDashboardContext() {
+		return get().dashboardContext;
+	}
+	
+	public static void addOnlineUser(long userId, String sessionId) {
+		if (!ONLINE_USERS.containsKey(userId)) {
+			ONLINE_USERS.put(userId, new ConcurrentHashSet<String>());
+		}
+		ONLINE_USERS.get(userId).add(sessionId);
+	}
+	
+	public static void removeOnlineUser(long userId, String sessionId) {
+		if (ONLINE_USERS.containsKey(userId)) {
+			Set<String> sessions = ONLINE_USERS.get(userId);
+			if (sessions.isEmpty()) {
+				ONLINE_USERS.remove(userId);
+			} else if (sessions.contains(sessionId)) {
+				if (sessions.size() > 1) {
+					sessions.remove(sessionId);
+				} else {
+					ONLINE_USERS.remove(userId);
+				}
+			}
+		}
+	}
+	
+	public static boolean isUserOnline(long userId) {
+		return ONLINE_USERS.containsKey(userId);
+	}
+	
+	//TODO need more safe way FIXME
+	public <T> T _getBean(Class<T> clazz) {
+		return getWebApplicationContext(getServletContext()).getBean(clazz);
+	}
+	
+	public static boolean isInstalled() {
+		boolean result = isInstalled;
+		if (!isInstalled) {
+			if (InitializationContainer.initComplete) {
+				//TODO can also check crypt class here
+				isInstalled = result = get()._getBean(UserDao.class).count() > 0
+						&& get()._getBean(FieldLanguagesValuesDao.class).count() > 0;
+			}
+		}
+		return result;
+	}
+	
+	public static <T> T getBean(Class<T> clazz) {
+		if (InitializationContainer.initComplete) {
+			if (!isInstalled()) {
+				throw new RestartResponseException(InstallWizardPage.class);
+			}
+			return get()._getBean(clazz);
+		} else {
+			throw new RestartResponseException(NotInitedPage.class);
+		}
+	}
+	
+	public static WicketTester getWicketTester() {
+		return getWicketTester(-1);
+	}
+	
+	public static WicketTester getWicketTester(long langId) {
+		Application app = new Application();
+        
+		WicketTester tester = new WicketTester(app);
+		ServletContext sc = app.getServletContext();
+        XmlWebApplicationContext xmlContext = new XmlWebApplicationContext();
+        xmlContext.setConfigLocation("classpath:openmeetings-applicationContext.xml");
+        xmlContext.setServletContext(sc);
+        xmlContext.refresh();
+        sc.setAttribute(ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, xmlContext);
+        if (langId > 0) {
+        	WebSession.get().setLanguage(langId);
+        }
+        InitializationContainer.initComplete = true;
+        return tester;
+	}
+	
+	public static void destroy(WicketTester tester) {
+		if (tester != null) {
+			ServletContext sc = tester.getServletContext();
+			try {
+				((XmlWebApplicationContext)sc.getAttribute(ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).close();
+			} catch (Exception e) {
+				log.error("Unexpected error while destroying XmlWebApplicationContext", e);
+			}
+			tester.destroy();
+		}
+	}
+	
+	public static String getAppName() {
+		return appName;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml
new file mode 100644
index 0000000..d777ad8
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -0,0 +1,254 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Installation</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Recommendation
+				for production environment<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			By default {0} uses the integrated Apache Derby database. For
+			production environment you should consider using <a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>
+			or for example <a target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a>
+			or <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Enabling
+				Image Upload and import to whiteboard<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Install <strong>ImageMagick</strong> on the server, you can
+					get more information on <a target="_blank"
+					href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>
+					regarding installation. The instructions for installation can be
+					found there <a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>,
+					however on most linux systems you can get it via your favorite
+					package managers (apt-get it)
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Enabling
+				import of PDFs into whiteboard<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Install <strong>GhostScript</strong> on the server, you can
+					get more information on <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>
+					regarding installation. The instructions for installation can be
+					found there, however on most linux systems you can get it via your
+					favorite package managers (apt-get it).
+				</li>
+				<li>Install <strong>SWFTools</strong> on the server, you can get
+					more information on <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>
+					regarding installation. Some of the Linux distributions already have
+					it in there package manager see <a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>),
+					the recommended version of <strong>SWFTools</strong> is 0.9 as prior
+					version have a bug that does lead to wrong object dimensions in the
+					Whiteboard
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Enabling
+				import of .doc, .docx, .ppt, .pptx, ... all Office Documents into
+				whitebaord<a
+					href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>OpenOffice-Service</strong> started and listening on
+					port 8100, see <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>
+					for details</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Enabling
+				Recording and import of .avi, .flv, .mov and .mp4 into whiteboard<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Install <strong>FFMpeg</strong>. You should get FFMPEG in an
+					up to date copy! For Windows you can download a Build for example
+					from <a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a> Linux or OSx
+					Users should be able to use one of the various Installation
+					Instructions on the Web. You need to enable libmp3lame!
+				</li>
+				<li>Install <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_BLANK">http://sox.sourceforge.net/</a>.
+					You should install SoX in a up to date copy! SoX 12.xx will NOT
+					work!
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">If you have further
+			questions or need support in installation or hosting:</span></b>
+	<br />
+	<br />
+
+	<b><span style="font-size: 1.2em">Community-Support:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Mailing lists</a></span>
+	<br />
+	<br />
+
+	<b> <span style="font-size: 1.2em">Commercial-Support:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/commercial-support.html"
+		target="_blank">Commercial-Support</a></span>
+
+	<br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Userdata</entry>
+	<entry key="install.wizard.params.step1.username">Username</entry>
+	<entry key="install.wizard.params.step1.username.title">Enter a username</entry>
+	<entry key="install.wizard.params.step1.password">Userpass</entry>
+	<entry key="install.wizard.params.step1.password.title">Enter a password</entry>
+	<entry key="install.wizard.params.step1.email">EMail</entry>
+	<entry key="install.wizard.params.step1.email.title">Enter a EMail</entry>
+	<entry key="install.wizard.params.step1.tz">User Time Zone</entry>
+	<entry key="install.wizard.params.step1.groupdata">Organisation(Domains)</entry>
+	<entry key="install.wizard.params.step1.group">Name</entry>
+	<entry key="install.wizard.params.step1.group.title">Enter a default Organisation</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Configuration</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Allow self-registering (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">Send Email to new registered Users (sendEmailAtRegister)</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode">New Users need to verify their EMail (sendEmailWithVerficationCode)</entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms">Default Rooms of all types will be created</entry>
+	<entry key="install.wizard.params.step2.mailReferer">Mail-Referer (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Enter a Referer</entry>
+	<entry key="install.wizard.params.step2.smtpServer">SMTP-Server (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Enter a SMTP-Server</entry>
+	<entry key="install.wizard.params.step2.smtpPort">SMTP-Server Port(default Smtp-Server Port is 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Enter a SMTP-Server.Port normally 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">SMTP-Username (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Enter the mail-username</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">SMTP-Userpass (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Enter the mail-userpass</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">Enable TLS in Mail Server Auth</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">Set inviter's email
+					address as ReplyTo in email invitations (inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Default Language</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Default Font for Export [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Converters</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> see also</entry>
+	<entry key="install.wizard.params.step3.installation">Installation</entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools Zoom</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title">Enter the dpi that swftools will use for PDF to SWF conversion</entry>
+	<entry key="install.wizard.params.step3.swfZoom.text">DPI that swftools will use for PDF to SWF conversion (default is 100)</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">SWFTools JPEG Quality</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title">Enter the quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text">Enter the quality of embedded jpeg pictures to quality. 0 is worst (small),
+				100 is best (big). (default:85)</entry>
+	<entry key="install.wizard.params.step3.swfPath">SWFTools Path</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Enter the path to swftools for example C:/swftools (Windows) or leave blank if swftools is a known to your system path</entry>
+	<entry key="install.wizard.params.step3.swfPath.text">
+		You can test if swftools is installed into system path by
+		opening a shell or cmd-prompt and type pdf2swf If this shows
+		a list of options leave this field blank otherwise you have to
+		specify the path to pdf2swf on your system
+	</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">ImageMagick Path</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Enter the path to ImageMagick, leave blank if ImageMagick is successfully installed to system-path</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">FFMPEG Path</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Enter the path to FFMPEG, leave blank if FFMPEG is successfully installed to system-path</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">SoX Path</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Enter the path to SoX, leave blank if SoX is successfully installed to system-path</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">JOD Path</entry>
+	<entry key="install.wizard.params.step3.jodPath.title">The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar</entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath">OpenOffice/LibreOffice Path for jodconverter</entry>
+	<entry key="install.wizard.params.step3.officePath.title">The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically</entry>
+	<entry key="install.wizard.params.step3.officePath.text">The path to OpenOffice/LibreOffice (optional) please set this
+			to the real path in case jodconverter is unable to find
+			OpenOffice/LibreOffice installation
+	</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Crypt Type</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Crypt Class</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title">Enter the Class name of the Encryption Class. DO NOT ALTER THIS IF YOU ARE NOT SURE</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		You can use this default crypt type which is equal to
+		PHP-MD5 function or BSD-Style encryption by using:<b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>
+		for more information or to write your own Crypt-Style see: <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Custom Crypt Mechanism</a> You can edit this
+		value later BUT previous created Users and Sessions might be not
+		usable anymore
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">red5SIP Configuration</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">Enable SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">Enable red5SIP integration</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">SIP rooms prefix</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text">Prefix for phone number of conference rooms</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">SIP extensions context</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text">Context of Asterisk extensions</entry>
+
+	<entry key="install.wizard.install.desc">Please click "Finish" button to start installation!</entry>
+	<entry key="install.wizard.install.started">Please wait, installation in progress</entry>
+	<entry key="install.wizard.install.failed">Installation is failed</entry>
+
+	<entry key="install.wizard.congrats.enter">Enter the Application</entry>
+	<entry key="install.wizard.congrats.port">If your Red5-Server runs on a different Port or on a different domain</entry>
+	<entry key="install.wizard.congrats.config">alter the config values of the client</entry>
+	<entry key="install.wizard.congrats.mail">Mailing list</entry>
+	<entry key="install.wizard.congrats.commercial">There are some companies
+			that also offer commercial support for Apache OpenMeetings:</entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_de.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_de.properties.xml
new file mode 100644
index 0000000..f2d1eb2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_de.properties.xml
@@ -0,0 +1,265 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Installation</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Empfehlung 
+					f&uuml;r Produktivumgebungen<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			Standardm&auml;&szlig;ig verwendet {0} die integrierte 
+			Apache Derby Datenbank. In Produktivumgebungen wird jedoch der Einsatz von 
+			<a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>, <a 
+				target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a> 
+			oder <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a> empfohlen.
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Import von Bildern auf 
+					das Whiteboard erm&ouml;glichen<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installieren Sie <strong>ImageMagick</strong> auf dem Server. Weitere
+					Informationen unter <a target="_blank"
+					href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>.
+					Anleitungen f&uuml;r die Installation finden Sie unter <a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>, in den
+					meisten Linux-Distributionen l&auml;sst es sich jedoch bequem per Paketmanager
+					(z.B. apt-get) installieren.
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Import von PDF-Dateien auf das
+					Whiteboard erm&ouml;glichen<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installieren Sie <strong>GhostScript</strong> auf dem Server. Weitere
+					Informationen (Installationsanleitungen etc.) finden Sie unter <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>. 
+					In den meisten Linux-Distributionen l&auml;sst es sich bequem per Paketmanager
+					(z.B. apt-get) installieren.
+				</li>
+				<li>Installieren Sie <strong>SWFTools</strong> auf dem Server. Weitere 
+					Informationen (Installationsanleitungen etc.) finden Sie unter <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>. 
+					Einige Linux-Distributionen haben es bereits in ihre Paketquellen aufgenommen (siehe 
+					<a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>).
+					Die empfohlene Version von <strong>SWFTools</strong> ist 0.9 - fr&uuml;here Versionen
+					enthalten einen Bug, welcher zu falschen Objektausdehnungen auf dem Whiteboard 
+					f&uuml;hrt.
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Import von 
+					Office-Dokumenten (.doc, .docx, .ppt, .pptx, etc.) auf das Whiteboard erm&ouml;glichen
+					<a
+					href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>OpenOffice-Service</strong> muss gestartet worden sein und auf Port 8100 lauschen, 
+					siehe <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>.</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Aufzeichnung und 
+					Import von Videos (.avi, .flv, .mov und .mp4) auf das Whiteboard erm&ouml;glichen<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installieren Sie <strong>FFmpeg</strong>. Sie sollten die neueste Version verwenden! 
+					Windows-Binaries finden Sie z.B. unter 
+					<a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a>. Linux- oder OSx-Nutzer sollten 
+					eine der zahlreichen Installationsanleitungen im Web zu Rate ziehen. libmp3lame muss 
+					aktiviert sein!
+				</li>
+				<li>Installieren Sie <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_BLANK">http://sox.sourceforge.net/</a>.
+					Sie sollten die neueste Version verwenden! SoX 12.xx wird NICHT funktionieren!
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">Falls Sie weitere Fragen haben oder Support bei Installation und Hosting 
+			ben&ouml;tigen:</span></b>
+	<br />
+	<br />
+    <br />
+	<br />
+	<b><span style="font-size: 1.2em">Support durch die OpenMeetings-Community:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Mailinglisten</a></span>
+	<br />
+	<br />
+    <br />
+	<b> <span style="font-size: 1.4em">Einige Unternehmen bieten kommerziellen Support
+    f&uuml;r Apache OpenMeetings an:</span></b>
+    <br />
+    <br />
+
+    <span style="font-size: 1.3em"><a
+        href="http://openmeetings.apache.org/commercial-support.html"
+        target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+    <br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Nutzerdaten</entry>
+	<entry key="install.wizard.params.step1.username">Nutzername</entry>
+	<entry key="install.wizard.params.step1.username.title">Geben Sie einen Nutzernamen ein</entry>
+	<entry key="install.wizard.params.step1.password">Nutzerpasswort</entry>
+	<entry key="install.wizard.params.step1.password.title">Geben Sie ein Passwort ein</entry>
+	<entry key="install.wizard.params.step1.email">E-Mail</entry>
+	<entry key="install.wizard.params.step1.email.title">Geben Sie eine E-Mail-Adresse ein</entry>
+	<entry key="install.wizard.params.step1.tz">Zeitzone</entry>
+	<entry key="install.wizard.params.step1.groupdata">Organisation(Domains)</entry>
+	<entry key="install.wizard.params.step1.group">Name</entry>
+	<entry key="install.wizard.params.step1.group.title">Geben Sie den Namen Ihrer Organisation ein</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Konfiguration</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Neuen Nutzern erlauben, sich zu registrieren (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">E-Mail an neu registrierte Nutzer senden (sendEmailAtRegister)</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode"><![CDATA[Neu registrierte Nutzer m&uuml;ssen Ihre E-Mail-Adresse verifizieren (sendEmailWithVerficationCode)]]></entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms"><![CDATA[Beispielr&auml;ume aller Raumtypen erstellen]]></entry>
+	<entry key="install.wizard.params.step2.mailReferer">Mail-Referer (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Enter a Referer</entry>
+	<entry key="install.wizard.params.step2.smtpServer">SMTP-Server (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Enter a SMTP-Server</entry>
+	<entry key="install.wizard.params.step2.smtpPort">SMTP-Server-Port(Standard ist 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Enter a SMTP-Server.Port normally 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">SMTP-Nutzername (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Enter the mail-username</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">SMTP-Nutzerpasswort (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Enter the mail-userpass</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">TLS zur Mailserver-Authentifizierung aktivieren</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">Die E-Mail-Adresse des Einladenden als 'ReplyTo'-Adresse
+					in E-Mail-Einladungen verwenden (inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Voreingestellte Sprache</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Voreingestellte Schriftart beim Export [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Konverter</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> Siehe</entry>
+	<entry key="install.wizard.params.step3.installation">Installation</entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools Zoom</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title"><![CDATA[Geben Sie an, wieviel dpi swftools f&uuml;r die 'PDF zu SWF'-Konvertierung nutzen soll.]]></entry>
+	<entry key="install.wizard.params.step3.swfZoom.text"><![CDATA[Sie k&ouml;nnen &uuml;berpr&uuml;fen, ob swftools im Systempfad 
+		installiert ist, indem Sie eine Shell oder einen cmd-Prompt &ouml;ffnen
+		und pdf2swf eingeben.
+		Geben Sie an, wieviel dpi swftools f&uuml;r die 'PDF zu SWF'-Konvertierung nutzen soll.
+		Voreingestellter Wert ist 100 dpi.]]></entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality"><![CDATA[SWFTools JPEG-Qualit&auml;t]]></entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title"><![CDATA[Geben Sie an, welche Qualit&auml;tsstufe f&uuml;r eingebettete JPEG-Bilder verwendet werden soll.]]></entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text"><![CDATA[Sie k&ouml;nnen &uuml;berpr&uuml;fen, ob swftools im Systempfad 
+		installiert ist, indem Sie eine Shell oder einen cmd-Prompt &ouml;ffnen
+		und pdf2swf eingeben.
+		Geben Sie an, welche Qualit&auml;tsstufe f&uuml;r eingebettete JPEG-Bilder 
+		verwendet werden soll. 0 bedeutet schlechteste Qualit&auml;t (kleinste 
+		Dateigr&ouml;&szlig;e), 100 bedeutet beste Qualit&auml;t (gr&ouml;&szlig;te 
+		Dateigr&ouml;&szlig;e) (Voreinstellung: 85)]]></entry>
+	<entry key="install.wizard.params.step3.swfPath">SWFTools-Pfad</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Geben Sie den Pfad zu swftools an, z.B. C:/swftools (Windows), falls es sich nicht im Systempfad befindet.</entry>
+	<entry key="install.wizard.params.step3.swfPath.text"><![CDATA[
+		Sie k&ouml;nnen &uuml;berpr&uuml;fen, ob swftools im Systempfad 
+		installiert ist, indem Sie eine Shell oder einen cmd-Prompt &ouml;ffnen
+		und pdf2swf eingeben. Wenn daraufhin eine Liste mit Optionen angezeigt wird, 
+		k&ouml;nen Sie dieses Feld leer lassen. Ansonsten m&uuml;ssen Sie den Pfad 
+		zu pdf2swf hier eintragen.
+	]]></entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">ImageMagick-Pfad</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Geben Sie den Pfad zu ImageMagick an, falls es sich nicht im Systempfad befindet.</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">FFMPEG-Pfad</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Geben Sie den Pfad zu FFMPEG an, falls es sich nicht im Systempfad befindet.</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">SoX-Pfad</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Geben Sie den Pfad zu SoX an, falls es sich nicht im Systempfad befindet.</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">JOD-Pfad</entry>
+	<entry key="install.wizard.params.step3.jodPath.title"><![CDATA[Der Pfad zur JOD-Bibliothek (http://code.google.com/p/jodconverter). Beachten Sie, dass der Pfad auf das lib-Verzeichnis zeigen muss, welches auch jodconverter-core-version.jar enth&auml;lt.]]></entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath"><![CDATA[OpenOffice-/LibreOffice-Pfad f&uuml;r jodconverter]]></entry>
+	<entry key="install.wizard.params.step3.officePath.title">Der Pfad zu OpenOffice/LibreOffice (optional). Bitte geben Sie den echten Pfad an, falls jodconverter die OpenOffice-/LibreOffice-Installation nicht automatisch findet.</entry>
+	<entry key="install.wizard.params.step3.officePath.text">Der Pfad zu OpenOffice/LibreOffice (optional). Bitte geben Sie den richtigen Pfad an, falls 
+					jodconverter die OpenOffice-/LibreOffice-Installation nicht automatisch findet.
+	</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Krypto-Typ</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Krypto-Klasse</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title"><![CDATA[Geben Sie den Klassennamen der Krypto-Klasse an. &Auml;NDERN SIE DIESEN WERT NICHT, WENN SIE SICH NICHT SICHER SIND!]]></entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Sie k&ouml;nnen den voreingestellten Krypto-Typ (welcher der 
+		PHP-MD5-Funktion entspricht) benutzen, oder Sie geben 
+		<b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>
+		ein, um BSD-artige Verschl&uuml;sselung zu benutzen. F&uuml;r 
+		weitergehende Informationen, auch zum Schreiben einer eigenen 
+		Krypto-Klasse, siehe <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Custom Crypt Mechanism</a>. Sie k&ouml;nnen diesen 
+		Wert sp&auml;ter ver&auml;ndern, ABER vorher erstellte Nutzer und 
+		Sitzungen k&ouml;nnten anschlie&szlig;end unbenutzbar sein. 
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">red5SIP Configuration</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">SIP aktivieren</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">red5SIP-Integration aktivieren</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix"><![CDATA[Pr&auml;fix f&uuml;r SIP-R&auml;ume]]></entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text"><![CDATA[Pr&auml;fix f&uuml;r Telefonnummer der Konferenzr&auml;ume]]></entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">SIP-Erweiterungskontext</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text"><![CDATA[Kontext f&uuml;r Asterisk-Erweiterungen]]></entry>
+
+	<entry key="install.wizard.install.desc">Bitte klicken Sie auf "Finish" um die Installation zu starten!</entry>
+	<entry key="install.wizard.install.started">Please wait, installation in progress</entry>
+	<entry key="install.wizard.install.failed">Installation is failed</entry>
+
+	<entry key="install.wizard.congrats.enter"><![CDATA[&Ouml;ffnen der Anwendung]]></entry>
+	<entry key="install.wizard.congrats.port">Falls Ihr Red5-Server einen anderen Port oder eine andere Domain benutzt, sollten Sie</entry>
+	<entry key="install.wizard.congrats.config">die Konfiguration des Clients anpassen</entry>
+	<entry key="install.wizard.congrats.mail">Mailingliste</entry>
+	<entry key="install.wizard.congrats.commercial"><![CDATA[Einige Unternehmen bieten kommerziellen Support
+		f&uuml;r Apache OpenMeetings an:]]></entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_es.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_es.properties.xml
new file mode 100644
index 0000000..acaa641
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_es.properties.xml
@@ -0,0 +1,250 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Instalación</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Recomendación 
+				para medios de producción<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			Viene predeterminado {0} para emplear la base de datos Apache Derby. Para
+			medios de producción considere emplear <a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>
+			o por ejemplo <a target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a>
+			o <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Activar Subir Imagen e Importar a la pizarra
+				<a href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instalar <strong>ImageMagick</strong> en el servidor, puede obtener más información en
+				<a target="_blank" href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>
+					observando instalación. Las instrucciones para la misma puede encontrarlas aquí
+					<a target="_blank" href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>,
+					de todos modos en la mayoría de los sistemas linux puede conseguirlo via su paquete favorito
+					de administración (apt-get it).
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Activando
+				importar PDFs a la pizarra<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instale <strong>GhostScript</strong> en el servidor, puede tener
+					más información en <a target="_blank" href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>
+					mire en instalación. Las instrucciones para la instalación se encuentran allí, 
+					de todos modos en la mayoría de los sistemas linux puede conseguirlo
+					via su paquete favorito de administración (apt-get it)
+				</li>
+				<li>Instale <strong>SWFTools</strong> en el servidor, puede tener
+					más información en <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>
+					mire en instalación. Algunas de las distribuciones Linux ya lo tienen en el
+					administrador de paquetes, vea <a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>),
+					la versión recomendada de <strong>SWFTools</strong> es 0.9 porque las
+					anteriores tienen un bug que hace llevar unas dimensiones erróneas al objeto
+                     en la Pizarra.
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Activando
+				importar .doc, .docx, .ppt, .pptx, ... todos los Documentos de Oficina a la Pizarra
+				<a href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu" class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>OpenOffice-Service</strong> lanzado escucha en el
+					puerto 8100, vea <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>
+					para más detalles.</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Activando
+				Grabación e importación de .avi, .flv, .mov and .mp4 a la pizarra<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instalar <strong>FFMpeg</strong>. Puede conseguir FFMPEG de una copia actualizada! 
+				    Para Windows puede descargar una Build, por ejemplo desde
+					<a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a> Los usuarios de Linux o OSx
+					pueden emplear una de las variadas Instrucciones de Instalación que hay en la Web. 
+					Es necesario activar libmp3lame!
+				</li>
+				<li>Instalar <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_blank">http://sox.sourceforge.net/</a>.
+					Instalar una copia de SOX actualizada! SOX 12.xx no funcionará!
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">Si tiene otras cuestiones o necesita soporte para instalación o hosting:</span></b>
+	<br />
+	<br />
+
+	
+	<b><span style="font-size: 1.2em">Soporte-Comunidad:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Listas de correo</a></span>
+	<br />
+	
+	<b> <span style="font-size: 1.4em">Hay algunas compañias
+            que tambien ofrecen soporte comercial para Apache OpenMeetings:</span></b>
+    <br />
+    <br />
+    <br />
+    <br />
+    <span style="font-size: 1.3em"><a
+        href="http://openmeetings.apache.org/commercial-support.html"
+        target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+    <br />
+    ]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Datos del usuario</entry>
+	<entry key="install.wizard.params.step1.username">Nombre de usuario</entry>
+	<entry key="install.wizard.params.step1.username.title">Introduzca un nombre de usuario</entry>
+	<entry key="install.wizard.params.step1.password">Contraseña</entry>
+	<entry key="install.wizard.params.step1.password.title">Introduzca una contraseña</entry>
+	<entry key="install.wizard.params.step1.email">Dirección de correo</entry>
+	<entry key="install.wizard.params.step1.email.title">Introduzca una dirección de correo</entry>
+	<entry key="install.wizard.params.step1.tz">Time Zone del Usuario</entry>
+	<entry key="install.wizard.params.step1.groupdata">Organización (Dominios)</entry>
+	<entry key="install.wizard.params.step1.group">Nombre</entry>
+	<entry key="install.wizard.params.step1.group.title">Introduzca una Organización por omisión</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Configuración</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Permitir auto-registro (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">Enviar Correo a los nuevos Usuarios registrados (sendEmailAtRegister)</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode">Los Nuevos Usuarios necesitan verificarse con sus Correos (sendEmailWithVerficationCode)</entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms">Salas Preconfiguradas de todo tipo serán creadas</entry>
+	<entry key="install.wizard.params.step2.mailReferer">Correo de Referencia (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Introduzca una Referencia</entry>
+	<entry key="install.wizard.params.step2.smtpServer">Servidor SMTP (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Introduzca un Servidor-SMTP</entry>
+	<entry key="install.wizard.params.step2.smtpPort">Puerto del Servidor (el Puerto clásico del Servidor-Smtp es el 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Introduzca un Puerto SMTP normalmente 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">Nombre de Usuario de correo SMTP (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Introduzca nombre usuario de correo</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">Contraseña del usuario de correo SMTP (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Introduzca la contraseña del usuario de correo</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">Activar TLS en el Servidor de Correo Autentificado</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">Poner la dirección de correo electrónico como ReplyTo en los correos de invitaciónes (inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Idioma preferido</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Fuente Preferida para Exportar [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Convertidores</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> consulte</entry>
+	<entry key="install.wizard.params.step3.installation">Instalación</entry>
+	<entry key="install.wizard.params.step3.swfZoom">Zoom SWFTools</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title">Introduzca el dpi que swftools empleará para convertir PDF a SWF</entry>
+	<entry key="install.wizard.params.step3.swfZoom.text">Puede comprobar si la ruta a la instalación de swftools es la correcta
+		abriendo una shell o cmd-prompt y escribir pdf2swf  Introduzca la dpi
+		que swftools empleará para convertir PDF a SWF. Preconfigurada es
+		100 dpi</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">Calidad de JPEG en SWFTools</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title">Introduzca la calidad embebida de las imágenes jpeg. 0 es la menor (pesa menos), 100 es la mejor (pesa más). (por omisión:85)</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text">Puede comprobar si la ruta a la instalación de swftools es la correcta
+		abriendo una shell o cmd-prompt y escribir pdf2swf  Introduzca la calidad
+		de las imagenes jpeg embebidas. 0 es la menor (pequeña),
+		100 es la mejor (grande). (preconfigurada:85)</entry>
+	<entry key="install.wizard.params.step3.swfPath">SWFTools Path (Ruta)</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Introduzca la ruta a swftools, por ejemplo C:/swftools (Windows) o déjelo en blanco si swftools está registrado en el path del sistema</entry>
+	<entry key="install.wizard.params.step3.swfPath.text">
+		Puede comprobar si la ruta a la instalación de swftools es la correcta
+		abriendo una shell o cmd-prompt y escribir pdf2swf  Si muestra
+		una lista de opciones, deje este campo en blanco, si no debe especificar
+		la ruta a pdf2swf en su sistema
+	</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">ImageMagick Path (Ruta)</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Introduzca la ruta a ImageMagick, o déjelo en blanco si ImageMagick está registrado en el path del sistema</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">FFMPEG Path (Ruta)</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Introduzca la ruta a FFMPEG, o déjelo en blanco si ImageMagick está registrado en el path del sistema</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">SoX Path (Ruta)</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Introduzca la ruta a SOX, o déjelo en blanco si SOX está registrado en el path del sistema</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">JOD Path (Ruta)</entry>
+	<entry key="install.wizard.params.step3.jodPath.title">Ruta a la libreria JOD (http://code.google.com/p/jodconverter), introduzca la ruta al directorio lib donde se encuentra el archivo jodconverter-core-version.jar</entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath">OpenOffice/LibreOffice Path (Ruta) para jodconverter</entry>
+	<entry key="install.wizard.params.step3.officePath.title">Ruta a OpenOffice/LibreOffice (opcional), por favor introdúzcala en el caso que jodconverter no encuentre a OpenOffice/LibreOffice automáticamente</entry>
+	<entry key="install.wizard.params.step3.officePath.text">El path (ruta) a OpenOffice/LibreOffice (opcional) por favor
+		configúrelo correctamente en caso de que jodconverter no pueda
+		encontrar la instalación de OpenOffice/LibreOffice
+	</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Tipo de Encriptación</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Crypt Class</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title">Introduzca el nombre del tipo de Encriptación. NO LO CAMBIE SI NO ESTÁ SEGURO</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Puede emplear este tipo de encriptación que es igual
+		a la función PHP-MD5 o BSD-Style empleando: <b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>
+		para más información o escribir su propio Cryp-Style mire en: <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Customizar Mecanismo de Encriptación</a> Puede editar este valor
+		después AUNQUE los Usuarios y Sesiones creadas anteriormente pueden quedar
+		en desuso para siempre.
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">red5SIP Configuración</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">Activar SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">Activar la integración de red5SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">SIP prefijo de salas</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text">Prefijo para número telefónico de salas de conferencia</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">SIP extensiones contexto</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text">Contexto de Asterisk extensiones</entry>
+
+	<entry key="install.wizard.install.desc">Por favor pulse el botón "Finalizar" para comenzar la instalación.</entry>
+	<entry key="install.wizard.install.started">Por favor aguarde, instalación en progreso...</entry>
+	<entry key="install.wizard.install.failed">Instalación fallida</entry>
+
+	<entry key="install.wizard.congrats.enter">Entrar a la Aplicación</entry>
+	<entry key="install.wizard.congrats.port">Si su servidor Red5 corre en un Puerto distinto o en diferente dominio</entry>
+	<entry key="install.wizard.congrats.config">cambie los valores de configuración del cliente</entry>
+	<entry key="install.wizard.congrats.mail">Listas de correo</entry>
+	<entry key="install.wizard.congrats.commercial">Hay algunas compañias
+		que tambien ofrecen soporte comercial para Apache OpenMeetings:</entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_fr.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
new file mode 100644
index 0000000..ed8628e
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
@@ -0,0 +1,220 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Installation</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Recommendation pour l'environnement de production<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			Par défaut {0} utilise la base de données Apache Derby. Dans un environnement de production vous devriez opter pour
+			<a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>, <a 
+				target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a> 
+			ou <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>.
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Activer l'upload et l'import d'images vers le tableau blanc<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installez <strong>ImageMagick</strong> sur le serveur. Vous trouverez plus d'informations à l'adresse <a target="_blank"
+					href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>.
+					Les instructions d'installation peuvent être trouvées ici <a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>. Sur la majorité des systèmes linux vous pouvez le trouver via votre manager de paquets (apt-get).
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Activer l'import de fichiers PDF sur le tableau blanc<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installez <strong>GhostScript</strong> sur le serveur. Vous trouverez plus d'information sur <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>. 
+					Sur la majorité des systèmes linux vous pouvez le trouver via votre manager de paquets (apt-get).
+				</li>
+				<li>Installez <strong>SWFTools</strong> sur le serveur. Vous trouverez plus d'informations sur <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>. 
+					Certaines distribution de Linux le possède déjà. Voir
+					<a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>).
+					La version recommandée de <strong>SWFTools</strong> est 0.9 - les versions précédentes ont un bug qui modifie les dimensions des objets sur le tableau blanc.
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Activer l'import de documents Office (.doc, .docx, .ppt, .pptx, etc.) sur le tableau blanc<a	href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>Le service OpenOffice</strong> doit être démarré et en écoute sur le port 8100.  Voir <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a> pour plus de détails.</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Activer l'enregistrement et l'import de fichiers vidéo (.avi, .flv, .mov und .mp4) sur le tableau blanc<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Installez <strong>FFmpeg</strong>. Vous devez obtenir la dernière version de FFMPEG ! Pour Windows vous pouvez la télécharger par exemple de <a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a>. Pour Linux ou OSx vous devriez utiliser l'une des nombreuses instructions d'installation sur le web.  Vous devez activer libmp3lame !
+				</li>
+				<li>Installez <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_BLANK">http://sox.sourceforge.net/</a>.
+					Vous devez installer la dernière version ! SoX 12.xx ne fonctionnera PAS !
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">Si vous avez plus de questions ou avez besoin d'aide pour l'installation ou l'hébergement :</span></b>
+	<br />
+	<br />
+
+	<b><span style="font-size: 1.2em">Support via la communauté OpenMeetings :</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Listes de diffusion</a></span>
+	<br />
+	<br />
+
+	<b> <span style="font-size: 1.2em">Support commercial:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/commercial-support.html"
+		target="_blank">Support commercial</a></span>
+
+	<br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Données utilisateur</entry>
+	<entry key="install.wizard.params.step1.username">Nom d'utilisateur</entry>
+	<entry key="install.wizard.params.step1.username.title">Entrez un nom d'utilisateur</entry>
+	<entry key="install.wizard.params.step1.password">Mot de passe</entry>
+	<entry key="install.wizard.params.step1.password.title">Entrez un mot de passe</entry>
+	<entry key="install.wizard.params.step1.email">E-Mail</entry>
+	<entry key="install.wizard.params.step1.email.title">Entrez une adresse E-Mail</entry>
+	<entry key="install.wizard.params.step1.tz">Fuseau horaire</entry>
+	<entry key="install.wizard.params.step1.groupdata">Organisation(Domaines)</entry>
+	<entry key="install.wizard.params.step1.group">Nom</entry>
+	<entry key="install.wizard.params.step1.group.title">Entrez le nom de votre organisation</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Configuration</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Autoriser les  nouveaux utilisateurs de s'enregistrer (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">Envoyer un E-Mail aux nouveaux utilisateurs (sendEmailAtRegister)</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode">Les nouveaux utilisateurs doivent vérifier leur adresse E-Mail (sendEmailWithVerficationCode)</entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms">Installer toutes les salles par défaut</entry>
+	<entry key="install.wizard.params.step2.mailReferer">Adresse mail du système (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Entrez l'adresse mail utilisaée par le système</entry>
+	<entry key="install.wizard.params.step2.smtpServer">SMTP (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Entrez un  serveur SMTP</entry>
+	<entry key="install.wizard.params.step2.smtpPort">Port du serveur SMTP (Le port standard est 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Entrez le port du serveur SMTP Normalement 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">Nom d'utilisateur système SMTP (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Entrez le nom d'utilisateur mail du système</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">Mot de passe SMTP (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Entrez le mot de passe mail du système</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">Activer TLS pour le serveur mail</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">Inclure l'adresse mail de l'organisateur dans le champ des destinataires d'un E-Mail (inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Langue par défaut</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Police par défaut pour l'export [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Convertisseurs</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> Voir</entry>
+	<entry key="install.wizard.params.step3.installation">Installation</entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools Zoom</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title">Veuillez indiquer le nombre de dpi que swftools devra utiliser lors de la conversion de PDF vers SWF.</entry>
+	<entry key="install.wizard.params.step3.swfZoom.text">Vous pouvez vérifier que swftools se trouve dans votre chemin système en tapant pdf2swf dans une ligne de commande. Indiquez combien de dpi swtools devra utiliser pour les conversions PDF vers SWF. (Par défaut : 100 dpi).</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">SWFTools Qualité JPEG</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title">Entrez la qualité des images jpec incorporées. 0 étant la moins bonne et 100 la meilleure (par défaut : 85).</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text">Vous pouvez vérifier que swftools se trouve dans votre chemin système en tapant pdf2swf dans une ligne de commande. 
+						Indiquez la qualité pour les images jpeg. 0 est la moins bonne (taille plus petite), 100 est la meilleure (taille plus grande) (par défaut : 85).</entry>
+	<entry key="install.wizard.params.step3.swfPath">Chemin vers SWFTools</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Indiquez le chemin vers swftools,  par ex. C:/swftools (Windows), ou laissez vide si swftools se trouve déjà dans le chemin système.</entry>
+	<entry key="install.wizard.params.step3.swfPath.text">
+		Vous pouvez vérifier que swftools se trouve dans votre chemin système en tapant pdf2swf dans une ligne de commande. Si le résultat de cette commande vous montre une liste d'options, laissez ce champ vide, dans le cas contraire veuillez indiquer le chemin vers swftools.
+	</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">Chemin vers ImageMagick</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Indiquez le chemin vers ImageMagick dans le cas où ImageMagick ne se trouve pas dans le chemin système.</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">Chemin vers FFMPEG</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Indiquez le chemin vers FFMPEG dans le cas où FFMPEG ne se trouve pas dans le chemin système.</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">Chemin vers SoX</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Indiquez le chemin vers SoX dans le cas où SoX ne se trouve pas dans le chemin système.</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">Chemin vers JOD</entry>
+	<entry key="install.wizard.params.step3.jodPath.title">Chemin vers la bibliothèque JOD (http://code.google.com/p/jodconverter). Configurez le chemin pour pointer vers le répertoire lib de JOD qui contient également le fichier jodconverter-core-version.jar.</entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath">Chemin vers OpenOffice-/LibreOffice pour jodconverter</entry>
+	<entry key="install.wizard.params.step3.officePath.title">Chemin vers OpenOffice/LibreOffice (optionnel). Indiquez le chemin réel dans le cas où jodconverter ne pourrait pas trouver l'installation de OpenOffice-/LibreOffice automatiquement.</entry>
+	<entry key="install.wizard.params.step3.officePath.text">Chemin vers OpenOffice/LibreOffice (optionnel). Indiquez le chemin réel dans le cas où jodconverter ne pourrait pas trouver l'installation de OpenOffice-/LibreOffice automatiquement.</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Type de cryptage</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Classe de cryptage</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title">Indiquez le nom de la classe de cryptage. NE MODIFIEZ PAS CECI SI VOUS N'ETES PAS SUR !</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Vous pouvez utiliser ce cryptage par défaut qui est équivalent à la fonction MD5 de PHP ou style de cryptage BDS en utilisant : 
+		<b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>
+		Pour plus d'information ou pour écrire votre propre cryptage voir : <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Custom Crypt Mechanism</a>. Vous pouvez éditer cette valeur plus tard MAIS les utilisateurs créés précédemment pourraient ne plus être utilisables. 
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">Configuration red5SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">Activer SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">Activer l'intégration red5SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">Préfix pour les salles SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text">Préfix pour le num. de tél. des salles de conférence</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">Contexte des extensions SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text">Contexte des extensions Asterisk</entry>
+
+	<entry key="install.wizard.install.desc">Veuillez cliquer sur "Finish" pour commencer l'installation !</entry>
+	<entry key="install.wizard.install.started">Please wait, installation in progress</entry>
+	<entry key="install.wizard.install.failed">Installation is failed</entry>
+
+	<entry key="install.wizard.congrats.enter">Entrer dans l'application</entry>
+	<entry key="install.wizard.congrats.port">Si votre serveur Red5 tourne sur un port différent ou sur un domaine différent</entry>
+	<entry key="install.wizard.congrats.config">modifiez la config du client</entry>
+	<entry key="install.wizard.congrats.mail">Liste de diffusion</entry>
+	<entry key="install.wizard.congrats.commercial">Il existe des sociétés
+		qui offrent un support commercial pour Apache OpenMeetings :</entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_hu.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
new file mode 100644
index 0000000..5757a34
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
@@ -0,0 +1,242 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Installation</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Ajánlott környezeti beállítások<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			Az {0} alapértelmezette a beépített Apache Derby adatbázist használja. 
+			További lehetőségként használható a <a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>
+			vagy a minta alapján<a target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a>
+			vagy <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Képek feltöltése/importálása a prezentációs területbe<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Telepítse a <strong>ImageMagick</strong> program csomagot a szerverre. Telepítési útmutató és további információk itt 
+				<a target="_blank" href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>
+				<a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>,
+					Linux operációs rendszerben használja a beépített csomagkezelőt (apt-get it).
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>PDF fileok feltöltése a prezentációs területbe<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Telepítse a  <strong>GhostScript</strong> program csomagot a szerverre. Telepítési útmutató és további információk itt <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>
+					Linux operációs rendszerben használja a beépített csomagkezelőt (apt-get it).
+				</li>
+				<li>Telepítse a <strong>SWFTools</strong> program csomagot a szerverre. Telepítési útmutató és további információk itt  <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>
+					Több linux disztribúció csomagkezelőjében megtalálható <a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>),
+					ajánlott verzió a <strong>SWFTools</strong> 0.9 egyéb verzió bugja miatt hibát okozhat a prezentációkban. 
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Dokumentumok importálása a prezentációs területrbe
+				.doc, .docx, .ppt, .pptx, ... stb (OpenOfice kompatibilis).<a
+					href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Telepítse az <strong>OpenOffice / LibreOffice</strong> program csomagot a szerverre. Telepítési útmutató és további információk itt  <a target="_blank"
+					href="http://www.openoffice.org/" rel="nofollow">http://www.openoffice.org/</a>
+					<a target="_blank"
+					href="http://www.libreoffice.org/" rel="nofollow">http://www.libreffice.org/</a>
+					LibreOffice program csomag használata esetén rendelje hozzá szimbólikus linkként az OpenOffice könyvtárat.
+					<br />
+					ln -s /opt/libreoffice /opt/openoffice 
+				</li>
+				<li><strong>OpenOffice-Service</strong> automatikusan indul és elérhető a
+					8100 porton. Bővebb információ itt <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Videó felvétele és importálása .avi, .flv, .mov and .mp4 formátumokban a prezentációs területbe<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Telepítse az <strong>FFMpeg</strong> programcsomagot. Használja az FFMPEG aktuális, friss verzióját.
+				 	Windows rendszerekhez kiadások itt <a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a> Linux, OSX rendszerkhez
+					többféle lehetőség érhető el, keresse meg a megfelelőt az interneten. 
+					Szükséges a libmp3lame kóder engedélyezése/implementálása!
+				</li>
+				<li>Telepítse a <strong>SoX</strong> programot innen: <a
+					href="http://sox.sourceforge.net/" target="_BLANK">http://sox.sourceforge.net/</a>.
+					A SoX friss verzióit használja! SoX 12.xx nem/hibásan működik!
+				</li>
+			</ul>
+		</li>
+	</ol>
+	
+	<b><span style="font-size: 1.2em">Közösségi-támogatás:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Levelező lista</a></span>
+	<br />
+    <br />
+	<br />
+    <b> <span style="font-size: 1.4em">Néhány cég, akik üzleti támogatást nyújthatnak Apache OpenMeetings:</span></b>
+	<br />
+	<br />
+    
+	<span style="font-size: 1.3em"><a
+		href="http://openmeetings.apache.org/commercial-support.html"
+		target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+	<br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Felhasználói adatok</entry>
+	<entry key="install.wizard.params.step1.username">Felhasználónév</entry>
+	<entry key="install.wizard.params.step1.username.title">Adja meg a felhasználói nevét</entry>
+	<entry key="install.wizard.params.step1.password">Jelszó</entry>
+	<entry key="install.wizard.params.step1.password.title">Adja meg a jelszavát</entry>
+	<entry key="install.wizard.params.step1.email">EMail</entry>
+	<entry key="install.wizard.params.step1.email.title">Adja meg az e-mail címét</entry>
+	<entry key="install.wizard.params.step1.tz">Időzóna kiválasztása</entry>
+	<entry key="install.wizard.params.step1.groupdata">Szervezeti egység (Domain)</entry>
+	<entry key="install.wizard.params.step1.group">Név (domain)</entry>
+	<entry key="install.wizard.params.step1.group.title">Adja meg a nevet (domain)</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Beállítások</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Előregisztráció engedélyezése (megjelenik a belépő panelen)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">Regisztrációs e-mail küldése</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode">Regisztráció megerősítése e-mailben (megerősítő link küldése)</entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms">Alapértelmezett típusú konferencia szobák létrehozása</entry>
+	<entry key="install.wizard.params.step2.mailReferer">Rendszer e-mail cím</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Rendszer e-mail megadása</entry>
+	<entry key="install.wizard.params.step2.smtpServer">SMTP-Szerver (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Enter a SMTP-Server</entry>
+	<entry key="install.wizard.params.step2.smtpPort">SMTP-Szerver Port(alapértelmezett Smtp-Server Port 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Enter a SMTP-Server.Port normally 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">SMTP-Felhasználó név (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Adja meg a felhasználó nevet</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">SMTP-Felhasználó jelszó (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Adja meg a jelszót</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">TLS engedélyezése az authentikációhoz</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">A meghívó e-mail címének küldése és beállítása a válasz küldéshez (reply-to) fejlécben(inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Alapértelmezett nyelv</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Alapértelmezett betükészlet [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Konverterek</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> bővebben</entry>
+	<entry key="install.wizard.params.step3.installation">Telepítés</entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools Zoom</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title">Adja meg az SWFTools felbontását (dpi) amit a PDF2SWF konverziónál használ</entry>
+	<entry key="install.wizard.params.step3.swfZoom.text">
+		Ellenőrizze az swftools telepítését és elérését a rendszerútvonalon.
+		Nyisson egy parancssort és futtassa: pdf2swf. Paraméterként megadhatja a felbontást.
+		Alapértelmezett felbontás 100 dpi.
+	</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">SWFTools JPEG Minőség</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title">Adja meg a jpeg képek minőségi rátáját. 0 a gyengébb (kicsi), 100 a legjobb (nagy). (alapértelmezett:85)</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text">
+		Ellenőrizze az swftools telepítését és elérését a rendszerútvonalon.
+		Nyisson egy parancssort és futtassa: pdf2swf. Paraméterként megadhatja a 
+		a jpeg képek minőségét. 0 a gyengébb (kicsi),
+		100 a legjobb (nagy). (alapértelmezett:85).
+	</entry>
+	<entry key="install.wizard.params.step3.swfPath">SWFTools útvonala</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Adja meg az SWFTools elérési útvonalát C:/swftools (Windows) /usr/local/swftools (Linux) vagy hagyja üresen, ha elérhető a rendszerútvonalak közt</entry>
+	<entry key="install.wizard.params.step3.swfPath.text">
+		Ellenőrizze az swftools telepítését és elérését a rendszerútvonalon.
+		Nyisson egy parancssort és futtassa: pdf2swf. Hagyja üresen, ha nem ismeri, vagy ha elérhető a rendszerútvonalon. 
+	</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">ImageMagick útvonala</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Adja meg a ImageMagick elérési útvonalát, hagyja üresen, ha az ImageMagick elérhető a rendszer útvonalak közt</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">FFMPEG útvonala</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Adja meg az FFMPEG alérési útvonalát, hagyja üresen, ha az FFMPEG elérhető a rendszer útvonalak közt</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">SoX útvonala</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Adja meg a SoX elérési útvonalát, hagyja üresen, ha a SoX elérhető a rendszer útvonalak közt</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">JOD útvonala</entry>
+	<entry key="install.wizard.params.step3.jodPath.title">A JOD könyvtár útvonala (http://code.google.com/p/jodconverter), a JOD könyvtárban szükséges a jodconverter-core-version.jar</entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath">OpenOffice/LibreOffice útvonala a jodconverterhez</entry>
+	<entry key="install.wizard.params.step3.officePath.title">Adja meg az OpenOffice/LibreOffice (optional) valós útvonalát, a OpenOffice/LibreOffice nem keresi automatikusan a jodconverter</entry>
+	<entry key="install.wizard.params.step3.officePath.text">
+		Az OpenOffice/LibreOffice (optional) útvonalát a jodconverter nem találja autómatikusan, az abszolút elérési útvonal szükséges
+	</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Titkosítás típusa</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Titkosító osztály</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title">Adja meg a titkosító osztály nevét (class). NE VÁLTOZTASSA, HA NEM BIZTOS BENNE!</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Az alapértelmezetten beállított kódolás megfelel a 
+		PHP-MD5 kódolónak, vagy BSD-Stílusú kódoláshoz használja a:<b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>
+		további kódolási/titkosítási eljárásokról itt olvashat bővebben: <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Egyedi titkosítási mechanizmus </a> Ha a későbbiekben módosítja ezt a beállítást,
+		az előzőleg létrehozott adatok elérhetetlenné válnak, ami működési hibát okozhat a régebbi munkamenetek elérésében 
+		(pl. jelszó, hash kezelés).
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">Red5SIP Beállítása</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">SIP engedélyezése</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">Red5SIP integráció engedélyezése</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">SIP szoba prefix</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text">Telefonszám prefixum beállítása a konferencia szobához</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">SIP kiterjesztés leírása</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text">Leírás az Asterix konfigurálásához</entry>
+
+	<entry key="install.wizard.install.desc">Kattintson a "Befejezés" gombra a telepítés folytatásához</entry>
+	<entry key="install.wizard.install.started">Please wait, installation in progress</entry>
+	<entry key="install.wizard.install.failed">Installation is failed</entry>
+
+	<entry key="install.wizard.congrats.enter">Belépés az alkalmazásba</entry>
+	<entry key="install.wizard.congrats.port">Ha a Red5 szervert más porton, domainen, vagy más beállításokkal használja</entry>
+	<entry key="install.wizard.congrats.config">változtassa meg a kliens szükséges konfigurációit</entry>
+	<entry key="install.wizard.congrats.mail">Levelező lista</entry>
+	<entry key="install.wizard.congrats.commercial">Néhány cég, akik üzleti támogatást nyújthatnak Apache OpenMeetings:</entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
new file mode 100644
index 0000000..2c5185c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
@@ -0,0 +1,261 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Installation</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Recomenda&ccedil;&otilde;es 
+				para o ambiente de produ&ccedil;&atilde;o<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			Por padr&atilde;o o {0} utiliza o banco de dados Apache Derby integrado ao sistema. 
+			Para o ambiente de produ&ccedil;&atilde;o voc&ecirc; deve considerar o uso do <a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>
+			ou, por exemplo, <a target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a>
+			ou <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>.
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Habilitando envio e 
+					importa&ccedil;&atilde;o de imagens para a lousa<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instale <strong>ImageMagick</strong> no servidor, voc&ecirc; pode
+					obter maiores informa&ccedil;&otilde;es em <a target="_blank"
+					href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>, inclusive 
+					sobre a instala&ccedil;&atilde;o. Instru&ccedil;&otilde;es sobre a instala&ccedil;&atilde;o
+					também podem ser encontradas aqui <a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>,
+					entretanto na maioria dos sistemas Linux voc&ecirc; poder&aacute; instal&aacute;-lo pelo seu 						gerenciador de pacotes favorito (ex.: apt-get).
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Habilitando 
+				importa&ccedil;&atilde;o de PDFs na lousa<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instale <strong>GhostScript</strong> no servidor, voc&ecirc; pode
+					obter maiores informa&ccedil;&otilde;es em <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>,
+					inclusive sobre a instala&ccedil;&atilde;o. Instru&ccedil;&otilde;es sobre a 						instala&ccedil;&atilde;o podem ser encontradas neste mesmo link, entretanto na maioria dos 						sistemas Linux voc&ecirc; poder&aacute; instal&aacute;-lo pelo seu gerenciador 
+					de pacotes favorito (ex.: apt-get).
+				</li>
+				<li>Instale <strong>SWFTools</strong> no servidor, voc&ecirc; pode
+					obter maiores informa&ccedil;&otilde;es em <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>, inclusive
+					sobre a instala&ccedil;&atilde;o. Algumas distribui&ccedil;&otilde;es de Linux j&aacute; o 
+					possui em seus gerenciadores de pacote, veja <a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>.
+					A vers&atilde;o recomendada do <strong>SWFTools</strong> &eacute; a 0.9, pois a vers&atilde;o 
+					anterior possui um bug que coloca o objeto na lousa com dimens&otilde;es incorretas.	
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Habilitando
+				importa&ccedil;&atilde;o de todos os documentos Office como .doc, .docx, .ppt, .pptx, (...) na lousa
+				<a
+					href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>OpenOffice-Service</strong> iniciado e executando na 
+					porta 8100, veja <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>
+					para detalhes.</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Habilitando
+				grava&ccedil;&otilde;es e importa&ccedil;&atilde;o de arquivos .avi, .flv, .mov e .mp4 na lousa<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Instale <strong>FFMpeg</strong>. Voc&ecirc; deve obter a vers&atilde;o mais atual do FFMPEG!
+					Para Windows voc&ecirc; pode baixar a versão compilada, por exemplo, 
+					de <a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a>. Usu&aacute;rios Linux ou OSx
+					dever&atilde;o utilizar uma das diversas instru&ccedil;&otilde;es de instala&ccedil;&atilde;o 
+					existentes na Web. Voc&ecirc; precisa habilitar o libmp3lame!
+				</li>
+				<li>Instale <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_BLANK">http://sox.sourceforge.net/</a>.
+					Voc&ecirc; deve instalar a vers&atilde;o mais recente do SoX! 
+					SoX 12.xx N&Atilde;O funcionar&aacute;!
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">Se voc&ecirc; tiver outras d&uacute;vidas ou precisar de suporte para a 
+		instala&ccedil;&atilde;o ou hospedagem:</span></b>
+	<br />
+	<br />
+
+	<b><span style="font-size: 1.2em">Suporte da comunidade:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Lista de discuss&atilde;o</a></span>
+	<br />
+        <br />
+	
+	<b> <span style="font-size: 1.4em">Existem algumas empresas que tamb&eacute;m oferecem suporte comercial para o Apache OpenMeetings:</span></b>
+    <br />
+    <br />
+    <span style="font-size: 1.3em"><a
+        href="http://openmeetings.apache.org/commercial-support.html"
+        target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+    <br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata"><![CDATA[Dados do usu&aacute;rio]]></entry>
+	<entry key="install.wizard.params.step1.username"><![CDATA[Usu&aacute;rio]]></entry>
+	<entry key="install.wizard.params.step1.username.title"><![CDATA[Digite um usu&aacute;rio]]></entry>
+	<entry key="install.wizard.params.step1.password">Senha</entry>
+	<entry key="install.wizard.params.step1.password.title">Digite uma senha</entry>
+	<entry key="install.wizard.params.step1.email">E-Mail</entry>
+	<entry key="install.wizard.params.step1.email.title">Digite um e-mail</entry>
+	<entry key="install.wizard.params.step1.tz">Time Zone</entry>
+	<entry key="install.wizard.params.step1.groupdata"><![CDATA[Organização (Dom&iacute;nios)]]></entry>
+	<entry key="install.wizard.params.step1.group">Nome</entry>
+	<entry key="install.wizard.params.step1.group.title"><![CDATA[Digite a Organiza&ccedil;&atilde;o padr&atilde;o]]></entry>
+
+	<entry key="install.wizard.params.step2.configuration">Configuration</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Permitir auto-cadastro (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister"><![CDATA[Enviar e-mail para novos Usu&aacute;rios cadastrados (sendEmailAtRegister)]]></entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode"><![CDATA[Novos Usu&aacute;rios precisam validar seus e-mails (sendEmailWithVerficationCode)]]></entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms"><![CDATA[Todos os tipos de Salas padr&atilde;o ser&atilde;o criadas]]></entry>
+	<entry key="install.wizard.params.step2.mailReferer">E-mail do sistema (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Digite um e-mail</entry>
+	<entry key="install.wizard.params.step2.smtpServer">Servidor SMTP (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Digite um servidor SMTP</entry>
+	<entry key="install.wizard.params.step2.smtpPort"><![CDATA[Porta SMTP (a porta SMTP padr&atilde;o &eacute; 25) (smtp_port)]]></entry>
+	<entry key="install.wizard.params.step2.smtpPort.title"><![CDATA[Digite a porta do servi&ccedil;o SMTP. Padr&atilde;o &eacute; normalmente a porta 25]]></entry>
+	<entry key="install.wizard.params.step2.mailAuthName"><![CDATA[Usu&aacute;rio SMTP (email_username)]]></entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title"><![CDATA[Digite o usu&aacute;rio do e-mail]]></entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">Senha SMTP (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Digite a senha do e-mail</entry>
+	<entry key="install.wizard.params.step2.mailUseTls"><![CDATA[Habilitar TLS na autentica&ccedil;&atilde;o do e-mail]]></entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer"><![CDATA[Incluir endere&ccedil;o de e-mail do convidador no campo "Responder Para" do e-mail enviado ao convidado (inviter.email.as.replyto)]]></entry>
+	<entry key="install.wizard.params.step2.defaultLangId"><![CDATA[Linguagem padr&atilde;o]]></entry>
+	<entry key="install.wizard.params.step2.defaultExportFont"><![CDATA[Fonte padr&atilde;o para exporta&ccedil;&atilde;o [default_export_font]]]></entry>
+
+	<entry key="install.wizard.params.step3.converters">Conversores</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> Veja mais em </entry>
+	<entry key="install.wizard.params.step3.installation"><![CDATA[Instala&ccedil;&atilde;o]]></entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools Zoom</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title"><![CDATA[Digite o dpi que o swftools usar&aacute; para a convers&atilde;o do PDF para SWF]]></entry>
+	<entry key="install.wizard.params.step3.swfZoom.text"><![CDATA[
+		Voc&ecirc; pode testar se o swftools está instalado no caminho do sistema
+		abrindo o shell ou prompt de comando e digitando pdf2swf. Digite o dpi 
+		que o swftools usar&aacute; para a convers&atilde;o do PDF para SWF. O padr&atilde;o 
+		&eacute; 100 dpi.
+	]]></entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">Qualidade JPEG no SWFTools</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title"><![CDATA[Digite a qualidade das imagens jpeg incorporadas. 0 &eacute; a pior (menor), 100 &eacute; a melhor (maior). (padr&atilde;o:85)]]></entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text"><![CDATA[
+		Voc&ecirc; pode testar se o swftools está instalado no caminho do sistema
+		abrindo o shell ou prompt de comando e digitando pdf2swf. Digite a qualidade das 
+		imagens jpeg incorporadas. 0 &eacute; a pior (menor), 100 &eacute; a melhor (maior). 
+		(padr&atilde;o:85).
+	]]></entry>
+	<entry key="install.wizard.params.step3.swfPath"><![CDATA[Diret&oacute;rio do SWFTools]]></entry>
+	<entry key="install.wizard.params.step3.swfPath.title"><![CDATA[Digite o caminho do diret&oacute;rio para o swftools, por exemplo C:/swftools, ou deixe em branco se o swftools estiver localizado em um diret&oacute;rio contido no caminho do sistema (system path)]]></entry>
+	<entry key="install.wizard.params.step3.swfPath.text"><![CDATA[
+		Voc&ecirc; pode testar se o swftools está instalado no caminho do sistema
+		abrindo o shell ou prompt de comando e digitando pdf2swf. Se isso mostrar 
+		uma lista de op&ccedil;&otilde;es deixe este campo em branco, caso contr&aacute;rio 
+		voc&ecirc; dever&aacute; especificar o diret&oacute;rio 
+		do pdf2swf no seu sistema.
+	]]></entry>
+	<entry key="install.wizard.params.step3.imageMagicPath"><![CDATA[Diret&oacute;rio do ImageMagick]]></entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title"><![CDATA[Digite o caminho do diret&oacute;rio para o ImageMagick, deixe em branco se o ImageMagick estiver localizado em um diret&oatilde;rio contido no caminho do sistema (system path)]]></entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath"><![CDATA[Diret&oacute;rio do FFMPEG]]></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title"><![CDATA[Digite o caminho do diret&oacute;rio do para o FFMPEG, deixe em branco se o FFMPEG estiver localizado em um diret&oatilde;rio contido no caminho do sistema (system path)]]></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath"><![CDATA[Diret&oacute;rio do SoX]]></entry>
+	<entry key="install.wizard.params.step3.soxPath.title"><![CDATA[Digite o caminho do diret&oacute;rio do para o SoX, deixe em branco se o SoX estiver localizado em um diret&oatilde;rio contido no caminho do sistema (system path)]]></entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath"><![CDATA[Diret&oacute;rio do JOD]]></entry>
+	<entry key="install.wizard.params.step3.jodPath.title"><![CDATA[O diret&oacute;rio da biblioteca JOD (http://code.google.com/p/jodconverter), configure o mesmo para o ponto onde o diret&oacute;rio lib do JOD que também contenha o arquivo jodconverter-core-version.jar]]></entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath"><![CDATA[Diret&oacute;rio do OpenOffice/LibreOffice para jodconverter]]></entry>
+	<entry key="install.wizard.params.step3.officePath.title"><![CDATA[O diret&oacute;rio do OpenOffice/LibreOffice (opcional). Por favor configure este com o caminho real caso o jodconverter não encontre a instala&ccedil;&atilde;o do OpenOffice/LibreOffice automaticamente.]]></entry>
+	<entry key="install.wizard.params.step3.officePath.text"><![CDATA[
+		O diret&oacute;rio do OpenOffice/LibreOffice (opcional). 
+		Por favor configure este campo com o caminho real caso o jodconverter 
+		não encontre a instala&ccedil;&atilde;o do OpenOffice/LibreOffice automaticamente.
+	]]></entry>
+
+	<entry key="install.wizard.params.step4.crypt">Crypt Type</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Classe Crypt</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title"><![CDATA[Digite o nome da Classe de Criptografia. N&Atilde;O ALTERE ISTO SE VOC&Ecirc; N&Atilde;O TIVER CERTEZA]]></entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Voc&ecirc; pode usar este tipo padr&atilde;o de criptografia que &eacute; igual a 
+		fun&ccedil;&atilde;o PHP-MD5 ou a criptografia BSD-Style 
+		utilizando: <b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>. 
+		Para maiores informa&ccedil;&otilde;es ou para escrever seu pr&oacute;prio Crypt-Style 
+		veja: <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Mecanismo de Criptografia personalizado</a>
+		Voc&ecirc; pode editar este valor mais tarde MAS Usu&aacute;rios e Sess&otilde;es 
+		criados podem n&atilde;o mais estar acess&iacute;veis.
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP"><![CDATA[Configura&ccedil;&atilde;o red5SIP]]></entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">Habilitar SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text"><![CDATA[Habilitar integra&ccedil;&atilde;o red5SIP]]></entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">Prefixo de salas SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text"><![CDATA[Prefixo de n&uacute;mero de telefone das salas de conferencia]]></entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext"><![CDATA[Contexto de extens&otilde;s SIP]]></entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text"><![CDATA[Contexto de extens&otilde;es Asterisk]]></entry>
+
+	<entry key="install.wizard.install.desc"><![CDATA[Por favor clique no botão "Finalizar" para inicar a instalação!]]></entry>
+	<entry key="install.wizard.install.started">Por favor aguarde, instalação em progresso</entry>
+	<entry key="install.wizard.install.failed">Instalação falhou</entry>
+
+	<entry key="install.wizard.congrats.enter">Acesse o Aplicativo</entry>
+	<entry key="install.wizard.congrats.port"><![CDATA[Se seu servidor Red5 &eacute; executado em uma porta ou dom&iacute;nio diferente]]></entry>
+	<entry key="install.wizard.congrats.config"><![CDATA[altere os valores da configura&ccedil;&atilde;o do cliente]]></entry>
+	<entry key="install.wizard.congrats.mail"><![CDATA[Listas de discuss&atilde;o]]></entry>
+	<entry key="install.wizard.congrats.commercial"><![CDATA[Existem algumas empresas que tamb&eacute;m oferecem suporte comercial para o Apache OpenMeetings:]]></entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml b/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
new file mode 100644
index 0000000..5877f02
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
@@ -0,0 +1,260 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="install.wizard.install.header">Установка</entry>
+	<entry key="install.wizard.welcome.panel"><![CDATA[
+	<ol>
+		<li>
+			<h4>
+				<a id="Recommendation_for_production_environment"></a>Рекомендации
+				для настроек продукта<a target="_blank"
+					href="#Recommendation_for_production_environment"
+					class="section_anchor"></a>
+			</h4>
+		<blockquote>
+			По умолчанию {0} использует интегрированную базу данных Apache Derby. В 
+			продакшине Вы должны задуматься об использовании таких баз, как  <a target="_blank"
+				href="http://openmeetings.apache.org/MySQLConfig.html">MySQL</a>, <a
+				target="_blank"
+				href="http://openmeetings.apache.org/PostgresConfig.html">Postgres</a>
+			или например <a target="_blank"
+				href="http://openmeetings.apache.org/IBMDB2Config.html">IBM DB2</a>
+			или <a href="http://openmeetings.apache.org/OracleConfig.html"
+				target="_blank">Oracle</a>
+		</blockquote>
+		</li>
+		<li><h4>
+				<a id="Enabling_Image_Upload_and_import_to_whiteboard"></a>Для возможности
+				загрузки и импорта изображений на доску<a
+					href="#Enabling_Image_Upload_and_import_to_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Установите <strong>ImageMagick</strong> на Ваш сервер, более
+					подробную информацию касающуюся установки можно посмотреть тут <a target="_blank"
+					href="http://www.imagemagick.org" rel="nofollow">http://www.imagemagick.org</a>
+					Инструкцию по установке Вы можете найти здесь
+					<a target="_blank"
+					href="http://www.imagemagick.org/script/binary-releases.php"
+					rel="nofollow">http://www.imagemagick.org/script/binary-releases.php</a>,
+					однако в большинстве систем Линукс Вы можете установить его через Ваш 
+					менеджер пакетов (apt-get it)
+				</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a id="Enabling_import_of_PDFs_into_whiteboard"></a>Для возможности
+				импорта PDF файлов на доску<a
+					href="#Enabling_import_of_PDFs_into_whiteboard"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Установите <strong>GhostScript</strong> на Ваш сервер, более подробную
+					информацию Вы можете посмотреть на сайте <a target="_blank"
+					href="http://pages.cs.wisc.edu/%7Eghost/" rel="nofollow">http://pages.cs.wisc.edu/~ghost/</a>
+					Инструкции по установке Вы можете
+					найти здесь, однако в большинстве систем Линукс Вы можете установить его через Ваш 
+					менеджер пакетов (apt-get it).
+				</li>
+				<li>Установите <strong>SWFTools</strong> на Ваш сервер, более подробную информацию
+					можно найти на сайте <a target="_blank"
+					href="http://www.swftools.org/" rel="nofollow">http://www.swftools.org/</a>
+					Некоторые дистрибутивы Линукс уже включают его
+					в свои менеджеры пакетов, посмотреть можно здесь <a target="_blank"
+					href="http://packages.debian.org/unstable/utils/swftools"
+					rel="nofollow">http://packages.debian.org/unstable/utils/swftools</a>),
+					для установки рекомендуется <strong>SWFTools</strong> версии 0.9 так как 
+					предыдущая версия содержит баг который приводил к ошибке отображения размеров объекта 
+					на доске
+				</li>
+		</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"></a>Для возможности
+				импорта файлов .doc, .docx, .ppt, .pptx, ... и прочих документов на
+				доску<a
+					href="#Enabling_import_of_.doc,_.docx,_.ppt,_.pptx,_..._all_Office_Docu"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li><strong>OpenOffice-Service</strong> запускается и прослушивает
+					порт 8100, подробности можно посмотреть здесь <a target="_blank"
+					href="http://openmeetings.apache.org/OpenOfficeConverter.html">OpenOfficeConverter</a>
+					</li>
+			</ul>
+		</li>
+		<li><h4>
+				<a
+					id="Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"></a>Для возможности
+				записи и импорта файлов .avi, .flv, .mov и .mp4 на доску<a
+					href="#Enabling_Recording_and_import_of_.avi,_.flv,_.mov_and_.mp4_into"
+					class="section_anchor"></a>
+			</h4>
+			<ul>
+				<li>Установите <strong>FFMpeg</strong>. Вы должны получить последнюю версию
+					FFMPEG! Для Windows Вы можете скачать программу с этого
+					сайта <a target="_blank" href="http://ffmpeg.arrozcru.org/builds/"
+					rel="nofollow">http://ffmpeg.arrozcru.org/builds/</a> Пользователи Linux 
+					или OSx могут использовать одну из различных
+					Инструкций по установке из Сети. Вы должны установить libmp3lame!
+				</li>
+				<li>Установите <strong>SoX</strong> <a
+					href="http://sox.sourceforge.net/" target="_blank">http://sox.sourceforge.net/</a>.
+					Вы должны установить последнюю версию SoX! SoX 12.xx не будет
+					работать!
+				</li>
+			</ul>
+		</li>
+	</ol>
+
+	<br />
+	<b> <span style="font-size: 1.2em">Если у Вас остались
+			вопросы или Вам требуется поддержка по установке или хостингу:</span></b>
+	
+	<br />
+	<br />
+	<b><span style="font-size: 1.2em">Поддержка сообщества:</span></b>
+	<br />
+	<br />
+	<span style="font-size: 1.1em"><a
+		href="http://openmeetings.apache.org/mail-lists.html"
+		target="_blank">Список рассылки</a></span>
+	<br />
+    <br />
+	<br />
+    <b> <span style="font-size: 1.4em">Это компании,
+        которые также оказывают коммерческую поддержку Apache OpenMeetings:</span></b>
+	<br />
+	<br />
+    
+	<span style="font-size: 1.3em"><a
+		href="http://openmeetings.apache.org/commercial-support.html"
+		target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+	<br />
+	]]></entry>
+	<entry key="install.wizard.params.step1.userdata">Пользовательские данные</entry>
+	<entry key="install.wizard.params.step1.username">Логин</entry>
+	<entry key="install.wizard.params.step1.username.title">Введите логин пользователя</entry>
+	<entry key="install.wizard.params.step1.password">Пароль</entry>
+	<entry key="install.wizard.params.step1.password.title">Введите пароль</entry>
+	<entry key="install.wizard.params.step1.email">Электронная почта</entry>
+	<entry key="install.wizard.params.step1.email.title">Введите адрес электронной почты</entry>
+	<entry key="install.wizard.params.step1.tz">Часовой пояс пользователя</entry>
+	<entry key="install.wizard.params.step1.groupdata">Организация(Домен)</entry>
+	<entry key="install.wizard.params.step1.group">Наименование</entry>
+	<entry key="install.wizard.params.step1.group.title">Введите организацию по умолчанию</entry>
+
+	<entry key="install.wizard.params.step2.configuration">Конфигурация</entry>
+	<entry key="install.wizard.params.step2.allowFrontendRegister">Разрешить саморегистрацию (allow_frontend_register)</entry>
+	<entry key="install.wizard.params.step2.sendEmailAtRegister">Посылать сообщения новым пользователям (sendEmailAtRegister)</entry>
+	<entry key="install.wizard.params.step2.sendEmailWithVerficationCode">Новые пользователи должны подтвердить свой Email (sendEmailWithVerficationCode)</entry>
+	<entry key="install.wizard.params.step2.createDefaultRooms">По умолчанию создать комнаты всех типов</entry>
+	<entry key="install.wizard.params.step2.mailReferer">Электронная почта рассылки (system_email_addr)</entry>
+	<entry key="install.wizard.params.step2.mailReferer.title">Введите адрес электронной почты с которой будет отправляться информация</entry>
+	<entry key="install.wizard.params.step2.smtpServer">SMTP-Сервер (smtp_server)</entry>
+	<entry key="install.wizard.params.step2.smtpServer.title">Введите адрес SMTP-Сервера</entry>
+	<entry key="install.wizard.params.step2.smtpPort">Порт SMTP-сервера (по умолчению 25) (smtp_port)</entry>
+	<entry key="install.wizard.params.step2.smtpPort.title">Введите порт SMTP-Сервера, обычно 25</entry>
+	<entry key="install.wizard.params.step2.mailAuthName">SMTP-Пользователь (email_username)</entry>
+	<entry key="install.wizard.params.step2.mailAuthName.title">Введите логин для электронной почты</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass">SMTP-Пароль пользователя (email_userpass)</entry>
+	<entry key="install.wizard.params.step2.mailAuthPass.title">Введите пароль для электронной почты</entry>
+	<entry key="install.wizard.params.step2.mailUseTls">Включить проверку TLS на почтовом сервере</entry>
+	<entry key="install.wizard.params.step2.replyToOrganizer">Устанавливать адрес электронной
+					почты организатора, как адрес ответа на приглашения  (inviter.email.as.replyto)</entry>
+	<entry key="install.wizard.params.step2.defaultLangId">Язык по умолчанию</entry>
+	<entry key="install.wizard.params.step2.defaultExportFont">Шрифт для экспорта по умолчанию [default_export_font]</entry>
+
+	<entry key="install.wizard.params.step3.converters">Конвертеры</entry>
+	<entry key="install.wizard.params.step3.seeAlso"> смотрите также</entry>
+	<entry key="install.wizard.params.step3.installation">Установка</entry>
+	<entry key="install.wizard.params.step3.swfZoom">SWFTools масштабирование</entry>
+	<entry key="install.wizard.params.step3.swfZoom.title">Укажите разрешение (dpi), которое вы будите использовать для конвертации PDF в SWF</entry>
+	<entry key="install.wizard.params.step3.swfZoom.text">
+		DPI которое swftools будет использовать для конвертации PDF в SWF. По умолчанию 100 dpi.
+	</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality">SWFTools JPEG Качество</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.title">Укажите качество встроенного jpeg изображения. 0 плохое (маленькое), 100 высокое (большое). (по умолчанию:85)</entry>
+	<entry key="install.wizard.params.step3.swfJpegQuality.text">
+		Качество встроенного jpeg изображения. 0 плохое (маленькое),
+		100 высокое (большое). (по умолчанию:85)
+	</entry>
+	<entry key="install.wizard.params.step3.swfPath">SWFTools Путь</entry>
+	<entry key="install.wizard.params.step3.swfPath.title">Укажите путь к swftools например C:/swftools (Windows) или или не заполняйте данное поле если путь к swftools задан в системных путях</entry>
+	<entry key="install.wizard.params.step3.swfPath.text">
+		Вы можете проверить, настроен ли запуск swftools на Вашей системе
+		с помошью командной строки или shell или cmd-prompt набрав команду pdf2swf. Если будет показан
+		список опций оставьте это поле пустым, в противном случае вы должны
+		указать путь к pdf2swf на Вашей системе,
+	</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath">ImageMagick Путь</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.title">Укажите путь к ImageMagick, или не заполняйте данное поле если ImageMagick установлен в путях Вашей системы</entry>
+	<entry key="install.wizard.params.step3.imageMagicPath.text"></entry>
+	<entry key="install.wizard.params.step3.ffmpegPath">FFMPEG Путь</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.title">Укажите путь к FFMPEG, или не заполняйте данное поле если FFMPEG установлен в путях Вашей системы</entry>
+	<entry key="install.wizard.params.step3.ffmpegPath.text"></entry>
+	<entry key="install.wizard.params.step3.soxPath">SoX Путь</entry>
+	<entry key="install.wizard.params.step3.soxPath.title">Укажите путь к SoX, или не заполняйте данное поле если SoX установлен в путях Вашей системы</entry>
+	<entry key="install.wizard.params.step3.soxPath.text"></entry>
+	<entry key="install.wizard.params.step3.jodPath">JOD Путь</entry>
+	<entry key="install.wizard.params.step3.jodPath.title">Путь к библиотеке JOD (http://code.google.com/p/jodconverter), сконфигурируйте путь, указываюший на папку библиотеки JOD, которая содержит jodconverter-core-version.jar файл</entry>
+	<entry key="install.wizard.params.step3.jodPath.text"></entry>
+	<entry key="install.wizard.params.step3.officePath">OpenOffice/LibreOffice Путь для jodconverter</entry>
+	<entry key="install.wizard.params.step3.officePath.title">Путь к OpenOffice/LibreOffice (не обязательный) пожалуйста установите этот путь в случае когда jodconverter не в состоянии найти автоматически путь к  установленному OpenOffice/LibreOffice</entry>
+	<entry key="install.wizard.params.step3.officePath.text">
+		Путь к OpenOffice/LibreOffice (не обязательный) пожалуйста установите этот путь
+		в случае когда jodconverter не в состоянии найти
+		путь к установленному OpenOffice/LibreOffice
+	</entry>
+
+	<entry key="install.wizard.params.step4.crypt">Тип шифрования</entry>
+	<entry key="install.wizard.params.step4.cryptClassName">Класс шифрования</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.title">Укажите имя класса для шифрования. НЕ ИЗМЕНЯЙТЕ УКАЗАННЫЙ КЛАСС ЕСЛИ ВЫ В ЭТОМ НЕ УВЕРЕНЫ</entry>
+	<entry key="install.wizard.params.step4.cryptClassName.text"><![CDATA[
+		Вы можете использовать заданный по умолчанию тип шифрования, который соответствует
+		функционалу PHP-MD5 или BSD-Style шифрованию, используя:<b>org.apache.openmeetings.utils.crypt.MD5CryptImplementation</b>.
+		Дополнительную информацию или описание создания собственного класса шифрования смотрите тут: <a
+		href="http://openmeetings.apache.org/CustomCryptMechanism.html"
+		target="_blank">Пользовательский механизм шифрования</a> Вы можете изменить это
+		значение позже, НО созданные ранее Пользователи и Сессии могут быть
+		не доступны в дальнейшем
+	]]></entry>
+	<entry key="install.wizard.params.step4.red5SIP">Конфигурация red5SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable">Разрешить SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipEnable.text">Разрешить интеграцию с red5SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix">Префикс дла комнат SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipRoomPrefix.text">Префикс для номеров телефонов для входа в комнаты</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext">Окружение расширений SIP</entry>
+	<entry key="install.wizard.params.step4.red5SipExtenContext.text">Окружение расширений Asterisk</entry>
+
+	<entry key="install.wizard.install.desc">Пожалуйста нажмите кнопку "Закончить" для запуска установки!</entry>
+	<entry key="install.wizard.install.started">Пожалуйста подождите, идёт установка</entry>
+	<entry key="install.wizard.install.failed">Ошибка установки</entry>
+
+	<entry key="install.wizard.congrats.enter">Вход в приложение</entry>
+	<entry key="install.wizard.congrats.port">Если Ваш Red5-сервер запущен на другом порту или на другом домене</entry>
+	<entry key="install.wizard.congrats.config">измените конфигурацию клиента</entry>
+	<entry key="install.wizard.congrats.mail">Список рассылки</entry>
+	<entry key="install.wizard.congrats.commercial">Это компании,
+		которые так же оказывают коммерческую поддержку Apache OpenMeetings:</entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/app/LabelResourceLoader.java b/src/web/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
new file mode 100644
index 0000000..944d3b1
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.resource.loader.IStringResourceLoader;
+
+/**
+ * Map property values to OpenMeetings labelid's and get the string
+ * 
+ * @author swagner
+ *
+ */
+public class LabelResourceLoader implements IStringResourceLoader {
+	
+	private static Map<String,Long> STRING_LABEL_MAPPING = new HashMap<String,Long>();
+	
+	static {
+		STRING_LABEL_MAPPING.put("PagingNavigator.first", 368L);
+		STRING_LABEL_MAPPING.put("PagingNavigator.previous", 369L);
+		STRING_LABEL_MAPPING.put("PagingNavigator.next", 370L);
+		STRING_LABEL_MAPPING.put("PagingNavigator.last", 371L);
+	}
+
+	public String loadStringResource(Class<?> clazz, String key, Locale locale,
+			String style, String variation) {
+		return getStringByPropertyKey(key);
+	}
+
+	public String loadStringResource(Component component, String key,
+			Locale locale, String style, String variation) {
+		return getStringByPropertyKey(key);
+	}
+	
+	private String getStringByPropertyKey(String key) {
+		Long labelId = STRING_LABEL_MAPPING.get(key);
+		if (labelId == null) 
+			return null;
+		return WebSession.getString(labelId);
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/MessageResolver.java b/src/web/java/org/apache/openmeetings/web/app/MessageResolver.java
new file mode 100644
index 0000000..0d2525a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/MessageResolver.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.WicketTag;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.parser.filter.WicketTagIdentifier;
+import org.apache.wicket.markup.resolver.WicketMessageResolver;
+
+public class MessageResolver extends WicketMessageResolver {
+	private static final long serialVersionUID = -5755259669383826988L;
+	private final static String TAG_NAME = "ommessage";
+	
+	static	{
+		// register "wicket:ommessage"
+		WicketTagIdentifier.registerWellKnownTagName(TAG_NAME);
+	}
+	
+	@Override
+	public Component resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag) {
+		if (tag instanceof WicketTag) {
+			WicketTag wtag = (WicketTag)tag;
+			if (TAG_NAME.equals(wtag.getName())) {
+				Boolean escapeKey = wtag.getAttributes().getAsBoolean("escape");
+				Long messageKey = wtag.getAttributes().getAsLong("key");
+				if (messageKey != null) {
+					final String id = "_message_" + container.getPage().getAutoIndex();
+					Label label = new Label(id, WebSession.getString(messageKey));
+					label.setRenderBodyOnly(container.getApplication()
+						.getMarkupSettings()
+						.getStripWicketTags()).setEscapeModelStrings(!Boolean.FALSE.equals(escapeKey));
+					
+					return label;
+				}
+			}
+		}
+		return super.resolve(container, markupStream, tag);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java b/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java
new file mode 100644
index 0000000..3059d18
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/MessageTagHandler.java
@@ -0,0 +1,160 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import java.text.ParseException;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.MarkupResourceStream;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.WebComponent;
+import org.apache.wicket.markup.parser.AbstractMarkupFilter;
+import org.apache.wicket.markup.parser.filter.WicketMessageTagHandler;
+import org.apache.wicket.markup.resolver.IComponentResolver;
+import org.apache.wicket.util.string.Strings;
+
+public class MessageTagHandler extends AbstractMarkupFilter implements IComponentResolver {
+	/** */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * The id automatically assigned to tags with wicket:message attribute but
+	 * without id
+	 */
+	public final static String WICKET_MESSAGE_CONTAINER_ID = "_message_attr_";
+
+	/**
+	 * Constructor for the IComponentResolver role.
+	 */
+	public MessageTagHandler() {
+		this(null);
+	}
+
+	/**
+	 * Constructor for the IMarkupFilter role.
+	 */
+	public MessageTagHandler(final MarkupResourceStream markupResourceStream) {
+		super(markupResourceStream);
+	}
+
+	@Override
+	protected final MarkupElement onComponentTag(ComponentTag tag)
+			throws ParseException {
+		if (tag.isClose()) {
+			return tag;
+		}
+
+		final String wicketMessageAttribute = tag.getAttributes().getString(
+				getWicketMessageAttrName());
+
+		if (Strings.isEmpty(wicketMessageAttribute) == false) {
+			// check if this tag is raw markup
+			if (tag.getId() == null) {
+				// if this is a raw tag we need to set the id to something so
+				// that wicket will not merge this as raw markup and instead
+				// pass it on to a resolver
+				tag.setId(getWicketMessageIdPrefix());
+				tag.setAutoComponentTag(true);
+				tag.setModified(true);
+			}
+			tag.addBehavior(new AttributeLocalizer(getWicketMessageAttrName()));
+		}
+
+		return tag;
+	}
+
+	/**
+	 * Attribute localizing behavior. See the javadoc of
+	 * {@link WicketMessageTagHandler} for details.
+	 * 
+	 * @author Igor Vaynberg (ivaynberg)
+	 */
+	public static class AttributeLocalizer extends Behavior {
+		private static final long serialVersionUID = 1L;
+
+		private final String wicketMessageAttrName;
+
+		public AttributeLocalizer(String wicketMessageAttrName) {
+			this.wicketMessageAttrName = wicketMessageAttrName;
+		}
+
+		@Override
+		public void onComponentTag(final Component component,
+				final ComponentTag tag) {
+			String expr = tag.getAttributes().getString(wicketMessageAttrName);
+			if (!Strings.isEmpty(expr)) {
+				expr = expr.trim();
+
+				String[] attrsAndKeys = Strings.split(expr, ',');
+
+				for (String attrAndKey : attrsAndKeys) {
+					int colon = attrAndKey.lastIndexOf(":");
+					// make sure the attribute-key pair is valid
+					if (attrAndKey.length() < 3 || colon < 1
+							|| colon > attrAndKey.length() - 2) {
+						throw new WicketRuntimeException(
+								"wicket:message attribute contains an invalid value [["
+										+ expr
+										+ "]], must be of form (attr:key)+");
+					}
+
+					String attr = attrAndKey.substring(0, colon);
+					String key = attrAndKey.substring(colon + 1);
+					final String value = WebSession.getString(Long.parseLong(key));
+					tag.put(attr, value);
+				}
+			}
+		}
+	}
+
+	public Component resolve(final MarkupContainer container, final MarkupStream markupStream,
+			final ComponentTag tag) {
+		// localize any raw markup that has wicket:message attrs
+		if ((tag != null)
+				&& (tag.getId().startsWith(getWicketMessageIdPrefix()))) {
+			Component wc;
+			int autoIndex = container.getPage().getAutoIndex();
+			String id = getWicketMessageIdPrefix() + autoIndex;
+
+			if (tag.isOpenClose()) {
+				wc = new WebComponent(id);
+			} else {
+				wc = new TransparentWebMarkupContainer(id);
+			}
+
+			return wc;
+		}
+		return null;
+	}
+
+	private String getWicketMessageAttrName() {
+		String wicketNamespace = getWicketNamespace();
+		return wicketNamespace + ':' + "ommessage";
+	}
+
+	private String getWicketMessageIdPrefix() {
+		return getWicketNamespace() + WICKET_MESSAGE_CONTAINER_ID;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java b/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java
new file mode 100644
index 0000000..5ea4905
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java
@@ -0,0 +1,93 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy;
+import org.apache.wicket.util.string.Strings;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class OmAuthenticationStrategy extends DefaultAuthenticationStrategy {
+	/** The separator used to concatenate the username and password */
+	private static final String VALUE_SEPARATOR = "-sep-";
+	private static final String COOKIE_KEY = "LoggedIn";
+	private static final Logger log = Red5LoggerFactory.getLogger(OmAuthenticationStrategy.class, webAppRootKey);
+	/** The cookie name to store the username/password/type/domain */
+	private final String cookieKey;
+
+	public OmAuthenticationStrategy() {
+		super(COOKIE_KEY);
+		cookieKey = COOKIE_KEY;
+	}
+
+	/**
+	 * @see org.apache.wicket.authentication.IAuthenticationStrategy#load()
+	 */
+	@Override
+	public String[] load() {
+		String value = getCookieUtils().load(cookieKey);
+		if (Strings.isEmpty(value) == false) {
+			try {
+				value = getCrypt().decryptUrlSafe(value);
+			} catch (RuntimeException e) {
+				log.info("Error decrypting login cookie: {}. The cookie will be deleted. Possible cause is that a "
+						+ "session-relative encryption key was used to encrypt this cookie while this decryption attempt "
+						+ "is happening in a different session, eg user coming back to the application after session expiration",
+						cookieKey);
+				getCookieUtils().remove(cookieKey);
+				value = null;
+			}
+			if (!Strings.isEmpty(value)) {
+				String username = null;
+				String password = null;
+				String type = null;
+				String domainId = null;
+
+				String[] values = value.split(VALUE_SEPARATOR);
+				if (values.length > 0 && !Strings.isEmpty(values[0])) {
+					username = values[0];
+				}
+				if (values.length > 1 && !Strings.isEmpty(values[1])) {
+					password = values[1];
+				}
+				if (values.length > 2 && !Strings.isEmpty(values[2])) {
+					type = values[2];
+				}
+				if (values.length > 3 && !Strings.isEmpty(values[3])) {
+					domainId = values[3];
+				}
+
+				return new String[] { username, password, type, domainId };
+			}
+		}
+
+		return null;
+	}
+
+	public void save(final String username, final String password, final Type type, final Long domainId) {
+		if (type != Type.oauth) {
+			String value = username + VALUE_SEPARATOR + password + VALUE_SEPARATOR + type.name() + VALUE_SEPARATOR + domainId;
+			String encryptedValue = getCrypt().encryptUrlSafe(value);
+			getCookieUtils().save(cookieKey, encryptedValue);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/app/WebSession.java b/src/web/java/org/apache/openmeetings/web/app/WebSession.java
new file mode 100644
index 0000000..68b9d7e
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/app/WebSession.java
@@ -0,0 +1,504 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.app;
+
+import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getDashboardContext;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
+import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
+import org.apache.openmeetings.db.entity.server.SOAPLogin;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.ldap.LdapLoginManagement;
+import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidget;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.RssWidget;
+import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.UserDashboard;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
+import org.apache.wicket.authentication.IAuthenticationStrategy;
+import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.string.Strings;
+
+import ro.fortsoft.wicket.dashboard.Dashboard;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetFactory;
+import ro.fortsoft.wicket.dashboard.web.DashboardContext;
+
+public class WebSession extends AbstractAuthenticatedWebSession {
+	private static final long serialVersionUID = 1123393236459095315L;
+	
+	public static int MILLIS_IN_MINUTE = 60000;
+	//private static final Map<String, Locale> LNG_TO_LOCALE_MAP = new HashMap<String, Locale> ();
+	private long userId = -1;
+	private Set<Right> rights = new HashSet<User.Right>(); //TODO renew somehow on user edit !!!!
+	private long languageId = -1; //TODO renew somehow on user edit !!!!
+	private String SID = null;
+	private OmUrlFragment area = null;
+	private TimeZone tz;
+	private TimeZone browserTz;
+	public final static String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+	private DateFormat ISO8601FORMAT = new SimpleDateFormat(ISO8601_FORMAT_STRING); //FIXME not thread safe
+	private DateFormat sdf;
+	private UserDashboard dashboard;
+	private Locale browserLocale = null;
+	private Long recordingId;
+	private Long loginError = null;
+	private String externalType;
+	private static Set<Long> STRINGS_WITH_APP = new HashSet<Long>(); //FIXME need to be removed
+	public final static List<String> AVAILABLE_TIMEZONES = Arrays.asList(TimeZone.getAvailableIDs());
+	public final static Set<String> AVAILABLE_TIMEZONE_SET = new LinkedHashSet<String>(AVAILABLE_TIMEZONES);
+	static {
+		STRINGS_WITH_APP.addAll(Arrays.asList(499L, 500L, 506L, 511L, 512L, 513L, 517L, 532L, 622L, 804L
+				, 909L, 952L, 978L, 981L, 984L, 989L, 990L, 999L, 1151L, 1155L, 1157L, 1158L, 1194L));
+	}
+	
+	public WebSession(Request request) {
+		super(request);
+		browserLocale = getLocale();
+	}
+
+	@Override
+	public void invalidate() {
+		super.invalidate();
+		userId = -1;
+		rights = new HashSet<User.Right>();
+		SID = null;
+		sdf = null;
+		recordingId = null;
+		externalType = null;
+		tz = null;
+		browserTz = null;
+		loginError = null;
+	}
+	
+	@Override
+	public Roles getRoles() {
+		//first of all will check hashes
+		try {
+			IRequestParameters params = RequestCycle.get().getRequest().getRequestParameters();
+			StringValue secureHash = params.getParameterValue("secureHash");
+			StringValue invitationHash = params.getParameterValue("invitationHash");
+			if (!secureHash.isEmpty() || !invitationHash.isEmpty()) {
+				PageParameters pp = new PageParameters();
+				for (String p : params.getParameterNames()) {
+					for (StringValue sv : params.getParameterValues(p)) {
+						if (!sv.isEmpty()) {
+							pp.add(p, sv.toString());
+						}
+					}
+				}
+				if (isSignedIn()) {
+					invalidate();
+				}
+				throw new RestartResponseAtInterceptPageException(SwfPage.class, pp);
+			}
+		} catch (RestartResponseAtInterceptPageException e) {
+			throw e;
+		} catch (Exception e) {
+			//no-op, will continue to sign-in page
+		}
+		if (rights.isEmpty()) {
+			isSignedIn();
+		}
+		Roles r = new Roles();
+		for (Right right : rights) {
+			r.add(right.name());
+		}
+		return r;
+	}
+
+	@Override
+	public boolean isSignedIn() {
+		if (userId < 1) {
+			IAuthenticationStrategy strategy = getAuthenticationStrategy();
+			// get username and password from persistence store
+			String[] data = strategy.load();
+			if (data != null && data.length > 3 && data[2] != null) {
+				Long domainId = null;
+				try {
+					domainId = Long.parseLong(data[3]);
+				} catch (Exception e) {
+					//no-op
+				}
+				// try to sign in the user
+				if (!signIn(data[0], data[1], Type.valueOf(data[2]), domainId)) {
+					// the loaded credentials are wrong. erase them.
+					strategy.remove();
+				}
+			}
+		}
+		return userId > -1;
+	}
+
+	public boolean signIn(String secureHash) {
+		//FIXME code is duplicated from MainService, need to be unified
+		SOAPLoginDao soapDao = getBean(SOAPLoginDao.class);
+		SOAPLogin soapLogin = soapDao.get(secureHash);
+		if (soapLogin != null && !soapLogin.getUsed()) { //add code for  || (soapLogin.getAllowSameURLMultipleTimes())
+			SessiondataDao sessionDao = getBean(SessiondataDao.class);
+			Sessiondata sd = sessionDao.getSessionByHash(soapLogin.getSessionHash());
+			if (sd != null && sd.getSessionXml() != null) {
+				RemoteSessionObject remoteUser = RemoteSessionObject.fromXml(sd.getSessionXml());
+				if (remoteUser != null && !Strings.isEmpty(remoteUser.getExternalUserId())) {
+					UserDao userDao = getBean(UserDao.class);
+					User user = userDao.getExternalUser(remoteUser.getExternalUserId(), remoteUser.getExternalUserType());
+					if (user == null) {
+						user = userDao.getNewUserInstance(null);
+						user.setFirstname(remoteUser.getFirstname());
+						user.setLastname(remoteUser.getLastname());
+						user.setLogin(remoteUser.getUsername()); //FIXME check if login UNIQUE
+						user.setExternalUserId(remoteUser.getExternalUserId());
+						user.setExternalUserType(remoteUser.getExternalUserType());
+						user.getRights().add(Right.Room);
+						user.getAdresses().setEmail(remoteUser.getEmail());
+						user.setPictureuri(remoteUser.getPictureUrl());
+					} else {
+						user.setFirstname(remoteUser.getFirstname());
+						user.setLastname(remoteUser.getLastname());
+						user.setPictureuri(remoteUser.getPictureUrl());
+					}
+					user = userDao.update(user, null);
+
+					soapLogin.setUsed(true);
+					soapLogin.setUseDate(new Date());
+					//soapLogin.setClientURL(clientURL); //FIXME
+					soapDao.update(soapLogin);
+
+					sessionDao.updateUser(SID, user.getUser_id());
+					setUser(user);
+					recordingId = soapLogin.getRoomRecordingId();
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	private void setUser(User u) {
+		userId = u.getUser_id();
+		rights = Collections.unmodifiableSet(u.getRights());
+		languageId = u.getLanguage_id();
+		externalType = u.getExternalUserType();
+		tz = getBean(TimezoneUtil.class).getTimeZone(u);
+		ISO8601FORMAT.setTimeZone(tz);
+		//FIXMW locale need to be set by User language first
+		sdf = DateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
+		if (null == getId()) {
+			bind();
+		}
+	}
+	
+	public boolean signIn(String login, String password, Type type, Long domainId) {
+		Sessiondata sessData = getBean(SessiondataDao.class).startsession();
+		SID = sessData.getSession_id();
+		try {
+			User u = null;
+			switch (type) {
+				case ldap:
+					u = getBean(LdapLoginManagement.class).login(login, password, domainId);
+					break;
+				case user:
+					/* we will allow login against internal DB in case user 'guess' LDAP password */
+					u = getBean(UserDao.class).login(login, password);
+					break;
+				case oauth:
+					// we did all the checks at this stage, just set the user
+					u = getBean(UserDao.class).getByName(login, Type.oauth);
+					break;
+				default:
+					throw new OmException(-1L);
+			}
+			if (u == null) {
+				return false;
+			}
+			setUser(u);
+			return true;
+		} catch (OmException oe) {
+			loginError = oe.getCode() == null ? -1 : oe.getCode();
+		}
+		return false;
+	}
+	
+	public Long getLoginError() {
+		return loginError;
+	}
+	
+	public static WebSession get() {
+		return (WebSession)AbstractAuthenticatedWebSession.get();
+	}
+	
+	public static String getString(long id) {
+		return getString(id, getLanguage());
+	}
+	
+	public static String getString(long id, long languageId) {
+		String s = getBean(FieldLanguagesValuesDao.class).getString(id, languageId);
+		return s == null ? "[Missing]" :
+			(STRINGS_WITH_APP.contains(id) ? s.replaceAll("\\$APP_NAME", getBean(ConfigurationDao.class).getAppName()) : s);
+	}
+	
+	public void setLanguage(long languageId) {
+		this.languageId = languageId;
+	}
+	
+	public static long getLanguage() {
+		WebSession session = get();
+		if (session.languageId < 0) {
+			if (session.isSignedIn()) {
+				session.languageId = getBean(UserDao.class).get(session.userId).getLanguage_id();
+			} else {
+				session.languageId = getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1");
+			}
+		}
+		return session.languageId;
+	}
+	
+	public static FieldLanguage getLanguageObj() {
+		return getBean(FieldLanguageDao.class).getFieldLanguageById(getLanguage());
+	}
+	
+	public String getValidatedSid() {
+		SessiondataDao sessionDao = getBean(SessiondataDao.class);
+		Long _userId = sessionDao.checkSession(SID);
+		if (_userId == null || userId != _userId) {
+			Sessiondata sessionData = sessionDao.getSessionByHash(SID);
+			if (sessionData == null) {
+				sessionData = sessionDao.startsession();
+			}
+			if (!sessionDao.updateUser(sessionData.getSession_id(), userId, false, languageId)) {
+				//something bad, force user to re-login
+				invalidate();
+			} else {
+				SID = sessionData.getSession_id();
+			}
+		}
+		return SID;
+	}
+	
+	public static String getSid() {
+		return get().getValidatedSid();
+	}
+
+	public static long getUserId() {
+		return get().userId;
+	}
+	
+	public static Long getRecordingId() {
+		return get().recordingId;
+	}
+	
+	public static String getExternalType() {
+		return get().externalType;
+	}
+	
+	public static TimeZone getUserTimeZone() {
+		return get().tz;
+	}
+
+	public static Calendar getCalendar() {
+		return Calendar.getInstance(get().tz);
+	}
+
+	public static Calendar getClientCalendar() {
+		return Calendar.getInstance(getClientTimeZone());
+	}
+
+	public static DateFormat getIsoDateFormat() {
+		return get().ISO8601FORMAT;
+	}
+	
+	public static DateFormat getDateFormat() {
+		return get().sdf;
+	}
+	
+	public static Set<Right> getRights() {
+		return get().rights;
+	}
+
+	public OmUrlFragment getArea() {
+		return area;
+	}
+
+	public void setArea(OmUrlFragment area) {
+		this.area = area;
+	}
+
+	
+	public static Dashboard getDashboard() {
+		Dashboard d = get().dashboard;
+		if (d == null) {
+			get().initDashboard();
+			d = get().dashboard;
+		}
+		return d;
+	}
+	
+	public Locale getBrowserLocale(){
+		return browserLocale;
+	}
+
+	public FieldLanguage getLanguageByBrowserLocale() {
+		List<FieldLanguage> languages = getBean(FieldLanguageDao.class).getLanguages();
+		for (FieldLanguage l : languages) {
+			if (getBrowserLocale().getLanguage().equals(new Locale(l.getCode()).getLanguage())){
+				return l;
+			}
+		}
+		return languages.get(0);
+	}
+
+	public State getCountryByBrowserLocale() {
+		List<State> states = getBean(StateDao.class).getStates();
+		String code = getBrowserLocale().getISO3Country().toUpperCase();
+		for (State s : states) {
+			if (s.getShortName().toUpperCase().equals(code)){
+				return s;
+			}
+		}
+		return states.get(0);
+	}
+
+	public String getClientTZCode() {
+		TimeZone _zone = browserTz;
+		if (browserTz == null) {
+			try {
+				browserTz = getClientInfo().getProperties().getTimeZone();
+				if (!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
+					for (String availableID : AVAILABLE_TIMEZONES) {
+						TimeZone zone = TimeZone.getTimeZone(availableID);
+						if (zone.hasSameRules(browserTz)) {
+							browserTz = zone;
+							break;
+						}
+					}
+				}
+				_zone = browserTz;
+			} catch (Exception e) {
+				_zone = Calendar.getInstance(getBrowserLocale()).getTimeZone();
+			}
+		}
+		return _zone == null ? null : _zone.getID();
+	}
+	
+	public static TimeZone getClientTimeZone() {
+		String tzCode = get().getClientTZCode();
+		return tzCode == null ? null : TimeZone.getTimeZone(tzCode);
+	}
+	
+	private void initDashboard() {
+		DashboardContext dashboardContext = getDashboardContext();
+		dashboard = (UserDashboard)dashboardContext.getDashboardPersister().load();
+		boolean existMyRoomWidget = false, existRssWidget = false;
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		boolean confShowMyRooms = 1 == cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
+		boolean confShowRss = 1 == cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0");
+		boolean save = false;
+
+		WidgetFactory widgetFactory = dashboardContext.getWidgetFactory();
+
+		if (dashboard == null) {
+			dashboard = new UserDashboard("default", "Default");
+
+			dashboard.addWidget(widgetFactory.createWidget(new WelcomeWidgetDescriptor()));
+			dashboard.addWidget(widgetFactory.createWidget(new StartWidgetDescriptor()));
+			if (confShowMyRooms) {
+				dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
+			}
+			if (confShowRss) {
+				dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
+			}
+			save = true;
+		} else {
+			for (Iterator<Widget> iter = dashboard.getWidgets().iterator(); iter.hasNext();) {
+				Widget w = iter.next();
+				// PrivateRoomWidget is stored in the profile of user. Now, Show_MyRooms_key is disable.
+				if (w.getClass().equals(MyRoomsWidget.class)) {
+					existMyRoomWidget = true;
+					if (!confShowMyRooms) {
+						iter.remove();
+					}
+				} else if ((w.getClass().equals(RssWidget.class))) {
+					// RssWidget is stored in the profile of user. Now, Show_RSS_Key is disable.
+					existRssWidget = true;
+					if (!confShowRss) {
+						iter.remove();
+					}
+				} else {
+					w.init();
+				}
+			}
+			// PrivateRoomWidget was deleted from profile and now it's enabled. It's added again to dashboard.
+			if (!existMyRoomWidget && confShowMyRooms && !dashboard.isWidgetMyRoomsDeleted()) {
+				dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
+				save = true;
+			}
+			// RssWidget was deleted from profile and now it's enabled. It's added again to dashboard.
+			if (!existRssWidget && confShowRss && !dashboard.isWidgetRssDeleted()) {
+				dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
+				save = true;
+			}
+		}
+		if (save) {
+			dashboardContext.getDashboardPersister().save(dashboard);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.html b/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.html
new file mode 100644
index 0000000..1f0b15b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.html
@@ -0,0 +1,29 @@
+<?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="form">
+		<span style="padding-left: 20px; padding-right: 20px;"><wicket:ommessage key="572"/></span><input type="text" wicket:id="title"/>
+		<div wicket:id="feedback"></div>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.java b/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.java
new file mode 100644
index 0000000..495e292
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/AddFolderDialog.java
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public abstract class AddFolderDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 1L;
+	private final DialogButton add = new DialogButton(WebSession.getString(1261));
+	private final DialogButton cancel = new DialogButton(WebSession.getString(219));
+	private final Form<String> form;
+	private final FeedbackPanel feedback = new FeedbackPanel("feedback");
+	private final String name;
+	private RequiredTextField<String> title;
+
+	public AddFolderDialog(String id) {
+		this(id, null);
+	}
+	
+	public AddFolderDialog(String id, String name) {
+		super(id, WebSession.getString(1260), Model.of(name));
+		this.name = name;
+		form = new Form<String>("form", getModel()) {
+			private static final long serialVersionUID = 1L;
+			{
+				add(title = new RequiredTextField<String>("title", getModel()));
+				title.setLabel(Model.of(WebSession.getString(572)));
+				add(feedback.setOutputMarkupId(true));
+				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+					private static final long serialVersionUID = -3612671587183668912L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+						AddFolderDialog.this.onSubmit(target);
+					}
+					
+					@Override
+					protected void onError(AjaxRequestTarget target, Form<?> form) {
+						AddFolderDialog.this.onError(target);
+					}
+				});
+			}
+		};
+		add(form);
+	}
+
+	@Override
+	protected void onOpen(AjaxRequestTarget target) {
+		super.onOpen(target);
+		
+		setModelObject(name);
+		getFeedbackMessages().clear();
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		close(target, getSubmitButton());
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(add, cancel);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return add;
+	}
+
+	@Override
+	public Form<String> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/BasePanel.java b/src/web/java/org/apache/openmeetings/web/common/BasePanel.java
new file mode 100644
index 0000000..aa5fbde
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/BasePanel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+public abstract class BasePanel extends Panel {
+	private static final long serialVersionUID = 1L;
+
+	public BasePanel(String id) {
+		super(id);
+		setOutputMarkupId(true);
+	}
+
+	public BasePanel(String id, IModel<?> model) {
+		super(id, model);
+		setOutputMarkupId(true);
+	}
+
+	/**
+	 * Overwrite this method to execute Java code after Panel is loaded by the
+	 * {@link MenuPanel}
+	 * 
+	 * @param target
+	 */
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+	}
+
+	/**
+	 * This method should be overridden to perform necessary cleanup: remove timers etc.
+	 * 
+	 * @param target
+	 */
+	public void cleanup(AjaxRequestTarget target) {
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.html b/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.html
new file mode 100644
index 0000000..2e3b321
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.html
@@ -0,0 +1,48 @@
+<?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="formelementradiobox">
+		<div wicket:id="community_settings">
+			<div>
+				<input wicket:id="everybody" type="radio" /><label style="width: 250px" wicket:for="everybody"><wicket:ommessage key="1160"/></label>
+				<div class="clear"></div>
+			</div>
+			<div>
+				<input wicket:id="contact" type="radio" /><label style="width: 250px" wicket:for="contact"><wicket:ommessage key="1168"/></label>
+				<div class="clear"></div>
+			</div>
+			<div>
+				<input wicket:id="nobody" type="radio" /><label style="width: 250px" wicket:for="nobody"><wicket:ommessage key="1169"/></label>
+				<div class="clear"></div>
+			</div>
+		</div>
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="1162" /></label>
+		<textarea wicket:id="userOffers" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="1163" /></label>
+		<textarea wicket:id="userSearchs" />
+	</div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.java b/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.java
new file mode 100644
index 0000000..9396952
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ComunityUserForm.java
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.Radio;
+import org.apache.wicket.markup.html.form.RadioGroup;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class ComunityUserForm extends Form<User> {
+	private static final long serialVersionUID = -4487619335283747717L;
+
+	public ComunityUserForm(String id, IModel<User> model) {
+		super(id, model);
+
+		RadioGroup<Long> rg = new RadioGroup<Long>("community_settings", new IModel<Long>() {
+			private static final long serialVersionUID = 1L;
+
+			public Long getObject() {
+				User u = ComunityUserForm.this.getModelObject();
+				if (Boolean.TRUE.equals(u.getShowContactData())) {
+					return 1L;
+				} else if (Boolean.TRUE.equals(u.getShowContactDataToContacts())) {
+					return 2L;
+				}
+				return 3L;
+			}
+
+			public void setObject(Long choice) {
+				User u = ComunityUserForm.this.getModelObject();
+				if (choice.equals(1L)) {
+					u.setShowContactData(true);
+					u.setShowContactDataToContacts(false);
+				} else if (choice.equals(2L)) {
+					u.setShowContactData(false);
+					u.setShowContactDataToContacts(true);
+				} else {
+					u.setShowContactData(false);
+					u.setShowContactDataToContacts(false);
+				}
+			}
+
+			public void detach() {
+			}
+		});
+		add(rg.add(new Radio<Long>("everybody", Model.of(1L)), new Radio<Long>("contact", Model.of(2L))
+			, new Radio<Long>("nobody", Model.of(3L))).setOutputMarkupId(true).setRenderBodyOnly(false)
+			);
+
+		add(new TextArea<String>("userOffers"));
+		add(new TextArea<String>("userSearchs"));
+	}
+	
+	@Override
+	protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+		return new PanelMarkupSourcingStrategy(false);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/ConfirmCallListener.java b/src/web/java/org/apache/openmeetings/web/common/ConfirmCallListener.java
new file mode 100644
index 0000000..fd6956d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ConfirmCallListener.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
+import org.apache.wicket.core.util.string.JavaScriptUtils;
+
+public class ConfirmCallListener extends AjaxCallListener {
+	private static final long serialVersionUID = 7355235720213137963L;
+
+	public ConfirmCallListener(long id) {
+		this(id, "");
+	}
+	
+	//TODO confirm need to be replaced with jQuery modal dialog
+	public ConfirmCallListener(long id, String js) {
+		onPrecondition("if (!confirm('" + JavaScriptUtils.escapeQuotes(WebSession.getString(id)) + "')) {" 
+				+ js + "; hideBusyIndicator(); return false;}");
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java b/src/web/java/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
new file mode 100644
index 0000000..5689b22
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+
+public abstract class ConfirmableAjaxLink extends AjaxLink<Void> {
+	private static final long serialVersionUID = 7301747891668537168L;
+	private long confirmId;
+
+	public ConfirmableAjaxLink(String id, long confirmId) {
+		super(id);
+		this.confirmId = confirmId;
+		setOutputMarkupId(true);
+	}
+
+	@Override
+	protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+		super.updateAjaxAttributes(attributes);
+		attributes.getAjaxCallListeners().add(new ConfirmCallListener(confirmId, "hideBusyIndicator();"));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.html b/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.html
new file mode 100644
index 0000000..c25dd0e
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.html
@@ -0,0 +1,28 @@
+<?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="message error">
+		<h3 wicket:id="msg"></h3>
+		<pre wicket:id="err"></pre>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.java b/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.java
new file mode 100644
index 0000000..f5c1c4b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ErrorMessagePanel.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.PrintWriter;
+
+import org.apache.commons.io.output.StringBuilderWriter;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ErrorMessagePanel extends Panel {
+	private static final Logger log = Red5LoggerFactory.getLogger(ErrorMessagePanel.class, webAppRootKey);
+	private static final long serialVersionUID = 1L;
+
+	public ErrorMessagePanel(String id, String msg, Throwable err) {
+		super(id);
+		
+		log.error(msg, err);
+		add(new Label("msg", msg));
+		StringBuilderWriter sw = new StringBuilderWriter();
+		err.printStackTrace(new PrintWriter(sw));
+		add(new Label("err", sw.toString()));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.html b/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.html
new file mode 100644
index 0000000..adc7e20
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.html
@@ -0,0 +1,34 @@
+<?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="formSaveBar ui-widget-header">
+			<div class="formSaveButton">
+				<input type="submit" value="" wicket:id="ajax-save-button" wicket:ommessage="title:144" />
+			</div>
+			<div class="formRefreshButton">
+				<input type="submit" value="" wicket:id="ajax-refresh-button" wicket:ommessage="title:156" />
+			</div>
+			<wicket:child/>
+		</div>
+		<div wicket:id="feedback" class="adminFormsFeedbackPanel"></div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java b/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java
new file mode 100644
index 0000000..0a7db65
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/FormSaveRefreshPanel.java
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public abstract class FormSaveRefreshPanel<T> extends BasePanel {
+	private static final long serialVersionUID = 1L;
+	protected final KendoFeedbackPanel feedback;
+	
+	public FormSaveRefreshPanel(String id, Form<T> form) {
+		super(id);
+		setOutputMarkupId(true);
+
+		feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+		add(feedback.setOutputMarkupId(true));
+
+		// add a save button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-save-button", form) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				onSaveSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				onSaveError(target, form);
+			}
+		});
+
+		// add a refresh button that can be used to submit the form via ajax
+		add(new AjaxButton("ajax-refresh-button", form) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so that it is hidden
+				target.add(feedback);
+				hideNewRecord();
+				onRefreshSubmit(target, form);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				// repaint the feedback panel so errors are shown
+				target.add(feedback);
+				hideNewRecord();
+				onRefreshError(target, form);
+			}
+		});
+
+	}
+	/**
+	 * Hide the new record text
+	 */
+	public void hideNewRecord() {
+		// for admin only, will be implemented in admin
+	}
+	
+	protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onSaveError(AjaxRequestTarget target, Form<?> form);
+
+	protected abstract void onRefreshSubmit(AjaxRequestTarget target, Form<?> form);
+	protected abstract void onRefreshError(AjaxRequestTarget target, Form<?> form);
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html b/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
new file mode 100644
index 0000000..9c344ed
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.html
@@ -0,0 +1,74 @@
+<?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="formelement">
+		<label><wicket:ommessage key="133" /></label><input type="password" wicket:id="password" />
+	</div>
+	<wicket:child/>
+	<div class="formelement">
+		<label><wicket:ommessage key="135" /></label><select
+			wicket:id="salutation" style="width: 60px;" /><input type="text"
+			wicket:id="firstname" style="width: 216px;" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="136" /></label><input type="text" wicket:id="lastname" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="1143" /></label><select wicket:id="timeZoneId" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="111" /></label><select wicket:id="language" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="137" /></label><input type="text" wicket:id="adresses.email" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="607" /></label><input type="text" wicket:id="adresses.phone" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="1503" /></label><input class="formcheckbox" type="checkbox" wicket:id="sendSMS" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="138" /></label><input type="text" wicket:id="age" style="width: 258px;" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="139" /></label><input type="text"
+			wicket:id="adresses.street" style="width: 244px;" /> <input
+			type="text" wicket:id="adresses.additionalname" style="width: 30px;" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="140" /></label><input type="text"
+			wicket:id="adresses.zip" style="width: 60px;" /> <input type="text"
+			wicket:id="adresses.town" style="width: 214px;" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="141" /></label><select wicket:id="adresses.states" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="142" /></label>
+		<textarea wicket:id="adresses.comment" />
+	</div>
+	<div class="formelement">
+		<label><wicket:ommessage key="161" /></label><input type="hidden" class="input" wicket:id="organisation_users" style="max-height: 80px" />
+	</div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java b/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
new file mode 100644
index 0000000..01b1d0c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
@@ -0,0 +1,208 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
+import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.SalutationDao;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.Salutation;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.extensions.markup.html.form.DateTextField;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.extensions.yui.calendar.DatePicker;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2MultiChoice;
+import org.wicketstuff.select2.TextChoiceProvider;
+
+public class GeneralUserForm extends Form<User> {
+	private static final long serialVersionUID = 1L;
+	private Salutation salutation;
+	private FieldLanguage lang;
+	private PasswordTextField passwordField;
+	private RequiredTextField<String> email;
+
+	public GeneralUserForm(String id, IModel<User> model, boolean isAdminForm) {
+		super(id, model);
+
+		//TODO should throw exception if non admin User edit somebody else (or make all fields read-only)
+		add(passwordField = new PasswordTextField("password", new Model<String>()));
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		passwordField.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
+
+		updateModelObject(getModelObject());
+		SalutationDao salutDao = getBean(SalutationDao.class);
+		FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
+		add(new DropDownChoice<Salutation>("salutation"
+				, new PropertyModel<Salutation>(this, "salutation")
+				, salutDao.getUserSalutations(getLanguage())
+				, new ChoiceRenderer<Salutation>("label.value", "salutations_id"))
+			.add(new AjaxFormComponentUpdatingBehavior("onchange") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onUpdate(AjaxRequestTarget target) {
+					GeneralUserForm.this.getModelObject().setSalutations_id(salutation.getSalutations_id());
+				}
+			}));
+		add(new TextField<String>("firstname"));
+		add(new TextField<String>("lastname"));
+		
+		add(new DropDownChoice<String>("timeZoneId", AVAILABLE_TIMEZONES));
+
+		add(new DropDownChoice<FieldLanguage>("language"
+				, new PropertyModel<FieldLanguage>(this, "lang")
+				, langDao.getLanguages()
+				, new ChoiceRenderer<FieldLanguage>("name", "language_id"))
+			.add(new AjaxFormComponentUpdatingBehavior("onchange") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onUpdate(AjaxRequestTarget target) {
+					GeneralUserForm.this.getModelObject().setLanguage_id(lang.getLanguage_id());
+				}
+			}));
+
+		add(email = new RequiredTextField<String>("adresses.email"));
+		email.setLabel(Model.of(WebSession.getString(137)));
+		email.add(RfcCompliantEmailAddressValidator.getInstance());
+		add(new TextField<String>("adresses.phone"));
+		add(new CheckBox("sendSMS"));
+		DateTextField age = new DateTextField("age");
+		DatePicker datePicker = new DatePicker() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getAdditionalJavaScript() {
+				return "${calendar}.cfg.setProperty(\"navigator\",true,false); ${calendar}.render();";
+			}
+		};
+		datePicker.setShowOnFieldClick(true);
+		datePicker.setAutoHide(true);
+		age.add(datePicker);
+		add(age);
+		add(new TextField<String>("adresses.street"));
+		add(new TextField<String>("adresses.additionalname"));
+		add(new TextField<String>("adresses.zip"));
+		add(new TextField<String>("adresses.town"));
+		add(new DropDownChoice<State>("adresses.states", getBean(StateDao.class).getStates(), new ChoiceRenderer<State>("name", "state_id")));
+		add(new TextArea<String>("adresses.comment"));
+
+		final List<Organisation_Users> orgUsers;
+		if (isAdminForm) {
+			List<Organisation> orgList = getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
+			orgUsers = new ArrayList<Organisation_Users>(orgList.size());
+			for (Organisation org : orgList) {
+				orgUsers.add(new Organisation_Users(org));
+			}
+		} else {
+			orgUsers = getModelObject().getOrganisation_users();
+		}
+		add(new Select2MultiChoice<Organisation_Users>("organisation_users", null, new TextChoiceProvider<Organisation_Users>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected String getDisplayText(Organisation_Users choice) {
+				return choice.getOrganisation().getName();
+			}
+
+			@Override
+			protected Object getId(Organisation_Users choice) {
+				return choice.getOrganisation().getOrganisation_id();
+			}
+
+			@Override
+			public void query(String term, int page, Response<Organisation_Users> response) {
+				for (Organisation_Users ou : orgUsers) {
+					if (Strings.isEmpty(term) || (!Strings.isEmpty(term) && ou.getOrganisation().getName().contains(term))) {
+						response.add(ou);
+					}
+				}
+			}
+
+			@Override
+			public Collection<Organisation_Users> toChoices(Collection<String> _ids) {
+				List<Long> ids = new ArrayList<Long>();
+				for (String id : _ids) {
+					ids.add(Long.parseLong(id));
+				}
+				List<Organisation_Users> list = new ArrayList<Organisation_Users>();
+				for (Organisation o : getBean(OrganisationDao.class).get(ids)) {
+					list.add(new Organisation_Users(o));
+				}
+				return list;
+			}
+		}).setEnabled(isAdminForm));
+	}
+
+	public void updateModelObject(User u) {
+		salutation = getBean(SalutationDao.class).get(u.getSalutations_id(), getLanguage());
+		lang = getBean(FieldLanguageDao.class).getFieldLanguageById(u.getLanguage_id());
+	}
+	
+	@Override
+	protected void onValidate() {
+		if(!getBean(UserDao.class).checkUserEMail(email.getConvertedInput(), getModelObject().getUser_id())) {
+			error(WebSession.getString(1000));
+		}
+		super.onValidate();
+	}
+	
+	public PasswordTextField getPasswordField() {
+		return passwordField;
+	}
+	
+	@Override
+	protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+		return new PanelMarkupSourcingStrategy(false);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.html b/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.html
new file mode 100644
index 0000000..3f72418
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.html
@@ -0,0 +1,27 @@
+<?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 id="header">
+			<span wicket:id="appName"></span>
+		</div>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.java b/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.java
new file mode 100644
index 0000000..45929f2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/HeaderPanel.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class HeaderPanel extends BasePanel {
+	private static final long serialVersionUID = 9020842845946685193L;
+
+	public HeaderPanel(String id, String appName) {
+		super(id);
+		add(new Label("appName", Strings.isEmpty(appName) ? "&nbsp;" : appName).setEscapeModelStrings(false));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/MenuPanel.html b/src/web/java/org/apache/openmeetings/web/common/MenuPanel.html
new file mode 100644
index 0000000..8280ae2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/MenuPanel.html
@@ -0,0 +1,54 @@
+<?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/jquery.ui.menubar.css"/>
+	</wicket:head>
+	<wicket:panel>
+		<script type="text/javascript" src="js/jquery.ui.menubar.js"></script>
+		<script type="text/javascript">
+			$(function() {
+				$("#jMenu").menubar({
+					autoExpand: true
+					, menuIcon: true
+					, buttons: true
+					, position: {
+						within: $("#menu").add(window).first()
+					}
+					//, select: select
+				});
+			});
+		</script>
+		<ul id="jMenu">
+			<li wicket:id="mainItem">
+				<a class="fNiv" href="#" onclick="return false;"><span wicket:id="label"></span></a>
+				<ul wicket:enclosure="childItem">
+					<li wicket:id="childItem">
+						<a wicket:id="link" href="#">
+							<span class="menuName" wicket:id="name"></span><br />
+							<span class="menuDesc" wicket:id="description"></span>
+						</a>
+					</li>
+				</ul>
+			</li>
+		</ul>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java b/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java
new file mode 100644
index 0000000..63c6d99
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/MenuPanel.java
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.entity.basic.Naviglobal;
+import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+
+/**
+ * Loads the menu items into the main area
+ * 
+ * @author sebawagner
+ *
+ */
+public class MenuPanel extends BasePanel {
+	private static final long serialVersionUID = 6626039612808753514L;
+
+	public MenuPanel(String id) {
+		super(id);
+		setMarkupId(id);
+		
+		final NavigationDao man = Application.getBean(NavigationDao.class);
+		add(new ListView<Naviglobal>("mainItem", man.getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()), WebSession.getUserId(), WebSession.getLanguage())) {
+			private static final long serialVersionUID = 2173926553418745231L;
+
+			@Override
+			protected void populateItem(ListItem<Naviglobal> item) {
+				Naviglobal gl = item.getModelObject();
+				item.add(new Label("label", gl.getLabel().getValue()).setRenderBodyOnly(true));
+				
+				item.add(new ListView<Navimain>("childItem", gl.getMainnavi()) {
+					private static final long serialVersionUID = 3609635268338379087L;
+
+					@Override
+					protected void populateItem(ListItem<Navimain> item) {
+						Navimain m = item.getModelObject();
+						final String name = m.getLabel().getValue();
+						final String desc = m.getTooltip().getValue();
+						final MenuActions action = MenuActions.valueOf(m.getAction());
+						final MenuParams params = m.getParams() != null ? MenuParams.valueOf(m.getParams()) : MenuParams.publicTabButton;
+						item.add(new AjaxLink<Void>("link") {
+							private static final long serialVersionUID = 5632618935550133709L;
+							{
+								add(new Label("name", name));
+								add(new Label("description", desc));
+							}
+							
+							public void onClick(AjaxRequestTarget target) {
+								((MainPage)getPage()).updateContents(new OmUrlFragment(action, params), target);
+							}
+						});
+					}
+				}.setReuseItems(true));
+			}
+		}.setReuseItems(true));
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		FieldLanguage lang = WebSession.getLanguageObj();
+		if (Boolean.TRUE.equals(lang.getRtl())) {
+			response.render(CssHeaderItem.forUrl("css/jquery.ui.menubar-rtl.css"));
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/OmLabel.java b/src/web/java/org/apache/openmeetings/web/common/OmLabel.java
new file mode 100644
index 0000000..a89911c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/OmLabel.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.StringResourceModel;
+
+public class OmLabel extends Label {
+	private static final long serialVersionUID = 1L;
+
+	public OmLabel(String id, String key, Object... parameters) {
+		super(id);
+		setDefaultModel(new StringResourceModel(key, this, null, parameters));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.html b/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
new file mode 100644
index 0000000..9b178ca
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.html
@@ -0,0 +1,28 @@
+<?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>
+	    <a wicket:id="first" class="goto icon ui-icon ui-icon-seek-first"></a>
+	    <a wicket:id="prev" class="goto icon ui-icon ui-icon-seek-prev"></a>
+	    <span wicket:id="navigation" class="goto">
+	        <a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
+	    </span>
+	    <a wicket:id="next" class="goto icon ui-icon ui-icon-seek-next"></a>
+	    <a wicket:id="last" class="goto icon ui-icon ui-icon-seek-end"></a>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.java b/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
new file mode 100644
index 0000000..596ab5f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
+import org.apache.wicket.markup.html.navigation.paging.IPageable;
+
+public class OmPagingNavigator extends AjaxPagingNavigator {
+
+	private static final long serialVersionUID = 1L;
+	
+	public OmPagingNavigator(String id, IPageable pageable) {
+		super(id, pageable);
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.html b/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.html
new file mode 100644
index 0000000..3cbf8fa
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.html
@@ -0,0 +1,29 @@
+<?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 wicket:id="pagedPanel" class="pagedEntityListPanel"></div>
+		<form wicket:id="searchForm" class="searchForm">
+			<input type="text" wicket:id="searchText" wicket:ommessage="title:714"/>
+			<input type="submit" wicket:id="search" wicket:ommessage="value:715"/>
+		</form>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.java b/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.java
new file mode 100644
index 0000000..5e4764b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/PagedEntityListPanel.java
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.PropertyModel;
+
+public abstract class PagedEntityListPanel extends BasePanel {
+	private static final long serialVersionUID = 1L;
+	private List<Integer> numbers = Arrays.asList(10, 25, 50, 75, 100, 200);
+	
+	public PagedEntityListPanel(String id, final SearchableDataView<? extends IDataProviderEntity> dataView) {
+		super(id);
+
+		final PagingNavigatorPanel navPanel = new PagingNavigatorPanel("pagedPanel", dataView, numbers) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				PagedEntityListPanel.this.onEvent(target);
+			}
+		};
+		
+		final SearchableDataProvider<? extends IDataProviderEntity> dp = dataView.getDataProvider();
+		Form<Void> searchForm = new Form<Void>("searchForm");
+		add(searchForm.setOutputMarkupId(true));
+		searchForm.add(new TextField<String>("searchText", new PropertyModel<String>(dp, "search")).setOutputMarkupId(true));
+		searchForm.add(new AjaxButton("search", searchForm) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				target.add(navPanel);
+				PagedEntityListPanel.this.onEvent(target);
+			}
+		});
+		add(navPanel);
+	}
+
+	protected abstract void onEvent(AjaxRequestTarget target);
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.html b/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.html
new file mode 100644
index 0000000..a3728e5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.html
@@ -0,0 +1,28 @@
+<?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="pagingForm" class="pagedEntityListPanel">
+		<select wicket:id="entitiesPerPage"></select> <span
+			wicket:id="navigator">[dataview navigator]</span>
+	</form>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.java b/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.java
new file mode 100644
index 0000000..255adfa
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/PagingNavigatorPanel.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import java.util.List;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.model.PropertyModel;
+
+public abstract class PagingNavigatorPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+	private int entitiesPerPage;
+	
+	public PagingNavigatorPanel(String id, final DataView<?> dataView, List<Integer> numbers) {
+		this(id, dataView, numbers, 50);
+	}
+	
+	public PagingNavigatorPanel(String id, final DataView<?> dataView, List<Integer> numbers, int _entitiesPerPage) {
+		super(id);
+		setOutputMarkupId(true);
+		this.entitiesPerPage = _entitiesPerPage;
+		dataView.setItemsPerPage(entitiesPerPage);
+		final Form<Void> f = new Form<Void>("pagingForm");
+		f.add(new OmPagingNavigator("navigator", dataView).setOutputMarkupId(true))
+			.add(new DropDownChoice<Integer>("entitiesPerPage", new PropertyModel<Integer>(this, "entitiesPerPage"), numbers)
+				.add(new AjaxFormComponentUpdatingBehavior("onchange") {
+					private static final long serialVersionUID = 1L;
+	
+					@Override
+					protected void onUpdate(AjaxRequestTarget target) {
+						long newPage = dataView.getCurrentPage() * dataView.getItemsPerPage() / entitiesPerPage;
+						dataView.setItemsPerPage(entitiesPerPage);
+						dataView.setCurrentPage(newPage);
+						target.add(f);
+						PagingNavigatorPanel.this.onEvent(target);
+					}
+				}));
+		add(f.setOutputMarkupId(true));
+	}
+
+	public int getEntitiesPerPage() {
+		return entitiesPerPage;
+	}
+	
+	public void setEntitiesPerPage(int entitiesPerPage) {
+		this.entitiesPerPage = entitiesPerPage;
+	}
+	
+	protected abstract void onEvent(AjaxRequestTarget target);
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.html b/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.html
new file mode 100644
index 0000000..92f58ff
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.html
@@ -0,0 +1,25 @@
+<?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="profile" wicket:id="profile"><img wicket:id="img"/><wicket:child/></div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.java b/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.java
new file mode 100644
index 0000000..023e968
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/ProfileImagePanel.java
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URI;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.request.resource.ByteArrayResource;
+import org.apache.wicket.util.io.IOUtils;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ProfileImagePanel extends BasePanel {
+	private static final long serialVersionUID = 1119719397241677937L;
+	private static final Logger log = Red5LoggerFactory.getLogger(ProfileImagePanel.class, webAppRootKey);
+	protected final WebMarkupContainer profile;
+	
+	public ProfileImagePanel(String id, final long userId) {
+		super(id);
+		
+		profile = new TransparentWebMarkupContainer("profile");
+		String uri = getBean(UserDao.class).get(userId).getPictureuri();
+		boolean absolute = false;
+		try {
+			absolute = URI.create(uri).isAbsolute();
+		} catch (Exception e) {
+			//no-op
+		}
+		if (absolute) {
+			profile.add(new Image("img", WebSession.getString(5L)).add(AttributeModifier.replace("src", uri)));
+		} else {
+			profile.add(new Image("img", new ByteArrayResource("image/jpeg") {
+				private static final long serialVersionUID = 6039580072791941591L;
+
+				@Override
+				protected ResourceResponse newResourceResponse(Attributes attributes) {
+					ResourceResponse rr = super.newResourceResponse(attributes);
+					rr.disableCaching();
+					return rr;
+				}
+				
+				@Override
+				protected byte[] getData(Attributes attributes) {
+					String uri = getBean(UserDao.class).get(userId).getPictureuri();
+					File img = OmFileHelper.getUserProfilePicture(userId, uri);
+					try {
+						return IOUtils.toByteArray(new FileInputStream(img));
+					} catch (Exception e) {
+						log.error("failed to get bytes from image", e);
+					}
+					return null;
+				}
+			}));
+		}
+		add(profile.setOutputMarkupId(true));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html b/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
new file mode 100644
index 0000000..7465eba
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
@@ -0,0 +1,28 @@
+<?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:extend>
+		<form wicket:id="form"><div 
+			class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;"><span 
+			class="btn btn-file" style="width: 120px;"><wicket:ommessage key="379"/><input type="file" accept="image/*" 
+			wicket:id="image"/></span></div><span wicket:id="progress">[progressbar]</span></form>
+	</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java b/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
new file mode 100644
index 0000000..8b2cd2d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.List;
+
+import org.apache.openmeetings.converter.GenerateImage;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.lang.Bytes;
+
+public class UploadableProfileImagePanel extends ProfileImagePanel {
+	private static final long serialVersionUID = 1L;
+	private FileUploadField fileUploadField;
+	
+	public UploadableProfileImagePanel(String id, final long userId) {
+		super(id, userId);
+		final Form<Void> form = new Form<Void>("form");
+		form.setMultiPart(true);
+		form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
+		// Model is necessary here to avoid writing image to the User object
+		form.add(fileUploadField = new FileUploadField("image", new IModel<List<FileUpload>>() {
+			private static final long serialVersionUID = 1L;
+
+			//FIXME this need to be eliminated
+			public void detach() {
+			}
+			
+			public void setObject(List<FileUpload> object) {
+			}
+			
+			public List<FileUpload> getObject() {
+				return null;
+			}
+		}));
+		form.add(new UploadProgressBar("progress", form, fileUploadField));
+		fileUploadField.add(new AjaxFormSubmitBehavior(form, "onchange") {
+			private static final long serialVersionUID = 2160216679027859231L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				FileUpload fu = fileUploadField.getFileUpload();
+				if (fu != null) {
+					StoredFile sf = new StoredFile(fu.getClientFileName());
+					if (sf.isImage()) {
+						boolean asIs = sf.isAsIs();
+						try {
+							//FIXME need to work with InputStream !!!
+							getBean(GenerateImage.class)
+								.convertImageUserProfile(fu.writeToTempFile(), userId, asIs);
+						} catch (Exception e) {
+							// TODO display error
+							e.printStackTrace();
+						}
+					} else {
+						//TODO display error
+					}
+				}
+				target.add(profile, form);
+			}
+		});
+		add(form.setOutputMarkupId(true));
+		add(BootstrapFileUploadBehavior.INSTANCE);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/common/UserPanel.java b/src/web/java/org/apache/openmeetings/web/common/UserPanel.java
new file mode 100644
index 0000000..3d9c686
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/common/UserPanel.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.IRoomManager;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.model.IModel;
+
+@AuthorizeInstantiation("Dashboard")
+public abstract class UserPanel extends BasePanel {
+	private static final long serialVersionUID = 1L;
+
+	public UserPanel(String id) {
+		super(id);
+	}
+	
+	public UserPanel(String id, IModel<?> model) {
+		super(id, model);
+	}
+	
+	public static List<Room> getMyRooms() {
+		List<Room> result = new ArrayList<Room>();
+		result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 1L, WebSession.getString(1306L)));
+		result.add(getBean(IRoomManager.class).getRoomByOwnerAndTypeId(getUserId(), 3L, WebSession.getString(1307L)));
+		result.addAll(getBean(RoomDao.class).getAppointedRoomsByUser(getUserId()));
+		return result;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/data/DataViewContainer.java b/src/web/java/org/apache/openmeetings/web/data/DataViewContainer.java
new file mode 100644
index 0000000..aaf178a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/data/DataViewContainer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+public class DataViewContainer<T extends IDataProviderEntity> implements Serializable {
+	private static final long serialVersionUID = -1027478954223527890L;
+	public WebMarkupContainer container;
+	public SearchableDataView<T> view;
+	public PagedEntityListPanel navigator;
+	private List<OmOrderByBorder<T>> orderLinks = new ArrayList<OmOrderByBorder<T>>();
+	
+	public DataViewContainer(WebMarkupContainer container, SearchableDataView<T> view, PagedEntityListPanel navigator) {
+		this.container = container;
+		this.view = view;
+		this.navigator = navigator;
+	}
+	
+	public DataViewContainer<T> addLink(OmOrderByBorder<T> link) {
+		orderLinks.add(link);
+		return this;
+	}
+	
+	public OmOrderByBorder<T>[] getLinks() {
+		@SuppressWarnings("unchecked")
+		OmOrderByBorder<T>[] a = new OmOrderByBorder[0];
+		return orderLinks.toArray(a);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/data/OmOrderByBorder.java b/src/web/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
new file mode 100644
index 0000000..59f4343
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/data/OmOrderByBorder.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.repeater.data.sort.AjaxFallbackOrderByBorder;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.CssProvider;
+
+public class OmOrderByBorder<T extends IDataProviderEntity> extends AjaxFallbackOrderByBorder<String> {
+	private static final long serialVersionUID = -867341109912297431L;
+	private DataViewContainer<T> container;
+	
+	public OmOrderByBorder(final String id, final String property, DataViewContainer<T> container) {
+		super(id, property, container.view.getDataProvider(), new SortIconCssProvider());
+		this.container = container;
+		setOutputMarkupId(true);
+	}
+	
+    protected void onSortChanged() {
+    	container.view.setCurrentPage(0);
+    }
+
+	@Override
+	protected void onAjaxClick(AjaxRequestTarget target) {
+		target.add(container.container, container.navigator);
+		target.add(container.getLinks());
+	}
+	
+	static class SortIconCssProvider extends CssProvider<String> {
+		private static final long serialVersionUID = 60178231250586887L;
+
+		public SortIconCssProvider() {
+			super("ui-icon ui-icon-carat-1-n sort-icon", "ui-icon ui-icon-carat-1-s sort-icon", "ui-icon ui-icon-carat-2-n-s sort-icon");
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/data/SearchableDataProvider.java b/src/web/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
new file mode 100644
index 0000000..7b66be2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.data;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+
+/**
+ * provides function to fill paging tables
+ * 
+ * @author swagner
+ * 
+ * @param <T>
+ */
+public class SearchableDataProvider<T extends IDataProviderEntity> extends SortableDataProvider<T, String> {
+	private static final long serialVersionUID = 4325721185888905204L;
+	protected Class<? extends IDataProviderDao<T>> clazz;
+	protected String search = null;
+	
+	public SearchableDataProvider(Class<? extends IDataProviderDao<T>> c) {
+		this.clazz = c;
+	}
+	
+	public void detach() {
+		// does nothing
+	}
+
+	protected IDataProviderDao<T> getDao() {
+		return getBean(clazz);
+	}
+	
+	protected String getSortStr() {
+		String result = null;
+		if (getSort() != null) {
+			result = getSort().getProperty() + " " + (getSort().isAscending() ? "ASC" : "DESC");
+		}
+		return result;
+	}
+	
+	public Iterator<? extends T> iterator(long first, long count) {
+		return (search == null && getSort() == null
+			? getDao().get((int)first, (int)count)
+			: getDao().get(search, (int)first, (int)count, getSortStr())).iterator();
+	}
+
+	public long size() {
+		return search == null ? getDao().count() : getDao().count(search);
+	}
+
+	public IModel<T> model(T object) {
+		return new CompoundPropertyModel<T>(object);
+	}
+
+	public void setSearch(String search) {
+		if (search != null && !search.trim().isEmpty()) {
+			this.search = search.trim();
+		} else {
+			this.search = null;
+		}
+	}
+	
+	public String getSearch() {
+		return search;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/AbstractAppointmentTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractAppointmentTemplate.java
new file mode 100644
index 0000000..7be734f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractAppointmentTemplate.java
@@ -0,0 +1,23 @@
+package org.apache.openmeetings.web.mail.template;
+
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+
+public abstract class AbstractAppointmentTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+	protected Appointment a;
+	protected TimeZone tz;
+
+	public AbstractAppointmentTemplate(Long langId, Appointment a, TimeZone tz) {
+		super(langId);
+		this.a = a;
+		this.tz = tz;
+	}
+
+	public String getEmail() {
+		return renderPanel(this).toString();
+	}
+
+	public abstract String getSubject();
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.html b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.html
new file mode 100644
index 0000000..f8038c1
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.html
@@ -0,0 +1,27 @@
+<?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 wicket:id="container">
+		<wicket:child/>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.java b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.java
new file mode 100644
index 0000000..e44e620
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/AbstractTemplatePanel.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAUT_LANG_KEY;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.mock.MockWebResponse;
+import org.apache.wicket.protocol.http.BufferedWebResponse;
+import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
+import org.apache.wicket.protocol.http.mock.MockHttpSession;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.Response;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.cycle.RequestCycleContext;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
+
+public abstract class AbstractTemplatePanel extends Panel {
+	private static final long serialVersionUID = 1L;
+	protected long langId;
+	
+	public AbstractTemplatePanel(Long langId) {
+		super(TemplatePage.COMP_ID);
+		this.langId = langId == null ? getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1") : langId;
+		FieldLanguage lang = getBean(FieldLanguageDao.class).getFieldLanguageById(langId);
+		add(new TransparentWebMarkupContainer("container").add(AttributeAppender.append("dir", Boolean.TRUE.equals(lang.getRtl()) ? "rtl" : "ltr")));
+	}
+	
+	/**
+	 * Collects the html generated by the rendering of a page.
+	 * 
+	 * @param panel
+	 *            the panel that should be rendered.
+	 * @return the html rendered by the panel
+	 */
+	protected static CharSequence renderPanel(final Panel panel) {
+		RequestCycle requestCycle = RequestCycle.get();
+
+		final Response oldResponse = requestCycle.getResponse();
+		BufferedWebResponse tempResponse = new BufferedWebResponse(null);
+
+		try {
+			requestCycle.setResponse(tempResponse);
+
+			TemplatePage page = new TemplatePage();
+			page.add(panel);
+
+			panel.render();
+		} finally {
+			requestCycle.setResponse(oldResponse);
+		}
+
+		return tempResponse.getText();
+	}
+
+	public static class TemplatePage extends WebPage implements IMarkupResourceStreamProvider {
+		private static final long serialVersionUID = 1L;
+		public static final String COMP_ID = "template";
+
+		public IResourceStream getMarkupResourceStream(MarkupContainer container, Class<?> containerClass) {
+			return new StringResourceStream("<wicket:container wicket:id='" + COMP_ID + "'></wicket:container>");
+		}
+	}
+	
+	public static void ensureApplication(long langId) {
+		if (!Application.exists()) {
+			Application a = (Application)Application.get(Application.getAppName());
+			ThreadContext.setApplication(a);
+			
+			ServletWebRequest req = new ServletWebRequest(new MockHttpServletRequest(a, new MockHttpSession(a.getServletContext()), a.getServletContext()), "");
+			RequestCycleContext rctx = new RequestCycleContext(req, new MockWebResponse(), a.getRootRequestMapper(), a.getExceptionMapperProvider().get()); 
+			ThreadContext.setRequestCycle(new RequestCycle(rctx));
+			
+			WebSession s = WebSession.get();
+			s.setLanguage(langId);
+			ThreadContext.setSession(s);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.html
new file mode 100644
index 0000000..5e80e9a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.html
@@ -0,0 +1,33 @@
+<?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:extend>
+	<span wicket:id="titleLbl"></span>&nbsp;<span wicket:id="title"></span>
+	<div wicket:id="descContainer">
+		<br/>
+		<span wicket:id="descLbl"></span><br/>
+		&nbsp;<span wicket:id="desc"></span>
+	</div>
+	<br/>
+	<span wicket:id="startLbl"></span>&nbsp;<span wicket:id="start"></span><br/>
+	<span wicket:id="endLbl"></span>&nbsp;<span wicket:id="end"></span><br/>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.java
new file mode 100644
index 0000000..a0cb22b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/AppointmentReminderTemplate.java
@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class AppointmentReminderTemplate extends AbstractAppointmentTemplate {
+	private static final long serialVersionUID = 1L;
+
+	private AppointmentReminderTemplate(Long langId, Appointment a, TimeZone tz) {
+		super(langId, a, tz);
+
+		add(new Label("titleLbl", WebSession.getString(1158L, langId)));
+		add(new Label("title", a.getTitle()));
+		add(new WebMarkupContainer("descContainer")
+			.add(new Label("descLbl", WebSession.getString(1152L, langId)))
+			.add(new Label("desc", a.getDescription()).setEscapeModelStrings(false))
+			.setVisible(!Strings.isEmpty(a.getDescription()))
+			);
+		add(new Label("startLbl", WebSession.getString(1153L, langId)));
+		add(new Label("start", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz)));
+		add(new Label("endLbl", WebSession.getString(1154L, langId)));
+		add(new Label("end", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz)));
+	}
+	
+	public static AppointmentReminderTemplate get(Long langId, Appointment a, TimeZone tz) {
+		ensureApplication(langId);
+		return new AppointmentReminderTemplate(langId, a, tz);
+	}
+
+	@Override
+	public String getSubject() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(WebSession.getString(1158L, langId)).append(" ").append(" ").append(a.getTitle()).append(' ')
+			.append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz))
+			.append(" - ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz));
+
+		return sb.toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.html
new file mode 100644
index 0000000..1d6bd28
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.html
@@ -0,0 +1,34 @@
+<?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:extend>
+	<span wicket:id="titleLbl"></span>&nbsp;<span wicket:id="title"></span>
+	<div wicket:id="descContainer">
+		<br/>
+		<span wicket:id="descLbl"></span><br/>
+		&nbsp;<span wicket:id="desc"></span>
+	</div>
+	<br/>
+	<span wicket:id="startLbl"></span>&nbsp;<span wicket:id="start"></span><br/>
+	<span wicket:id="endLbl"></span>&nbsp;<span wicket:id="end"></span><br/>
+	<span wicket:id="invitorLbl"></span>&nbsp;<span wicket:id="invitor"></span><br/>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.java
new file mode 100644
index 0000000..b0f86d7
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/CanceledAppointmentTemplate.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class CanceledAppointmentTemplate extends AbstractAppointmentTemplate {
+	private static final long serialVersionUID = 1L;
+
+	private CanceledAppointmentTemplate(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		super(langId, a, tz);
+
+		add(new Label("titleLbl", WebSession.getString(1157L, langId)));
+		add(new Label("title", a.getTitle()));
+		add(new WebMarkupContainer("descContainer")
+			.add(new Label("descLbl", WebSession.getString(1152L, langId)))
+			.add(new Label("desc", a.getDescription()).setEscapeModelStrings(false))
+			.setVisible(!Strings.isEmpty(a.getDescription()))
+			);
+		add(new Label("startLbl", WebSession.getString(1153L, langId)));
+		add(new Label("start", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz)));
+		add(new Label("endLbl", WebSession.getString(1154L, langId)));
+		add(new Label("end", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz)));
+		add(new Label("invitorLbl", WebSession.getString(1156L, langId)));
+		add(new Label("invitor", invitorName));
+	}
+	
+	public static CanceledAppointmentTemplate get(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		ensureApplication(langId);
+		return new CanceledAppointmentTemplate(langId, a, tz, invitorName);
+	}
+
+	@Override
+	public String getSubject() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(WebSession.getString(1157L, langId)).append(" ").append(a.getTitle())
+			.append(" ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz))
+			.append(" - ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz));
+
+		return sb.toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.html
new file mode 100644
index 0000000..1d6bd28
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.html
@@ -0,0 +1,34 @@
+<?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:extend>
+	<span wicket:id="titleLbl"></span>&nbsp;<span wicket:id="title"></span>
+	<div wicket:id="descContainer">
+		<br/>
+		<span wicket:id="descLbl"></span><br/>
+		&nbsp;<span wicket:id="desc"></span>
+	</div>
+	<br/>
+	<span wicket:id="startLbl"></span>&nbsp;<span wicket:id="start"></span><br/>
+	<span wicket:id="endLbl"></span>&nbsp;<span wicket:id="end"></span><br/>
+	<span wicket:id="invitorLbl"></span>&nbsp;<span wicket:id="invitor"></span><br/>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.java
new file mode 100644
index 0000000..30ec8e5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/CreatedAppointmentTemplate.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class CreatedAppointmentTemplate extends AbstractAppointmentTemplate {
+	private static final long serialVersionUID = 1L;
+
+	private CreatedAppointmentTemplate(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		super(langId, a, tz);
+
+		add(new Label("titleLbl", WebSession.getString(1151L, langId)));
+		add(new Label("title", a.getTitle()));
+		add(new WebMarkupContainer("descContainer")
+			.add(new Label("descLbl", WebSession.getString(1152L, langId)))
+			.add(new Label("desc", a.getDescription()).setEscapeModelStrings(false))
+			.setVisible(!Strings.isEmpty(a.getDescription()))
+			);
+		add(new Label("startLbl", WebSession.getString(1153L, langId)));
+		add(new Label("start", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz)));
+		add(new Label("endLbl", WebSession.getString(1154L, langId)));
+		add(new Label("end", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz)));
+		add(new Label("invitorLbl", WebSession.getString(1156L, langId)));
+		add(new Label("invitor", invitorName));
+	}
+	
+	public static CreatedAppointmentTemplate get(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		ensureApplication(langId);
+		return new CreatedAppointmentTemplate(langId, a, tz, invitorName);
+	}
+
+	@Override
+	public String getSubject() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(WebSession.getString(1151L, langId)).append(" ").append(a.getTitle())
+			.append(" ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz))
+			.append(" - ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz));
+
+		return sb.toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.html
new file mode 100644
index 0000000..68b10b4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.html
@@ -0,0 +1,30 @@
+<?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:extend>
+	<b><span wicket:id="appname"></span> - Feedback</b><br />
+	Message from User: <span wicket:id="username"></span><br/>
+	Mail: <span wicket:id="email"></span><br/>
+	Message: <span wicket:id="message"></span><br/><br/>
+	<b>Click on this link to participate in the Meeting:</b><br/>
+	<a wicket:id="invitation_link">Click here to enter room</a><br/>
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.java
new file mode 100644
index 0000000..95c28fc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/FeedbackTemplate.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+
+public class FeedbackTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	public FeedbackTemplate(String username, String email, String message) {
+		super(WebSession.getLanguage());
+		add(new Label("appname", getBean(ConfigurationDao.class).getAppName()));
+		add(new Label("username", username));
+		add(new Label("email", email));
+		add(new Label("message", message));
+		add(new ExternalLink("invitation_link", ""));
+	}
+	
+	public static String getEmail(String username, String email, String message) {
+		return renderPanel(new FeedbackTemplate(username, email, message)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.html
new file mode 100644
index 0000000..d47fbcf
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.html
@@ -0,0 +1,34 @@
+<?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:extend>
+	<b><span wicket:id="titleLbl"></span></b><br />
+	<span wicket:id="userLbl"></span> <span wicket:id="user"></span><br/>
+	<span wicket:id="messageLbl"></span> <span wicket:id="message"></span><br/>
+	<div wicket:id="links">
+		<span wicket:id="comment_for_link1"></span><br/>
+		<a wicket:id="invitation_link1"><span wicket:id="clickMe"></span></a><br/>
+		<br/><br/>
+		<span wicket:id="comment_for_link2"></span><br/>
+		<span wicket:id="invitation_link2"></span>
+	</div>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.java
new file mode 100644
index 0000000..d33784f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/InvitationTemplate.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+
+public class InvitationTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	private InvitationTemplate(Long langId, String invitorName, String message, String link) {
+		super(langId);
+
+		add(new Label("titleLbl", WebSession.getString(500, langId)));
+		add(new Label("userLbl", WebSession.getString(501, langId)));
+		add(new Label("user", invitorName));
+		add(new Label("messageLbl", WebSession.getString(502, langId)));
+		add(new Label("message", message).setEscapeModelStrings(false));
+		
+		add(new WebMarkupContainer("links")
+			.add(new Label("comment_for_link1", WebSession.getString(503, langId)))
+			.add(new ExternalLink("invitation_link1", link).add(new Label("clickMe", WebSession.getString(504, langId))))
+			.add(new Label("comment_for_link2", WebSession.getString(505, langId)))
+			.add(new Label("invitation_link2", link))
+			.setVisible(link != null)
+			);
+	}
+	
+	public static String getEmail(Long langId, String invitorName, String message, String link) {
+		ensureApplication(langId);
+		return renderPanel(new InvitationTemplate(langId, invitorName, message, link)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.html
new file mode 100644
index 0000000..987e479
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.html
@@ -0,0 +1,38 @@
+<?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:extend>
+	<b><wicket:ommessage key="506" /></b><br />
+	<br />
+	<br />
+	<b><wicket:ommessage key="507" /></b><br />
+	<wicket:ommessage key="508" /> <span wicket:id="username"></span><br />
+	<wicket:ommessage key="509" /> <span wicket:id="userpass"></span><br />
+	<wicket:ommessage key="510" /> <span wicket:id="email"></span><br />
+	<br />
+	<div wicket:id="verification">
+		<wicket:ommessage key="667" /> <br />
+		<a wicket:id="verification_url1"><wicket:ommessage key="668" /></a> <br />
+		<span wicket:id="verification_url2"></span> <br />
+	</div>
+	<wicket:ommessage key="511" /><br />
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.java
new file mode 100644
index 0000000..c90c988
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RegisterUserTemplate.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+
+public class RegisterUserTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	public RegisterUserTemplate(String username, String userpass, String email, String verification_url) {
+		super(WebSession.getLanguage());
+		add(new Label("username", username));
+		add(new Label("userpass", userpass));
+		add(new Label("email", email));
+		WebMarkupContainer verification = new WebMarkupContainer("verification");
+		add(verification.add(new Label("verification_url2", verification_url))
+			.add(new ExternalLink("verification_url1", verification_url))
+			.setVisible(verification_url != null));
+	}
+
+	public static String getEmail(String username, String userpass, String email, String verification_url) {
+		return renderPanel(new RegisterUserTemplate(username, userpass, email, verification_url)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.html
new file mode 100644
index 0000000..978fef0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.html
@@ -0,0 +1,28 @@
+<?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:extend>
+	<wicket:ommessage key="1192"/>&nbsp;<span wicket:id="addedFirstName"></span>&nbsp;<span wicket:id="addedLastName"></span><br/>
+	<br/>
+	<span wicket:id="firstName"></span>&nbsp;<span wicket:id="lastName"></span>&nbsp;<wicket:ommessage key="1193"/><br/>
+	<wicket:ommessage key="1194"/><br/>
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.java
new file mode 100644
index 0000000..387c6fc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactConfirmTemplate.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.basic.Label;
+
+public class RequestContactConfirmTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	public RequestContactConfirmTemplate(User user, UserContact contact) {
+		super(WebSession.getLanguage());
+		add(new Label("firstName", user.getFirstname()));
+		add(new Label("lastName", user.getLastname()));
+		add(new Label("addedFirstName", contact.getContact().getFirstname()));
+		add(new Label("addedLastName", contact.getContact().getLastname()));
+	}
+	
+	public static String getEmail(User user, UserContact contact) {
+		return renderPanel(new RequestContactConfirmTemplate(user, contact)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.html
new file mode 100644
index 0000000..9c1327d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.html
@@ -0,0 +1,31 @@
+<?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:extend>
+	<wicket:ommessage key="1192"/>&nbsp;<span wicket:id="addedFirstName"></span>&nbsp;<span wicket:id="addedLastName"></span><br/>
+	<br/>
+	<span wicket:id="firstName"></span>&nbsp;<span wicket:id="lastName"></span>&nbsp;<wicket:ommessage key="1198"/><br/>
+	<wicket:ommessage key="1194"/><br/>
+	<br/>
+	<br/>
+	<a wicket:id="link"><wicket:ommessage key="1196"/></a><br/>
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.java
new file mode 100644
index 0000000..3b1c113
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/RequestContactTemplate.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+
+public class RequestContactTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	public RequestContactTemplate(User userToAdd, User user) {
+		super(WebSession.getLanguage());
+		add(new Label("addedFirstName", userToAdd.getFirstname()));
+		add(new Label("addedLastName", userToAdd.getLastname()));
+		add(new Label("firstName", user.getFirstname()));
+		add(new Label("lastName", user.getLastname()));
+		add(new ExternalLink("link", ContactsHelper.getLink()));
+	}
+	
+	public static String getEmail(User userToAdd, User user) {
+		return renderPanel(new RequestContactTemplate(userToAdd, user)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.html
new file mode 100644
index 0000000..47c8e2f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.html
@@ -0,0 +1,29 @@
+<?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:extend>
+	<b><wicket:ommessage key="513"/></b><br />
+	<b><wicket:ommessage key="514"/></b><br/>
+	<a wicket:id="reset_link1"><wicket:ommessage key="515"/></a><br/>
+	<wicket:ommessage key="516"/><br/>
+	<span wicket:id="reset_link2"></span>
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.java
new file mode 100644
index 0000000..4646c3b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/ResetPasswordTemplate.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+
+public class ResetPasswordTemplate extends AbstractTemplatePanel {
+	private static final long serialVersionUID = 1L;
+
+	public ResetPasswordTemplate(String link) {
+		super(WebSession.getLanguage());
+		add(new ExternalLink("reset_link1", link));
+		add(new Label("reset_link2", link));
+	}
+	
+	public static String getEmail(String link) {
+		return renderPanel(new ResetPasswordTemplate(link)).toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.html b/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.html
new file mode 100644
index 0000000..1d6bd28
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.html
@@ -0,0 +1,34 @@
+<?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:extend>
+	<span wicket:id="titleLbl"></span>&nbsp;<span wicket:id="title"></span>
+	<div wicket:id="descContainer">
+		<br/>
+		<span wicket:id="descLbl"></span><br/>
+		&nbsp;<span wicket:id="desc"></span>
+	</div>
+	<br/>
+	<span wicket:id="startLbl"></span>&nbsp;<span wicket:id="start"></span><br/>
+	<span wicket:id="endLbl"></span>&nbsp;<span wicket:id="end"></span><br/>
+	<span wicket:id="invitorLbl"></span>&nbsp;<span wicket:id="invitor"></span><br/>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.java b/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.java
new file mode 100644
index 0000000..522f00d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/mail/template/UpdatedAppointmentTemplate.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.mail.template;
+
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.util.string.Strings;
+
+public class UpdatedAppointmentTemplate extends AbstractAppointmentTemplate {
+	private static final long serialVersionUID = 1L;
+
+	private UpdatedAppointmentTemplate(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		super(langId, a, tz);
+
+		add(new Label("titleLbl", WebSession.getString(1155L, langId)));
+		add(new Label("title", a.getTitle()));
+		add(new WebMarkupContainer("descContainer")
+			.add(new Label("descLbl", WebSession.getString(1152L, langId)))
+			.add(new Label("desc", a.getDescription()).setEscapeModelStrings(false))
+			.setVisible(!Strings.isEmpty(a.getDescription()))
+			);
+		add(new Label("startLbl", WebSession.getString(1153L, langId)));
+		add(new Label("start", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz)));
+		add(new Label("endLbl", WebSession.getString(1154L, langId)));
+		add(new Label("end", CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz)));
+		add(new Label("invitorLbl", WebSession.getString(1156L, langId)));
+		add(new Label("invitor", invitorName));
+	}
+	
+	public static UpdatedAppointmentTemplate get(Long langId, Appointment a, TimeZone tz, String invitorName) {
+		ensureApplication(langId);
+		return new UpdatedAppointmentTemplate(langId, a, tz, invitorName);
+	}
+
+	@Override
+	public String getSubject() {
+		StringBuilder sb = new StringBuilder();
+		sb.append(WebSession.getString(1155L, langId)).append(" ").append(a.getTitle())
+			.append(" ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getStart(), tz))
+			.append(" - ").append(CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(a.getEnd(), tz));
+
+		return sb.toString();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java b/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java
new file mode 100644
index 0000000..47485ad
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/ActivatePage.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.AuthLevelUtil;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class ActivatePage extends BaseNotInitedPage {
+	private static final long serialVersionUID = 1L;
+	private final String ACTIVATION_PARAM = "u";
+	
+	public ActivatePage(PageParameters pp) {
+		String userHash = pp.get(ACTIVATION_PARAM).toString();
+		if (userHash != null) {
+			User user = Application.getBean(UserDao.class).getUserByActivationHash(userHash);
+
+			if (!AuthLevelUtil.hasLoginLevel(user.getRights())) {
+				// activate
+				user.getRights().add(Right.Login);
+				user.setUpdatetime(new Date());
+
+				Application.getBean(UserDao.class).update(user, null);
+	
+			}
+		}
+		setResponsePage(Application.get().getSignInPageClass());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/BaseInitedPage.java b/src/web/java/org/apache/openmeetings/web/pages/BaseInitedPage.java
new file mode 100644
index 0000000..9d91fcc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/BaseInitedPage.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.web.app.WebSession;
+
+public abstract class BaseInitedPage extends BasePage {
+	private static final long serialVersionUID = 5716753033219700254L;
+
+	@Override
+	protected String getApplicationName() {
+		return getBean(ConfigurationDao.class).getAppName();
+	}
+	
+	@Override
+	protected FieldLanguage getLanguage() {
+		return WebSession.getLanguageObj();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java b/src/web/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
new file mode 100644
index 0000000..8eb7d27
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.installation.InstallationConfig;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.IRequestParameters;
+
+public abstract class BaseNotInitedPage extends BasePage {
+	private static final long serialVersionUID = 5716753033219700254L;
+	private static final InstallationConfig installCfg = new InstallationConfig(); 
+	private static final FieldLanguage l = new FieldLanguage();
+	static {
+		l.setCode("en");
+		l.setRtl(false);
+	}
+
+
+	@Override
+	protected String getApplicationName() {
+		return installCfg.appName;
+	}
+	
+	@Override
+	protected FieldLanguage getLanguage() {
+		return l;
+	}
+	
+	@Override
+	protected void onParameterArrival(IRequestParameters arg0, AjaxRequestTarget arg1) {
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/BasePage.html b/src/web/java/org/apache/openmeetings/web/pages/BasePage.html
new file mode 100644
index 0000000..145d9cc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/BasePage.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<!--
+  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:id="html">
+	<head>
+		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+		<wicket:header-items/>
+		<link rel="shortcut icon" href="public/favicon.ico" type="image/x-icon"/>
+		<title wicket:id="pageTitle">[title]</title>
+		<link media="screen" type="text/css" rel="stylesheet" href="css/theme_om/jquery-ui-1.10.4.custom.css"/>
+		<link media="screen" type="text/css" rel="stylesheet" href="css/theme.css"/>
+		<link media="screen" type="text/css" rel="stylesheet" href="css/forms.css"/>
+		<link media="screen" type="text/css" rel="stylesheet" href="css/calendar.css"/>
+		<link media="screen" type="text/css" rel="stylesheet" href="css/admin.css"/>
+	</head>
+	<body>
+		<div wicket:id="header"></div>
+		<wicket:child />
+	</body>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/BasePage.java b/src/web/java/org/apache/openmeetings/web/pages/BasePage.java
new file mode 100644
index 0000000..ad8b3cd
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.HeaderPanel;
+import org.apache.openmeetings.web.util.FormatHelper;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.util.string.StringValue;
+import org.wicketstuff.urlfragment.AsyncUrlFragmentAwarePage;
+
+public abstract class BasePage extends AsyncUrlFragmentAwarePage {
+	private static final long serialVersionUID = 1L;
+	private final Map<String, String> options;
+
+	protected abstract FieldLanguage getLanguage();
+	protected abstract String getApplicationName();
+	
+	public BasePage() {
+		options = new HashMap<String, String>();
+		options.put("fragmentIdentifierSuffix", "");
+		options.put("keyValueDelimiter", "/");
+		String appName = getApplicationName();
+
+		FieldLanguage lang = getLanguage();
+		String code = lang.getCode();
+		add(new TransparentWebMarkupContainer("html")
+	    	.add(new AttributeModifier("xml:lang", code))
+	    	.add(new AttributeModifier("lang", code))
+	    	.add(new AttributeModifier("dir", Boolean.TRUE.equals(lang.getRtl()) ? "rtl" : "ltr"))); 
+		add(new Label("pageTitle", appName));
+		add(new HeaderPanel("header", appName));
+	}
+	
+	protected OmUrlFragment getUrlFragment(IRequestParameters params) {
+		for (AreaKeys key : AreaKeys.values()) {
+			StringValue type = params.getParameterValue(key.name());
+			if (!type.isEmpty()) {
+				return new OmUrlFragment(key, type.toString());
+			}
+		}
+		return null;
+	}
+	
+	@Override
+	protected Map<String, String> getOptions() {
+		return options;
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
+		super.renderHead(response);
+		
+		boolean rtl = false;
+		if (Application.isInstalled()) {
+			rtl = Boolean.TRUE.equals(WebSession.getLanguageObj().getRtl());
+		} else {
+			rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString());
+		}
+		if (rtl) {
+			response.render(CssHeaderItem.forUrl("css/theme-rtl.css"));
+			response.render(CssHeaderItem.forUrl("css/admin-rtl.css"));
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/MainPage.html b/src/web/java/org/apache/openmeetings/web/pages/MainPage.html
new file mode 100644
index 0000000..a8d1795
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/MainPage.html
@@ -0,0 +1,57 @@
+<?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>
+		<script type="text/javascript">
+			function showBusyIndicator() {
+				$('#busy_indicator').show();
+			}
+			function hideBusyIndicator() {
+				$('#busy_indicator').hide();
+			}
+		</script>
+	</wicket:head>
+	<wicket:extend>
+		<script type="text/javascript">
+			$(function() {
+				Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
+				Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
+				Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
+				Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
+			});
+		</script>
+		<div id="topControls">
+			<div id="topLinks"><span 
+				id="contactsAndMessages"><a wicket:id="messages"><wicket:ommessage key="1188"/></a></span><span 
+				id="profile"><a wicket:id="profile"><wicket:ommessage key="5"/></a></span><span 
+				id="logout"><a wicket:id="logout"><wicket:ommessage key="310"/></a></span><span 
+				id="reportBug"><a target="_blank" wicket:id="bug"><wicket:ommessage key="284"/></a></span><span><a 
+				wicket:id="about"><wicket:ommessage key="1549"/></a></span>
+				</div>
+			<div wicket:id="dev" id="devMenu"/>
+			<div id="busy_indicator"><wicket:ommessage key="1554"/></div>
+			<div wicket:id="menu"></div>
+		</div>
+		<div wicket:id="contents"><div wicket:id="child"></div></div>
+		<div wicket:id="chatPanel"></div>
+		<div wicket:id="aboutDialog"></div>
+	</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/pages/MainPage.java b/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
new file mode 100644
index 0000000..8b8e990
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/MainPage.java
@@ -0,0 +1,181 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.addOnlineUser;
+import static org.apache.openmeetings.web.app.Application.removeOnlineUser;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
+import org.apache.openmeetings.web.common.MenuPanel;
+import org.apache.openmeetings.web.user.AboutDialog;
+import org.apache.openmeetings.web.user.ChatPanel;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.devutils.debugbar.DebugBar;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.link.ExternalLink;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
+import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
+import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.urlfragment.UrlFragment;
+
+@AuthorizeInstantiation({"Admin", "Dashboard", "Room"})
+public class MainPage extends BaseInitedPage {
+	private static final long serialVersionUID = 6421960759218157999L;
+	private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
+	private final MenuPanel menu;
+	private final MarkupContainer contents;
+	private final AbstractAjaxTimerBehavior areaBehavior;
+	private DebugBar dev = null;
+	
+	public MainPage(PageParameters pp) {
+		super();
+		add(new AjaxClientInfoBehavior());
+		contents = new WebMarkupContainer("contents");
+		add(contents.add(new WebMarkupContainer(CHILD_ID)).setOutputMarkupId(true).setMarkupId("contents"));
+		menu = new MenuPanel("menu");
+		add(menu);
+		add(new AjaxLink<Void>("messages") {
+			private static final long serialVersionUID = 4065339709905366840L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				updateContents(PROFILE_MESSAGES, target);
+			}
+		});
+		add(new ConfirmableAjaxLink("logout", 634L) {
+			private static final long serialVersionUID = -2994610981053570537L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				getSession().invalidate();
+				setResponsePage(Application.get().getSignInPageClass());
+			}
+		});
+		add(new AjaxLink<Void>("profile") {
+			private static final long serialVersionUID = 4065339709905366840L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				updateContents(PROFILE_EDIT, target);
+			}
+		});
+		final AboutDialog about = new AboutDialog("aboutDialog");
+		add(new AjaxLink<Void>("about") {
+			private static final long serialVersionUID = 4065339709905366840L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				about.open(target);
+			}
+		});
+		add(about);
+		if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
+		    add(dev = new DebugBar("dev"));
+		    dev.setOutputMarkupId(true);
+		} else {
+		    add(new EmptyPanel("dev").setVisible(false));
+		}		
+		add(new ExternalLink("bug", "https://issues.apache.org/jira/browse/OPENMEETINGS"));//FIXME hardcoded
+		
+		add(new ChatPanel("chatPanel"));
+		add(new WebSocketBehavior() {
+			private static final long serialVersionUID = -3311970325911992958L;
+
+			@Override
+			protected void onConnect(ConnectedMessage message) {
+				super.onConnect(message);
+				addOnlineUser(getUserId(), WebSession.get().getId());
+				log.debug("WebSocketBehavior::onConnect");
+			}
+			
+			@Override
+			protected void onClose(ClosedMessage message) {
+				super.onClose(message);
+				removeOnlineUser(getUserId(), WebSession.get().getId());
+				log.debug("WebSocketBehavior::onClose");
+			}
+		});
+		//load preselected content
+		add(areaBehavior = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+			private static final long serialVersionUID = -1551197896975384329L;
+
+			@Override
+			protected void onTimer(AjaxRequestTarget target) {
+				OmUrlFragment area = WebSession.get().getArea();
+				updateContents(area == null ? OmUrlFragment.get() : area, target);
+				stop(target);
+				WebSession.get().setArea(null);
+			}
+		});
+	}
+	
+	public void updateContents(OmUrlFragment f, AjaxRequestTarget target) {
+		updateContents(f, target, true);
+	}
+	
+	public void updateContents(OmUrlFragment f, AjaxRequestTarget target, boolean updateFragment) {
+		BasePanel panel = getPanel(f.getArea(), f.getType());
+		if (panel != null) {
+			Component prev = contents.get(CHILD_ID);
+			if (prev != null && prev instanceof BasePanel) {
+				((BasePanel)prev).cleanup(target);
+			}
+			target.add(contents.replace(panel));
+			if (updateFragment) {
+				UrlFragment uf = new UrlFragment(target);
+				uf.set(f.getArea().name(), f.getType());
+			}
+			panel.onMenuPanelLoad(target);
+		}
+		if (dev != null){
+			target.add(dev);
+		}
+	}
+	
+	@Override
+	protected void onParameterArrival(IRequestParameters params, AjaxRequestTarget target) {
+		OmUrlFragment uf = getUrlFragment(params);
+		if (uf != null) {
+			areaBehavior.stop(target);
+			updateContents(uf, target, false);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.html b/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.html
new file mode 100644
index 0000000..3171a21
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<!--
+  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:extend>
+	<!-- FIXME localized versions of this file need to be created -->
+	<div class="message">
+		<b>OpenMeetings - Loading ...</b><br />
+		The server is not yet completely initialized. Please try again in a couple of seconds.<br/>
+		If this message persists for several minutes contact your Sys-Administration.<br/>
+		If that message stays forever you should check the logs located in 
+		<pre>openmeetings_install_dir/log</pre> folder, probably your database user/pwd/host is wrong!
+	</div>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.java b/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.java
new file mode 100644
index 0000000..fe82fd5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/NotInitedPage.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import org.apache.openmeetings.util.InitializationContainer;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.RestartResponseException;
+
+public class NotInitedPage extends BaseNotInitedPage {
+	private static final long serialVersionUID = 5002281516467955607L;
+	
+	public NotInitedPage() {
+		if (InitializationContainer.initComplete) {
+			continueToOriginalDestination();
+			// Ups, no original destination. Go to the home page
+			throw new RestartResponseException(Application.get().getHomePage());
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html b/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
new file mode 100644
index 0000000..2c80d35
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<!--
+  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:extend>
+	<div class="page recording">
+		<div wicket:id="info"></div>
+		<div wicket:id="player"></div>
+	</div>
+</wicket:extend>
+</html>
+
diff --git a/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java b/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
new file mode 100644
index 0000000..ab1d546
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.user.record.VideoInfo;
+import org.apache.openmeetings.web.user.record.VideoPlayer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class RecordingPage extends BaseInitedPage {
+	private static final long serialVersionUID = 1L;
+
+	public RecordingPage(PageParameters p) {
+		String hash = p.get("hash").toString();
+		FlvRecording r = null;
+		if (WebSession.get().signIn(hash)) {
+			Long recId = getRecordingId();
+			if (recId != null) {
+				r = getBean(FlvRecordingDao.class).get(recId);
+			}
+		}
+		add(new VideoInfo("info", r).setVisible(r != null), new VideoPlayer("player", r).setVisible(r != null));
+	}
+
+	@Override
+	protected void onParameterArrival(IRequestParameters requestParameters, AjaxRequestTarget target) {
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/ResetPage.html b/src/web/java/org/apache/openmeetings/web/pages/ResetPage.html
new file mode 100644
index 0000000..4f6d993
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/ResetPage.html
@@ -0,0 +1,25 @@
+<?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:extend>
+		<div wicket:id="resetPassword"></div>
+	</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/ResetPage.java b/src/web/java/org/apache/openmeetings/web/pages/ResetPage.java
new file mode 100644
index 0000000..a341ddb
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/ResetPage.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.pages.auth.ResetPasswordDialog;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class ResetPage extends BaseNotInitedPage {
+	private static final long serialVersionUID = 1L;	
+	private final String RESET_PARAM = "hash";
+	
+	public ResetPage(PageParameters pp){
+		String resetHash = pp.get(RESET_PARAM).toString();
+		if (resetHash != null){
+			Object user = Application.getBean(UserDao.class).getUserByHash(resetHash);
+			if (user instanceof User){
+				add(new ResetPasswordDialog("resetPassword", (User)user));
+			}else {
+				setResponsePage(Application.get().getSignInPageClass());		
+			}
+		} else {
+			setResponsePage(Application.get().getSignInPageClass());		
+		}
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/SwfPage.html b/src/web/java/org/apache/openmeetings/web/pages/SwfPage.html
new file mode 100644
index 0000000..481a297
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/SwfPage.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<!--
+  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>
+	<meta http-equiv="cache-control" content="no-cache">
+	
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<style type="text/css">
+		html,body { /* http://www.quirksmode.org/css/100percheight.html */
+			height: 100%;
+			/* prevent scrollbars */
+			margin: 0;
+			padding: 0;
+			border: 0 none;
+			overflow: hidden;
+		}
+		body {
+			background-color: #ffffff;
+		}
+		img {
+			border: 0 none;
+		}
+	</style>
+</wicket:head>
+<wicket:extend>
+<!-- <body style="width: 100%; height: 100%;"> -->
+	<div wicket:id="room" style="width: 100%; height: 100%;"></div>
+<!--  </body> -->
+</wicket:extend>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/pages/SwfPage.java b/src/web/java/org/apache/openmeetings/web/pages/SwfPage.java
new file mode 100644
index 0000000..1982008
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/SwfPage.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.user.rooms.RoomPanel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class SwfPage extends BaseNotInitedPage {
+	private static final long serialVersionUID = 1L;
+
+	public SwfPage() {
+		this(new PageParameters());
+	}
+
+	public SwfPage(PageParameters pp) {
+		add(new RoomPanel("room", pp));
+	}
+
+	@Override
+	protected String getApplicationName() {
+		return getBean(ConfigurationDao.class).getAppName();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html b/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html
new file mode 100644
index 0000000..9a82426
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html
@@ -0,0 +1,45 @@
+<?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="form">
+		<table>
+			<tr wicket:id="type">
+				<td>
+					<label wicket:for="email"><wicket:ommessage key="313" /></label>&nbsp;<input
+						type="radio" wicket:id="email" />
+				</td>
+				<td>
+					<label wicket:for="login"><wicket:ommessage key="314" /></label>&nbsp;<input
+						type="radio" wicket:id="login" />
+				</td>
+			</tr>
+			<tr>
+				<td><span wicket:id="label"></span></td>
+				<td><input wicket:id="name" type="text" /></td>
+			</tr>
+		</table>
+		<span wicket:id="feedback"></span>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+	<div wicket:id="confirmDialog"></div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java b/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
new file mode 100644
index 0000000..7f1d88f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -0,0 +1,254 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.mail.template.ResetPasswordTemplate;
+import org.apache.openmeetings.web.pages.ResetPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.Radio;
+import org.apache.wicket.markup.html.form.RadioGroup;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+public class ForgetPasswordDialog extends AbstractFormDialog<String> {
+	private static final Logger log = Red5LoggerFactory.getLogger(ForgetPasswordDialog.class, webAppRootKey);
+	private static final long serialVersionUID = 1L;
+	private String sendLbl = WebSession.getString(317);
+	private DialogButton send = new DialogButton(sendLbl);
+	private DialogButton cancel = new DialogButton(WebSession.getString(122));
+	private FeedbackPanel feedback = new FeedbackPanel("feedback");
+	private RequiredTextField<String> nameField;
+	private Form<String> form;
+	private SignInDialog s;
+	private String name;
+	private Type type = Type.email;
+    final MessageDialog confirmDialog;
+	
+	enum Type {
+		email
+		, login
+	}
+	
+	public ForgetPasswordDialog(String id) {
+		super(id, WebSession.getString(312));
+		add(form = new Form<String>("form") {
+			private static final long serialVersionUID = 1L;
+			private IModel<String> lblModel = Model.of(WebSession.getString(315));
+			private Label label = new Label("label", lblModel);
+			
+			{
+				add(feedback.setOutputMarkupId(true));
+				add(label.setOutputMarkupId(true));
+				add(nameField = new RequiredTextField<String>("name", new PropertyModel<String>(ForgetPasswordDialog.this, "name")));
+				nameField.setLabel(Model.of(WebSession.getString(type == Type.email ? 315 : 316)));
+				RadioGroup<Type> rg = new RadioGroup<Type>("type", new PropertyModel<Type>(ForgetPasswordDialog.this, "type"));
+				add(rg.add(new Radio<Type>("email", Model.of(Type.email)).setOutputMarkupId(true))
+						.add(new Radio<Type>("login", Model.of(Type.login)).setOutputMarkupId(true))
+						.setOutputMarkupId(true));
+				rg.add(new AjaxFormChoiceComponentUpdatingBehavior() {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onUpdate(AjaxRequestTarget target) {
+						lblModel.setObject(WebSession.getString(type == Type.email ? 315 : 316));
+						nameField.setLabel(Model.of(WebSession.getString(type == Type.email ? 315 : 316)));
+						target.add(label);
+					}
+				});
+				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+						ForgetPasswordDialog.this.onSubmit(target);
+					}
+					
+					@Override
+					protected void onError(AjaxRequestTarget target, Form<?> form) {
+						ForgetPasswordDialog.this.onError(target);
+					}
+				});
+			}
+			
+			@Override
+			protected void onValidate() {
+				UserDao dao = getBean(UserDao.class);
+				String n = nameField.getConvertedInput();
+				if (n != null) {
+					if (type == Type.email && null == dao.getUserByEmail(n)) {
+						error(WebSession.getString(318));
+					}
+					if (type == Type.login && null == dao.getByName(n, User.Type.user)) {
+						error(WebSession.getString(320));
+					}
+				}
+			}
+			
+			@Override
+			protected void onDetach() {
+				lblModel.detach();
+				super.onDetach();
+			}
+		});
+		confirmDialog = new MessageDialog("confirmDialog", WebSession.getString(312), WebSession.getString(321), DialogButtons.OK, DialogIcon.INFO){
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onConfigure(JQueryBehavior behavior) {
+				super.onConfigure(behavior);
+		        behavior.setOption("dialogClass", Options.asString("no-close"));
+				behavior.setOption("closeOnEscape", false);
+			}
+			
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				s.open(target);
+			}
+		};
+		add(confirmDialog);
+	}
+
+	@Override
+	public boolean isDefaultCloseEventEnabled()	{
+		return true;
+	}
+	
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (send.equals(button)){
+			confirmDialog.open(target);
+		} else {
+			s.open(target);
+		}
+	}
+
+	public void setSignInDialog(SignInDialog s) {
+		this.s = s;
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(send, cancel);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return send;
+	}
+
+	@Override
+	public Form<?> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		resetUser(type == Type.email ? name : "", type == Type.login ? name : ""
+			, getBean(ConfigurationDao.class).getBaseUrl() + getRequestCycle().urlFor(ResetPage.class, new PageParameters()).toString().substring(2));
+	}
+
+	/**
+	 * reset a username by a given mail oder login by sending a mail to the
+	 * registered EMail-Address
+	 * 
+	 * @param email
+	 * @param username
+	 * @param appLink
+	 * @return
+	 */
+	private Long resetUser(String email, String username, String appLink) {
+		try {
+			UserDao userDao = getBean(UserDao.class);
+			log.debug("resetUser " + email);
+
+			// check if Mail given
+			if (email.length() > 0) {
+				// log.debug("getAdresses_id "+addr_e.getAdresses_id());
+				User us = userDao.getUserByEmail(email);
+				if (us != null) {
+					sendHashByUser(us, appLink, userDao);
+					return new Long(-4);
+				} else {
+					return new Long(-9);
+				}
+			} else if (username.length() > 0) {
+				User us = userDao.getByName(username, User.Type.user);
+				if (us != null) {
+					sendHashByUser(us, appLink, userDao);
+					return new Long(-4);
+				} else {
+					return new Long(-3);
+				}
+			}
+		} catch (Exception e) {
+			log.error("[resetUser]", e);
+			return new Long(-1);
+		}
+		return new Long(-2);
+	}
+
+	private void sendHashByUser(User us, String appLink, UserDao userDao) throws Exception {
+		String loginData = us.getLogin() + new Date();
+		log.debug("User: " + us.getLogin());
+		us.setResethash(ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(loginData));
+		userDao.update(us, -1L);
+		String reset_link = appLink + "?hash=" + us.getResethash();
+
+		String email = us.getAdresses().getEmail();
+
+		String template = ResetPasswordTemplate.getEmail(reset_link);
+
+		getBean(MailHandler.class).send(email, WebSession.getString(517), template);
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.html b/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.html
new file mode 100644
index 0000000..d605e4b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.html
@@ -0,0 +1,67 @@
+<?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="form">
+		<table>
+			<tr>
+				<td class="desc"><wicket:ommessage key="117" /></td>
+				<td><input wicket:id="firstName" type="text" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="118" /></td>
+				<td><input wicket:id="lastName" type="text" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="114" /></td>
+				<td><input wicket:id="login" type="text" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="115" /></td>
+				<td><input wicket:id="password" type="password" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="116" /></td>
+				<td><input wicket:id="confirmPassword" type="password" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="119" /></td>
+				<td><input wicket:id="email" type="text" value="" /></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="1143" /></td>
+				<td><select wicket:id="tz"></select></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="120" /></td>
+				<td><select wicket:id="state"></select></td>
+			</tr>
+			<tr>
+				<td class="desc"><wicket:ommessage key="111" /></td>
+				<td><select wicket:id="lang"></select></td>
+			</tr>
+		</table>
+		<span wicket:id="feedback"></span>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+	<div wicket:id="confirmRegistration"></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java b/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
new file mode 100644
index 0000000..917b700
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
@@ -0,0 +1,292 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.FieldLanguageDao;
+import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.StateDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.label.FieldLanguage;
+import org.apache.openmeetings.db.entity.user.State;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+public class RegisterDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 1L;
+	private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
+	private DialogButton cancelBtn = new DialogButton(WebSession.getString(122));
+	private String registerLbl = WebSession.getString(121);
+	private DialogButton registerBtn = new DialogButton(registerLbl);
+	private FeedbackPanel feedback = new FeedbackPanel("feedback");
+	private final IModel<String> tzModel = Model.of(WebSession.get().getClientTZCode());
+	private final DropDownChoice<String> tzDropDown = new DropDownChoice<String>("tz", tzModel, AVAILABLE_TIMEZONES);
+	private RegisterForm form;
+	private SignInDialog s;
+	private String firstName;
+	private String lastName;
+	private String login;
+	private String password;
+	private String email;
+	private State state;
+	private FieldLanguage lang;
+
+	final MessageDialog confirmRegistration;
+	private boolean sendConfirmation = false;
+	private boolean sendEmailAtRegister = false;
+
+	public RegisterDialog(String id) {
+		super(id, WebSession.getString(113));
+		add(form = new RegisterForm("form"));
+		form.setOutputMarkupId(true);
+		tzDropDown.setOutputMarkupId(true);
+
+		confirmRegistration = new MessageDialog("confirmRegistration", WebSession.getString(235),
+				WebSession.getString(674), DialogButtons.OK, DialogIcon.INFO) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onConfigure(JQueryBehavior behavior) {
+				super.onConfigure(behavior);
+				behavior.setOption("dialogClass", Options.asString("no-close"));
+				behavior.setOption("closeOnEscape", false);
+			}
+
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				s.open(target);
+			}
+		};
+		add(confirmRegistration);
+		reset();
+	}
+
+	@Override
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+		behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("closeOnEscape", false);
+	}
+
+	public void setSignInDialog(SignInDialog s) {
+		this.s = s;
+	}
+
+	public void setClientTimeZone() {
+		tzModel.setObject(WebSession.get().getClientTZCode());
+	}
+	
+	@Override
+	public int getWidth() {
+		return 400;
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(registerBtn, cancelBtn);
+	}
+
+	public void reset() {
+		firstName = null;
+		lastName = null;
+		login = null;
+		password = null;
+		form.confirmPassword.setModelObject(null);
+		email = null;
+		lang = WebSession.get().getLanguageByBrowserLocale();
+		state = WebSession.get().getCountryByBrowserLocale();
+	}
+
+	public void onOpen(AjaxRequestTarget target) {
+		String baseURL = getBean(ConfigurationDao.class).getBaseUrl();
+		sendEmailAtRegister = 1 == getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", Integer.class, "0");
+		sendConfirmation = baseURL != null
+				&& !baseURL.isEmpty()
+				&& 1 == getBean(ConfigurationDao.class)
+						.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
+		long messageCode = 236;
+		if (sendConfirmation && sendEmailAtRegister) {
+			messageCode = 674;
+		} else if (sendConfirmation) {
+			messageCode = 1591;
+		}
+		confirmRegistration.setModelObject(WebSession.getString(messageCode));
+		reset();
+		target.add(form);
+	}
+
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (registerBtn.equals(button)) {
+			confirmRegistration.open(target);
+		} else {
+			s.open(target);
+		}
+	}
+
+	@Override
+	protected DialogButton getSubmitButton() {
+		return registerBtn;
+	}
+
+	@Override
+	public Form<Void> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		String hash = ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(
+				login + CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
+
+		try {
+			getBean(IUserManager.class).registerUserInit(UserDao.getDefaultRights(), login, password, lastName
+					, firstName, email, null /* age/birthday */, "" /* street */
+					, "" /* additionalname */, "" /* fax */, "" /* zip */, state.getState_id()
+					, "" /* town */, lang.getLanguage_id(), true /* sendWelcomeMessage */
+					, Arrays.asList(getBean(ConfigurationDao.class).getConfValue("default_domain_id", Long.class, null)),
+					"" /* phone */, false, sendConfirmation, TimeZone.getTimeZone(tzModel.getObject()),
+					false /* forceTimeZoneCheck */, "" /* userOffers */, "" /* userSearchs */, false /* showContactData */,
+					true /* showContactDataToContacts */, hash);
+
+		} catch (Exception e) {
+			log.error("[registerUser]", e);
+		}
+
+	}
+
+	@Override
+	protected void onDetach() {
+		tzModel.detach();
+		super.onDetach();
+	}
+	
+	class RegisterForm extends StatelessForm<Void> {
+		private static final long serialVersionUID = 1L;
+		private PasswordTextField confirmPassword;
+		private PasswordTextField passwordField;
+		private RequiredTextField<String> emailField;
+		private RequiredTextField<String> loginField;
+		private RequiredTextField<String> firstNameField;
+		private RequiredTextField<String> lastNameField;
+		private DropDownChoice<FieldLanguage> langField;
+		private DropDownChoice<State> stateField;
+
+		public RegisterForm(String id) {
+			super(id);
+			add(feedback.setOutputMarkupId(true));
+			ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+			add(firstNameField = new RequiredTextField<String>("firstName", new PropertyModel<String>(
+					RegisterDialog.this, "firstName")));
+			firstNameField.setLabel(Model.of(WebSession.getString(117)));
+			add(lastNameField = new RequiredTextField<String>("lastName", new PropertyModel<String>(
+					RegisterDialog.this, "lastName")));
+			lastNameField.setLabel(Model.of(WebSession.getString(118)));
+			add(loginField = new RequiredTextField<String>("login", new PropertyModel<String>(RegisterDialog.this,
+					"login")));
+			loginField.setLabel(Model.of(WebSession.getString(114)));
+			loginField.add(minimumLength(getMinLoginLength(cfgDao)));
+			add(passwordField = new PasswordTextField("password", new PropertyModel<String>(RegisterDialog.this,
+					"password")));
+			passwordField.setLabel(Model.of(WebSession.getString(115)));
+			passwordField.setResetPassword(true).add(minimumLength(getMinPasswdLength(cfgDao)));
+			add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()).setResetPassword(true));
+			confirmPassword.setLabel(Model.of(WebSession.getString(116)));
+			add(emailField = new RequiredTextField<String>("email", new PropertyModel<String>(RegisterDialog.this,
+					"email")));
+			emailField.setLabel(Model.of(WebSession.getString(119)));
+			emailField.add(RfcCompliantEmailAddressValidator.getInstance());
+			add(langField = new DropDownChoice<FieldLanguage>("lang", new PropertyModel<FieldLanguage>(
+					RegisterDialog.this, "lang"), getBean(FieldLanguageDao.class).getLanguages(),
+					new ChoiceRenderer<FieldLanguage>("name", "language_id")));
+			langField.setRequired(true).setLabel(Model.of(WebSession.getString(111)));
+			add(tzDropDown.setRequired(true).setLabel(Model.of(WebSession.getString(1143))));
+			add(stateField = new DropDownChoice<State>("state", new PropertyModel<State>(RegisterDialog.this, "state"),
+					getBean(StateDao.class).getStates(), new ChoiceRenderer<State>("name", "state_id")));
+			stateField.setRequired(true).setLabel(Model.of(WebSession.getString(120)));
+			add(new AjaxButton("submit") { // FAKE button so "submit-on-enter" works as expected
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+					RegisterDialog.this.onSubmit(target);
+				}
+
+				@Override
+				protected void onError(AjaxRequestTarget target, Form<?> form) {
+					RegisterDialog.this.onError(target);
+				}
+			});
+		}
+
+		@Override
+		protected void onValidate() {
+			if (passwordField.getConvertedInput() == null
+					|| !passwordField.getConvertedInput().equals(confirmPassword.getConvertedInput())) {
+				error(WebSession.getString(232));
+			}
+			if (!getBean(UserDao.class).checkUserEMail(emailField.getConvertedInput(), null)) {
+				error(WebSession.getString(1000));
+			}
+			if (!getBean(UserDao.class).checkUserLogin(loginField.getConvertedInput(), null)) {
+				error(WebSession.getString(105));
+			}
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html b/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
new file mode 100644
index 0000000..90b7868
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.html
@@ -0,0 +1,43 @@
+<?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="form">
+		<table>
+			<tr>
+				<td><label wicket:for="login"><wicket:ommessage key="314" /></label></td>
+				<td><input type="text" readonly wicket:id="login" /></td>
+			</tr>
+			<tr>
+				<td><label><wicket:ommessage key="328" /></label></td>
+				<td><input type="password" wicket:id="password" /></td>
+			</tr>
+			<tr>
+				<td><label><wicket:ommessage key="329" /></label></td>
+				<td><input type="password" wicket:id="confirmPassword" /></td>
+			</tr>
+		</table>
+		<span wicket:id="feedback"></span>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+	<div wicket:id="confirmReset"></div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java b/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
new file mode 100644
index 0000000..efd698c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.head.CssContentHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+public class ResetPasswordDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = -523469331995677748L;
+	private String resetLbl = WebSession.getString(327);
+	private DialogButton resetBtn = new DialogButton(resetLbl);
+	private Form<String> form;
+	private FeedbackPanel feedback = new FeedbackPanel("feedback");
+	private PasswordTextField password;
+	private final User user;
+    final MessageDialog confirmReset;
+
+	public ResetPasswordDialog(String id, final User user) {
+		super(id, WebSession.getString(325));
+		this.user = user;
+		add(form = new Form<String>("form"){
+			private static final long serialVersionUID = -4553809631029292229L;
+			private TextField<String> login;
+			private PasswordTextField confirmPassword;
+			{
+				add(feedback.setOutputMarkupId(true));
+				add(login = new TextField<String>("login", Model.of(user.getLogin())));
+				login.setOutputMarkupId(true);
+				add(password = new PasswordTextField("password", new Model<String>()));
+				password.setOutputMarkupId(true);
+				password.setLabel(Model.of(WebSession.getString(328)));
+				ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+				password.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
+				add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()));
+				confirmPassword.setOutputMarkupId(true);
+				confirmPassword.setLabel(Model.of(WebSession.getString(329)));
+				confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao)));
+
+				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+					private static final long serialVersionUID = 5257502637636428620L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+						ResetPasswordDialog.this.onSubmit(target);
+					}
+					
+					@Override
+					protected void onError(AjaxRequestTarget target, Form<?> form) {
+						ResetPasswordDialog.this.onError(target);
+					}
+				});
+			}
+
+			@Override
+			protected void onValidate() {
+				String pass = password.getConvertedInput();
+				if (pass != null && !pass.isEmpty() && !pass.equals(confirmPassword.getConvertedInput())) {
+					error(WebSession.getString(232));
+				}
+				super.onValidate();
+			}
+			
+		});
+		confirmReset = new MessageDialog("confirmReset", WebSession.getString(325), WebSession.getString(332), DialogButtons.OK, DialogIcon.INFO){
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onConfigure(JQueryBehavior behavior) {
+				super.onConfigure(behavior);
+		        behavior.setOption("dialogClass", Options.asString("no-close"));
+				behavior.setOption("closeOnEscape", false);
+			}
+			
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				setResponsePage(Application.get().getSignInPageClass());
+			}
+		};
+		add(confirmReset);
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new CssContentHeaderItem(".no-close .ui-dialog-titlebar-close { display: none; }", "dialog-noclose", ""));
+	}
+	
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+        behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("closeOnEscape", false);
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(resetBtn);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return resetBtn;
+	}
+
+	@Override
+	public Form<?> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		try {
+			getBean(UserDao.class).update(user, password.getConvertedInput(), user.getUser_id());
+		} catch (Exception e) {
+			error(e.getMessage());
+		}
+	}
+	
+	@Override
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (resetBtn.equals(button)){
+			confirmReset.open(target);
+		} else {
+			setResponsePage(Application.get().getSignInPageClass());
+		}
+	}
+	
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") {
+			private static final long serialVersionUID = -8870674570404919597L;
+
+			@Override
+            protected String $()
+            {
+                return this.$(Options.asString("open"));
+            }
+        });
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html
new file mode 100644
index 0000000..6767355
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html
@@ -0,0 +1,65 @@
+<?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>
+	<script type="text/javascript" src="js/openmeetings_functions.js"></script>
+</wicket:head>
+<wicket:panel>
+	<form wicket:id="signin">
+		<table>
+			<tr>
+				<td>
+					<table>
+						<tr>
+							<td class="desc"><wicket:ommessage key="109" /></td>
+							<td><input wicket:id="login" type="text" value="" /></td>
+						</tr>
+						<tr>
+							<td class="desc"><wicket:ommessage key="110" /></td>
+							<td><input wicket:id="pass" type="password" value="" /></td>
+						</tr>
+						<tr wicket:id="ldap">
+							<td class="desc"><wicket:ommessage key="1372" /></td>
+							<td><select wicket:id="domain"></select></td>
+						</tr>
+						<tr>
+							<td></td>
+							<td style="white-space: nowrap;"><input wicket:id="rememberMe" 
+								type="checkbox" /><label wicket:for="rememberMe"><wicket:ommessage key="288" /></label></td>
+						</tr>
+						<tr>
+							<td><a wicket:id="forget"><wicket:ommessage key="311"/></a></td>
+							<td><a wicket:id="netTest" target="_blank"><wicket:ommessage key="1527"/></a></td>
+						</tr>
+					</table>
+				</td>
+				<td wicket:id="oauthContainer" style="border-left: 2px dotted;">
+					<div wicket:id="oauthList">
+						<button wicket:id="oauthBtn"><img wicket:id="icon" width="16" height="16"/><span wicket:id="label"></span></button>
+					</div>
+				</td>
+			</tr>
+		</table>
+		<span wicket:id="feedback" class="error"></span>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
new file mode 100644
index 0000000..55ba47b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -0,0 +1,310 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID;
+import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.pages.auth.SignInPage.allowOAuthLogin;
+import static org.apache.openmeetings.web.pages.auth.SignInPage.allowRegister;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.entity.basic.ErrorValue;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.RuntimeConfigurationType;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.Strings;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.effect.JQueryEffectBehavior;
+import com.googlecode.wicket.jquery.ui.form.button.Button;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class SignInDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 1L;
+	private Form<String> form;
+	private DialogButton loginBtn = new DialogButton(WebSession.getString(112));
+	private String registerLbl = WebSession.getString(123);
+	private DialogButton registerBtn = new DialogButton(registerLbl);
+    private String password;
+    private String login;
+    private boolean rememberMe = false;
+    private RegisterDialog r;
+    private ForgetPasswordDialog f;
+    private LdapConfig domain;
+    private FeedbackPanel feedback = new FeedbackPanel("feedback");
+    
+	public SignInDialog(String id) {
+		super(id, WebSession.getString(108));
+		add(form = new SignInForm("signin"));
+		add(new AjaxClientInfoBehavior());
+	}
+
+	public void setRegisterDialog(RegisterDialog r) {
+		this.r = r;
+	}
+
+	public void setForgetPasswordDialog(ForgetPasswordDialog f) {
+		this.f = f;
+	}
+	
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+            protected String $()
+            {
+                return this.$(Options.asString("open"));
+            }
+        });
+	}
+	
+	@Override
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+		//behavior.setOption("autoOpen", true); //TODO need to be updated as soon as API will be added
+		behavior.setOption("closeOnEscape", false);
+        behavior.setOption("dialogClass", Options.asString("no-close"));
+        behavior.setOption("resizable", false);
+	}
+	
+	@Override
+	public boolean isDefaultCloseEventEnabled() {
+		return false;
+	}
+	
+	@Override
+	public int getWidth() {
+		return allowOAuthLogin()? 550: 450;
+	}
+	
+	@Override
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (registerBtn.equals(button)) {
+			r.setClientTimeZone();
+			r.open(target);
+		}
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		List<DialogButton> list = new ArrayList<DialogButton>();
+		if (allowRegister()) {
+			list.add(registerBtn);
+		}
+		list.add(loginBtn);
+		return list;
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return loginBtn;
+	}
+
+	@Override
+	public Form<String> getForm() {
+		return form;
+	}
+	// TODO Auto-generated method stub
+	
+	private void shake(AjaxRequestTarget target) {
+		JQueryEffectBehavior shake = new JQueryEffectBehavior("#" + getMarkupId(), "shake");
+		target.appendJavaScript(shake.toString());
+	}
+	
+	@Override
+	public void onClick(AjaxRequestTarget target, DialogButton button) {
+		if (registerBtn.equals(button) || WebSession.get().isSignedIn()) {
+			super.onClick(target, button);
+		}
+	}
+	
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		shake(target);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		if (domain.getAddDomainToUserName()) {
+			login = login + "@" + domain.getDomain();
+		}
+		OmAuthenticationStrategy strategy = getAuthenticationStrategy();
+		WebSession ws = WebSession.get();
+		Type type = domain.getLdapConfigId() > 0 ? Type.ldap : Type.user;
+		if (ws.signIn(login, password, type, domain.getLdapConfigId())) {
+ 			setResponsePage(Application.get().getHomePage());
+			if (rememberMe) {
+				strategy.save(login, password, type, domain.getLdapConfigId());
+			} else {
+				strategy.remove();
+			}
+		} else {
+			strategy.remove();
+			if (ws.getLoginError() != null) {
+				ErrorValue eValue = getBean(ErrorDao.class).get(-1 * ws.getLoginError());
+				if (eValue != null) {
+					error(WebSession.getString(eValue.getFieldvalues_id()));
+					target.add(feedback);
+				}
+			}
+			shake(target);
+		}
+	}
+	
+	class SignInForm extends StatelessForm<String> {
+		private static final long serialVersionUID = 1L;
+		private PasswordTextField passField;
+		private RequiredTextField<String> loginField;
+
+		public SignInForm(String id) {
+			super(id);
+			
+			if (WebSession.get().isSignedIn()) {
+				alreadyLoggedIn();
+			}
+			add(feedback.setOutputMarkupId(true));
+			add(loginField = new RequiredTextField<String>("login", new PropertyModel<String>(SignInDialog.this, "login")));
+			loginField.setLabel(Model.of(WebSession.getString(114)));
+			add(passField = new PasswordTextField("pass", new PropertyModel<String>(SignInDialog.this, "password")).setResetPassword(true));
+			passField.setLabel(Model.of(WebSession.getString(115)));
+			List<LdapConfig> ldaps = getBean(LdapConfigDao.class).get();
+			int selectedLdap = getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAULT_LDAP_ID, Integer.class, "0");
+			domain = ldaps.get(selectedLdap < ldaps.size() && selectedLdap > 0 ? selectedLdap : 0);
+			add(new WebMarkupContainer("ldap")
+				.add(new DropDownChoice<LdapConfig>("domain", new PropertyModel<LdapConfig>(SignInDialog.this, "domain")
+						, ldaps, new ChoiceRenderer<LdapConfig>("name", "ldapConfigId"))).setVisible(ldaps.size() > 1));
+			add(new CheckBox("rememberMe", new PropertyModel<Boolean>(SignInDialog.this, "rememberMe")).setOutputMarkupId(true));
+			add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+					SignInDialog.this.onSubmit(target);
+				}
+				
+				@Override
+				protected void onError(AjaxRequestTarget target, Form<?> form) {
+					SignInDialog.this.onError(target);
+				}
+			});
+			add(new AjaxLink<Void>("forget") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public void onClick(AjaxRequestTarget target) {
+					SignInDialog.this.close(target, null);
+					f.open(target);
+				}
+			});
+			add(new Link<Void>("netTest") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public void onClick() {
+					PageParameters pp = new PageParameters();
+					pp.add("swf", RuntimeConfigurationType.DEVELOPMENT == getApplication().getConfigurationType()
+							? "networktestingdebug.swf10.swf" : "networktesting.swf10.swf");
+					setResponsePage(SwfPage.class, pp);
+				}
+			});
+			add(new WebMarkupContainer("oauthContainer").add(
+				new ListView<OAuthServer>("oauthList", getBean(OAuth2Dao.class).getActive()) {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void populateItem(final ListItem<OAuthServer> item) {
+						Button btn = new Button("oauthBtn");
+						Image icon = new Image("icon", new Model<String>());
+						icon.setVisible(!Strings.isEmpty(item.getModelObject().getIconUrl()));
+						icon.add(new AttributeModifier("src", new AbstractReadOnlyModel<String>() {
+							private static final long serialVersionUID = 1L;
+
+							@Override
+							public String getObject() {
+								return item.getModelObject().getIconUrl();
+							}
+							
+						}));
+						btn.add(icon);
+						btn.add(new Label("label", item.getModelObject().getName()))
+							.add(new AjaxEventBehavior("click") {
+								private static final long serialVersionUID = 1L;
+								
+								@Override
+								protected void onEvent(AjaxRequestTarget target) {
+									PageParameters parameters = new PageParameters();
+									parameters.add("oauthid", item.getModelObject().getId());
+									setResponsePage(SignInPage.class, parameters);
+								}
+							});
+						item.add(btn);
+					}
+				}).setVisible(allowOAuthLogin()));
+		}
+
+		private void alreadyLoggedIn() {
+			// logon successful. Continue to the original destination
+			continueToOriginalDestination();
+			// Ups, no original destination. Go to the home page
+			throw new RestartResponseException(Application.get().getHomePage());
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.html b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.html
new file mode 100644
index 0000000..19df94b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.html
@@ -0,0 +1,42 @@
+<?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>
+		<style>
+			input:not([type='checkbox']):not([type='radio']), select {
+				width: 170px;
+			}
+			td.desc {
+				width: 200px;
+			}
+		</style>
+	</wicket:head>
+	<wicket:extend>
+		<script type="text/javascript">
+			$(function(){
+				$('#area').val(location.hash);
+			});
+		</script>
+		<div wicket:id="signin"></div>
+		<div wicket:id="register"></div>
+		<div wicket:id="forget"></div>
+	</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
new file mode 100644
index 0000000..47414e3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -0,0 +1,389 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.IUserManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.BaseInitedPage;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONObject;
+import org.apache.wicket.markup.head.CssContentHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.flow.RedirectToUrlException;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class SignInPage extends BaseInitedPage {
+	private static final long serialVersionUID = 1L;
+	private static final Logger log = Red5LoggerFactory.getLogger(SignInPage.class, webAppRootKey);
+	private SignInDialog d;
+	
+	static boolean allowRegister() {
+		return "1".equals(getBean(ConfigurationDao.class).getConfValue(CONFIG_FRONTEND_REGISTER_KEY, String.class, "0"));
+	}
+	
+	static boolean allowOAuthLogin() {
+		return getBean(OAuth2Dao.class).getActive().size() > 0;
+	}
+	
+	public SignInPage(PageParameters p) {
+		super();
+		StringValue oauthid = p.get("oauthid");
+		if (!oauthid.isEmpty()) { // oauth2 login
+			try {
+				long serverId = oauthid.toLong(-1);
+				OAuthServer server = getBean(OAuth2Dao.class).get(serverId);
+				log.debug("OAuthServer=" + server);
+				if (server == null) {
+					log.warn("OAuth server id=" + serverId + " not found");
+					return;
+				}
+				
+				if (p.get("code").toString() != null) { // got code
+					String code = p.get("code").toString();
+					log.debug("OAuth response code=" + code);
+				 	AuthInfo authInfo = getToken(code, server);
+				 	if (authInfo == null) return;
+				 	log.debug("OAuthInfo=" + authInfo);
+				 	Map<String, String> authParams = getAuthParams(authInfo.accessToken, code, server);
+				 	if (authParams != null) {
+				 		loginViaOAuth2(authParams, serverId);
+				 	}
+				} else { // redirect to get code
+					String redirectUrl = prepareUrlParams(server.getRequestKeyUrl(), server.getClientId(), 
+							null, null, getRedirectUri(server, this), null);
+					log.debug("redirectUrl=" + redirectUrl);
+					throw new RedirectToUrlException(redirectUrl);
+				}
+			} catch (IOException e) {
+				log.error("OAuth2 login error", e);
+			} catch (NoSuchAlgorithmException e) {
+				log.error("OAuth2 login error", e);
+			}
+		}
+		
+		RegisterDialog r = new RegisterDialog("register");
+		ForgetPasswordDialog f = new ForgetPasswordDialog("forget");
+		d = new SignInDialog("signin");
+		d.setRegisterDialog(r);
+		d.setForgetPasswordDialog(f);
+		r.setSignInDialog(d);
+		f.setSignInDialog(d);
+		add(d, r.setVisible(allowRegister()), f);
+	}
+	
+	public SignInPage() {
+		this(new PageParameters());
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		//TODO need to be removed if autoOen will be enabled
+		response.render(OnDomReadyHeaderItem.forScript("$('#" + d.getMarkupId() + "').dialog('open');"));
+		response.render(new CssContentHeaderItem(".no-close .ui-dialog-titlebar-close { display: none; }", "dialog-noclose", ""));
+	}
+	
+	@Override
+	protected void onParameterArrival(IRequestParameters params, AjaxRequestTarget arg1) {
+		WebSession.get().setArea(getUrlFragment(params));
+	}
+	
+	// ============= OAuth2 methods =============
+		
+	public String prepareUrlParams(String urlTemplate, String clientId, String clientSecret, 
+			String clientToken, String redirectUri, String code) throws UnsupportedEncodingException {
+		String result = urlTemplate;
+		if (clientId != null) {
+			result = result.replace("{$client_id}", clientId);
+		}
+		if (clientSecret != null) {
+			result = result.replace("{$client_secret}", clientSecret);
+		}
+		if (clientToken != null) {
+			result = result.replace("{$access_token}", clientToken);
+		}
+		if (redirectUri != null) {
+			result = result.replace("{$redirect_uri}", URLEncoder.encode(redirectUri, "UTF-8"));
+		}
+		if (code != null) {
+			result = result.replace("{$code}", code);
+		}
+		return result;
+	}
+		
+	public static String getRedirectUri(OAuthServer server, Component component) {
+		String result = "";
+		try {
+			String base = getBean(ConfigurationDao.class).getBaseUrl();
+			URI uri = new URI(base + component.urlFor(SignInPage.class, new PageParameters().add("oauthid", server.getId())));
+			result = uri.normalize().toString();
+		} catch (URISyntaxException e) {
+			log.error("Unexpected error while getting redirect URL", e);
+		}
+		return result;
+	}
+		
+	private void prepareConnection(URLConnection connection) {
+		if (!(connection instanceof HttpsURLConnection)) return;
+		ConfigurationDao configurationDao = getBean(ConfigurationDao.class);
+		Boolean ignoreBadSSL = configurationDao.getConfValue(CONFIG_IGNORE_BAD_SSL, String.class, "no").equals("yes");
+		if (!ignoreBadSSL) return;
+		TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
+			public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
+			public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
+
+			public X509Certificate[] getAcceptedIssuers() {
+				return null;
+			}
+				
+	    } };
+		try {
+			SSLContext sslContext = SSLContext.getInstance("SSL");
+			sslContext.init( null, trustAllCerts, new java.security.SecureRandom() );
+		    SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+			((HttpsURLConnection) connection).setSSLSocketFactory(sslSocketFactory);
+			((HttpsURLConnection) connection).setHostnameVerifier(new HostnameVerifier() {
+					
+				public boolean verify(String arg0, SSLSession arg1) {
+					return true;
+				}
+					
+			});
+		} catch (Exception e) {
+			log.error("[prepareConnection]", e);
+		}
+	}
+		
+	private AuthInfo getToken(String code, OAuthServer server) throws IOException {
+		String requestTokenBaseUrl = server.getRequestTokenUrl();
+		// build url params to request auth token
+		String requestTokenParams = server.getRequestTokenAttributes();
+		requestTokenParams = prepareUrlParams(requestTokenParams, server.getClientId(), server.getClientSecret(), 
+				null, getRedirectUri(server, this), code);
+		// request auth token
+		HttpURLConnection urlConnection = (HttpURLConnection) new URL(requestTokenBaseUrl).openConnection();
+		prepareConnection(urlConnection);
+		urlConnection.setRequestMethod("POST");
+		urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+		urlConnection.setRequestProperty("charset", "utf-8");
+		urlConnection.setRequestProperty("Content-Length", String.valueOf(requestTokenParams.length()));
+		urlConnection.setDoInput(true);
+		urlConnection.setDoOutput(true);
+		urlConnection.setUseCaches(false);
+		DataOutputStream paramsOutputStream = new DataOutputStream(urlConnection.getOutputStream());
+		paramsOutputStream.writeBytes(requestTokenParams);
+		paramsOutputStream.flush();
+		String sourceResponse = IOUtils.toString(urlConnection.getInputStream(), "utf-8");
+		// parse json result
+		AuthInfo result = new AuthInfo();
+		try {
+			JSONObject jsonResult = new JSONObject(sourceResponse.toString());
+			if (jsonResult.has("access_token")) {
+				result.accessToken = jsonResult.getString("access_token");
+			}
+			if (jsonResult.has("refresh_token")) {
+				result.refreshToken = jsonResult.getString("refresh_token");
+			}
+			if (jsonResult.has("token_type")) {
+				result.tokenType = jsonResult.getString("token_type");
+			}
+			if (jsonResult.has("expires_in")) {
+				result.expiresIn = jsonResult.getLong("expires_in");
+			}
+		} catch (JSONException e) {
+			// try to parse as canonical
+			Map<String, String> parsedMap = parseCanonicalResponse(sourceResponse.toString());
+			result.accessToken = parsedMap.get("access_token");
+			result.refreshToken = parsedMap.get("refresh_token");
+			result.tokenType = parsedMap.get("token_type");
+			try {
+				result.expiresIn = Long.valueOf(parsedMap.get("expires_in"));
+			} catch (NumberFormatException nfe) {}
+		}
+		// access token must be specified
+		if (result.accessToken == null) {
+			log.error("Response doesn't contain access_token field:\n" + sourceResponse.toString());
+			return null;
+		}
+		return result;
+	}
+	
+	private Map<String, String> parseCanonicalResponse(String response) {
+		String[] parts = response.split("&");
+		Map<String, String> result = new HashMap<String, String>();
+		for (String part: parts) {
+			String pair[] = part.split("=");
+			if (pair.length > 1) {
+				result.put(pair[0], pair[1]);
+			}
+		}
+		return result;
+	}
+	
+	private Map<String, String> getAuthParams(String token, String code, OAuthServer server) throws IOException {
+		// get attributes names
+		String loginAttributeName = server.getLoginParamName();
+		String emailAttributeName = server.getEmailParamName();
+		String firstname = server.getFirstnameParamName();
+		String lastname = server.getLastnameParamName();
+		// prepare url
+		String requestInfoUrl = server.getRequestInfoUrl();
+		requestInfoUrl = prepareUrlParams(requestInfoUrl, server.getClientId(), server.getClientSecret(), 
+				token, getRedirectUri(server, this), code);
+		// send request
+		URLConnection connection = new URL(requestInfoUrl).openConnection();
+		prepareConnection(connection);
+		String sourceResponse = IOUtils.toString(connection.getInputStream(), "utf-8");
+        // parse json result
+        Map<String, String> result = new HashMap<String, String>();
+        try {
+			JSONObject parsedJson = new JSONObject(sourceResponse);
+			result.put("login", parsedJson.getString(loginAttributeName));
+			result.put("email", parsedJson.getString(emailAttributeName));
+			if (parsedJson.has(firstname)) {
+				result.put("firstname", parsedJson.getString(firstname));
+			}
+			if (parsedJson.has(lastname)) {
+				result.put("lastname", parsedJson.getString(lastname));
+			}
+		} catch (JSONException e) {
+			// try to parse response as canonical
+			Map<String, String> parsedMap = parseCanonicalResponse(sourceResponse);
+			result.put("login", parsedMap.get(loginAttributeName));
+			result.put("email", parsedMap.get(emailAttributeName));
+			if (parsedMap.containsKey(firstname)) {
+				result.put("firstname", parsedMap.get(firstname));
+			}
+			if (parsedMap.containsKey(lastname)) {
+				result.put("lastname", parsedMap.get(lastname));
+			}
+		}
+		return result;
+	}
+	
+	private void loginViaOAuth2(Map<String, String> params, long serverId) throws IOException, NoSuchAlgorithmException {
+		UserDao userDao = getBean(UserDao.class);
+		IUserManager userManager = getBean(IUserManager.class); 
+		ConfigurationDao configurationDao = getBean(ConfigurationDao.class);
+		String login = params.get("login");
+		String email = params.get("email");
+		String lastname = params.get("lastname");
+		String firstname = params.get("firstname");
+		if (firstname == null) firstname = "";
+		if (lastname == null) lastname = "";
+		User user = userDao.getByName(login, Type.oauth);
+		// generate random password
+		byte[] rawPass = new byte[16];
+		Random rnd = new Random();
+		for (int i = 0; i < 16; i++) {
+			rawPass[i] = (byte) (97 + rnd.nextInt(25));
+		}
+		String pass = new String(rawPass);
+		// check if the user already exists and register new one if it's needed
+		if (user == null) {
+			Integer defaultlangId = Integer.valueOf(configurationDao.getConfValue("default_lang_id", String.class, "1"));
+			String defaultTimezone = configurationDao.getConfValue("default.timezone", String.class, "");		
+			Long res = userManager.registerUserNoEmail(login, pass, lastname, firstname, email, null, null, 
+					null, null, null, 0, null, defaultlangId, null, false, true, defaultTimezone);
+			if (res == null || res < 0) {
+				throw new RuntimeException("Couldn't register new oauth user");
+			}
+			user = userDao.get(res);
+			user.setType(Type.oauth);
+			user.setDomainId(serverId);
+			userDao.update(user, null);
+		} else { // just change password
+			// check user type before changing password, it must be match oauthServerId
+			if (user.getDomainId() == null || serverId != user.getDomainId()) {
+				log.error("User already registered! with different OAuth server");
+				return;
+			}
+			user.setLastlogin(new Date());
+			user = userDao.update(user, pass, -1);
+		}
+		
+		if (WebSession.get().signIn(login, pass, Type.oauth, serverId)) {
+ 			setResponsePage(Application.get().getHomePage());
+		} else {
+			log.error("Failed to login via OAuth2!");
+		}
+	}
+		
+	private static class AuthInfo {
+			
+		String accessToken;
+		String refreshToken;
+		String tokenType;
+		long expiresIn;
+			
+		@Override
+		public String toString() {
+			return "AuthInfo [accessToken=" + accessToken + ", refreshToken="
+					+ refreshToken + ", tokenType=" + tokenType
+					+ ", expiresIn=" + expiresIn + "]";
+		}
+			
+	}
+	
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.html b/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.html
new file mode 100644
index 0000000..ef59478
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.html
@@ -0,0 +1,55 @@
+<?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>
+	<h2>
+		<a wicket:id="url"><wicket:message key="install.wizard.congrats.enter"/></a>
+	</h2>
+	<br />
+	<br />
+	<wicket:message key="install.wizard.congrats.port"/>
+	<br />
+	<a href="public/config.xml"><wicket:message key="install.wizard.congrats.config"/></a>
+	<br />
+	<br />
+	<br />
+
+	<b> <span style="font-size: 1.4em"><wicket:message key="install.wizard.congrats.mail"/></span></b>
+	<br />
+	<br />
+
+	<span style="font-size: 1.3em"><a
+		href="http://openmeetings.apache.org/mail-lists.html" target="_blank">http://openmeetings.apache.org/mail-lists.html</a></span>
+	<br />
+	<br />
+
+
+	<b> <span style="font-size: 1.4em"><wicket:message key="install.wizard.congrats.commercial"/></span></b>
+	<br />
+	<br />
+
+	<span style="font-size: 1.3em"><a
+		href="http://openmeetings.apache.org/commercial-support.html"
+		target="_blank">http://openmeetings.apache.org/commercial-support.html</a></span>
+	<br />
+
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java b/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java
new file mode 100644
index 0000000..6e7a2e5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.install;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class CongratulationsPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+
+	public CongratulationsPanel(String id) {
+		super(id);
+		
+		add(new Link<Void>("url") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick() {
+				setResponsePage(Application.get().getHomePage());
+			}
+		});
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
new file mode 100644
index 0000000..d59cb47
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
@@ -0,0 +1,29 @@
+<?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>
+	<p wicket:id="desc"></p>
+	<div wicket:id="container" style="margin: 20px;">
+		<div wicket:id="progress"><!-- div><span wicket:id="value"></span>%</div--></div>
+		<div wicket:id="status"></div>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
new file mode 100644
index 0000000..f6f8cd8
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
@@ -0,0 +1,49 @@
+<?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>
+	<fieldset class="ui-widget-content" id="userData">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step1.userdata"/></legend>
+		<ul>
+			<li><label wicket:for="cfg.username"><wicket:message key="install.wizard.params.step1.username"/></label>
+				<input wicket:id="cfg.username" wicket:message="title:install.wizard.params.step1.username.title" type="text" />
+			</li>
+			<li><label wicket:for="cfg.password"><wicket:message key="install.wizard.params.step1.password"/></label>
+				<input wicket:id="cfg.password" wicket:message="title:install.wizard.params.step1.password.title" type="password" />
+			</li>
+			<li><label wicket:for="cfg.email"><wicket:message key="install.wizard.params.step1.email"/></label>
+				<input wicket:id="cfg.email" wicket:message="title:install.wizard.params.step1.email.title" type="text" />
+			</li>
+			<li><label wicket:for="ical_timeZone"><wicket:message key="install.wizard.params.step1.tz"/></label>
+				<select wicket:id="ical_timeZone"></select>
+			</li>
+		</ul>
+	</fieldset>
+
+	<fieldset class="ui-widget-content" id="userOrga">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step1.groupdata"/></legend>
+		<ul>
+			<li><label wicket:for="cfg.group"><wicket:message key="install.wizard.params.step1.group"/></label>
+				<input wicket:id="cfg.group" wicket:message="title:install.wizard.params.step1.group.title" type="text" /></li>
+		</ul>
+	</fieldset>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
new file mode 100644
index 0000000..634749c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
@@ -0,0 +1,68 @@
+<?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>
+	<fieldset class="ui-widget-content" id="userConf">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step2.configuration"/></legend>
+		<ul>
+			<li><label wicket:for="allowFrontendRegister"><wicket:message key="install.wizard.params.step2.allowFrontendRegister"/></label>
+				<select wicket:id="allowFrontendRegister"></select>
+			</li>
+			<li><label wicket:for="sendEmailAtRegister"><wicket:message key="install.wizard.params.step2.sendEmailAtRegister"/></label>
+				<select wicket:id="sendEmailAtRegister"></select>
+			</li>
+			<li><label wicket:for="sendEmailWithVerficationCode"><wicket:message key="install.wizard.params.step2.sendEmailWithVerficationCode"/></label>
+				<select wicket:id="sendEmailWithVerficationCode"></select>
+			</li>
+			<li><label wicket:for="createDefaultRooms"><wicket:message key="install.wizard.params.step2.createDefaultRooms"/></label>
+				<select wicket:id="createDefaultRooms"></select>
+			</li>
+			<li><label wicket:for="cfg.mailReferer"><wicket:message key="install.wizard.params.step2.mailReferer"/></label>
+				<input wicket:id="cfg.mailReferer" wicket:message="title:install.wizard.params.step2.mailReferer.title" type="text" />
+			</li>
+			<li><label wicket:for="cfg.smtpServer"><wicket:message key="install.wizard.params.step2.smtpServer"/></label>
+				<input wicket:id="cfg.smtpServer" wicket:message="title:install.wizard.params.step2.smtpServer.title" type="text" />
+			</li>
+			<li><label wicket:for="cfg.smtpPort"><wicket:message key="install.wizard.params.step2.smtpPort"/></label>
+				<input wicket:id="cfg.smtpPort" wicket:message="title:install.wizard.params.step2.smtpPort.title" type="text" />
+			</li>
+			<li><label wicket:for="cfg.mailAuthName"><wicket:message key="install.wizard.params.step2.mailAuthName"/></label>
+				<input wicket:id="cfg.mailAuthName" wicket:message="title:install.wizard.params.step2.mailAuthName.title" type="text" />
+			</li>
+			<li><label wicket:for="cfg.mailAuthPass"><wicket:message key="install.wizard.params.step2.mailAuthPass"/></label>
+				<input wicket:id="cfg.mailAuthPass" wicket:message="title:install.wizard.params.step2.mailAuthPass.title" type="password" />
+			</li>
+			<li><label wicket:for="mailUseTls"><wicket:message key="install.wizard.params.step2.mailUseTls"/></label>
+				<select wicket:id="mailUseTls"></select>
+			</li>
+			<li><label wicket:for="replyToOrganizer"><wicket:message key="install.wizard.params.step2.replyToOrganizer"/></label>
+				<select wicket:id="replyToOrganizer"></select>
+			</li>
+			<li><label wicket:for="defaultLangId"><wicket:message key="install.wizard.params.step2.defaultLangId"/></label>
+				<select wicket:id="defaultLangId"></select>
+			</li>
+			<li><label wicket:for="cfg.defaultExportFont"><wicket:message key="install.wizard.params.step2.defaultExportFont"/></label>
+				<select wicket:id="cfg.defaultExportFont"></select>
+			</li>
+		</ul>
+	</fieldset>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
new file mode 100644
index 0000000..f072081
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
@@ -0,0 +1,131 @@
+<?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>
+	<fieldset class="ui-widget-content" id="userConf1">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step3.converters"/></legend>
+		<ul>
+			<li><label wicket:for="cfg.swfZoom"><wicket:message key="install.wizard.params.step3.swfZoom"/></label>
+				<input wicket:id="cfg.swfZoom" wicket:message="title:install.wizard.params.step3.swfZoom.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.swfZoom.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.swfJpegQuality"><wicket:message key="install.wizard.params.step3.swfJpegQuality"/></label>
+				<input wicket:id="cfg.swfJpegQuality" 
+				wicket:message="title:install.wizard.params.step3.swfJpegQuality.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.swfJpegQuality.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.swfPath"><wicket:message key="install.wizard.params.step3.swfPath"/></label>
+				<input wicket:id="cfg.swfPath" 
+				wicket:message="title:install.wizard.params.step3.swfPath.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.swfPath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.imageMagicPath"><wicket:message key="install.wizard.params.step3.imageMagicPath"/></label>
+				<input wicket:id="cfg.imageMagicPath" 
+				wicket:message="title:install.wizard.params.step3.imageMagicPath.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.imageMagicPath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.ffmpegPath"><wicket:message key="install.wizard.params.step3.ffmpegPath"/></label>
+				<input wicket:id="cfg.ffmpegPath" 
+				wicket:message="title:install.wizard.params.step3.ffmpegPath.title" type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.ffmpegPath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.soxPath"><wicket:message key="install.wizard.params.step3.soxPath"/></label>
+				<input wicket:id="cfg.soxPath" 
+				wicket:message="title:install.wizard.params.step3.soxPath.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.soxPath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.jodPath"><wicket:message key="install.wizard.params.step3.jodPath"/></label>
+				<input wicket:id="cfg.jodPath"
+				wicket:message="title:install.wizard.params.step3.jodPath.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.jodPath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.officePath"><wicket:message key="install.wizard.params.step3.officePath"/></label>
+				<input wicket:id="cfg.officePath"
+				wicket:message="title:install.wizard.params.step3.officePath.title"
+				type="text" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step3.officePath.text"/>
+						<wicket:message key="install.wizard.params.step3.seeAlso"/><a
+						href="http://openmeetings.apache.org/installation.html"
+						target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
+					</i>
+				</p>
+			</li>
+		</ul>
+	</fieldset>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
new file mode 100644
index 0000000..b8360b3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
@@ -0,0 +1,62 @@
+<?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>
+	<fieldset class="ui-widget-content" id="userConf2">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step4.crypt"/></legend>
+		<ul>
+			<li><label wicket:for="cfg.cryptClassName"><wicket:message key="install.wizard.params.step4.cryptClassName"/></label>
+				<input wicket:id="cfg.cryptClassName" type="text"
+					wicket:message="title:install.wizard.params.step4.cryptClassName.title" />
+				<p>
+					<i>
+						<wicket:message key="install.wizard.params.step4.cryptClassName.text"/>
+					</i>
+				</p>
+			</li>
+		</ul>
+	</fieldset>
+
+	<fieldset class="ui-widget-content" id="red5sip">
+		<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step4.red5SIP"/></legend>
+		<ul>
+			<li><label wicket:for="red5SipEnable"><wicket:message key="install.wizard.params.step4.red5SipEnable"/></label>
+				<select wicket:id="red5SipEnable"></select>
+				<p>
+					<i><wicket:message key="install.wizard.params.step4.red5SipEnable.text"/></i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.red5SipRoomPrefix"><wicket:message key="install.wizard.params.step4.red5SipRoomPrefix"/></label>
+				<input wicket:id="cfg.red5SipRoomPrefix" type="text" />
+				<p>
+					<i><wicket:message key="install.wizard.params.step4.red5SipRoomPrefix.text"/></i>
+				</p>
+			</li>
+			<li><label wicket:for="cfg.red5SipExtenContext"><wicket:message key="install.wizard.params.step4.red5SipExtenContext"/></label>
+				<input wicket:id="cfg.red5SipExtenContext" type="text" />
+				<p>
+					<i><wicket:message key="install.wizard.params.step4.red5SipExtenContext.text"/></i>
+				</p>
+			</li>
+		</ul>
+	</fieldset>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$WelcomeStep.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$WelcomeStep.html
new file mode 100644
index 0000000..21b4422
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard$WelcomeStep.html
@@ -0,0 +1,25 @@
+<?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 wicket:id="step"></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.html
new file mode 100644
index 0000000..92ec993
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.html
@@ -0,0 +1,48 @@
+<?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.
+-->
+<wicket:panel xmlns:wicket="http://wicket.apache.org">
+	<div class="wicketExtensionsWizard">
+		<form wicket:id="form" class="wicketExtensionsWizardForm">
+			<table class="wicketExtensionsWizardOuterTable">
+				<tr>
+					<td valign="top"><span wicket:id="overview"></span></td>
+					<td valign="top">
+						<table class="wicketExtensionsWizardInnerTable">
+							<tr class="wicketExtensionsWizardHeaderRow">
+								<td valign="top" class="wicketExtensionsWizardHeader"><span
+									wicket:id="header"></span></td>
+							</tr>
+							<tr class="wicketExtensionsWizardFeedbackRow">
+								<td valign="top" class="wicketExtensionsWizardFeedback"><span
+									wicket:id="feedback"></span></td>
+							</tr>
+							<tr class="wicketExtensionsWizardViewRow">
+								<td valign="top" class="wicketExtensionsWizardView"><div
+										wicket:id="view" class="wicketExtensionsWizardViewInner"></div></td>
+							</tr>
+							<tr class="wicketExtensionsWizardButtonBarRow">
+								<td valign="top" class="wicketExtensionsWizardButtonBar"><span
+									wicket:id="buttons"></span></td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</div>
+</wicket:panel>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
new file mode 100644
index 0000000..7654fa7
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -0,0 +1,531 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.install;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONE_SET;
+import static org.apache.wicket.validation.validator.RangeValidator.range;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openmeetings.installation.ImportInitvalues;
+import org.apache.openmeetings.installation.InstallationConfig;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ErrorMessagePanel;
+import org.apache.openmeetings.web.common.OmLabel;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.extensions.wizard.IWizardStep;
+import org.apache.wicket.extensions.wizard.Wizard;
+import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardModel;
+import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardStep;
+import org.apache.wicket.extensions.wizard.dynamic.IDynamicWizardStep;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.util.time.Duration;
+
+import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
+
+//TODO maybe JQ wizard should be used
+public class InstallWizard extends Wizard {
+	private static final long serialVersionUID = 1L;
+	private InstallationConfig cfg;
+	private CompoundPropertyModel<InstallWizard> model;
+	private final static List<SelectOption> yesNoList = Arrays.asList(SelectOption.NO, SelectOption.YES);
+	private final static List<SelectOption> yesNoTextList = Arrays.asList(SelectOption.NO_TEXT, SelectOption.YES_TEXT);
+	private final static List<String> allFonts = Arrays.asList("TimesNewRoman", "Verdana", "Arial");
+	private final IDynamicWizardStep welcomeStep;
+	private final ParamsStep1 paramsStep1;
+	private final IDynamicWizardStep paramsStep2;
+	private final IDynamicWizardStep paramsStep3;
+	private final IDynamicWizardStep paramsStep4;
+	private final InstallStep installStep;
+	private Throwable th = null;
+	
+	public void initTzDropDown() {
+		paramsStep1.tzDropDown.setOption();
+	}
+	
+	//onInit, applyState
+	public InstallWizard(String id) throws Exception {
+		super(id);
+		//TODO enable install after first params
+		cfg = new InstallationConfig();
+		setDefaultModel(model = new CompoundPropertyModel<InstallWizard>(this));
+		welcomeStep = new WelcomeStep();
+		paramsStep1 = new ParamsStep1();
+		paramsStep2 = new ParamsStep2();
+		paramsStep3 = new ParamsStep3();
+		paramsStep4 = new ParamsStep4();
+		//TODO add install/progress step
+		installStep = new InstallStep();
+
+		DynamicWizardModel wmodel = new DynamicWizardModel(welcomeStep);
+		wmodel.setCancelVisible(false);
+		wmodel.setLastVisible(true);
+		init(wmodel);
+	}
+	
+	@Override
+	protected Component newButtonBar(String id) {
+		final Panel bBar = (Panel)super.newButtonBar(id);
+		AjaxButton finish = new AjaxButton("finish", new ResourceModel("org.apache.wicket.extensions.wizard.finish")) {
+			private static final long serialVersionUID = 1L;
+
+			public boolean isEnabled() {
+				IWizardStep activeStep = getWizardModel().getActiveStep();
+				return ((activeStep != null) && getWizardModel().isLastStep(activeStep));
+			}
+			
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				installStep.startInstallation(target);
+				target.add(bBar.setEnabled(false));
+			}
+		};
+		return bBar.replace(finish).setOutputMarkupId(true);
+	}
+	
+	@Override
+	protected void onDetach() {
+		model.detach();
+		super.onDetach();
+	}
+	
+	private abstract class BaseStep extends DynamicWizardStep {
+		private static final long serialVersionUID = 1L;
+
+		public BaseStep(IDynamicWizardStep prev) {
+			super(prev);
+			setTitleModel(Model.of(cfg.appName + " - " + getString("install.wizard.install.header")));
+            setSummaryModel(Model.of(""));
+		}
+	}
+	
+	private final class WelcomeStep extends BaseStep {
+		private static final long serialVersionUID = 1L;
+
+		public WelcomeStep() {
+			super(null);
+			//TODO localize
+			//TODO add check for DB connection
+            add(new OmLabel("step", "install.wizard.welcome.panel", cfg.appName).setEscapeModelStrings(false));
+		}
+
+		public boolean isLastStep() {
+			return false;
+		}
+
+		public IDynamicWizardStep next() {
+			return paramsStep1;
+		}
+	}
+
+	private final class ParamsStep1 extends BaseStep {
+		private static final long serialVersionUID = 1L;
+		private final TzDropDown tzDropDown;
+
+		public ParamsStep1() throws Exception {
+			super(welcomeStep);
+			//TODO localize
+            add(new RequiredTextField<String>("cfg.username").add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
+            add(new PasswordTextField("cfg.password").add(minimumLength(USER_PASSWORD_MINIMUM_LENGTH)));
+            add(new RequiredTextField<String>("cfg.email").add(RfcCompliantEmailAddressValidator.getInstance()));
+            add(tzDropDown = new TzDropDown("ical_timeZone"));
+            add(new RequiredTextField<String>("cfg.group"));
+		}
+
+		public boolean isLastStep() {
+			return false;
+		}
+
+		public IDynamicWizardStep next() {
+			return paramsStep2;
+		}
+		
+		@Override
+		public boolean isLastAvailable() {
+			return true;
+		}
+		
+		@Override
+		public IDynamicWizardStep last() {
+			return installStep;
+		}
+	}
+	
+	private final class ParamsStep2 extends BaseStep {
+		private static final long serialVersionUID = 1L;
+
+		public ParamsStep2() throws Exception {
+			super(paramsStep1);
+			//TODO localize
+			//TODO validation
+            add(new YesNoDropDown("allowFrontendRegister"));
+            add(new YesNoDropDown("sendEmailAtRegister"));
+            add(new YesNoDropDown("sendEmailWithVerficationCode"));
+            add(new YesNoDropDown("createDefaultRooms"));
+            add(new TextField<String>("cfg.mailReferer"));
+            add(new TextField<String>("cfg.smtpServer"));
+            add(new TextField<Integer>("cfg.smtpPort").setRequired(true));
+            add(new TextField<String>("cfg.mailAuthName"));
+            add(new PasswordTextField("cfg.mailAuthPass").setRequired(false));
+            add(new YesNoDropDown("mailUseTls"));
+            //TODO check mail server
+            add(new YesNoDropDown("replyToOrganizer"));
+            add(new LangDropDown("defaultLangId"));
+            add(new DropDownChoice<String>("cfg.defaultExportFont", allFonts));
+		}
+
+		public boolean isLastStep() {
+			return false;
+		}
+
+		public IDynamicWizardStep next() {
+			return paramsStep3;
+		}
+		
+		@Override
+		public boolean isLastAvailable() {
+			return true;
+		}
+		
+		@Override
+		public IDynamicWizardStep last() {
+			return installStep;
+		}
+	}
+	
+	private final class ParamsStep3 extends BaseStep {
+		private static final long serialVersionUID = 1L;
+
+		public ParamsStep3() {
+			super(paramsStep2);
+			
+            add(new TextField<Integer>("cfg.swfZoom").setRequired(true).add(range(50, 600)));
+            add(new TextField<Integer>("cfg.swfJpegQuality").setRequired(true).add(range(1, 100)));
+            add(new TextField<String>("cfg.swfPath"));
+            add(new TextField<String>("cfg.imageMagicPath"));
+            add(new TextField<String>("cfg.ffmpegPath"));
+            add(new TextField<String>("cfg.soxPath"));
+            add(new TextField<String>("cfg.jodPath"));
+            add(new TextField<String>("cfg.officePath"));
+		}
+
+		public boolean isLastStep() {
+			return false;
+		}
+
+		public IDynamicWizardStep next() {
+			return paramsStep4;
+		}
+		
+		@Override
+		public boolean isLastAvailable() {
+			return true;
+		}
+		
+		@Override
+		public IDynamicWizardStep last() {
+			return installStep;
+		}
+	}
+	
+	private final class ParamsStep4 extends BaseStep {
+		private static final long serialVersionUID = 1L;
+
+		public ParamsStep4() {
+			super(paramsStep3);
+            add(new RequiredTextField<String>("cfg.cryptClassName")); //Validate class
+            
+            //TODO add check for red5sip connection
+            add(new YesNoTextDropDown("red5SipEnable"));
+            add(new TextField<String>("cfg.red5SipRoomPrefix"));
+            add(new TextField<String>("cfg.red5SipExtenContext"));
+		}
+
+		public boolean isLastStep() {
+			return false;
+		}
+
+		public IDynamicWizardStep next() {
+			return installStep;
+		}
+		
+		@Override
+		public boolean isLastAvailable() {
+			return true;
+		}
+		
+		@Override
+		public IDynamicWizardStep last() {
+			return installStep;
+		}
+}
+	
+	private final class InstallStep extends BaseStep {
+		private static final long serialVersionUID = 1L;
+		private final CongratulationsPanel congrat;
+		private WebMarkupContainer container = new WebMarkupContainer("container");
+		private AbstractAjaxTimerBehavior timer;
+		private ProgressBar progressBar;
+		private Label desc = new Label("desc", getString("install.wizard.install.desc"));
+		private boolean started = false;
+		
+		public void startInstallation(AjaxRequestTarget target) {
+			started = true;
+			timer.restart(target);
+			new Thread(new InstallProcess(Application.get()._getBean(ImportInitvalues.class))
+				, "Openmeetings - Installation").start();
+			//progressBar.setVisible(true);
+			desc.setDefaultModelObject(getString("install.wizard.install.started"));
+			target.add(desc, container);
+		}
+		
+		public InstallStep() {
+			super(paramsStep4);
+			
+			add(desc.setOutputMarkupId(true));
+			// Timer //
+			container.add(timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onTimer(AjaxRequestTarget target) {
+					if (!started) {
+						timer.stop(target);
+						return;
+					}
+					if (th != null) {
+						timer.stop(target);
+						//TODO change text, localize
+						progressBar.setVisible(false);
+						target.add(container.replace(new ErrorMessagePanel("status", getString("install.wizard.install.failed"), th))
+							, desc.setVisible(false)
+							);
+					} else {
+						progressBar.setModelObject(Application.get()._getBean(ImportInitvalues.class).getProgress());
+						progressBar.refresh(target);
+						//TODO uncomment later target.add(value);
+						//TODO add current step result as info
+					}
+				}
+			});
+			container.add(progressBar = new ProgressBar("progress", new Model<Integer>(0)) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onComplete(AjaxRequestTarget target) {
+					timer.stop(target);
+					progressBar.setVisible(false);
+					congrat.setVisible(true);
+					target.add(container, desc.setVisible(false));
+				}
+			});
+			//TODO uncomment later progressBar.add(value = new Label("value", progressBar.getModel()));
+			//TODO uncomment later value.setOutputMarkupId(true);
+			//progressBar.setVisible(false);
+			
+			container.add(congrat = new CongratulationsPanel("status"));
+			congrat.setVisible(false);
+			
+			add(container.setOutputMarkupId(true));
+		}
+
+		public boolean isLastStep() {
+			return true;
+		}
+
+		public IDynamicWizardStep next() {
+			return null;
+		}
+	}
+	
+	private class InstallProcess implements Runnable {
+		private ImportInitvalues installer;
+		
+		public InstallProcess(ImportInitvalues installer) {
+			this.installer = installer;
+			th = null;
+		}
+		
+		public void run() {
+			try {
+				installer.loadAll(cfg, true);
+			} catch (Exception e) {
+				th = e;
+			}
+		}
+	}
+	
+	private static class SelectOption implements Serializable {
+		private static final long serialVersionUID = 1L;
+		private static SelectOption NO = new SelectOption("0", "No");
+		private static SelectOption NO_TEXT = new SelectOption("no", "No");
+		private static SelectOption YES = new SelectOption("1", "Yes");
+		private static SelectOption YES_TEXT = new SelectOption("yes", "Yes");
+		public String key;
+		@SuppressWarnings("unused")
+		public String value;
+
+		SelectOption(String key, String value) {
+			this.key = key;
+			this.value = value;
+		}
+	}
+
+	private abstract class WizardDropDown<T>  extends DropDownChoice<T> {
+		private static final long serialVersionUID = 1L;
+		T option;
+		IModel<Object> propModel;
+		
+		WizardDropDown(String id) {
+			super(id);
+			propModel = InstallWizard.this.model.bind("cfg." + id);
+			setModel(new PropertyModel<T>(this, "option"));
+		}
+		
+		@Override
+		protected void onDetach() {
+			propModel.detach();
+			super.onDetach();
+		}
+	}
+	
+	private final class TzDropDown extends WizardDropDown<String> {
+		private static final long serialVersionUID = 1L;
+
+		public void setOption() {
+			String tzId = WebSession.get().getClientTZCode();
+			option = AVAILABLE_TIMEZONE_SET.contains(tzId) ? tzId : AVAILABLE_TIMEZONES.get(0);
+		}
+		
+		public TzDropDown(String id) throws Exception {
+			super(id);
+			setChoices(AVAILABLE_TIMEZONES);
+			setChoiceRenderer(new IChoiceRenderer<String>() {
+				private static final long serialVersionUID = 1L;
+				
+				public Object getDisplayValue(String object) {
+    				return object.toString();
+    			}
+				public String getIdValue(String object, int index) {
+					return object.toString();
+				}
+			});
+		}
+		
+		@Override
+		protected void onModelChanged() {
+			if (propModel != null && option != null) {
+				propModel.setObject(option);
+			}
+		}
+	}
+	
+	private class SelectOptionDropDown extends WizardDropDown<SelectOption> {
+		private static final long serialVersionUID = 1L;
+
+		SelectOptionDropDown(String id) {
+			super(id);
+			setChoiceRenderer(new ChoiceRenderer<SelectOption>("value", "key"));
+		}
+		
+		@Override
+		protected void onModelChanged() {
+			if (propModel != null && option != null) {
+				propModel.setObject(option.key);
+			}
+		}
+		
+	}
+	
+	private final class YesNoDropDown extends SelectOptionDropDown {
+		private static final long serialVersionUID = 1L;
+		
+		YesNoDropDown(String id) {
+			super(id);
+			setChoices(yesNoList);
+			this.option = SelectOption.NO.key.equals(propModel.getObject()) ?
+					SelectOption.NO : SelectOption.YES;
+		}
+	}
+	
+	private final class YesNoTextDropDown extends SelectOptionDropDown {
+		private static final long serialVersionUID = 1L;
+		
+		YesNoTextDropDown(String id) {
+			super(id);
+			setChoices(yesNoTextList);
+			this.option = SelectOption.NO_TEXT.key.equals(propModel.getObject()) ?
+					SelectOption.NO_TEXT : SelectOption.YES_TEXT;
+		}
+	}
+	
+	private final class LangDropDown extends SelectOptionDropDown {
+		private static final long serialVersionUID = 1L;
+
+		public LangDropDown(String id) throws Exception {
+			super(id);
+			Map<Integer, Map<String, Object>> allLanguagesAll = ImportInitvalues.getLanguageFiles();
+			
+			List<SelectOption> list = new ArrayList<SelectOption>();
+			
+			for (Map.Entry<Integer,Map<String,Object>> me : allLanguagesAll.entrySet()) {
+				String langName = (String) me.getValue().get("name");
+				String langCode = (String) me.getValue().get("code");
+				SelectOption op = new SelectOption(me.getKey().toString(), langName);
+				if (langCode != null) {
+					if (getSession().getLocale().toString().startsWith(langCode)) {
+						option = op;
+					}
+					list.add(op);
+				}
+				if (option == null && me.getKey().toString().equals(cfg.defaultLangId)) {
+					option = op;
+				}
+			}
+			setChoices(list);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
new file mode 100644
index 0000000..214a9f8
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
@@ -0,0 +1,148 @@
+<?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>
+	<script type="text/javascript" src="js/openmeetings_functions.js" >
+	</script>
+	<style type="text/css">
+		form,fieldset {
+			margin: 0;
+			padding: 0;
+		}
+		fieldset {
+			border: 1px solid #000;
+		}
+		legend {
+			padding: 0;
+			color: #000;
+		}
+		input:focus,textarea:focus {
+			color: #000;
+			background: #fff;
+			outline: 1px solid black;
+		}
+		input,textarea,select {
+			margin: 0;
+			padding: 1px;
+			position: absolute;
+			left: 700px;
+			background: #ddd;
+			font-size: 100%;
+			font-family: inherit;
+			width: 300px;
+		}
+		select {
+			padding: 0;
+		}
+		form.wicketExtensionsWizardForm {
+			width: 1024px;
+			font-size: 1.1em;
+			color: #333;
+		}
+		form.wicketExtensionsWizardForm legend {
+			padding-left: 0;
+		}
+		form.wicketExtensionsWizardForm legend,form.wicketExtensionsWizardForm label {
+			color: #333;
+		}
+		form.wicketExtensionsWizardForm fieldset {
+			border: none;
+			border-top: 1px solid #C9DCA6;
+		}
+		form.wicketExtensionsWizardForm fieldset fieldset {
+			background: none;
+		}
+		form.wicketExtensionsWizardForm fieldset li {
+			padding: 5px 10px 7px;
+		}
+		form.wicketExtensionsWizardForm fieldset {
+			margin-bottom: 10px;
+		}
+		form.wicketExtensionsWizardForm legend {
+			padding: 0 2px;
+			font-weight: bold;
+		}
+		form.wicketExtensionsWizardForm label {
+			display: inline-block;
+			line-height: 1.8;
+			vertical-align: top;
+		}
+		form.wicketExtensionsWizardForm fieldset ol {
+			margin: 0;
+			padding: 0;
+		}
+		form.wicketExtensionsWizardForm fieldset li {
+			list-style: none;
+			margin: 0;
+		}
+		form.wicketExtensionsWizardForm fieldset fieldset {
+			border: none;
+			margin: 3px 0 0;
+		}
+		form.wicketExtensionsWizardForm fieldset fieldset legend {
+			padding: 0 0 5px;
+			font-weight: normal;
+		}
+		form.wicketExtensionsWizardForm fieldset fieldset label {
+			display: block;
+			width: auto;
+		}
+		form.wicketExtensionsWizardForm em {
+			font-weight: bold;
+			font-style: normal;
+			color: #f00;
+		}
+		form.wicketExtensionsWizardForm label {
+			width: 420px;
+		}
+		form.wicketExtensionsWizardForm fieldset fieldset label {
+			margin-left: 123px;
+		}
+		.wicketExtensionsWizard {
+			padding-right: 100px;
+			padding-left: 100px;
+			width: 850px;
+		}
+		.wicketExtensionsWizardHeader {
+			font-size: 2em;
+			padding: 10px;
+		}
+		.wicketExtensionsWizardViewInner {
+			padding: 5px;
+		}
+		.wicketExtensionsWizardInnerTable, .wicketExtensionsWizardOuterTable {
+			width: 100%;
+		}
+		.wicketExtensionsWizardButtonBar input {
+			position: static;
+			width: auto;
+			padding-right: 15px;
+			padding-left: 15px;
+			margin: 5px;
+		}
+	</style>
+</wicket:head>
+<wicket:extend>
+	<div>
+		<div wicket:id="wizard"></div>
+	</div>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
new file mode 100644
index 0000000..fe88d1f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.pages.install;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ErrorMessagePanel;
+import org.apache.openmeetings.web.pages.BaseNotInitedPage;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+
+public class InstallWizardPage extends BaseNotInitedPage {
+	private static final long serialVersionUID = -438388395397826138L;
+	private InstallWizard wizard = null;
+
+	public InstallWizardPage() {
+		if (Application.isInstalled()) {
+			throw new RestartResponseException(Application.get().getHomePage());
+		}
+		try {
+			add(wizard = new InstallWizard("wizard"));
+			// This code is required to detect time zone offset
+			add(new AjaxClientInfoBehavior() {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onClientInfo(AjaxRequestTarget target, WebClientInfo clientInfo) {
+					super.onClientInfo(target, clientInfo);
+					wizard.initTzDropDown();
+				}
+			});
+		} catch (RestartResponseException re) {
+			throw re;
+		} catch (Exception e) {
+			//TODO localization
+			add(new ErrorMessagePanel("wizard", "Error while running installer, please check your installation", e));
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard_es.properties.xml b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard_es.properties.xml
new file mode 100644
index 0000000..3f046b5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard_es.properties.xml
@@ -0,0 +1,25 @@
+<?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.
+  
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+	<entry key="org.apache.wicket.extensions.wizard.next"><![CDATA[Siguiente >]]></entry>
+	<entry key="org.apache.wicket.extensions.wizard.finish"><![CDATA[Finalizar]]></entry>
+</properties>
diff --git a/src/web/java/org/apache/openmeetings/web/user/AboutDialog.html b/src/web/java/org/apache/openmeetings/web/user/AboutDialog.html
new file mode 100644
index 0000000..cdf6233
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/AboutDialog.html
@@ -0,0 +1,42 @@
+<?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>
+		<table>
+			<tr>
+				<td><wicket:ommessage key="1550" /></td>
+				<td wicket:id="name">[name]</td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="1551" /></td>
+				<td wicket:id="version">[version]</td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="1552" /></td>
+				<td wicket:id="revision">[revision]</td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="1553" /></td>
+				<td wicket:id="buildDate">[buildDate]</td>
+			</tr>
+		</table>		
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/AboutDialog.java b/src/web/java/org/apache/openmeetings/web/user/AboutDialog.java
new file mode 100644
index 0000000..2e6678b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/AboutDialog.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user;
+
+import static org.apache.openmeetings.util.Version.getBuildDate;
+import static org.apache.openmeetings.util.Version.getRevision;
+import static org.apache.openmeetings.util.Version.getVersion;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.basic.Label;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class AboutDialog extends AbstractDialog<String> {
+	private static final long serialVersionUID = 1400355222295594321L;
+	
+	public AboutDialog(String id) {
+		super(id, WebSession.getString(1549));
+		
+		add(new Label("name", Application.getBean(ConfigurationDao.class).getConfValue(
+				"application.name"
+				, String.class
+				, ConfigurationDao.DEFAULT_APP_NAME)));
+		add(new Label("version", getVersion()));
+		add(new Label("revision", getRevision()));
+		add(new Label("buildDate", getBuildDate()));
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return new ArrayList<DialogButton>();
+	}
+
+	public void onClose(AjaxRequestTarget arg0, DialogButton arg1) {
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/ChatPanel.html b/src/web/java/org/apache/openmeetings/web/user/ChatPanel.html
new file mode 100644
index 0000000..d0339bc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/ChatPanel.html
@@ -0,0 +1,65 @@
+<?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>
+		<script type="text/javascript">
+			function toggleChat() {
+				var chat = $('#chat');
+				$('#chat #controlBlock #control')
+					.removeClass('ui-icon-carat-1-' + (chat.height() < 20 ? 'n' : 's'))
+					.addClass('ui-icon-carat-1-' + (chat.height() < 20 ? 's' : 'n'));
+				chat.animate({ height: chat.height() < 20 ? "320px" : "16px" }, 1000);
+			}
+			function addChatMessageInternal(m) {
+				if (m && m.type == "chat") {
+					var msg = $('<div><span class="from">' + m.msg.from + '</span><span class="date">'
+							+ m.msg.sent + '</span>' + m.msg.message + '</div>');
+					$('#messageArea').append(msg);
+					msg[0].scrollIntoView();
+				}
+			}
+			function addChatMessage(m) {
+				if (m && m.type == "chat") {
+					addChatMessageInternal(m)
+					$('#messageArea').emoticonize();
+				}
+			}
+			Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
+				addChatMessage(jQuery.parseJSON(msg)); 
+			});
+		</script>
+	</wicket:head>
+	<wicket:panel>
+		<div id="chat">
+			<div id="controlBlock" onclick="toggleChat();"><div id="control" class="ui-icon ui-icon-carat-1-n sort-icon"></div></div>
+			<div wicket:id="messages"></div>
+			<form wicket:id="sendForm">
+				<div wicket:id="toolbarContainer"></div>
+				<table style="width: 100%">
+					<tr>
+						<td><div id="chatMessage" wicket:id="chatMessage"></div></td>
+						<td style="width: 50px"><div wicket:id="send"><wicket:ommessage key="220"/></div></td>
+					</tr>
+				</table>
+			</form>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/ChatPanel.java b/src/web/java/org/apache/openmeetings/web/user/ChatPanel.java
new file mode 100644
index 0000000..03cb166
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/ChatPanel.java
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user;
+
+import static org.apache.commons.lang3.StringEscapeUtils.unescapeXml;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.basic.ChatDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.basic.ChatMessage;
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONObject;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.ws.IWebSocketSettings;
+import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
+import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+import com.googlecode.wicket.jquery.ui.plugins.emoticons.EmoticonsBehavior;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
+
+@AuthorizeInstantiation({"Dashboard", "Room"})
+public class ChatPanel extends BasePanel {
+	private static final Logger log = Red5LoggerFactory.getLogger(ChatPanel.class, webAppRootKey);
+	private static final long serialVersionUID = -9144707674886211557L;
+	private static final String MESSAGE_AREA_ID = "messageArea";
+	
+	private JSONObject getMessage(ChatMessage m) throws JSONException {
+		String msg = m.getMessage();
+		msg = msg == null ? msg : " " + msg.replaceAll("&nbsp;", " ") + " ";
+		return new JSONObject()
+			.put("type", "chat")
+			.put("msg", new JSONObject()
+				.put("id", m.getId())
+				.put("message", msg)
+				.put("from", m.getFromUser().getFirstname() + " " + m.getFromUser().getLastname())
+				.put("sent", getDateFormat().format(m.getSent()))
+			);
+	}
+
+	public ChatPanel(String id) {
+		super(id);
+		setOutputMarkupId(true);
+		setMarkupId(id);
+
+		add(new Behavior() {
+			private static final long serialVersionUID = -2205036360048419129L;
+
+			@Override
+			public void renderHead(Component component, IHeaderResponse response) {
+				ChatDao dao = getBean(ChatDao.class);
+				try {				
+					StringBuilder sb = new StringBuilder();
+					//FIXME limited count should be loaded with "earlier" link
+					for (ChatMessage m : dao.get(0, 30)) {
+						sb.append("addChatMessageInternal(").append(getMessage(m).toString()).append(");");
+					}
+					if (sb.length() > 0) {
+						sb.append("$('#").append(MESSAGE_AREA_ID).append("').emoticonize();");
+						response.render(OnDomReadyHeaderItem.forScript(sb.toString()));
+					}
+				} catch (JSONException e) {
+					
+				}
+				super.renderHead(component, response);
+			}
+		});
+		add(new EmoticonsBehavior("#" + MESSAGE_AREA_ID));
+		add(new WebMarkupContainer("messages").setMarkupId(MESSAGE_AREA_ID));
+		ChatToolbar toolbar = new ChatToolbar("toolbarContainer");
+		final WysiwygEditor chatMessage = new WysiwygEditor("chatMessage", Model.of(""), toolbar);
+		add(new Form<Void>("sendForm").add(
+				toolbar
+				, chatMessage.setOutputMarkupId(true)
+				, new AjaxButton("send") {
+					private static final long serialVersionUID = 1L;
+					
+					@Override
+					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+						ChatDao dao = getBean(ChatDao.class);
+						ChatMessage m = new ChatMessage();
+						m.setMessage(unescapeXml(chatMessage.getDefaultModelObjectAsString()));
+						m.setSent(new Date());
+						m.setFromUser(getBean(UserDao.class).get(getUserId()));
+						dao.update(m);
+						IWebSocketConnectionRegistry reg = IWebSocketSettings.Holder.get(getApplication()).getConnectionRegistry();
+						for (IWebSocketConnection c : reg.getConnections(getApplication())) {
+							try {
+								c.sendMessage(getMessage(m).toString());
+							} catch(Exception e) {
+								log.error("Error while sending message", e);
+							}
+						}
+						chatMessage.setDefaultModelObject("");
+						target.add(chatMessage);
+					};
+				}));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.html b/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.html
new file mode 100644
index 0000000..f00af1a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.html
@@ -0,0 +1,86 @@
+<?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>
+	<style>
+		.emt {
+			font-size: 10pt;
+		}
+		.chat.btn{
+			font-weight: bold;
+		}
+		.chat.dropdown-menu {
+			left: -50px;
+		}
+	</style>
+	<script type="text/javascript">
+	    function emtClick(emoticon) {
+	        var editor = $('#chatMessage .wysiwyg-editor');
+	        editor.html(editor.html() + ' ' + emoticon + ' ');
+	    }
+		$(function() {
+			 var emots = [":-)", ":)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b"
+			 	, ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ":-\\", ";*(", ":-*", ":]", ":>", "=]", "=)", "8)"
+			 	, ":}", ":D", "8D", "XD", "xD", "=D", ":(", ":<", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p"
+			 	, "=P", "=p", ":b", ":Þ", ":O", "8O", ":/", "=/", ":S", ":#", ":X", "B)", "O:)", "<3", ";(", ">:)"
+			 	, ">;)", ">:(", "O_o", "O_O", "o_o", "0_o", "T_T", "^_^", "?-)"];
+			 var emotMenuList = $('#emotMenuList');
+			 var rowSize = 15;
+			 var row = $('<tr></tr>');
+			 for (var i = 0; i < emots.length; ++i) {
+			 	row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
+			 		+ emots[i] + '</div></td>');
+			 	if (i != 0 && i % rowSize == 0) {
+			 		emotMenuList.append(row);
+			 		row = $('<tr></tr>');
+			 	}
+			 }
+			 $('.emt').emoticonize();
+		});
+	</script>
+</wicket:head>
+<wicket:panel>
+	<div wicket:id="toolbar" class="btn-toolbar" data-role="editor-toolbar">
+		<div class="btn-group">
+			<a id="emoticons" class="chat btn emt dropdown-toggle" data-toggle="dropdown" title="Emoticons"> :) <b class="caret"></b></a>
+			<ul class="chat dropdown-menu" >
+				<li>
+					<table id="emotMenuList">
+					</table>
+				</li>
+			</ul>
+		</div>
+		<div class="btn-group">
+			<a id="fontSize" class="chat btn dropdown-toggle" data-toggle="dropdown" title="Font Size"> A <b class="caret"></b></a>
+			<ul class="dropdown-menu">
+				<li><a data-edit="fontSize 5"><font size="3">Huge</font></a></li>
+				<li><a data-edit="fontSize 3"><font size="2">Normal</font></a></li>
+				<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
+			</ul>
+			<a id="bold" class="chat btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"> B
+			</a> <a id="italic" class="chat btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)" style="font-style: italic;"> I
+			</a> <a id="strikethrough" class="chat btn" data-edit="strikethrough" title="Strikethrough" style="text-decoration: line-through;"> S
+			</a> <a id="underline" class="chat btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)" style="text-decoration: underline;"> U
+			</a>
+		</div>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.java b/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.java
new file mode 100644
index 0000000..e433dd2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/ChatToolbar.java
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+import com.googlecode.wicket.jquery.core.IJQueryWidget.JQueryWidget;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.IWysiwygToolbar;
+
+/**
+ * Provides a custom implementation for com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.IWysiwygToolbar suitable
+ * for chat}
+ */
+public class ChatToolbar extends Panel implements IWysiwygToolbar {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer toolbar;
+
+	/**
+	 * Constructor
+	 * 
+	 * @param id
+	 *            the markup-id
+	 */
+	public ChatToolbar(String id) {
+		this(id, null);
+	}
+
+	/**
+	 * Constructor
+	 * 
+	 * @param id
+	 *            the markup-id
+	 * @param model
+	 *            the {@link org.apache.wicket.model.IModel}
+	 */
+	public ChatToolbar(String id, IModel<String> model) {
+		super(id, model);
+
+		toolbar = new WebMarkupContainer("toolbar");
+		toolbar.setMarkupId("bToolbar");
+		add(toolbar);
+
+	}
+
+	public void attachToEditor(Component editor) {
+		toolbar.add(AttributeModifier.replace("data-target", JQueryWidget.getSelector(editor)));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
new file mode 100644
index 0000000..1a4d5b7
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
@@ -0,0 +1,86 @@
+<?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" class="appointmentPopUp">
+			<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 class="date time picker" wicket:id="start"></span></td>
+				</tr>
+				<tr>
+					<td><wicket:ommessage key="571" /></td>
+					<td><span class="date time picker" 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" /><label wicket:for="createRoom"><wicket:ommessage key="1509" /></label></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" /><label wicket:for="passwordProtected"><wicket:ommessage key="524" /></label></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="aowner"></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>
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
new file mode 100644
index 0000000..f94e08d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -0,0 +1,363 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
+import org.apache.openmeetings.web.util.CalendarHelper;
+import org.apache.openmeetings.web.util.FormatHelper;
+import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.openmeetings.web.util.UserMultiChoice;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.util.CollectionModel;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.threeten.bp.LocalDateTime;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class AppointmentDialog extends AbstractFormDialog<Appointment> {
+	private static final long serialVersionUID = 1L;
+	private static final Logger log = Red5LoggerFactory.getLogger(AppointmentDialog.class, webAppRootKey);
+	
+	private AppointmentForm form;
+	private DialogButton save = new DialogButton(WebSession.getString(813));
+	private DialogButton cancel = new DialogButton(WebSession.getString(1130));
+	private String deleteLbl = WebSession.getString(814);
+	private DialogButton delete = new DialogButton(deleteLbl);
+	private String enterRoomLbl = WebSession.getString(1282);
+	private DialogButton enterRoom = new DialogButton(enterRoomLbl);
+	private final CalendarPanel calendarPanel;
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+	final MessageDialog confirmDelete;
+	private IModel<Collection<User>> attendeesModel = new CollectionModel<User>(new ArrayList<User>());
+	
+	@Override
+	public int getWidth() {
+		return 650;
+	}
+	
+	public void setModelObjectWithAjaxTarget(Appointment a, AjaxRequestTarget target) {
+		form.setModelObject(a);
+		form.start.setModelObject(CalendarHelper.getDate(a.getStart()));
+		form.end.setModelObject(CalendarHelper.getDate(a.getEnd()));
+		form.setEnabled(isOwner(a));
+		log.debug(" -- setModelObjectWithAjaxTarget -- Current model " + a);
+		if (a.getId() != null) {
+			delete.setVisible(isOwner(a), target);
+			enterRoom.setVisible(a.getRoom() != null, target);
+		} else {
+			delete.setVisible(false, target);
+			enterRoom.setVisible(false, target);
+		}
+		save.setVisible(isOwner(a), target);
+		super.setModelObject(a);
+	}
+	
+	public AppointmentDialog(String id, String title, CalendarPanel calendarPanel, CompoundPropertyModel<Appointment> model) {
+		super(id, title, model, true);
+		log.debug(" -- AppointmentDialog -- Current model " + getModel().getObject());
+		this.calendarPanel = calendarPanel;
+		setOutputMarkupId(true);
+		form = new AppointmentForm("appForm", model);
+		add(form);
+		confirmDelete = new MessageDialog("confirmDelete", WebSession.getString(814), WebSession.getString(833), DialogButtons.OK_CANCEL, DialogIcon.WARN){
+			private static final long serialVersionUID = 1L;
+
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				if (button != null && button.match(AbstractDialog.LBL_OK)){
+					deleteAppointment(target);
+				}
+			}
+		};
+		add(confirmDelete);
+	}
+
+	protected void deleteAppointment(AjaxRequestTarget target) {
+		getBean(AppointmentDao.class).delete(getModelObject(), getUserId());
+		calendarPanel.refresh(target);		
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(enterRoom, save, delete, cancel);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return save;
+	}
+
+	@Override
+	public Form<?> getForm() {
+		return this.form;
+	}
+
+	@Override
+	protected void onOpen(AjaxRequestTarget target) {
+		target.add(this.form);
+	}
+	
+	@Override
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (delete.equals(button)) {
+			confirmDelete.open(target);
+		} else if (enterRoom.equals(button)) {
+			RoomEnterBehavior.roomEnter((MainPage)getPage(), target, getModelObject().getRoom().getRooms_id());
+		}
+	}
+	
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+        Appointment a = form.getModelObject();
+        final List<MeetingMember> attendees = a.getMeetingMembers() == null ? new ArrayList<MeetingMember>() : a.getMeetingMembers();
+        Set<Long> currentIds = new HashSet<Long>();
+        for (User u : attendeesModel.getObject()) {
+        	if (u.getUser_id() != null) {
+        		currentIds.add(u.getUser_id());
+        	}
+        }
+        
+        //remove users
+        for (Iterator<MeetingMember> i = attendees.iterator(); i.hasNext();) {
+        	MeetingMember m = i.next();
+        	if (!currentIds.contains(m.getUser().getUser_id())) {
+        		i.remove();
+        	}
+        }
+        Set<Long> originalIds = new HashSet<Long>();
+        for (MeetingMember m : attendees) {
+        	originalIds.add(m.getUser().getUser_id());
+        }
+        //add users
+        for (User u : attendeesModel.getObject()) {
+        	if (u.getUser_id() == null || !originalIds.contains(u.getUser_id())) {
+        		MeetingMember mm = new MeetingMember();
+        		mm.setUser(u);
+        		mm.setDeleted(false);
+        		mm.setInserted(a.getInserted());
+        		mm.setUpdated(a.getUpdated());
+        		mm.setAppointment(a);
+        		attendees.add(mm);
+        	}
+        }
+        a.setMeetingMembers(attendees);
+        a.setStart(CalendarHelper.getDate(form.start.getModelObject()));
+        a.setEnd(CalendarHelper.getDate(form.end.getModelObject()));
+        getBean(AppointmentDao.class).update(a, getUserId());
+		target.add(feedback);
+		calendarPanel.refresh(target);
+	}
+	
+	public static boolean isOwner(Appointment object) {
+		return object.getOwner() != null && getUserId() == object.getOwner().getUser_id();
+	}
+	
+	@Override
+	protected void onDetach() {
+		attendeesModel.detach();
+		super.onDetach();
+	}
+	
+	private class AppointmentForm extends Form<Appointment> {
+		private static final long serialVersionUID = 1L;
+		private boolean createRoom = true;
+		private DateTimePicker start = new DateTimePicker("start", Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user locale
+		private DateTimePicker end = new DateTimePicker("end", Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user locale
+		private final PasswordTextField pwd = new PasswordTextField("password");
+		private final Label owner = new Label("aowner", Model.of(""));
+		private final DropDownChoice<RoomType> roomType = new RoomTypeDropDown("room.roomtype");
+		private final DropDownChoice<Room> room = new DropDownChoice<Room>(
+				"room"
+				, getRoomList()
+				, new ChoiceRenderer<Room>("name", "rooms_id"));
+
+		@Override
+		protected void onModelChanged() {
+			super.onModelChanged();
+
+			Appointment a = getModelObject();
+			List<AppointmentReminderTyps> remindTypes = getRemindTypes();
+			if (a.getRemind() == null && !remindTypes.isEmpty()) {
+				a.setRemind(remindTypes.get(0));
+			}
+			
+			List<RoomType> roomTypes = getRoomTypes();
+			if (a.getRoom() == null) {
+				Room r = new Room();
+				r.setAppointment(true);
+				a.setRoom(r);
+			}
+			if (a.getRoom().getRoomtype() == null && !roomTypes.isEmpty()) {
+				a.getRoom().setRoomtype(roomTypes.get(0));
+			}
+			createRoom = Boolean.TRUE.equals(a.getRoom().getAppointment());
+			roomType.setEnabled(createRoom);
+			room.setEnabled(!createRoom);
+			if (a.getId() == null) {
+				java.util.Calendar start = WebSession.getCalendar();
+				start.setTime(a.getStart());
+				java.util.Calendar end = WebSession.getCalendar();
+				end.setTime(a.getEnd());
+				
+				if (start.equals(end)) {
+					end.add(java.util.Calendar.HOUR_OF_DAY, 1);
+					a.setEnd(end.getTime());
+				}
+			}
+			attendeesModel.setObject(new ArrayList<User>());
+			if (a.getMeetingMembers() != null) {
+				for (MeetingMember mm : a.getMeetingMembers()) {
+					attendeesModel.getObject().add(mm.getUser());
+				}
+			}
+			pwd.setEnabled(a.isPasswordProtected());
+			owner.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true);
+			owner.setDefaultModel(Model.of(FormatHelper.formatUser(a.getOwner())));
+			owner.setVisible(!isOwner(a));
+		}
+		
+		public AppointmentForm(String id, CompoundPropertyModel<Appointment> model) {
+			super(id, model);
+			setOutputMarkupId(true);
+			
+			add(feedback.setOutputMarkupId(true));
+			add(new RequiredTextField<String>("title").setLabel(Model.of(WebSession.getString(572))));
+			DefaultWysiwygToolbar toolbar = new DefaultWysiwygToolbar("toolbarContainer");
+			add(toolbar);
+			add(new WysiwygEditor("description", toolbar));
+			add(new TextField<String>("location"));
+			add(start);
+			add(end);
+			pwd.setEnabled(getModelObject().isPasswordProtected());
+			pwd.setOutputMarkupId(true);
+			add(pwd);
+			
+			List<AppointmentReminderTyps> remindTypes = getRemindTypes();
+			add(new DropDownChoice<AppointmentReminderTyps>(
+					"remind"
+					, remindTypes
+					, new ChoiceRenderer<AppointmentReminderTyps>("label.value", "typId")));
+			
+			add(roomType.setEnabled(createRoom).setOutputMarkupId(true));
+			
+			add(room.setRequired(true).setLabel(Model.of(WebSession.getString(406))).setEnabled(!createRoom).setOutputMarkupId(true));
+			add(new AjaxCheckBox("createRoom", new PropertyModel<Boolean>(this, "createRoom")) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onUpdate(AjaxRequestTarget target) {
+					createRoom = getConvertedInput();
+					target.add(roomType.setEnabled(createRoom), room.setEnabled(!createRoom));
+				}
+			});
+			add(new AjaxCheckBox("passwordProtected") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void onUpdate(AjaxRequestTarget target) {
+					AppointmentForm.this.getModelObject().setPasswordProtected(getConvertedInput());
+					pwd.setEnabled(AppointmentForm.this.getModelObject().isPasswordProtected());
+					target.add(pwd);
+				}
+			});
+			add(new UserMultiChoice("attendees", attendeesModel));
+				
+			add(owner);
+		}
+		
+		private List<AppointmentReminderTyps> getRemindTypes() {
+			return getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList(getLanguage());
+		}
+		
+		private List<Room> getRoomList() {
+			//FIXME need to be reviewed
+			List<Room> result = new ArrayList<Room>();
+			RoomDao dao = getBean(RoomDao.class);
+			result.addAll(dao.getPublicRooms());
+			for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
+				result.addAll(dao.getOrganisationRooms(ou.getOrganisation().getOrganisation_id()));
+			}
+			if (getModelObject().getRoom() != null && getModelObject().getRoom().getAppointment()) { //FIXME review
+				result.add(getModelObject().getRoom());
+			}
+			return result;
+		}
+		
+		@Override
+		protected void onValidate() {
+			if (end.getConvertedInput().isBefore(start.getConvertedInput())) {
+				error(WebSession.getString(1592));
+			}
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
new file mode 100644
index 0000000..18e1320
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.CalendarHelper;
+
+import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
+import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
+import com.googlecode.wicket.jquery.ui.calendar.ICalendarVisitor;
+
+public class AppointmentModel extends CalendarModel implements ICalendarVisitor {
+	private static final long serialVersionUID = 1L;
+
+	public void visit(CalendarEvent event) {
+		//every event can be customized
+	}
+
+	@Override
+	protected List<? extends CalendarEvent> load() {
+		List<CalendarEvent> list = new ArrayList<CalendarEvent>();
+		for (Appointment a : Application.getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
+			list.add(new OmCalendarEvent(a));
+		}
+		return list;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarFunctionsBehavior.java b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarFunctionsBehavior.java
new file mode 100644
index 0000000..76616f2
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarFunctionsBehavior.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+/**
+ * @author Sebastien Briquet
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import java.util.Map;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.resource.TextTemplateResourceReference;
+import org.apache.wicket.util.collections.MicroMap;
+
+public class CalendarFunctionsBehavior extends Behavior {
+	private static final long serialVersionUID = 1L;
+	private final String markupId;
+	
+	public CalendarFunctionsBehavior(String markupId) {
+		this.markupId = markupId;
+	}
+	
+	private IModel<Map<String, Object>> newResourceModel() {
+		return Model.ofMap(new MicroMap<String, Object>("markupId", this.markupId));
+	}
+	
+	private ResourceReference newResourceReference() {
+		return new TextTemplateResourceReference(CalendarFunctionsBehavior.class, "calendar-functions.js", this.newResourceModel());
+	}
+	
+	@Override
+	public void renderHead(Component component, IHeaderResponse response) {
+		super.renderHead(component, response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(this.newResourceReference(), "calendar-functions")));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
new file mode 100644
index 0000000..6468e94
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.html
@@ -0,0 +1,33 @@
+<?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 id="wrapper-panel-frame" class="ui-corner-all">
+			<form wicket:id="form">
+				<div id="calendar" wicket:id="calendar"></div>
+				<br/>
+				<!-- div wicket:id="feedback"></div -->
+			</form>
+		</div>
+		<div wicket:id="appointment">[appointment]</div>
+		<!-- bottom section -->
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
new file mode 100644
index 0000000..77186b7
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -0,0 +1,271 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_FIRST_DAY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentReminderTypDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.util.CalendarHelper;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZonedDateTime;
+import org.threeten.bp.temporal.ChronoUnit;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.calendar.Calendar;
+import com.googlecode.wicket.jquery.ui.calendar.CalendarView;
+
+public class CalendarPanel extends UserPanel {
+	private static final Logger log = Red5LoggerFactory.getLogger(CalendarPanel.class, webAppRootKey);
+	private static final long serialVersionUID = 1L;
+	private static final String javaScriptMarkup = "setCalendarHeight();";
+	private final String javaScriptAddDatepicker;
+	private final AbstractAjaxTimerBehavior refreshTimer = new AbstractAjaxTimerBehavior(Duration.seconds(10)) {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void onTimer(AjaxRequestTarget target) {
+			target.appendJavaScript("setCalendarHeight();");
+			refresh(target);
+		}
+	};
+	private Calendar calendar;
+	
+	@Override
+	public void onMenuPanelLoad(AjaxRequestTarget target) {
+	}
+
+	@Override
+	public void cleanup(AjaxRequestTarget target) {
+		refreshTimer.stop(target);
+	}
+	
+	private AppointmentDao getDao() {
+		return getBean(AppointmentDao.class);
+	}
+	
+	private AppointmentReminderTypDao getAppointmentReminderTypDao() {
+		return getBean(AppointmentReminderTypDao.class);
+	}
+	
+	public void refresh(AjaxRequestTarget target) {
+		calendar.refresh(target);
+	}
+	
+	Calendar getCalendar() {
+		return calendar;
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+
+		AjaxRequestTarget target = getRequestCycle().find(AjaxRequestTarget.class);
+		if (target != null) {
+			target.appendJavaScript(javaScriptMarkup);
+			target.appendJavaScript(javaScriptAddDatepicker);
+		} else {
+			response.render(JavaScriptHeaderItem.forScript(javaScriptMarkup, this.getId()));
+		}
+	}
+
+	public CalendarPanel(String id) {
+		super(id);
+		
+		final Form<Date> form = new Form<Date>("form");
+		add(form);
+		
+		final AppointmentDialog dialog = new AppointmentDialog("appointment", WebSession.getString(815)
+				, this, new CompoundPropertyModel<Appointment>(getDefault()));
+		add(dialog);
+		
+		boolean isRtl = Boolean.TRUE.equals(WebSession.getLanguageObj().getRtl());
+		javaScriptAddDatepicker = String.format("addCalButton(%s, 'datepicker');", isRtl);
+		Options options = new Options();
+		options.set("isRTL", isRtl);
+		options.set("header", isRtl ? "{left: 'agendaDay,agendaWeek,month', center: 'title', right: 'today nextYear,next,prev,prevYear'}"
+				: "{left: 'prevYear,prev,next,nextYear today', center: 'title', right: 'month,agendaWeek,agendaDay'}");
+		options.set("allDaySlot", false);
+		options.set("axisFormat", Options.asString("H(:mm)"));
+		options.set("defaultEventMinutes", 60);
+		options.set("timeFormat", Options.asString("H(:mm)"));
+
+		options.set("buttonText", "{month: '" + WebSession.getString(801) +
+								"', week: '" + WebSession.getString(800) + 
+								"', day: '"  + WebSession.getString(799) + 
+								"', today: '"  + WebSession.getString(1555) + 
+								"'}");
+
+		JSONArray monthes = new JSONArray();
+		JSONArray shortMonthes = new JSONArray();
+		JSONArray days = new JSONArray();
+		JSONArray shortDays = new JSONArray();
+		try {
+			// first week day must be Sunday
+			days.put(0, WebSession.getString(466));
+			shortDays.put(0, WebSession.getString(459));
+			for (int i = 0; i < 12; i++) {
+				monthes.put(i, WebSession.getString(469 + i));
+				shortMonthes.put(i, WebSession.getString(1556 + i));
+				if (i + 1 < 7) {
+					days.put(i + 1, WebSession.getString(460 + i));
+					shortDays.put(i + 1, WebSession.getString(453 + i));
+				}
+			}
+		} catch (JSONException e) {
+			log.error("Unexpected error while creating label lists", e);
+		}
+		options.set("monthNames", monthes.toString());
+		options.set("monthNamesShort", shortMonthes.toString());
+		options.set("dayNames", days.toString());
+		options.set("dayNamesShort", shortDays.toString());
+		options.set("firstDay", getBean(ConfigurationDao.class).getConfValue(CONFIG_CALENDAR_FIRST_DAY, String.class, "0"));
+		
+		calendar = new Calendar("calendar", new AppointmentModel(), options) {
+			private static final long serialVersionUID = 1L;
+			
+			@Override
+			protected void onInitialize() {
+				super.onInitialize();
+				add(new CalendarFunctionsBehavior(getMarkupId()));
+			}
+			
+			@Override
+			public boolean isSelectable() {
+				return true;
+			}
+			
+			@Override
+			public boolean isDayClickEnabled() {
+				return true;
+			}
+			
+			@Override
+			public boolean isEventClickEnabled() {
+				return true;
+			}
+			
+			@Override
+			public boolean isEventDropEnabled() {
+				return true;
+			}
+			
+			@Override
+			public boolean isEventResizeEnabled() {
+				return true;
+			}
+			
+			//no need to override onDayClick
+			
+			@Override
+			public void onSelect(AjaxRequestTarget target, CalendarView view, LocalDateTime start, LocalDateTime end, boolean allDay) {
+				Appointment a = getDefault();
+				LocalDateTime s = start, e = end;
+				if (CalendarView.month == view) {
+					LocalDateTime now = ZonedDateTime.now(CalendarHelper.getZoneId()).toLocalDateTime();
+					s = start.withHour(now.getHour()).withMinute(now.getMinute());
+					e = s.plus(1, ChronoUnit.HOURS);
+				}
+				a.setStart(CalendarHelper.getDate(s));
+				a.setEnd(CalendarHelper.getDate(e));
+				dialog.setModelObjectWithAjaxTarget(a, target);
+				
+				dialog.open(target);
+			}
+			
+			@Override
+			public void onEventClick(AjaxRequestTarget target, CalendarView view, int eventId) {
+				Appointment a = getDao().get((long)eventId);
+				dialog.setModelObjectWithAjaxTarget(a, target);
+				
+				dialog.open(target);
+			}
+			
+			@Override
+			public void onEventDrop(AjaxRequestTarget target, int eventId, long delta, boolean allDay) {
+				AppointmentDao dao = getDao();
+				Appointment a = dao.get((long)eventId);
+
+				if (!AppointmentDialog.isOwner(a)) {
+					return;
+				}
+				java.util.Calendar cal = WebSession.getCalendar();
+				cal.setTime(a.getStart());
+				cal.add(java.util.Calendar.MILLISECOND, (int)delta); //FIXME?
+				a.setStart(cal.getTime());
+				
+				cal.setTime(a.getEnd());
+				cal.add(java.util.Calendar.MILLISECOND, (int)delta); //FIXME?
+				a.setEnd(cal.getTime());
+				
+				dao.update(a, getUserId());
+				//FIXME add feedback info
+			}
+
+			@Override
+			public void onEventResize(AjaxRequestTarget target, int eventId, long delta) {
+				AppointmentDao dao = getDao();
+				Appointment a = dao.get((long)eventId);
+				if (!AppointmentDialog.isOwner(a)) {
+					return;
+				}
+				java.util.Calendar cal = WebSession.getCalendar();
+				cal.setTime(a.getEnd());
+				cal.add(java.util.Calendar.MILLISECOND, (int)delta); //FIXME?
+				a.setEnd(cal.getTime());
+				
+				dao.update(a, getUserId());
+				//FIXME add feedback info
+			}
+		};
+		
+		form.add(calendar);
+		add(refreshTimer);
+	}
+	
+	private Appointment getDefault() {
+		Appointment a = new Appointment();
+		a.setRemind(getAppointmentReminderTypDao().get(3L)); //TODO: Make configurable
+		a.setOwner(getBean(UserDao.class).get(getUserId()));
+		a.setTitle(WebSession.getString(1444));
+		log.debug(" -- getDefault -- Current model " + a);
+		return a;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java b/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
new file mode 100644
index 0000000..243b7bf
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.calendar;
+
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.web.util.CalendarHelper;
+
+import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
+
+public class OmCalendarEvent extends CalendarEvent {
+	private static final long serialVersionUID = 1L;
+	
+	public OmCalendarEvent(Appointment a) {
+		super(a.getId().intValue(), a.getTitle(), null);
+		setStart(CalendarHelper.getDate(a.getStart()));
+		setEnd(CalendarHelper.getDate(a.getEnd()));
+		setEditable(AppointmentDialog.isOwner(a));
+		setAllDay(false);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js b/src/web/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
new file mode 100644
index 0000000..fe10b46
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+/**
+ * @author Sebastien Briquet
+ */
+function getCalendarHeight() {
+    return $(window).height() - $('#${markupId}').position().top - 20;
+}
+
+function setCalendarHeight() {
+	var cal = $('#${markupId}');
+	if (cal.length) {
+    	cal.fullCalendar('option', 'height', getCalendarHeight());
+	}
+}
+
+$(function() {
+    $(window).load(function() { setCalendarHeight(); } );
+});
+
+function toggleDatePicker(id) {
+	var dp = $("#" + id);
+	dp.datepicker(dp.datepicker("widget").is(":visible") ? "hide" : "show");
+	return false;
+}
+function addCalButton(rtl, id) {
+	var my_button = 
+		'<button class="fc-button fc-state-default fc-corner-right fc-corner-left" onclick="return toggleDatePicker(\'' + id + '\');">' +
+		'<input type="text" id="' + id + '" /></button>';
+
+	if (rtl) {
+		$(".fc .fc-toolbar .fc-right").prepend(my_button);
+	} else {
+		$(".fc .fc-toolbar .fc-left").append(my_button);
+	}
+	 
+	var dp = $("#" + id);
+	dp.datepicker({
+		showOn: "button",
+		buttonImage: "images/calendar.gif",
+		buttonImageOnly: true,
+		changeMonth: true,
+		changeYear: true,
+		changeDay: true,
+		dayNames: $('#${markupId}').fullCalendar("option","dayNames"),
+		dayNamesShort: $('#${markupId}').fullCalendar("option","dayNamesShort"),
+		dayNamesMin: $('#${markupId}').fullCalendar("option","dayNamesShort"),
+		monthNames: $('#${markupId}').fullCalendar("option","monthNames"),
+		monthNamesShort: $('#${markupId}').fullCalendar("option","monthNamesShort"),
+		isRTL: rtl,
+		onChangeMonthYear: function(year, month, inst) {
+			$('#${markupId}').fullCalendar('gotoDate', year + '-' + ('0' + month).slice(-2) + '-' + inst.selectedDay);
+		},
+		onSelect: function(dateText, inst) {
+			var date = new Date(dateText);
+			$('#${markupId}').fullCalendar('gotoDate', date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + date.getDate());
+		}
+	});
+	dp.hide();
+}
+ 
+function setDatepickerDate(id, date) {
+	$("#"+id).datepicker('setDate', date);
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
new file mode 100644
index 0000000..6b6f1c3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.AbstractWidget;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetLocation;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class MyRoomsWidget extends AbstractWidget {
+	private static final long serialVersionUID = 1L;
+	public static final String WIDGET_ID_MY_ROOMS = "MyRoomsWidget";
+
+	public MyRoomsWidget() {
+		super();
+		location = new WidgetLocation(0, 1);
+		init();
+	}
+	
+	@Override
+	public void init() {
+		super.init();
+		title = WebSession.getString(781L);
+		id = WIDGET_ID_MY_ROOMS;
+	}
+	
+	public WidgetView createView(String viewId) {
+		return new MyRoomsWidgetView(viewId, new Model<Widget>(this));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
new file mode 100644
index 0000000..dfb448f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+
+import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
+
+public class MyRoomsWidgetDescriptor implements WidgetDescriptor {
+	private static final long serialVersionUID = 1L;
+
+	public String getName() {
+		return WebSession.getString(781L);
+	}
+
+	public String getProvider() {
+		return "Apache Openmeetings";
+	}
+
+	public String getDescription() {
+		return WebSession.getString(782L);
+	}
+
+	public String getWidgetClassName() {
+		return MyRoomsWidget.class.getName();
+	}
+
+	public String getTypeName() {
+		return "om.widget.myrooms";
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
new file mode 100644
index 0000000..3ae8f1d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
@@ -0,0 +1,25 @@
+<?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 wicket:id="rooms"></div>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
new file mode 100644
index 0000000..1d8ba5a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.web.common.UserPanel.getMyRooms;
+
+import org.apache.openmeetings.web.user.rooms.RoomsPanel;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class MyRoomsWidgetView extends WidgetView {
+	private static final long serialVersionUID = 1L;
+
+	public MyRoomsWidgetView(String id, Model<Widget> model) {
+		super(id, model);
+		
+		add(new RoomsPanel("rooms", getMyRooms()));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html b/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
new file mode 100644
index 0000000..63665f4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.html
@@ -0,0 +1,25 @@
+<?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 wicket:id="dashboard" class="dashboard"></div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
new file mode 100644
index 0000000..5d3cdc7
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.Dashboard;
+import ro.fortsoft.wicket.dashboard.web.DashboardPanel;
+
+public class OmDashboardPanel extends UserPanel {
+	private static final long serialVersionUID = 7815949875883825949L;
+
+	public OmDashboardPanel(String id) {
+		super(id);
+
+		add(new DashboardPanel("dashboard", new Model<Dashboard>(WebSession.getDashboard())).setRtlModel(Model.of(WebSession.getLanguageObj().getRtl())));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
new file mode 100644
index 0000000..a9d57ed
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.AbstractWidget;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetLocation;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class RssWidget extends AbstractWidget {
+	private static final long serialVersionUID = 1L;
+	public static final String WIDGET_ID_RSS = "RssWidget";
+
+	public RssWidget() {
+		super();
+		location = new WidgetLocation(1, 1);
+		init();
+	}
+	
+	@Override
+	public void init() {
+		super.init();
+		title = WebSession.getString(277L);
+		id = WIDGET_ID_RSS;
+	}
+	
+	public WidgetView createView(String viewId) {
+		return new RssWidgetView(viewId, new Model<Widget>(this));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
new file mode 100644
index 0000000..e5f35d9
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetDescriptor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+
+import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
+
+public class RssWidgetDescriptor implements WidgetDescriptor {
+	private static final long serialVersionUID = -9113376703084624276L;
+
+	public String getName() {
+		return WebSession.getString(277L);
+	}
+
+	public String getProvider() {
+		return "Apache Openmeetings";
+	}
+
+	public String getDescription() {
+		return WebSession.getString(277L);
+	}
+
+	public String getWidgetClassName() {
+		return RssWidget.class.getName();
+	}
+
+	public String getTypeName() {
+		return "om.widget.rss";
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
new file mode 100644
index 0000000..4671c4e
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
@@ -0,0 +1,85 @@
+<?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>
+	<script type="text/javascript">
+		var MAX_ITEM_COUNT = 5;
+		function getRssItems(url, next) {
+			//TODO items need to be merged and sorted by date
+			$.ajax({
+				url: url
+				, type: 'GET'
+			    , crossDomain: true
+				, dataType: 'xml'
+				, success: function(data, status, xhr) {
+					var $xml = $(data);
+					var counter = MAX_ITEM_COUNT;
+					$xml.find("item").each(function() {
+						var $this = $(this), item = {
+							title : $this.find("title").text(),
+							link : $this.find("link").text(),
+							description : $this.find("description").text(),
+							pubDate : $this.find("pubDate").text(),
+							author : $this.find("author").text()
+						}
+						addItem(item);
+						if (--counter < 0) {
+							return false;
+						}
+					});
+					counter = MAX_ITEM_COUNT;
+					$xml.find("entry").each(function() {
+						var $this = $(this), item = {
+							title : $this.find("title").text(),
+							link : $this.find("link").text(),
+							description : $this.find("content"),
+							pubDate : $this.find("published").text(),
+							author : $this.find("author").text()
+						}
+						addItem(item);
+						if (--counter < 0) {
+							return false;
+						}
+					});
+					if (next) {
+						getRssItems(next, null)
+					} else {
+						$('#feeds').accordion({collapsible: true, active: false, header: 'h3'});
+					}
+				}
+			});
+		}
+		function addItem(item) {
+			//TODO need to be checked
+			$('#feeds').append('<h3>' + item.title + '</h3>')
+				.append($('<div></div>').append(item.description));
+		}
+		function loadRssTab(url1, url2) {
+			$('#feedcontainer').html('');
+			$('#feedcontainer').append('<div id="feeds"></div>');
+			getRssItems(url1, url2);
+		}
+	</script>
+</wicket:head>
+<wicket:panel>
+	<div id="feedcontainer"></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
new file mode 100644
index 0000000..0b38886
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.rss.LoadAtomRssFeed.getFeedConnection;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED1_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RSS_FEED2_KEY;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class RssWidgetView extends WidgetView {
+	private static final long serialVersionUID = -6257866996099503210L;
+	private RSSFeedBehavior feed1; 
+	private RSSFeedBehavior feed2; 
+
+	public RssWidgetView(String id, Model<Widget> model) {
+		super(id, model);
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		add(feed1 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED1_KEY, String.class, "")));
+		add(feed2 = new RSSFeedBehavior(cfgDao.getConfValue(CONFIG_RSS_FEED2_KEY, String.class, "")));
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(OnDomReadyHeaderItem.forScript("loadRssTab('" + feed1.getCallbackUrl() + "',"
+				+ "'" + feed2.getCallbackUrl() + "');")) ;
+	}
+	
+	class RSSFeedBehavior extends AbstractAjaxBehavior {
+		private static final long serialVersionUID = 721009368063152450L;
+		private String url;
+
+		RSSFeedBehavior(String url) {
+			this.url = url;
+		}
+		
+		public void onRequest() {
+			ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(new AbstractResourceStream() {
+				private static final long serialVersionUID = -322593118428697261L;
+				HttpURLConnection con;
+				
+				public InputStream getInputStream() throws ResourceStreamNotFoundException {
+					try {
+						con = getFeedConnection(url);
+						con.connect();
+						return con.getInputStream();
+					} catch (IOException e) {
+						throw new ResourceStreamNotFoundException();
+					}
+				}
+
+				public void close() throws IOException {
+					if (con != null) {
+						con.disconnect();
+					}
+				}
+			}, "feed");
+			handler.setContentDisposition(ContentDisposition.ATTACHMENT);
+			getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
new file mode 100644
index 0000000..77cd625
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.AbstractWidget;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetLocation;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class StartWidget extends AbstractWidget {
+	private static final long serialVersionUID = 1L;
+
+	public StartWidget() {
+		super();
+		location = new WidgetLocation(1, 0);
+		init();
+	}
+	
+	@Override
+	public void init() {
+		super.init();
+		title = WebSession.getString(774L);
+		id = "StartWidget";
+	}
+	
+	public WidgetView createView(String viewId) {
+		return new StartWidgetView(viewId, new Model<Widget>(this));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
new file mode 100644
index 0000000..3f4820f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetDescriptor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+
+import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
+
+public class StartWidgetDescriptor implements WidgetDescriptor {
+	private static final long serialVersionUID = 2533010836978961930L;
+
+	public String getName() {
+		return WebSession.getString(774L);
+	}
+
+	public String getProvider() {
+		return "Apache Openmeetings";
+	}
+
+	public String getDescription() {
+		return WebSession.getString(804L);
+	}
+
+	public String getWidgetClassName() {
+		return StartWidget.class.getName();
+	}
+
+	public String getTypeName() {
+		return "om.widget.start";
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
new file mode 100644
index 0000000..1fbfb99
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
@@ -0,0 +1,38 @@
+<?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>
+		<h3><wicket:ommessage key="774"/></h3>
+		<div><div wicket:id="step1" class="clickable start_step1"><wicket:ommessage key="768"/></div></div>
+		<div><div wicket:id="step2" class="clickable start_step2"><wicket:ommessage key="771"/></div></div>
+		<div><div wicket:id="step3" class="clickable start_step3"><wicket:ommessage key="772"/></div></div>
+		<div><div wicket:id="step4" class="clickable start_step4"><wicket:ommessage key="773"/></div></div>
+		<table>
+			<tr>
+				<td><wicket:ommessage key="804" escape="false"/></td>
+				<td>
+					<button wicket:id="start" type="button"><wicket:ommessage key="788"/></button><br/>
+					<button wicket:id="calendar" type="button"><wicket:ommessage key="291"/></button>
+				</td>
+			</tr>
+		</table>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
new file mode 100644
index 0000000..3a53812
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.web.util.OmUrlFragment.CALENDAR;
+import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
+
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+import com.googlecode.wicket.jquery.ui.form.button.Button;
+
+public class StartWidgetView extends WidgetView {
+	private static final long serialVersionUID = -3886388347737468022L;
+
+	public StartWidgetView(String id, Model<Widget> model) {
+		super(id, model);
+		add(new WebMarkupContainer("step1").add(new PublicRoomsEventBehavior()));
+		add(new WebMarkupContainer("step2").add(new PublicRoomsEventBehavior()));
+		add(new WebMarkupContainer("step3").add(new PublicRoomsEventBehavior()));
+		add(new WebMarkupContainer("step4").add(new PublicRoomsEventBehavior()));
+		add(new Button("start").add(new PublicRoomsEventBehavior()));
+		add(new Button("calendar").add(new AjaxEventBehavior("onclick") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				((MainPage)getPage()).updateContents(CALENDAR, target);
+			}
+		}));
+	}
+	
+	private class PublicRoomsEventBehavior extends AjaxEventBehavior {
+		private static final long serialVersionUID = 1L;
+
+		public PublicRoomsEventBehavior() {
+			super("onclick");
+		}
+		
+		@Override
+		protected void onEvent(AjaxRequestTarget target) {
+			((MainPage)getPage()).updateContents(ROOMS_PUBLIC, target);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
new file mode 100644
index 0000000..07730c4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.AbstractWidget;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetLocation;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class WelcomeWidget extends AbstractWidget {
+	private static final long serialVersionUID = 1L;
+
+	public WelcomeWidget() {
+		super();
+		location = new WidgetLocation(0, 0);
+		init();
+	}
+	
+	@Override
+	public void init() {
+		super.init();
+		title = WebSession.getString(1546L);
+		id = "WelcomeWidget";
+	}
+	
+	public WidgetView createView(String viewId) {
+		return new WelcomeWidgetView(viewId, new Model<Widget>(this));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
new file mode 100644
index 0000000..7f2758d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetDescriptor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import org.apache.openmeetings.web.app.WebSession;
+
+import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
+
+public class WelcomeWidgetDescriptor implements WidgetDescriptor {
+	private static final long serialVersionUID = 7835392425157215242L;
+
+	public String getName() {
+		return WebSession.getString(1546L);
+	}
+
+	public String getProvider() {
+		return "Apache Openmeetings";
+	}
+
+	public String getDescription() {
+		return WebSession.getString(1547L);
+	}
+
+	public String getWidgetClassName() {
+		return WelcomeWidget.class.getName();
+	}
+
+	public String getTypeName() {
+		return "om.widget.welcome";
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
new file mode 100644
index 0000000..d8aa057
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.html
@@ -0,0 +1,43 @@
+<?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>
+   	<table>
+   		<tr>
+   			<td><div wicket:id="img"></div></td>
+   			<td>
+   				<h3><wicket:ommessage key="376"/>&nbsp;<span wicket:id="firstname"></span>&nbsp;<span wicket:id="lastname"></span></h3>
+   				<wicket:ommessage key="1143"/>&nbsp;<span wicket:id="tz"></span><br/>
+   				<wicket:ommessage key="378"/>&nbsp;<a wicket:id="openUnread"><span wicket:id="unread"></span></a><br/>
+   				<a wicket:id="editProfile"><wicket:ommessage key="377"/></a>
+   			</td>
+   		</tr>
+   		<tr>
+   			<td colspan="2" class="help support">
+   				<h3><wicket:ommessage key="281"/></h3>
+   				<a wicket:ommessage="href:282"><wicket:ommessage key="286"/></a><br/>
+   				<a wicket:ommessage="href:283"><wicket:ommessage key="287"/></a><br/>
+				<a wicket:id="netTest" target="_blank"><wicket:ommessage key="1527"/></a><br/>
+			</td>
+   		</tr>
+   	</table>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
new file mode 100644
index 0000000..f1586c9
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.dashboard;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.web.WidgetView;
+
+public class WelcomeWidgetView extends WidgetView {
+	private static final long serialVersionUID = -6257866996099503210L;
+
+	public WelcomeWidgetView(String id, Model<Widget> model) {
+		super(id, model);
+
+		User u = getBean(UserDao.class).get(getUserId());
+		add(new UploadableProfileImagePanel("img", getUserId()));
+		 //FIXME this need to be aligned according to Locale
+		add(new Label("firstname", Model.of(u.getFirstname())));
+		add(new Label("lastname", Model.of(u.getLastname())));
+		add(new Label("tz", Model.of(u.getTimeZoneId())));
+		add(new AjaxLink<Void>("openUnread") {
+			private static final long serialVersionUID = -1847619557485964386L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				((MainPage)getPage()).updateContents(PROFILE_MESSAGES, target);
+			}
+		}.add(new Label("unread", Model.of("" + getBean(PrivateMessagesDao.class).count(getUserId(), INBOX_FOLDER_ID, null)))));
+		add(new AjaxLink<Void>("editProfile") {
+			private static final long serialVersionUID = -1847619557485964386L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				((MainPage)getPage()).updateContents(PROFILE_EDIT, target);
+			}
+		});
+		add(new Link<Void>("netTest") {
+			private static final long serialVersionUID = -9055312659797800331L;
+
+			@Override
+			public void onClick() {
+				PageParameters pp = new PageParameters();
+				pp.add("swf", "networktesting.swf10.swf");
+				setResponsePage(SwfPage.class, pp);
+			}
+		});
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html b/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html
new file mode 100644
index 0000000..9eec9bb
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.html
@@ -0,0 +1,80 @@
+<?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>
+	<style type="text/css">
+		.ui-autocomplete {
+			z-index: 999 !important;
+		}
+	</style>
+</wicket:head>
+<wicket:panel>
+	<form wicket:id="form">
+		<table style="width: 100%;">
+			<tr>
+				<td colspan="2" wicket:id="feedback"></td>
+			</tr>
+			<tr>
+				<td class="messages column label"><wicket:ommessage key="1210"/></td>
+				<td wicket:ommessage="title:1588"><input class="messages text to" type="hidden" wicket:id="to"/></td>
+			</tr>
+			<tr>
+				<td class="messages column label"><wicket:ommessage key="1211"/></td>
+				<td><input class="messages text" type="text" wicket:id="subject"/></td>
+			</tr>
+			<tr>
+				<td colspan="2">
+					<div wicket:id="toolbarContainer"></div>
+					<div wicket:id="message"></div>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="2"><input type="checkbox" wicket:id="bookedRoom" /><label wicket:for="bookedRoom"><wicket:ommessage key="1218"/></label></td>
+			</tr>
+			<tr wicket:id="roomParamsBlock">
+				<td colspan="2" wicket:id="roomParams">
+					<table style="width: 100%">
+						<tr>
+							<td style="width: 70px;">
+								<table>
+									<tr>
+										<td><wicket:ommessage key="194"/></td>
+										<td><select class="messages selector" wicket:id="room.roomtype"></select></td>
+									</tr>
+									<tr>
+										<td><wicket:ommessage key="570" /></td>
+										<td><span class="date time picker" wicket:id="start"></span></td>
+									</tr>
+									<tr>
+										<td><wicket:ommessage key="571" /></td>
+										<td><span class="date time picker" wicket:id="end"></span></td>
+									</tr>
+								</table>
+							</td>
+							<td><div class="info-text"><wicket:ommessage key="1221" /></div></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</form>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java b/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
new file mode 100644
index 0000000..790edf9
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
@@ -0,0 +1,242 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.RoomTypeDropDown.getRoomTypes;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.util.LinkHelper;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.CalendarHelper;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.openmeetings.web.util.UserMultiChoice;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.CollectionModel;
+import org.threeten.bp.LocalDateTime;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
+import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.toolbar.DefaultWysiwygToolbar;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class MessageDialog extends AbstractFormDialog<PrivateMessage> {
+	private static final long serialVersionUID = 1L;
+	private final Form<PrivateMessage> form;
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+	String sendLbl = WebSession.getString(218);
+	DialogButton send = new DialogButton(sendLbl);
+	private DialogButton cancel = new DialogButton(WebSession.getString(219));
+	private final WebMarkupContainer roomParamsBlock = new WebMarkupContainer("roomParamsBlock");
+	private final WebMarkupContainer roomParams = new WebMarkupContainer("roomParams");
+	private DateTimePicker start = new DateTimePicker("start", Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user locale
+	private DateTimePicker end = new DateTimePicker("end", Model.of(LocalDateTime.now()), "yyyy/MM/dd", "HH:mm:ss");  //FIXME use user locale
+	private boolean isPrivate = false; 
+	private final IModel<Collection<User>> modelTo = new CollectionModel<User>(new ArrayList<User>());
+
+	@Override
+	public int getWidth() {
+		return 650;
+	}
+	
+	public void open(AjaxRequestTarget target, long userId) {
+		getModelObject().setTo(getBean(UserDao.class).get(userId));
+		open(target);
+	}
+	
+	public MessageDialog reset(boolean isPrivate) {
+		start.setModelObject(LocalDateTime.now());
+		end.setModelObject(LocalDateTime.now()); //TODO should we add 1 hour or generalize with Calendar???
+		modelTo.setObject(new ArrayList<User>());
+		PrivateMessage p = new PrivateMessage();
+		p.setFrom(getBean(UserDao.class).get(getUserId()));
+		p.setOwner(p.getFrom());
+		p.setIsRead(false);
+		p.setFolderId(INBOX_FOLDER_ID);
+		Room r = new Room();
+		r.setAppointment(true);
+		r.setRoomtype(getRoomTypes().get(0));
+		p.setRoom(r);
+		setModelObject(p);
+		roomParams.setVisible(getModelObject().isBookedRoom());
+		form.setModelObject(p);
+		this.isPrivate = isPrivate;
+		return this;
+	}
+	
+	@Override
+	protected void onOpen(AjaxRequestTarget target) {
+		if (getModel().getObject().getTo() != null) {
+			modelTo.getObject().add(getModel().getObject().getTo());
+		}
+		target.add(form);
+		super.onOpen(target);
+	}
+	
+	public MessageDialog(String id, CompoundPropertyModel<PrivateMessage> model) {
+		super(id, WebSession.getString(1209), model);
+		form = new Form<PrivateMessage>("form", getModel());
+		
+		form.add(feedback.setOutputMarkupId(true));
+		form.add(new UserMultiChoice("to", modelTo).setRequired(true));
+		form.add(new TextField<String>("subject"));
+		DefaultWysiwygToolbar toolbar = new DefaultWysiwygToolbar("toolbarContainer");
+		form.add(toolbar);
+		form.add(new WysiwygEditor("message", toolbar));
+		form.add(roomParamsBlock.setOutputMarkupId(true));
+		final CheckBox bookedRoom = new CheckBox("bookedRoom");
+		form.add(bookedRoom.setOutputMarkupId(true).add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+			
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				PrivateMessage p = MessageDialog.this.getModelObject();
+				p.setBookedRoom(!p.isBookedRoom());
+				roomParams.setVisible(p.isBookedRoom());
+				target.add(bookedRoom, roomParamsBlock);
+			}
+		}));
+		roomParamsBlock.add(roomParams);
+		roomParams.add(new RoomTypeDropDown("room.roomtype"));
+		roomParams.add(start);
+		roomParams.add(end);
+		add(form.setOutputMarkupId(true));
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(send, cancel);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return send;
+	}
+
+	@Override
+	public Form<PrivateMessage> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		PrivateMessage p = getModelObject();
+		p.setInserted(new Date());
+		if (p.isBookedRoom()) {
+			Room r = p.getRoom();
+			r.setName(p.getSubject());
+			r.setComment("");
+			r.setNumberOfPartizipants(100L);
+			r.setAppointment(false);
+			r.setAllowUserQuestions(true);
+			r.setAllowFontStyles(true);
+			r = getBean(RoomDao.class).update(r, getUserId());
+			p.setRoom(r);
+		} else {
+			p.setRoom(null);
+		}
+		PrivateMessagesDao msgDao = getBean(PrivateMessagesDao.class);
+		for (User to : modelTo.getObject()) {
+			UserDao userDao = getBean(UserDao.class); 
+			if (to.getUser_id() == null) {
+				userDao.update(to, getUserId());
+			}
+			//to send
+			p = new PrivateMessage(p);
+			p.setTo(to);
+			p.setFolderId(SENT_FOLDER_ID);
+			msgDao.update(p, getUserId());
+			//to inbox
+			p = new PrivateMessage(p);
+			p.setOwner(to);
+			p.setFolderId(INBOX_FOLDER_ID);
+			msgDao.update(p, getUserId());
+			if (to.getAdresses() != null) {
+				String aLinkHTML = 	(isPrivate && to.getType() == Type.user) ? "<br/><br/>" + "<a href='" + ContactsHelper.getLink() + "'>"
+							+ WebSession.getString(1302) + "</a><br/>" : "";
+				String invitation_link = "";
+				if (p.isBookedRoom()) {
+					Invitation i = getBean(InvitationManager.class).getInvitation(to, p.getRoom(),
+							false, null, Valid.Period
+							, userDao.get(getUserId()), userDao.get(getUserId()).getLanguage_id(),
+							CalendarHelper.getDate(start.getModelObject()), CalendarHelper.getDate(end.getModelObject()), null);
+					
+					invitation_link = LinkHelper.getInvitationLink(getBean(ConfigurationDao.class).getBaseUrl(), i);
+
+					if (invitation_link == null) {
+						invitation_link = "";
+					} else {
+						invitation_link = "<br/>" //
+								+ WebSession.getString(503)
+								+ "<br/><a href='" + invitation_link
+								+ "'>"
+								+ WebSession.getString(504) + "</a><br/>";
+					}
+				}
+				
+				getBean(MailHandler.class).send(to.getAdresses().getEmail(),
+						WebSession.getString(1301) + p.getSubject(),
+						(p.getMessage() == null ? "" : p.getMessage().replaceAll("\\<.*?>", "")) + aLinkHTML + invitation_link);
+			}
+		}
+	}
+	
+	@Override
+	protected void onDetach() {
+		modelTo.detach();
+		super.onDetach();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
new file mode 100644
index 0000000..820e3c0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
@@ -0,0 +1,111 @@
+<?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>
+	<!-- TODO design should be changed in the future -->
+	<table class="messages">
+		<tr>
+			<td class="side left">
+				<div class="email new clickable" wicket:id="new" wicket:ommessage="title:1208"><wicket:ommessage key="1207"/></div>
+				<div wicket:id="folders">
+					<div wicket:id="inbox"><wicket:ommessage key="1222"/></div>
+					<div wicket:id="sent"><wicket:ommessage key="1223"/></div>
+					<div wicket:id="trash"><wicket:ommessage key="1224"/></div>
+					<div class="email newdir clickable" wicket:id="newdir" wicket:ommessage="title:1259"><wicket:ommessage key="1258"/></div>
+					<div wicket:id="folder">
+						<div wicket:id="name"></div>
+						<div class="delete" wicket:id="delete" wicket:ommessage="title:1262"></div>
+					</div>
+				</div>
+			</td>
+			<td class="main">
+				<div><b><wicket:ommessage key="1206"/>&nbsp;(<span wicket:id="unread"></span>)</b></div>
+				<div wicket:id="navigator"></div>
+				<table id="messagesTable" style="width: 100%;">
+					<thead>
+					<tr>
+						<th align="left"><span wicket:id="orderById"></span><wicket:ommessage key="1205"/></th>
+						<th align="left"><span wicket:id="orderByFrom"></span><wicket:ommessage key="1202"/></th>
+						<th align="left"><span wicket:id="orderBySubject"></span><wicket:ommessage key="1203"/></th>
+						<th align="left"><span wicket:id="orderBySend"></span><wicket:ommessage key="1204"/></th>
+					</tr>
+					</thead>
+					<tbody wicket:id="container" style="background-color: white;">
+					<tr wicket:id="messages">
+						<td wicket:id="id"></td>
+						<td wicket:id="from"></td>
+						<td wicket:id="subject"></td>
+						<td wicket:id="send"></td>
+					</tr>
+					</tbody>
+				</table>
+				<div wicket:id="buttons">
+					<select wicket:id="msgSelect"></select>
+					<input wicket:id="toInboxBtn" type="button" wicket:ommessage="value:1255"/>
+					<input wicket:id="deleteBtn" type="button" wicket:ommessage="value:1245"/>
+					<input wicket:id="readBtn" type="button" wicket:ommessage="value:1248"/>
+					<input wicket:id="unreadBtn" type="button" wicket:ommessage="value:1247"/>
+					<select wicket:id="msgMove"></select>
+				</div>
+				<div wicket:id="selectedMessage">
+					<table style="width: 100%">
+						<tr>
+							<td style="width: 10px; padding-right: 20px;"><wicket:ommessage key="1202"/></td>
+							<td wicket:id="from"></td>
+						</tr>
+						<tr>
+							<td style="width: 10px; padding-right: 20px;"><wicket:ommessage key="1210"/></td>
+							<td wicket:id="to"></td>
+						</tr>
+						<tr>
+							<td style="width: 10px; padding-right: 20px;"><wicket:ommessage key="1211"/></td>
+							<td wicket:id="subj"></td>
+						</tr>
+					</table>
+					<div style="background-color: white;min-height: 300px;" wicket:id="body"></div>
+				</div>
+			</td>
+			<td class="side right" wicket:id="contacts">
+				<div><b><wicket:ommessage key="1189"/>&nbsp;(<span wicket:id="pendingContacts"></span>)</b></div>
+				<div><b><wicket:ommessage key="1188"/>&nbsp;(<span wicket:id="allContacts"></span>)</b></div>
+				<table style="width: 100%">
+					<tr>
+						<th><wicket:ommessage key="1180"/></th>
+						<th><wicket:ommessage key="1185"/></th>
+					</tr>
+					<tr wicket:id="users">
+						<td><div wicket:id="name" style="overflow-x: hidden;"></div></td>
+						<td><div wicket:id="accept" class="tick om-icon clickable" wicket:ommessage="title:1190"
+							></div><div wicket:id="decline" class="cross om-icon clickable" wicket:ommessage="title:1191"
+							></div><div wicket:id="view" class="user om-icon clickable" wicket:ommessage="title:1236"
+							></div><div wicket:id="message" class="new-email om-icon clickable" wicket:ommessage="title:1253"
+							></div><div wicket:id="delete" class="cross om-icon clickable" wicket:ommessage="title:1234"
+							></div></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+	<div wicket:id="addFolder"></div>
+	<div wicket:id="newMessage"></div>
+	<div wicket:id="infoDialog"></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
new file mode 100644
index 0000000..c9ac574
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -0,0 +1,627 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
+import static org.apache.openmeetings.db.entity.user.PrivateMessage.TRASH_FOLDER_ID;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class MessagesContactsPanel extends UserPanel {
+	private static final long serialVersionUID = 1L;
+	private final static long MOVE_CHOOSE = -1;
+	private final static int SELECT_CHOOSE = 1252;
+	private final static int SELECT_ALL = 1239;
+	private final static int SELECT_NONE = 1240;
+	private final static int SELECT_UNREAD = 1241;
+	private final static int SELECT_READ = 1242;
+	private final WebMarkupContainer container = new WebMarkupContainer("container");
+	private final WebMarkupContainer folders = new WebMarkupContainer("folders");
+	private final Label unread = new Label("unread", Model.of(0L));
+	private final Label pendingContacts = new Label("pendingContacts", Model.of(0L));
+	private final Label allContacts = new Label("allContacts", Model.of(0L));
+	private final IModel<Long> selectedFolderModel = Model.of(INBOX_FOLDER_ID);
+	private final IModel<List<? extends PrivateMessageFolder>> foldersModel;
+	private final WebMarkupContainer inbox = new WebMarkupContainer("inbox");
+	private final WebMarkupContainer sent = new WebMarkupContainer("sent");
+	private final WebMarkupContainer trash = new WebMarkupContainer("trash");
+	private final WebMarkupContainer selectedMessage = new WebMarkupContainer("selectedMessage");
+	private final WebMarkupContainer buttons = new WebMarkupContainer("buttons");
+	private final WebMarkupContainer contacts = new WebMarkupContainer("contacts");
+	private final MessageDialog newMessage;
+	private final DataViewContainer<PrivateMessage> dataContainer;
+	private final Set<Long> selectedMessages = new HashSet<Long>();
+	private final Set<Long> allMessages = new HashSet<Long>();
+	private final Set<Long> readMessages = new HashSet<Long>();
+	private final Set<Long> unreadMessages = new HashSet<Long>();
+	private final Button toInboxBtn = new Button("toInboxBtn");
+	private final Button deleteBtn = new Button("deleteBtn");
+	private final Button readBtn = new Button("readBtn");
+	private final Button unreadBtn = new Button("unreadBtn");
+	private final FixedHeaderTableBehavior fixedTable = new FixedHeaderTableBehavior("#messagesTable", new Options("height", 100));
+	private final DropDownChoice<Integer> selectDropDown = new DropDownChoice<Integer>(
+		"msgSelect", Model.of(SELECT_CHOOSE)
+		, Arrays.asList(SELECT_CHOOSE, SELECT_ALL, SELECT_NONE, SELECT_UNREAD, SELECT_READ)
+		, new IChoiceRenderer<Integer>() {
+			private static final long serialVersionUID = 1L;
+	
+			public Object getDisplayValue(Integer object) {
+				return WebSession.getString(object);
+			}
+			
+			public String getIdValue(Integer object, int index) {
+				return "" + object;
+			}
+		});
+	private PrivateMessageFolder NOT_MOVE_FOLDER = new PrivateMessageFolder();
+	private final DropDownChoice<PrivateMessageFolder> moveDropDown = new DropDownChoice<PrivateMessageFolder>("msgMove", Model.of(NOT_MOVE_FOLDER)
+		, Arrays.asList(NOT_MOVE_FOLDER)
+		, new IChoiceRenderer<PrivateMessageFolder>() {
+			private static final long serialVersionUID = 1L;
+
+			public Object getDisplayValue(PrivateMessageFolder object) {
+				return object.getFolderName();
+			}
+
+			public String getIdValue(PrivateMessageFolder object, int index) {
+				return "" + object.getPrivateMessageFolderId();
+			}
+		});
+	private WebMarkupContainer selectedFolder;
+	
+	private void setDefaultFolderClass() {
+		inbox.add(AttributeAppender.replace("class", "email inbox clickable"));
+		sent.add(AttributeAppender.replace("class", "email sent clickable"));
+		trash.add(AttributeAppender.replace("class", "email trash clickable"));
+	}
+	
+	private void selectFolder(WebMarkupContainer folder) {
+		folder.add(AttributeAppender.append("class", "ui-widget-header ui-corner-all"));
+	}
+	
+	private void setFolderClass(ListItem<PrivateMessageFolder> folder) {
+		folder.add(AttributeAppender.replace("class", "email folder clickable"));
+		if (folder.getModelObject().getPrivateMessageFolderId() == selectedFolderModel.getObject()) {
+			selectFolder(folder);
+		}
+	}
+	
+	private void updateControls(AjaxRequestTarget target) {
+		deleteBtn.setEnabled(!selectedMessages.isEmpty());
+		readBtn.setEnabled(TRASH_FOLDER_ID != selectedFolderModel.getObject() && !selectedMessages.isEmpty());
+		unreadBtn.setEnabled(TRASH_FOLDER_ID != selectedFolderModel.getObject() && !selectedMessages.isEmpty());
+		toInboxBtn.setVisible(INBOX_FOLDER_ID != selectedFolderModel.getObject() && SENT_FOLDER_ID != selectedFolderModel.getObject() && !selectedMessages.isEmpty());
+		target.add(buttons);
+	}
+	
+	private String getEmail(User u) {
+		return u == null || u.getAdresses() == null ? "" : u.getAdresses().getEmail();
+	}
+	
+	private void selectMessage(long id, AjaxRequestTarget target) {
+		PrivateMessage msg = getBean(PrivateMessagesDao.class).get(id);
+		selectedMessage.addOrReplace(new Label("from", msg == null ? "" : getEmail(msg.getFrom())));
+		selectedMessage.addOrReplace(new Label("to", msg == null ? "" : getEmail(msg.getTo())));
+		selectedMessage.addOrReplace(new Label("subj", msg == null ? "" : msg.getSubject()));
+		selectedMessage.addOrReplace(new Label("body", msg == null ? "" : msg.getMessage()).setEscapeModelStrings(false));
+		if (target != null) {
+			target.add(selectedMessage);
+			updateControls(target);
+		}
+	}
+	
+	void updateTable(AjaxRequestTarget target) {
+		container.add(fixedTable);
+		if (target != null) {
+			target.add(container);
+		}
+	}
+	
+	private void selectFolder(WebMarkupContainer folder, long id, AjaxRequestTarget target) {
+		selectedFolder = folder;
+		selectedFolderModel.setObject(id);
+		setDefaultFolderClass();
+		selectFolder(folder);
+		emptySelection(target);
+		selectDropDown.setModelObject(SELECT_CHOOSE);
+		moveDropDown.setModelObject(NOT_MOVE_FOLDER);
+		deleteBtn.add(AttributeModifier.replace("value", WebSession.getString(TRASH_FOLDER_ID == id ? 1256 : 1245)));
+		readBtn.setEnabled(false);
+		unreadBtn.setEnabled(false);
+		if (target != null) {
+			updateTable(target);
+			target.add(folders, unread, selectDropDown, moveDropDown);
+			target.add(dataContainer.container, dataContainer.navigator);
+			target.add(dataContainer.getLinks());
+		}
+	}
+	
+	private void emptySelection(AjaxRequestTarget target) {
+		selectedMessages.clear();
+		selectMessage(-1, target);
+		unread.setDefaultModelObject(getBean(PrivateMessagesDao.class).count(getUserId(), selectedFolderModel.getObject(), null));
+	}
+	
+	private String getDisplayName(User u) {
+		return new StringBuilder().append(u.getFirstname()).append(" ")
+				.append(u.getLastname()).append(" ")
+				.append("<").append(getEmail(u)).append(">")
+				.toString();
+	}
+	
+	private void updateMoveModel() {
+		List<PrivateMessageFolder> list = new ArrayList<PrivateMessageFolder>();
+		list.add(NOT_MOVE_FOLDER);
+		list.addAll(foldersModel.getObject());
+		moveDropDown.setChoices(list);
+	}
+	
+	private void updateContacts(AjaxRequestTarget target) {
+		pendingContacts.setDefaultModelObject(getBean(UserContactsDao.class).getContactRequestsByUserAndStatus(getUserId(), true).size());
+		allContacts.setDefaultModelObject(getBean(UserContactsDao.class).getContactsByUserAndStatus(getUserId(), false).size());
+		if (target != null) {
+			target.add(contacts);
+		}
+	}
+	
+	public MessagesContactsPanel(String id) {
+		super(id);
+		NOT_MOVE_FOLDER.setPrivateMessageFolderId(MOVE_CHOOSE);
+		NOT_MOVE_FOLDER.setFolderName(WebSession.getString(1243));
+		foldersModel = Model.ofList(getBean(PrivateMessageFolderDao.class).get(0, Integer.MAX_VALUE));
+		updateMoveModel();
+		add(newMessage = new MessageDialog("newMessage", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				if (send.equals(button)) {
+					target.add(container);
+				}
+			}
+		});
+		
+		final AddFolderDialog addFolder = new AddFolderDialog("addFolder") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				super.onSubmit(target);
+				PrivateMessageFolderDao fDao = getBean(PrivateMessageFolderDao.class);
+				fDao.addPrivateMessageFolder(getModelObject(), getUserId());
+				foldersModel.setObject(fDao.get(0, Integer.MAX_VALUE));
+				updateMoveModel();
+				target.add(folders, moveDropDown);
+			}
+		};
+		add(addFolder);
+		add(new WebMarkupContainer("new").add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				newMessage.reset(true).open(target);
+			}
+		}).add(new JQueryBehavior(".email.new", "button")));
+		folders.add(inbox.add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				selectFolder(inbox, INBOX_FOLDER_ID, target);
+			}
+		}));
+		folders.add(sent.add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				selectFolder(sent, SENT_FOLDER_ID, target);
+			}
+		}));
+		folders.add(trash.add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				selectFolder(trash, TRASH_FOLDER_ID, target);
+			}
+		}));
+		folders.add(new WebMarkupContainer("newdir").add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				addFolder.open(target);
+			}
+		}).add(new JQueryBehavior(".email.newdir", "button")));
+		add(folders.add(new ListView<PrivateMessageFolder>("folder", foldersModel) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(final ListItem<PrivateMessageFolder> item) {
+				item.add(new Label("name", item.getModelObject().getFolderName()));
+				item.add(new WebMarkupContainer("delete").add(new AjaxEventBehavior("click") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						PrivateMessageFolderDao fDao = getBean(PrivateMessageFolderDao.class);
+						fDao.delete(item.getModelObject(), getUserId());
+						foldersModel.setObject(fDao.get(0, Integer.MAX_VALUE));
+						updateMoveModel();
+						target.add(folders, moveDropDown);
+					}
+					
+					@Override
+					protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
+						super.updateAjaxAttributes(attributes);
+						attributes.getAjaxCallListeners().add(new ConfirmAjaxCallListener(WebSession.getString(713)));
+					}
+				}));
+				item.add(new AjaxEventBehavior("click") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						selectFolder(item, item.getModelObject().getPrivateMessageFolderId(), target);
+					}
+				});
+				setFolderClass(item);
+			}
+		}).setOutputMarkupId(true));
+		
+		SearchableDataProvider<PrivateMessage> sdp = new SearchableDataProvider<PrivateMessage>(PrivateMessagesDao.class) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected PrivateMessagesDao getDao() {
+				return (PrivateMessagesDao)super.getDao();
+			}
+			
+			@Override
+			public Iterator<? extends PrivateMessage> iterator(long first, long count) {
+				allMessages.clear();
+				readMessages.clear();
+				unreadMessages.clear();
+				String sort = getSort() == null ? "" : "m." + getSort().getProperty();
+				boolean isAsc = getSort() == null ? true : getSort().isAscending();
+				return getDao().get(getUserId(), selectedFolderModel.getObject(), search, sort, isAsc, (int)first, (int)count).iterator();
+			}
+			
+			@Override
+			public long size() {
+				return getDao().count(getUserId(), selectedFolderModel.getObject(), search);
+			}
+		};
+		final SearchableDataView<PrivateMessage> dv = new SearchableDataView<PrivateMessage>("messages", sdp) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(Item<PrivateMessage> item) {
+				PrivateMessage m = item.getModelObject();
+				final long id = m.getId();
+				allMessages.add(id);
+				if (m.getIsRead()) {
+					readMessages.add(id);
+				} else {
+					unreadMessages.add(id);
+				}
+				item.add(new Label("id", id));
+				item.add(new Label("from", getDisplayName(m.getFrom())));
+				item.add(new Label("subject", m.getSubject()));
+				item.add(new Label("send", getDateFormat().format(m.getInserted())));
+				item.add(new AjaxEventBehavior("click") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						long selected = id;
+						if (selectedMessages.contains(id)) {
+							selectedMessages.remove(id);
+							selected = selectedMessages.isEmpty() ? -1 : selectedMessages.iterator().next();
+						} else {
+							selectedMessages.add(id);
+						}
+						selectMessage(selected, target);
+						target.add(container);
+					}
+				});
+				StringBuilder cssClass = new StringBuilder(Boolean.FALSE.equals(m.getIsRead()) ? "unread" : "");
+				if (selectedMessages.contains(id)) {
+					if (cssClass.length() > 0) {
+						cssClass.append(" ");
+					}
+					cssClass.append("ui-state-active");
+				}
+				item.add(AttributeModifier.replace("class", cssClass.toString()));
+			}
+		};
+		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dv) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				emptySelection(target);
+				target.add(container);
+			}
+		};
+		dataContainer = new DataViewContainer<PrivateMessage>(container, dv, navigator);
+		dataContainer.addLink(new OmOrderByBorder<PrivateMessage>("orderById", "id", dataContainer))
+			.addLink(new OmOrderByBorder<PrivateMessage>("orderByFrom", "from.lastname", dataContainer))
+			.addLink(new OmOrderByBorder<PrivateMessage>("orderBySubject", "subject", dataContainer))
+			.addLink(new OmOrderByBorder<PrivateMessage>("orderBySend", "inserted", dataContainer));
+		add(dataContainer.getLinks());
+		add(navigator);
+		
+		add(unread.setOutputMarkupId(true));
+		
+		add(buttons.setOutputMarkupId(true));
+		buttons.add(toInboxBtn.add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+			
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				getBean(PrivateMessagesDao.class).moveMailsToFolder(selectedMessages, INBOX_FOLDER_ID);
+				selectFolder(selectedFolder, selectedFolderModel.getObject(), target);
+			}
+		}));
+		buttons.add(deleteBtn.add(new AjaxEventBehavior("click") {
+				private static final long serialVersionUID = 1L;
+	
+				@Override
+				protected void onEvent(AjaxRequestTarget target) {
+					if (TRASH_FOLDER_ID == selectedFolderModel.getObject()) {
+						getBean(PrivateMessagesDao.class).delete(selectedMessages);
+					} else {
+						getBean(PrivateMessagesDao.class).moveMailsToFolder(selectedMessages, TRASH_FOLDER_ID);
+					}
+					emptySelection(target);
+					target.add(container);
+				}
+			}));
+		buttons.add(readBtn.add(new AjaxEventBehavior("click") {
+				private static final long serialVersionUID = 1L;
+				
+				@Override
+				protected void onEvent(AjaxRequestTarget target) {
+					getBean(PrivateMessagesDao.class).updateReadStatus(selectedMessages, true);
+					emptySelection(target);
+					target.add(container, unread);
+				}
+			}));
+		buttons.add(unreadBtn.add(new AjaxEventBehavior("click") {
+				private static final long serialVersionUID = 1L;
+				
+				@Override
+				protected void onEvent(AjaxRequestTarget target) {
+					getBean(PrivateMessagesDao.class).updateReadStatus(selectedMessages, false);
+					emptySelection(target);
+					target.add(container);
+				}
+			}));
+		buttons.add(selectDropDown.setOutputMarkupId(true).add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				switch (selectDropDown.getModelObject()) {
+					case SELECT_CHOOSE:
+						break;
+					case SELECT_ALL:
+						selectedMessages.clear();
+						selectedMessages.addAll(allMessages);
+						break;
+					case SELECT_NONE:
+						selectedMessages.clear();
+						break;
+					case SELECT_UNREAD:
+						selectedMessages.clear();
+						selectedMessages.addAll(unreadMessages);
+						break;
+					case SELECT_READ:
+						selectedMessages.clear();
+						selectedMessages.addAll(readMessages);
+						break;
+				}
+				target.add(container);
+			}
+		}));
+		buttons.add(moveDropDown.setOutputMarkupId(true).add(new OnChangeAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onUpdate(AjaxRequestTarget target) {
+				long folderId = moveDropDown.getModelObject().getPrivateMessageFolderId();
+				if (folderId != MOVE_CHOOSE) {
+					getBean(PrivateMessagesDao.class).moveMailsToFolder(selectedMessages, folderId);
+				}
+				selectFolder(selectedFolder, selectedFolderModel.getObject(), target);
+			}
+		}));
+		
+		selectMessage(-1, null);
+		add(container.add(dv).setOutputMarkupId(true));
+		//TODO add valid autoupdate add(new AjaxSelfUpdatingTimerBehavior(seconds(15)));
+		add(selectedMessage.setOutputMarkupId(true));
+		
+		IDataProvider<UserContact> dp = new IDataProvider<UserContact>() {
+			private static final long serialVersionUID = 1L;
+
+			public void detach() {
+			}
+
+			public Iterator<? extends UserContact> iterator(long first, long count) {
+				return getBean(UserContactsDao.class).get(getUserId(), (int)first, (int)count).iterator();
+			}
+
+			public long size() {
+				return getBean(UserContactsDao.class).count(getUserId());
+			}
+
+			public IModel<UserContact> model(UserContact object) {
+				return Model.of(object);
+			}
+		};
+		final UserInfoDialog d = new UserInfoDialog("infoDialog", newMessage);
+		final DataView<UserContact> dw = new DataView<UserContact>("users", dp) {
+			private static final long serialVersionUID = 1L;
+
+			private String getName(UserContact uc) {
+				return uc.getOwner().getFirstname() + " " + uc.getOwner().getLastname(); //FIXME salutation
+			}
+			
+			@Override
+			protected void populateItem(Item<UserContact> item) {
+				UserContact uc = item.getModelObject();
+				final long contactId = uc.getUserContactId();
+				final long userId = uc.getOwner().getUser_id();
+				if (uc.getPending()) {
+					item.add(AttributeModifier.append("class", "unread"));
+				}
+				item.add(new Label("name", getName(uc)));	
+				item.add(new WebMarkupContainer("accept").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						ContactsHelper.acceptUserContact(contactId);
+						updateContacts(target);
+					}
+				}).setVisible(uc.getPending()));
+				item.add(new WebMarkupContainer("decline").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						getBean(UserContactsDao.class).deleteUserContact(contactId);
+						updateContacts(target);
+					}
+				}).setVisible(uc.getPending()));
+				item.add(new WebMarkupContainer("view").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						d.open(target, userId);
+					}
+				}));
+				item.add(new WebMarkupContainer("message").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						newMessage.reset(true).open(target, userId);
+					}
+				}).setVisible(!uc.getPending()));
+				item.add(new WebMarkupContainer("delete").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						getBean(UserContactsDao.class).deleteUserContact(contactId);
+						updateContacts(target);
+					}
+				}).setVisible(!uc.getPending()));
+			}
+		};
+		updateContacts(null);
+		add(d, contacts.add(dw, pendingContacts, allContacts).setOutputMarkupId(true));//TODO update
+		
+		//hack to add FixedHeaderTable after Tabs.
+		add(new AbstractDefaultAjaxBehavior() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void respond(AjaxRequestTarget target) {
+				selectFolder(inbox, INBOX_FOLDER_ID, target);
+				selectMessage(-1, target);
+			}
+			
+			@Override
+			public void renderHead(Component component, IHeaderResponse response) {
+				super.renderHead(component, response);
+				response.render(OnDomReadyHeaderItem.forScript(getCallbackScript()));
+			}
+		});
+	}
+
+	@Override
+	protected void onDetach() {
+		foldersModel.detach();
+		selectedFolderModel.detach();
+		super.onDetach();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.html b/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.html
new file mode 100644
index 0000000..dad759f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.html
@@ -0,0 +1,50 @@
+<?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 wicket:id="buttons"></div>
+	<table style="width: 100%; height: 100%">
+		<tr>
+			<td rowspan="2">
+				<fieldset class="ui-widget-content">
+					<legend class="ui-widget-header">
+						<wicket:ommessage key="143" />
+					</legend>
+					<form wicket:id="general"></form>
+				</fieldset>
+			</td>
+			<td>
+				<div wicket:id="img"></div>
+			</td>
+		</tr>
+		<tr>
+			<td>
+				<fieldset class="ui-widget-content">
+					<legend class="ui-widget-header">
+						<wicket:ommessage key="1159" />
+					</legend>
+					<form wicket:id="comunity"></form>
+				</fieldset>
+			</td>
+		</tr>
+	</table>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.java b/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.java
new file mode 100644
index 0000000..98bc25f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/ProfileForm.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.common.ComunityUserForm;
+import org.apache.openmeetings.web.common.FormSaveRefreshPanel;
+import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.util.time.Duration;
+
+public class ProfileForm extends Form<User> {
+	private static final long serialVersionUID = 1L;
+	private final UserForm userForm;
+
+	public ProfileForm(String id) {
+		super(id, new CompoundPropertyModel<User>(getBean(UserDao.class).get(getUserId())));
+		
+		add(new FormSaveRefreshPanel<User>("buttons", this) {
+			private static final long serialVersionUID = 6578425915881674309L;
+
+			@Override
+			protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+				User u = getModelObject();
+				try {
+					u = getBean(UserDao.class).update(u, userForm.getPasswordField().getConvertedInput(), getUserId());
+				} catch (Exception e) {
+					// FIXME update feedback with the error details
+				}
+				setModelObject(u);
+				target.add(ProfileForm.this);
+			}
+
+			@Override
+			protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+				// FIXME update feedback with the error details
+			}
+
+			@Override
+			protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+				User user = getModelObject();
+				if (user.getUser_id() != null) {
+					user = getBean(UserDao.class).get(user.getUser_id());
+				} else {
+					user = new User();
+				}
+				setModelObject(user);
+				target.add(ProfileForm.this);
+			}
+
+			@Override
+			protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+				// FIXME update feedback with the error details
+			}
+		});
+		add(userForm = new UserForm("general", getModel()));
+		add(new UploadableProfileImagePanel("img", getUserId()));
+		add(new ComunityUserForm("comunity", getModel()));
+		
+		// attach an ajax validation behavior to all form component's keydown
+		// event and throttle it down to once per second
+		AjaxFormValidatingBehavior.addToAllFormComponents(this, "keydown", Duration.ONE_SECOND);
+	}
+	
+	@Override
+	protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+		return new PanelMarkupSourcingStrategy(false);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
new file mode 100644
index 0000000..3335891
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
@@ -0,0 +1,25 @@
+<?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="form" class="adminForm"/>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java
new file mode 100644
index 0000000..8eccfa3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import org.apache.openmeetings.web.common.UserPanel;
+
+public class ProfilePanel extends UserPanel {
+	private static final long serialVersionUID = -5837090230776586182L;
+
+	public ProfilePanel(String id) {
+		super(id);
+		setOutputMarkupId(true);
+		
+		add(new ProfileForm("form"));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html
new file mode 100644
index 0000000..c02100a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html
@@ -0,0 +1,25 @@
+<?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 wicket:id="tabs"></div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java
new file mode 100644
index 0000000..d61efa4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.tabs.AjaxTab;
+import com.googlecode.wicket.jquery.ui.widget.tabs.TabbedPanel;
+
+public class SettingsPanel extends UserPanel {
+	private static final long serialVersionUID = 1L;
+	public static final int PROFILE_TAB_ID = 0;
+	public static final int MESSAGES_TAB_ID = 1;
+	public static final int EDIT_PROFILE_TAB_ID = 2;
+	public static final int SEARCH_TAB_ID = 3;
+	public static final int DASHBOARD_TAB_ID = 4;
+
+	public SettingsPanel(String id, int active) {
+		super(id);
+		
+		List<ITab> tabs = new ArrayList<ITab>();
+		tabs.add(new AjaxTab(Model.of(WebSession.getString(1170))) {
+			private static final long serialVersionUID = 1L;
+			UserProfilePanel profilePanel = null;
+
+			@Override
+			protected WebMarkupContainer getLazyPanel(String panelId) {
+				if (profilePanel == null) {
+					profilePanel = new UserProfilePanel(panelId, getUserId());
+					profilePanel.setOutputMarkupId(true);
+				}
+				return profilePanel;
+			}
+			
+			@Override
+			public boolean load(AjaxRequestTarget target) {
+				if (profilePanel != null) {
+					profilePanel.setDefaultModelObject(getBean(UserDao.class).get(getUserId()));
+					target.add(profilePanel);
+				}
+				return super.load(target);
+			}
+		});
+		tabs.add(new AjaxTab(Model.of(WebSession.getString(1188))) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected WebMarkupContainer getLazyPanel(String panelId) {
+				return new MessagesContactsPanel(panelId);
+			}
+		});
+		tabs.add(new AbstractTab(Model.of(WebSession.getString(1171))) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public WebMarkupContainer getPanel(String panelId) {
+				return new ProfilePanel(panelId);
+			}
+		});
+		tabs.add(new AbstractTab(Model.of(WebSession.getString(1172))) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public WebMarkupContainer getPanel(String panelId) {
+				return new UserSearchPanel(panelId);
+			}
+		});
+		tabs.add(new AbstractTab(Model.of(WebSession.getString(1548))) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public WebMarkupContainer getPanel(String panelId) {
+				return new WidgetsPanel(panelId);
+			}
+		});
+		add(new TabbedPanel("tabs", tabs, new Options("active", active)).setActiveTab(active));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.html b/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.html
new file mode 100644
index 0000000..ae0c5b5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.html
@@ -0,0 +1,27 @@
+<?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:extend>
+	<div class="formelement">
+		<label><wicket:ommessage key="134" /></label><input type="password" wicket:id="confirmPassword" />
+	</div>
+</wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.java b/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.java
new file mode 100644
index 0000000..5b61c32
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserForm.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GeneralUserForm;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class UserForm extends GeneralUserForm {
+	private static final long serialVersionUID = 1305752513494262480L;
+	private final PasswordTextField confirmPassword;
+	
+	public UserForm(String id, IModel<User> model) {
+		super(id, model, false);
+		add(confirmPassword = new PasswordTextField("confirmPassword", new Model<String>()));
+		confirmPassword.setRequired(false);
+	}
+	
+	@Override
+	protected void onValidate() {
+		String pass = getPasswordField().getConvertedInput();
+		if (pass != null && !pass.isEmpty() && !pass.equals(confirmPassword.getConvertedInput())) {
+			error(WebSession.getString(232));
+		}
+		super.onValidate();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.html b/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.html
new file mode 100644
index 0000000..42cd4b3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.html
@@ -0,0 +1,27 @@
+<?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 wicket:id="container">
+		<div wicket:id="body"></div>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java b/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java
new file mode 100644
index 0000000..22b6770
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class UserInfoDialog extends AbstractDialog<String> {
+	private static final long serialVersionUID = 6393565468567393270L;
+	private WebMarkupContainer container = new WebMarkupContainer("container");
+	private DialogButton cancel = new DialogButton(WebSession.getString(61));
+	private String messageLbl = WebSession.getString(1253);
+	private DialogButton message = new DialogButton(messageLbl);
+	private String contactsLbl = WebSession.getString(1186);
+	private DialogButton contacts = new DialogButton(contactsLbl);
+	private MessageDialog newMessage;
+	private long userId;
+	
+	public UserInfoDialog(String id, MessageDialog newMessage) {
+		super(id, WebSession.getString(1235));
+		add(container.add(new WebMarkupContainer("body")).setOutputMarkupId(true));
+		this.newMessage = newMessage;
+	}
+
+	public void open(AjaxRequestTarget target, long userId) {
+		this.userId = userId;
+		container.replace(new UserProfilePanel("body", userId));
+		target.add(container);
+		open(target);
+	}
+	
+	public WebMarkupContainer getContainer() {
+		return container;
+	}
+	
+	@Override
+	public int getWidth() {
+		return 500;
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return userId != getUserId() && 0 == getBean(UserContactsDao.class).checkUserContacts(userId, getUserId())
+				? Arrays.asList(message, cancel) : Arrays.asList(contacts, message, cancel);
+	}
+	
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		if (message.equals(button)) {
+			newMessage.reset(false).open(target, userId);
+		} else if (contacts.equals(button)) {
+			ContactsHelper.addUserToContactList(userId);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
new file mode 100644
index 0000000..ae93676
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
@@ -0,0 +1,87 @@
+<?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>
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
new file mode 100644
index 0000000..6c6d34e
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.ProfileImagePanel;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.CompoundPropertyModel;
+
+public class UserProfilePanel extends UserPanel {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer address = new WebMarkupContainer("address");
+	private final Label addressDenied = new Label("addressDenied", "");
+
+	public UserProfilePanel(String id, long userId) {
+		this(id, new CompoundPropertyModel<User>(getBean(UserDao.class).get(userId)));
+	}
+	
+	public UserProfilePanel(String id, CompoundPropertyModel<User> model) {
+		super(id, model);
+
+		add(new ProfileImagePanel("img", model.getObject().getUser_id()));
+		add(new Label("firstname"));
+		add(new Label("lastname"));
+		add(new Label("timeZoneId"));
+		add(new Label("regdate"));
+		add(new TextArea<String>("userOffers").setEnabled(false));
+		add(new TextArea<String>("userSearchs").setEnabled(false));
+		if (getUserId() == model.getObject().getUser_id() || Boolean.TRUE.equals(model.getObject().getShowContactData()) 
+				|| (Boolean.TRUE.equals(model.getObject().getShowContactDataToContacts())
+						&& getBean(UserContactsDao.class).checkUserContacts(model.getObject().getUser_id(), getUserId()) > 0))
+		{
+			addressDenied.setVisible(false);
+			address.add(new Label("adresses.phone"));
+			address.add(new Label("adresses.street"));
+			address.add(new Label("adresses.additionalname"));
+			address.add(new Label("adresses.zip"));
+			address.add(new Label("adresses.town"));
+			address.add(new Label("adresses.states.name"));
+			address.add(new Label("adresses.comment"));
+		} else {
+			address.setVisible(false);
+			addressDenied.setDefaultModelObject(WebSession.getString(Boolean.TRUE.equals(model.getObject().getShowContactDataToContacts()) ? 1269 : 1268));
+		}
+		add(address.setDefaultModel(model));
+		add(addressDenied);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
new file mode 100644
index 0000000..07745c4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
@@ -0,0 +1,70 @@
+<?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>
+	<!--  FIXME move styles into CSS -->
+	<table style="width: 100%; height: 100%;">
+		<tr>
+			<td valign="top" style="width: 200px;">
+				<form wicket:id="form">
+					<div><wicket:ommessage key="1179"/></div>
+					<input type="text" wicket:id="text"/><br/>
+					<div><wicket:ommessage key="1177"/></div>
+					<input type="text" wicket:id="offer"/><br/>
+					<div><wicket:ommessage key="1178"/></div>
+					<input type="text" wicket:id="search"/><br/>
+					<br/>
+					<input type="submit" wicket:ommessage="value:1176"/>
+				</form>
+			</td>
+			<td valign="top">
+				<div wicket:id="container" style="height: 100%; min-height: 400px;">
+					<div><strong><wicket:ommessage key="1184"/></strong>&nbsp;&nbsp;&nbsp;<span wicket:id="navigator"></span></div>
+					<table id="searchUsersTable" style="width: 100%;">
+						<thead>
+							<tr>
+								<th><wicket:ommessage key="1180"/></th>
+								<th><wicket:ommessage key="1181"/></th>
+								<th><wicket:ommessage key="1182"/></th>
+								<th><wicket:ommessage key="1183"/></th>
+								<th><wicket:ommessage key="1185"/></th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr wicket:id="users">
+								<td><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
+								<td wicket:id="tz"></td>
+								<td wicket:id="offer"></td>
+								<td wicket:id="search"></td>
+								<td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:ommessage="title:1186"
+									></div><div wicket:id="message" class="new-email om-icon clickable" wicket:ommessage="title:1253"
+									></div><div wicket:id="view" class="user om-icon clickable" wicket:ommessage="title:1236"></div></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</td>
+		</tr>
+	</table>
+	<div wicket:id="infoDialog"></div>
+	<div wicket:id="newMessage"></div>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
new file mode 100644
index 0000000..89a9585
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -0,0 +1,181 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.isUserOnline;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.TimezoneUtil;
+import org.apache.openmeetings.web.common.PagingNavigatorPanel;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class UserSearchPanel extends UserPanel {
+	private static final long serialVersionUID = 1L;
+	private final static List<Integer> itemsPerPage = Arrays.asList(10, 25, 50, 75, 100, 200, 500, 1000, 2500, 5000);
+	private String text;
+	private String search;
+	private String offer;
+	private String orderBy = "u.firstname";
+	private boolean asc = true;
+	private boolean searched = false;
+	private final MessageDialog newMessage;
+	private final WebMarkupContainer container = new WebMarkupContainer("container");
+	private final FixedHeaderTableBehavior fixedHeader = new FixedHeaderTableBehavior("#searchUsersTable", new Options("height", 400));
+
+	private void refresh(AjaxRequestTarget target) {
+		target.add(container.add(fixedHeader));
+	}
+	
+	public UserSearchPanel(String id) {
+		super(id);
+		
+		add(new Form<Void>("form") {
+			private static final long serialVersionUID = 1L;
+			{
+				add(new TextField<String>("text", new PropertyModel<String>(UserSearchPanel.this, "text")));
+				add(new TextField<String>("offer", new PropertyModel<String>(UserSearchPanel.this, "offer")));
+				add(new TextField<String>("search", new PropertyModel<String>(UserSearchPanel.this, "search")));
+				add(new AjaxFormSubmitBehavior(this, "onsubmit") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target) {
+						searched = true;
+						refresh(target);
+					}
+				});
+			}
+		});
+		add(newMessage = new MessageDialog("newMessage", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClose(AjaxRequestTarget target, DialogButton button) {
+				if (send.equals(button)) {
+					refresh(target);
+				}
+			}
+		});
+		IDataProvider<User> dp = new IDataProvider<User>() {
+			private static final long serialVersionUID = 1L;
+
+			public void detach() {
+			}
+
+			public Iterator<? extends User> iterator(long first, long count) {
+				return searched ? getBean(UserDao.class).searchUserProfile(getUserId(), text, offer, search, orderBy, (int)first, (int)count, asc).iterator()
+						: new ArrayList<User>().iterator();
+			}
+
+			public long size() {
+				return searched ? getBean(UserDao.class).searchCountUserProfile(getUserId(), text, offer, search) : 0;
+			}
+
+			public IModel<User> model(User object) {
+				return new CompoundPropertyModel<User>(object);
+			}
+			
+		};
+		final UserInfoDialog d = new UserInfoDialog("infoDialog", newMessage);
+		final DataView<User> dv = new DataView<User>("users", dp) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(Item<User> item) {
+				final UserContactsDao contactsDao = getBean(UserContactsDao.class);
+				User u = item.getModelObject();
+				final long userId = u.getUser_id();
+				item.add(new WebMarkupContainer("status").add(AttributeModifier.append("class", isUserOnline(userId) ? "online" : "offline")));
+				item.add(new Label("name", getName(u)));
+				item.add(new Label("tz", getBean(TimezoneUtil.class).getTimeZone(u).getID()));
+				item.add(new Label("offer", u.getUserOffers()));
+				item.add(new Label("search", u.getUserSearchs()));
+				item.add(new WebMarkupContainer("view").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						d.open(target, userId);
+					}
+				}));
+				item.add(new WebMarkupContainer("add").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						ContactsHelper.addUserToContactList(userId);
+						refresh(target);
+					}
+				}).setVisible(userId != getUserId() && 0 == contactsDao.checkUserContacts(userId, getUserId())));
+				item.add(new WebMarkupContainer("message").add(new AjaxEventBehavior("onclick") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						newMessage.reset(true).open(target, userId);
+					}
+				}));
+				//item.add(new TooltipBehavior(new Options("content", "TODO:: Picture will be displayed"))); //FIXME 
+			}
+		};
+
+		add(d, container.add(dv, new PagingNavigatorPanel("navigator", dv, itemsPerPage, 100) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				refresh(target);
+			}
+		}).setOutputMarkupId(true));
+	}
+	
+	private String getName(User u) {
+		return "" + u.getFirstname() + " " + u.getLastname() + " [" + u.getLogin() + "]"; //FIXME salutation
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html b/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
new file mode 100644
index 0000000..18dd8fc
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
@@ -0,0 +1,31 @@
+<?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>
+		<table class="widget">
+			<tr wicket:id="widgets">
+				<td wicket:id="name"></td>
+				<td wicket:id="description"></td>
+				<td><label wicket:for="display"><wicket:ommessage key="1590"/></label>&nbsp;&nbsp;<input type="checkbox" wicket:id="display"/></td>
+			</tr>
+		</table>
+	</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java b/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
new file mode 100644
index 0000000..d368372
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.profile;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getDashboardContext;
+import static org.apache.openmeetings.web.app.WebSession.getDashboard;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidget;
+import org.apache.openmeetings.web.user.dashboard.RssWidget;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+
+import ro.fortsoft.wicket.dashboard.Dashboard;
+import ro.fortsoft.wicket.dashboard.Widget;
+import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
+import ro.fortsoft.wicket.dashboard.web.DashboardContext;
+
+public class WidgetsPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+
+	private Widget isDisplayed(WidgetDescriptor wd) {
+		for (Widget w : getDashboard().getWidgets()) {
+			if (w.getClass().getName().equals(wd.getWidgetClassName())) {
+				return w;
+			}
+		}
+		return null;
+	}
+	public WidgetsPanel(String id) {
+		super(id);
+		
+		ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+		boolean confShowMyRooms = 1 == cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
+		boolean confShowRss = 1 == cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0");
+		List<WidgetDescriptor> widgets = getDashboardContext().getWidgetRegistry().getWidgetDescriptors();
+		for (Iterator<WidgetDescriptor> i = widgets.iterator(); i.hasNext();) {
+			WidgetDescriptor wd = i.next();
+			if (!confShowMyRooms && MyRoomsWidget.class.getCanonicalName().equals(wd.getWidgetClassName())) {
+				i.remove();
+				continue;
+			}
+			if (!confShowRss && RssWidget.class.getCanonicalName().equals(wd.getWidgetClassName())) {
+				i.remove();
+				continue;
+			}
+		}
+		add(new ListView<WidgetDescriptor>("widgets", widgets) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(ListItem<WidgetDescriptor> item) {
+				final WidgetDescriptor wd = item.getModelObject();
+				item.add(new Label("name", wd.getName()));
+				item.add(new Label("description", wd.getDescription()));
+				item.add(new AjaxCheckBox("display", Model.of(isDisplayed(wd) != null)) {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onUpdate(AjaxRequestTarget target) {
+						Widget w = isDisplayed(wd);
+						boolean b = getModelObject();
+						DashboardContext dashboardContext = getDashboardContext();
+						Dashboard d = getDashboard();
+						if (w != null && !b) {
+							d.deleteWidget(w.getId());
+						}
+						if (w == null && b) {
+							d.addWidget(dashboardContext.getWidgetFactory().createWidget(wd));
+						}
+						dashboardContext.getDashboardPersister().save(d);
+					}
+				});
+			}
+		});
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html b/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
new file mode 100644
index 0000000..c900919
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.html
@@ -0,0 +1,37 @@
+<?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 wicket:id="container" class="recording dialog errors">
+		<h3 wicket:id="message"></h3>
+		<table style="width: 100%">
+			<tr>
+				<th><wicket:ommessage key="1593"/></th>
+				<th><wicket:ommessage key="1594"/></th>
+			</tr>
+			<tr wicket:id="row">
+				<td wicket:id="exitCode"></td>
+				<td wicket:id="message" class="message"></td>
+			</tr>
+		</table>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java b/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
new file mode 100644
index 0000000..131eb16
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingErrorsDialog.java
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecordingLog;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class RecordingErrorsDialog extends AbstractDialog<FlvRecording> {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer container = new WebMarkupContainer("container");
+	private final Label message = new Label("message", Model.of((String)null));
+	private final ListView<FlvRecordingLog> logView = new ListView<FlvRecordingLog>("row") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void populateItem(ListItem<FlvRecordingLog> item) {
+			FlvRecordingLog l = item.getModelObject();
+			item.add(new Label("exitCode", l.getExitValue()));
+			item.add(new Label("message", l.getFullMessage()));
+			if (!"0".equals(l.getExitValue())) {
+				item.add(AttributeModifier.replace("class", "alert"));
+			}
+		}
+	};
+
+	@Override
+	public int getWidth() {
+		return 600;
+	}
+	
+	@Override
+	public boolean isResizable() {
+		return true;
+	}
+
+	@Override
+	public boolean isModal() {
+		return true;
+	}
+
+	public RecordingErrorsDialog(String id, IModel<FlvRecording> model) {
+		super(id, WebSession.getString(887), model);
+		add(container.add(message.setVisible(false), logView.setVisible(false)).setOutputMarkupId(true));
+	}
+	
+	@Override
+	protected void onOpen(AjaxRequestTarget target) {
+		FlvRecording f = getModelObject();
+		List<FlvRecordingLog> logs = getBean(FlvRecordingLogDao.class).getByRecordingId(f.getFlvRecordingId());
+		if (f.getFileHash() == null) {
+			message.setVisible(true);
+			message.setDefaultModelObject(WebSession.getString(888));
+		} else if (!isRecordingExists(f.getFileHash() + MP4_EXTENSION)) {
+			message.setVisible(true);
+			message.setDefaultModelObject(WebSession.getString(1595));
+		} else {
+			message.setVisible(false);
+		}
+		if (!logs.isEmpty()) {
+			logView.setVisible(false);
+			logView.setList(logs).setVisible(true);
+		}
+		target.add(container);
+		super.onOpen(target);
+	}
+	
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return new ArrayList<DialogButton>();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html b/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
new file mode 100644
index 0000000..9caedb0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
@@ -0,0 +1,23 @@
+<?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:extend><span wicket:id="errors" class="errors"></span></wicket:extend>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java b/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
new file mode 100644
index 0000000..d82fd96
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.IModel;
+
+public class RecordingItemPanel extends RecordingPanel {
+	private static final long serialVersionUID = 1L;
+
+	public RecordingItemPanel(String id, final IModel<FlvRecording> model, final RecordingsPanel treePanel) {
+		super(id, model, treePanel);
+		FlvRecording r = model.getObject();
+		long errorCount = getBean(FlvRecordingLogDao.class).countErrors(r.getFlvRecordingId());
+		boolean visible = errorCount != 0 || (Status.RECORDING != r.getStatus() && Status.CONVERTING != r.getStatus() && !isRecordingExists(r.getFileHash() + MP4_EXTENSION));
+		drag.add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				treePanel.errorsDialog.setDefaultModel(model);
+				treePanel.errorsDialog.open(target);
+			}
+		}).setVisible(visible));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html b/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
new file mode 100644
index 0000000..0436c22
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
@@ -0,0 +1,25 @@
+<?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 wicket:id="drop" class="recording item"><div wicket:id="drag"><wicket:child /><span wicket:id="name" class="name"></span></div></div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java b/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
new file mode 100644
index 0000000..3524821
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.draggable.Draggable;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
+
+public class RecordingPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+	protected final MarkupContainer drop;
+	protected final MarkupContainer drag;
+
+	public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingsPanel treePanel) {
+		super(id, model);
+		FlvRecording r = model.getObject();
+		drop = r.isFolder() ? new Droppable<FlvRecording>("drop", model) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onConfigure(JQueryBehavior behavior) {
+				super.onConfigure(behavior);
+				behavior.setOption("hoverClass", Options.asString("ui-state-hover"));
+				behavior.setOption("accept", Options.asString(".recorditem"));
+			}
+			
+			@Override
+			public void onDrop(AjaxRequestTarget target, Component component) {
+				Object o = component.getDefaultModelObject();
+				if (o instanceof FlvRecording) {
+					FlvRecording p = (FlvRecording)drop.getDefaultModelObject();
+					FlvRecording f = (FlvRecording)o;
+					long pid = p.getFlvRecordingId();
+					//FIXME parent should not be moved to child !!!!!!!
+					if (pid == f.getFlvRecordingId()) {
+						return;
+					}
+					f.setParentFileExplorerItemId(pid > 0 ? pid : null);
+					f.setOwnerId(p.getOwnerId());
+					f.setRoom_id(p.getRoom_id());
+					f.setOrganization_id((p).getOrganization_id());
+					getBean(FlvRecordingDao.class).update(f);
+				}
+				target.add(treePanel.trees); //FIXME add correct refresh
+			}
+		} : new WebMarkupContainer("drop");
+		if (r.getFlvRecordingId() < 1) {
+			drag = new WebMarkupContainer("drag");
+		} else {
+			Draggable<FlvRecording> d = new Draggable<FlvRecording>("drag", model) {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public void onConfigure(JQueryBehavior behavior) {
+					super.onConfigure(behavior);
+					behavior.setOption("revert", "treeRevert");
+					behavior.setOption("cursor", Options.asString("move"));
+				}
+			};
+			d.setContainment(".file.tree");
+			d.add(AttributeAppender.append("class", "recorditem"));
+			drag = d;
+		}
+		drag.add(r.getFlvRecordingId() < 1 ? new Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
+			private static final long serialVersionUID = 1L;
+			
+			@Override
+			protected String getLabelAjaxEvent() {
+				return "dblClick";
+			}
+			
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				super.onSubmit(target);
+				FlvRecording fi = model.getObject();
+				fi.setFileName(getEditor().getModelObject());
+				getBean(FlvRecordingDao.class).update(fi);
+			}
+			
+			@Override
+			public void onEdit(AjaxRequestTarget target) {
+				super.onEdit(target);
+			}
+		});
+		add(drop.add(drag).setOutputMarkupId(true));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html b/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
new file mode 100644
index 0000000..6da81cf
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
@@ -0,0 +1,66 @@
+<?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>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java b/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
new file mode 100644
index 0000000..903fa56
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
@@ -0,0 +1,361 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.record.RecordingContainerData;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.extensions.markup.html.repeater.tree.content.Folder;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
+
+public class RecordingsPanel extends UserPanel {
+	private static final long serialVersionUID = 1321258690447136958L;
+	final WebMarkupContainer trees = new WebMarkupContainer("tree-container");
+	private final WebMarkupContainer sizes = new WebMarkupContainer("sizes");
+	private final VideoPlayer video = new VideoPlayer("video");
+	private final VideoInfo info = new VideoInfo("info");
+	private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
+	private final IModel<String> homeSize = Model.of((String)null);
+	private final IModel<String> publicSize = Model.of((String)null);
+	final RecordingErrorsDialog errorsDialog = new RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
+	private RecordingTree selected;
+	
+	public RecordingsPanel(String id) {
+		super(id);
+		rm.getObject().setFlvRecordingId(Long.MIN_VALUE);
+		final AddFolderDialog addFolder = new AddFolderDialog("addFolder", WebSession.getString(712)) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				FlvRecording f = new FlvRecording();
+				f.setFileName(getModelObject());
+				f.setInsertedBy(getUserId());
+				f.setInserted(new Date());
+				f.setFolder(true);
+				f.setIsImage(false);
+				f.setIsPresentation(false);
+				f.setIsRecording(true);
+				FlvRecording p = rm.getObject();
+				long parentId = p.getFlvRecordingId();
+				if (p.isFolder()) {
+					f.setParentFileExplorerItemId(parentId);
+				}
+				f.setOwnerId(p.getOwnerId());
+				f.setOrganization_id(p.getOrganization_id());
+				getBean(FlvRecordingDao.class).update(f);
+				target.add(trees); //FIXME add correct refresh
+			}
+		};
+		add(addFolder);
+		Droppable<FlvRecording> trashToolbar = new Droppable<FlvRecording>("trash-toolbar") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onConfigure(JQueryBehavior behavior) {
+				super.onConfigure(behavior);
+				behavior.setOption("hoverClass", Options.asString("ui-state-hover trash-toolbar-hover"));
+				behavior.setOption("accept", Options.asString(".recorditem, .fileitem"));
+			}
+			
+			@Override
+			public void onDrop(AjaxRequestTarget target, Component component) {
+				Object o = component.getDefaultModelObject();
+				if (o instanceof FlvRecording) {
+					delete((FlvRecording)o, target);
+				}
+			}
+		};
+		add(trashToolbar);
+		trashToolbar.add(new WebMarkupContainer("create").add(new AjaxEventBehavior("onclick") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				addFolder.open(target);
+			}
+		}));
+		trashToolbar.add(new WebMarkupContainer("refresh").add(new AjaxEventBehavior("onclick") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				target.add(trees); //FIXME add correct refresh
+			}
+		}));
+		trashToolbar.add(new ConfirmableAjaxLink("trash", 713) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				delete(rm.getObject(), target);
+			}
+		});
+		RepeatingView treesView = new RepeatingView("tree");
+		treesView.add(selected = new RecordingTree(treesView.newChildId(), new MyRecordingTreeProvider()));
+		treesView.add(new RecordingTree(treesView.newChildId(), new PublicRecordingTreeProvider(null, null)));
+		for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
+			Organisation o = ou.getOrganisation();
+			treesView.add(new RecordingTree(treesView.newChildId(), new PublicRecordingTreeProvider(o.getOrganisation_id(), o.getName())));
+		}
+		add(trees.add(treesView).setOutputMarkupId(true));
+		updateSizes();
+		add(sizes.add(new Label("homeSize", homeSize), new Label("publicSize", publicSize)).setOutputMarkupId(true));
+		sizes.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
+			private static final long serialVersionUID = 1L;
+
+			protected void onPostProcessTarget(AjaxRequestTarget target) {
+				updateSizes();
+			}
+		});
+		add(video, info, errorsDialog);
+	}
+
+	void delete(FlvRecording f, AjaxRequestTarget target) {
+		long id = f.getFlvRecordingId();
+		if (id > 0) {
+			getBean(FlvRecordingDao.class).delete(f);
+		}
+		target.add(trees); //FIXME add correct refresh
+	}
+	
+	private void updateSizes() {
+		RecordingContainerData sizeData = getBean(FlvRecordingDao.class).getRecordingContainerData(getUserId());
+		if (sizeData != null) {
+			homeSize.setObject(getHumanSize(sizeData.getUserHomeSize()));
+			publicSize.setObject(getHumanSize(sizeData.getPublicFileSize()));
+		}
+	}
+	
+	//FIXME need to be generalized to use as Room files explorer
+	class RecordingTree extends DefaultNestedTree<FlvRecording> {
+		private static final long serialVersionUID = 2527395034256868022L;
+
+		public RecordingTree(String id, ITreeProvider<FlvRecording> tp) {
+			super(id, tp);
+			setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
+		}
+		
+		@Override
+		protected Component newContentComponent(String id, IModel<FlvRecording> node) {
+			return new Folder<FlvRecording>(id, this, node) {
+				private static final long serialVersionUID = 1020976220467419084L;
+
+				@Override
+				protected Component newLabelComponent(String id, final IModel<FlvRecording> lm) {
+					FlvRecording r = lm.getObject();
+					return r.isFolder() || r.getFlvRecordingId() < 1 ? new RecordingPanel(id, lm, RecordingsPanel.this) : new RecordingItemPanel(id, lm, RecordingsPanel.this);
+				}
+				
+				@Override
+				protected boolean isSelected() {
+					return getModelObject().getFlvRecordingId() == rm.getObject().getFlvRecordingId();
+				}
+				
+				@Override
+				protected boolean isClickable() {
+					return true;
+				}
+				
+				@Override
+				protected void onClick(AjaxRequestTarget target) {
+					FlvRecording r = getModelObject();
+					FlvRecording _prev = rm.getObject();
+					rm.setObject(r);
+					if (_prev != null) {
+						if (_prev.isFolder()) {
+							selected.updateBranch(_prev, target);
+						} else {
+							selected.updateNode(_prev, target);
+						}
+					}
+ 					selected = RecordingTree.this;
+					if (r.isFolder()) {
+						if (getState(r) == State.COLLAPSED) {
+							super.onClick(target);
+						}
+						updateBranch(r, target);
+					} else {
+						video.update(target, r);
+						info.update(target, r);
+						updateNode(r, target);
+					}
+				}
+				
+				private String getRecordingStyle(FlvRecording r, String def) {
+					String style;
+					if (r.getFlvRecordingId() == 0) {
+						style = "my-recordings om-icon";
+					} else if (r.getFlvRecordingId() < 0) {
+						style = "public-recordings om-icon";
+					} else if (r.isFolder()) {
+						style = def;
+					} else if (isRecordingExists(r.getFileHash() + MP4_EXTENSION)) {
+						style = "recording om-icon";
+					} else if (Status.RECORDING == r.getStatus() || Status.CONVERTING == r.getStatus()) {
+						style = "processing-recording om-icon";
+					} else {
+						style = "broken-recording om-icon";
+					}
+					return style;
+				}
+				
+				@Override
+				protected String getOtherStyleClass(FlvRecording r) {
+					return getRecordingStyle(r, super.getOtherStyleClass(r));
+				}
+				
+				@Override
+				protected String getOpenStyleClass() {
+					return getRecordingStyle(getModelObject(), super.getOpenStyleClass());
+				}
+				
+				@Override
+				protected String getClosedStyleClass() {
+					return getRecordingStyle(getModelObject(), super.getClosedStyleClass());
+				}
+				
+				@Override
+				protected String getSelectedStyleClass() {
+					return "ui-state-active";
+				}
+				
+				@Override
+				protected IModel<String> newLabelModel(IModel<FlvRecording> model) {
+					return Model.of(model.getObject().getFileName());
+				}
+			};
+		}
+	}
+	
+	@Override
+	protected void onDetach() {
+		rm.detach();
+		homeSize.detach();
+		publicSize.detach();
+		super.onDetach();
+	}
+	
+	class MyRecordingTreeProvider extends RecordingTreeProvider {
+		private static final long serialVersionUID = 1L;
+
+		public Iterator<? extends FlvRecording> getRoots() {
+			FlvRecording r = new FlvRecording();
+			r.setFlvRecordingId(0);
+			r.setFileName(WebSession.getString(860));
+			r.setFolder(true);
+			r.setOwnerId(getUserId());
+			return Arrays.asList(r).iterator();
+		}
+		
+		public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
+			if (node.getFlvRecordingId() == 0) {
+				return getBean(FlvRecordingDao.class).getFlvRecordingRootByOwner(getUserId()).iterator();
+			} else {
+				return super.getChildren(node);
+			}
+		}
+	}
+	
+	class PublicRecordingTreeProvider extends RecordingTreeProvider {
+		private static final long serialVersionUID = 5502610991599632079L;
+		private final Long orgId;
+		private final String name;
+
+		public PublicRecordingTreeProvider(Long orgId, String name) {
+			this.orgId = orgId;
+			this.name = name;
+		}
+		
+		public Iterator<? extends FlvRecording> getRoots() {
+			FlvRecording r = new FlvRecording();
+			r.setFlvRecordingId(orgId == null ? -1 : -orgId);
+			r.setOrganization_id(orgId);
+			r.setOwnerId(null);
+			r.setFolder(true);
+			String pub = WebSession.getString(861);
+			r.setFileName(orgId == null ? pub : String.format("%s (%s)", pub, name));
+			return Arrays.asList(r).iterator();
+		}
+		
+		public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
+			if (node.getFlvRecordingId() < 0) {
+				return getBean(FlvRecordingDao.class).getFlvRecordingRootByPublic(orgId).iterator();
+			} else {
+				return super.getChildren(node);
+			}
+		}
+	}
+	
+	abstract class RecordingTreeProvider implements ITreeProvider<FlvRecording> {
+		private static final long serialVersionUID = 1L;
+
+		public void detach() {
+			// TODO LDM should be used
+		}
+
+		public boolean hasChildren(FlvRecording node) {
+			return node.getFlvRecordingId() <= 0 || node.isFolder();
+		}
+
+		public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
+			return getBean(FlvRecordingDao.class).getFlvRecordingByParent(node.getFlvRecordingId()).iterator();
+		}
+
+		public IModel<FlvRecording> model(FlvRecording object) {
+			// TODO LDM should be used
+			return Model.of(object);
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html b/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
new file mode 100644
index 0000000..2582389
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
@@ -0,0 +1,51 @@
+<?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 class="info" wicket:id="form">
+		<table>
+			<tr>
+				<td><wicket:ommessage key="863"/></td>
+				<td><span wicket:id="fileName"></span></td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="864"/></td>
+				<td><span wicket:id="duration"></span></td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="865"/></td>
+				<td><span wicket:id="recordEnd"></span></td>
+			</tr>
+			<tr>
+				<td><wicket:ommessage key="874"/></td>
+				<td><span wicket:id="roomName"></span></td>
+			</tr>
+		</table>
+		<table>
+			<tr>
+				<td><button wicket:id="dAVI"><wicket:ommessage key="884"/></button></td>
+				<td><button wicket:id="dFLV"><wicket:ommessage key="883"/></button></td>
+				<td><button wicket:id="re-convert"><wicket:ommessage key="1600"/></button></td>
+			</tr>
+		</table>
+	</form>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java b/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
new file mode 100644
index 0000000..8dc3205
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
@@ -0,0 +1,168 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.List;
+
+import org.apache.openmeetings.converter.FlvInterviewConverter;
+import org.apache.openmeetings.converter.FlvRecorderConverter;
+import org.apache.openmeetings.converter.IRecordingConverter;
+import org.apache.openmeetings.db.dao.record.FlvRecordingMetaDataDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.record.FlvRecording.Status;
+import org.apache.openmeetings.db.entity.record.FlvRecordingMetaData;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.resource.FileResourceStream;
+
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
+
+public class VideoInfo extends Panel {
+	private static final long serialVersionUID = 1L;
+	private final Form<Void> form = new Form<Void>("form");
+	private final AjaxButton downloadAvi = new AjaxButton("dAVI") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getAlternateDownload());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton downloadFlv = new AjaxButton("dFLV") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.ARROWTHICKSTOP_1_S;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			download.setFileName(rm.getObject().getFileHash());
+			download.setResourceStream(new FileResourceStream(getRecording(rm.getObject().getFileHash())));
+			download.initiate(target);
+		}
+	};
+	private final AjaxButton reConvert = new AjaxButton("re-convert") {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected String getIcon() {
+			return JQueryIcon.REFRESH;
+		};
+		
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+			final IRecordingConverter converter = getBean(isInterview ? FlvInterviewConverter.class : FlvRecorderConverter.class);
+			new Thread() {
+				public void run() {
+					converter.startConversion(rm.getObject().getFlvRecordingId());
+				}
+			}.start();
+		}
+	};
+	private final AjaxDownload download = new AjaxDownload();
+	private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
+	private final IModel<String> roomName = Model.of((String)null);
+	private boolean isInterview = false;
+
+	public VideoInfo(String id) {
+		this(id, null);
+	}
+	
+	public VideoInfo(String id, FlvRecording r) {
+		super(id);
+		add(form.setOutputMarkupId(true));
+		setDefaultModel(rm);
+		
+		form.add(new Label("fileName"), new Label("duration"), new Label("recordEnd"), new Label("roomName", roomName),
+				downloadFlv.setEnabled(false), downloadAvi.setEnabled(false), reConvert.setEnabled(false));
+		add(download);
+		update(null, r);
+	}
+	
+	public VideoInfo update(AjaxRequestTarget target, FlvRecording _r) {
+		FlvRecording r = _r == null ? new FlvRecording() : _r;
+		rm.setObject(r);
+		try {
+			String name = null;
+			if (r.getRoom_id() != null) {
+				Room room = getBean(RoomDao.class).get(r.getRoom_id());
+				if (room != null) {
+					name = room.getName();
+					isInterview = room.getRoomtype().getRoomtypes_id() == 4;
+				}
+			}
+			roomName.setObject(name);
+		} catch (Exception e) {
+			//no-op
+		}
+		
+		boolean reConvEnabled = false;
+		if (r.getOwnerId() != null && getUserId() == r.getOwnerId() && r.getStatus() != Status.RECORDING && r.getStatus() != Status.CONVERTING) {
+			List<FlvRecordingMetaData> metas = getBean(FlvRecordingMetaDataDao.class).getByRecording(r.getFlvRecordingId());
+			reconvLabel:
+			if (!metas.isEmpty()) {
+				for (FlvRecordingMetaData meta : metas) {
+					if (r.getRoom_id() == null || !getRecordingMetaData(r.getRoom_id(), meta.getStreamName()).exists()) {
+						break reconvLabel;
+					}
+				}
+				reConvEnabled = true;
+			}
+		}
+		reConvert.setEnabled(reConvEnabled);
+		downloadAvi.setEnabled(isRecordingExists(r.getAlternateDownload()));
+		downloadFlv.setEnabled(isRecordingExists(r.getFileHash()));
+		if (target != null) {
+			target.add(form);
+		}
+		
+		return this;
+	}
+	
+	@Override
+	protected void onDetach() {
+		rm.detach();
+		roomName.detach();
+		super.onDetach();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html b/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
new file mode 100644
index 0000000..8d0defe
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
@@ -0,0 +1,30 @@
+<?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="video" wicket:id="container">
+		<div wicket:id="wait"></div>
+		<video wicket:id="player">
+			Your browser does not support HTML5 video. <!-- FIXME hardcoded -->
+		</video>
+	</div>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java b/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
new file mode 100644
index 0000000..04cf3b5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
+import org.apache.openmeetings.web.util.OggRecordingResourceReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.util.ListModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.wicketstuff.html5.media.MediaSource;
+import org.wicketstuff.html5.media.video.Html5Video;
+
+public class VideoPlayer extends Panel {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer wait = new WebMarkupContainer("wait"); //FIXME not used
+	private final WebMarkupContainer container = new WebMarkupContainer("container");
+	private final Mp4RecordingResourceReference mp4res = new Mp4RecordingResourceReference();
+	private final OggRecordingResourceReference oggres = new OggRecordingResourceReference();
+	private final IModel<List<MediaSource>> playerModel = new ListModel<MediaSource>(new ArrayList<MediaSource>());
+	private final OmHtml5Video player = new OmHtml5Video("player", playerModel, null);
+
+	public VideoPlayer(String id) {
+		this(id, null);
+	}
+	
+	public VideoPlayer(String id, FlvRecording r) {
+		super(id);
+		add(container.setOutputMarkupPlaceholderTag(true));
+		container.add(wait.setVisible(false), player);
+		update(null, r);
+	}
+	
+	public VideoPlayer update(AjaxRequestTarget target, FlvRecording r) {
+		boolean videoExists = r != null && getMp4Recording(r.getFileHash()).exists();
+		if (videoExists) {
+			PageParameters pp = new PageParameters().add("id", r.getFlvRecordingId());
+			playerModel.setObject(Arrays.asList(
+					new MediaSource("" + getRequestCycle().urlFor(mp4res, pp), "video/mp4")
+					, new MediaSource("" + getRequestCycle().urlFor(oggres, pp), "video/ogg")));
+			player.recId = r.getFlvRecordingId();
+		}
+		container.setVisible(videoExists);
+		if (target != null) {
+			target.add(container);
+		}
+		
+		return this;
+	}
+	
+	@Override
+	protected void onDetach() {
+		playerModel.detach();
+		super.onDetach();
+	}
+	
+	private static class OmHtml5Video extends Html5Video {
+		private static final long serialVersionUID = 1L;
+		Long recId = null;
+		
+		OmHtml5Video(String id, IModel<List<MediaSource>> model, Long recId) {
+			super(id, model);
+			this.recId = recId;
+		}
+		
+		@Override
+		protected boolean isAutoPlay() {
+			return false;
+		}
+		
+		@Override
+		protected boolean isControls() {
+			return true;
+		}
+		
+		@Override
+		protected String getPoster() {
+			return recId == null ? null : "recordings/jpg/" + recId;
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java
new file mode 100644
index 0000000..9dd156d
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+public class RoomEnterBehavior extends AjaxEventBehavior {
+	private static final long serialVersionUID = -5195740583653865055L;
+	private final long roomid;
+	
+	public RoomEnterBehavior(long roomid) {
+		super("click");
+		this.roomid = roomid;
+	}
+
+	public static OmUrlFragment getRoomUrlFragment(long roomId) {
+		return new OmUrlFragment(AreaKeys.room, "" + roomId);
+	}
+	
+	public static void roomEnter(MainPage page, AjaxRequestTarget target, long roomId) {
+		page.updateContents(getRoomUrlFragment(roomId), target);
+	}
+	
+	@Override
+	protected void onEvent(AjaxRequestTarget target) {
+		roomEnter((MainPage)getComponent().getPage(), target, roomid);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.html b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.html
new file mode 100644
index 0000000..edde44a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.html
@@ -0,0 +1,30 @@
+<?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 id="swfloading"
+		style="z-index: 666666; position: absolute; top: 50%; left: 50%;">
+		<img src="images/ajax-loader.gif" />
+	</div>
+	<noscript>Please enable JavaScript in order to use this application.</noscript>
+	<script type="text/javascript" wicket:id="init"></script>
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.java b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.java
new file mode 100644
index 0000000..555b5df
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomPanel.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.wicket.RuntimeConfigurationType;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.time.Duration;
+
+public class RoomPanel extends BasePanel {
+	private static final long serialVersionUID = 2308988314987829510L;
+	
+	public RoomPanel(String id) {
+		this(id, new PageParameters());
+	}
+	
+	private String getFlashFile() {
+		return RuntimeConfigurationType.DEVELOPMENT == getApplication().getConfigurationType()
+				? "maindebug.as3.swf11.swf" : "main.as3.swf11.swf";
+	}
+	
+	public RoomPanel(String id, PageParameters pp) {
+		super(id);
+
+		StringValue swfVal = pp.get("swf");
+		String swf = (swfVal.isEmpty() ? getFlashFile() : swfVal.toString())
+				+ new PageParametersEncoder().encodePageParameters(pp);
+		add(new Label("init", String.format("initSwf('%s');", swf)).setEscapeModelStrings(false));
+		add(new AbstractAjaxTimerBehavior(Duration.minutes(5)) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onTimer(AjaxRequestTarget target) {
+				WebSession.getString(1L); //dummy call to keep session alive
+			}
+		});
+	}
+
+	private ResourceReference newResourceReference() {
+		return new JavaScriptResourceReference(RoomPanel.class, "swf-functions.js");
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(newResourceReference())));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forUrl("js/history.js")));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forUrl("js/openmeetings_functions.js")));
+		response.render(new PriorityHeaderItem(CssHeaderItem.forUrl("css/history.css")));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
new file mode 100644
index 0000000..641c238
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
@@ -0,0 +1,74 @@
+<?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>
+	<table>
+		<tr>
+			<td style="vertical-align: top">
+				<table class="room-list">
+					<tr wicket:id="list" class="room-row">
+						<td>
+							<div wicket:id="roomContainer">		
+								<span wicket:id="roomName">[room name]</span><br/>
+								<wicket:ommessage key="398" />&nbsp;<span wicket:id="curUsers"></span>&nbsp;/&nbsp;<span
+								wicket:id="totalUsers"></span>&nbsp;&nbsp;<span wicket:id="refresh" 
+								class="ui-icon ui-icon-arrowrefresh-1-n" style="display: inline-block"></span>
+							</div>
+						</td>
+						<td><button wicket:id="enter"><wicket:ommessage key="131"/></button></td>
+					</tr>
+				</table>
+			</td>
+			<td style="vertical-align: top">
+				<!-- Users in this Room -->
+				<fieldset class="ui-widget-content" wicket:id="details">
+					<div class="formelement" style="font-style: italic;">
+	                    <label><wicket:ommessage key="404" /></label>
+					</div>
+					<div class="formelement">
+	                    <label style="font-weight: bold;"><wicket:ommessage key="406" /></label>
+	                    <span wicket:id="roomName"></span>&nbsp;#<span wicket:id="roomId"></span>
+					</div>
+					<div class="formelement">
+	                    <label style="font-weight: bold;"><wicket:ommessage key="270" /></label>
+	                    <span wicket:id="roomComment"></span>
+					</div>
+					<div class="formelement">
+	                    <label><wicket:ommessage key="407" /></label>
+					</div>
+					<div class="tableWrapper" id="adminTable">
+						<table class="adminListTable">
+							<tbody wicket:id="clientsContainer">		
+					    		<tr wicket:id="clients">
+									<td style="width: 50px;"><img wicket:id="clientImage" style="min-width: 50px; height:50px" /></td>
+									<td style="width: 350px; height:50px">
+										<div style="width: 350px; height:50px"><span wicket:id="clientLogin"></span>&nbsp;<wicket:ommessage key="408"/>&nbsp;<span wicket:id="from"></span></div>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</fieldset>
+			</td>
+		</tr>
+	</table>
+</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
new file mode 100644
index 0000000..f28f0a3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
@@ -0,0 +1,165 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.ByteArrayResource;
+import org.apache.wicket.util.io.IOUtils;
+
+import com.googlecode.wicket.jquery.ui.form.button.Button;
+
+public class RoomsPanel extends UserPanel {
+	private static final long serialVersionUID = 1L;
+	private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
+	private final WebMarkupContainer details = new WebMarkupContainer("details");
+	private final ListView<Client> clients;
+	private IModel<Long> roomID = Model.of((Long)null);
+	private IModel<String> roomName = Model.of((String)null);
+	private IModel<String> roomComment = Model.of((String)null);
+	private List<Client> clientsInRoom = null;
+	private long roomId = 0;
+
+	public RoomsPanel(String id, List<Room> rooms) {
+		super(id);
+		add(new ListView<Room>("list", rooms) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(ListItem<Room> item) {
+				final Room r = item.getModelObject();
+				WebMarkupContainer roomContainer;
+				item.add((roomContainer = new WebMarkupContainer("roomContainer")).add(new AjaxEventBehavior("onclick"){
+					private static final long serialVersionUID = 1L;
+					
+					@Override
+					protected void onEvent(AjaxRequestTarget target) {
+						roomId = r.getRooms_id();
+						updateRoomDetails(target);
+					}
+				}));
+				roomContainer.add(new Label("roomName", r.getName()));
+				final Label curUsers = new Label("curUsers", new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size()));
+				roomContainer.add(curUsers.setOutputMarkupId(true));
+				roomContainer.add(new Label("totalUsers", r.getNumberOfPartizipants()));
+				item.add(new Button("enter").add(new RoomEnterBehavior(r.getRooms_id())));
+				roomContainer.add(new AjaxLink<Void>("refresh") {
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					public void onClick(AjaxRequestTarget target) {
+						roomId = r.getRooms_id();
+						target.add(curUsers.setDefaultModelObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getRooms_id()).size()));
+						updateRoomDetails(target);
+					}
+				});
+			}
+		});
+		
+		// Users in this Room
+		add(details.setOutputMarkupId(true).setVisible(rooms.size() > 0));
+		details.add(new Label("roomId", roomID));
+		details.add(new Label("roomName", roomName));
+		details.add(new Label("roomComment", roomComment));
+		clients = new ListView<Client>("clients", clientsInRoom){
+			private static final long serialVersionUID = 8542589945574690054L;
+
+			@Override
+			protected void populateItem(final ListItem<Client> item) {
+				Client client = item.getModelObject();
+				final Long userId = client.getUser_id();
+				item.add(new Image("clientImage", new ByteArrayResource("image/jpeg") {
+					private static final long serialVersionUID = 6039580072791941591L;
+
+					@Override
+					protected ResourceResponse newResourceResponse(Attributes attributes) {
+						ResourceResponse rr = super.newResourceResponse(attributes);
+						rr.disableCaching();
+						return rr;
+					}
+					
+					@Override
+					protected byte[] getData(Attributes attributes) {
+						String uri = null;
+						if (userId != null) {
+							uri = Application.getBean(UserDao.class).get(userId > 0 ? userId : -userId).getPictureuri();
+						}
+						File img = OmFileHelper.getUserProfilePicture(userId, uri);
+						InputStream is = null;
+						try {
+							is = new FileInputStream(img);
+							return IOUtils.toByteArray(is);
+						} catch (Exception e) {
+						} finally {
+							if (is != null) {
+								try {
+									is.close();
+								} catch (IOException e) {}
+							}
+						}
+						return null;
+					}
+				}));
+				item.add(new Label("clientLogin", client.getUsername()));
+				item.add(new Label("from", client.getConnectedSince()));
+			}
+		};
+		details.add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
+	}
+
+	void updateRoomDetails(AjaxRequestTarget target) {
+		final List<Client> clientsInRoom = Application.getBean(ISessionManager.class).getClientListByRoom(roomId);
+		clients.setDefaultModelObject(clientsInRoom);
+		Room room = Application.getBean(RoomDao.class).get(roomId);
+		roomID.setObject(room.getRooms_id());
+		roomName.setObject(room.getName());
+		roomComment.setObject(room.getComment());
+		target.add(clientsContainer, details);
+	}
+	
+	@Override
+	protected void onDetach() {
+		roomID.detach();
+		roomName.detach();
+		roomComment.detach();
+		super.onDetach();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
new file mode 100644
index 0000000..eea6f53
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
@@ -0,0 +1,27 @@
+<?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 wicket:id="title" class="rooms title"></div>
+		<div wicket:id="desc" class="rooms desc info-text"></div>
+		<div wicket:id="rooms"></div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
new file mode 100644
index 0000000..5638cb0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
+import org.apache.wicket.markup.html.basic.Label;
+
+public class RoomsSelectorPanel extends UserPanel {
+	private static final long serialVersionUID = -3246259803623925341L;
+
+	public RoomsSelectorPanel(String id, MenuParams param) {
+		super(id);
+
+		long title, desc;
+		RoomDao roomDao = Application.getBean(RoomDao.class);
+		switch (param) {
+			case myTabButton:
+				title = 781L;
+				desc = 782L;
+				add(new RoomsPanel("rooms", getMyRooms()));
+				break;
+			case privateTabButton:
+				title = 779L;
+				desc = 780L;
+				add(new RoomsTabbedPanel("rooms")); 
+				break;
+			case publicTabButton:
+			default:
+				title = 777L;
+				desc = 778L;
+				add(new RoomsPanel("rooms", roomDao.getPublicRooms()));
+				break;
+		}
+		add(new Label("title", WebSession.getString(title)));
+		add(new Label("desc", WebSession.getString(desc)));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
new file mode 100644
index 0000000..b8aa48b
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
@@ -0,0 +1,30 @@
+<?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 id="orgTabs">
+			<ul>
+				<li wicket:id="orgTabs"><a wicket:id="link"><wicket:container wicket:id="name"></wicket:container></a></li>
+			</ul>
+			<wicket:container wicket:id="orgRooms"><div wicket:id="rooms"></div></wicket:container>
+		</div>
+	</wicket:panel>
+</html>
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
new file mode 100644
index 0000000..7a501c9
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.user.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+
+public class RoomsTabbedPanel extends UserPanel {
+	private static final long serialVersionUID = 3642004664480074881L;
+
+	public RoomsTabbedPanel(String id) {
+		super(id);
+		
+		User u = getBean(UserDao.class).get(getUserId());
+		add(new ListView<Organisation_Users>("orgTabs", u.getOrganisation_users()) {
+			private static final long serialVersionUID = -145637079945252731L;
+
+			@Override
+			protected void populateItem(ListItem<Organisation_Users> item) {
+				Organisation org = item.getModelObject().getOrganisation();
+				item.add(new WebMarkupContainer("link")
+					.add(new Label("name", Model.of(org.getName())))
+					.add(new AttributeModifier("href", "#org" + org.getOrganisation_id())));
+			}
+		});
+		add(new ListView<Organisation_Users>("orgRooms", u.getOrganisation_users()) {
+			private static final long serialVersionUID = 9039932126334250798L;
+
+			@Override
+			protected void populateItem(ListItem<Organisation_Users> item) {
+				Organisation org = item.getModelObject().getOrganisation();
+				item.add(new RoomsPanel("rooms"
+					, getBean(RoomDao.class).getOrganisationRooms(org.getOrganisation_id()))
+					.setMarkupId("org" + org.getOrganisation_id())).setRenderBodyOnly(true);
+			}
+		});
+		add(new JQueryBehavior("#orgTabs", "tabs"));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/user/rooms/swf-functions.js b/src/web/java/org/apache/openmeetings/web/user/rooms/swf-functions.js
new file mode 100644
index 0000000..3c3ead6
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/user/rooms/swf-functions.js
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+function getAppletStatus() {
+	return false;
+}
+
+function initSwf(swfurl) {
+	var general = {
+			url : swfurl,
+			bgcolor : '#ffffff',
+			width : '100%',
+			height : '100%',
+			id : 'lzapp',
+			__lzminimumversion : 8
+		};
+	var options = $.extend({}, general, {allowfullscreen : 'true'});
+	$('#header, #topControls, #chatPanel').hide();
+	$('div[id="contents"], div[id="contents"] > div').css('height', '100%');
+	var embed = $('<embed>').attr('quality', 'high').attr('bgcolor', options.bgcolor)
+		.attr('src', "public/" + options.url)
+		.attr('wmode', 'window').attr('allowfullscreen', true)
+		.attr('width', options.width).attr('height', options.height)
+		.attr('id', 'lzapp').attr('name', 'lzapp')
+		.attr('flashvars', escape($.param(general)))
+		.attr('swliveconnect', true).attr('align', 'middle')
+		.attr('allowscriptaccess', 'sameDomain').attr('type', 'application/x-shockwave-flash')
+		.attr('pluginspage', 'http://www.macromedia.com/go/getflashplayer');
+	$('#swfloading').after($('<div id="lzappContainer">').append(embed)).width('1px').height('1px');
+}
+
+function roomExit() {
+	$('#header, #topControls, #chatPanel').show();
+	$('div[id="contents"], div[id="contents"] > div').css('height', 'auto');
+	window.location.hash = "#rooms/public";
+	$('#lzappContainer').remove();
+}
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/util/AjaxDownload.java b/src/web/java/org/apache/openmeetings/web/util/AjaxDownload.java
new file mode 100644
index 0000000..2000987
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/AjaxDownload.java
@@ -0,0 +1,99 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AbstractAjaxBehavior;
+import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.util.resource.IResourceStream;
+
+/**
+ * see: <a href="https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow">
+ * https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow</href>
+ * 
+ */
+public class AjaxDownload extends AbstractAjaxBehavior {
+	private static final long serialVersionUID = 1L;
+
+	private boolean addAntiCache;
+
+	private String fileName;
+	private IResourceStream resourceStream;
+
+	public AjaxDownload() {
+		this(true);
+	}
+
+	public AjaxDownload(boolean addAntiCache) {
+		super();
+		this.addAntiCache = addAntiCache;
+	}
+
+	/**
+	 * Call this method to initiate the download.
+	 */
+	public void initiate(AjaxRequestTarget target) {
+		String url = getCallbackUrl().toString();
+
+		if (addAntiCache) {
+			url = url + (url.contains("?") ? "&" : "?");
+			url = url + "antiCache=" + System.currentTimeMillis();
+		}
+
+		// the timeout is needed to let Wicket release the channel
+		target.appendJavaScript("setTimeout(\"window.location.href='" + url + "'\", 100);");
+	}
+
+	public void onRequest() {
+		ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(getResourceStream(), getFileName());
+		handler.setContentDisposition(getContentDisposition());
+		getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
+	}
+
+	protected ContentDisposition getContentDisposition() {
+		return ContentDisposition.ATTACHMENT;
+	}
+	/**
+	 * Override this method for a file name which will let the browser prompt
+	 * with a save/open dialog.
+	 * 
+	 * @see ResourceStreamRequestTarget#getFileName()
+	 */
+	protected String getFileName() {
+		return this.fileName;
+	}
+
+	public void setFileName(String fileName) {
+		this.fileName = fileName;
+	}
+
+	/**
+	 * Hook method providing the actual resource stream.
+	 */
+	protected IResourceStream getResourceStream() {
+		return resourceStream;
+
+	}
+
+	public void setResourceStream(IResourceStream resourceStream) {
+		this.resourceStream = resourceStream;
+	}
+
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
new file mode 100644
index 0000000..f354341
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class AviRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public AviRecordingResourceReference() {
+		super(AviRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/avi";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getAlternateDownload();
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getRecording(r.getAlternateDownload());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java b/src/web/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
new file mode 100644
index 0000000..0d85df4
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+
+public class BootstrapFileUploadBehavior extends Behavior {
+	private static final long serialVersionUID = 1L;
+	private final static JavaScriptResourceReference BOOTSTRAP_FILEUPLOAD_JS_REFERENCE
+			= new JavaScriptResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.js");
+	private final static CssResourceReference BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE
+			= new CssResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.css");
+	public final static BootstrapFileUploadBehavior INSTANCE = new BootstrapFileUploadBehavior(); 
+	
+	private BootstrapFileUploadBehavior() {
+	}
+	
+	@Override
+	public void renderHead(Component component, IHeaderResponse response) {
+		super.renderHead(component, response);
+        response.render(JavaScriptHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_JS_REFERENCE));
+        response.render(CssHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java b/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
new file mode 100644
index 0000000..0197432
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/CalendarHelper.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.WebSession.getUserTimeZone;
+
+import java.util.Date;
+
+import org.threeten.bp.Instant;
+import org.threeten.bp.LocalDate;
+import org.threeten.bp.LocalDateTime;
+import org.threeten.bp.ZoneId;
+
+public class CalendarHelper {
+	public static ZoneId getZoneId() {
+		return ZoneId.of(getUserTimeZone().getID());
+	}
+	
+	public static Date getDate(LocalDate d) {
+		return getDate(d.atStartOfDay());
+	}
+
+	public static Date getDate(LocalDateTime d) {
+		return new Date(d.atZone(getZoneId()).toInstant().toEpochMilli());
+	}
+
+	public static LocalDateTime getDate(Date d) {
+		return Instant.ofEpochMilli(d.getTime()).atZone(ZoneId.of(getUserTimeZone().getID())).toLocalDateTime();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/ContactsHelper.java b/src/web/java/org/apache/openmeetings/web/util/ContactsHelper.java
new file mode 100644
index 0000000..b22cad5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/ContactsHelper.java
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+
+import java.util.Date;
+
+import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
+import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.UserContact;
+import org.apache.openmeetings.mail.MailHandler;
+import org.apache.openmeetings.util.CalendarPatterns;
+import org.apache.openmeetings.util.crypt.ManageCryptStyle;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.mail.template.RequestContactConfirmTemplate;
+import org.apache.openmeetings.web.mail.template.RequestContactTemplate;
+
+public class ContactsHelper {
+	public static long addUserToContactList(long userIdToAdd) {
+		Long countContacts = getBean(UserContactsDao.class).checkUserContacts(userIdToAdd, getUserId());
+
+		if (countContacts != null && countContacts > 0) {
+			return -45L;
+		}
+		String hash = ManageCryptStyle.getInstanceOfCrypt()
+			.createPassPhrase(CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
+
+		Long userContactId = getBean(UserContactsDao.class).addUserContact(userIdToAdd, getUserId(), true, hash);
+
+		User user = getBean(UserDao.class).get(getUserId());
+		User userToAdd = getBean(UserDao.class).get(userIdToAdd);
+
+		String subj = user.getFirstname() + " " + user.getLastname() + " " + WebSession.getString(1193);
+		String message = RequestContactTemplate.getEmail(userToAdd, user);
+
+		getBean(PrivateMessagesDao.class).addPrivateMessage(
+			subj, message, 0L, user, userToAdd, userToAdd, false, null, true, userContactId);
+
+		if (userToAdd.getAdresses() != null) {
+			getBean(MailHandler.class).send(userToAdd.getAdresses().getEmail(), subj, message);
+		}
+
+		return userContactId;
+	}
+
+	public static Long acceptUserContact(long userContactId) {
+		UserContactsDao dao = getBean(UserContactsDao.class);
+		UserContact contact = dao.get(userContactId);
+
+		if (contact == null) {
+			return -46L;
+		}
+
+		if (!contact.getPending()) {
+			return -47L;
+		}
+
+		dao.updateContactStatus(userContactId, false);
+
+		contact = dao.get(userContactId);
+
+		dao.addUserContact(contact.getOwner().getUser_id(), getUserId(), false, "");
+
+		User user = contact.getOwner();
+
+		if (user.getAdresses() != null) {
+			String message = RequestContactConfirmTemplate.getEmail(user, contact);
+
+			String subj = contact.getContact().getFirstname() + " " + contact.getContact().getLastname() + " " + WebSession.getString(1198);
+
+			getBean(PrivateMessagesDao.class).addPrivateMessage(
+					subj, message,
+					0L, contact.getContact(), user, user, false, null, false, 0L);
+
+			getBean(MailHandler.class).send(user.getAdresses().getEmail(), subj, message);
+		}
+		return userContactId;
+	}
+	
+	public static String getLink() {
+		return PROFILE_MESSAGES.getLink();		
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
new file mode 100644
index 0000000..13accb5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class FlvRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public FlvRecordingResourceReference() {
+		super(FlvRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/flv";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getFileHash();
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getRecording(r.getFileHash());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java b/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
new file mode 100644
index 0000000..cb07401
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
+
+import java.util.regex.Pattern;
+
+import org.apache.openmeetings.db.entity.user.User;
+
+public class FormatHelper {
+	/**
+	 * taken from BidiUtils
+	 * 
+	 * A regular expression for matching right-to-left language codes. See
+	 * {@link #isRtlLanguage} for the design.
+	 */
+	private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
+					+ "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
+
+	/**
+	 * Check if a BCP 47 / III language code indicates an RTL language, i.e.
+	 * either: - a language code explicitly specifying one of the right-to-left
+	 * scripts, e.g. "az-Arab", or
+	 * <p>
+	 * - a language code specifying one of the languages normally written in a
+	 * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
+	 * specifying Latin or Cyrillic script (which are the usual LTR
+	 * alternatives).
+	 * <p>
+	 * The list of right-to-left scripts appears in the 100-199 range in
+	 * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
+	 * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
+	 * and Tifinagh, which also have significant modern usage. The rest (Syriac,
+	 * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
+	 * usage and are not recognized. The languages usually written in a
+	 * right-to-left script are taken as those with Suppress-Script:
+	 * Hebr|Arab|Thaa|Nkoo|Tfng in
+	 * http://www.iana.org/assignments/language-subtag-registry, as well as
+	 * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
+	 * language code, e.g. regions like EG (Egypt), is ignored.
+	 */
+	public static boolean isRtlLanguage(String languageString) {
+		return languageString != null && RtlLocalesRe.matcher(languageString).find();
+	}
+
+	public static String formatUser(User u) {
+		return formatUser(u, false);
+	}
+
+	// TODO check RIGHTS here (email might need to be hidden)
+	public static String formatUser(User u, boolean isHTMLEscape) {
+		String user = "";
+		if (u != null) {
+			String email = u.getAdresses() == null ? "" : u.getAdresses().getEmail();
+			user = String.format("\"%s %s\" <%s>", u.getFirstname(), u.getLastname(), email);
+			user = isHTMLEscape ? escapeHtml4(user) : user;
+		}
+		return user;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
new file mode 100644
index 0000000..8a92f2c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class JpgRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public JpgRecordingResourceReference() {
+		super(JpgRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "image/jpeg";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getPreviewImage();
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getRecording(r.getPreviewImage());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
new file mode 100644
index 0000000..41df9e0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class Mp4RecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public Mp4RecordingResourceReference() {
+		super(Mp4RecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/mp4";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getFileHash() + MP4_EXTENSION;
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getMp4Recording(r.getFileHash());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
new file mode 100644
index 0000000..758757c
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.getOggRecording;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+
+public class OggRecordingResourceReference extends RecordingResourceReference {
+	private static final long serialVersionUID = 6181482949621024822L;
+
+	public OggRecordingResourceReference() {
+		super(OggRecordingResourceReference.class);
+	}
+	
+	@Override
+	public String getContentType() {
+		return "video/ogg";
+	}
+	
+	@Override
+	String getFileName(FlvRecording r) {
+		return r.getFileHash() + OGG_EXTENSION;
+	}
+	
+	@Override
+	File getFile(FlvRecording r) {
+		return getOggRecording(r.getFileHash());
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/OmUrlFragment.java b/src/web/java/org/apache/openmeetings/web/util/OmUrlFragment.java
new file mode 100644
index 0000000..7c8d85f
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/OmUrlFragment.java
@@ -0,0 +1,303 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANDING_ZONE;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+import static org.apache.openmeetings.web.user.profile.SettingsPanel.EDIT_PROFILE_TAB_ID;
+import static org.apache.openmeetings.web.user.profile.SettingsPanel.MESSAGES_TAB_ID;
+
+import java.io.Serializable;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.web.admin.backup.BackupPanel;
+import org.apache.openmeetings.web.admin.configurations.ConfigsPanel;
+import org.apache.openmeetings.web.admin.connection.ConnectionsPanel;
+import org.apache.openmeetings.web.admin.groups.GroupsPanel;
+import org.apache.openmeetings.web.admin.labels.LangPanel;
+import org.apache.openmeetings.web.admin.ldaps.LdapsPanel;
+import org.apache.openmeetings.web.admin.oauth.OAuthPanel;
+import org.apache.openmeetings.web.admin.rooms.RoomsPanel;
+import org.apache.openmeetings.web.admin.servers.ServersPanel;
+import org.apache.openmeetings.web.admin.users.UsersPanel;
+import org.apache.openmeetings.web.common.BasePanel;
+import org.apache.openmeetings.web.user.calendar.CalendarPanel;
+import org.apache.openmeetings.web.user.dashboard.OmDashboardPanel;
+import org.apache.openmeetings.web.user.profile.SettingsPanel;
+import org.apache.openmeetings.web.user.record.RecordingsPanel;
+import org.apache.openmeetings.web.user.rooms.RoomPanel;
+import org.apache.openmeetings.web.user.rooms.RoomsSelectorPanel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class OmUrlFragment implements Serializable {
+	private static final long serialVersionUID = 7382435810352033914L;
+	private AreaKeys area = AreaKeys.user;
+	private String type = "";
+	public static final String CHILD_ID = "child";
+	public static final String TYPE_CALENDAR = "calendar";
+	public static final String TYPE_DASHBOARD = "dashboard";
+	public static final String TYPE_MESSAGES = "messages";
+	public static final String TYPE_EDIT = "edit";
+	public static final String TYPE_RECORDINGS = "record";
+	public static final String TYPE_MY = "my";
+	public static final String TYPE_GROUP = "group";
+	public static final String TYPE_PUBLIC = "public";
+	public static final String TYPE_USER = "user";
+	public static final String TYPE_CONNECTION = "connection";
+	public static final String TYPE_ROOM = "room";
+	public static final String TYPE_CONFIG = "config";
+	public static final String TYPE_LANG = "lang";
+	public static final String TYPE_LDAP = "ldap";
+	public static final String TYPE_BACKUP = "backup";
+	public static final String TYPE_SERVER = "server";
+	public static final String TYPE_OAUTH2 = "oauth2";
+	public static final OmUrlFragment DASHBOARD = new OmUrlFragment(AreaKeys.user, TYPE_DASHBOARD);
+	public static final OmUrlFragment PROFILE_EDIT = new OmUrlFragment(AreaKeys.profile, TYPE_EDIT);
+	public static final OmUrlFragment PROFILE_MESSAGES = new OmUrlFragment(AreaKeys.profile, TYPE_MESSAGES);
+	public static final OmUrlFragment CALENDAR = new OmUrlFragment(AreaKeys.user, TYPE_CALENDAR);
+	public static final OmUrlFragment ROOMS_PUBLIC = new OmUrlFragment(AreaKeys.rooms, TYPE_PUBLIC);
+	
+	public enum AreaKeys {
+		user
+		, admin
+		, profile
+		, room
+		, rooms
+	}
+	
+	public enum MenuActions {
+		dashboardModuleStartScreen
+		, dashboardModuleCalendar
+		, recordModule
+		, conferenceModuleRoomList
+		, eventModuleRoomList
+		, moderatorModuleUser
+		, moderatorModuleRoom
+		, adminModuleUser
+		, adminModuleConnections
+		, adminModuleOrg
+		, adminModuleRoom
+		, adminModuleConfiguration
+		, adminModuleLanguages
+		, adminModuleLDAP
+		, adminModuleBackup
+		, adminModuleServers
+		, adminModuleOAuth
+	}
+	
+	public enum MenuParams {
+		publicTabButton
+		, privateTabButton
+		, myTabButton
+	}
+	
+	public static OmUrlFragment get() {
+		String[] arr = getBean(ConfigurationDao.class).getConfValue(CONFIG_DEFAULT_LANDING_ZONE, String.class, "").split("/");
+		if (arr != null && arr.length == 2) {
+			try {
+				return new OmUrlFragment(AreaKeys.valueOf(arr[0]), arr[1]);
+			} catch (Exception e) {
+				// no-op
+			}
+		}
+		return DASHBOARD;
+	}
+	
+	public OmUrlFragment(AreaKeys area, String type) {
+		this.setArea(area);
+		this.setType(type);
+	}
+	
+	public OmUrlFragment(MenuActions action) {
+		this(action, MenuParams.myTabButton);
+	}
+	
+	public OmUrlFragment(MenuActions action, MenuParams params) {
+		switch(action) {
+			case dashboardModuleStartScreen:
+				setArea(AreaKeys.user);
+				setType(TYPE_DASHBOARD);
+				break;
+			case dashboardModuleCalendar:
+				setArea(AreaKeys.user);
+				setType(TYPE_CALENDAR);
+				break;
+			case recordModule:
+				setArea(AreaKeys.user);
+				setType(TYPE_RECORDINGS);
+				break;
+			case conferenceModuleRoomList:
+				setArea(AreaKeys.rooms);
+				switch (params) {
+					case myTabButton:
+						setType(TYPE_MY);
+						break;
+					case privateTabButton:
+						setType(TYPE_GROUP);
+						break;
+					case publicTabButton:
+						setType(TYPE_PUBLIC);
+						break;
+				}
+				break;
+			case eventModuleRoomList:
+				break;
+			case moderatorModuleUser:
+				break;
+			case moderatorModuleRoom:
+				break;
+			case adminModuleUser:
+				setArea(AreaKeys.admin);
+				setType(TYPE_USER);
+				break;
+			case adminModuleConnections:
+				setArea(AreaKeys.admin);
+				setType(TYPE_CONNECTION);
+				break;
+			case adminModuleOrg:
+				setArea(AreaKeys.admin);
+				setType(TYPE_GROUP);
+				break;
+			case adminModuleRoom:
+				setArea(AreaKeys.admin);
+				setType(TYPE_ROOM);
+				break;
+			case adminModuleConfiguration:
+				setArea(AreaKeys.admin);
+				setType(TYPE_CONFIG);
+				break;
+			case adminModuleLanguages:
+				setArea(AreaKeys.admin);
+				setType(TYPE_LANG);
+				break;
+			case adminModuleLDAP:
+				setArea(AreaKeys.admin);
+				setType(TYPE_LDAP);
+				break;
+			case adminModuleBackup:
+				setArea(AreaKeys.admin);
+				setType(TYPE_BACKUP);
+				break;
+			case adminModuleServers:
+				setArea(AreaKeys.admin);
+				setType(TYPE_SERVER);
+				break;
+			case adminModuleOAuth:
+				setArea(AreaKeys.admin);
+				setType(TYPE_OAUTH2);
+		}
+	}
+
+	public AreaKeys getArea() {
+		return area;
+	}
+
+	public void setArea(AreaKeys area) {
+		this.area = area;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+	
+	public static BasePanel getPanel(AreaKeys area, String type) {
+		BasePanel basePanel = null;
+		switch(area) {
+			case admin:
+				if (TYPE_USER.equals(type)) {
+					basePanel = new UsersPanel(CHILD_ID);
+				} else if (TYPE_CONNECTION.equals(type)) {
+					basePanel = new ConnectionsPanel(CHILD_ID);
+				} else if (TYPE_GROUP.equals(type)) {
+					basePanel = new GroupsPanel(CHILD_ID);
+				} else if (TYPE_ROOM.equals(type)) {
+					basePanel = new RoomsPanel(CHILD_ID);
+				} else if (TYPE_CONFIG.equals(type)) {
+					basePanel = new ConfigsPanel(CHILD_ID);
+				} else if (TYPE_LANG.equals(type)) {
+					basePanel = new LangPanel(CHILD_ID);
+				} else if (TYPE_LDAP.equals(type)) {
+					basePanel = new LdapsPanel(CHILD_ID);
+				} else if (TYPE_BACKUP.equals(type)) {
+					basePanel = new BackupPanel(CHILD_ID);
+				} else if (TYPE_SERVER.equals(type)) {
+					basePanel = new ServersPanel(CHILD_ID);
+				} else if (TYPE_OAUTH2.equals(type)) {
+					basePanel = new OAuthPanel(CHILD_ID);
+				}
+				break;
+			case profile:
+				if (TYPE_MESSAGES.equals(type)) {
+					basePanel = new SettingsPanel(CHILD_ID, MESSAGES_TAB_ID);
+				} else if (TYPE_EDIT.equals(type)) {
+					basePanel = new SettingsPanel(CHILD_ID, EDIT_PROFILE_TAB_ID);
+				}
+				break;
+			case room:
+				try {
+					Long roomId = Long.parseLong(type);
+					if (roomId != null) {
+						PageParameters pp = new PageParameters();
+						pp.add("wicketsid", getSid());
+						pp.add("wicketroomid", roomId);
+						pp.add("language", getLanguage());
+						basePanel = new RoomPanel(CHILD_ID, pp);
+					}
+				} catch(NumberFormatException ne) {
+					//skipit, bad roomid passed
+				}
+				break;
+			case rooms:
+				MenuParams params = MenuParams.publicTabButton;
+				if (TYPE_GROUP.equals(type)) {
+					params = MenuParams.privateTabButton;
+				} else if (TYPE_MY.equals(type)) {
+					params = MenuParams.myTabButton;
+				}
+				basePanel = new RoomsSelectorPanel(CHILD_ID, params);
+				break;
+			case user:
+				if (TYPE_CALENDAR.equals(type)) {
+					basePanel = new CalendarPanel(CHILD_ID);
+				} else if (TYPE_RECORDINGS.equals(type)) {
+					basePanel = new RecordingsPanel(CHILD_ID);
+				} else {
+					basePanel = new OmDashboardPanel(CHILD_ID);
+				}
+				break;
+			default:
+				break;
+		}
+		return basePanel;
+	}
+	
+	public String getLink() {
+		return getLink(getBean(ConfigurationDao.class).getBaseUrl());
+	}
+
+	public String getLink(String baseUrl) {
+		return baseUrl + "#" + getArea().name() + "/" + getType();
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java b/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
new file mode 100644
index 0000000..fcba875
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
@@ -0,0 +1,231 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getExternalType;
+import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.input.BoundedInputStream;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.protocol.http.servlet.ResponseIOException;
+import org.apache.wicket.request.Response;
+import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.resource.FileResourceStream;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.time.Time;
+import org.slf4j.Logger;
+
+public abstract class RecordingResourceReference extends ResourceReference {
+	private static final long serialVersionUID = 1L;
+	private static final Logger log = getLogger(RecordingResourceReference.class, webAppRootKey);
+
+	public RecordingResourceReference(Class<? extends RecordingResourceReference> clazz) {
+		super(clazz, "recordings");
+	}
+
+	@Override
+	public IResource getResource() {
+		return new AbstractResource() {
+			private static final long serialVersionUID = 1L;
+			private final static String ACCEPT_RANGES_HEADER = "Accept-Ranges";
+			private final static String RANGE_HEADER = "Range";
+			private final static String CONTENT_RANGE_HEADER = "Content-Range";
+			private final static String RANGES_BYTES = "bytes";
+			private File file;
+			private boolean isRange = false;
+			private long start = 0;
+			private long end = 0;
+			
+			private long getChunkLength() {
+				return isRange ? end - start + 1 : (file == null ? -1 : file.length());
+			}
+			
+			private IResourceStream getResourceStream() {
+				return file == null ? null : new FileResourceStream(file) {
+					private static final long serialVersionUID = 2546785247219805747L;
+					private transient BoundedInputStream bi;
+
+					@Override
+					public InputStream getInputStream() throws ResourceStreamNotFoundException {
+						if (bi == null) {
+							//bi = new BoundedInputStream(super.getInputStream(), end + 1);
+							bi = new BoundedInputStream(super.getInputStream(), isRange ? end + 1 : (file == null ? -1 : file.length()));
+							try {
+								bi.skip(start);
+							} catch (IOException e) {
+								throw new ResourceStreamNotFoundException(e);
+							}
+						}
+						return bi;
+					}
+					
+					@Override
+					public Bytes length() {
+						return Bytes.bytes(getChunkLength());
+					}
+					
+					@Override
+					public void close() throws IOException {
+						if (bi != null) {
+							bi.close(); //also will close original stream
+							bi = null;
+						}
+					}
+					
+					@Override
+					public String getContentType() {
+						return RecordingResourceReference.this.getContentType();
+					}
+				};
+			}
+
+			@Override
+			protected void setResponseHeaders(ResourceResponse data, Attributes attributes) {
+				Response response = attributes.getResponse();
+				if (response instanceof WebResponse) {
+					WebResponse webResponse = (WebResponse)response;
+					webResponse.setStatus(isRange ? HttpServletResponse.SC_PARTIAL_CONTENT : HttpServletResponse.SC_OK);
+				}
+				super.setResponseHeaders(data, attributes);
+			}
+
+			@Override
+			protected ResourceResponse newResourceResponse(Attributes attributes) {
+				ResourceResponse rr = new ResourceResponse();
+				FlvRecording r = getRecording(attributes);
+				if (r != null) {
+					isRange = false;
+					file = getFile(r);
+					rr.setFileName(getFileName(r));
+					rr.setContentType(RecordingResourceReference.this.getContentType());
+					rr.setContentDisposition(ContentDisposition.INLINE);
+					rr.setLastModified(Time.millis(file.lastModified()));
+					rr.getHeaders().addHeader(ACCEPT_RANGES_HEADER, RANGES_BYTES);
+					String range = ((HttpServletRequest)attributes.getRequest().getContainerRequest()).getHeader(RANGE_HEADER);
+					if (range != null && range.startsWith(RANGES_BYTES)) {
+						String[] bounds = range.substring(RANGES_BYTES.length() + 1).split("-");
+						if (bounds != null && bounds.length > 0) {
+							long length = file.length();
+							isRange = true;
+							start = Long.parseLong(bounds[0]);
+							end = bounds.length > 1 ? Long.parseLong(bounds[1]) : length - 1;
+							//Content-Range: bytes 229376-232468/232469
+							rr.getHeaders().addHeader(CONTENT_RANGE_HEADER, String.format("%s %d-%d/%d", RANGES_BYTES, start, end, length));
+						}
+					}
+					rr.setContentLength(getChunkLength());
+					rr.setWriteCallback(new WriteCallback() {
+						@Override
+						public void writeData(Attributes attributes) throws IOException {
+							IResourceStream rStream = getResourceStream();
+							try {
+								writeStream(attributes, rStream.getInputStream());
+							} catch (ResourceStreamNotFoundException e1) {
+							} catch (ResponseIOException e) {
+								// in case of range operations we expecting such exceptions
+								if (!isRange) {
+									log.error("Error while playing the stream", e);
+								}
+							} finally {
+								rStream.close();
+							}
+						}
+					});
+				} else {
+					rr.setError(HttpServletResponse.SC_NOT_FOUND);
+				}
+				return rr;
+			}
+		};
+	}
+	
+	abstract String getContentType();
+	abstract String getFileName(FlvRecording r);
+	abstract File getFile(FlvRecording r);
+	
+	private Long getLong(StringValue id) {
+		Long result = null;
+		try {
+			result = id.toLongObject();
+		} catch(Exception e) {
+			//no-op
+		}
+		return result;
+	}
+	
+	private FlvRecording getRecording(Long id) {
+		FlvRecording r = getBean(FlvRecordingDao.class).get(id);
+		// TODO should we process public?
+		// || r.getOwnerId() == 0 || r.getParentFileExplorerItemId() == null || r.getParentFileExplorerItemId() == 0
+		if (r == null) {
+			return r;
+		}
+		if (r.getOwnerId() == null || getUserId() == r.getOwnerId()) {
+			return r;
+		}
+		if (r.getOrganization_id() == null || getBean(OrganisationUserDao.class).isUserInOrganization(r.getOrganization_id(), getUserId())) {
+			return r;
+		}
+		//TODO external group check was added for plugin recording download
+		String extType = getExternalType();
+		if (extType != null && extType.equals(r.getCreator().getExternalUserType())) {
+			return r;
+		}
+		return null;
+	}
+	
+	private FlvRecording getRecording(Attributes attributes) {
+		PageParameters params = attributes.getParameters();
+		StringValue idStr = params.get("id");
+		Long id = getLong(idStr);
+		WebSession ws = WebSession.get();
+		if (id != null && ws.isSignedIn()) {
+			return getRecording(id);
+		} else {
+			ws.invalidate();
+			if (ws.signIn(idStr.toString())) {
+				return getRecording(getRecordingId());
+			}
+		}
+		return null;
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/RoomTypeDropDown.java b/src/web/java/org/apache/openmeetings/web/util/RoomTypeDropDown.java
new file mode 100644
index 0000000..6adaaac
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/RoomTypeDropDown.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomTypeDao;
+import org.apache.openmeetings.db.entity.room.RoomType;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+
+public class RoomTypeDropDown extends DropDownChoice<RoomType> {
+	private static final long serialVersionUID = 1L;
+	
+	public static List<RoomType> getRoomTypes() {
+		return getBean(RoomTypeDao.class).getAll(getLanguage());
+	}
+	
+	public RoomTypeDropDown(String id) {
+		super(id);
+		setChoices(getRoomTypes());
+		setChoiceRenderer(new ChoiceRenderer<RoomType>("label.value", "roomtypes_id"));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java b/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
new file mode 100644
index 0000000..4c7a2a8
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONWriter;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.validation.Validatable;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+
+public class UserChoiceProvider extends ChoiceProvider<User> {
+	private static final long serialVersionUID = 1L;
+	private final static int PAGE_SIZE = 10;
+	private Map<String, User> newContacts = new Hashtable<String, User>();
+	
+	public static User getUser(String value) {
+		User u = null;
+		//FIXME refactor this
+		String email = null;
+		String fName = null;
+		String lName = null;
+		int idx = value.indexOf('<');
+		if (idx > -1) {
+			int idx1 = value.indexOf('>', idx);
+			if (idx1 > -1) {
+				email = value.substring(idx + 1, idx1);
+				
+				String name = value.substring(0, idx).replace("\"", "");
+				int idx2 = name.indexOf(' ');
+				if (idx2 > -1) {
+					fName = name.substring(0, idx2);
+					lName = name.substring(idx2 + 1);
+				} else {
+					fName = "";
+					lName = name;
+				}
+				 
+			}
+		} else {
+			email = value;
+		}
+		Validatable<String> valEmail = new Validatable<String>(email);
+		RfcCompliantEmailAddressValidator.getInstance().validate(valEmail);
+		if (valEmail.isValid()) {
+			u = getBean(UserDao.class).getContact(email, fName, lName, getUserId());
+		}
+		return u;
+	}
+
+	protected Object getId(User u) {
+		String id = "" + u.getUser_id();
+		if (u.getUser_id() == null) {
+			newContacts.put(u.getLogin(), u);
+			id = u.getLogin();
+		}
+		return id;
+	}
+
+	@Override
+	public void query(String term, int page, Response<User> response) {
+		User c = getUser(term);
+		if (c != null) {
+			response.add(c);
+		}
+		UserDao dao = getBean(UserDao.class);
+		response.addAll(dao.get(term, page * PAGE_SIZE, PAGE_SIZE, null, true, getUserId()));
+
+		response.setHasMore(page < dao.count(term, getUserId()) / PAGE_SIZE);
+	}
+
+	@Override
+	public Collection<User> toChoices(Collection<String> ids) {
+		Collection<User> c = new ArrayList<User>();
+		for (String id : ids) {
+			if (newContacts.containsKey(id)) {
+				c.add(newContacts.get(id));
+			} else {
+				c.add(getBean(UserDao.class).get(Long.valueOf(id)));
+			}
+		}
+		return c;
+	}
+
+    public void toJson(User choice, JSONWriter writer) throws JSONException {
+    	writer
+    		.key("id").value(getId(choice))
+    		.key("text").value(FormatHelper.formatUser(choice, true))
+    		.key("contact").value(choice.getType() == Type.contact);
+    };
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java b/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
new file mode 100644
index 0000000..e9c43f0
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.web.user.dashboard.MyRoomsWidget.WIDGET_ID_MY_ROOMS;
+import static org.apache.openmeetings.web.user.dashboard.RssWidget.WIDGET_ID_RSS;
+import ro.fortsoft.wicket.dashboard.DefaultDashboard;
+import ro.fortsoft.wicket.dashboard.Widget;
+
+public class UserDashboard extends DefaultDashboard {
+	private static final long serialVersionUID = 1L;
+	private boolean widgetRssDeleted = false;
+	private boolean widgetMyRoomsDeleted = false;
+	
+	public UserDashboard(String id, String title) {
+		super(id, title);
+	}
+
+	public boolean isWidgetRssDeleted() {
+		return widgetRssDeleted;
+	}
+
+	public void setWidgetRssDeleted(boolean widgetRssDeleted) {
+		this.widgetRssDeleted = widgetRssDeleted;
+	}
+
+	public boolean isWidgetMyRoomsDeleted() {
+		return widgetMyRoomsDeleted;
+	}
+
+	public void setWidgetMyRoomsDeleted(boolean widgetMyRoomsDeleted) {
+		this.widgetMyRoomsDeleted = widgetMyRoomsDeleted;
+	}
+	
+	@Override
+	public void deleteWidget(String widgetId) {
+		switch (widgetId) {
+			case WIDGET_ID_RSS:
+				widgetRssDeleted = true;
+				break;
+			case WIDGET_ID_MY_ROOMS:
+				widgetMyRoomsDeleted = true;
+				break;
+			default:
+				break;
+		}
+		super.deleteWidget(widgetId);
+	}
+	
+	@Override
+	public void addWidget(Widget widget) {
+		switch (widget.getId()) {
+			case WIDGET_ID_RSS:
+				widgetRssDeleted = false;
+				break;
+			case WIDGET_ID_MY_ROOMS:
+				widgetMyRoomsDeleted = false;
+				break;
+			default:
+				break;
+		}
+		super.addWidget(widget);
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java b/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
new file mode 100644
index 0000000..25a02ef
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.openmeetings.util.OmFileHelper.getUserDashboard;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Collections;
+
+import org.slf4j.Logger;
+
+import ro.fortsoft.wicket.dashboard.Dashboard;
+import ro.fortsoft.wicket.dashboard.DashboardPersister;
+import ro.fortsoft.wicket.dashboard.WidgetComparator;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+public class UserDashboardPersister implements DashboardPersister {
+	private static final Logger log = getLogger(UserDashboardPersister.class, webAppRootKey);
+	
+	public Dashboard load() {
+		return new XStreamDashboardPersister().load();
+	}
+
+	public void save(Dashboard dashboard) {
+		new XStreamDashboardPersister().save(dashboard);
+	}
+
+	public class XStreamDashboardPersister implements DashboardPersister {
+		private File file;
+		private XStream xstream;
+		
+		public XStreamDashboardPersister() {
+			this.file = getUserDashboard(getUserId());
+			
+	        xstream = new XStream(new DomDriver("UTF-8"));
+	        xstream.setMode(XStream.NO_REFERENCES);
+	        xstream.alias("dashboard", UserDashboard.class);
+		}
+		
+		@Override
+		public Dashboard load() {
+			if (!file.exists() || !file.isFile()) {
+				return null;
+			}
+			
+			try {
+				return (Dashboard) xstream.fromXML(new FileInputStream(file));
+			} catch (Exception e) {
+				log.error("Error while loading dashboard", e);
+				return null;
+			}
+		}
+
+		@Override
+		public void save(Dashboard dashboard) {
+			// sort widgets
+			Collections.sort(dashboard.getWidgets(), new WidgetComparator());
+			
+			try {
+				xstream.toXML(dashboard, new FileOutputStream(file));
+			} catch (Exception e) {
+				log.error("Error while saving dashboard", e);
+			}
+		}
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java b/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java
new file mode 100644
index 0000000..a234148
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/UserMultiChoice.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import java.util.Collection;
+
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+public class UserMultiChoice extends Select2MultiChoice<User> {
+	private static final long serialVersionUID = 1L;
+
+	public UserMultiChoice(String id, IModel<Collection<User>> model) {
+		super(id, model, new UserChoiceProvider());
+		getSettings().setFormatResult("formatOmUser");
+		getSettings().setFormatSelection("formatOmUser");
+		getSettings().setEscapeMarkup("escapeOmUserMarkup");
+	}
+	
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(getClass(), "user-multi-choice.js"), "user-multi-choice")));
+	}
+}
diff --git a/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css b/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
new file mode 100644
index 0000000..d6e603a
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
@@ -0,0 +1,124 @@
+/*!
+ * Bootstrap v2.3.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.btn-file {
+	position: relative;
+	overflow: hidden;
+	vertical-align: middle;
+}
+
+.btn-file>input {
+	position: absolute;
+	top: 0;
+	right: 0;
+	margin: 0;
+	font-size: 23px;
+	cursor: pointer;
+	opacity: 0;
+	filter: alpha(opacity = 0);
+	transform: translate(-300px, 0) scale(4);
+	direction: ltr;
+}
+
+.fileupload {
+	margin-bottom: 9px;
+}
+
+.fileupload .uneditable-input {
+	display: inline-block;
+	margin-bottom: 0;
+	vertical-align: middle;
+	cursor: text;
+}
+
+.fileupload .thumbnail {
+	display: inline-block;
+	margin-bottom: 5px;
+	overflow: hidden;
+	text-align: center;
+	vertical-align: middle;
+}
+
+.fileupload .thumbnail>img {
+	display: inline-block;
+	max-height: 100%;
+	vertical-align: middle;
+}
+
+.fileupload .btn {
+	vertical-align: middle;
+}
+
+.fileupload-exists .fileupload-new,.fileupload-new .fileupload-exists {
+	display: none;
+}
+
+.fileupload-inline .fileupload-controls {
+	display: inline;
+}
+
+.fileupload-new .input-append .btn-file {
+	-webkit-border-radius: 0 3px 3px 0;
+	-moz-border-radius: 0 3px 3px 0;
+	border-radius: 0 3px 3px 0;
+}
+
+.thumbnail-borderless .thumbnail {
+	padding: 0;
+	border: none;
+	-webkit-border-radius: 0;
+	-moz-border-radius: 0;
+	border-radius: 0;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+
+.fileupload-new.thumbnail-borderless .thumbnail {
+	border: 1px solid #ddd;
+}
+
+.control-group.warning .fileupload .uneditable-input {
+	color: #a47e3c;
+	border-color: #a47e3c;
+}
+
+.control-group.warning .fileupload .fileupload-preview {
+	color: #a47e3c;
+}
+
+.control-group.warning .fileupload .thumbnail {
+	border-color: #a47e3c;
+}
+
+.control-group.error .fileupload .uneditable-input {
+	color: #b94a48;
+	border-color: #b94a48;
+}
+
+.control-group.error .fileupload .fileupload-preview {
+	color: #b94a48;
+}
+
+.control-group.error .fileupload .thumbnail {
+	border-color: #b94a48;
+}
+
+.control-group.success .fileupload .uneditable-input {
+	color: #468847;
+	border-color: #468847;
+}
+
+.control-group.success .fileupload .fileupload-preview {
+	color: #468847;
+}
+
+.control-group.success .fileupload .thumbnail {
+	border-color: #468847;
+}
\ No newline at end of file
diff --git a/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js b/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
new file mode 100644
index 0000000..97a6da5
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
@@ -0,0 +1,169 @@
+/* ===========================================================
+ * bootstrap-fileupload.js j2
+ * http://jasny.github.com/bootstrap/javascript.html#fileupload
+ * ===========================================================
+ * Copyright 2012 Jasny BV, Netherlands.
+ *
+ * Licensed 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.
+ * ========================================================== */
+
+!function ($) {
+
+  "use strict"; // jshint ;_
+
+ /* FILEUPLOAD PUBLIC CLASS DEFINITION
+  * ================================= */
+
+  var Fileupload = function (element, options) {
+    this.$element = $(element)
+    this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
+      
+    this.$input = this.$element.find(':file')
+    if (this.$input.length === 0) return
+
+    this.name = this.$input.attr('name') || options.name
+
+    this.$hidden = this.$element.find('input[type=hidden][name="'+this.name+'"]')
+    if (this.$hidden.length === 0) {
+      this.$hidden = $('<input type="hidden" />')
+      this.$element.prepend(this.$hidden)
+    }
+
+    this.$preview = this.$element.find('.fileupload-preview')
+    var height = this.$preview.css('height')
+    if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
+
+    this.original = {
+      'exists': this.$element.hasClass('fileupload-exists'),
+      'preview': this.$preview.html(),
+      'hiddenVal': this.$hidden.val()
+    }
+    
+    this.$remove = this.$element.find('[data-dismiss="fileupload"]')
+
+    this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this))
+
+    this.listen()
+  }
+  
+  Fileupload.prototype = {
+    
+    listen: function() {
+      this.$input.on('change.fileupload', $.proxy(this.change, this))
+      $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))
+      if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
+    },
+    
+    change: function(e, invoked) {
+      if (invoked === 'clear') return
+      
+      var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null)
+      
+      if (!file) {
+        this.clear()
+        return
+      }
+      
+      this.$hidden.val('')
+      this.$hidden.attr('name', '')
+      this.$input.attr('name', this.name)
+
+      if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
+        var reader = new FileReader()
+        var preview = this.$preview
+        var element = this.$element
+
+        reader.onload = function(e) {
+          preview.html('<img src="' + e.target.result + '" ' + (preview.css('max-height') != 'none' ? 'style="max-height: ' + preview.css('max-height') + ';"' : '') + ' />')
+          element.addClass('fileupload-exists').removeClass('fileupload-new')
+        }
+
+        reader.readAsDataURL(file)
+      } else {
+        this.$preview.text(file.name)
+        this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
+      }
+    },
+
+    clear: function(e) {
+      this.$hidden.val('')
+      this.$hidden.attr('name', this.name)
+      this.$input.attr('name', '')
+
+      //ie8+ doesn't support changing the value of input with type=file so clone instead
+      if (navigator.userAgent.match(/msie/i)){ 
+          var inputClone = this.$input.clone(true);
+          this.$input.after(inputClone);
+          this.$input.remove();
+          this.$input = inputClone;
+      }else{
+          this.$input.val('')
+      }
+
+      this.$preview.html('')
+      this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
+
+      if (e) {
+        this.$input.trigger('change', [ 'clear' ])
+        e.preventDefault()
+      }
+    },
+    
+    reset: function(e) {
+      this.clear()
+      
+      this.$hidden.val(this.original.hiddenVal)
+      this.$preview.html(this.original.preview)
+      
+      if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
+       else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
+    },
+    
+    trigger: function(e) {
+      this.$input.trigger('click')
+      e.preventDefault()
+    }
+  }
+
+  
+ /* FILEUPLOAD PLUGIN DEFINITION
+  * =========================== */
+
+  $.fn.fileupload = function (options) {
+    return this.each(function () {
+      var $this = $(this)
+      , data = $this.data('fileupload')
+      if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
+      if (typeof options == 'string') data[options]()
+    })
+  }
+
+  $.fn.fileupload.Constructor = Fileupload
+
+
+ /* FILEUPLOAD DATA-API
+  * ================== */
+
+  $(document).on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
+    var $this = $(this)
+    if ($this.data('fileupload')) return
+    $this.fileupload($this.data())
+      
+    var $target = $(e.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]');
+    if ($target.length > 0) {
+      $target.trigger('click.fileupload')
+      e.preventDefault()
+    }
+  })
+
+}(window.jQuery);
diff --git a/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js b/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js
new file mode 100644
index 0000000..de43cb3
--- /dev/null
+++ b/src/web/java/org/apache/openmeetings/web/util/user-multi-choice.js
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+function formatOmUser(user) {
+	return "<span class='user " + (user.contact ? "external" : "internal") + "' >" + user.text + "</span>";
+}
+
+function escapeOmUserMarkup(m) {
+	return m;
+}
\ No newline at end of file
diff --git a/xdocs/ApacheDerbyConfig.xml b/xdocs/ApacheDerbyConfig.xml
new file mode 100644
index 0000000..0474013
--- /dev/null
+++ b/xdocs/ApacheDerbyConfig.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Apache Derby Configuration</title>
+		<author email="sebawagner@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="Apache Derby Configuration">
+
+			<p>
+				OpenMeetings default configuration is to use Apache Derby.
+			</p>
+
+			<p>
+				It is recommended for production environments and high
+				availibility to change to an usual relational database like MySQL,
+				Postgres or DB2.
+			</p>
+			<p>
+				For more information about Apache Derby see
+				<a href="http://db.apache.org/derby/">http://db.apache.org/derby/</a>
+			</p>
+
+			<p>
+				There is a sample configuration for Apache Derby that ships with
+				every release in:
+				<br />
+				/webapps/openmeetings/WEB-INF/classes/META-INF/derby_persistence.xml
+			</p>
+
+			<p>
+				If you encounter issues, you can drop the db again and delete the
+				file /webapps/openmeetings/conf/install.xml and then run the web
+				based installer again
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/ApiClassesTemplate.vm b/xdocs/ApiClassesTemplate.vm
new file mode 100644
index 0000000..1ea3714
--- /dev/null
+++ b/xdocs/ApiClassesTemplate.vm
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Classes</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+		#set( $foo = ".html" )
+	
+       <div class="navigation">
+	   #foreach ( $class in $classes )
+            <div>
+            <a href="$class.get("name")$foo" target="_PARENT"><b>$class.get("name")</b></a><br/>
+            <div class="navigation_comment"><i >$class.get("comment")</i></div>
+            </div>
+        #end
+        </div>
+	
+	
+	</body>
+	</html>
diff --git a/xdocs/ApiMethodsTemplate.vm b/xdocs/ApiMethodsTemplate.vm
new file mode 100644
index 0000000..57da677
--- /dev/null
+++ b/xdocs/ApiMethodsTemplate.vm
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  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.
+-->
+
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    
+     <html>
+        <head>
+		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+		<meta name="author" content="OpenMeetings Team">
+		<meta name="email" content="sebawagner@apache.org">
+		<title>OpenMeetings API Methods</title>
+		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
+        </head>
+	<body>
+	
+		<h3>Available WebServices:</h3>
+	
+		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
+			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
+		  <p>Your Browser does not support frames ...</p>
+		</iframe>
+		
+		<hr />
+	
+	   <h3>WebService: $webServiceName</h3>
+	   <p>$classComment<p>
+	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/$webServiceName?wsdl">http://localhost:5080/openmeetings/services/$webServiceName?wsdl</a><p>
+	
+	<!-- Links to Methods -->
+	   <h3>Index of Methods available in $webServiceName</h3>
+	   
+       <div class="navigation">
+	   #foreach ( $method in $methods )
+            #if ($method.isPublic()) 
+                <div>
+                <a href="#$method.name()"><b>$method.name()</b></a><br/>
+                <div class="navigation_comment"><i >$method.commentText()</i></div>
+                </div>
+           #end
+        #end
+        </div>
+	   
+	    <h3>Methods Details in $webServiceName</h3>
+	
+		#foreach ( $method in $methods )
+		    #if ($method.isPublic()) 
+		      <div class="method">
+		        <div class="method_header">
+		        <div style="margin-left:10px">
+    			<a name="$method.name()" ><b>$method.name()</b></a>
+    			</div>
+    			</div>
+    			
+    			Method: <i>$method.name() (
+    			#set ($index = 0) 
+    			#foreach ( $parameter in $method.parameters() )
+    			   #if ($index > 0) 
+    			     , 
+    			   #end
+    			   $parameter.type().simpleTypeName() $parameter.name()
+    			   #set ($index = $index+1) 
+    			#end
+    			)
+    			</i><br/>
+    			<p>
+    			  $method.commentText()
+    			</p>
+    			<p>
+                  Return Type: $method.returnType()
+                </p>
+    			<p>Params:</p>
+    			#if ( $method.paramTags().size() != $method.parameters().size() ) 
+    				<b>Warning:</b><i> Params in this method do not seem to be correctly documentated</i>
+    				<br/><br/>
+    			#end
+    			
+    			#if ($method.paramTags().size() > 0) 
+	    			<table rules="all" border="1">
+	    			   <thead>
+	    			   <tr>
+	    			     <th width="200" align="left">Type</th>
+	    			     <th width="200" align="left">Fieldname</th>
+	    			     <th width="400" align="left">Description</th>
+	    			   </tr>
+	    			   </thead>
+	    			   <tbody>
+	    			   #set ($index = 0) 
+	    			   #foreach ( $parameter in $method.paramTags() )
+	    			   <tr>
+	                     <td valign="top">
+	                     	#if ($method.parameters().size() <= $index) 
+	                     		$index Doclet Param Mismatch: fix JavaDocs in this Method!
+	                     	#else
+	                     		$method.parameters().get($index).type().simpleTypeName()
+	                     	#end 
+	                     </td>
+	                     <td valign="top">$parameter.parameterName()</td>
+	                     <td valign="top">$parameter.parameterComment()</td>
+	                   </tr>
+	                   
+	                   #set ($index = $index+1) 
+	                   #end
+	                   </tbody>
+	    			</table>
+    			#else
+    				<i>No Params</i>
+    			#end
+    			<br/>
+    			REST Sample Call/URL:<br/>
+    			#set ($link = "http://localhost:5080/openmeetings/services/"+$webServiceName+"/"+$method.name()) 
+    			#set ($displayLink = $link)
+    			#set ($index = 0)
+    			#foreach ( $parameter in $method.parameters() )
+    				#if ($index == 0)
+    					#set ($link = $link+"?")
+    					#set ($displayLink = $link)
+    				#else
+    					#set ($link = $link+"&") 
+    					#set ($displayLink = $displayLink + "&amp;")
+    				#end
+    				#set ($link = $link + $parameter.name()+"=VALUE") 
+    				#set ($displayLink = $displayLink + $parameter.name()+"=VALUE") 
+    				#set ($index = $index+1)
+				#end
+				<a href="$link">$displayLink</a>
+    		  </div>
+    	   #end
+		#end
+	
+	
+	</body>
+</html>
+
diff --git a/xdocs/BitrixPlugin.xml b/xdocs/BitrixPlugin.xml
new file mode 100644
index 0000000..87dcfc2
--- /dev/null
+++ b/xdocs/BitrixPlugin.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Bitrix Plugin</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="OpenMeetings Plugin for Bitrix">
+			<p>
+				Current Development Snapshots for testing can be created from the sources:
+				<a href="https://svn.codespot.com/a/apache-extras.org/openmeetings-bitrix-plugin/trunk">here</a>
+				.
+			</p>			
+		</section>
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Enter videoconference rooms from Bitrix (http://www.1c-bitrix.ru/): </li>
+			</ul>
+		</section>
+		<section name="Configuration">			
+			<div>
+				<b>OpenMeetings Bitrix Plugin Installation</b><br/>
+				<ol>
+					<li>Build plugin from sources</li>
+					<li>Unpack it into bitrix/modules</li>
+					<li>Install via Admin</li>
+					<li>Add OPenmeetings component to any page.</li>
+				</ol>              
+			</div>
+		</section>
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/BuildInstructions.xml b/xdocs/BuildInstructions.xml
new file mode 100644
index 0000000..6f92f12
--- /dev/null
+++ b/xdocs/BuildInstructions.xml
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Build instructions</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Nightly Builds">
+
+			<p>
+				You can find Nightly Builds of the software at:
+				<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/"
+					rel="nofollow" target="_BLANK">
+					https://builds.apache.org/view/M-R/view/OpenMeetings/
+				</a>
+			</p>
+
+		</section>
+
+		<section name="How to Build a Distribution">
+
+			<div>
+				<p>To build a binary release of OpenMeetings you need: </p>
+				<ul>
+					<li>Sun JDK6</li>
+					<li>Apache ANT (minimum) 1.8.3</li>
+					<li>
+						SVN Command line client (Subversion 1.7 required!)
+						<a href="http://subversion.apache.org/packages.html" target="_BLANK"
+							rel="nofollow">http://subversion.apache.org/packages.html</a>
+					</li>
+				</ul>
+			</div>
+
+			<p>Get the source: </p>
+			<div class="xmlcode">
+				svn checkout
+				https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+			</div>
+			<p>Run the command: </p>
+			<div class="xmlcode">
+				ant
+			</div>
+			<p>There is no need to compile the client additionally! The ant task
+				does it all! You will find a directory dist that contains
+				OpenMeetings and a red5-server.
+			</p>
+			<p>To compile the client you can also use ant: </p>
+			<div class="xmlcode">
+				ant
+				<span style="margin-left: 200px;"># compiles a complete package into the folder dist
+				</span>
+				<br />
+				ant compile.laszlo.main
+				<span style="margin-left: 70px;"># compiles the client into main.as3.swf10.swf and
+					main.swf8.swf</span>
+				<br />
+				ant compile.laszlo.main.debug
+				<span style="margin-left: 30px;"># compiles the debug-client into
+					maindebug.as3.swf10.swf and maindebug.swf8.swf
+				</span>
+				<br />
+				ant -Ddb=&lt;name of DB&gt;
+				<span style="margin-left: 50px;"># will copy &lt;name of DB&gt;_persistense.xml to
+					persistense.xml
+				</span>
+				<br />
+				<span style="margin-left: 230px;">#(for ex. ant -Ddb=mysql will set mysql as default
+					DB)
+				</span>
+			</div>
+			<p>To compile just the openmeetings JAR file: </p>
+			<div class="xmlcode">
+				ant jar.only
+			</div>
+			<p>
+				To run Junit tests using ANT see
+				<a href="JUnitTesting.html">JUnitTesting</a>
+			</p>
+		</section>
+
+		<section name="Run, Develop, Test">
+
+			<p>
+				To develop or build OpenMeetings you checkout the source as Eclipse
+				project. You need the Subclipse or Subversive Plugin for Eclipse. If
+				you just need to change 3 lines of code then your probably better
+				switch to
+				<a href="#How_to_build_a_distribution" rel="nofollow">How to build a
+					distribution
+				</a>
+				.
+			</p>
+
+			<subsection name="Step1 - Get required Software">
+
+				<p>To develop OpenMeetings you need at least: </p>
+				<ul>
+					<li>Eclipse in a up to date copy and Sun JDK6 </li>
+					<li>Apache ANT (minimum) 1.8.3</li>
+					<li>
+						Subclipse 1.8 (Subversion 1.7 required!)
+						<a href="http://subclipse.tigris.org/" target="_BLANK" rel="nofollow">http://subclipse.tigris.org/
+						</a>
+					</li>
+					<li>
+						SVN Command line client (Subversion 1.7 required!)
+						<a href="http://subversion.apache.org/packages.html" target="_BLANK"
+							rel="nofollow">http://subversion.apache.org/packages.html</a>
+					</li>
+					<li>Spring IDE for Eclipse (installable via Help &gt; Eclipse
+						Marketplace)
+					</li>
+					<li>
+						Apache IvyDE&#8482; For Eclipse (installable via Help &gt; Install
+						New Software)
+						URL: http://www.apache.org/dist/ant/ivyde/updatesite
+						detailed steps can be found here:
+						<a href="http://ant.apache.org/ivy/ivyde/download.cgi" target="_BLANK"
+							rel="nofollow">http://ant.apache.org/ivy/ivyde/download.cgi</a>
+					</li>
+					<li>MySQL (or Postgres, or other Databases supported by openJPA)
+						are optionally but handy to have them
+					</li>
+				</ul>
+
+			</subsection>
+
+			<subsection name="Step2 - Download the Source">
+
+				<p>Advanced Users: Check out the Code from the Repository as a
+					Java
+					project into Eclipse.
+				</p>
+				<p>
+					URL:
+					<a
+						href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/">
+						https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+					</a>
+				</p>
+				<p>To download the required JARs for building and developing
+					OpenMeetings you need to run the ANT comand:
+				</p>
+				<div class="xmlcode">
+					ant -Ddb=&lt;your_DB&gt; prepare-eclipse
+				</div>
+				<p>After the ANT command you need to press F5 and rebuild the
+					project from inside Eclipse
+				</p>
+				<p>Step-By-Step: </p>
+				<p>1) Start Eclipse </p>
+				<p>
+					2) Change Perspective to SVN Repository Exploring:
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_1.png">
+						<img src="images/checkout_1.png" alt="" width="400" height="289" />
+					</a>
+
+				</p>
+				<p>
+					3) Select SVN Repository Exploring and click ok.
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_2.png">
+						<img src="images/checkout_2.png" alt="" width="304" height="417" />
+					</a>
+				</p>
+				<p>
+					4) A new Dialog in Eclipse opens
+					<strong>SVN Repositories</strong>
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_3.png">
+						<img src="images/checkout_3.png" alt="" width="460" height="102" />
+					</a>
+				</p>
+				<p>
+					5) Click on the icon with the plus in the top right corner in the
+					SVN Repository Dialog
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_4.png">
+						<img src="images/checkout_4.png" alt="" width="57" height="38" />
+					</a>
+				</p>
+				<p>
+					6) Add the URL
+					<a
+						href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/"
+						rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+					</a>
+					and click Finish
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_5.png">
+						<img src="images/checkout_5.png" alt="" width="455" height="272" />
+					</a>
+				</p>
+				<p>
+					7) After download is complete you see a new Source Repository in
+					the Repository Explorer. Right click on it and choose
+					<strong>checkout</strong>
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_6.png">
+						<img src="images/checkout_6.png" alt="" width="340" height="135" />
+					</a>
+				</p>
+				<p>
+					8) In the Dialog the opens now just click next
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_7.png">
+						<img src="images/checkout_7.png" alt="" width="390" height="338" />
+					</a>
+				</p>
+				<p>
+					9) In the next Dialog just click Finish, Eclipse will then download
+					the sources
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_8.png">
+						<img src="images/checkout_8.png" alt="" width="390" height="338" />
+					</a>
+				</p>
+				<p>
+					10) After the download is complete you will see a new Project in
+					the Package Explorer Dialog of Eclipse
+					<br />
+					<br />
+					<a class="fancybox-buttons" href="images/checkout_9.png">
+						<img src="images/checkout_9.png" alt="" width="310" height="297" />
+					</a>
+				</p>
+				<div>
+					11) Please run
+					<div class="xmlcode">
+						ant prepare-eclipse
+					</div>
+					to download all necessary jar files, and perform source
+					<tt>Refresh</tt>
+					to resolve all compilation issues.
+				</div>
+			</subsection>
+
+			<subsection name="Step3 - Deploy and Run">
+
+				<p>
+					see the first chapter about the ANT tasks to compile the code. You
+					will find a directory called
+					<strong>dist</strong>
+					which contains a regular openmeetings including red5. You can then
+					use the usual process like described at
+					<a href="installation.html">installation</a>
+					to run the code then.
+				</p>
+			</subsection>
+
+		</section>
+
+		<section name="Links">
+
+			<ul>
+				<li>
+					Getting Started with OpenLaszlo, checkout
+					<a
+						href="http://www.openlaszlo.org/lps4.2/laszlo-explorer/index.jsp?lzr=swf8"
+						target="_BLANK" rel="nofollow">Laszlo-in-10-Minutes</a>
+					and the
+					<a href="http://www.openlaszlo.org/lps4.2/docs/" target="_BLANK"
+						rel="nofollow">Application
+						Developer's Guide
+					</a>
+					or try the
+					<a href="http://www.openlaszlo.org/getstarted" target="_BLANK"
+						rel="nofollow">ScreenCast</a>
+				</li>
+				<li>
+					<a href="http://openmeetings.apache.org/svn.html">
+						browse SVN source
+					</a>
+				</li>
+			</ul>
+
+		</section>
+
+		<section name="Tipps and Gotchas">
+
+			<p>When you want to develop only client side there are handy ANT
+				tasks so that you only rebuild the SWFs, same for the Java side.
+			</p>
+			<p>
+				It
+				also takes much less time if you do use MySQL as database then
+				rebuilding the software and waiting for Apache Derby to set up the
+				database everytime you did rebuild.
+			</p>
+			<p>
+				<b>Working behind a proxy:</b>
+				If you are sitting behind a proxy you should add some proxy settings
+				before starting the build process.
+				<br />
+				For Apache Ivy see:
+				<a href="http://ant.apache.org/ivy/faq.html" target="_BLANK" rel="nofollow">http://ant.apache.org/ivy/faq.html
+				</a>
+				<br />
+				For SVN Command Line Client (From CollabNet 1.7) see:
+				<a
+					href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html"
+					target="_BLANK" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
+				</a>
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/CalendarAndTimezone.xml b/xdocs/CalendarAndTimezone.xml
new file mode 100644
index 0000000..4846e2f
--- /dev/null
+++ b/xdocs/CalendarAndTimezone.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Changing the Calendar and Timezone default</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Changing the Calendar and Timezone default">
+
+			<p>
+				In general the timezone is configured in the user profile of each
+				user, so changing the server timezone has no effect how to the users
+				calendar for example.
+				<br />
+				<br />
+				However there are some circumstances where there is no user profile
+				available.
+			</p>
+		</section>
+
+		<section
+			name="Changing servers default timzeone for Emails and Invitations (display)">
+			<p>
+				Goto Administration &gt; Configuration and change the config-key:
+				<tt>default.timezone</tt>
+			</p>
+			<p>Valid timezone have to meet standards! </p>
+		</section>
+
+		<section
+			name="Changing first day in week for calendar from Sunday to Monday">
+
+			<p>in the public/config.xml change the key: </p>
+			<div class="xmlcode">
+				&lt;!--
+				<br />
+				First day in the Week used by the Calendar
+				<br />
+				0 means Sunday
+				<br />
+				1 means Monday
+				<br />
+				this is the way how the Celendar inits a week
+				<br />
+				--&gt;
+				<br />
+				&lt;firstdayinweek&gt;0&lt;/firstdayinweek&gt;
+				<br />
+			</div>
+		</section>
+
+		<section
+			name="Changing the default number of max participants of a conference room created via calendar">
+
+			<p>Goto
+				Administration &gt; Configuration and change the config-key:
+				<tt>calendar.conference.rooms.default.size</tt>
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/Clustering.xml b/xdocs/Clustering.xml
new file mode 100644
index 0000000..5f7edcf
--- /dev/null
+++ b/xdocs/Clustering.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Clustering</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="Description">
+			<p>
+				OpenMeetings 2.1 or later is required to use clustering. One database is used for all OpenMeetings 
+				servers, so all database tables are shared across OM instances. Certain folders should be shared 
+				between all servers to allow access to the files/recording.</p>
+		</section>
+		<section name="Configuration">
+			<ul>
+				<li>
+					Multiple OM servers should be set up as described in
+					<a href="installation.html" target="_BLANK">
+						<b>Installation</b>
+					</a>
+				</li>
+				<li>All servers should be configured to have same Time zone (To avoid
+					Schedulers to drop user sessions as outdated)
+				</li>
+				<li>All servers should be configured to use the same DB</li>
+				<li>Servers should be added in Administration -&gt; Servers section</li>
+			</ul>
+		</section>
+		<section name="Database">
+			All servers should be configured to use the same database. It can be on the server or on the one node 
+			of the cluster. 
+			<ul>
+				<li>Add users who can connect to the database remotely</li>
+				<li>Update <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml</tt>
+					set correct server address, login and password. Also add the following section:
+					<div class="xmlcode">&lt;property name="openjpa.RemoteCommitProvider" value="tcp(Addresses=10.1.1.1;10.1.1.2)" /&gt;</div>
+					Instead of the 10.1.1.1 and 10.1.1.2 set semicolon separated IPs of all nodes of the cluster.
+				</li>
+			</ul>
+		</section>
+		<section name="File systems">
+			If files and recordings using the same physical folders the files and recordings will be available for 
+			each node. You can do this using Samba or NFS, for example. For using NFS do the following:
+			<ul>
+				<li>Install NFS to the data server. In the file <tt>/etc/exports</tt> add the following lines:
+					<div class="xmlcode">
+						/opt/red5/webapps/openmeetings/upload 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)<br/>
+						/opt/red5/webapps/openmeetings/streams 10.1.1.2(rw,sync,no_subtree_check,no_root_squash)
+					</div>
+					Here 10.1.1.2 - is node ip for NFS remote access. Add these lines for all nodes except node with 
+					folders.
+				</li>
+				<li>
+					Install NFS common tools to other nodes. In the file <tt>/etc/fstab</tt> do the following:
+					<div class="xmlcode">
+						10.1.1.1:/opt/red5/webapps/openmeetings/upload/<br/>
+						/opt/red5/webapps/openmeetings/upload nfs timeo=50,hard,intr<br/>
+						10.1.1.1:/opt/red5/webapps/openmeetings/streams/<br/>
+						/opt/red5/webapps/openmeetings/streams nfs timeo=50,hard,intr
+					</div>
+					Here 10.1.1.1 – data server ip. And run the command:
+					<div class="xmlcode">
+						mount -a
+					</div>
+				</li>
+			</ul> 
+		</section>
+		<section name="OM nodes configuration">
+			In the file <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt>:
+			<ul>
+				<li>
+					For each node uncomment line:
+					<div class="xmlcode">
+						&lt;!-- Need to be uncommented and set to the real ID if in cluster mode--&gt;<br/>
+						&lt;property name="serverId" value="1" /&gt;
+					</div>
+					and input the unique value for each node.
+				</li>
+				<li> 
+					Replace <tt>&lt;ref bean="openmeetings.HashMapStore" /&gt;  &lt;!-- Memory based session cache by default --&gt;</tt><br/>
+					with <tt>&lt;ref bean="openmeetings.DatabaseStore" /&gt;</tt> 
+					(Currently commented out with following comment: <tt>"The following section should be used in clustering mode"</tt>)
+				</li>
+			</ul>
+		</section>
+		<section name="Configuring cluster in Administration">
+			Run red5 on each node. Login to the system as admin.
+			<ul>
+				<li>Go to the <tt>Administration -&gt; Users</tt> and create Webservice user (only access via SOAP).</li>
+				<li>
+					Go to the <tt>Administration -&gt; Servers</tt> and add all cluster nodes with the following settings:
+					<div class="xmlcode">
+						Server Name = node name;<br/>
+						Active = check the checkbox. If the checkbox is checked it means node is active and you can use this node;<br/>
+						Server Address = node ip;<br/>
+						HTTP Port = 5080 - port for http part of Openmeetings;<br/>
+						User (SOAP Access) = login of Webservice user from the previous step;<br/>
+						Password = password of Webservise user;<br/>
+						Webapp path = openmeetings - path where OM installed on this node, it would be better if this path will be the same for all nodes;<br/>
+						Protocol = http.
+					</div>
+				</li> 
+			</ul>
+			<img src="images/cluster1.png" alt="" width="650" height="461" />
+		</section>
+		<section name="Ensure everything works as expected">
+			<ul>
+				<li>Set up the cluster and loggin with two users, go to the same room (also check before room 
+				entering that the status page with the room list shows the correct number of participants before 
+				entering the room). You should login to the same server initially, the server will redirect you 
+				for the conference room to the appropriate server automatically. Both users should be in the same room.
+				</li>
+				<li>Do the same with only two users but go to _different_ rooms. The calculation should send 
+				both users to different servers, cause based on the calculation two different rooms on a cluster 
+				with two nodes should go exactly one room for each node. You can now loggin really to node1 
+				and node2 of your cluster while those users are loggedin and go to <tt>Administration &gt; Connections</tt>
+				and check in the column "servers" where they are located. They should be on different server.
+				</li>
+			</ul>
+			<img src="images/cluster2.png" alt="" width="650" height="369" />
+		</section>
+	</body>
+</document>
\ No newline at end of file
diff --git a/xdocs/CommandLineAdmin.xml b/xdocs/CommandLineAdmin.xml
new file mode 100644
index 0000000..f6a46e1
--- /dev/null
+++ b/xdocs/CommandLineAdmin.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Command line admin</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="Usage">
+			<p>To avoid intensive traffic utilization and save your time you can
+				use command line admin to achieve following tasks:</p>
+			<ul>
+				<li>Install using defaults</li>
+				<li>Install from backup</li>
+				<li>Backup</li>
+				<li>Cleanup</li>
+			</ul>
+			<p>Some example commands:</p>
+			<p>MySQL (requires to place the MySQL JDBC driver into webapps/openmeetings/WEB-INF/lib before running the command):</p>
+			<div>
+				<div class="xmlcode">
+./admin.sh -i -v -tz Europe/Berlin -email your.email@gmail.com -group webbase -user admin --smtp-server localhost --db-type mysql --db-name openmeetings_db --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --db-user root --db-host localhost --email-auth-pass 123qweasd<br/>
+				</div>
+			</div>
+			<p>Derby (Not recommended for production environment):</p>
+			<div>
+				<div class="xmlcode">
+./admin.sh -i -v -tz Europe/Berlin -email seba.wagner@gmail.com -group webbase -user admin --smtp-server localhost --email-auth-user noreply@webbase-design.de --password 123qweasd --system-email-address noreply@webbase-design.de --email-auth-pass 123qweasd<br/>
+				</div>
+			</div>
+		</section>
+		<section name="Command reference">	
+			<div>
+				<div class="xmlcode">
+ -v,--verbose                        verbose error messages<br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -h,--help                           prints this message<br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -b,--backup                         Backups OM<br/>
+<span style="margin-left: 50px;">-file &lt;arg&gt;                       (optional) file used for backup/restore/install</span><br/>
+<span style="margin-left: 100px;">--exclude-files                (optional) should backup exclude files [default: include]</span><br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -r,--restore                        Restores OM<br/>
+<span style="margin-left: 50px;">-file &lt;arg&gt;                       file used for backup/restore/install</span><br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -l,--languages                      Reimport All language files into DB<br/>
+<span style="margin-left: 50px;">-lang,--language &lt;arg&gt;            (optional) Single language to be imported (id or name)</span><br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -i,--install                        Fill DB table, and make OM usable<br/>
+<span style="margin-left: 50px;">-user &lt;arg&gt;                       Login name of the default user, minimum 4 characters (mutually exclusive with 'file')</span><br/>
+<span style="margin-left: 50px;">-group &lt;arg&gt;                      The name of the default user group (mutually exclusive with 'file')</span><br/>
+<span style="margin-left: 50px;">-email &lt;arg&gt;                      Email of the default user (mutually exclusive with 'file')</span><br/>
+<span style="margin-left: 50px;">-tz &lt;arg&gt;                         Default server time zone, and time zone for the selected user (mutually exclusive with 'file') file used for backup/restore/install</span><br/>
+<span style="margin-left: 100px;">--email-auth-pass &lt;arg&gt;        (optional) Email auth password (anonymous connection will be used if not set)</span><br/>
+<span style="margin-left: 100px;">--db-host &lt;arg&gt;                (optional) DNS name or IP address of database</span><br/>
+<span style="margin-left: 100px;">--drop                         (optional) Drop database before installation</span><br/>
+<span style="margin-left: 100px;">--db-user &lt;arg&gt;                (optional) User with write access to the DB specified</span><br/>
+<span style="margin-left: 100px;">--system-email-address &lt;arg&gt;   (optional) System e-mail address [default: noreply@openmeetings.apache.org]</span><br/>
+<span style="margin-left: 100px;">--password &lt;arg&gt;               (optional) Password of the default user, minimum 4 characters (will be prompted if not set)</span><br/>
+<span style="margin-left: 100px;">--email-use-tls                (optional) Is secure e-mail connection [default: no]</span><br/>
+<span style="margin-left: 100px;">--email-auth-user &lt;arg&gt;        (optional) Email auth username (anonymous connection will be used if not set)</span><br/>
+<span style="margin-left: 100px;">--db-port &lt;arg&gt;                (optional) Database port</span><br/>
+<span style="margin-left: 100px;">--smtp-port &lt;arg&gt;              (optional) SMTP server for outgoing e-mails [default: 25]</span><br/>
+<span style="margin-left: 100px;">--db-name &lt;arg&gt;                (optional) The name of Openmeetings database</span><br/>
+<span style="margin-left: 100px;">--disable-frontend-register    (optional) Do not allow front end register [allowed by default]</span><br/>
+<span style="margin-left: 100px;">--db-type &lt;arg&gt;                (optional) The type of the DB to be used</span><br/>
+<span style="margin-left: 100px;">--skip-default-rooms           (optional) Do not create default rooms [created by default]</span><br/>
+<span style="margin-left: 100px;">--force                        (optional) Install without checking the existence of old data in the database.</span><br/>
+<span style="margin-left: 100px;">--smtp-server &lt;arg&gt;            (optional) SMTP server for outgoing e-mails [default: localhost]</span><br/>
+<span style="margin-left: 100px;">--db-pass &lt;arg&gt;                (optional) Password of the user with write access to the DB specified</span><br/>
+--------------------------------------------------------------------------------------------------<br/>
+ -f,--files                          File operations - statictics/cleanup<br/>
+<span style="margin-left: 100px;">--cleanup                      (optional) Should intermediate files be clean up</span><br/>
+--------------------------------------------------------------------------------------------------<br/>
+				</div>
+			</div>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/ConferenceRoomLayoutOptions.xml b/xdocs/ConferenceRoomLayoutOptions.xml
new file mode 100644
index 0000000..8a7aae5
--- /dev/null
+++ b/xdocs/ConferenceRoomLayoutOptions.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+    <properties>
+        <title>Layout options for a conference room in OpenMeetings</title>
+        <author email="sebawagner@apache.org">
+            OpenMeetings Team
+        </author>
+    </properties>
+
+    <body>
+
+        <section name="Layout options for conference rooms">
+
+            <p>Each room has a number of attributes to generate different layouts.
+            You can change those values individually for each room in Administration &gt; Rooms
+            </p>
+            <p></p>
+            <table>
+                <tr>
+                    <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> key </th>
+                    <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> default </th>
+                    <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> meaning </th>
+                    <th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> availabe since OpenMeetings version </th>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideTopBar </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the top bar with the menus and exit button </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideChat </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the chat tab and use space for whiteboard </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActivitiesAndActions </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the activities window with the notofications aber user activities</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideFilesExplorer </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the file explorer</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideActionsMenu </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the menu with the actions</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideScreenSharing </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the button to start screensharing/recording</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> hideWhiteboard </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Hide the whiteboard, if this option is true, the videos will be in the area of the whiteboard</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+                <tr>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> showMicrophoneStatus </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> false </td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Show the current status of the microphone (off/on) on the bottom of each video view</td>
+                    <td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.x </td>
+                </tr>
+            </table>
+
+        </section>
+        
+    </body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/ConfluencePlugin.xml b/xdocs/ConfluencePlugin.xml
new file mode 100644
index 0000000..44608d0
--- /dev/null
+++ b/xdocs/ConfluencePlugin.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Confluence Plugin</title>
+		<author email="eschwert@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Confluence Plugin for OpenMeetings">
+			<p>				
+				Current Development Snapshots for testing can be downloaded from:
+				<a href="https://svn.apache.org/repos/asf/openmeetings/branches/confluence-plugin/target/openmeetingsconfluence-1.0-SNAPSHOT.jar">here</a>
+				.
+			</p>			
+		</section>
+		
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Create videoconference rooms through Confluence: </li>
+				<li>
+					<ol>
+						<li>Integrated with Confluence content </li>										
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+		</section>	
+		
+		<section name="Demo video">			
+			<p>The demo video of Confluence plugin show you the plugin in action </p>              
+		      <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/YFKlXggtld0?version=3&amp;feature=player_detailpage"/>
+			      <param name="allowFullScreen" value="true"/>
+			      <param name="allowScriptAccess" value="always"/>
+			      <embed src="http://www.youtube.com/v/YFKlXggtld0?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"/>
+		      </object> 
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/CustomCryptMechanism.xml b/xdocs/CustomCryptMechanism.xml
new file mode 100644
index 0000000..d4967b3
--- /dev/null
+++ b/xdocs/CustomCryptMechanism.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Howto create a Custom Crypt styles</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="Configuration of Custom Crypt-Style">
+			<p>
+				You can use custom Crypt-Types, but you should decide during
+				installation which Type of encryption you want to use. By default
+				two type are available:
+			</p>
+
+			<ul>
+				<li>org.xmlcrm.utils.crypt.MD5Implementation - this uses common MD5
+					Crypt like PHP does, this is the default one (results in something
+					like: fe01ce2a7fbac8fafaed7c982a04e229)</li>
+				<li>org.xmlcrm.utils.crypt.MD5CryptImplementation - does use
+					BSD-Style of encryption using a salt (results in something like:
+					$1$GMsj7F2I$5S3r9CeukXGXNwf6b4sph1)</li>
+			</ul>
+			<p>
+				You can edit the config-key during Installation or later in the
+				Administration Panel. But if you change it using the
+				Administration-Panel previous passwords might be not working anymore
+				as they are encrypted with another algorithm.
+			</p>
+		</section>
+		<section name="Configuration of Custom Crypt-Style">
+			<p>
+				To add your own crypt style you need to write a class which
+				implements the interface: org.xmlcrm.utils.cryptCryptString
+				<br />
+				and extends the Adapter: org.xmlcrm.utils.CryptStringAdapter
+				<br />
+				Example of an Implementation:
+			</p>
+			<div class="xmlcode">
+				package org.xmlcrm.utils.crypt;
+				
+				import java.security.NoSuchAlgorithmException;
+				
+				public class MD5Implementation extends CryptStringAdapter implements CryptString {
+				
+				        @Override
+				        public String createPassPhrase(String userGivenPass) {
+				                String passPhrase = null;
+				                try {
+				                        passPhrase = MD5.do_checksum(userGivenPass);
+				                } catch (NoSuchAlgorithmException e) {
+				                        e.printStackTrace();
+				                }
+				                return passPhrase;
+				        }
+				
+				        @Override
+				        public Boolean verifyPassword(String passGiven, String passwdFromDb) {
+				                return (passwdFromDb.equals(createPassPhrase(passGiven)));
+				        }
+				        
+				}
+			</div>
+			<p>To add your own Encryption-Class you need to add your class to the
+				OpenMeetings-Webapp (make it available to the webapp-classpath) and
+				use your custom-class-name instead of
+				org.xmlcrm.utils.crypt.MD5Implementation during the Installation or
+				at runtime by editing the config-key crypt_ClassName</p>
+		</section>
+		<section name="Configuration of Custom Crypt-Style">
+			<p>credits goto Mika for sharing his Implementation of the
+				MD5Crypt-Style</p>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/CustomRoomTypeHowTo.xml b/xdocs/CustomRoomTypeHowTo.xml
new file mode 100644
index 0000000..d86ba12
--- /dev/null
+++ b/xdocs/CustomRoomTypeHowTo.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Howto create a custom room type in OpenMeetings</title>
+		<author email="sebawagner@apache.org">
+            OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Why creating a custom room type in OpenMeetings">
+
+			<p>If you want to create your own styled room the best thing to do in 
+            order to be "update-save" is to create your own custom room type. There is an empty configuration 
+				by default shipped with every release of OpenMeetings, the room type "custom" (ID = 5).<br/>
+				<br/>
+            You can use that and extend it, or you can add more room types to fit your use case.
+			</p>
+			<p></p>
+		</section>
+		
+		<section name="Create your own room type class (User Interface)">
+			
+			<p>Lets start by creating your custom room type class.
+				<br/>
+					You could for example duplicate an existing room class, from <br/>
+					<tt>src/modules/conference/flexibleConferenceRoom</tt> folder, for example the 
+			flexibleConferenceRoom.lzx: Generate a duplicate, change the name, for example to 
+			myCustomConferenceRoom.lzx and edit the class name inside the file name="flexibleConferenceRoom" to
+			name="myCustomConferenceRoom". Also don't miss to add an entry to library.lzx so that the compiler 
+			will find your new class.
+			</p>
+			
+		</section>
+        
+		<section name="Create nesseccary entries in configuration tables">
+        	
+			<p>You first need to create a number of configuration files </p>
+			<ul>
+				<li>To have your roomtype available everytime you install OpenMeetings you need to add 
+					it to the default rooms: <tt>ImportInitvalues.java Method: loadDefaultRooms()</tt>. Add your entry here. 
+				You can choose any random name for the room. The ID is the important trigger for the room type 
+				to identify later. You need to run the installer so that your new room type is in the database.</li>
+				
+				<li>Add your room type in the default module configuration: 
+					<tt>src/base/moduleConfiguration.lzx</tt>, 
+				here you need to add a default class name for your room type </li>
+				
+				<li>Add your room type in the real configuration: public/config.xml, add a new entry.
+					<br/>
+					You should fix also the file <tt>public/config.xsd</tt> that is the Schema file for the public/config.xml.
+				</li>
+        		
+				<li>Add a parser entry to modify the room type mapping: 
+					<tt>base/mainMethods.lzx method: myinit</tt>. You 
+        		can see some example parsing, you should add your one similar to the existing room types.</li>
+        		
+			</ul>
+			
+		</section>
+		
+		<section name="Link your room type config with your room type class ">
+			
+			<p>Now you need to make sure that everytime the conference room is created 
+			your new class "myCustomConferenceRoom" is used. There are 3 places you need to add your mapping.</p>
+			
+			<ul>
+				<li>In the global mapping: 
+					<tt>base/mainMethods.lzx method name="setRoomValues"</tt> 
+				</li>
+				<li>In file: 
+					<tt>modules/conference/conference/roomListItem.lzx method name="initRoom"</tt> 
+				</li>
+				<li>In file: 
+					<tt>modules/invitation/autoloaderBarOnly.lzx netRemoteCallHib name="setUsernameAndSession"</tt> 
+				</li>
+			</ul>
+			
+			<p>Thats it. You can add/edit/delete your room with the new room type in the Administration > Rooms interface of 
+			OpenMeetings like any other room.</p>
+			<p>If you need to have this room type available as option in the Calendar UI, you need to add it to the combobox manually.</p>
+			
+		</section>
+		
+		
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/Dashboard.xml b/xdocs/Dashboard.xml
new file mode 100644
index 0000000..a0e7c61
--- /dev/null
+++ b/xdocs/Dashboard.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Changing Dashboard</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Changing Dashboard">
+
+			<p>You can configure the tabs that are visible by default at bottom
+				of the dashboard. To edit the settings, login as admin and goto
+				Administration &gt; Configuration </p>
+			<p></p>
+			<table>
+				<tr>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Config-key </th>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Values </th>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Meaning </th>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> default.dashboard.tab </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 0,1,2 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Which tab should be shown by default, counting
+						starts with 0
+					</td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> dashboard.show.myrooms </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 0 or 1 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> If the MyRooms tab should be visible or not </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> dashboard.show.chat </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 0 or 1 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> If the Chat tab should be visible or not </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> dashboard.show.rssfeed </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 0 or 1 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> If the RSS-Feed tab should be visible or not </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rss_feed1 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> http-URL </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> ATOM-Feed URL for the dashboard RSS Tab </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rss_feed2 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> http-URL </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> ATOM-Feed URL for the dashboard RSS Tab </td>
+				</tr>
+			</table>
+			<p></p>
+			<p>Changes are immediately online, no need to restart anything. </p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/DrupalPlugin.xml b/xdocs/DrupalPlugin.xml
new file mode 100644
index 0000000..db8d737
--- /dev/null
+++ b/xdocs/DrupalPlugin.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Drupal Plugin</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Drupal Plugin for OpenMeetings">
+			<p>
+				Plugin for Drupal currently is not open source. 
+				Please contact <a href="commercial-support.html" target="_BLANK" rel="nofollow">Commercial Support</a> to get it. 
+				<br/>
+				A demo version+video of the Drupal plugin is available at
+				<a href="http://drupal.openmeetings.de/" target="_BLANK" rel="nofollow">drupal.openmeetings.de</a>.
+			</p>
+		</section>
+		
+		<section name="Installation of the Drupal Plugin for Apache OpenMeetings">
+			<p>
+				You simply download the ZIP or TAR package and unzip it to Drupal "mod" directory.
+				<br/>
+				For a detailed description on how to install plugins in Drupal please review their 
+				<a href="http://drupal.org/documentation/install/modules-themes" target="_BLANK" rel="nofollow">handbook</a>.
+				<br />
+				Then you visit the module interface of Drupal, where you will find the new module.
+				You should switch it to "enabled" to get the "Configure" and "Permissions" buttons.
+			</p>
+			<a class="fancybox-buttons" href="images/drupal_module_installation.png">
+				<img src="images/drupal_module_installation.png" alt="" width="600"
+					height="150" />
+			</a>
+			<p>
+				In the configuration you enter the auth data to access your Apache OpenMeetings server:
+			</p>
+			<a class="fancybox-buttons" href="images/drupal_module_configuration.png">
+				<img src="images/drupal_module_configuration.png" alt="" width="600"
+					height="340" />
+			</a>
+		</section>
+		
+		<section name="Adding a new conference room to Drupal">
+			
+			<p>
+				After installation of the plugin you can go to the front page in Drupal and add a new content item 
+				"OpenMeetings Rooms" => "Add New Room". You may find following configuration values for each 
+				conference room:
+			</p>
+			<a class="fancybox-buttons" href="images/drupal_room_configuration.png">
+				<img src="images/drupal_room_configuration.png" alt="" width="600"
+					height="400" />
+			</a>
+		</section>
+		
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/EditTemplates.xml b/xdocs/EditTemplates.xml
new file mode 100644
index 0000000..54919d8
--- /dev/null
+++ b/xdocs/EditTemplates.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Edit Templates</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Changing Labels and text strings">
+			<p>
+				All language string should be localized and stored in the language
+				section. You have a full featured language editor with every
+				installation of OpenMeetings, check out the
+				<a href="LanguageEditor.html">LanguageEditor</a>
+				.
+			</p>
+			<p>
+				To lookup the labelids in the GUI you can simply run OpenMeetings
+				client with the debug enabled. That way every text-string has the
+				labelid in brackets additionally in the textfield. To start the
+				client in debug mode just add the param ?swf=maindebug.swf8.swf to
+				the URL. Example:
+				<a href="http://localhost:5080/openmeetings/?swf=maindebug.swf8.swf"
+					rel="nofollow">http://localhost:5080/openmeetings/?swf=maindebug.swf8.swf</a>
+			</p>
+		</section>
+
+		<section name="Changing layout, adding footers in emails">
+
+			<p>If you would like to change the standard email layout or add for
+				example some footer in every email you have to change the email
+				templates.
+			</p>
+			<p>To do that: Stop the Red5/OpenMeetings-Service Goto:
+				$Red5_HOME/webapps/openmeetings/WEB-INF/lib/openmeetings-templates.jar
+				Unzip: openmeetings-templates.jar (this is a usual ZIP file, you can
+				rename it to openmeetings-templates.zip unzip, edit the files, zip
+				it again and rename it to openmeetings-templates.jar)
+			</p>
+			<p>
+				In openmeetings-templates.jar there are all template files. They
+				have the file extension .vm (VM stands for velocity-template). After
+				you have done your changes you need to (re)start the
+				Red5/OpenMeetings
+				-Service so that changes are online.
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/FFMPEGVersionSwitch.xml b/xdocs/FFMPEGVersionSwitch.xml
new file mode 100644
index 0000000..b6d9006
--- /dev/null
+++ b/xdocs/FFMPEGVersionSwitch.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Howto switch between different versions of FFMPEG </title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Default Configuration">
+
+			<p>FFMPEG has a change in its API (possibly since GIT revision
+				88bfe4518)
+			</p>
+			<p>Since Version 1.9.x of OpenMeetings: By default OpenMeetings
+				expects you to have a new version of FFMPEG on your OpenMeetings
+				server installed and it will use the new API style to communicate
+				with FFMPEG.
+			</p>
+
+		</section>
+
+		<section name="Switching to old FFMPEG API">
+		
+			<p>
+				If you want to switch to the old style you can change that using the
+				config key:
+				<tt>use.old.style.ffmpeg.map.option</tt>
+			</p>
+			<p>
+				Set this value to
+				<tt>1</tt>
+				to have the old params in the API call to FFMPEG.
+			</p>
+			<p>References:  </p>
+			<ul>
+				<li>
+					<a
+						href="http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html"
+						rel="nofollow">http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html
+					</a>
+				</li>
+			</ul>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/GeneralConfiguration.xml b/xdocs/GeneralConfiguration.xml
new file mode 100644
index 0000000..2ff48fa
--- /dev/null
+++ b/xdocs/GeneralConfiguration.xml
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>List of general configuration options</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="List of general configuration options">
+			<style><!--
+				.configCell {
+					border: 1px solid rgb(204, 204, 204);
+					padding: 5px;
+				}
+			--></style>
+			<p>In Administration &gt; Configuration there are a number of
+				configuration values.
+			</p>
+			<p></p>
+			<table>
+				<tr>
+					<th class="configCell"> key </th>
+					<th class="configCell"> default </th>
+					<th class="configCell"> meaning </th>
+					<th class="configCell"> availabe since OpenMeetings version </th>
+				</tr>
+				<tr>
+					<td class="configCell"> user.login.minimum.length </td>
+					<td class="configCell"> 4 </td>
+					<td class="configCell"> minimum chars required for the login to create a user </td>
+					<td class="configCell"> 1.9.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> user.pass.minimum.length </td>
+					<td class="configCell"> 4 </td>
+					<td class="configCell"> minimum chars required for the password to create a
+						user
+					</td>
+					<td class="configCell"> 1.9.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> number.minutes.reminder.send </td>
+					<td class="configCell"> 15 </td>
+					<td class="configCell"> minutes the one-time reminder in the calender is
+						send, set to 0 to disable reminder
+					</td>
+					<td class="configCell"> 1.9.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> max_upload_size </td>
+					<td class="configCell"> 1073741824 </td>
+					<td class="configCell"> Maximum size of upload file (bytes) 1073741824 bytes
+						= 1GB
+					</td>
+					<td class="configCell"> 1.8.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> show.whiteboard.draw.status </td>
+					<td class="configCell"> 0 </td>
+					<td class="configCell"> Display name of the user who draw the current object
+						(User Name auto-disapper after 3 seconds.
+					</td>
+					<td class="configCell"> 1.8.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> use.old.style.ffmpeg.map.option </td>
+					<td class="configCell"> 0 </td>
+					<td class="configCell"> If the system should "." (old ffmpeg) instead of ":"
+						(new ffmpeg) for the -map option in FFMPEG
+					</td>
+					<td class="configCell"> 1.9.x </td>
+
+				</tr>
+				<tr>
+					<td class="configCell"> inviter.email.as.replyto </td>
+					<td class="configCell"> 1 </td>
+					<td class="configCell"> Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)	</td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> office.path </td>
+					<td class="configCell"> </td>
+					<td class="configCell"> The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically	</td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> default.landing.zone </td>
+					<td class="configCell"> user/dashboard </td>
+					<td class="configCell"> Area to be shown to the user after login. Possible values are: user/dashboard, user/calendar, user/record, rooms/my, rooms/group, rooms/public, admin/user, admin/connection
+						, admin/group, admin/room, admin/config, admin/lang, admin/ldap, admin/backup, admin/server, admin/oauth2 </td>
+					<td class="configCell"> 2.1.x, <b> values are changed in 3.0.0</b> </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sms.provider </td>
+					<td class="configCell">  </td>
+					<td class="configCell"> SMS service provider (bulksms.http.1) </td>
+					<td class="configCell"> 2.1.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sms.Username </td>
+					<td class="configCell">  </td>
+					<td class="configCell"> Login for SMS service provider </td>
+					<td class="configCell"> 2.1.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sms.Userpass </td>
+					<td class="configCell">  </td>
+					<td class="configCell"> Password for SMS service provider </td>
+					<td class="configCell"> 2.1.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sms.subject </td>
+					<td class="configCell">  </td>
+					<td class="configCell"> Subject of SMS reminder message </td>
+					<td class="configCell"> 2.1.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> swftools_zoom </td>
+					<td class="configCell"> 100 </td>
+					<td class="configCell"> DPI for conversion of PDF to SWF (should be an integer between 50 and  600 with a default value of 100 DPI) </td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> swftools_jpegquality </td>
+					<td class="configCell"> 85 </td>
+					<td class="configCell"> Compression quality for conversion of PDF to SWF (should be an integer between 1 and 100, with a default value of 85) </td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sendEmailAtRegister </td>
+					<td class="configCell"> 0 </td>
+					<td class="configCell"> User get a EMail with their Account data. Values: 0(No) or 1(Yes) </td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td class="configCell"> sendEmailWithVerficationCode </td>
+					<td class="configCell"> 0 </td>
+					<td class="configCell"> User must activate their account by clicking on the 
+								activation-link in the registering Email. Values: 0(No) or 1(Yes) 
+								It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while 
+								sendEmailAtRegister is 0(No) cause you need
+								to send a EMail. </td>
+					<td class="configCell"> 2.0.x </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> redirect.url.for.external.users </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;">  </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 2.2.x </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> allow_frontend_register </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> (configurable during install) </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Is user register available on login screen </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1.8.x </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> allow.soap.register </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Is user register available via SOAP/REST </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 3.0.x </td>
+				</tr>
+			</table>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/GetVersionInfo.xml b/xdocs/GetVersionInfo.xml
new file mode 100644
index 0000000..e799233
--- /dev/null
+++ b/xdocs/GetVersionInfo.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>How to check which Openmeetings version running</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="How to check which Openmeetings version running (3.0.0 - )">
+			<p>Use Top Menu -&gt; About</p>
+		</section>
+		<section name="How to check which Openmeetings version running (2.1.1 - )">
+			<p>The version is printed into openmeetings.log file</p>
+			<p>
+				Run openmeetings<br/>
+				Open OM_HOME/log/openmeetings.log
+			</p>
+			<p>You get something like this: </p>
+			<div class="xmlcode"><pre>
+	##################################################
+	#               Openmeetings is up               #
+	#       2.1.1-RELEASE 1490720 7-June-2013        #
+	#                and ready to use                #
+	##################################################
+			</pre></div>
+		</section>
+		<section name="How to check which Openmeetings version running (1.8.0 - 2.1.0)">
+			<p>If you need to know what version of OpenMeetings you are running,
+				you can check that by the file: openmeetings-*.jar
+			</p>
+			<p>
+				Unzip: /webapps/openmeetings/WEB-INF/lib/openmeetings-*.jar (jars are
+				zips)
+				<br />
+				<br />
+				In the resulting unzipped folder open the file to read:
+				/META-INF/MANIFEST.MF
+			</p>
+			<p>You get something like this: </p>
+			<div class="xmlcode">
+				Manifest-Version: 1.0
+				<br />
+				Ant-Version: Apache Ant 1.8.2
+				<br />
+				Created-By: 1.6.0_26-b03-383-11A511 (Apple Inc.)
+				<br />
+				Built-By: OpenMeetings - http://openmeetings.googlecode.com
+				<br />
+				Built-On: 23-October-2011
+				<br />
+				Svn-Revision: 4368
+				<br />
+			</div>
+			<p>This version info is available since version 1.8.0. If you have an
+				older version as version 1.8.0 then you might simply check the
+				language files and the labelid in there, the numbers of labels are
+				almost always unique in the versions. </p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/HotKeys.xml b/xdocs/HotKeys.xml
new file mode 100644
index 0000000..db56499
--- /dev/null
+++ b/xdocs/HotKeys.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Hot Keys</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="Keys table">
+			<table>
+				<tr>
+					<th>Key</th>
+					<th>Functionality</th>
+					<th>Configurable</th>
+					<th>Config Key</th>
+				</tr>
+				<tr>
+					<td>F12 (code 123)</td>
+					<td>A hot key code for the 'give exclusive audio' functionality.</td>
+					<td>Yes</td>
+					<td>exclusive.audio.keycode</td>
+				</tr>
+				<tr>
+					<td>F8 (code 119)</td>
+					<td>If 1 or 2 video windows are present in the room they will be
+						"rearranged" to take all the place available</td>
+					<td>No</td>
+					<td>
+					</td>
+				</tr>
+				<tr>
+					<td>F7 (code 118)</td>
+					<td>A hot key code for the 'mute/unmute audio' functionality.</td>
+					<td>Yes</td>
+					<td>mute.keycode</td>
+				</tr>
+			</table>
+		</section>
+	</body>
+</document>
\ No newline at end of file
diff --git a/xdocs/IBMDB2Config.xml b/xdocs/IBMDB2Config.xml
new file mode 100644
index 0000000..2324502
--- /dev/null
+++ b/xdocs/IBMDB2Config.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>IBM DB2 Configuration</title>
+		<author email="sebawagner@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="IBM DB2 Configuration">
+
+			<subsection name="Before you start">
+				<i>Tested with IBM DB2 Express-C 9.7.x</i>
+				<ul>
+					<li>
+						Get the IBM Data Server Driver for JDBC and SQLJ from IBM website:
+						<a
+							href="https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs">https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=swg-idsdjs
+						</a>
+					</li>
+					<li>Copy JDBC driver db2jcc4.jar to
+						webapps/openmeetings/WEB-INF/lib/
+					</li>
+					<li>
+						Create database for OpenMeetings using a pagesize bigger or equal
+						8K, sample query:
+						<br />
+						<div class="xmlcode">
+							CREATE DATABASE openmeet AUTOMATIC STORAGE YES ON 'C:' DBPATH ON 'C:'
+							USING CODESET UTF-8 TERRITORY DE COLLATE USING System PAGESIZE 16
+							K
+						</div>
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again </li>
+				</ul>
+			</subsection>
+
+			<subsection name="Steps todo">
+				<ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml connectionURL, username and
+						password with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="DB2 Sample Configuration">
+				<p>
+					There is a sample configuration for IBM DB2 that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/db2_persistence.xml
+				</p>
+			</subsection>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/Internationalisation.xml b/xdocs/Internationalisation.xml
new file mode 100644
index 0000000..c4b5f33
--- /dev/null
+++ b/xdocs/Internationalisation.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Upgrade</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Where to find language files">
+
+			<p>You can find all current language files here: </p>
+			<p>
+				<a
+					href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/"
+					rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/
+				</a>
+			</p>
+			<p>Just take one file and translate it to your language. </p>
+		</section>
+
+		<section name="Import and export of Language Files">
+
+			<ul>
+				<li>
+					Use the
+					<a href="LanguageEditor.html">LanguageEditor</a>
+					for translation
+				</li>
+				<li>
+					with the
+					<a href="LanguageEditor.html">LanguageEditor</a>
+					you can import and export Language Files
+				</li>
+			</ul>
+		</section>
+
+		<section name="How to add it as installation option">
+			<p>
+				Once you have finished the translation you can add a new node to:
+				<a
+					href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/languages.xml"
+					rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/languages/languages.xml
+				</a>
+			</p>
+			<p>the name of the language should match the name of the file. Once
+				this is done the Language file will automatically be imported during
+				installation and will be an option at login.
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/JUnitTesting.xml b/xdocs/JUnitTesting.xml
new file mode 100644
index 0000000..02468c2
--- /dev/null
+++ b/xdocs/JUnitTesting.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>JUnit Testing</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Introduction">
+
+			<p>
+				Automatic tests are the significant part of development process.
+				Below is the instruction of how to run Openmeetings
+				<a href="http://junit.org" rel="nofollow">JUnit</a>
+				tests.
+			</p>
+		</section>
+
+		<section name="Details">
+
+
+			<ol>
+				<li>running tests using command line: </li>
+				<li>
+					<ul>
+						<li>all tests:
+							<div class="xmlcode">
+								ant test
+							</div>
+						</li>
+						<li>subset of tests by mask:
+							<div class="xmlcode">
+								ant -Dtestcases=TestError* test
+							</div>
+						</li>
+					</ul>
+				</li>
+				<li>running tests from Eclipse IDE: </li>
+				<li>
+					<ul>
+						<li>
+							<div class="xmlcode">
+								ant -Ddb=&lt;your_DB&gt; prepare-eclipse
+							</div>
+						</li>
+						<li>Start Eclipse </li>
+						<li>Load workspace with Openmeetings project (or refresh existing
+							project)
+						</li>
+						<li>Select "Debug Configurations..." </li>
+					</ul>
+				</li>
+			</ol>
+			<p>
+				<a class="fancybox-buttons" href="images/DebugConfigurations.png">
+					<img src="images/DebugConfigurations.png" alt="" width="367"
+						height="262" />
+				</a>
+			</p>
+			<ul>
+				<li>Create New Junit configuration, give it a name and select test
+					class
+				</li>
+			</ul>
+			<p>
+				<a class="fancybox-buttons" href="images/NewConfiguration.png">
+					<img src="images/NewConfiguration.png" alt="" width="420"
+						height="206" />
+				</a>
+			</p>
+			<ul>
+				<li>Select Arguments tab </li>
+				<li>Add the following code to the VM section
+					<div class="xmlcode">
+						-javaagent:${workspace_loc:Openmeetings}/build/lib/om/openjpa-bundle-2.2.2.jar
+						-Dom.home=${workspace_loc:Openmeetings}/src/main/webapp
+						-Dbackups.dir=${workspace_loc:Openmeetings}/build/lib/junit/backups
+					</div>
+				</li>
+				<li>To avoid temporary files being created in OM root, modify
+					"Working Directory" as follows
+					<div class="xmlcode">${workspace_loc:Openmeetings}/build/junit</div>
+				</li>
+			</ul>
+			<p>
+				<a class="fancybox-buttons" href="images/Arguments.png">
+					<img src="images/Arguments.png" alt="" width="435" height="410" />
+				</a>
+			</p>
+			<ul>
+				<li>Select Debug </li>
+
+			</ul>
+			<ul>
+				<li>Note: You need a file called "persistence.xml" in src/META-INF
+					if you run the JUnit test from inside Eclipse. Normally "ant
+					prepare-eclipse" should do that for you. </li>
+
+			</ul>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/JVMPerformanceTuning.xml b/xdocs/JVMPerformanceTuning.xml
new file mode 100644
index 0000000..b717e14
--- /dev/null
+++ b/xdocs/JVMPerformanceTuning.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Performance Tuning</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Performance Tuning">
+
+			<p>To use the optimum of performance from your server there is a
+				start-script for red5 available that does some basic settings in the
+				JVM. It is called red5-highperf.sh. It is recommended to use that
+				script for production and high-load scenarios.
+			</p>
+			<div class="xmlcode">
+				#!/bin/bash
+				<br />
+				<br />
+				if [ -z "$RED5_HOME" ]; then export RED5_HOME=.; fi
+				<br />
+				<br />
+				# Previous option set
+				<br />
+				export JAVA_OPTS="-Xrs -Xms512M -Xmx1024M -Xss128K -XX:NewSize=256m
+				-XX:SurvivorRatio=16 -XX:MinHeapFreeRatio=20
+				-XX:+ExplicitGCInvokesConcurrent -Djava.net.preferIPv4Stack=true
+				-Xverify:none"
+				<br />
+				<br />
+				# start Red5
+				<br />
+				echo "Setting Hi Performance Options"
+				<br />
+				exec $RED5_HOME/red5.sh >> $RED5_HOME/log/jvm.stdout 2>&amp;1 &amp;
+				<br />
+			</div>
+
+			<p>You have to exclude the "-XX:+UseConcMarkSweepGC" param from the
+				default red5-highperf.sh to make it functional! However if you are a
+				performance expert you might also play with the values to find
+				perfect matches for your use-case.
+			</p>
+			<p>
+				For a complete overview about possible arguments and their meaning
+				see:
+				<a
+					href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning"
+					rel="nofollow">http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#PerformanceTuning
+				</a>
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/JiraPlugin.xml b/xdocs/JiraPlugin.xml
new file mode 100644
index 0000000..8901bcf
--- /dev/null
+++ b/xdocs/JiraPlugin.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Jira Plugin</title>
+		<author email="eschwert@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Jira Plugin for OpenMeetings">
+			<p>
+				Current Development Snapshots for testing can be downloaded from:
+				<a href="https://svn.apache.org/repos/asf/openmeetings/branches/jira-plugin/target/openmeetings-1.0-SNAPSHOT.jar">here</a>
+				.
+			</p>			
+		</section>
+		
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Create videoconference rooms through Jira: </li>
+				<li>
+					<ol>
+						<li>Integrated with Jira issues </li>										
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>			
+		</section>	
+		
+		<section name="Demo video">			
+			<p>The demo video of Jira plugin show you the plugin in action </p>              
+		      <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/xBdYj-OZvlc?version=3&amp;feature=player_detailpage"/>
+			      <param name="allowFullScreen" value="true"/>
+			      <param name="allowScriptAccess" value="always"/>
+			      <embed src="http://www.youtube.com/v/xBdYj-OZvlc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"/>
+		      </object> 
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/JoomlaPlugin.xml b/xdocs/JoomlaPlugin.xml
new file mode 100644
index 0000000..c84c420
--- /dev/null
+++ b/xdocs/JoomlaPlugin.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Joomla Plugin</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="OpenMeetings Plugin for Joomla">
+			<p>
+				Plugin for Joomla currently is not open source. 
+				Please contact <a href="commercial-support.html" target="_BLANK" rel="nofollow">Commercial Support</a> to get it. 
+			</p>			
+		</section>
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Create videoconference rooms from Joomla: </li>
+				<li>
+					<ol>
+						<li>Create rooms</li>										
+						<li>Enter the room</li>
+					</ol>
+				</li>
+				<li>Access recordings from Joomla: </li>
+				<li>
+					<ol>
+						<li>Download recordings</li>										
+					</ol>
+				</li>
+			</ul>
+		</section>
+		<section name="Demo video">			
+			<div>
+				<b>OpenMeetings Joomla Plugin Installation</b><br/>              
+				<object style="height: 360px; width: 640px">
+					<param name="movie" value="http://www.youtube.com/v/jt8ejgtHavc?version=3&amp;feature=player_detailpage"/>
+					<param name="allowFullScreen" value="true"/>
+					<param name="allowScriptAccess" value="always"/>
+					<embed src="http://www.youtube.com/v/jt8ejgtHavc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"/>
+				</object> 
+			</div>
+			<br/>
+			<div>
+				<b>OpenMeetings Integration with Joomla</b><br/>              
+				<object style="height: 360px; width: 640px">
+					<param name="movie" value="http://www.youtube.com/v/H61N0pfLusA?version=3&amp;feature=player_detailpage"/>
+					<param name="allowFullScreen" value="true"/>
+					<param name="allowScriptAccess" value="always"/>
+					<embed src="http://www.youtube.com/v/H61N0pfLusA?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"/>
+				</object> 
+			</div>
+		</section>
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/LanguageEditor.xml b/xdocs/LanguageEditor.xml
new file mode 100644
index 0000000..1f100b4
--- /dev/null
+++ b/xdocs/LanguageEditor.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Language Editor</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Language Editor">
+
+			<p>Features:</p>
+			<ul>
+				<li>edit the labels of any language, changes will take effect as
+					soon as you re-login
+				</li>
+				<li>add new languages (for example to fit your co-operative design
+					and language of your company)
+				</li>
+				<li>export the language-files to an XML File (these language Files
+					can be used for your next installation or as contribution to the
+					project)
+				</li>
+				<li>
+					import of language files (
+					<i>you should restart the server if you face problems, as the
+						database cache might be invalid
+					</i>
+					)
+				</li>
+			</ul>
+			<p>Screen from the Administration Panel: </p>
+			<p>
+				<a class="fancybox-buttons" href="images/langeditor_screen_v2.png">
+					<img src="images/langeditor_screen_v2.png" alt="" width="475"
+						height="324" />
+				</a>
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/LdapAndADS.xml b/xdocs/LdapAndADS.xml
new file mode 100644
index 0000000..8c9d88a
--- /dev/null
+++ b/xdocs/LdapAndADS.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+		<section name="Ubuntu Installation">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get install slapd ldap-utils
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Modify file <tt>/etc/ldap/ldap.conf</tt> add highlighted attributes:
+				<blockquote>
+					<i>
+						#<br />
+						# LDAP Defaults<br />
+						#<br />
+						# See ldap.conf(5) for details<br />
+						# This file should be world readable but not world writable.<br />
+						<b>BASE    dc=unixmen,dc=com<br />
+						URI     ldap://192.168.1.200</b><br />
+						#SIZELIMIT      12<br />
+						#TIMELIMIT      15<br />
+						#DEREF          never<br />
+						# TLS certificates (needed for GnuTLS)<br />
+						TLS_CACERT      /etc/ssl/certs/ca-certificates.crt<br />
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Run the Configuration assistant: <tt>sudo dpkg-reconfigure slapd</tt>
+			</div>
+			<div>
+				Test LDAP server: <tt>ldapsearch -x</tt>
+			</div>
+			<div>
+				Add/Edit/Delete users: <tt>sudo apt-get install phpldapadmin</tt>
+			</div>
+			<div>
+				Detailed reference: <a href="http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/">http://www.unixmen.com/openldap-installation-and-configuration-in-ubuntu-12-10-server-debian-6/</a>
+			</div>
+		</section>
+		<section name="LDAP and Active Directory Integration">
+			<p> In: $RED5_HOME/webapps/openmeetings/conf<br/>
+				you will find sample configurations for LDAP and Active Directory. The
+				nature of those Directory Servers are that they are individual for
+				every organization, so you have to modify of course at least the
+				path to your user-base et cetera.<br/>
+				<br/>
+				To activate any of those configurations you have to login into
+				OpenMeetings, goto Administration > Ldap.
+			</p>
+			<a class="fancybox-buttons" href="images/ldap_screen.png">
+				<img src="images/ldap_screen.png" alt="" width="442" height="282" />
+			</a>
+			<p>
+				Import is that you configure LDAP_SEARCH_PATH so that it points to the node of your directory server that contains the users
+			</p>
+			<p>
+				If you have multiple search paths you can either try to define a search path that points to multiple nodes or define multiple ldap configurations.
+			</p>
+			<p>
+				Successful integration is also reported with Novell eDirectory
+			</p>
+			<p>
+				You can configure multiple domains or different user-paths in the Administration of OpenMeetings. 
+			</p>
+			<p>
+				<b>NOTE: </b>You should specify file name <i>RELATIVE</i> to <tt>$RED5_HOME/webapps/openmeetings/conf</tt>
+			</p>
+		</section>
+
+	</body>
+</document>
\ No newline at end of file
diff --git a/xdocs/MSSQLConfig.xml b/xdocs/MSSQLConfig.xml
new file mode 100644
index 0000000..27f11cc
--- /dev/null
+++ b/xdocs/MSSQLConfig.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document>
+
+	<properties>
+		<title>MSSQL Configuration</title>
+		<author email="solomax@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="MSSQL Configuration">
+
+			<subsection name="Before you start">
+				<ul>
+					<li>You need Openmeetings 2.2 or later to use MSSQL integration</li>
+					<li>Make sure that you have set utf8 as collation for the openmeetings database
+						before you start the installation process of OpenMeetings!
+					</li>
+					<li>
+						make sure MSSQL is listening on TCP/IP connections! and username/password 
+						authentication is enabled for it
+						<br />
+						To verify if MSSQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="Steps todo">
+				<ul>
+					<li>
+						You need to download the JDBC driver from Microsoft
+						<a href="http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&amp;id=11774" target="_BLANK"
+							rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&amp;id=11774</a>
+						Unarchive appropriate file from it (sqljdbc.jar or sqljdbc4.jar) and place it into:
+						<tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+					</li>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="MSSQL Sample Configuration">
+				<p>
+					There is a sample configuration for MySQL that ships with
+					every release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/mssql_persistence.xml
+				</p>
+			</subsection>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/ManualTesting.xml b/xdocs/ManualTesting.xml
new file mode 100644
index 0000000..0ccad05
--- /dev/null
+++ b/xdocs/ManualTesting.xml
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Manual Testing</title>
+		<author email="iarkh@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Introduction">
+
+			<p>
+				Below is a test plan for the OpenMeetings 2.1 pre-release testing.
+			</p>
+		</section>
+
+		<section name="Details">
+
+			<ol>
+				<li>
+					<b>User GUI tests</b>
+					<ol>
+						<li>
+							Login/logout 
+							<ol>
+								<li>Password recovering </li>
+								<li>Self-registering </li>
+								<li>"Visit Apache OpenMeetings" link </li>
+								<li>Enter wrong login/password </li>
+								<li>Enter correct login/password </li>
+								<li>Exit the system by click the Exit button </li>
+							</ol>
+						</li>
+						<li>
+							Dashboard
+							<ol>
+								<li>Correct user info in the upper left corner </li>
+								<li>Links in the "Help and support" section </li>
+								<li>It should be possible to enter user’s room from the dashboard </li>
+								<li>Room details should be shown correctly in the "Rooms in this section…" part of the screen </li>
+							</ol>					
+						</li>
+						<li>
+							Global chat 
+							<ol>
+								<li>Send/receive message where at least 3 users in the system </li>
+								<li>Adding a contact to the contact list </li>
+								<li>Private message </li>
+								<li>Showing user profile </li>
+								<li>Inviting user to the conference room </li>
+								<li>Copy chat log </li>
+								<li>Delete chat log </li>
+								<li>Changing font style in the massage </li>
+								<li>Adding emotions to the message </li>
+							</ol>
+							Attention! Correct RTL support does not work in the current implementation 
+						</li>
+						<li>
+							Calendar view
+							<ol>
+								<li>Change view (weekly/daily/monthly) and moving between the dates </li>
+								<li>Adding/removing/moving by mouse an event </li>
+							</ol>
+						</li>
+						<li>
+							Calendar invitation window
+							<ol>
+								<li>Creating/updating/deleting an event </li>
+								<li>Inviting 3 internal and 3 external guests </li>
+								<li>Different reminder types: receiving e-mail invitation for internal and external guests </li>
+								<li>Password protected invitation </li>
+								<li>Inviting to the rooms of the different types </li>
+								<li>Choosing time zone for external guest </li>
+								<li>Correct user data in the invitations </li>
+								<li>SMS reminder for internal and external guests </li>
+								<li>E-mail reminder for internal and external guests </li>
+								<li>It should be possible to enter to the event via invitation link room at the particular time slot only </li>
+								<li>Enter the room via invitation window </li>
+							</ol>
+						</li>
+						<li>
+							My Profile: User profile should contain correct user info and allow to edit this 
+						</li>
+						<li>
+							Contacts and Messages
+							<ol>
+								<li>Add/remove a message </li> 
+								<li>Creating a new folder </li>
+								<li>Moving between the folders </li>
+								<li>Marking messages as read/unread </li>
+								<li>Message filters </li>
+								<li>Contact list </li>
+							</ol>
+						</li>
+						<li>
+							User settings
+							<ol>
+								<li>Possibility to change the user info </li>
+								<li>Changing time zone and language (should start to work after user re-login </li>
+								<li>Community settings or different users </li>
+								<li>Display settings</li> 
+							</ol>
+						</li>
+						<li>
+							Search users
+							<ol>
+								<li>Send a private message </li>
+								<li>Adding a contact </li>
+								<li>View contact details via user list </li>
+							</ol>
+						</li>
+						<li>
+							Room lists 
+							<ol>
+								<li>Public rooms, private rooms and my rooms should contain correct room lists </li>
+								<li>User list for the selected room </li>
+								<li>Room details for the selected room </li>
+							</ol>
+						</li>
+						<li>
+							Recordings
+							<ol> 
+								<li>The list should contain available recordings in public and private folders </li>
+								<li>Info panel should contain actual info about the recording </li>
+								<li>Downloading a recording is different formats (AVI/FLV) </li>
+								<li>Play the recording in OpenMeetings </li>
+								<li>Play downloaded recording by Windows player </li>
+								<li>Remove a recording from the folder </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – general issues (should be tested with at least 3 attendees)
+							<ol>
+								<li>Enter the room: different cases for the cam/micro, choosing of the cam resolution, test recording, allow/deny of video </li>
+								<li>User list should be shown correctly </li>
+								<li>Correct user credentials after  the room entering </li>
+								<li>Add moderator permissions to the user </li>
+								<li>Turn micro on/off in the user list </li>
+								<li>Increasing/decreasing sound level and turning micro on/off in the video window </li>
+								<li>Turn micro on/off in the user list to another user – possible by the moderator only </li>
+								<li>Increasing/decreasing sound level and turning micro on/off in the video window - possible by the moderator only </li>
+								<li>Allow/deny drawing on whiteboard – possible by the moderator only </li>
+								<li>Allow/deny screen sharing – possible by the moderator only </li>
+								<li>Allow/deny remote screen control – possible by the moderator only </li>
+								<li>Allow/deny exclusive audio – possible by the moderator only </li>
+								<li>Re-start devise settings via user list </li>
+								<li>Re-start devise settings via video window </li>
+								<li>Kick the user off by the moderator </li>
+								<li>Click F8 key to arrange videos </li>
+								<li>Activity and actions panel should contain correct info </li>
+								<li>Exit the room </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing: file uploading + documents
+							<ol>
+								<li>Upload a document with "Load directly to whiteboard" switch turned on </li>
+								<li>Upload a with "Load directly to whiteboard" switch turned on off </li>
+								<li>Upload a document with the localized file name and spaces in the name </li>
+								<li>Uploading a document into different folders: private files should be visible only their owner only </li>
+								<li>Removing a file from the room </li>
+								<li>Home and public drive size should change correctly </li>
+								<li>Adding a new folder </li>
+								<li>Removing a folder </li>
+								<li>Load a document of each supported type and check that it’s shown correctly </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – whiteboard and properties panels (should be tested with at least 3 attendees)
+							<ol>
+								<li>Adding a removing a whiteboard </li>
+								<li>Full-fit switch </li>
+								<li>Clear whiteboard </li>
+								<li>Clear objects of current slide only </li>
+								<li>Save and export </li>
+								<li>Undo </li>
+								<li>Select an object </li>
+								<li>Pointer </li>
+								<li>Text </li>
+								<li>Paint </li>
+								<li>Draw line </li>
+								<li>Draw underline </li>
+								<li>Rectangle </li>
+								<li>Ellipse </li>
+								<li>Arrow </li>
+								<li>Cliparts</li>
+							</ol>						
+						</li>
+						<li>
+							Restricted room testing – chat (should be tested with at least 3 attendees)
+							<ol>
+								<li>Send a message </li>
+								<li>Start a private chat </li>
+								<li>Chat moderation </li>
+								<li>Font style </li>
+								<li>Emotions </li>
+								<li>Show/copy chat log </li>
+								<li>Delete server chat log </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – screen sharing and recordings (should be tested with at least 3 attendees)
+							<ol>
+								<li>"Share record/screen" button in the room </li>
+								<li>Desktop sharer: start/stop sharing </li>
+								<li>Change the shared screen area (X-offset, Y-offset, width, height) </li>
+								<li>Change the screen sharing quality </li>
+								<li>Start/stop recordings – need to check that it works as expected </li>
+							</ol>
+						</li>
+						<li>
+							Restricted room testing – Actions menu
+							<ol>
+								<li>Send invitation: send English and localized message </li>
+								<li>Send invitation with password </li>
+								<li>Send invitations with 3 different time periods </li>
+								<li>Change time zone of the invitation </li>
+								<li>Change language of the invitation </li>
+								<li>Send invitation screen: "Generate URL" button – check the same things as for the invitations sent by email </li>
+								<li>Apply to be moderator </li>
+								<li>Apply to whiteboard access </li>
+								<li>Apply to audio/video access </li>
+								<li>Create a poll </li>
+								<li>Poll results </li>
+								<li>Vote </li>
+								<li>Default whiteboard settings: check all of them </li>
+							</ol>
+						</li>
+						<li>
+							Conference room testing
+							<ol>
+								<li>User list should look in another way in compare with restricted type </li>
+								<li>Generally, all should look OK when enter the room </li>
+							</ol>
+						</li>
+						<li>
+							Interview room testing (should be tested with at least 3 attendees)
+							<ol>
+								<li>User list should look as expected </li>
+								<li>Change a user for video pod </li>
+								<li>Start/stop recordings </li>
+							</ol>
+						</li>						
+					</ol>			
+				</li>
+				<li>
+					<b>Admin GUI tests</b>
+					<ol>
+						<li>
+							Users
+							<ol>
+								<li>Add/edit/remove/search user in the table </li>
+								<li>Move between screens where there are many users in the table </li>
+								<li>Edit text fields </li>
+								<li>Change a time zone, re-login and check the calendar </li>
+								<li>Change a language, re-login and check the GUI language </li>
+								<li>Е-mail: e-mails should pass </li>
+								<li>Phone and SMS switch: if set and turned on, sms messages should pass </li>
+								<li>Change a status – non-active user cannot login </li>
+								<li>Change user role and re-login </li>
+								<li>Change user group  - user has an access only to the rooms belong to his organization </li>
+								<li>Change community settings and check </li>
+							</ol>
+						</li>
+						<li>
+							Connections
+							<ol>
+								<li>Should be tested with at least 3 users in the system </li>
+								<li>Sessionvars table should be shown correctly </li>
+								<li>Kick the user from the system </li>
+							</ol>
+						</li>
+						<li>
+							Organizations 
+							<ol>
+								<li>Add/remove/edit/search an organization </li>
+								<li>Add/remove a user from the user list of selected organization </li>
+							</ol>
+						</li>
+						<li>
+							Conference rooms
+							<ol>
+								<li>Add/remove/edit/search a room </li>
+								<li>User list for the given room should contain actual list </li>
+								<li>Turn the Moderation switch on/off and enter the room </li>
+								<li>Add/remove a user to the default moderator list </li>
+								<li>Check max participants number in the room </li>
+								<li>Change room type and enter the room </li>
+								<li>Turn public switch on/off </li>
+								<li>Turn "Demo switch" on/off, change the demonstration time </li>
+								<li>Turn "Allow user questions" on/off and enter the room </li>
+								<li>Turn "Audio only" switch on/off and enter the room </li>
+								<li>Set "Close URL" to some URL, enter the room and then exit – you should be re-directed correspondingly </li>
+								<li>Check that SIP settings work as expected </li>
+								<li>Check that "Allow recordings" switch  works as expected </li>
+								<li>Check that "Layout options" switch work as expected </li>
+								<li>Check that "Allow font styles" switch works as expected </li>
+							</ol>
+						</li>
+						<li>					
+							Configuration
+							<ol>
+								<li>Allow_frontend_register </li>
+								<li>Mail server settings </li>
+								<li>SMS provider settings </li>
+								<li>Application.name </li>
+								<li>Default_lang_id </li>
+								<li>default time zone </li>
+								<li>SIP settings </li>
+								<li>Reminder minutes </li>
+							</ol>
+						</li>
+						<li>					
+							Language editor 
+							<ol>
+								<li>Add/remove/edit/search a key </li>
+								<li>Import/export of localization files </li>
+							</ol>
+						</li>
+						<li>					
+							LDAP: Add/remove/edit/search a record
+						</li>
+						<li>
+							Backup
+							<ol>
+								<li>System import </li>
+								<li>System backup </li>
+								<li>TBD – need to add tests for command line admin here </li>
+							</ol> 
+						</li>
+						<li>
+							Servers: Add/remove/edit/search a server
+						</li>						
+					</ol>
+				</li>
+				<li>
+					<b>SIP integration tests</b> (should be tested with at least 3 attendees in the room; for restricted and interview rooms)
+					<ol>
+						<li>Call from the room to the external phone number </li>
+						<li>Call from external phone number to the room </li>
+						<li>Call from the software phone to the room </li>
+						<li>Call from the software phone with video to the room </li>
+					</ol>
+				</li>
+				<li>
+					<b>Network testing script</b>
+				</li>
+				<li>
+					<b>Site integration tests</b>
+					<ol>
+						<li>Enter OpenMeetings room from Mooddle site </li>
+						<li>Check that recordings link are shown on the Moodle site </li>
+						<li>Enter OpenMeetings room from Joomla site </li>
+						<li>Check that recordings link are shown on the Joomla site </li>
+						<li>Enter OpenMeetings room from Drupal site </li>
+						<li>Check that recordings link are shown on the Drupal site </li>
+					</ol>
+				</li>
+				<li>
+					<b>Extended test plan for the recordings and screen sharing testing</b>
+					<ol>
+						<li><b>Interview room testing</b>
+							<ol>
+								<li>
+									Just a 5 minutes recording:
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Wait for 5 minutes</li>
+										<li>Stop recording by user A</li>
+										<li>Repeat steps 1.1 – 1.6 3 times</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed and work as expected</li>
+										<li>there should not be a delay between the video and sound</li>
+									</ol>
+								</li>
+								<li>Just a 30 minutes recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+								<li>Just an 1 hour recording: do steps 1.1.1-1.16 one time; then check the result recording</li>
+								<li>
+									5-minutes recording: user exits the room before the recording gets stopped
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Exit the room by user B</li>
+										<li>Stop recording by user A</li>
+										<li>Repeat steps 1.4.1 – 1.4.6 3 times</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed and work as expected</li>
+										<li>There should not be a delay between the video and sound</li>
+									</ol>
+								</li>
+								<li>
+									5-minutes recording: user A starts recording, user B stops
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Open videos for both users</li>
+										<li>Start recording with user A</li>
+										<li>Stop recording by user B</li>
+										<li>Exit room</li>
+										<li>Wait some time</li>
+										<li>Check that all the recordings are processed as expected</li>
+									</ol>
+								</li>
+							</ol>
+						</li>
+						<li>
+							<b>Conference room testing</b>
+							<ol>				
+								<li>
+									Screen sharing
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Enter a room by user C</li>
+										<li>Open videos for all the users</li>
+										<li>Start screen sharing session by user A, choose High quality</li>
+										<li>Check that A's screen looks correctly for users B and C and sound is OK in the room</li>
+										<li>Stop screen sharing by user A after 5 minutes</li>
+										<li>Repeat steps 2.1.1-2.1.7 3 times</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Very high quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Medium quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose “Low quality” on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but choose some random height and width on the step 2.1.5</li>
+										<li>Repeat steps 2.1.1-2.1.7 one more time, but turn the “Notify on disconnect” switch on the step 2.1.5</li>									
+									</ol>
+								</li>
+								<li>
+									Recordings
+									<ol>
+										<li>Enter a room with user A</li>
+										<li>Enter a room with user B</li>
+										<li>Enter a room by user C</li>
+										<li>Open videos for all the users</li>
+										<li>Start recording session by user A, choose High quality</li>
+										<li>Stop recording session by user A after 5 minutes</li>
+										<li>Repeat steps 2.2.1-2.2.6 3 times</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Very high quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Medium quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose “Low quality” on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but choose some random height and width on the step 2.2.5</li>
+										<li>Repeat steps 2.2.1-2.2.6 one more time, but turn the “Notify on disconnect” switch on the step 2.2.5</li>
+										<li>Go to the A's recordings list and check that all the recordings are there, processed without errors and work as expected</li>
+									</ol>
+								</li>
+								<li>
+									Recordings + screen sharing: user enters the room after recording is started
+									<ol>
+										<li>Enter conference room by user A</li>
+										<li>Start screen sharing and recordings with default parameters by user A</li>
+										<li>Enter the room by user B, check that screen sharing is OK. Wait 5 minutes</li>
+										<li>Enter the room by user C, check that screen sharing is OK. Wait 5 minutes</li>
+										<li>Exit the room by user B; wait 3 minutes</li>
+										<li>Exit the room by user C; wait 3 minutes</li>
+										<li>Exit the room by user A</li>
+										<li>Repeat steps 2.3.1-2.3.7 3 times</li>
+										<li>Go to the recordings list for user A and check that all the recordings are OK and work as expected</li>
+									</ol>
+								</li>
+								<li>
+									Stress test
+									<ol>
+										<li>Enter the room by the users A, B, C, D and E</li>
+										<li>Open A, B, C, D and E videos</li>
+										<li>Start screen sharing and recordings session with high quality by user A</li>
+										<li>Wait 30 minutes</li>
+										<li>Stop screen sharing</li>
+										<li>Go to A's recordings list and check that created recording is OK</li>
+										<li>Repeat steps 2.3.1-2.3.6 3 times</li>
+									</ol>
+								</li>
+							</ol>
+						</li>
+					</ol>
+				</li>
+
+			</ol>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/MoodlePlugin.xml b/xdocs/MoodlePlugin.xml
new file mode 100644
index 0000000..d17375e
--- /dev/null
+++ b/xdocs/MoodlePlugin.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Moodle Plugin</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Moodle Plugin for OpenMeetings">
+			<p>
+				You can get the latest Version of the Plugin for Moodle from the
+				<a href="downloads.html">downloads</a>
+				.
+				<br/>
+				You can find the OpenMeetings Plugin also in the
+				<a href="http://moodle.org/plugins/view.php?plugin=mod_openmeetings"
+					target="_BLANK" rel="nofollow">Moodle Plugin database</a>
+				.
+				<br/>
+				A demo version of the Moodle plugin is available at
+				<a href="http://moodle.openmeetings.de" target="_BLANK" rel="nofollow">moodle.openmeetings.de
+				</a>
+				.
+			</p>
+		</section>
+		
+		<section name="Installation of the Moodle Plugin for Apache OpenMeetings">
+			<p>
+				You simply download the ZIP or TAR package and unzip it to Moodle's "mod" directory.<br/>
+				Eventually you need to unzip the package into a folder called "openmeetings".
+				The folder structure is:<br/>
+				$MOODLE_HOME/mod/openmeetings/*.php
+				<br />
+				Then you visit the admin interface of Moodle, for example
+				<a href="http://$your_moodle_host/$MOODLE_WWW_ROOT/admin" target="_BLANK"
+					rel="nofollow">http://$your_moodle_host/$MOODLE_WWW_ROOT/admin</a> 
+					<br/>
+				Moodle will detect that there is a new plugin and will show the plugin installation screen:
+			</p>
+			<a class="fancybox-buttons" href="images/moodle_install_plugin.png">
+				<img src="images/moodle_install_plugin.png" alt="" width="430"
+					height="220" />
+			</a>
+			<p>
+				After you have clicked on "Update database" Moodle will show you the plugin configuration screen:
+			</p>
+			<a class="fancybox-buttons" href="images/moodle_configure_plugin.png">
+				<img src="images/moodle_configure_plugin.png" alt="" width="500"
+					height="300" />
+			</a>
+		</section>
+		
+		<section name="Adding a new conference room to a Moodle course">
+			
+			<p>
+				After installation of the plugin you can go to the course pages in Moodle and turn editing on.
+				Then you choose the activity "OpenMeetings", Moodle will then show you the conference room 
+				configuration with all the options:
+			</p>
+			<a class="fancybox-buttons" href="images/moodle_add_activity_plugin.png">
+				<img src="images/moodle_add_activity_plugin.png" alt="" width="430"
+					height="360" />
+			</a>
+		</section>
+		
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/MySQLConfig.xml b/xdocs/MySQLConfig.xml
new file mode 100644
index 0000000..32cbb43
--- /dev/null
+++ b/xdocs/MySQLConfig.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>MySQL Configuration</title>
+		<author email="sebawagner@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="MySQL Configuration">
+
+			<subsection name="Before you start">
+				<ul>
+					<li>Make sure that you have set utf8 as
+						default/server-character-set in your MySQL configuration (my.cnf)
+						before you start the installation process of OpenMeetings!
+					</li>
+					<li>
+						make sure MySQL is listening on TCP/IP connections!
+						<br />
+						To verify if MySQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="Steps todo">
+				<ul>
+					<li>
+						You need to download the JConnector from mysql
+						<a href="http://www.mysql.com/downloads/connector/j/" target="_BLANK"
+							rel="nofollow">http://www.mysql.com/downloads/connector/j/</a>
+						and place it into:
+						<tt>$red5/webapps/openmeetings/WEB-INF/lib/</tt>
+					</li>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="MySQL Sample Configuration">
+				<p>
+					There is a sample configuration for MySQL that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml
+				</p>
+			</subsection>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/Navigation.xml b/xdocs/Navigation.xml
new file mode 100644
index 0000000..1fa5fa7
--- /dev/null
+++ b/xdocs/Navigation.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Change main navigation</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Changing the main navigation">
+
+			<p>To customize the main menu (for example remove entries or changing
+				the order) you can edit the tables:  </p>
+			<ul>
+				<li>navimain </li>
+				<li>naviglobal </li>
+				<li>navisub (currently not in use) </li>
+			</ul>
+			<p></p>
+			<p>
+				You need to make sure that you
+				<strong>restart red5 after doing changes to the database</strong>
+				, there is a database cache, so changes might not take affect as
+				long as you did not restart.
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/OpenOfficeConverter.xml b/xdocs/OpenOfficeConverter.xml
new file mode 100644
index 0000000..f762870
--- /dev/null
+++ b/xdocs/OpenOfficeConverter.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>OpenOffice converter for OpenMeetings</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="OpenOffice Service for OpenMeetings">
+
+			<p>
+				To import .doc, .docx, .odp, .xls, .xlsx, .ppt, .pptx, ... [ all
+				files that you can open with OpenOffice ]
+				to OpenMeetings and use
+				them in the whiteboard you need OpenOffice or LibreOffice
+				installed
+				the machine that runs OpenMeetings.
+			</p>
+			<p>
+				<i>Since Version 2.0 of OpenMeetings starting of
+					OpenOffice/LibreOffice as service in not required, JODConverter
+					will automatically start and shut down the service!
+				</i>
+			</p>
+			<p>
+				Installation of JODConverter means: You donwload the ZIP binary from
+				their
+				<a href="http://code.google.com/p/jodconverter/" target="_BLANK"
+					rel="nofollow">website</a>
+				and then configure in Apache OpenMeetings Administration >
+				Configuration (or during installation) the config key
+				<tt>jod.path</tt>
+				to point to the "lib" directory of the unpacked JODConverter binary.
+				There is no restart of OpenMeetings required.
+			</p>
+			<p>You should use an OpenOffice version greater 3</p>
+
+		</section>
+
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/OracleConfig.xml b/xdocs/OracleConfig.xml
new file mode 100644
index 0000000..8a4b0ad
--- /dev/null
+++ b/xdocs/OracleConfig.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>IBM DB2 Configuration</title>
+		<author email="sebawagner@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="IBM DB2 Configuration">
+
+			<subsection name="Before you start">
+				<ul>
+					<li>Download the latest JDBC Driver from Oracle for your database
+						version. Place those JARs into
+						$Red5/webapps/openmeetings/WEB-INF/lib
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="Steps todo">
+				<ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml connectionURL, username and
+						password with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="Oracle Sample Configuration">
+				<p>
+					There is a sample configuration for Oracle that ships with
+					every release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/oracle_persistence.xml
+				</p>
+			</subsection>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/PortSettings.xml b/xdocs/PortSettings.xml
new file mode 100644
index 0000000..07717ae
--- /dev/null
+++ b/xdocs/PortSettings.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Port settings</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Default Configuration">
+
+			<ul>
+				<li>Port 5080: HTTP (For example for file upload and download) </li>
+				<li>Port 1935: RTMP (Flash Stream and Remoting/RPC) </li>
+				<li>Port 8088: RTMP over HTTP-Tunneling (rtmpT) </li>
+			</ul>
+			<p>Additionally red5 uses some ports internally. However those ports
+				are not in use by OpenMeetings by default.
+			</p>
+
+		</section>
+
+		<section name="Configure alternative ports">
+
+			<p>You need to change two files: </p>
+			<ul>
+				<li>Server-Side configuration: $RED5_HOME/conf/red5.properties, you
+					need to restart the red5-service so that changes are online.
+				</li>
+				<li>Client-Side configuration:
+					$RED5_HOME/webapps/openmeetings/public/config.xml, you need to clear your
+					browser cache after changing the file.
+				</li>
+				<li>
+					<blockquote>Every server side configuration has a client side
+						representative
+					</blockquote>
+				</li>
+			</ul>
+			<p></p>
+			<table>
+				<tr>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Config-Name </th>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Default-value </th>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in red5.properties </th>
+					<th style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> Name in public/config.xml </th>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> HTTP </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 5080 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> http.port </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> red5httpport </td>
+				</tr>
+				<tr>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> RTMP </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> 1935 </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmp.port </td>
+					<td style="border: 1px solid rgb(204, 204, 204); padding: 5px;"> rtmpport </td>
+				</tr>
+			</table>
+
+		</section>
+
+		<section name="Preventing Firewall issues">
+
+			<p>A common way of bypassing the firewall is to change HTTP port to
+				80 and rtmpT to 443.
+			</p>
+			<p>A short description about the connection mechanism: The
+				application first tries connecting to rtmp 3 times, because rtmp is
+				the protocol that is less performance hungry. If that fails the
+				application will fallback to rtmpT.
+			</p>
+			<p>Most firewalls do allow traffic on port 443 and they normally do
+				not analyse the packets, because 443 is normally SSL encrypted, so
+				the firewall should not be able to read the packets at all.
+			</p>
+
+		</section>
+
+		<section name="OpenMeetings over SSL">
+
+			<p>
+				You can run OpenMeetings completely over SSL. See
+				<a href="RTMPSAndHTTPS.html">RTMPSAndHTTPS</a>
+				.
+			</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/PostgresConfig.xml b/xdocs/PostgresConfig.xml
new file mode 100644
index 0000000..c1fd27c
--- /dev/null
+++ b/xdocs/PostgresConfig.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>PostgreSQL Configuration</title>
+		<author email="sebawagner@apache.org">
+			Apache OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="PostgreSQL Configuration">
+
+			<subsection name="Before you start">
+				<ul>
+					<li>Make sure that you have set utf8 as default/server-character-set 
+					</li>
+					<li>
+						make sure PostgreSQL is listening on TCP/IP connections!
+						<br />
+						To verify if PostgreSQL connection is working: OpenMeetings will
+						automatically create all tables in the database and all tables
+						should have utf8 as encoding/collation!
+					</li>
+					<li>If you encounter issues, you can drop the db again and delete
+						the file $red5/webapps/openmeetings/conf/install.xml and then run
+						the web based installer again
+					</li>
+					<li><span style="font-size: larger; color: blue;">IMPORTANT</span> According to
+						<a href="http://markmail.org/message/opymlab2e6wygb7p">this</a> thread you need to ensure:<br/>
+						<tt>standard_conforming_strings</tt> is set to <tt><b>on</b></tt> and <br/>
+						<tt>escape_string_warning</tt> is set to <tt><b>off</b></tt>
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="Steps todo">
+				<ul>
+					<li>
+						Rename:
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
+						<br />
+						to
+						<br />
+						$red5/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+					</li>
+					<li>
+						Prepare Database Settings - go to
+						openmeetings_version_no_xx/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml
+						<br />
+						Alter config values in persistence.xml DB_HOST USER_NAME USER_PASS
+						with your values
+					</li>
+					<li>
+						Run red5-service and goto the web-based installer:
+						http://localhost:5080/openmeetings/install
+					</li>
+				</ul>
+			</subsection>
+
+			<subsection name="PostgreSQL Sample Configuration">
+				<p>
+					There is a sample configuration for PostgreSQL that ships with
+					every
+					release in:
+					<br />
+					/webapps/openmeetings/WEB-INF/classes/META-INF/postgresql_persistence.xml
+				</p>
+			</subsection>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/RTMPSAndHTTPS.xml b/xdocs/RTMPSAndHTTPS.xml
new file mode 100644
index 0000000..9d613f9
--- /dev/null
+++ b/xdocs/RTMPSAndHTTPS.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Using OpenMeetings with RTMPS and HTTPS</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Using OpenMeetings with RTMPS and HTTPS">
+
+			<p>There are 3 ways the client communicates with the server: </p>
+			<ul>
+				<li>The flash-client uses RTMP protocol to transfer Audio/Video and
+					to send and receive the user data (login et cetera) to the server
+					and back
+				</li>
+				<li>The browser uses HTTP protocol to load the SWF and to upload and
+					download the files (documents, pdfs, images) to the server and
+					back.
+				</li>
+				<li>The screensharing client uses RTMP protocol to transfer screen
+					data and remote control to the server and back
+				</li>
+			</ul>
+
+		</section>
+
+		<section name="Prerequisites">
+
+			<ul>
+				<li>You need OpenMeetings 1.9.x for this, OpenMeetings 1.8.x does
+					not
+					have those options.
+				</li>
+				<li>Install OpenMeetings according to the install instructions and
+					check that it runs without problems
+				</li>
+				<li>Rename the existing keystore file red5/conf/keystore to
+					keystore.bak
+				</li>
+			</ul>
+
+		</section>
+
+		<section name="Configuring RTMPS for the Flash Client">
+
+			<ol>
+				<li>
+					Create a new keystore and key, use the same password for both:<br/>
+					(copied from
+					<a
+						href="http://trac.red5.org/wiki/Documentation/Tutorials/Red5DeveloperTips/SSLTLS%29:"
+						rel="nofollow">http://trac.red5.org/wiki/Documentation/Tutorials/Red5DeveloperTips/SSLTLS):</a>
+					<div class="xmlcode">
+						keytool -keysize 2048 -genkey -alias red5 -keyalg RSA -keystore red5/conf/keystore<br/>
+						Enter keystore password:<br/>
+						Re-enter new password:<br/>
+						What is your first and last name?<br/>
+						[Unknown]:  &lt;your hostname, e.g demo.openmeetings.de&gt;<br/>
+						What is the name of your organizational unit?<br/>
+						[Unknown]:  Dev<br/>
+						What is the name of your organization?<br/>
+						[Unknown]:  OpenMeetings<br/>
+						What is the name of your City or Locality?<br/>
+						[Unknown]:  Henderson<br/>
+						What is the name of your State or Province?<br/>
+						[Unknown]:  Nevada<br/>
+						What is the two-letter country code for this unit?<br/>
+						[Unknown]:  US<br/>
+						Is CN=demo.openmeetings.de, OU=Dev, O=OpenMeetings, L=Henderson, ST=Nevada, C=US correct?<br/>
+						[no]:  yes<br/>
+						Enter key password for &lt;red5&gt;<br/>
+					</div>
+				</li>
+		
+				<li>Generate a CSR: keytool -certreq -keyalg RSA -alias red5 -file
+					red5.csr -keystore red5/conf/keystore
+				</li>
+				<li>Submit CSR to your CA of choice and receive a signed certificate
+				</li>
+				<li>Import your chosen CA's root certificate into the keystore (may
+					need to download it from their site - make sure to get the root CA and
+					not the intermediate one): keytool -import -alias root -keystore
+					red5/conf/keystore
+					-trustcacerts -file root.crt (note: you may receive a warning that
+					the certificate already exists in the system wide keystore - import
+					anyway)
+				</li>
+				<li>Import the intermediate certificate(s) you normally receive with
+					the certificate:
+					keytool -import -alias intermed -keystore red5/conf/keystore -trustcacerts
+					-file intermediate.crt
+				</li>
+				<li>Import the certificate you received: keytool -import -alias red5
+					-keystore red5/conf/keystore -trustcacerts -file
+					demo.openmeetings.de.crt
+				</li>
+                <li>
+                Create additional certificate as described above.
+                Add this certificate to the following keystores: <tt>red5/conf/keystore.screen</tt> and <tt>red5/conf/keystore</tt>.
+                </li>
+			</ol>
+
+		</section>
+		
+		<section name="Set up RTMPS">
+		
+		  <ol>
+		      <li>
+		      Uncomment <tt>&lt;!-- RTMPS --&gt;</tt> section in <tt>red5/conf/red5-core.xml</tt>
+		      </li>
+
+				<li>
+					Edit <tt>red5/conf/red5.properties</tt> and set
+					<tt>rtmps.port=5443</tt>
+					and
+					<tt>rtmps.keystorepass=password</tt>
+					(password = password you set on your new
+					keystore)
+				</li>
+			
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>&lt;rtmpsslport&gt;5443&lt;/rtmpsslport&gt;</tt>
+					,
+					<tt>&lt;useSSL&gt;yes&lt;/useSSL&gt;</tt>
+					and
+					<tt>&lt;proxyType&gt;best&lt;/proxyType&gt;</tt>
+				</li>
+
+				<li>Restart red5 and try to connect - your connection should now be
+					made via RTMPS (close port 1935 to be sure)
+				</li>   
+					  
+		  </ol>
+		
+		</section>
+
+		<section name="SSL for the web interface">
+	
+			<p>If you want to use SSL for the web interface in addition to RTMPS,
+				you need to make some further modifications. This is mainly to secure
+				the server against MITM attacks, additionally some other features
+				like file uploads also use a plain HTTP connection if this is not
+				done. The following instructions assume that you have already set up
+				RTMPS successfully. </p>
+			<ol>
+				<li>
+					Edit <tt>red5/conf/jee-container.xml</tt> file:<br/>
+					Comment <tt>Tomcat without SSL enabled</tt> section<br/>
+					UNComment <tt>Tomcat with SSL enabled</tt> section
+				</li>
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>&lt;protocol&gt;https&lt;/protocol&gt;</tt>
+				</li>
+				<li>
+					Edit red5/webapps/openmeetings/public/config.xml and set
+					<tt>red5httpport</tt> to <tt>https</tt> port
+				</li>
+				<li>In webapps/openmeetings/WEB-INF/conf/axis2.xml add (below the existing http transportReceiver (around line 225))
+					<div class="xmlcode">&lt;transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener"&gt;<br/>
+    &#160;&#160;&#160;&#160;&lt;parameter name="port"&gt;443&lt;/parameter&gt;<br/>
+&lt;/transportReceiver&gt;</div>
+				</li>
+				<li>Edit red5/conf/red5.properties and set <tt>https.port=443</tt> </li>
+				<li>
+					Restart red5 and try to connect to
+					<a href="https://your.server" rel="nofollow">https://your.server</a>
+					- you should be redirected to the OpenMeetings
+					app and all access should be via HTTPS or RTMPS (close port 5080 to
+					be sure).
+				</li>
+            </ol>
+            
+	   </section>
+
+		<section name="Credits">
+	
+			<p>Credits goto: Nexus and Holger Rabbach for their help and
+				contribution and configuration documention! </p>
+	
+		</section>
+	
+
+	</body>
+
+</document>
+
diff --git a/xdocs/RecommendedHardwareList.xml b/xdocs/RecommendedHardwareList.xml
new file mode 100644
index 0000000..c5187e0
--- /dev/null
+++ b/xdocs/RecommendedHardwareList.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="Cameras">
+			We recommend the following cameras:
+			<ul>
+				<li>Logitech QuickCam Sphere AF</li>
+				<li>Logitech QuickCam E3500</li>
+				<li>Samsung Pleomax PWC-7100</li>
+				<li>Genius Look320S</li>
+				<li>Integrated Lenovo 3000 n100</li>
+				<li>Skypemate WC-103M</li>
+			</ul>
+		</section>
+		<section name="Headsets">
+			The recommended headset model (i.e. headphones with microphone) is:
+			<ul>
+				<li>Logitech Clear Chat Style</li>
+			</ul>
+			Also the following headsets showed good results:
+			<ul>
+				<li>ClearChat PC Wireless (helps to suppress echo)</li>
+				<li>Logitech USB Desktop Microphone - Mikrophon (good sound, but bad echo cancellation)</li>
+			</ul>
+			<b>Note for Mac OS X users:</b> The build-in microphone normally has quite good quality and echo cancellation, so Mac OS X users often do not even require a headset.
+		</section>
+		<section name="Speakerphones">
+			When several people participate from the same location, we recommend using the following speakerphone models:
+			<ul>
+				<li>Phoenix Audio Quattro2 USB Speakerphone MT301 (a single microphone + speakers can be used even with 20-30 people sitting in a room)</li>
+				<li>Phoenix DUET Executive</li>
+				<li>Jabra SPEAK410</li>
+				<li>Plantronics MCD 100M</li>
+				<li>Integrated Lenovo 3000 n100</li>
+				<li>Konftel 300</li>
+			</ul>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/RedminePlugin.xml b/xdocs/RedminePlugin.xml
new file mode 100644
index 0000000..de773ff
--- /dev/null
+++ b/xdocs/RedminePlugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>Redmine Plugin</title>
+		<author email="solomax@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+	<body>
+		<section name="OpenMeetings Plugin for Redmine">
+			<p>
+				Current Development Snapshots for testing can be created from the sources:
+				<a href="https://svn.codespot.com/a/apache-extras.org/openmeetings-redmine-plugin/trunk">here</a>.<br/>
+				The page at redmine site is <a href="http://www.redmine.org/plugins/redmine-openmeetings">here</a>
+			</p>			
+		</section>
+		<section name="Features">
+			<p>TBD</p>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/ReleaseGuide.xml b/xdocs/ReleaseGuide.xml
new file mode 100644
index 0000000..c1b12fc
--- /dev/null
+++ b/xdocs/ReleaseGuide.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Release Guide</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="How to Build a Release of OpenMeetings">
+
+			<subsection name="Required tools">
+
+				<div>
+					<p>To build a binary release of OpenMeetings you need: </p>
+					<ul>
+						<li>Sun JDK6</li>
+						<li>Apache ANT (minimum) 1.8.3</li>
+						<li>
+							SVN Command line client (Subversion 1.7 required!)
+							<a href="http://subversion.apache.org/packages.html" target="_BLANK"
+								rel="nofollow">http://subversion.apache.org/packages.html</a>
+						</li>
+						<li>A text editor</li>
+						<li>You need to be online! The build process actively downloads
+							needed libraries and dependencies.
+						</li>
+					</ul>
+				</div>
+
+			</subsection>
+
+			<subsection name="Prepare your Apache ID">
+
+				<div>
+					Every release package must be signed with a PGP/GPG key.
+					<br />
+					So if you want to release a package your Apache Id must be
+					connected with a PGP key!
+					<br />
+					<br />
+					You might follow:
+					<br />
+					<a
+						href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp"
+						target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
+					</a>
+					<br />
+					<br />
+					In short:
+					<br />
+					Create PGP key pairs (private + public) (and I recommend creating a
+					Revoke Cert)
+					<br />
+					Upload the public key (either bei using the PGP Tool that you use
+					to create the key) or by using the web form to:
+					<a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/
+					</a>
+					<br />
+					Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
+					4413 09AB 0055 16BF 93A3 0395") to your profile at
+					<a href="http://id.apche-org" target="_blank" rel="nofollow">id.apche-org
+					</a>
+					<br />
+					Wait for 6-8 hours, the server will search for a public key based
+					on your fingerprint, if success it will create a file with your
+					name at:
+					<br />
+					<a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
+					<br />
+					<br />
+					If that is "success" then add your key to:
+					<br />
+					<a
+						href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">https://svn.apache.org/repos/asf/openmeetings/project/KEYS
+					</a>
+					<br />
+					and follow the instructions in the file.
+					<br />
+				</div>
+
+			</subsection>
+
+			<subsection name="Step1 - Prepare files">
+				<p>
+					Check that all files:
+					<br />
+					LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README
+					<br />
+					are up to date and refer to the right version.
+				</p>
+
+				<p>
+					Create a TAG of the SVN tree that you would like to release<br/>
+					Example:
+				</p>
+				
+				<div class="xmlcode">
+					svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp \<br/>
+						https://svn.apache.org/repos/asf/openmeetings/tags/2.1RC1 \<br/>
+						-m "Release candidate 1"
+				</div>
+				
+
+				<p>Get the source from your TAG: </p>
+				<div class="xmlcode">
+					svn checkout https://svn.apache.org/repos/asf/openmeetings/tags/$BRANCHORTAG/<br />
+					$BRANCHORTAG should be replaced with your new TAG
+				</div>
+
+				<p>Edit the file build.properties change</p>
+				<div class="xmlcode">
+					project.status=SNAPSHOT
+				</div>
+				<p>to</p>
+				<div class="xmlcode">
+					project.status=RELEASE
+				</div>
+				<p>Run the command: </p>
+				<div class="xmlcode">
+					ant dist-release
+				</div>
+				<p>Test building the source on windows and OSx or Linux</p>
+				<p>Test running the binary's</p>
+				<p>Create MD5 checksums</p>
+				<div class="xmlcode">
+					#On OSX you might use this command to make a MD5 checksum and store it to a file<br />
+					md5 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.md5
+				</div>
+				<div class="xmlcode">
+					#To create MD5 hashes On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do md5sum $f > $f.md5; done<br/>
+					<br/>
+					#To check MD5 hashes On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do md5sum -c $f.md5; done
+				</div>
+				<p>
+					Create signatures with the your KEY for every file, the KEY must be available at:<br />
+					<a href="http://www.apache.org/dist/incubator/openmeetings/KEYS">
+						http://www.apache.org/dist/incubator/openmeetings/KEYS
+					</a>
+				</p>
+				<div class="xmlcode">
+					#To create signatures On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done<br/>
+					<br/>
+					#To check signatures On Ubuntu:<br />
+					for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
+				</div>
+				
+				<p>
+					Commit artifacts you have created with KEYS file to the
+					<tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
+					Proposed file structure for "Release Candidate 1" of 2.1 will be:
+				</p>
+				<div class="xmlcode">
+					2.1<br />
+					2.1/rc1<br />
+					2.1/rc1/src<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.md5<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.asc<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.md5<br />
+					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.asc<br />
+					2.1/rc1/bin<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.md5<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.asc<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.md5<br />
+					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.asc<br />
+					2.1/rc1/CHANGELOG<br />
+					2.1/rc1/KEYS<br />
+				</div>
+			</subsection>
+
+			<subsection name="Step2 - VOTE and RESULT emails">
+				<p>
+					Send a "VOTE" to the developer mailing list including links to release artefacts.<br />
+					A VOTE always contains two parts:<br />
+					Send an email to the developer mailing list with the subject line:<br />
+					[VOTE] Apache OpenMeetings x.xx release<br />
+					An example for such an email:
+					<a href="http://s.apache.org/vote-2.1.0RC1">example Vote email</a>
+					<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
+					<br />
+					Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
+					<br />
+					After the vote is over, send a "RESULT" email to the list with the subject line:<br />
+					[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
+					An example for such an email:
+					<a
+						href="http://mail-archives.apache.org/mod_mbox/incubator-openmeetings-dev/201207.mbox/%3CCACeMiA-ibo6fGCbnLjJX9H5H2kFGDVJRMfxPyMtzWzCWNi%2BpOg%40mail.gmail.com%3E">example Result email</a>
+					<br />
+					Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
+					<br />
+					Votes on whether a package is ready to be released use majority approval -- i.e., at 
+					least three PMC members must vote affirmatively for release, and there must be more 
+					positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
+					are required to download the signed source code package, compile it as provided, and 
+					test the resulting executable on their own platform, along with also verifying that 
+					the package meets the requirements of the ASF policy on releases.
+				</p>
+			</subsection>
+
+			<subsection name="Step3 - Distribute and announce">
+				<p>If VOTEs positive: Upload the release </p>
+				<div class="xmlcode">
+					svn mv https://dist.apache.org/repos/dist/dev/openmeetings/2.1/rc3 \<br/>
+						https://dist.apache.org/repos/dist/release/openmeetings/2.1 \<br/>
+						-m "RC3 is released as 2.1"
+				</div>
+				<p>
+					Wait 24 hours (until all Apache mirrors have synced the packages)
+					and send an announcement to the mailing list + blog and any other
+					channel.
+				</p>
+				<p>
+					Email announcements should have the subject line:
+					<br />
+					[ANNOUNCE] Apache OpenMeetings x.xx released
+				</p>
+				<p>
+					Add a section to <a href="downloads.html">downloads</a> website.<br />
+					Make sure that the binary packages are linked using the mirror URL as base path (
+					<b>not</b> http://www.apache.org/dist):<br />
+					Mirror URL: 
+					<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/">http://www.apache.org/dyn/closer.cgi/openmeetings/</a>
+				</p>
+				<p>
+					Release candidates should be deleted from <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt><br/>
+					Old releases should be deleted from <tt>https://dist.apache.org/repos/dist/release/openmeetings/</tt>
+				</p>
+			</subsection>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/RestAPISample.xml b/xdocs/RestAPISample.xml
new file mode 100644
index 0000000..ea79010
--- /dev/null
+++ b/xdocs/RestAPISample.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Introduction">
+
+			<p> For a detailed instruction which services, methods and params are available see the list in the SoapMethods. ALL methods that are implemented for the SOAP API are also available via REST. 
+			</p>
+
+		</section>
+		
+		<section name="How to invoke Services via REST">
+
+			<p>For example for the method getSession in the UserService, you would use this URL via REST:
+			</p>
+			<p>Sample URL: </p><a href="http://demo.openmeetings.de/openmeetings/services/UserService/getSession">http://demo.openmeetings.de/openmeetings/services/UserService/getSession</a>
+			<p>Result: </p>
+			<div class="xmlcode">
+				&lt;ns:getSessionResponse/&gt;<br/>
+				&lt;ns:return type="org.apache.openmeetings.hibernate.beans.basic.Sessiondata"/&gt;<br/>
+				<div style="margin-left:20px">
+					&lt;ax219:id&#62;156971&lt;/ax219:id/&gt;<br/>
+					&lt;ax219:language_id xsi:nil="true"//&gt;<br/>
+					&lt;ax219:organization_id xsi:nil="true"//&gt;<br/>
+					&lt;ax219:refresh_time&#62;2011-07-03T14:40:44.000Z&lt;/ax219:refresh_time/&gt;<br/>
+					&lt;ax219:sessionXml xsi:nil="true"//&gt;<br/>
+					&lt;ax219:session_id&#62;26584705202d7c1de6cc8e7e28890e3d&lt;/ax219:session_id/&gt;<br/>
+					&lt;ax219:starttermin_time&#62;2011-07-03T14:40:44.000Z&lt;/ax219:starttermin_time/&gt;<br/>
+					&lt;ax219:storePermanent xsi:nil="true"//&gt;<br/>
+					&lt;ax219:user_id xsi:nil="true"//&gt;<br/>
+				</div>
+				&lt;/ns:return/&gt;<br/>
+				&lt;/ns:getSessionResponse/&gt;<br/>
+			</div>
+			<p>To login a user the call to auth would be:</p>
+			<p>Sample URL: </p><a href="http://demo.openmeetings.de/openmeetings/services/UserService/loginUser?SID=26584705202d7c1de6cc8e7e28890e3d&#38;username=hans&#38;userpass=test">http://demo.openmeetings.de/openmeetings/services/UserService/loginUser?SID=26584705202d7c1de6cc8e7e28890e3d&#38;username=han&#38;userpass=test</a>
+			<p>Result: </p>
+			<div class="xmlcode">
+				&lt;ns:loginUserResponse/&gt;<br/>
+				<div style="margin-left:20px">
+				    &lt;ns:return&#62;-11&lt;/ns:return/&gt;<br/>
+				</div>
+				&lt;/ns:loginUserResponse/&gt;<br/>
+			</div>
+			<p>=> It does return -10, which is the error id cause we will not write down a SOAP login to our public server in this wiki. However the correct way to check this error would be to invoke the call to get the localized error message. So we invoke the method to get the error via REST:</p>
+			<p>Sample URL: </p><a href="http://demo.openmeetings.de/openmeetings/services/UserService/getErrorByCode?SID=26584705202d7c1de6cc8e7e28890e3d&#38;errorid=-10&#38;language_id=1">http://demo.openmeetings.de/openmeetings/services/UserService/getErrorByCode?SID=26584705202d7c1de6cc8e7e28890e3d&#38;errorid=-10&#38;language_id=1</a>
+			<p>Result:</p>
+			<div class="xmlcode">
+				&lt;ns:getErrorByCodeResponse/&gt;<br/>
+				&lt;ns:return type="org.apache.openmeetings.db.dto.basic.ErrorResult"/&gt;<br/>
+				<div style="margin-left:20px">
+					&lt;ax218:errmessage&#62;Username not found&lt;/ax218:errmessage/&gt;<br/>
+					&lt;ax218:errorId&#62;-10&lt;/ax218:errorId/&gt;<br/>
+					&lt;ax218:errortype&#62;Error&lt;/ax218:errortype/&gt;<br/>
+				</div>
+				&lt;/ns:return/&gt;<br/>
+				&lt;/ns:getErrorByCodeResponse/&gt;<br/>
+			</div>
+		</section>
+
+
+
+	</body>
+</document>
\ No newline at end of file
diff --git a/xdocs/RestrictedAccess.xml b/xdocs/RestrictedAccess.xml
new file mode 100644
index 0000000..f2f9ead
--- /dev/null
+++ b/xdocs/RestrictedAccess.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>How to restrict access to your Openmeetings server</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+	
+		<section name="Server Side">
+	
+			<p>You can protect your OpenMeetings instance from beeing accessed
+				from 3th party by using the file:
+			</p>
+			<p>$RED5_HOME/webapps/openmeetings/WEB-INF/red5-web.properties </p>
+			<p>Content: </p>
+			<div class="xmlcode">
+				webapp.virtualHosts=*,localhost, 127.0.0.1
+			</div>
+			Sample file:
+			<a
+				href="http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/red5-web.properties"
+				rel="nofollow">http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/WEB-INF/red5-web.properties
+			</a>
+		</section>
+
+		<section name="Client Side">
+
+			<p>And you can restrict the access also for the client side: Every
+				Flash Plugin will check a file called "crossdomain.xml" before it
+				tries to access the server using rtmp/RPC. This file is located: </p>
+			<p>$RED5_HOME/webapps/root/crossdomain.xml </p>
+			<p>Content: </p>
+			<div class="xmlcode">
+				&lt;?xml version="1.0"?&gt;<br/>
+				&lt;cross-domain-policy&gt;<br/>
+				        &lt;site-control permitted-cross-domain-policies="all"/&gt;<br/>
+				        &lt;allow-access-from domain="localhost" to-ports="20-65535"/&gt;<br/>
+				        &lt;allow-access-from domain="*.local" to-ports="20-65535"/&gt;<br/>
+				&lt;/cross-domain-policy&gt;<br/>
+			</div>
+			
+            <p>
+				Sample file:
+				<a
+					href="http://code.google.com/p/red5/source/browse/java/server/trunk/webapps/root/crossdomain.xml"
+					rel="nofollow">http://code.google.com/p/red5/source/browse/java/server/trunk/webapps/root/crossdomain.xml
+				</a>
+			</p>
+				<p>
+					If you accessing your application behind an Apache Webservre (using
+					mod_proxy or mod_jk2) be careful to make the crossdomain.xml
+					accessible. Flash will always search for this file in the www-root
+					directory of every URL you connect to. You might use
+					<a href="https://addons.mozilla.org/de/firefox/addon/firebug/" rel="nofollow">FireBug
+					</a>
+					for example to lookup requests.
+				</p>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/SakaiPlugin.xml b/xdocs/SakaiPlugin.xml
new file mode 100644
index 0000000..73439a5
--- /dev/null
+++ b/xdocs/SakaiPlugin.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Sakai Plugin</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Introduction">
+			<p>
+				In 2010,
+				<a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company
+				</a>
+				has developed a plugin that integrates Sakai LMS and OpenMeetings
+				.
+			</p>
+			<p>
+				The plugin was developed for some Spanish Universities that use
+				Sakai and belongs to
+				<a rel="nofollow" target="_blank" 
+					href="https://confluence.sakaiproject.org/display/SPANISH/S2G+-+Spanish+Sakai+Group">"Spanish Sakai Universities"</a>
+				group:
+			</p>
+			<ul>
+				<li>
+					<a rel="nofollow" href="http://www.udl.es/" target="_blank">Universitat de Lleida </a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.upv.es/" target="_blank">Universidad Polit&#233;cnica de Valencia </a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.um.es/" target="_blank">Universidad de Murcia</a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.unavarra.es/" target="_blank">Universidad P&#250;blica de Navarra</a>
+				</li>
+				<li>
+					<a rel="nofollow" href="http://www.ucam.edu/" target="_blank">Universidad Cat&#243;lica San Antonio de Murcia
+					</a>
+				</li>
+			</ul>
+		</section>
+
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Create videoconference rooms through Sakai: </li>
+				<li>
+					<ol>
+						<li>Integrated with calendar </li>
+						<li>Integrated with announcements </li>
+						<li>Sends an email to all site participants </li>
+						<li>Rooms restricted to site groups </li>
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>
+			<p />
+			<ul>
+				<li>Future requirements </li>
+				<li>
+					<ol>
+						<li>Publish room recordings to students </li>
+						<li>Room reservation </li>
+					</ol>
+				</li>
+			</ul>
+		</section>
+
+		<section name="Source">
+			<p>
+				You can download and build the source code
+				<a rel="nofollow" target="_blank" 
+					href="https://source.sakaiproject.org/contrib/samoo/adobeconnectpro-openmeetings-integration/trunk/">here</a>
+			</p>
+		</section>
+
+		<section name="Installation and documentation">
+			<p>
+				The documentation resides in the
+				<a rel="nofollow" target="_blank" href="https://confluence.sakaiproject.org/display/OPENMTG/Home">Sakai confluence space</a>
+			</p>
+			<p>
+				Please contact the mailing list for further information. For
+				commercial support you can also contact
+				<a rel="nofollow" href="http://www.samoo.es" target="_blank">Samoo company</a>
+				or other companies from the list of
+				<a href="commercial-support.html">commercial support</a>
+				.
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/SoapRestAPI.xml b/xdocs/SoapRestAPI.xml
new file mode 100644
index 0000000..db9ba39
--- /dev/null
+++ b/xdocs/SoapRestAPI.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Available WebServices">
+
+			<div>
+				<div>
+					<a href="UserService.html" target="_BLANK">
+						<b>UserService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods to login and create hash to
+							directly enter
+							conference rooms, recordings or the application in
+							general
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="RoomService.html" target="_BLANK">
+						<b>RoomService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>RoomService contains methods to manipulate rooms and create
+							invitation hash
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="FileService.html" target="_BLANK">
+						<b>FileService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>Contains methods to import and upload files into the Files
+							section of the
+							conference room and the personal drive of any user
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="CalendarService.html" target="_BLANK">
+						<b>CalendarService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>CalendarService contains methods to create, edit delete
+							calendar meetings
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="JabberService.html" target="_BLANK">
+						<b>JabberService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods necessary for OM to Jabber integration.
+						All methods doesn't require admin privileges to get called.
+						</i>
+					</div>
+				</div>
+				<div>
+					<a href="ServerService.html" target="_BLANK">
+						<b>ServerService</b>
+					</a>
+					<br />
+					<div style="margin-left:20px">
+						<i>The Service contains methods necessary for OM to manage servers 
+						participating in cluster.
+						All methods does require admin privileges to get called.
+						</i>
+					</div>
+				</div>
+			</div>
+
+		</section>
+
+
+	</body>
+</document>
\ No newline at end of file
diff --git a/xdocs/SugarCRMPlugin.xml b/xdocs/SugarCRMPlugin.xml
new file mode 100644
index 0000000..e3f8069
--- /dev/null
+++ b/xdocs/SugarCRMPlugin.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>SugarCRM Plugin</title>
+		<author email="eschwert@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="SugarCRM Plugin for OpenMeetings">
+			<p>
+				You can get the latest Version of the Plugin for SugarCRM from the
+				<a href="downloads.html">downloads</a>
+				.
+			</p>
+			<p>
+				You can find the OpenMeetings Plugin also in the
+				<a href="http://www.sugarforge.org/projects/openmeetings/"
+					target="_BLANK" rel="nofollow">SugarCRM Plugin database</a>
+				.
+			</p>
+			<p>
+				A demo version of the SugarCRM plugin is available at
+				<a href="http://demo.e-schwert.de/sugarcrm/" target="_BLANK" rel="nofollow">demo.e-schwert.de</a>
+				. Username: demo Password: Demouser55 
+			</p>
+		</section>
+		
+		<section name="Features">
+			<p>The plugin contains the following features: </p>
+			<ul>
+				<li>Create videoconference rooms through SugarCRM: </li>
+				<li>
+					<ol>
+						<li>Integrated with calendar </li>
+						<li>Integrated with SugarCRM meetings </li>
+						<li>Sends invetations emails to meeting participants </li>					
+						<li>Configurable room type </li>
+					</ol>
+				</li>
+			</ul>			
+		</section>
+
+		<section name="Installation the SugarCRM Plugin for OpenMeetings">			
+			<p>In SugarCRM's administration web-interface you will find the
+				module loader.
+			</p>
+			<a class="fancybox-buttons" href="images/moodle_plugin_conference.png">
+				<img src="images/SugarCRM_Installation.png" alt="" width="640"
+					height="320" />
+			</a>
+			<ol>
+				<li>Upload the module with module loader in administration area. </li>
+				<li>Configure OpenMeetings settings. </li>
+				<li>Create OpenMeetings rooms. </li>				
+			</ol>
+		</section>
+		
+		<section name="Demo video">			
+			<p>The demo video of SugarCRM plugin show you the plugin in action </p>              
+		      <object style="height: 390px; width: 640px">
+			      <param name="movie" value="http://www.youtube.com/v/xrDbcXqxDq8?version=3&amp;feature=player_detailpage"/>
+			      <param name="allowFullScreen" value="true"/>
+			      <param name="allowScriptAccess" value="always"/>
+			      <embed src="http://www.youtube.com/v/xrDbcXqxDq8?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"/>
+		      </object> 
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/TimeZoneHandling.xml b/xdocs/TimeZoneHandling.xml
new file mode 100644
index 0000000..e78e560
--- /dev/null
+++ b/xdocs/TimeZoneHandling.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Timezones</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Introduction">
+			<p>
+				List of default Timezones:
+				<a
+					href="http://openmeetings.googlecode.com/svn/trunk/singlewebapp/src/main/webapp/languages/timezones.xml"
+					rel="nofollow">http://openmeetings.googlecode.com/svn/trunk/singlewebapp/src/main/webapp/languages/timezones.xml
+				</a>
+			</p>
+			<p>
+				To add a new Time Zone you have to lookup its represant in Java's
+				Timezone registry. You can then add freely new time zones to the XML
+				file. The XML entries are imported into the database into the table
+				<strong>om_timezone</strong>
+				during the installation of OpenMeetings. (Don't forget to stop the
+				server before you change anything in the database).
+			</p>
+			<p>
+				The Servers default timezone is stored in the configuration table in
+				the attribute
+				<strong>default.timezone</strong>
+				. The name in this value links to an attribute in the table
+				om_timezone in the column
+				<strong>jname</strong>
+				.
+			</p>
+			<p>
+				You can set a Flag
+				<strong>forceTimeZoneCheck</strong>
+				for each user that gives him a Pop-Up notification to change his
+				time zone. The Flag can be changed in the user administration of
+				OpenMeetings. This can be handy if you update from a previous
+				version of OpenMeetings to make sure users see the new feature and
+				update their settings.
+			</p>
+			
+			
+			
+		</section>
+		
+		<section name="How to lookup timezone's">
+		
+		  <div class="xmlcode">
+		  
+                    String[] ids = TimeZone.getAvailableIDs();<br/>
+                    for (String id : ids) {<br/>
+                        
+                        <div style="margin-left:20px">
+                        TimeZone timeZone = TimeZone.getTimeZone(id);<br/>
+                        //TimeZone timeZone = timeRegistry.getTimeZone(id);<br/>
+                        <br/>
+                        Calendar cal = Calendar.getInstance();<br/>
+                                <div style="margin-left:20px">
+                                cal.setTimeZone(timeZone);<br/>
+                                // + cal.get(Calendar.DST_OFFSET)<br/>
+                                int offset = cal.get(Calendar.ZONE_OFFSET);<br/>
+                        <br/>
+                                int offsetInMinutes = offset/1000/60;<br/>
+                                <br/>
+                                System.out.println("name" + id + "name offset "+offsetInMinutes+"offset ");
+                                </div>
+                        </div>
+                    }
+		  
+		  </div>
+		  
+		  
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/Upgrade.xml b/xdocs/Upgrade.xml
new file mode 100644
index 0000000..9e8aa93
--- /dev/null
+++ b/xdocs/Upgrade.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Upgrade</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+		<section name="Upgrading OpenMeetings via the Web-Interface">
+			<ol>
+				<li>
+					<p>There is a System Backup and Import tool. Login as Administrator and Administration &gt; Backup</p>
+					<a class="fancybox-buttons" href="images/backup.png"><img src="images/backup.png" alt="" width="600" /></a>
+					<p>
+						The Text in the Administration &gt; Backup section actually just says
+						it all. The backup contains users, rooms, organizations and
+						appointments (Invitations and Reminders are NOT included in the
+						Backup and Reminders will not be send again!). The Backup contains
+						also all uploaded Files and Documents and will re-import them again.
+		
+						Max Upload Size is 1000 MB.
+					</p>
+				</li>
+				<li>Stop Openmeetings</li>
+				<li>(*) Backup folder with existing installation</li>
+				<li>(*) Perform DB backup using tools available for your database</li>
+				<li>Delete/move folder with existing installation of OM</li>
+				<li>Drop existing OM database</li>
+				<li>Create empty Database with same name and UTF-8 support</li>
+				<li>Unzip new version of OM into the same folder</li>
+				<li>(*) Modify DB settings</li>
+				<li>Start Openmeetings</li>
+				<li>go to http://localhost:5080/openmeetings</li>
+				<li>Install OM using Web installer</li>
+				<li>Login as Administrator and Administration &gt; Backup</li>
+				<li>Perform system import</li>
+			</ol>
+			<p>(*) Optional step</p>
+		</section>
+
+		<section name="Upgrading OpenMeetings from command line">
+			<p>
+				<i>You need OpenMeetings 2.x or later to have the command line interface (CLI) 
+					feature available
+				</i>
+			</p>
+			<p>
+				Alternatively to the Web-Installer you can also export and import via the command line. <br/>
+				<b>You should shutdown the Red5-Service while doing CLI export or import operations</b><br />
+				Cd to your red5-home directory, type "./admin.sh" and hit enter. You will get options available.<br />
+				<br />
+				A typical export would be:<br />
+				<tt>./admin.sh -b -file backup_today.zip</tt><br />
+				<br />
+				A typical import would be:<br />
+				<tt>./admin.sh -r -file backup_yesterday.zip</tt><br />
+				<br />
+				You can also combine the installation with a backup, that way you will create exactly the user table 
+				that existed in the backup.<br />
+				A typical install from backup would be:<br />
+				<tt>./admin.sh -i -file backup_yesterday.zip</tt><br/>
+				please see <a href="CommandLineAdmin.html" target="_BLANK" rel="nofollow">Command Line Admin</a> for more options
+			</p>
+			<p><b>Detailed steps</b></p>
+			<ol>
+				<li>Stop Openmeetings</li>
+				<li>(*) Backup folder with existing installation</li>
+				<li>(*) Perform DB backup using tools available for your database</li>
+				<li><tt>./admin.sh -v -b -file ../backup_today.zip</tt></li>
+				<li>Delete/move folder with existing installation of OM</li>
+				<li>Unzip new version of OM into the same folder</li>
+				<li><tt>./admin.sh -v -i -file ../backup_today.zip --drop --skip-default-room</tt> (Optionally you can specify
+					additional parameters like DB host/user/pass/instance etc.)</li>
+				<li>Start Openmeetings</li>
+				<li>go to http://localhost:5080/openmeetings</li>
+			</ol>
+			<p>(*) Optional step</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/WebappNamePath.xml b/xdocs/WebappNamePath.xml
new file mode 100644
index 0000000..7d5f64b
--- /dev/null
+++ b/xdocs/WebappNamePath.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Webapp Name / Path</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Customize Openmeetings logo">
+			<p>If you want to set up your logo in Openmeetings header you can do the following:</p>
+			<ol>
+				<li>create your logo image as PNG 40px height</li>
+				<li>replace <tt>/opt/red5/webapps/openmeetings/public/themes/basic-theme/general/logo.png</tt> with your logo file</li>
+				<li>(Advanced optional) you can modify <tt>/opt/red5/webapps/openmeetings/public/config.xml</tt> and modify <tt>appdisplay</tt> section: set position and display for the logo and/or name</li>
+				<li>(Advanced optional) you can modify <tt>/opt/red5/webapps/openmeetings/public/theme.xml</tt> (around line 57) and change image name/path</li>
+			</ol>
+		</section>
+		<section name="Renaming /openmeetings context">
+			<p>
+				If you want to have
+				<tt>http://yourcorp.com:5080/yourmeetings</tt>
+				instead of
+				<tt>http://yourcorp.com:5080/openmeetings</tt>
+				you need to do the following
+			</p>
+			<ol>
+				<li>stop openmmetings if it is running </li>
+				<li>
+					go to openmeetings install dir (for ex.
+					<tt>/opt/red5</tt>
+					)
+				</li>
+				<li>
+					rename
+					<tt>/opt/red5/webapps/openmeetings</tt>
+					to
+					<tt>/opt/red5/webapps/yourmeetings</tt>
+					(for ex.
+					<tt>mv /opt/red5/webapps/openmeetings
+						/opt/red5/webapps/yourmeetings
+					</tt>
+					)
+				</li>
+				<li>
+					open
+					<tt>/opt/red5/webapps/yourmeetings/public/config.xml</tt>
+					using your favorite text editor (for ex.
+					<tt>vim /opt/red5/webapps/yourmeetings/public/config.xml</tt>
+					)
+				</li>
+				<li>
+					find and modify
+					<tt>&lt;webAppRootKey&gt;openmeetings&lt;/webAppRootKey&gt;</tt>
+					to be
+					<tt>&lt;webAppRootKey&gt;</tt>
+					<strong>yourmeetings</strong>
+					<tt>&lt;/webAppRootKey&gt;</tt>
+				</li>
+				<li>
+					find and modify
+					<tt>&lt;httpRootKey&gt;/openmeetings/&lt;/httpRootKey&gt;</tt>
+					to be
+					<tt>&lt;httpRootKey&gt;</tt>
+					<strong>/yourmeetings/</strong>
+					<tt>&lt;/httpRootKey&gt;</tt>
+				</li>
+			</ol>
+			That's it
+		</section>
+
+		<section name="Changing hard-coded application name in string labels">
+			<p>
+				To have
+				<i>Your Application Name</i>
+				instead of
+				<i>Openmeetings</i>
+				in
+				<strong>all</strong>
+				text labels you need to do the following
+			</p>
+			<ol>
+				<li>
+					ensure
+					<strong>
+						<tt>$APP_NAME</tt>
+					</strong>
+					placeholder is used in
+					<i>all</i>
+					strings you have added and/or modified (all strings bundled into
+					Openmeetings already have this placeholder)
+				</li>
+				<li>login to Openmeetings as user with administrator privileges </li>
+				<li>
+					go to
+					<tt>Administration -&gt; Configuration</tt>
+				</li>
+				<li>
+					find and edit configuration with name
+					<strong>
+						<tt>application.name</tt>
+					</strong>
+				</li>
+				<li>
+					Set its value to be
+					<i>
+						<tt>Your Application Name</tt>
+					</i>
+				</li>
+				<li>
+					<tt>Save</tt>
+				</li>
+				<li>reload page or relogin </li>
+			</ol>
+			<p>
+			All string will display
+			<i>
+				<tt>Your Application Name</tt>
+			</i>
+			in place of
+			<i>
+				<tt>Openmeetings</tt>
+			</i>
+			</p>
+			<p>
+				Please
+				<i>NOTE</i>
+				there are 3 additional properties in the public/config.xml file which
+				should be modified for
+				<strong>TOTAL</strong>
+				Openmeetings clean up:
+			</p>
+			<div class="xmlcode">
+				&lt;currentappname&gt;OpenMeetings&lt;/currentappname&gt;
+				<br />
+				&lt;currentappnameurl&gt;http://openmeetings.apache.org&lt;/currentappnameurl&gt;
+				<br />
+				&lt;currentappnamebugurl&gt;https://issues.apache.org/jira/browse/OPENMEETINGS&lt;/currentappnamebugurl&gt;
+				<br />
+			</div>
+
+		</section>
+
+		<section name="Running multiple Openmeetings instances on the same server">
+			<p>
+				If you want to run multiple Openmeetings instances on the same server i.e. to have<br/>  
+				<tt>http://yourcorp.com:5080/openmeetings1</tt><br/> 
+				<tt>http://yourcorp.com:5080/openmeetings2</tt><br/> etc.<br/> you need to do the following:
+			</p>
+			<ol>
+				<li>edit <tt>webapps/openmeetings1/WEB-INF/red5-web.properties</tt> for <strong>every</strong> Openmeetings 
+				instance and add the following line <tt>webapp.contextPath=/openmeetings1</tt>  to it (context of 
+				<strong>every</strong> instance <strong>should</strong> match the folder name in webapps dir)
+				</li>
+				<li>in case of java memory problems modify <tt>red5.sh</tt> add following line:<br/>
+					<div class="xmlcode">
+					export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M"
+					</div>
+					or <tt>red5.bat</tt>:<br/>
+					<div class="xmlcode">
+					set JAVA_OPTS=-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M
+					</div>
+				</li>
+			</ol>
+		</section>
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/WebcamResolutions.xml b/xdocs/WebcamResolutions.xml
new file mode 100644
index 0000000..697d1e4
--- /dev/null
+++ b/xdocs/WebcamResolutions.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>How to configure Camera default resolutions </title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="How to configure Camera default resolutions">
+
+			<p>When you choose the webcam you have different resolutions
+				available the user can choose from. </p>
+			<p>You can add/remove resolutions and also change the default
+				selection. In the public/config.xml there is a section: </p>
+			<div class="xmlcode">
+				&lt;availableCameraResolutions&gt;<br/>
+				<div style="margin-left:20px">
+				    &lt;resolution type="4:3 (~6 KByte/sec)" width="40" height="30" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="4:3 (~12 KByte/sec)" width="80" height="60" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="4:3 (~20 KByte/sec)" width="120" height="90" isDefault="true" /&gt;<br/>
+				    &lt;resolution type="QQVGA 4:3 (~36 KByte/sec)" width="160" height="120" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="4:3 (~40 KByte/sec)" width="240" height="180" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="HVGA 4:3 (~56 KByte/sec)" width="320" height="240" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="4:3  (~60 KByte/sec)" width="480" height="360" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="4:3 (~68 KByte/sec)" width="640" height="480" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="XGA 4:3" width="1024" height="768" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="16:9" width="256" height="150" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="WQVGA 9:5" width="432" height="240" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="pseudo 16:9" width="480" height="234" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="16:9" width="512" height="300" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="nHD 16:9" width="640" height="360" isDefault="false" /&gt;<br/>
+				    &lt;resolution type="16:9" width="1024" height="600" isDefault="false" /&gt;<br/>
+				    </div>
+				&lt;/availableCameraResolutions&gt;			 
+			</div>	
+		      
+		    <p>Tip: You might edit the public/config.xml with an XML aware editor that correctly 
+		    handles the XSD defintion to avoid misconfiguration. The openmeetings-config.xsd 
+		    is in the same folder like the public/config.xml. </p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/WebsiteGuide.xml b/xdocs/WebsiteGuide.xml
new file mode 100644
index 0000000..3aafba4
--- /dev/null
+++ b/xdocs/WebsiteGuide.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Release Guide</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="How to update Apache OpenMeetings website">
+
+			<subsection name="Required tools">
+				<div>
+					<ul>
+						<li>Sun JDK6</li>
+						<li>Apache ANT (1.8 or later)</li>
+					</ul>
+				</div>
+			</subsection>
+			
+			<subsection name="Introduction">
+				<div>
+					<p>
+						The Apache OpenMeetings HTML websites are generated from XML files. 
+						You edit the XML files, run the ANT command "ant anakia" that generates the HTML files 
+						and then you checkin to SVN both: XML and HTML files.
+					</p>
+					<p>
+						The website itself uses JQuery to generate the menu, the pop images and the image slider at the landing page.
+					</p>
+				</div>
+			</subsection>
+
+			<subsection name="Editing the website">
+				<div>
+					<p>
+						OpenMeetings website (
+						<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>
+						) is a copy from the SVN repository.
+						<br />
+						The file in the SVN to be synced are at:
+						<br />
+						<a
+							href="http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/docs/">http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/docs/
+						</a>
+						<br/>and<br/>
+						<a
+							href="http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/xdocs/">http://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/xdocs/
+						</a>
+					</p>
+					
+					<div>
+						To update the website you checkout trunk:
+						<br />
+						<a
+							href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
+						</a> <br/>
+						edit the files in the folder <tt>xdocs</tt><br/>
+						then you run the command:
+						<div class="xmlcode">
+							ant anakia
+						</div>
+						control the output locally in the folder <tt>docs</tt><br/>
+						And then checkin into the SVN <i>both</i> the edited xml and generated html files.
+					</div>
+					
+					<p>
+						The public website is automatically synced with the SVN repository.<br/>
+						Changes to the SVN should be immediately synced to the production website.<br/>
+						If not you might login to people.apache.org,<br/>
+						cd to <tt>/www/openmeetings.apache.org/content/</tt><br/>
+						and run the linux command "touch" on the files that need to be synced
+					</p>
+				</div>
+			</subsection>
+			
+			<subsection name="Adding a new menu entry">
+				<div>
+					To add a new menu entry in the left side panel you need to modify the file: 
+					<br/>
+					<tt>xdocs/stylesheets/project.xml</tt>
+				</div>
+			</subsection>
+			
+			<subsection name="Writing a new macro">
+				<div>
+					<p>
+						You can write macros in a template language to parse from the XML files certain aspects.
+					</p>
+					<p>
+						To add a new macro see the file:<br/>
+						<tt>xdocs/stylesheets/site.vsl</tt>
+					</p>
+				</div>
+				
+			</subsection>
+
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/commercial-support.xml b/xdocs/commercial-support.xml
new file mode 100644
index 0000000..ec125be
--- /dev/null
+++ b/xdocs/commercial-support.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Commercial Support</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Commercial Support for OpenMeetings">
+
+			<p>There are few companies offering complex services for OpenMeetings, including code support,
+			development, integration and bug fixing
+			</p>
+			<ul>
+				<li>
+					<a href="http://www.webbase-design.de/" target="_BLANK">webbase-design.de
+					</a>
+					owned by Sebastian Wagner
+				</li>
+				<li>
+					<a href="http://www.dataved.ru" target="_BLANK">dataved.ru
+					</a>
+					run by Alexei Fedotov, Maxim Solodovnik, Timur Tleukenov, Irina Arkhipets, Denis Kandrov, Vasily Degtyarev
+				</li>
+				<li>
+                    <a href="http://www.samoo.es" target="_BLANK" rel="nofollow">samoo.es</a>
+                    provides support for the Sakai Plugin
+                </li>
+			</ul>
+			<p>
+                            Please write to <a href="mailto:support-om@dataved.ru">support-om@dataved.ru</a> to get WebBase-Design or Dataved support
+			</p>
+			<p>
+			    There are more companies offering installation, customization, hosting, conferencing and support services. You can add 
+				yourself to the <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Commercial+Support">wiki page</a>.
+			</p>
+			
+			<p>
+				Want to get listed here? Become a <a href="http://www.apache.org/dev/committers.html">committer</a>.
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/css/1b.png b/xdocs/css/1b.png
new file mode 100644
index 0000000..0d70d76
--- /dev/null
+++ b/xdocs/css/1b.png
Binary files differ
diff --git a/xdocs/css/2b.png b/xdocs/css/2b.png
new file mode 100644
index 0000000..a93e132
--- /dev/null
+++ b/xdocs/css/2b.png
Binary files differ
diff --git a/xdocs/css/3b.png b/xdocs/css/3b.png
new file mode 100644
index 0000000..f9d8b7a
--- /dev/null
+++ b/xdocs/css/3b.png
Binary files differ
diff --git a/xdocs/css/4b.png b/xdocs/css/4b.png
new file mode 100644
index 0000000..c6e41f4
--- /dev/null
+++ b/xdocs/css/4b.png
Binary files differ
diff --git a/xdocs/css/openmeetings.css b/xdocs/css/openmeetings.css
new file mode 100644
index 0000000..7f80af6
--- /dev/null
+++ b/xdocs/css/openmeetings.css
@@ -0,0 +1,84 @@
+/*
+* 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.
+*/
+body {
+	color: #000000;
+	margin: 0;
+	background: #fafafa;
+	font: 10pt Verdana, Arial, Helvetica, sans-serif;
+	  
+}
+.active {
+	font-style: italic;
+}
+
+.mainbody {
+	margin-left: 40px;
+	margin-right: 40px;
+	-moz-box-shadow: 4px 0px 5px #666666;
+	-webkit-box-shadow: 4px 0px 5px #666666;
+	box-shadow: 4px 0px 5px #666666;
+}
+.superbody {
+	background: #FFFFFF;
+	-moz-box-shadow: -4px 0px 5px #666666;
+	-webkit-box-shadow: -4px 0px 5px #666666;
+	box-shadow: -4px 0px 5px #666666;
+}
+
+/* Box CSS  */
+div {
+	margin: 0;
+}
+
+
+.ro {
+	background: url(2b.png) top right no-repeat;
+}
+
+.lo {
+	background: url(1b.png) top left no-repeat;
+}
+
+.ru {
+	background: url(3b.png) bottom right no-repeat;
+}
+
+.lu {
+	background: url(4b.png) bottom left no-repeat;
+}
+
+ul {
+	margin-top: 0em;
+	padding-left: 1.5em;
+}
+
+.inhalt {
+	margin: 0;
+	padding: 0.5em 2.0em 1.5em 1.0em;
+}
+
+.inhalt p {
+	margin: 0;
+	padding: 0;
+}
+.xmlcode {
+	margin-left: 20px;
+	background-color: #eeeeee;
+	color: #0000ff;
+	margin-top: 10px;
+	margin-bottom: 10px;
+}
\ No newline at end of file
diff --git a/xdocs/demo.xml b/xdocs/demo.xml
new file mode 100644
index 0000000..2a7f9ad
--- /dev/null
+++ b/xdocs/demo.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Mailing Lists</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+		<section name="Apache OpenMeetings Demo Servers">
+
+			<p>
+				There are currently some technical issues with demo servers.
+			</p>
+			<p>
+				This is a list of servers that you can use for testing OpenMeetings.
+			</p>
+			<p>
+				<a href="http://demo.dataved.ru/openmeetings" target="_BLANK" rel="nofollow">http://demo.dataved.ru/openmeetings</a>
+			</p>
+
+		</section>
+	</body>
+</document>
+
diff --git a/xdocs/dependencies.xml b/xdocs/dependencies.xml
new file mode 100644
index 0000000..dec7df6
--- /dev/null
+++ b/xdocs/dependencies.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2006 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+ <properties>
+<title>Project Dependencies</title>
+<author email="sebawagner@apache.org">
+ OpenMeetings Documentation Team</author>
+</properties>
+
+<body>
+<section name="The Apache Podling Project">
+
+<div>
+<p> 
+The common external dependencies of OpenMeetings include the tools used to build 
+and test it:
+</p>
+
+<ul>
+<li>Subversion</li>
+<li>Ant</li>
+<li>JUnit</li>
+</ul>
+
+<p>OpenMeetings will actively download resources from the online repositories while building.</p>
+
+</div>
+</section>
+
+</body>
+</document>
+   
diff --git a/xdocs/documentation.xml b/xdocs/documentation.xml
new file mode 100644
index 0000000..b27f399
--- /dev/null
+++ b/xdocs/documentation.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    Copyright 2006 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+<properties>
+<title>Documentation</title>
+<author email="sebawagner@apache.org">
+ Podling Documentation Team</author>
+</properties>
+
+<body>
+<section name="OpenMeetings Documentation">
+
+<p>
+Wiki is to be linked here, coming soon ...
+
+<!-- ***************** TBD **************************  -->
+<!-- ***************** TBD **************************  -->
+<!-- ***************** TBD **************************  -->
+
+</p>
+
+</section>
+
+</body>
+
+</document>
+
diff --git a/xdocs/downloads.xml b/xdocs/downloads.xml
new file mode 100644
index 0000000..56e6cca
--- /dev/null
+++ b/xdocs/downloads.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Downloads</title>
+		<author email="sebawagner@apache.org">
+			Podling Documentation Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Downloads">
+			<div>
+				All downloads can be verified using the Apache OpenMeetings code
+				signing <a href="https://www.apache.org/dist/openmeetings/3.0.0/KEYS">KEYS</a>.
+			</div>
+			<p>
+				All are available for download as source and binary.
+			</p>
+			
+			<subsection name="Latest Official Release">
+				<p>
+					Apache Openmeetings 3.0.0
+				</p>
+				<ul>
+					<li>
+						Binaries:
+						<ul>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip">apache-openmeetings-3.0.0.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.zip.md5">[MD5]</a>
+							</li>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz">apache-openmeetings-3.0.0.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/bin/apache-openmeetings-3.0.0.tar.gz.md5">[MD5]</a>
+							</li>
+						</ul>
+					</li>
+					<li>
+						Sources:
+						<ul>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip">apache-openmeetings-3.0.0-src.zip</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.zip.md5">[MD5]</a>
+							</li>
+							<li>
+								<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz">apache-openmeetings-3.0.0-src.tar.gz</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz.asc">[SIG]</a>
+								<a href="http://www.apache.org/dist/openmeetings/3.0.0/src/apache-openmeetings-3.0.0-src.tar.gz.md5">[MD5]</a>
+							</li>
+						</ul>
+					</li>
+				</ul>
+				
+			</subsection>
+
+			<subsection name="Previous Official Releases">
+				<p>
+					Apache Openmeetings releases available here:
+					<a href="http://archive.apache.org/dist/openmeetings/">http://archive.apache.org/dist/openmeetings/</a>
+				</p>
+				<p>
+					Apache Openmeetings Incubating 2.0 is available here:
+					<a href="http://archive.apache.org/dist/incubator/openmeetings/2.0-incubating/">http://archive.apache.org/dist/incubator/openmeetings/2.0-incubating</a>
+				</p>
+			</subsection>
+
+			<subsection name="Plugins / Non ASF downloads">
+			
+				<p>
+					If you are looking for more plugins for 3th party applications (Moodle, Drupal, Joomla, ...) check out <a href="http://code.google.com/a/apache-extras.org/hosting/search?q=openmeetings" target="_BLANK" rel="nofollow">apache-extras.org</a>.
+				</p>
+			
+				<p>
+					OpenMeetings releases that are not part of the ASF can be downloaded from the
+					old
+					<a href="http://code.google.com/p/openmeetings/downloads/list"
+						target="_BLANK">GoogleCode website</a>
+				</p>
+			</subsection>
+
+		</section>
+	</body>
+</document>
+
diff --git a/xdocs/get-involved.xml b/xdocs/get-involved.xml
new file mode 100644
index 0000000..7c2b823
--- /dev/null
+++ b/xdocs/get-involved.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Get Involved</title>
+		<author email="dev@openmeetings.apache.org">
+			OpenMeetings Documentation Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="How do I contribute, give feedback, fix bugs and so on?">
+
+			<p>
+				The Apache OpenMeetings project really needs and appreciates any
+				contributions,
+				including documentation help, source code and
+				feedback. Suggested
+				changes should come in the form of source code
+				and/or very detailed
+				and constructive feedback.
+			</p>
+
+			<ul>
+				<li>
+					Discussion occurs on the
+					<a href="mail-lists.html">OpenMeetings mailing lists</a>
+				</li>
+				<li>
+					Information on access to the project source code is
+					available
+					<a href="svn.html">here</a>
+					.
+				</li>
+				<li>
+					Bugs and other issues can be posted on the project
+					<a href="https://issues.apache.org/jira/browse/OPENMEETINGS">JIRA</a>
+					(
+					<a href="https://issues.apache.org/jira/secure/Signup!default.jspa">sign up</a>
+					).
+				</li>
+				<li>
+					Additional documentation and discussion can be contributed to the
+					project
+					<a href="https://cwiki.apache.org/OPENMEETINGS">Wiki</a>
+					(
+					<a href="https://cwiki.apache.org/confluence/signup.action">sign up</a>
+					).
+				</li>
+			</ul>
+
+		</section>
+
+		<section name="Which taks could I potentially work on?">
+
+			<p>
+				No matter if you want to share your experiences, improve
+				documentation, localization, code Java, ActionScript or PHP, there
+				are dozens of areas where you can find task to work on and share
+				with others.
+				<br />
+				<br />
+				We tried to collect a list of ideas in our wiki:
+				<br />
+				<a
+					href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list"
+					target="_BLANK">https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list
+				</a>
+			</p>
+
+		</section>
+
+		<section name="How do I become a committer?">
+			<p>If you're interested in committing to the project: </p>
+			<ul>
+				<li>
+					<p>
+						You'll need to fill out some legal paperwork and go through
+						a
+						process to get an apache foundation committer account: See
+						<a class="external" rel="nofollow"
+							href="http://apache.org/dev/new-committers-guide.html">
+							New Committers Guide
+						</a>
+						,
+						<a class="external" rel="nofollow"
+							href="http://apache.org/dev/contributors.html"> Contributors</a>
+						, and
+						<a class="external" rel="nofollow" href="http://apache.org/dev/committers.html"> Committers</a>
+						for more details.
+					</p>
+
+				</li>
+				<li>
+					<p>
+						After you've received an email from
+						<a href="mailto:root@apache.org">root@apache.org</a>
+						with your committer account information, change your initial
+						password:
+						Login by 'ssh -l &lt;username&gt; people.apache.org';
+						run
+						'passwd';
+						run 'svnpasswd'. See
+						<a class="external" rel="nofollow"
+							href="http://apache.org/dev/version-control.html">Committer Subversion Access
+						</a>
+						.
+					</p>
+				</li>
+				<li>
+					<p>
+						Check out the OpenMeetings sources and test your svn account:
+						<a href="http://svn.apache.org/viewvc/openmeetings/">
+							SubversionRepository
+						</a>
+						.
+					</p>
+
+				</li>
+
+			</ul>
+
+		</section>
+
+	</body>
+</document>
diff --git a/xdocs/images/Arguments.png b/xdocs/images/Arguments.png
new file mode 100644
index 0000000..7427236
--- /dev/null
+++ b/xdocs/images/Arguments.png
Binary files differ
diff --git a/xdocs/images/DebugConfigurations.png b/xdocs/images/DebugConfigurations.png
new file mode 100644
index 0000000..c572dda
--- /dev/null
+++ b/xdocs/images/DebugConfigurations.png
Binary files differ
diff --git a/xdocs/images/Features_Screen_Conference_Room_Thumb.png b/xdocs/images/Features_Screen_Conference_Room_Thumb.png
new file mode 100644
index 0000000..19dece9
--- /dev/null
+++ b/xdocs/images/Features_Screen_Conference_Room_Thumb.png
Binary files differ
diff --git a/xdocs/images/NewConfiguration.png b/xdocs/images/NewConfiguration.png
new file mode 100644
index 0000000..45f3d62
--- /dev/null
+++ b/xdocs/images/NewConfiguration.png
Binary files differ
diff --git a/xdocs/images/SugarCRM_Installation.png b/xdocs/images/SugarCRM_Installation.png
new file mode 100644
index 0000000..b652b7b
--- /dev/null
+++ b/xdocs/images/SugarCRM_Installation.png
Binary files differ
diff --git a/xdocs/images/apache_feather.gif b/xdocs/images/apache_feather.gif
new file mode 100644
index 0000000..1a0c3e6
--- /dev/null
+++ b/xdocs/images/apache_feather.gif
Binary files differ
diff --git a/xdocs/images/audio_and_video.png b/xdocs/images/audio_and_video.png
new file mode 100644
index 0000000..f35bb10
--- /dev/null
+++ b/xdocs/images/audio_and_video.png
Binary files differ
diff --git a/xdocs/images/backup.png b/xdocs/images/backup.png
new file mode 100644
index 0000000..f174339
--- /dev/null
+++ b/xdocs/images/backup.png
Binary files differ
diff --git a/xdocs/images/calendar.png b/xdocs/images/calendar.png
new file mode 100644
index 0000000..25f7978
--- /dev/null
+++ b/xdocs/images/calendar.png
Binary files differ
diff --git a/xdocs/images/chat.png b/xdocs/images/chat.png
new file mode 100644
index 0000000..ce9c040
--- /dev/null
+++ b/xdocs/images/chat.png
Binary files differ
diff --git a/xdocs/images/checkout_1.png b/xdocs/images/checkout_1.png
new file mode 100644
index 0000000..950891a
--- /dev/null
+++ b/xdocs/images/checkout_1.png
Binary files differ
diff --git a/xdocs/images/checkout_2.png b/xdocs/images/checkout_2.png
new file mode 100644
index 0000000..f31050b
--- /dev/null
+++ b/xdocs/images/checkout_2.png
Binary files differ
diff --git a/xdocs/images/checkout_3.png b/xdocs/images/checkout_3.png
new file mode 100644
index 0000000..94d21ce
--- /dev/null
+++ b/xdocs/images/checkout_3.png
Binary files differ
diff --git a/xdocs/images/checkout_4.png b/xdocs/images/checkout_4.png
new file mode 100644
index 0000000..7fcf576
--- /dev/null
+++ b/xdocs/images/checkout_4.png
Binary files differ
diff --git a/xdocs/images/checkout_5.png b/xdocs/images/checkout_5.png
new file mode 100644
index 0000000..e102426
--- /dev/null
+++ b/xdocs/images/checkout_5.png
Binary files differ
diff --git a/xdocs/images/checkout_6.png b/xdocs/images/checkout_6.png
new file mode 100644
index 0000000..8dd9189
--- /dev/null
+++ b/xdocs/images/checkout_6.png
Binary files differ
diff --git a/xdocs/images/checkout_7.png b/xdocs/images/checkout_7.png
new file mode 100644
index 0000000..4168d93
--- /dev/null
+++ b/xdocs/images/checkout_7.png
Binary files differ
diff --git a/xdocs/images/checkout_8.png b/xdocs/images/checkout_8.png
new file mode 100644
index 0000000..0494bb5
--- /dev/null
+++ b/xdocs/images/checkout_8.png
Binary files differ
diff --git a/xdocs/images/checkout_9.png b/xdocs/images/checkout_9.png
new file mode 100644
index 0000000..b083d00
--- /dev/null
+++ b/xdocs/images/checkout_9.png
Binary files differ
diff --git a/xdocs/images/choose_divice.png b/xdocs/images/choose_divice.png
new file mode 100644
index 0000000..1e38713
--- /dev/null
+++ b/xdocs/images/choose_divice.png
Binary files differ
diff --git a/xdocs/images/cluster1.png b/xdocs/images/cluster1.png
new file mode 100644
index 0000000..672ffc4
--- /dev/null
+++ b/xdocs/images/cluster1.png
Binary files differ
diff --git a/xdocs/images/cluster2.png b/xdocs/images/cluster2.png
new file mode 100644
index 0000000..6d47e1d
--- /dev/null
+++ b/xdocs/images/cluster2.png
Binary files differ
diff --git a/xdocs/images/cut_administration_configuration.png b/xdocs/images/cut_administration_configuration.png
new file mode 100644
index 0000000..c54ac9c
--- /dev/null
+++ b/xdocs/images/cut_administration_configuration.png
Binary files differ
diff --git a/xdocs/images/cut_conference_room.png b/xdocs/images/cut_conference_room.png
new file mode 100644
index 0000000..1a50a25
--- /dev/null
+++ b/xdocs/images/cut_conference_room.png
Binary files differ
diff --git a/xdocs/images/cut_file_explorer.png b/xdocs/images/cut_file_explorer.png
new file mode 100644
index 0000000..4e5d0c7
--- /dev/null
+++ b/xdocs/images/cut_file_explorer.png
Binary files differ
diff --git a/xdocs/images/cut_integrated_calendar.png b/xdocs/images/cut_integrated_calendar.png
new file mode 100644
index 0000000..3188354
--- /dev/null
+++ b/xdocs/images/cut_integrated_calendar.png
Binary files differ
diff --git a/xdocs/images/cut_integration_api.png b/xdocs/images/cut_integration_api.png
new file mode 100644
index 0000000..7cf6264
--- /dev/null
+++ b/xdocs/images/cut_integration_api.png
Binary files differ
diff --git a/xdocs/images/cut_private_messages.png b/xdocs/images/cut_private_messages.png
new file mode 100644
index 0000000..c080851
--- /dev/null
+++ b/xdocs/images/cut_private_messages.png
Binary files differ
diff --git a/xdocs/images/cut_recordings_playback.png b/xdocs/images/cut_recordings_playback.png
new file mode 100644
index 0000000..906d798
--- /dev/null
+++ b/xdocs/images/cut_recordings_playback.png
Binary files differ
diff --git a/xdocs/images/dashboard.png b/xdocs/images/dashboard.png
new file mode 100644
index 0000000..66152bd
--- /dev/null
+++ b/xdocs/images/dashboard.png
Binary files differ
diff --git a/xdocs/images/desktopsharing.png b/xdocs/images/desktopsharing.png
new file mode 100644
index 0000000..94e8add
--- /dev/null
+++ b/xdocs/images/desktopsharing.png
Binary files differ
diff --git a/xdocs/images/file_smal.png b/xdocs/images/file_smal.png
new file mode 100644
index 0000000..69dcc46
--- /dev/null
+++ b/xdocs/images/file_smal.png
Binary files differ
diff --git a/xdocs/images/installation_instructions.png b/xdocs/images/installation_instructions.png
new file mode 100644
index 0000000..64ab05a
--- /dev/null
+++ b/xdocs/images/installation_instructions.png
Binary files differ
diff --git a/xdocs/images/langeditor_screen_v2.png b/xdocs/images/langeditor_screen_v2.png
new file mode 100644
index 0000000..fbaf47d
--- /dev/null
+++ b/xdocs/images/langeditor_screen_v2.png
Binary files differ
diff --git a/xdocs/images/ldap_screen.png b/xdocs/images/ldap_screen.png
new file mode 100644
index 0000000..e28bbc3
--- /dev/null
+++ b/xdocs/images/ldap_screen.png
Binary files differ
diff --git a/xdocs/images/logo-2.jpg b/xdocs/images/logo-2.jpg
new file mode 100644
index 0000000..13c2512
--- /dev/null
+++ b/xdocs/images/logo-2.jpg
Binary files differ
diff --git a/xdocs/images/micro_small.png b/xdocs/images/micro_small.png
new file mode 100644
index 0000000..215c831
--- /dev/null
+++ b/xdocs/images/micro_small.png
Binary files differ
diff --git a/xdocs/images/monitor_add.png b/xdocs/images/monitor_add.png
new file mode 100644
index 0000000..a818066
--- /dev/null
+++ b/xdocs/images/monitor_add.png
Binary files differ
diff --git a/xdocs/images/mouse_add.png b/xdocs/images/mouse_add.png
new file mode 100644
index 0000000..65bcab5
--- /dev/null
+++ b/xdocs/images/mouse_add.png
Binary files differ
diff --git a/xdocs/images/pencil_add.png b/xdocs/images/pencil_add.png
new file mode 100644
index 0000000..902bbe6
--- /dev/null
+++ b/xdocs/images/pencil_add.png
Binary files differ
diff --git a/xdocs/images/poll.png b/xdocs/images/poll.png
new file mode 100644
index 0000000..5b51c9b
--- /dev/null
+++ b/xdocs/images/poll.png
Binary files differ
diff --git a/xdocs/images/pollresult.png b/xdocs/images/pollresult.png
new file mode 100644
index 0000000..88c38df
--- /dev/null
+++ b/xdocs/images/pollresult.png
Binary files differ
diff --git a/xdocs/images/privat_messages.png b/xdocs/images/privat_messages.png
new file mode 100644
index 0000000..cc6e245
--- /dev/null
+++ b/xdocs/images/privat_messages.png
Binary files differ
diff --git a/xdocs/images/recordings_timeleine.png b/xdocs/images/recordings_timeleine.png
new file mode 100644
index 0000000..407719e
--- /dev/null
+++ b/xdocs/images/recordings_timeleine.png
Binary files differ
diff --git a/xdocs/images/right_management.png b/xdocs/images/right_management.png
new file mode 100644
index 0000000..da287a6
--- /dev/null
+++ b/xdocs/images/right_management.png
Binary files differ
diff --git a/xdocs/images/system_backup.png b/xdocs/images/system_backup.png
new file mode 100644
index 0000000..ffc2964
--- /dev/null
+++ b/xdocs/images/system_backup.png
Binary files differ
diff --git a/xdocs/images/user_add.png b/xdocs/images/user_add.png
new file mode 100644
index 0000000..deae99b
--- /dev/null
+++ b/xdocs/images/user_add.png
Binary files differ
diff --git a/xdocs/images/vote.png b/xdocs/images/vote.png
new file mode 100644
index 0000000..c16ff86
--- /dev/null
+++ b/xdocs/images/vote.png
Binary files differ
diff --git a/xdocs/images/whiteboard.png b/xdocs/images/whiteboard.png
new file mode 100644
index 0000000..8e5392f
--- /dev/null
+++ b/xdocs/images/whiteboard.png
Binary files differ
diff --git a/xdocs/index.xml b/xdocs/index.xml
new file mode 100644
index 0000000..110c6bb
--- /dev/null
+++ b/xdocs/index.xml
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Apache OpenMeetings - Features and overview">
+
+			<div id="coin-slider">
+				<a href="#">
+					<img src="images/cut_conference_room.png" alt="Conference Room" />
+					<span>
+						<b>Audio/Video Conferencing</b>
+						<br />
+						OpenMeetings enables you to make Audio/Video conferencing.
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_integrated_calendar.png" alt="Calendar" />
+					<span>
+						<b>Calendar</b>
+						<br />
+						You can create meetings with the integrated calendar, conference rooms and invitations are automatically send to everybody
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_file_explorer.png" alt="File Explorer" />
+					<span>
+						<b>File Explorer</b>
+						<br />
+						Each room has its own File-Explorer. Each user has his own private drive and additionally there is a public drive to share files with other participants
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_integration_api.png" alt="Integration API" />
+					<span>
+						<b>Integration API</b>
+						<br />
+						There is a SOAP/REST API to integrate into your website or intranet, as well
+						as LDAP/ADS connectors and VoIP/Asterisk integration modules
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_private_messages.png" alt="Private messages" />
+					<span>
+						<b>Private messages and contacts</b>
+						<br />
+						From the private message center you can send invitations by email
+						and attach meeting invitations to every email
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_administration_configuration.png" alt="Administration" />
+					<span>
+						<b>Administration and Configuration</b>
+						<br />
+						You can configure users, rooms, usergroups, config settings or
+						edit labels with a Web-Frontend integrated in the application
+					</span>
+				</a>
+
+				<a href="#">
+					<img src="images/cut_recordings_playback.png" alt="Share and Record" />
+					<span>
+						<b>Screen sharing and Recording</b>
+						<br />
+						You can do screen sharing as well as recording of whole sessions
+						including audio/video. Recordings can be downloaded as AVI/FLV or
+						watched online in the integrated player.
+					</span>
+				</a>
+
+			</div>
+
+
+			<p> Openmeetings provides video conferencing, instant messaging,
+				white board, collaborative document editing and other groupware
+				tools using API functions of the Red5 Streaming Server for Remoting
+				and Streaming.
+			</p>
+
+			<p>
+				OpenMeetings is a project of the Apache, the old project
+				website at
+				<a href="http://code.google.com/p/openmeetings/" target="_BLANK">GoogleCode
+				</a>
+				will receive no updates anymore. The website at Apache is the only
+				place that receives updates.
+			</p>
+
+		</section>
+
+		<section name="News">
+
+			<p>
+			    <strong>
+                    Version 2.2.0 released! See <a href="downloads.html">Downloads page</a>. 
+                    (2013-12-12)
+                </strong>
+                <br />
+			    <strong>
+                    Version 2.1.1 released! See <a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_1_11" target="_BLANK">Project Blog</a> or <a href="downloads.html">Downloads page</a>. 
+                    (2013-07-06)
+                </strong>
+                <br />
+			    <strong>
+					OpenMeetings 2.1.0 is released! Please check <a href="downloads.html">Downloads page</a>. 
+					(2013-04-01)
+				</strong>
+				<br />
+			    <strong>
+					OpenMeetings new URL, update your filters!
+					<a href="http://openmeetings.apache.org">openmeetings.apache.org</a> is the new home. 
+					(2013-01-28)
+				</strong>
+				<br />
+			    <strong>
+					OpenMeetings on the road to graduate from the Incubator
+					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_on_the_road_to" target="_BLANK" rel="nofollow">at our blog</a>
+					(2012-12-07)
+				</strong>
+				<br />
+				<strong>
+					Some slides from our Fast Feather Track at the ApacheCon Europe 2012 
+					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_apachecon_presentation_slide" target="_BLANK" rel="nofollow">at our blog</a>
+					(2012-11-18)
+				</strong>
+				<br />
+				<strong>
+					Update: Builds are available at
+					<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" target="_BLANK" rel="nofollow">builds.apache.org</a>
+					(2012-08-03)
+				</strong>
+				<br />
+				<strong>
+					<a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_0_incubating" target="_BLANK" rel="nofollow">Version 2.0 released</a>
+					(2012-07-26)
+				</strong>
+				<br />
+				<strong>New committer: Timur Tleukenov (2012-03-06)</strong>
+				<br />
+				<strong>
+					<a href="http://demo.openmeetings.de" target="_BLANK" rel="nofollow">Demo
+						server</a>
+					updated to r1236172 (2012-01-26)
+				</strong>
+				<br />
+				<strong>New committer: German Grekhov (2011-12-26)</strong>
+				<br />
+				<strong>OpenMeetings has been accepted into the Apache Incubator
+					(2011-11-12).
+				</strong>
+			</p>
+
+		</section>
+
+		<section name="Community">
+			<div>
+				<strong>Who we are</strong>
+				<blockquote>
+					<a href="team-list.html">List of committers</a>
+					.
+				</blockquote>
+			</div>
+			<div>
+				<strong>Users!</strong>
+				<blockquote>
+					We'd love to have you involved. Check out the
+					<a href="get-involved.html">Get involved</a>
+					.
+				</blockquote>
+			</div>
+		</section>
+
+		<section name="Feature details">
+
+			<feature title="Audio and Video Conferencing">
+
+				<image fullhref="images/Features_Screen_Conference_Room_Thumb.png"
+					href="images/Features_Screen_Conference_Room_Thumb.png" title="OpenMeetings Conference Room"
+					width="250" height="175" />
+				<text>
+				<div>
+					There are four options to use OpenMeetings audio/video functions,
+					which you can select during a conference session.
+					<ul>
+						<li>audio + video</li>
+						<li>audio only</li>
+						<li>video only</li>
+						<li>picture only</li>
+					</ul>
+					Additional you can change video-/audio-quality, choose multiple
+					camera resolutions (4:3, 16:9 or 3:2)
+					and choose your input devices.
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Meeting recording and Screen sharing">
+
+				<image href="images/desktopsharing.png" fullhref="images/desktopsharing.png"
+					title="Screensharing-/recording" width="140" height="150" />
+				<image href="images/recordings_timeleine.png" fullhref="images/recordings_timeleine.png"
+					title="Device" width="200" height="115" />
+					
+				<text>
+				<div>
+					<ul>
+						<li>Recorded sessions contain everything including sound recorded
+							from all audio streams in exactly the way you've seen it in the
+							conference.
+						</li>
+					</ul>
+					<ul>
+						<li>Recorded sessions can be downloaded as AVI/FLV files.</li>
+					</ul>
+					<ul>
+						<li>Possibility to select a screen area for sharing.</li>
+					</ul>
+					<ul>
+						<li>Different quality steps for Screensharing.</li>
+					</ul>
+					<ul>
+						<li>Watch and organize recordings in an integrated Drag and Drop
+							File-Explorer
+						</li>
+					</ul>
+				</div>
+				</text>
+			</feature>
+
+			<feature title="File Explorer">
+
+				<image href="images/file_smal.png" title="File Explorer"
+					fullhref="images/file_smal.png" width="135" height="200" />
+				<text>
+				<div>
+					Advanced File-Explorer in every conference room, Drag and Drop
+					interface for managing uploaded files, including the possibility to
+					create a document tree with folders.
+					<br />
+					<br />
+					Private and Public Drive in
+					File-Explorer. The File-Explorer has two
+					different views, one is the
+					<b>Private Drive</b>
+					and the other the
+					<b>Public Drive</b>
+					. The Private Drive
+					always contains the same files.
+					Those files are
+					visible only to the
+					user currently loggedin. The
+					Public Drive is not
+					bound to the user,
+					but to the conference room
+					instead. All users in
+					the conference room
+					have access to the Public
+					Drive.
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Moderating System">
+
+				<image href="images/right_management.png" title="Right management"
+					fullhref="images/right_management.png" width="135" height="216" />
+				<text>
+				<div>
+					During a conference, the moderator can adjust the user permission
+					to every user individually .
+					<ul>
+						<li>
+							<img class="alignnone" title="Allow modaration" src="images/user_add.png"
+								alt="" />
+							Allow/Deny moderation
+						</li>
+						<li>
+							<img class="alignnone" title="Whiteboard Access" src="images/pencil_add.png"
+								alt="" />
+							Allow/Deny to draw on white board
+						</li>
+						<li>
+							<img class="alignnone" title="Screenshare" src="images/monitor_add.png"
+								alt="" />
+							Allow/Deny screen-sharing/record screen
+						</li>
+						<li>
+							<img class="alignnone" title="Remote control" src="images/mouse_add.png"
+								alt="" />
+							Allow/Deny Remote Control Screen
+						</li>
+						<li>
+							<img class="alignnone" title="Remote control" src="images/micro_small.png"
+								alt="" />
+							Give exclusive audio to others or self
+						</li>
+						<li>
+							<img class="alignnone" title="Video Audio" src="images/audio_and_video.png"
+								alt="" />
+							(Re-) Start Audio, Video or Device settings
+						</li>
+					</ul>
+				</div>
+				</text>
+			</feature>
+
+
+			<feature title="Multi-Whiteboard and Chat">
+
+				<image href="images/whiteboard.png" fullhref="images/whiteboard.png"
+					title="Whiteboard" width="240" height="165" />
+				<image href="images/chat.png" fullhref="images/chat.png"
+					title="Chat in Conference Room" width="240" height="68" />
+				<text>
+				<div>
+					Multi-Whiteboard, you can add new whiteboard instances, each
+					white
+					board can have the full range of tools and documents inside.
+					<br />
+					<br />
+					Save white boards. You can save each whiteboard instance as a file.
+					The file is located in the File-Explorer and can be drag n' drop'ed
+					to the white board again and organized like any other document,
+					image or folder.
+					<br />
+					<br />
+					White board with drawing, writing, Drag n' Drop, Resizing, Images
+					(Drag n'
+					Drop from File-Explorer), Symbol(s)/Cliparts .
+					<br />
+					<br />
+					Full-fit does rescale the document on the screen to be 100% visible
+					on all
+					screens no matter what kind of screen resolution different
+					users
+					have.
+					<br />
+					<br />
+					You can import from a wide range of document formats (PDF, DOC,
+					ODT, PPT, et cetera...)
+				</div>
+				</text>
+			</feature>
+
+			<feature title="User and room management">
+
+				<image href="images/dashboard.png" fullhref="images/dashboard.png"
+					title="Dashboard with MyRooms" width="250" height="130" />
+				<text>
+				<div>
+					You can manage users and multiple organizations in a single
+					OpenMeetings instance. You can also create users that only have
+					access via the SOAP-API.
+					<br />
+					<br />
+					MyRooms section. Each user has by default 2 personal rooms that
+					are
+					always accessible exclusively for that user. There are buttons
+					to
+					enter those rooms from the Dashboard.
+					<br />
+					<br />
+					You can assign conference room to all users, or you can assign them
+					only to specific user-groups.
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Private message center">
+				<image href="images/privat_messages.png" fullhref="images/privat_messages.png"
+					title="Private Messages and Contact Search" width="230" height="125" />
+				<text>
+				<div>
+					Send users messages and organize them in folders. You can book
+					conference rooms by sending private messages. The booked event
+					automatically is in your and the participants calendar, changes to
+					that event will be populated to all users booked to the event.
+					<br />
+					<br />
+					User contacts, you can search users and add them to your contacts.
+					You
+					can even give them the right to see your calendar.
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Plan meetings with integrated calendar">
+				<image href="images/calendar.png" fullhref="images/calendar.png"
+					title="Calendar" width="200" height="115" />
+				<text>
+				<div>
+					<ul>
+						<li>Plan your conferencing and invite attendees from OpenMeetings
+							or External.
+						</li>
+						<li>The invited attendees will recieve an E-mail with details to
+							the meetings and a link with a secure hash to the conference
+							room.
+						</li>
+						<li>Share your calendar with your contacts.</li>
+					</ul>
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Polls and Votes">
+				<image href="images/poll.png" fullhref="images/poll.png"
+					title="Create a poll" width="250" height="250" />
+				<text>
+				<div>
+					You can create a poll with yes/no or 1-10 questions, let the
+					user
+					vote and see the voting results.
+					<br />
+					<br />
+					Polls can be stored and results viewed as pie-chart
+				</div>
+				</text>
+			</feature>
+
+			<feature title="Backup">
+				<image href="images/backup.png" fullhref="images/backup.png" title="Backup" width="250" />
+				<text>
+				<div>
+					You can backup all user-generated data including files
+					uploaded by the users in a single ZIP file and import that ZIP into
+					a new installation of OpenMeetings again.
+				</div>
+				</text>
+			</feature>
+
+
+		</section>
+
+	</body>
+</document>
diff --git a/xdocs/installation.xml b/xdocs/installation.xml
new file mode 100644
index 0000000..03548db
--- /dev/null
+++ b/xdocs/installation.xml
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Home</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="OpenMeetings Installation">
+
+			<p>
+				To update from past versions or migrate see <a href="Upgrade.html">Upgrade</a>.<br/>
+				If you are looking for commercial help have a look at
+				<a href="commercial-support.html" target="_BLANK" rel="nofollow">commercial support</a>.
+			</p>
+			<div>
+				<a href="downloads.html" rel="nofollow">
+					<img src="images/installation_instructions.png" alt="Installation in 3 simple steps" />
+				</a>
+				<p>
+					<i>Note: OpenMeetings requires SUN/Oracle JRE 6, not openJDK!</i><br />
+					<i>
+						Since Version 2.0 you can also install OpenMeetings from command line. Just cd to the unpacked 
+						archive and type ./admin.sh or admin.bat, please see
+						<a href="CommandLineAdmin.html" target="_BLANK" rel="nofollow">Command Line Admin</a>
+						for more options
+					</i>
+				</p>
+			</div>
+			<ol>
+				<li>
+					<b>Recommendation for production environment</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						By default OpenMeetings uses the integrated Apache Derby database.
+						For production environment you should consider using
+						<a href="MySQLConfig.html">MySQL</a>
+						,
+						<a href="PostgresConfig.html">Postgres</a>
+						, or for example
+						<a href="IBMDB2Config.html">IBM DB2</a>
+						, or
+						<a href="OracleConfig.html">Oracle</a>
+						, or
+						<a href="MSSQLConfig.html">MSSQL</a>
+					</div>
+				</li>
+				<li>
+					<b>Enabling Image Upload and import to whiteboard</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						Install
+						<b>ImageMagick</b>
+						on the server, you can get more information on
+						<a href="http://www.imagemagick.org" rel="nofollow" target="_BLANK">http://www.imagemagick.org
+						</a>
+						regarding installation. The instructions
+						for installation can be
+						found there
+						<a href="http://www.imagemagick.org/script/binary-releases.php"
+							target="_BLANK" rel="nofollow">http://www.imagemagick.org/script/binary-releases.php
+						</a>
+						,
+						however on
+						most Linux systems you can get it via your favorite
+						package
+						managers (apt-get it)
+					</div>
+				</li>
+				<li>
+					<b>Enabling import of PDFs into whiteboard</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								Install
+								<b>GhostScript</b>
+								on the server, you can get more
+								information on
+								<a href="http://www.ghostscript.com/download/gsdnld.html" target="_BLANK"
+									rel="nofollow">
+									http://www.ghostscript.com/download/gsdnld.html
+								</a>
+								regarding
+								installation. The instructions for installation can be
+								found
+								there, however on most Linux systems you can get it via
+								your
+								favorite package managers (apt-get it).
+							</li>
+							<li>
+								Install
+								<b>SWFTools</b>
+								on the server, you can get more information
+								on
+								<a href="http://www.swftools.org/" target="_BLANK" rel="nofollow">http://www.swftools.org/
+								</a>
+								regarding installation. Some of the
+								Linux distributions already
+								have it in there package manager (see
+								<a href="http://packages.debian.org/unstable/utils/swftools"
+									target="_BLANK" rel="nofollow">http://packages.debian.org/unstable/utils/swftools
+								</a>
+								), the
+								recommended version of SWFTools is 0.9 as prior version
+								have a
+								bug that does lead to wrong object dimensions at
+								whiteboard
+							</li>
+						</ul>
+					</div>
+				</li>
+				<li>
+					<b>Enabling import of .doc, .docx, .ppt, .pptx, ... all Office
+						Documents into whitebaord
+					</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								<a href="http://code.google.com/p/jodconverter/" target="_BLANK"
+									rel="nofollow">JODConverter</a>
+								installed (needed since v2.x)
+							</li>
+							<li>OpenOffice or Libre Office Installed</li>
+						</ul>
+						Since Version 2.x of OpenMeetings it is no more required to start
+						OpenOffice (or Libreoffice) service, see
+						<a href="OpenOfficeConverter.html">OpenOfficeConverter</a>
+						for details
+					</div>
+				</li>
+				<li>
+					<b>Enabling Recording and import of .avi, .flv, .mov and .mp4 into
+						whiteboard
+					</b>
+					<div style="margin-top: 10px; margin-bottom:10px">
+						<ul>
+							<li>
+								Install
+								<b>FFMpeg (with -enabled libmp3lame and libx264 options)</b>
+								. You should get FFMPEG in an up to date copy! OpenMeetings is
+								tested with FFMPEG Version 10.3 and latest build from GIT
+								For Windows you can download a Build for example from
+								<a href="http://ffmpeg.zeranoe.com/builds/" target="_BLANK"
+									rel="nofollow">http://ffmpeg.zeranoe.com/builds/ </a>
+								Linux or OSx Users should be able to use one of the various
+								Installation Instructions on the Web. You need to enable
+								libmp3lame and libx264!
+							</li>
+							<li>
+								Install
+								<b>SoX</b>
+								<a href="http://sox.sourceforge.net/" target="_BLANK" rel="nofollow">http://sox.sourceforge.net/
+								</a>
+								. You should install SoX in a up
+								to date copy! SoX 12.xx will NOT
+								work!
+							</li>
+						</ul>
+					</div>
+				</li>
+			</ol>
+
+		</section>
+
+		<section name="Ports, NAT Settings, Customize">
+
+			<p>
+				See
+				<a href="PortSettings.html">PortSettings</a>
+			</p>
+		</section>
+
+		<section name="VMWare">
+			<ul>
+				<li>
+					See
+					<a href="http://nightly.openmeetings.de/openmeetings/builds/vmware/"
+						rel="nofollow">http://nightly.openmeetings.de/openmeetings/builds/vmware/</a>
+				</li>
+				<li>
+					VMWare 1.6.1
+					<a
+						href="http://openstudio.no-ip.info/2011/01/openmeetings-1-6-rc1-vmware-appliance-using-ubuntu-server-10-04-lts/"
+						rel="nofollow">blog-entry</a>
+				</li>
+			</ul>
+		</section>
+
+		<section name="Hardware Requirements">
+			<ul>
+				<li>
+					Minimalistic requirement (without Document Converters, Recorder and
+					Upload feature) 1GHz CPU 1 GB RAM (
+					<i>server-side</i>
+					)
+				</li>
+				<li>
+					Recommended requirement 2x/4x 2GHz ++ CPU (32 or 64Bit) 4GB RAM. If
+					you have a 64Bit Operating System check if there is a OpenOffice
+					64Bit Version
+					<a href="http://download.openoffice.org/other.html#de" rel="nofollow">available
+						for your OS
+					</a>
+					(
+					<i>server-side</i>
+					)
+				</li>
+				<li>
+					Headset/Microphone recommendation: Logitech ClearChat PC Wireless,
+					for example from
+					<a
+						href="http://www.amazon.de/Logitech-ClearChat-kabelloser-Kopfh%C3%B6rer-Transmitter/dp/B00166WSN4"
+						rel="nofollow">Amazon</a>
+					or
+					<a
+						href="http://shop.ebay.com/i.html?_nkw=Logitech+ClearChat.+Wireless&amp;_sacat=0&amp;_trksid=p3286.m270.l1313&amp;LH_BIN=1&amp;LH_IncludeSIF=1&amp;_odkw=Logitech+ClearChat+PC&amp;_osacat=0"
+						rel="nofollow">EBay Auctions</a>
+					(
+					<i>cient-side</i>
+					).
+					<a href="RecommendedHardwareList.html">See all recommendations</a>
+					for cameras, headsets and speakerphones.
+				</li>
+			</ul>
+
+		</section>
+
+		<section name="Debian, Links, Changelog, VoIP">
+
+			<ul>
+				<li>
+					for VoIP and SIP Integration see also
+					<a href="voip-sip-integration.html">VoIPAndSIP</a>
+				</li>
+				<li>
+					<a href="http://meetingslive.sourceforge.net/" rel="nofollow">http://meetingslive.sourceforge.net/
+					</a>
+				</li>
+				<li>
+					<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Installation of OM 2.0 for Ubuntu 12.04 x64, Ubuntu 12.10 x64, Debian, Windows XP, 7, 2003, 2008</a>
+				</li>
+				<li>
+					<a
+						href="http://liberamemoria.blogspot.com/2009/02/instalando-openmeetings-07-rc-2-en.html"
+						rel="nofollow">Espanol Version for Debian Installation</a>
+				</li>
+				<li>
+					<a
+						href="http://aitinet.com/blog/wp-content/uploads/2009/08/TUTORIAL-PARA-INSTALACAO-DO-RED5-E-OPENMEETINGS-NO-LINUX-DEBIAN-LENNY-51.pdf"
+						rel="nofollow">Portuguese Version for Debian Installation of 0.9 RC1</a>
+				</li>
+				<li>
+					<a
+						href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools"
+						rel="nofollow">Automatic script installation for Ubuntu/Debian (beta)</a>
+				</li>
+				<li>
+					French version of Installation Instructions:
+					<a
+						href="http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation"
+						rel="nofollow">http://flash.54n.free.fr/?/Root/Debian/OpenMeetings-Installation
+					</a>
+				</li>
+			</ul>
+		</section>
+
+		<section name="Tips and Tricks">
+			<ul>
+				<li>
+					Use the Debug-Application: Enter in your browser
+					<a
+						href="http://$RED-HOST:$RED5-PORT/openmeetings/?swf=maindebug.as3.swf11.swf"
+						rel="nofollow">http://$RED-HOST:$RED5-PORT/openmeetings/?swf=maindebug.as3.swf11.swf
+					</a>
+					for example
+					<a href="http://localhost:5080/openmeetings/?swf=maindebug.as3.swf11.swf"
+						rel="nofollow">http://localhost:5080/openmeetings/?swf=maindebug.as3.swf11.swf
+					</a>
+				</li>
+				<li>If you have Problems with conversion-jobs check your Red5-Log
+					output. There will be error Messages which help you. You must
+					install OpenOffice, ImageMagick, GhostScript and SWFTools to run
+					all conversion-Jobs correctly.
+				</li>
+				<li>if you have problems in converting Files check the Batch-Scripts
+					in $OPENMEETINGS_HOME/jod
+				</li>
+				<li>
+					If you want to use red5 as a service (without red5.bat), you need
+					to move red5\wrapper\wrapper.exe to red5\wrapper.exe. Then change
+					some path in conf\wrapper.conf (like ..\lib\foo.jar to
+					lib\foo.jar). And finally change the register key in
+					HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Red5\ImagePath
+					to point to the new wrapper.
+				</li>
+				<li>
+					you can query a Mysql Database to get the schema_collection by
+					using this query:
+					<div class="xmlcode">
+						SELECT Table_name, TABLE_COLLATION FROM
+						information_schema.tables WHERE table_schema = 'openmeetings'
+						ORDER BY table_name DESC
+					</div>
+				</li>
+			</ul>
+		</section>
+
+	</body>
+
+</document>
+
diff --git a/xdocs/license.xml b/xdocs/license.xml
new file mode 100644
index 0000000..7634d20
--- /dev/null
+++ b/xdocs/license.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0"?>
+
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+<properties>
+<title>License</title>
+<author email="sebawagner@apache.org">
+ Podling Documentation Team</author>
+</properties>
+
+<body>
+<section name="Apache License v2.0">
+
+<source test=""><![CDATA[
+
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+
+ ]]></source>
+
+</section>
+</body>
+</document>
+
diff --git a/xdocs/mail-lists.xml b/xdocs/mail-lists.xml
new file mode 100644
index 0000000..ee90fb3
--- /dev/null
+++ b/xdocs/mail-lists.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Mailing Lists</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+		<section name="Apache OpenMeetings Mailing Lists">
+
+			<p>
+				There are currently 4 publicly available mailing lists for OpenMeetings.
+			</p>
+			<p>
+				The commits list is for notification of commits to the OpenMeetings
+				repository.
+			</p>
+			<p>
+				The dev list is for internal discussion among the OpenMeetings
+				developers. It is
+				open to the public if you are interested in seeing how the sausage is
+				made.
+			</p>
+			<p>
+				<b>Note: </b>If your email bounces with status messages like "Delivery Status Notification" it is 
+				likely that you have send your mail as HTML mail. Apache does not like sending HTML emails, see:
+				<br/> 
+				<a href="http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail" target="_BLANK" rel="nofollow">http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail</a>
+			</p>
+			
+			<p>
+				You can search the entire mailing list very easy by using markmail.com, by using the term 
+				"openmeetings" plus your search. Try yourself: <br/>
+				<a href="http://markmail.org/search/?q=openmeetings" target="_BLANK" rel="nofollow">http://markmail.org/search/?q=openmeetings</a>
+			</p>
+
+			<table>
+				<tr>
+					<td>
+						<p>
+							<strong>User List</strong>
+							:
+							<a href="mailto:user@openmeetings.apache.org">
+								user@openmeetings.apache.org
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:user-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:user-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a
+								href="http://mail-archives.apache.org/mod_mbox/openmeetings-user/">
+								Archive
+							</a>
+						</p>
+					</td>
+				</tr>
+				<tr>
+					<td>
+						<p>
+							<strong>Spanish User List</strong>
+							:
+							<a href="mailto:user-espanol@openmeetings.apache.org">
+								user-espanol@openmeetings.apache.org
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:user-espanol-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:user-espanol-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a
+								href="http://mail-archives.apache.org/mod_mbox/openmeetings-user-espanol/">
+								Archive
+							</a>
+						</p>
+					</td>
+				</tr>
+				<tr>
+					<td>
+						<p>
+							<strong>Commits List</strong>
+							:
+							<a href="mailto:commits@openmeetings.apache.org">
+								commits@openmeetings.apache.org
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:commits-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:commits-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a
+								href="http://mail-archives.apache.org/mod_mbox/openmeetings-commits/">
+								Archive
+							</a>
+						</p>
+					</td>
+				</tr>
+				<tr>
+					<td>
+						<p>
+							<strong>Developer List</strong>
+							:
+							<a href="mailto:dev@openmeetings.apache.org">
+								dev@openmeetings.apache.org
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:dev-subscribe@openmeetings.apache.org">
+								Subscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a class="external" rel="nofollow"
+								href="mailto:dev-unsubscribe@openmeetings.apache.org">
+								Unsubscribe
+							</a>
+						</p>
+					</td>
+					<td>
+						<p>
+							<a
+								href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev">
+								Archive
+							</a>
+						</p>
+					</td>
+				</tr>
+			</table>
+
+		</section>
+	</body>
+</document>
+
diff --git a/xdocs/oauth2.xml b/xdocs/oauth2.xml
new file mode 100644
index 0000000..61aba04
--- /dev/null
+++ b/xdocs/oauth2.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>OAuth2 integration</title>
+		<author email="a_horuzhenko@apache.org">OpenMeetings Team</author>
+	</properties>
+	<body>
+		<section name="OAuth2 integration">
+			<p>You need Apache Openmeetings <strong>version 3.0</strong> to apply this guide!</p>
+			<p>You can manage various OAuth2 servers by opening "Administration => OAuth2". There are already created servers like Facebook or Google. You can use them as example or in production. To add your own servers you need to get their documentation to set necessary attributes.</p>
+		</section>
+		<section name="Attributes">
+			<ul>
+				<li><i>Name</i> - displayed in the login dialog text</li>
+				<li><i>client_id</i> and <i>client_secret</i> - credentials which you got from your oauth2 server.</li>
+				<li><i>Redirect uri</i> - put this value into application settings in the oauth2 server.</li>
+				<li><i>Request key URL</i> - an URL which will be used to request access key.</li>
+				<li><i>Request token URL</i> - an URL which will be used to request access token.</li>
+				<li><i>Request token attributes</i> - attributes for access token request.</li>
+				<li><i>Request info URL</i> - an URL which will be used to request authentication attributes.</li>
+				<li><i>Login param name</i> - login key name to get value from info response.</li>
+				<li><i>Email param name</i> - email key name to get value from info response.</li>
+				<li><i>Firstname param name</i> - firstname key name to get value from info response.</li>
+				<li><i>Lastname param name</i> - lastname key name to get value from info response.</li>
+			</ul>
+			<p>Request attributes (request key url, request token url, request token attributes, request info url) may contain next variables as a part:</p>
+			<ul>
+				<li>{$client_id}</li>
+				<li>{$client_secret}</li>
+				<li>{$redirect_uri}</li>
+				<li>{$code}</li>
+				<li>{$access_token}</li>
+			</ul>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/red5sip-integration_2.0.xml b/xdocs/red5sip-integration_2.0.xml
new file mode 100644
index 0000000..9b88d8d
--- /dev/null
+++ b/xdocs/red5sip-integration_2.0.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>SIP-Transport Integration</title>
+		<author email="timur@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="SIP-Transport Integration">
+			<p>
+				You need minimum version 2.0 of Apache OpenMeetings to apply this guide!
+			</p>
+			<p>
+				Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 10.04.
+			</p>
+		</section>
+
+        <section name="Setup Asterisk">
+			<div>
+                Run the commands
+                <blockquote>
+                    <i>
+                    sudo apt-get update<br/>
+                    sudo apt-get install asterisk asterisk-mysql
+                    </i>
+                </blockquote>
+            </div>
+            <div>
+                Ubuntu 10.04 has broken asterisk-mysql version. For other distribution next commands not needed:
+                <blockquote>
+                    <i>
+                        aptitude purge asterisk-mysql
+                        <br/>
+                        cd /tmp
+                        <br/>
+                        apt-get build-dep asterisk-mysql
+                        <br/>
+                        apt-get -b source asterisk-mysql
+                        <br/>
+                        dpkg -i asterisk-mysql_1.6.2.0-1_i386.deb
+                    </i>
+
+                </blockquote>
+            </div>
+            <div>
+                Enable asterisk mysql realtime module:<br/><br/>
+                Add string
+                <blockquote>
+                    <i>load => res_config_mysql.so</i>
+                </blockquote>
+                to the /etc/asterisk/modules.conf into the "modules" section.
+            </div>
+            <div>
+                Configure mysql realtime module:<br/><br/>
+
+                Create file /etc/asterisk/res_mysql.conf and add lines:
+                <blockquote>
+                    <i>[general]
+                        <br/>
+                        dbhost=127.0.0.1
+                        <br/>
+                        dbname=openmeetings
+                        <br/>
+                        dbuser=root
+                        <br/>
+                        dbpass=
+                        <br/>
+                        dbport=3306
+                    </i>
+
+                </blockquote>
+            </div>
+            <div>
+                Add next lines into the /etc/asterisk/extconfig.conf:
+                <blockquote>
+                    <i>[settings]
+                        <br/>
+                        sipusers => mysql,general,sipusers
+                        <br/>
+                        sippeers => mysql,general,sipusers
+                        <br/>
+                        extensions => mysql,general,extensions
+                        <br/>
+                        meetme => mysql,general,meetme
+                    </i>
+
+                </blockquote>
+            </div>
+            <div>
+                Add next lines into the /etc/asterisk/extensions.conf:
+                <blockquote>
+                    <i>[rooms]
+                        <br/>
+                        switch => Realtime/@
+                    </i>
+
+                </blockquote>
+            </div>
+
+            <div>
+                Restart asterisk:
+                <blockquote>
+                    <i>service asterisk restart</i>
+                </blockquote>
+                Insert, for example, SIP user with name 'test':
+                <blockquote>
+                    <i>
+                        INSERT INTO sipusers (allow, context, disallow, host, name, secret) VALUES ('ulaw' , 'rooms', NULL, 'dynamic' , 'test', '12345');
+                    </i>
+                </blockquote>
+            </div>
+		</section>
+
+        <section name="Setup red5sip transport">
+            <div>
+                Download red5sip from<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip</blockquote>
+            </div>
+            <p>
+                Build with Apache Ant
+            </p>
+            <div>
+                Install jsvc:
+                <blockquote>
+                    <i>apt-get install jsvc</i>
+                </blockquote>
+            </div>
+            <div>
+                Insert proper values to the /opt/red5sip/settings.properties
+
+                <blockquote>
+                    <i>red5.host - red5 server address (127.0.0.1)
+                        <br/>
+                        sip.obproxy - asterisk adderss (127.0.0.1)
+                        <br/>
+                        sip.phone - sip phone number (test)
+                        <br/>
+                        sip.authid - sip auth id (test)
+                        <br/>
+                        sip.secret - sip password (12345)
+                        <br/>
+                        sip.realm - sip realm, "asterisk" by default
+                        <br/>
+                        sip.proxy -
+                        <br/>
+                        rooms - ids of openmeetings rooms, can be, for example, 2,3,5,6
+                    </i>
+
+                </blockquote>
+            </div>
+            <div>
+                Add red5sip to autostart:
+                <blockquote>
+                    <i>ln -s /opt/red5sip/red5sip.sh /etc/init.d/red5sip
+                        <br/>
+                        chmod a+x /etc/init.d/red5sip
+                        <br/>
+                        update-rc.d /etc/init.d/red5sip defaults
+                    </i>
+
+                </blockquote>
+            </div>
+            <div>
+                Start openmeetings
+                <blockquote>
+                    <i>service red5 start</i>
+                </blockquote>
+            </div>
+            <div>
+                Start red5sip
+                <blockquote>
+                    <i>service red5sip start</i>
+                </blockquote>
+            </div>
+        </section>
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/red5sip-integration_2.1.xml b/xdocs/red5sip-integration_2.1.xml
new file mode 100644
index 0000000..cbf9b16
--- /dev/null
+++ b/xdocs/red5sip-integration_2.1.xml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>SIP-Transport Integration</title>
+		<author email="solomax@apache.org">OpenMeetings Team</author>
+	</properties>
+	<body>
+		<section name="SIP-Transport Integration">
+			<p>You need Apache OpenMeetings <strong>version 2.1</strong> to apply this guide!</p>
+			<p>You need Asterisk <strong>version 11</strong> to apply this guide!</p>
+			<p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
+		</section>
+		<section name="Prerequisites">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update &amp;&amp; sudo apt-get upgrade<br />
+						sudo apt-get install build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev libsqlite3-dev sqlite3 openssl libssl-dev<br />
+					</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="ODBC Setup">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update<br />
+						sudo apt-get install unixODBC unixODBC-dev libmyodbc
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Set up Asterisk connector:<br /><br />
+				Modify file <tt>/etc/odbc.ini</tt> as follows: (replace USER, PASSWORD and Socket with values relative to your system)
+				<blockquote>
+					<i>
+						[asterisk-connector]<br />
+						Description = MySQL connection to 'openmeetings' database<br />
+						Driver = MySQL<br />
+						Database = openmeetings<br />
+						Server = localhost<br />
+						USER = root<br />
+						PASSWORD =<br />
+						Port = 3306<br />
+						Socket = /var/run/mysqld/mysqld.sock<br />
+					</i>
+				</blockquote><br /><br />
+				Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system)
+				<blockquote>
+					(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br/>
+					<i>
+						[MySQL]<br />
+						Description = ODBC for MySQL<br />
+						Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br />
+						Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br />
+						FileUsage = 1<br />
+					</i>
+				</blockquote><br /><br />
+				Run the following command to ensure everything works as expected:
+				<blockquote>
+					<i>echo "select 1" | isql -v asterisk-connector</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="Building and setting up Asterisk">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo mkdir /usr/src/asterisk &amp;&amp; cd /usr/src/asterisk<br />
+						sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.2.1.tar.gz<br />
+						sudo tar -xvzf asterisk-11.2.1.tar.gz<br />
+						cd ./asterisk-11.2.1<br />
+						sudo make clean<br />
+						sudo ./configure<br />
+						sudo make<br />
+						sudo make install<br />
+						sudo make samples<br />
+						sudo make config<br />
+						sudo service asterisk start<br />
+					</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="Configure Asterisk">
+			<div>
+				Enable asterisk ODBC module:<br /><br />
+				Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br />
+				<strong>Add/uncomment the following lines</strong>
+				<blockquote>
+					<i>
+						preload => res_odbc.so<br />
+						preload => res_config_odbc.so<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>:
+				<blockquote>
+					<i>
+						[asterisk]<br />
+						enabled => yes<br />
+						dsn => asterisk-connector<br />
+						pre-connect => yes
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/sip.conf</tt><br />
+				<strong>Add/uncomment the following line</strong>:<br />
+				<blockquote>
+					<i>
+						videosupport=yes<br />
+						rtcachefriends=yes<br />
+					</i>
+				</blockquote>
+				<strong>Increase maxexpiry value to 43200</strong>:<br />
+				<blockquote>
+					<i>
+						maxexpiry=43200<br />
+				        </i>
+				</blockquote>
+				<strong>Add user for the "SIP Transport"</strong>:<br />
+				<blockquote>
+					<i>
+						[red5sip_user]<br />
+						type=friend<br />
+						secret=12345<br />
+						disallow=all<br />
+						allow=ulaw<br />
+						allow=h264<br />
+						host=dynamic<br />
+						nat=force_rport,comedia<br />
+						context=rooms-red5sip<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>:
+				<blockquote>
+					<i>
+						[settings]<br />
+						sippeers => odbc,asterisk,sipusers<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/extensions.conf</tt><br />
+				<strong>Add the following section</strong>:<br />
+				<blockquote>
+					<i>
+						[rooms]<br />
+						exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+						exten => _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+						exten => _400X!,n,Set(CONFBRIDGE(user,template)=sip_user)<br />
+						exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br />
+						exten => _400X!,n,Hangup<br />
+						exten => _400X!,n(notavail),Answer()<br />
+						exten => _400X!,n,Playback(invalid)<br />
+						exten => _400X!,n,Hangup<br />
+						<br />
+						[rooms-originate]<br />
+						exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
+						exten => _400X!,n,Hangup<br />
+						<br />
+						[rooms-out]<br />
+						; *****************************************************<br />
+						; Extensions for outgoing calls from Openmeetings room.<br />
+						; *****************************************************<br />
+						<br />
+						[rooms-red5sip]<br />
+						exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
+						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
+						exten => _400X!,n(notavail),Hangup <br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/confbridge.conf</tt><br />
+				<strong>Add/Modify the following secions</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						<br />
+						[red5sip_user]<br />
+						type=user<br />
+						marked=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[sip_user]<br />
+						type=user<br />
+						end_marked=yes<br />
+						wait_marked=yes<br />
+						music_on_hold_when_empty=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[default_bridge]<br />
+						type=bridge<br />
+						video_mode=follow_talker<br /> 
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br />
+				<strong>Add/Modify the following sections</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						enabled = yes<br />
+						webenabled = no<br />
+						port = 5038<br />
+						bindaddr = 127.0.0.1<br />
+						<br />
+						[openmeetings]<br />
+						secret = 12345<br />
+						deny=0.0.0.0/0.0.0.0<br />
+						permit=127.0.0.1/255.255.255.0<br />
+						read = all<br />
+						write = all<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Update Openmeetings with creadentials for Asterisk manager. 
+				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt><br />
+				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.data.conference.dao.SipDao"&gt;</strong>
+				uncomment its parameters and set it to your custom values.
+				<p style="font-size: larger; color: blue;">
+					IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore
+					otherwise all SIP related room information will be lost
+				</p>   
+			</div><br />
+			<div>
+				Restart asterisk:
+				<blockquote>
+					<i>service asterisk restart</i>
+				</blockquote>
+			</div><br />
+		</section>
+
+		<section name="Setup red5sip transport">
+			<div>
+				Download red5sip from
+				<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip_2.1</blockquote>
+			</div>
+			<div>
+				Build with Apache Ant
+				<blockquote>
+					<i>ant</i>
+				</blockquote>
+			</div>
+			<div>
+				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
+
+				<blockquote>
+					<i>
+						red5.host=127.0.0.1 # red5 server address<br />
+						om.context=openmeetings # Openmeetings context<br /> 
+						red5.codec=asao<br />
+						red5.codec.rate=22 # should correlate with mic settings in public/config.xml<br />
+						sip.obproxy=127.0.0.1 # asterisk adderss<br />
+						sip.phone=red5sip_user # sip phone number<br />
+						sip.authid=red5sip_user # sip auth id<br />
+						sip.secret=12345 # sip password<br />
+						sip.realm=asterisk # sip realm<br />
+						sip.proxy=127.0.0.1 # address of sip proxy <br />
+						rooms.forceStart=no # TBD <br />
+						rooms=1 # TBD (not in use) <br />
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Add red5sip to autostart:
+				<blockquote>
+					<i>
+						sudo cp /opt/red5sip/red5sip /etc/init.d/<br />
+						sudo chmod a+x /etc/init.d/red5sip<br />
+						sudo update-rc.d red5sip defaults
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Start openmeetings
+				<blockquote>
+					<i>service red5 start</i>
+				</blockquote>
+			</div>
+			<div>
+				Start red5sip
+				<blockquote>
+					<i>service red5sip start</i>
+				</blockquote>
+			</div>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/red5sip-integration_3.0.xml b/xdocs/red5sip-integration_3.0.xml
new file mode 100644
index 0000000..dda4da2
--- /dev/null
+++ b/xdocs/red5sip-integration_3.0.xml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+	<properties>
+		<title>SIP-Transport Integration</title>
+		<author email="solomax@apache.org">OpenMeetings Team</author>
+	</properties>
+	<body>
+		<section name="SIP-Transport Integration">
+			<p>You need Apache OpenMeetings <strong>version 3.0</strong> to apply this guide!</p>
+			<p>You need Asterisk <strong>version 11</strong> to apply this guide!</p>
+			<p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p>
+		</section>
+		<section name="Prerequisites">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update &amp;&amp; sudo apt-get upgrade<br />
+						sudo apt-get install build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev libsqlite3-dev sqlite3 openssl libssl-dev<br />
+					</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="ODBC Setup">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo apt-get update<br />
+						sudo apt-get install unixODBC unixODBC-dev libmyodbc
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Set up Asterisk connector:<br /><br />
+				Modify file <tt>/etc/odbc.ini</tt> as follows: (replace USER, PASSWORD and Socket with values relative to your system)
+				<blockquote>
+					<i>
+						[asterisk-connector]<br />
+						Description = MySQL connection to 'openmeetings' database<br />
+						Driver = MySQL<br />
+						Database = openmeetings<br />
+						Server = localhost<br />
+						USER = root<br />
+						PASSWORD =<br />
+						Port = 3306<br />
+						Socket = /var/run/mysqld/mysqld.sock<br />
+					</i>
+				</blockquote><br /><br />
+				Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system)
+				<blockquote>
+					(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br/>
+					<i>
+						[MySQL]<br />
+						Description = ODBC for MySQL<br />
+						Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br />
+						Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br />
+						FileUsage = 1<br />
+					</i>
+				</blockquote><br /><br />
+				Run the following command to ensure everything works as expected:
+				<blockquote>
+					<i>echo "select 1" | isql -v asterisk-connector</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="Building and setting up Asterisk">
+			<div>
+				Run the commands
+				<blockquote>
+					<i>
+						sudo mkdir /usr/src/asterisk &amp;&amp; cd /usr/src/asterisk<br />
+						sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.2.1.tar.gz<br />
+						sudo tar -xvzf asterisk-11.2.1.tar.gz<br />
+						cd ./asterisk-11.2.1<br />
+						sudo make clean<br />
+						sudo ./configure<br />
+						sudo make<br />
+						sudo make install<br />
+						sudo make samples<br />
+						sudo make config<br />
+						sudo service asterisk start<br />
+					</i>
+				</blockquote>
+			</div>
+		</section>
+		<section name="Configure Asterisk">
+			<div>
+				Enable asterisk ODBC module:<br /><br />
+				Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br />
+				<strong>Add/uncomment the following lines</strong>
+				<blockquote>
+					<i>
+						preload => res_odbc.so<br />
+						preload => res_config_odbc.so<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>:
+				<blockquote>
+					<i>
+						[asterisk]<br />
+						enabled => yes<br />
+						dsn => asterisk-connector<br />
+						pre-connect => yes
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/sip.conf</tt><br />
+				<strong>Add/uncomment the following line</strong>:<br />
+				<blockquote>
+					<i>
+						videosupport=yes<br />
+						rtcachefriends=yes<br />
+					</i>
+				</blockquote>
+				<strong>Increase maxexpiry value to 43200</strong>:<br />
+				<blockquote>
+					<i>
+						maxexpiry=43200<br />
+				        </i>
+				</blockquote>
+				<strong>Add user for the "SIP Transport"</strong>:<br />
+				<blockquote>
+					<i>
+						[red5sip_user]<br />
+						type=friend<br />
+						secret=12345<br />
+						disallow=all<br />
+						allow=ulaw<br />
+						allow=h264<br />
+						host=dynamic<br />
+						nat=force_rport,comedia<br />
+						context=rooms-red5sip<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>:
+				<blockquote>
+					<i>
+						[settings]<br />
+						sippeers => odbc,asterisk,sipusers<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/extensions.conf</tt><br />
+				<strong>Add the following section</strong>:<br />
+				<blockquote>
+					<i>
+						[rooms]<br />
+						exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br />
+						exten => _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br />
+						exten => _400X!,n,Set(CONFBRIDGE(user,template)=sip_user)<br />
+						exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br />
+						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br />
+						exten => _400X!,n,Hangup<br />
+						exten => _400X!,n(notavail),Answer()<br />
+						exten => _400X!,n,Playback(invalid)<br />
+						exten => _400X!,n,Hangup<br />
+						<br />
+						[rooms-originate]<br />
+						exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br />
+						exten => _400X!,n,Hangup<br />
+						<br />
+						[rooms-out]<br />
+						; *****************************************************<br />
+						; Extensions for outgoing calls from Openmeetings room.<br />
+						; *****************************************************<br />
+						<br />
+						[rooms-red5sip]<br />
+						exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br />
+						exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br />
+						exten => _400X!,n(notavail),Hangup <br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Modify <tt>/etc/asterisk/confbridge.conf</tt><br />
+				<strong>Add/Modify the following secions</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						<br />
+						[red5sip_user]<br />
+						type=user<br />
+						marked=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[sip_user]<br />
+						type=user<br />
+						end_marked=yes<br />
+						wait_marked=yes<br />
+						music_on_hold_when_empty=yes<br />
+						dsp_drop_silence=yes<br />
+						denoise=true<br />
+						<br />
+						[default_bridge]<br />
+						type=bridge<br />
+						video_mode=follow_talker<br /> 
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br />
+				<strong>Add/Modify the following sections</strong>:<br />
+				<blockquote>
+					<i>
+						[general]<br />
+						enabled = yes<br />
+						webenabled = no<br />
+						port = 5038<br />
+						bindaddr = 127.0.0.1<br />
+						<br />
+						[openmeetings]<br />
+						secret = 12345<br />
+						deny=0.0.0.0/0.0.0.0<br />
+						permit=127.0.0.1/255.255.255.0<br />
+						read = all<br />
+						write = all<br />
+					</i>
+				</blockquote>
+			</div><br />
+			<div>
+				Update Openmeetings with creadentials for Asterisk manager. 
+				Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/classes/openmeetings-applicationContext.xml</tt><br />
+				find <strong>&lt;bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"&gt;</strong>
+				uncomment its parameters and set it to your custom values.
+				<p style="font-size: larger; color: blue;">
+					IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore
+					otherwise all SIP related room information will be lost
+				</p>   
+			</div><br />
+			<div>
+				Restart asterisk:
+				<blockquote>
+					<i>service asterisk restart</i>
+				</blockquote>
+			</div><br />
+		</section>
+
+		<section name="Setup red5sip transport">
+			<div>
+				Download red5sip from
+				<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip_2.1</blockquote>
+			</div>
+			<div>
+				Build with Apache Ant
+				<blockquote>
+					<i>ant</i>
+				</blockquote>
+			</div>
+			<div>
+				Insert proper values to the <tt>/opt/red5sip/settings.properties</tt>
+
+				<blockquote>
+					<i>
+						red5.host=127.0.0.1 # red5 server address<br />
+						om.context=openmeetings # Openmeetings context<br /> 
+						red5.codec=asao<br />
+						red5.codec.rate=22 # should correlate with mic settings in public/config.xml<br />
+						sip.obproxy=127.0.0.1 # asterisk adderss<br />
+						sip.phone=red5sip_user # sip phone number<br />
+						sip.authid=red5sip_user # sip auth id<br />
+						sip.secret=12345 # sip password<br />
+						sip.realm=asterisk # sip realm<br />
+						sip.proxy=127.0.0.1 # address of sip proxy <br />
+						rooms.forceStart=no # TBD <br />
+						rooms=1 # TBD (not in use) <br />
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Add red5sip to autostart:
+				<blockquote>
+					<i>
+						sudo cp /opt/red5sip/red5sip /etc/init.d/<br />
+						sudo chmod a+x /etc/init.d/red5sip<br />
+						sudo update-rc.d red5sip defaults
+					</i>
+				</blockquote>
+			</div>
+			<div>
+				Start openmeetings
+				<blockquote>
+					<i>service red5 start</i>
+				</blockquote>
+			</div>
+			<div>
+				Start red5sip
+				<blockquote>
+					<i>service red5sip start</i>
+				</blockquote>
+			</div>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/stylesheets/errortable.xsl b/xdocs/stylesheets/errortable.xsl
new file mode 100644
index 0000000..55b77fd
--- /dev/null
+++ b/xdocs/stylesheets/errortable.xsl
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:output method="xml"/>
+	
+	<xsl:template match="ROOT">
+<document>
+<xsl:comment>
+   Licensed 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.
+ </xsl:comment>
+	<properties>
+		<title>Openmeetings Errors table</title>
+		<author email="solomax@apache.org">Apache OpenMeetings Documentation Robot</author>
+	</properties>
+	<body>
+		<section name="Openmeetings Errors table">
+		<table>
+			<tr>
+				<th>Code</th>
+				<th>Type</th>
+				<th>Description</th>
+			</tr>
+			<xsl:apply-templates/>
+		</table>
+		</section>
+	</body>
+</document>
+	</xsl:template>
+	
+	<xsl:template match="row">
+			<tr>
+				<td>-<xsl:value-of select="field[@name='errorvalues_id']"/></td>
+				<td>
+					<xsl:variable name="typeId" select="field[@name='errortype_id']"/>
+					<xsl:variable name="x">
+						<xsl:choose>
+							<xsl:when test="$typeId='1'">322</xsl:when>
+							<xsl:otherwise>323</xsl:otherwise>
+						</xsl:choose>
+					</xsl:variable>
+					<xsl:value-of select="document('../../src/main/webapp/languages/english.xml')/language/string[@id=$x]/value" />
+				</td>
+				<td>
+					<xsl:variable name="descId" select="field[@name='fieldvalues_id']"/>
+					<xsl:value-of select="document('../../src/main/webapp/languages/english.xml')/language/string[@id=$descId]/value" />
+				</td>
+			</tr>
+	</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/xdocs/stylesheets/project.xml b/xdocs/stylesheets/project.xml
new file mode 100644
index 0000000..05f27d4
--- /dev/null
+++ b/xdocs/stylesheets/project.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="project.xsd"
+	name="Apache OpenMeetings Project"
+    href="http://openmeetings.apache.org/">
+
+    <title>Apache OpenMeetings</title>
+    <!--  -->
+    <logo href="/images/logo-2.jpg">Apache OpenMeetings</logo>
+	
+    <body>
+
+    <menu name="General">
+        <item name="Home"                   href="/index.html"/>
+        <item name="License"                href="/license.html"/>
+        <item name="ASF"                    href="http://www.apache.org/"/>
+        <item name="Downloads"              href="/downloads.html"/>
+        <item name="Commercial Support"     href="/commercial-support.html"/>
+    </menu>
+    
+    <menu name="Installation and Upgrade">
+    	<item name="Installation"           href="/installation.html"/>
+    	<item name="Upgrade"           		href="/Upgrade.html"/>
+    	<item name="Tutorials"				href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools" />
+    	<item name="Command Line Admin"		href="/CommandLineAdmin.html" />
+    </menu>
+
+    <menu name="Community">
+        <item name="Get Involved"           href="/get-involved.html"/>
+        <item name="Committers"             href="/team-list.html"/>
+        <item name="Mailing Lists"          href="/mail-lists.html"/>
+    	<item name="Wiki"                   href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/" />
+    </menu>
+
+    <menu name="Development">
+        <item name="Source Code"            href="/svn.html"/>
+        <item name="Bugs / Issues (JIRA)"   href="http://issues.apache.org/jira/browse/OPENMEETINGS"/>
+        <item name="Dependencies"           href="/dependencies.html"/>
+        <item name="Build Instructions"     href="/BuildInstructions.html"/>
+        <item name="JUnit Testing"          href="/JUnitTesting.html"/>
+        <item name="Manual Testing"         href="/ManualTesting.html"/>
+        <item name="Release Guide"          href="/ReleaseGuide.html"/>
+        <item name="Website Guide"          href="/WebsiteGuide.html"/>
+    </menu>
+    
+    <menu name="Integration">
+        <item name="SOAP/REST API"          href="/SoapRestAPI.html" />
+        <item name="REST API Sample"        href="/RestAPISample.html" />
+        <item name="Ldap and ADS"           href="/LdapAndADS.html" />
+	<item name="OAuth2"		    href="/oauth2.html" />
+        <item name="VoIP and SIP"           href="/voip-sip-integration.html" />
+        <item name="Errors table"           href="/ErrorsTable.html" />
+    </menu>
+    
+    <menu name="Plugins">
+        <item name="Moodle Plugin"          href="/MoodlePlugin.html" />
+        <item name="Sakai Plugin"          	href="/SakaiPlugin.html" />
+        <item name="Jira Plugin"          	href="/JiraPlugin.html" />
+        <item name="Joomla Plugin"          href="/JoomlaPlugin.html" />
+        <item name="Drupal Plugin"          href="/DrupalPlugin.html" />
+		<item name="Bitrix Plugin"			href="/BitrixPlugin.html" />
+        <item name="Confluence Plugin"      href="/ConfluencePlugin.html" />
+        <item name="SugarCRM Plugin"        href="/SugarCRMPlugin.html" />
+        <item name="Redmine Plugin"         href="/RedminePlugin.html" />
+    </menu>
+    
+    <menu name="Configuration">
+    	<item name="DB Sample Configurations" >
+    		<subitem name="Apache Derby" href="/ApacheDerbyConfig.html" />
+    		<subitem name="IBM DB2" href="/IBMDB2Config.html" />
+    		<subitem name="Oracle" href="/OracleConfig.html" />
+    		<subitem name="MySQL" href="/MySQLConfig.html" />
+    		<subitem name="Postgres" href="/PostgresConfig.html" />
+    		<subitem name="MSSQL" href="/MSSQLConfig.html" />
+    	</item>
+    	<item name="Localization and languages" >
+    		<subitem name="Internationalisation" href="/Internationalisation.html" />
+    		<subitem name="LanguageEditor" href="/LanguageEditor.html" />
+    		<subitem name="TimeZoneHandling" href="/TimeZoneHandling.html" />
+    		<subitem name="EditTemplates" href="/EditTemplates.html" />
+    	</item>
+    	<item name="NAT Port Settings" >
+    		<subitem name="Port settings" href="/PortSettings.html" />
+    	</item>
+    	<item name="Performance" >
+    		<subitem name="JVM performance tuning" href="/JVMPerformanceTuning.html" />
+    	</item>
+    	<item name="User Interface">
+    		<subitem name="Themes" href="/themes-and-branding.html" />
+    		<subitem name="Dashboard" href="/Dashboard.html" />
+    		<subitem name="Webcam resolutions" href="/WebcamResolutions.html" />
+    		<subitem name="Room layout options" href="/ConferenceRoomLayoutOptions.html" />
+    		<subitem name="Hot Keys" href="/HotKeys.html" />
+    	</item>
+    	<item name="Customization" >
+    		<subitem name="Webapp name/path" href="/WebappNamePath.html" />
+    		<subitem name="Navigation" href="/Navigation.html" />
+    		<subitem name="Calendar and timezone" href="/CalendarAndTimezone.html" />
+    		<subitem name="Custom room type" href="/CustomRoomTypeHowTo.html" />
+    		<subitem name="Custom ctypt mechanism" href="/CustomCryptMechanism.html" />
+    		<subitem name="General Configuration" href="/GeneralConfiguration.html" />
+    	</item>
+    	<item name="Security" >
+    		<subitem name="Restricted Access" href="/RestrictedAccess.html" />
+    		<subitem name="RTMPS and HTTPS" href="/RTMPSAndHTTPS.html" />
+    	</item>
+    	<item name="Converters" >
+    		<subitem name="OpenOffice Converter" href="/OpenOfficeConverter.html" />
+            <subitem name="FFMPEG Version Switch" href="/FFMPEGVersionSwitch.html" />
+        </item>
+    	<item name="Clustering" >
+    		<subitem name="Clustering" href="/Clustering.html" />
+    	</item>
+    	<item name="Misc" >
+    		<subitem name="Get version info" href="/GetVersionInfo.html" />
+    	</item>
+    </menu>
+    
+    <!-- 
+    <menu name="Integration">
+        <item name="SOAP/REST API"          href="/integration_api.html"/>
+        <item name="LDAP and ADS"           href="/integration_ldap.html"/>
+        <item name="VoIP and SIP"           href="/integration_voip.html"/>
+        <item name="Moodle Plugin"          href="/moodle_plugin.html"/>
+        <item name="SugarCRM Plugin"        href="/sugarcrm_plugin.html"/>
+    </menu>
+     -->
+     
+    
+
+    </body>
+</project>
diff --git a/xdocs/stylesheets/project.xsd b/xdocs/stylesheets/project.xsd
new file mode 100644
index 0000000..138bfa7
--- /dev/null
+++ b/xdocs/stylesheets/project.xsd
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="project">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title"/>
+        <xs:element ref="logo"/>
+        <xs:element ref="body"/>
+      </xs:sequence>
+      <xs:attribute name="href" use="required" type="xs:anyURI"/>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="title" type="xs:string"/>
+  <xs:element name="logo">
+    <xs:complexType mixed="true">
+      <xs:attribute name="href" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="body">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="menu"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="menu">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="item"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="item">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="subitem"/>
+      </xs:sequence>
+      <xs:attribute name="href" type="xs:anyURI"/>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="subitem">
+    <xs:complexType>
+      <xs:attribute name="href" use="required"/>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/xdocs/stylesheets/site.vsl b/xdocs/stylesheets/site.vsl
new file mode 100644
index 0000000..4449ba9
--- /dev/null
+++ b/xdocs/stylesheets/site.vsl
@@ -0,0 +1,426 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!--
+  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.
+-->
+
+
+<!-- Content Stylesheet for Site -->
+
+    ## Defined variables
+    #set ($menutablebg = "#FFFFFF")
+    #set ($menutablefg = "#000000")
+    #set ($bodybg = "#ffffff")
+    #set ($bodyfg = "#000000")
+    #set ($bodylink = "#123465")
+    #set ($pagebannerbg = "#669AE6")
+    #set ($pagebannerfg = "#000000")
+    #set ($bannerbg = "#EEEEEE")
+    #set ($bannerfg = "#000000")
+    #set ($subbannerbg = "#EFEFEF")
+    #set ($subbannerfg = "#000000")
+    #set ($tablethbg = "#039acc")
+    #set ($tabletdbg = "#a0ddf0")
+    #set ($colorhrline = "#999999")
+    
+<!-- start the processing -->
+#document()
+<!-- end the processing -->
+
+## This is where the macro's live
+
+#macro ( feature $feature)
+	<h3>$feature.getAttributeValue("title")</h3>
+	<table border="0">
+		<tbody>
+			<tr>
+				<td style="text-align: center;" width="300">
+					#foreach ( $items in $feature.getChildren() )
+						#if ($items.getName().equals("image"))
+							<p>
+							<a class="group1 fancybox-buttons" href="$items.getAttributeValue("fullhref")">
+								<img src="$items.getAttributeValue("href")" alt="" width="$items.getAttributeValue("width")"
+									#if ($items.getAttributeValue("height")) height="$items.getAttributeValue("height")" #end />
+							</a>
+						#end
+					#end
+				</td>
+				<td>
+					#foreach ( $items in $feature.getChildren() )
+						#if ($items.getName().equals("text"))
+							$items.getChildren()
+						#end
+					#end
+				</td>
+			</tr>
+	    </tbody>
+	</table>
+#end
+
+#macro ( table $table)
+<table>
+    #foreach ( $items in $table.getChildren() )
+        #if ($items.getName().equals("tr"))
+            #tr ($items)
+        #end
+    #end
+</table>
+#end
+
+#macro ( tr $tr)
+<tr>
+    #foreach ( $items in $tr.getChildren() )
+        #if ($items.getName().equals("td"))
+            #td ($items)
+        #elseif ($items.getName().equals("th"))
+            #th ($items)
+        #end
+    #end
+</tr>
+#end
+
+#macro ( td $value)
+#if ($value.getAttributeValue("colspan"))
+#set ($colspan = $value.getAttributeValue("colspan"))
+#end
+#if ($value.getAttributeValue("rowspan"))
+#set ($rowspan = $value.getAttributeValue("rowspan"))
+#end
+#if ($value.getAttributeValue("class"))
+#set ($class = $value.getAttributeValue("class"))
+#end
+<td bgcolor="$tabletdbg" class="$class" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+    #if ($value.getText().length() != 0 || $value.hasChildren())
+    $value.getContent()
+    #else
+    &nbsp;
+    #end
+</td>
+#end
+
+#macro ( th $value)
+#if ($value.getAttributeValue("colspan"))
+#set ($colspan = $value.getAttributeValue("colspan"))
+#end
+#if ($value.getAttributeValue("rowspan"))
+#set ($rowspan = $value.getAttributeValue("rowspan"))
+#end
+#if ($value.getAttributeValue("class"))
+#set ($class = $value.getAttributeValue("class"))
+#end
+<th bgcolor="$tablethbg" class="$class" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left" style="color: black; font-size: small; font-family: arial, helvetica, sanserif;">
+    #if ($value.getText().length() != 0 || $value.hasChildren())
+    $value.getContent()
+    #else
+    &nbsp;
+    #end
+</th>
+#end
+
+#macro ( projectanchor $name $value )
+#if ($value.startsWith("http://") || $value.startsWith("https://"))
+    <a href="$value">$name</a>
+#elseif ($value.startsWith("/site"))
+    <a href="http://jakarta.apache.org$value">$name</a>
+#else
+    <a href="$relativePath$value">$name</a>
+#end
+#end
+
+#macro ( metaauthor $author $email )
+            <meta name="author" content="$author">
+            <meta name="email" content="$email">
+#end
+
+#macro ( image $value )
+#if ($value.getAttributeValue("width"))
+#set ($width=$value.getAttributeValue("width"))
+#end
+#if ($value.getAttributeValue("height"))
+#set ($height=$value.getAttributeValue("height"))
+#end
+#if ($value.getAttributeValue("align"))
+#set ($align=$value.getAttributeValue("align"))
+#else
+#set ($align="middle")
+#end
+<img src="$relativePath/$value.getAttributeValue("src")" width="$!width" height="$!height" align="$!align">
+#end
+
+#macro ( source $value)
+    <div align="left">
+    <table style="border: solid 1px #023264; padding: 5px;">
+    <tr>
+      <td bgcolor="#ffffff"><pre>$escape.getText($value.getText())</pre></td>
+    </tr>
+    </table>
+    </div>
+#end
+
+#macro ( subsection $subsection)
+    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+      <tr><td bgcolor="$subbannerbg">
+        <font color="$subbannerfg" face="arial,helvetica,sanserif">
+          <a name="$subsection.getAttributeValue("name")"><strong>$subsection.getAttributeValue("name")</strong></a>
+        </font>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+        #foreach ( $items in $subsection.getChildren() )
+            #if ($items.getName().equals("img"))
+                #image ($items)
+            #elseif ($items.getName().equals("source"))
+                #source ($items)
+            #elseif ($items.getName().equals("table"))
+                #table ($items)
+            #else
+                $items
+            #end
+        #end
+        </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+#end
+
+#macro ( section $section)
+    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr><td ><!-- bgcolor="$bannerbg" -->
+        <font color="$bannerfg" face="verdana,arial,helvetica,sanserif">
+          <a name="$section.getAttributeValue("name")"><strong>$section.getAttributeValue("name")</strong></a>
+        </font>
+        <hr style="width:100%; color:$colorhrline; background-color:$colorhrline; height:1px; border:0px;"/>
+      </td></tr>
+      <tr><td>
+        <blockquote>
+        #foreach ( $items in $section.getChildren() )
+            #if ($items.getName().equals("img"))
+                #image ($items)
+            #elseif ($items.getName().equals("source"))
+                #source ($items)
+            #elseif ($items.getName().equals("table"))
+                #table ($items)
+            #elseif ($items.getName().equals("feature"))
+                #feature ($items)
+            #elseif ($items.getName().equals("subsection"))
+                #subsection ($items)
+            #else
+                $items
+            #end
+        #end
+        </blockquote>
+      </td></tr>
+      <tr><td><br/></td></tr>
+    </table>
+#end
+
+#macro ( makeProject )
+
+    <!-- ============================================================ -->
+    <div id="accordion" style="width: 100%">
+    
+    #set ($menus = $project.getChild("body").getChildren("menu"))
+    #foreach ( $menu in $menus )
+    	<h3><a href="#$menu.getAttributeValue("name").replaceAll(" ","")">$menu.getAttributeValue("name")</a></h3>
+    	<div>
+	        #foreach ( $item in $menu.getChildren() )
+	            #set ($name = $item.getAttributeValue("name"))
+	            #if ( $item.getAttributeValue("href").length() > 0 )
+	            	#projectanchor($name $item.getAttributeValue("href"))<br/>
+	        	#else
+	            	<b>$name</b><br/>
+	            		#foreach ( $subitem in $item.getChildren() )
+	            			#set ($name = $subitem.getAttributeValue("name"))
+	            			#projectanchor($name $subitem.getAttributeValue("href"))<br/>
+	            		#end
+	        	#end
+	        #end
+    	</div>
+    #end
+    
+    </div>
+     
+    <br/>
+    
+#end
+
+#macro (getProjectImage)
+#if ($project.getChild("logo"))
+#set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
+<td align="left">
+#if ( $logoString.startsWith("/") )
+<a href="$project.getAttributeValue("href")"><img src="$relativePath$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
+#else
+<a href="$project.getAttributeValue("href")"><img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
+#end
+</td>
+#end
+#end
+
+#macro (getBannerTitle)
+#if ( $root.getChild("properties").getChild("bannertitle") )
+    #set ( $pageBanner = $root.getChild("properties").getChild("bannertitle") )
+#else
+    #set ( $pageBanner = $root.getChild("properties").getChild("title").getText() )
+#end
+<td width="80%" align="right" valign="top" >
+	<a href="demo.html">Demo</a>
+	<span>|</span> 
+	<a href="downloads.html" target="_PARENT">Download</a>
+	<span>|</span> 
+	<a href="installation.html" target="_PARENT">Installation</a>
+	<span>|</span> 
+	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
+	<span>&nbsp;</span>
+</td>
+#end
+
+#macro (printMeta $metaElement)
+<meta #set ($attribs = $metaElement.getAttributes())
+#foreach ($a in $attribs) $a.getName()="$a.getValue()" #end />
+#end
+
+#macro (document)
+    <!-- ====================================================================== -->
+    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
+    <!-- Main Page Section -->
+    <!-- ====================================================================== -->
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+
+            #set ($authors = $root.getChild("properties").getChildren("author"))
+            #foreach ( $au in $authors )
+                #metaauthor ( $au.getText() $au.getAttributeValue("email") )
+            #end
+
+           #set ($metas = $root.getChildren("meta"))
+
+            ##    Parse meta directives such as
+            ##    <meta name="keyword" content="jakarta, java"/>
+            #foreach ($meta in $metas) #printMeta($meta) #end
+
+            ##    Support for <base> tags.
+            #if ($root.getChild("properties").getChild("base"))
+              #set ($url = $root.getChild("properties").getChild("base").getAttributeValue("href"))
+              <base href="$url"/>
+            #end
+
+            <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
+            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
+            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
+            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
+            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
+            
+			<!-- Add jQuery library -->
+			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
+		
+			<!-- Add coinslider plugins -->
+			<script type="text/javascript" src="js/coin-slider.min.js"></script>
+			
+			<!-- Add colorbox plugin -->
+			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
+		
+			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
+			
+			<script type="text/javascript">
+				$(function() {
+					$("#accordion").accordion({
+						heightStyle: 'content',
+						icons: false
+					});
+					var idx = location.href.lastIndexOf('/');
+					if (idx > -1) {
+						var url = '.' + location.href.substring(idx);
+						var a = $('#accordion a[href="' + url + '"]');
+						a.addClass('active');
+						var id = a.parent()[0].id;
+						var idx1 = id.lastIndexOf('-');
+						if (idx1 > -1) {
+							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
+						} 
+					}
+					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
+					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
+				});
+			</script>
+			
+			<style type="text/css">
+				.fancybox-custom .fancybox-outer {
+					box-shadow: 0 0 50px #222;
+				}
+			</style>
+        </head>
+
+        <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink" vlink="$bodylink" alink="#000000">  
+        	<div class="mainbody" style="min-width: 960px; width: 94%;">
+        	<div class="superbody" style="width: 100%;">
+            <table border="0" width="100%" cellspacing="0">
+                <!-- TOP IMAGE -->
+                <tr>
+                    #getProjectImage()
+                    #getBannerTitle()
+                </tr>
+            </table>
+            <table border="0" width="100%" cellspacing="4">
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+
+                <tr>
+                    <!-- LEFT SIDE NAVIGATION -->
+                    <td width="20%" valign="top" nowrap="nowrap">
+
+                    <!-- special ACon Logo - leave here for next time
+                    <a href="http://apachecon.com/2005/US/">
+                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
+                             width="125" border="0" alt="ApacheCon US 2005" />
+                    </a>  -->
+
+                   <!-- regular menu -->
+
+                    #makeProject()
+                    </td>
+                    <td width="80%" align="left" valign="top">
+                    #set ($allSections = $root.getChild("body").getChildren("section"))
+                    #foreach ( $section in $allSections )
+                        #section ($section)
+                    #end
+                    </td>
+                </tr>
+
+                <!-- FOOTER -->
+                <tr><td colspan="2">
+                    <hr noshade="noshade" size="1"/>
+                </td></tr>
+                <tr><td colspan="2">
+                    <div align="center"><font color="$bodylink" size="-1"><em>
+                    Copyright &#169; 2003-2014, The Apache Software Foundation
+                    </em></font></div>
+                </td></tr>
+            </table>
+            </div>
+            </div>
+        </body>
+    </html>
+#end
+
+
+
+
+
diff --git a/xdocs/svn.xml b/xdocs/svn.xml
new file mode 100644
index 0000000..ea53b2d
--- /dev/null
+++ b/xdocs/svn.xml
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Source Code</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="OpenMeetings Source Code">
+
+			<p>
+				OpenMeetings uses
+				<a class="external" rel="nofollow" href="http://subversion.tigris.org">
+					Subversion
+				</a>
+				to manage its source code.
+				If you're new to Subversion, you can check out the
+				<a href="http://svnbook.red-bean.com/">online book</a>
+				about Subversion.
+				Note that we are currently using Subversion 1.1.x (there are separate
+				versions of the book covering 1.0 and 1.1).
+			</p>
+			<p>
+				To receive notice of commits to the repository subscribe to
+				<a href="mailto:commits@openmeetings.apache.org">
+					commits@openmeetings.apache.org
+				</a>
+				by sending email to
+				<a href="mailto:commits-subscribe@openmeetings.apache.org">
+					commits-subscribe@openmeetings.apache.org
+				</a>
+				.
+			</p>
+
+		</section>
+
+		<section name="Web Access to Subversion">
+
+			<p>
+				If you just want to browse the source code, you can use the
+				<a class="external" rel="nofollow"
+					href="http://svn.apache.org/viewcvs/openmeetings">
+					ViewCVS web interface
+				</a>
+				to Subversion. This is current at all times.
+			</p>
+
+		</section>
+
+		<section name="Checking Out Code Using Subversion">
+
+			<p>Anyone can check code out of Subversion. You only need to specify
+				a
+				username and password to update the Subversion repository, and only
+				OpenMeetings committers can do that.
+				If you are a committer, are working from behind a firewall, or are
+				connected to the internet through a proxy server, please see the
+				sections
+				below for more information.
+			</p>
+
+			<subsection name="Anonymous check out from Subversion">
+				<p>Use a command like:</p>
+				<pre>% svn checkout
+					http://svn.apache.org/repos/asf/openmeetings </pre>
+				<p>Once you have OpenMeetings checked out you can update the source
+					by executing the following command from within the openmeetings
+					directory.
+				</p>
+				<pre>
+					% svn update
+				</pre>
+			</subsection>
+			<subsection name="Access from behind a firewall">
+
+				<p>For those users who are stuck behind a corporate firewall which
+					is
+					blocking http access to the Subversion repository, you can try to access it
+					via HTTPS:
+				</p>
+				<pre>
+					% svn checkout
+					https://svn.apache.org/repos/asf/openmeetings
+				</pre>
+
+			</subsection>
+			<subsection name="Access through a proxy">
+
+				<p>The Subversion client can go through a proxy, if you configure it
+					to do so. First, edit your "servers" configuration file to indicate
+					which
+					proxy to use. The files location depends on your operating system.
+					On Linux or Unix it is located in the directory "~/.subversion".
+					On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%",
+					note this is a hidden directory.)
+				</p>
+				<p>There are comments in the file explaining what to do. If you
+					don't have
+					that file, get the latest Subversion client and run any command; this
+					will
+					cause the configuration directory and template files to be created.
+				</p>
+				<p>Example : Edit the 'servers' file and add something like :
+				</p>
+				<pre>
+					[global]
+					http-proxy-host = your.proxy.name
+					http-proxy-port = 3128
+				</pre>
+
+			</subsection>
+
+			<subsection name="Committer access">
+
+				<p>Everyone can access the Apache Podling Subversion repository via
+					HTTPS,
+					but OpenMeetings Committers must checkout the Subversion repository
+					via HTTPS.
+				</p>
+				<pre>
+					% svn checkout
+					https://svn.apache.org/repos/asf/openmeetings
+				</pre>
+			</subsection>
+		</section>
+
+		<section name="Submitting Code Changes">
+			<subsection name="Submitting a patch">
+
+				<p>If you make changes to OpenMeetings, and would like to contribute
+					it to the project, you should open a JIRA issue and discuss the
+					merits
+					of the proposal with the developer community. If there is agreement,
+					create a patch and attach it to the JIRA issue.
+				</p>
+				<p>
+					To create a patch, execute the svn diff command. This creates a patch
+					that
+					can easily be uploaded to a JIRA issue. A good name for the patch
+					includes
+					the JIRA issue name, e.g. OPENMEETINGS-104.patch. If there are several
+					patches
+					for the same JIRA issue, you might include your initials, e.g.
+					OPENMEETINGS-104.clr.patch
+				</p>
+				<pre>
+					% svn diff &gt; OPENMEETINGS-104.clr.patch
+				</pre>
+			</subsection>
+
+			<subsection name="Committing changes to subversion">
+				<p>
+					To commit changes to the subversion repository, you must be an
+					OpenMeetings committer. See
+					<a href="get-involved.html">get involved</a>
+					for information on how to become a committer and how to set up your
+					password once you become a committer.
+				</p>
+
+				<p>
+					Once your password is set, you can use a command like this to commit:
+				</p>
+				<pre>
+					$&gt; svn commit --username your-username
+					Authentication realm: &lt;https://svn.apache.org:443&gt; ASF Committers
+					Password for 'your-username': your-password
+				</pre>
+				<p>You can also pass your password on the command line directly, but
+					this is a security problem on multiuser unix computers (the command
+					line
+					arguments are available via the ps command). Here is the command if you
+					are Windows or a single user unix computer:
+				</p>
+				<pre>
+					$&gt; svn commit --username your-username --password your-password
+				</pre>
+				<p>Remember to replace 'your-username' and 'your-password' with
+					your actual username and password on svn.apache.org.
+				</p>
+
+			</subsection>
+		</section>
+
+		<section name="Building Podling from Source">
+			<p>
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+				<!-- ***************** TBD ************************** -->
+			</p>
+
+		</section>
+
+		<section name="Using Subversion on Windows with cygwin">
+
+			<p>
+				If you use Subversion on Windows under cygwin, you may find that the
+				Subversion client automatically assigns the executable property to
+				non-executable files. In that case, you would see this at the bottom
+				of
+				an
+				<em>svn diff</em>
+				of the file:
+			</p>
+			<pre>
+				Property changes on: test/sql/derby/datastoreidentity/schema1.sql
+				___________________________________________________________________
+				Name: svn:executable
+				+ *
+			</pre>
+			<p>This section explains the source of the problem and suggests some
+				actions to avoid it.
+			</p>
+
+			<subsection name="Background">
+
+				<p>Subversion carries executable information in the built-in
+					property
+					called svn:executable. This property, unlike others, may be present
+					or absent, but it has no value. You can add it or delete it, but you
+					cannot change its value.
+				</p>
+				<p>In theory, Subversion ignores Windows file permissions and by
+					default
+					does not set svn:executable. However, cygwin svn acts like Unix svn and
+					determines the svn:executable property based on file permissions.
+				</p>
+				<p>
+					If you create a file from the cygwin command line, by default it is
+					executable only if the filename ends with .bat, .com or .exe, or if
+					its
+					content starts with #!. [This is what the doc says, but you may see -x
+					for all files.] If you create a file using a Windows tool, by default
+					its Windows permissions are executable by all. Cygwin interprets
+					the
+					Unix-style permissions this way as well. If the file is executable by all,
+					cygwin svn sets the svn:executable property on the file when you
+					invoke
+					<em>svn add</em>
+					.
+				</p>
+			</subsection>
+			<subsection
+				name="Removing existing executable properties from the repository">
+
+				<p>You can use svn propdel to remove the svn:executable property
+					from your
+					working copy.
+				</p>
+				<pre>
+					svn propdel -R svn:executable .
+				</pre>
+				<p>will recursively remove the svn:executable property from all of
+					the
+					files below the current directory. You can use this and commit the
+					files to clean the repository if necessary.
+				</p>
+
+			</subsection>
+			<subsection
+				name="Preventing Subversion from adding unwanted executable 
+properties">
+
+				<p>
+					Windows/cygwin users who don't want to have to think about using
+					<em>svn
+						propdel
+					</em>
+					or
+					<em>chmod</em>
+					on each added file can use a non-cygwin
+					version of svn. The Subversion 1.2.3 Win32 binaries, downloadable from the
+					link at the bottom of
+					<a rel="nofollow" href="http://subversion.tigris.org/project_packages.html">
+						http://subversion.tigris.org/project_packages.html
+					</a>
+					, appear to work
+					well. After installation add the svn.exe location to your Windows PATH
+					variable. If you are switching from cygwin svn to Win32 svn
+				</p>
+				<ol type="1">
+					<li>
+						<p>Remove the subversion component from your cygwin installation
+							because when svn is invoked from a cygwin window, the cygwin
+							version is
+							found even if your cygwin/bin directory is later on the path. (In the
+							Select Packages window of the setup wizard, navigate to the
+							subversion
+							package in the Devel. category. Click on the status icon until Uninstall
+							is displayed. Click next and continue through the wizard until
+							installation
+							is complete.)
+						</p>
+					</li>
+					<li>
+						<p>Copy the servers file and the auth folder from the sygwin
+							~/.subversion
+							directory to C:\Documents and
+							Settings\&lt;user&gt;\Application Data\Subversion used by Win32
+							subversion.
+						</p>
+					</li>
+				</ol>
+				<p>Note that windows svn uses backslash as the path separator when
+					displaying file names. You cannot just copy and paste this file
+					name
+					to another svn command when running from within a cygwin shell.
+					You need to enclose the file name into double quotes.
+				</p>
+				<p>Alternatively, Windows users can set file permissions in Windows
+					Explorer. (Right-click on the top-level folder &amp; select
+					Properties.
+					Select the Security tab. Click Advanced. Remove all instances of
+					Read &amp; Execute from the Permission Entries. Click "Reset
+					permissions
+					on all child objects and enable propogations of inheritable
+					permissions".
+					Click Apply. OK. OK.) You will have to do this again when you do a clean
+					checkout to a new directory.
+				</p>
+
+			</subsection>
+		</section>
+	</body>
+</document>
diff --git a/xdocs/team-list-ru.xml b/xdocs/team-list-ru.xml
new file mode 100644
index 0000000..0a1d366
--- /dev/null
+++ b/xdocs/team-list-ru.xml
@@ -0,0 +1,98 @@
+﻿<?xml version="1.0"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Команда проекта</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="OpenMeetings Committers">
+
+			<p>
+				Люди, отмеченные на этой странице, имеют доступ к репозиторию исходного кода Apache Openmeetings. 
+				Данная страница предназначена для того, чтобы служить основой квалификационного отбора
+				по проектам, требующим модификации исходного кода Openmeetings.
+			</p>
+
+			
+			<table>
+				<tr>
+					<th>Имя</th>
+				</tr>
+				<tr>
+					<td>Себастьян Вагнер</td>
+				</tr>
+				<tr>
+					<td>Алексей Федотов</td>
+				</tr>
+				<tr>
+					<td>Евгений Ровинский</td>
+				</tr>
+				<tr>
+					<td>Максим Солодовник</td>
+				</tr>
+				<tr>
+					<td>Oliver Becherer</td>
+				</tr>
+				<tr>
+					<td>Eugen Schwert</td>
+				</tr>
+				<tr>
+					<td>Sascha Xander</td>
+				</tr>
+				<tr>
+					<td>Johnny Strom</td>
+				</tr>
+				<tr>
+					<td>Герман Грехов</td>
+				</tr>
+				<tr>
+					<td>Тимур Тлеукенов</td>
+				</tr>
+				<tr>
+					<td>Alvaro Bustos</td>
+				</tr>
+				<tr>
+					<td>George Kirkham</td>
+				</tr>
+				<tr>
+					<td>Stephen Cottham</td>
+				</tr>
+				<tr>
+					<td>Ирина Архипец</td>
+				</tr>
+				<tr>
+					<td>Василий Дегтярев</td>
+				</tr>
+				<tr>
+					<td>Денис Кандров</td>
+				</tr>
+				<tr>
+					<td>Юлия Альгаер</td>
+				</tr>
+				<tr>
+					<td>Артём Хоруженко</td>
+				</tr>
+			</table>
+			
+		</section>
+
+	</body>
+</document>
diff --git a/xdocs/team-list.xml b/xdocs/team-list.xml
new file mode 100644
index 0000000..64f4b88
--- /dev/null
+++ b/xdocs/team-list.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Project Team</title>
+		<author email="sebawagner@apache.org">
+			Sebastian Wagner
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="OpenMeetings Committers">
+
+			<p>
+				The people listed below have made significant contributions to
+				Podling
+				by
+				working long and hard to make quality software for the rest
+				of the world to
+				use.
+			</p>
+
+			<p>
+				If you would like to contribute to Podling, please see the
+				<a
+					href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list"
+					target="_BLANK">https://cwiki.apache.org/confluence/display/OPENMEETINGS/New+committers+and+developers+task+idea+list
+				</a>
+				to find areas where you can contribute.
+				If there is nothing in there
+				that suits your interest, but you still
+				have
+				ideas, please feel free
+				to suggest them on the mailing list.
+			</p>
+			<p>
+				If you would like to become a committer, please see
+				<a href="get-involved.html">Get Involved</a>
+				.
+			</p>
+
+			<table>
+				<tr>
+					<th>Name</th>
+					<th>Organization</th>
+					<th>Contact/Website</th>
+				</tr>
+				<tr>
+					<td>Sebastian Wagner</td>
+					<td>Independent</td>
+					<td>
+						<a href="https://twitter.com/#!/dead_lock" target="_BLANK" rel="nofollow">https://twitter.com/#!/dead_lock
+						</a>
+					</td>
+				</tr>
+				<tr>
+					<td>Alexei Fedotov</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Evgeny Rovinsky</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Maxim Solodovnik</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Oliver Becherer</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Eugen Schwert</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Sascha Xander</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Johnny Strom</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Timur Tleukenov</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+                                <tr>
+					<td>Alvaro Bustos</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>George Kirkham</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Stephen Cottham</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Irina Arkhipets</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Vasiliy Degtyarev</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Denis Kandrov</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Yulia Algaer</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td>Artyom Horuzhenko</td>
+					<td>Independent</td>
+					<td></td>
+				</tr>
+								
+			</table>
+			
+			<p>
+			<a href="team-list-ru.html">Here</a> is the Russian version of this page.
+			</p>
+		</section>
+
+	</body>
+</document>
diff --git a/xdocs/themes-and-branding.xml b/xdocs/themes-and-branding.xml
new file mode 100644
index 0000000..2d71ea6
--- /dev/null
+++ b/xdocs/themes-and-branding.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>Theme and color</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="Available with Apache OpenMeetings 2.0">
+
+			<p>
+				Themes are only available starting with Openmeetings 2.x.
+				<br />
+				There are also more general client side configuration like port
+				configuration. Those configs are stored in the public/config.xml
+			</p>
+
+		</section>
+
+		<section name="Editing the theme">
+
+			<p>You can find the default theme in the SVN: </p>
+			<p>
+				<a
+					href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/openmeetings/public/theme.xml"
+					target="_BLANK" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/main/webapp/openmeetings/public/theme.xml
+				</a>
+			</p>
+			<p>
+				Or if you already installed OpenMeetings on your machine at:
+				<br />
+				<tt>/webapps/openmeetings/public/theme.xml</tt>
+				<br />
+				The file contains border, background and font color definitions as
+				well as paths to icons that are loaded at runtime.
+				<br />
+				You can change the theme at runtime and just reload the browser
+				(eventually clear the browser cache) to see updates based on
+				modification in your theme.
+			</p>
+
+
+		</section>
+
+	</body>
+
+</document>
diff --git a/xdocs/voip-sip-integration.xml b/xdocs/voip-sip-integration.xml
new file mode 100644
index 0000000..977d8d4
--- /dev/null
+++ b/xdocs/voip-sip-integration.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed 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.
+ -->
+<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
+
+	<properties>
+		<title>VoIP and SIP Integration</title>
+		<author email="sebawagner@apache.org">
+			OpenMeetings Team
+		</author>
+	</properties>
+
+	<body>
+
+		<section name="VoIP and SIP Integration">
+
+			<p>
+				There are multiple ways to integrate with VoIP and or SIP.
+				OpenMeetings does not provide out of the box a ready to run VoIP
+				integration / integration to cell phone or usual land lane.
+				The
+				nature of such integrations is that it depends heavily on the
+				infrastructure that you are using and where you would like to
+				integrate OpenMeetings into.
+				<br />
+				<br />
+				It also depends on a number of factors of which OpenMeetings is
+				impossible to set up for you, for example setting up your VoIP
+				server or provide you with a range of telephone numbers reserved for
+				conference calls in your national phone network.
+				Such an integration
+				project is likely to become a consulting job for a
+				telecommunications consultant.
+				<br />
+				<br />
+				To get help on the integration you can contact the
+				<a href="mail-lists.html">mailing lists</a>
+				or for example somebody from the list of
+				<a href="commercial-support.html">commercial support</a>
+				.
+                <br/><br/>
+                <a href="red5sip-integration_2.0.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.0
+                </a>.<br/>
+                <a href="red5sip-integration_2.1.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 2.1
+                </a>.<br/>
+                <a href="red5sip-integration_3.0.html">
+                Instruction how-to set up OpenMeetings SIP-Transport integration for Openmeetings 3.0
+                </a>.<br/>
+			</p>
+		</section>
+
+	</body>
+
+</document>
\ No newline at end of file
diff --git a/xdocs/website.xsd b/xdocs/website.xsd
new file mode 100644
index 0000000..311d016
--- /dev/null
+++ b/xdocs/website.xsd
@@ -0,0 +1,331 @@
+<?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.
+  
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="document">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="properties"/>
+        <xs:element ref="body"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="properties">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="title"/>
+        <xs:element ref="author"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="title" type="xs:string"/>
+  <xs:element name="author">
+    <xs:complexType mixed="true">
+      <xs:attribute name="email" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="body">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="section"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="section">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="b"/>
+        <xs:element ref="br"/>
+        <xs:element ref="div"/>
+        <xs:element ref="img"/>
+        <xs:element ref="object"/>
+        <xs:element ref="ol"/>
+        <xs:element ref="p"/>
+        <xs:element ref="pre"/>
+        <xs:element ref="tt"/>
+        <xs:element ref="ul"/>
+        <xs:element ref="feature"/>
+        <xs:element ref="source"/>
+        <xs:element ref="style"/>
+        <xs:element ref="subsection"/>
+        <xs:element ref="table"/>
+      </xs:choice>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="feature">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="image"/>
+        <xs:element ref="text"/>
+      </xs:sequence>
+      <xs:attribute name="title" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="image">
+    <xs:complexType>
+      <xs:attribute name="fullhref" use="required"/>
+      <xs:attribute name="height" type="xs:integer"/>
+      <xs:attribute name="href" use="required"/>
+      <xs:attribute name="title" use="required"/>
+      <xs:attribute name="width" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="text">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="div"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="source">
+    <xs:complexType mixed="true">
+      <xs:attribute name="test" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="style">
+  </xs:element>
+  <xs:element name="subsection">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="i"/>
+          <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="div"/>
+            <xs:element ref="ol"/>
+            <xs:element ref="p"/>
+            <xs:element ref="pre"/>
+          </xs:choice>
+        </xs:choice>
+        <xs:element minOccurs="0" ref="ul"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="table">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="tr"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="tr">
+    <xs:complexType>
+      <xs:choice>
+        <xs:element maxOccurs="unbounded" ref="th"/>
+        <xs:element maxOccurs="unbounded" ref="td"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="th">
+    <xs:complexType mixed="true">
+      <xs:attribute name="style"/>
+      <xs:attribute name="class"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="td">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="p"/>
+        <xs:element ref="b"/>
+      </xs:choice>
+      <xs:attribute name="style"/>
+      <xs:attribute name="class"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ul">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="li"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="b">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="br"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="i">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="b"/>
+        <xs:element ref="br"/>
+        <xs:element ref="tt"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="p">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="b"/>
+        <xs:element ref="br"/>
+        <xs:element ref="div"/>
+        <xs:element ref="i"/>
+        <xs:element ref="strong"/>
+        <xs:element ref="tt"/>
+        <xs:element ref="em"/>
+      </xs:choice>
+      <xs:attribute name="style"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="em" type="xs:string"/>
+  <xs:element name="pre" type="xs:string"/>
+  <xs:element name="ol">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="li"/>
+      </xs:sequence>
+      <xs:attribute name="type" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="div">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="b"/>
+        <xs:element ref="blockquote"/>
+        <xs:element ref="br"/>
+        <xs:element ref="div"/>
+        <xs:element ref="i"/>
+        <xs:element ref="object"/>
+        <xs:element ref="ol"/>
+        <xs:element ref="p"/>
+        <xs:element ref="pre"/>
+        <xs:element ref="span"/>
+        <xs:element ref="strong"/>
+        <xs:element ref="tt"/>
+        <xs:element ref="ul"/>
+      </xs:choice>
+      <xs:attribute name="class" type="xs:NCName"/>
+      <xs:attribute name="id" type="xs:NCName"/>
+      <xs:attribute name="style" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="a">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="b"/>
+        <xs:element ref="img"/>
+        <xs:element ref="span"/>
+      </xs:choice>
+      <xs:attribute name="class" type="xs:NCName"/>
+      <xs:attribute name="href" use="required" type="xs:anyURI"/>
+      <xs:attribute name="rel" type="xs:NCName"/>
+      <xs:attribute name="target" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="img">
+    <xs:complexType>
+      <xs:attribute name="alt" use="required"/>
+      <xs:attribute name="class" type="xs:NCName"/>
+      <xs:attribute name="height" type="xs:integer"/>
+      <xs:attribute name="src" use="required"/>
+      <xs:attribute name="title"/>
+      <xs:attribute name="width" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="object">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="param"/>
+        <xs:element ref="embed"/>
+      </xs:sequence>
+      <xs:attribute name="style" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="param">
+    <xs:complexType>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+      <xs:attribute name="value" use="required" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="embed">
+    <xs:complexType>
+      <xs:attribute name="allowScriptAccess" use="required" type="xs:NCName"/>
+      <xs:attribute name="allowfullscreen" use="required" type="xs:boolean"/>
+      <xs:attribute name="height" use="required" type="xs:integer"/>
+      <xs:attribute name="src" use="required" type="xs:anyURI"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="width" use="required" type="xs:integer"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="br">
+    <xs:complexType/>
+  </xs:element>
+  <xs:element name="tt">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="b"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="li">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="b"/>
+        <xs:element ref="blockquote"/>
+        <xs:element ref="br"/>
+        <xs:element ref="div"/>
+        <xs:element ref="i"/>
+        <xs:element ref="img"/>
+        <xs:element ref="ol"/>
+        <xs:element ref="p"/>
+        <xs:element ref="span"/>
+        <xs:element ref="strong"/>
+        <xs:element ref="tt"/>
+        <xs:element ref="ul"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="strong">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="tt"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="blockquote">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="a"/>
+        <xs:element ref="br"/>
+        <xs:element ref="i"/>
+        <xs:element ref="tt"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="span">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="b"/>
+        <xs:element ref="br"/>
+      </xs:choice>
+      <xs:attribute name="style"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
